refactored added new LCD

This commit is contained in:
2021-07-19 07:28:49 +02:00
commit 4af72b1710
21 changed files with 3527 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
.pio/

239
.vscode/c_cpp_properties.json vendored Normal file
View File

@@ -0,0 +1,239 @@
//
// !!! WARNING !!! AUTO-GENERATED FILE!
// PLEASE DO NOT MODIFY IT AND USE "platformio.ini":
// https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags
//
{
"configurations": [
{
"name": "PlatformIO",
"includePath": [
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/include",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/libdeps/esp32/TJpg_Decoder/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SD/src",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/libdeps/esp32/RunningMedian",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/libdeps/esp32/PubSubClient/src",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/libdeps/esp32/TFT_eSPI",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/FS/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/config",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_trace",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_update",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/asio",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bootloader_support",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bt",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/coap",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/console",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/driver",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/efuse",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-tls",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_adc_cal",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_event",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_client",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_server",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_ota",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_server",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_ringbuf",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_websocket_client",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/espcoredump",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ethernet",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/expat",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fatfs",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freemodbus",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/heap",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/idf_test",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/jsmn",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/json",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/libsodium",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/log",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/lwip",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mbedtls",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mdns",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/micro-ecc",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mqtt",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/newlib",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nghttp",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nvs_flash",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/openssl",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protobuf-c",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protocomm",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/pthread",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/sdmmc",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/smartconfig_ack",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/soc",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spi_flash",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spiffs",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcp_transport",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcpip_adapter",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ulp",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/unity",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/vfs",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wear_levelling",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wifi_provisioning",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wpa_supplicant",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/xtensa-debug-module",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-face",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32-camera",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fb_gfx",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/cores/esp32",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/variants/esp32",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/AzureIoT/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdateServer/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/Update/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/WiFiProv/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src",
"/Users/willemoldemans/.platformio/packages/tool-unity",
""
],
"browse": {
"limitSymbolsToIncludedHeaders": true,
"path": [
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/include",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/libdeps/esp32/TJpg_Decoder/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SD/src",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/libdeps/esp32/RunningMedian",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/libdeps/esp32/PubSubClient/src",
"/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/libdeps/esp32/TFT_eSPI",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SPI/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SPIFFS/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/FS/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/config",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_trace",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/app_update",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/asio",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bootloader_support",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/bt",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/coap",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/console",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/driver",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/efuse",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-tls",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_adc_cal",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_event",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_client",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_http_server",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_ota",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_https_server",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_ringbuf",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp_websocket_client",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/espcoredump",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ethernet",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/expat",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fatfs",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freemodbus",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/freertos",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/heap",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/idf_test",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/jsmn",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/json",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/libsodium",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/log",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/lwip",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mbedtls",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mdns",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/micro-ecc",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/mqtt",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/newlib",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nghttp",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/nvs_flash",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/openssl",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protobuf-c",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/protocomm",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/pthread",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/sdmmc",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/smartconfig_ack",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/soc",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spi_flash",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/spiffs",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcp_transport",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/tcpip_adapter",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/ulp",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/unity",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/vfs",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wear_levelling",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wifi_provisioning",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/wpa_supplicant",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/xtensa-debug-module",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp-face",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/esp32-camera",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/tools/sdk/include/fb_gfx",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/cores/esp32",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/variants/esp32",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/ArduinoOTA/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/AsyncUDP/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/AzureIoT/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/BLE/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/BluetoothSerial/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/DNSServer/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/EEPROM/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/ESP32/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/ESPmDNS/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/FFat/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/HTTPClient/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdate/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/HTTPUpdateServer/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/NetBIOS/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/Preferences/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SD_MMC/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/SimpleBLE/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/Ticker/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/Update/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/WiFiClientSecure/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/WiFiProv/src",
"/Users/willemoldemans/.platformio/packages/framework-arduinoespressif32/libraries/Wire/src",
"/Users/willemoldemans/.platformio/packages/tool-unity",
""
]
},
"defines": [
"PLATFORMIO=50101",
"ARDUINO_ESP32_DEV",
"ESP32",
"ESP_PLATFORM",
"F_CPU=240000000L",
"HAVE_CONFIG_H",
"MBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"",
"ARDUINO=10805",
"ARDUINO_ARCH_ESP32",
"ARDUINO_VARIANT=\"esp32\"",
"ARDUINO_BOARD=\"Espressif ESP-WROVER-KIT\"",
""
],
"cStandard": "c99",
"cppStandard": "c++11",
"compilerPath": "/Users/willemoldemans/.platformio/packages/toolchain-xtensa32/bin/xtensa-esp32-elf-gcc",
"compilerArgs": [
"-mlongcalls",
""
]
}
],
"version": 4
}

7
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
]
}

34
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,34 @@
// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY
//
// PIO Unified Debugger
//
// Documentation: https://docs.platformio.org/page/plus/debugging.html
// Configuration: https://docs.platformio.org/page/projectconf/section_env_debug.html
{
"version": "0.2.0",
"configurations": [
{
"type": "platformio-debug",
"request": "launch",
"name": "PIO Debug",
"executable": "/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/build/esp32/firmware.elf",
"projectEnvName": "esp32",
"toolchainBinDir": "/Users/willemoldemans/.platformio/packages/toolchain-xtensa32/bin",
"internalConsoleOptions": "openOnSessionStart",
"preLaunchTask": {
"type": "PlatformIO",
"task": "Pre-Debug"
}
},
{
"type": "platformio-debug",
"request": "launch",
"name": "PIO Debug (skip Pre-Debug)",
"executable": "/Users/willemoldemans/Documents/PROJECTEN/AQS-main/Firmware/PM25SensorESP32/.pio/build/esp32/firmware.elf",
"projectEnvName": "esp32",
"toolchainBinDir": "/Users/willemoldemans/.platformio/packages/toolchain-xtensa32/bin",
"internalConsoleOptions": "openOnSessionStart"
}
]
}

380
NotoSansBold36.h Normal file
View File

@@ -0,0 +1,380 @@
/* The font vlw file can be converted to a byte array using:
https://tomeko.net/online_tools/file_to_hex.php?lang=en
Paste the byte array into a sketch tab and add two lines
at the start with a unique font name:
const uint8_t fontName[] PROGMEM = {
At the end add:
};
See example below. Include the tab in the main sketch, e.g.:
#include "NotoSansBold36.h"
*/
// Digits 0-9 and .
const uint8_t NotoSansBold36[] PROGMEM = {
0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x07,
0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x13,
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x14,
0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32,
0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1B,
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x1C,
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x15,
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14,
0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36,
0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1B,
0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x1A,
0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x13,
0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14,
0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x7B,
0x72, 0x28, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0xFF, 0xF8, 0x30, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x9B, 0x85, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x7B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0x1B,
0xEE, 0xFF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x19, 0x5B, 0x61, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x92, 0xDD, 0xFF, 0xFF, 0xFC, 0xDA, 0x88, 0x17,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xEE, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xBD, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x70,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x5B, 0x59, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x06, 0x00,
0x00, 0x19, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x0C, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x4A, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x2A, 0x00, 0x00, 0x00, 0x00, 0xF2,
0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x00, 0x0A, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x39,
0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x00, 0xB2, 0xFF, 0xFF, 0xFF,
0xFF, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x02, 0xFA,
0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF,
0x5F, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x55, 0x5B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00,
0x2A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x44, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xA7, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x00, 0xB2, 0xFF, 0xFF,
0xFF, 0xFF, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x00,
0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xFC, 0xFF, 0xFF, 0xFF,
0xFF, 0x77, 0x00, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x00, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0x00, 0x00, 0x00,
0x00, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x00, 0x00, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x00,
0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF,
0xFF, 0xCC, 0x00, 0x00, 0x00, 0x13, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x08, 0x00, 0x00, 0x57,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x02, 0x2C, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00,
0x00, 0x00, 0x0C, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xCE, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x7B, 0xE9,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x2E, 0x4E, 0x50, 0x48, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xAE, 0xAE, 0xAE, 0xAE, 0x48,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x06, 0x00, 0x00,
0x00, 0x00, 0x35, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x00, 0x00, 0x00, 0x0E,
0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x5B, 0xE7, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x88, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xDA, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0x37, 0x00, 0x24, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF,
0xAA, 0x26, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x02, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xE5, 0x4E, 0x00,
0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0x06, 0xD6, 0x92, 0x0C, 0x00, 0x00, 0xA5,
0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF,
0xFF, 0xFF, 0xFF, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFF, 0xFF, 0xFF, 0xFF,
0xF6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x11, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D,
0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xFF,
0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF,
0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x26, 0x88, 0xC9, 0xF8, 0xFF, 0xFF, 0xF8, 0xC5, 0x77, 0x0C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xE5, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xF4, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x00,
0x00, 0x00, 0x00, 0x00, 0x22, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x85, 0x70, 0xBD, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFC, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xFF, 0xFF, 0xD0, 0x30, 0x00,
0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xA5, 0x90, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x44, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x17, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFC, 0xFF, 0xFF, 0xFF,
0xFF, 0xD8, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x9B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8A, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF,
0xF6, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xDD,
0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x35, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA3, 0x9B, 0x9B,
0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x9B, 0x92, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0x55,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x92, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x00, 0x00, 0x00, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x50, 0xA1, 0xDA, 0xF8, 0xFF, 0xFF, 0xFC,
0xDA, 0x94, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x72, 0xE3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xD4, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xE7, 0x02, 0x00, 0x00, 0x00, 0x00, 0x06, 0xDD, 0xFF, 0xFF, 0xCE, 0x7F, 0x55, 0x52, 0x83, 0xF6,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xCE, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63,
0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x4E, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0x5B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x04, 0x06, 0x0A, 0x41, 0x6A, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xAC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x66, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE,
0x59, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFC, 0xB2, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37,
0xB4, 0xB4, 0xBB, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x2A,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xFF,
0xFF, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x6A, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC,
0x00, 0x00, 0x59, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x6E, 0x00, 0x00, 0xB4, 0xFA, 0xB0, 0x5F, 0x2C, 0x02, 0x00, 0x00, 0x0A, 0x50,
0xBD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x15, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xF8, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0xB4, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x00, 0x00,
0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2,
0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x7D, 0xC9, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xCE, 0x7B, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x2E, 0x4C,
0x50, 0x50, 0x4C, 0x3D, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xAE, 0xAE, 0xAE,
0xAE, 0xAE, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1D, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0C, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xFA, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0x0E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xE9, 0xFF, 0xFF, 0xFF, 0x9F, 0xF2,
0xFF, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD4, 0xFF,
0xFF, 0xFF, 0xDD, 0x4E, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xFF, 0xF8, 0x30, 0x85, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0x5B, 0x00, 0xC1, 0xFF, 0xFF,
0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0x83,
0x00, 0x02, 0xFC, 0xFF, 0xFF, 0xFF, 0xFC, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xFA,
0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x1D, 0xE9, 0xFF, 0xFF, 0xFF, 0xC9, 0x08, 0x00, 0x00, 0x74, 0xFF, 0xFF, 0xFF, 0xFF,
0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD4, 0xFF, 0xFF, 0xFF, 0xE5, 0x17, 0x00, 0x00, 0x00,
0xAC, 0xFF, 0xFF, 0xFF, 0xFF, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xFF, 0xF4,
0x30, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x7D,
0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x94, 0x94, 0x94, 0x94, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x94,
0x94, 0x8C, 0x00, 0x00, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x00, 0x02, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x30, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x50, 0x00, 0x37, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xA7, 0xAA, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xA7, 0xA7, 0xA7, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6A, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF,
0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xDA, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
0xAE, 0xAE, 0xAE, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xFC, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0x00, 0x00, 0x00, 0x00,
0x00, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x24,
0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xF2, 0xF2, 0xF2, 0xF2, 0xF2,
0xF2, 0xF2, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE7, 0xFF, 0xFF, 0xFF, 0xFC, 0x11, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF,
0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x74, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xBD, 0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFC, 0xFF, 0xFF, 0xFF, 0xDD, 0x06, 0x35, 0x35,
0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x6E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x15, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9B, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x24, 0x02,
0x00, 0x02, 0x3F, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xFF, 0xFF, 0xFF,
0xFF, 0xEB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xBD, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x00, 0x00,
0x63, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x30, 0x00, 0x00, 0x94, 0xFF, 0xDA, 0x83, 0x4A, 0x15, 0x06, 0x08, 0x3B, 0x7D, 0xEE, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x2A, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x4E, 0x00, 0x00, 0x00, 0x00,
0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x37, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0x5F, 0xB0, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xBF,
0x66, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x4A, 0x50, 0x50,
0x4C, 0x37, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x63, 0xA7, 0xE1, 0xFC, 0xFF, 0xFF,
0xFF, 0xF6, 0xC1, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x81, 0xF6, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xDA,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x39, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x24, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x8A, 0x57, 0x4A, 0x4A,
0x55, 0x7B, 0x41, 0x00, 0x00, 0x00, 0x00, 0x02, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x5F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFF, 0xFF, 0xFF, 0xFF,
0xEB, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF2,
0xFF, 0xFF, 0xFF, 0xFF, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xFF, 0xFC, 0x22, 0x00, 0x4C, 0x99, 0xA7,
0xA5, 0x77, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x22,
0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xFF, 0xFF,
0xFF, 0xFF, 0x7F, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0x00,
0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xE9, 0x02, 0x00, 0x00, 0x06, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x74, 0x88, 0xE9,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x00, 0x00, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x5B,
0x00, 0x00, 0x00, 0x2A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0xFF, 0xFF, 0xFF, 0xFF, 0x94, 0x00, 0x00,
0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xFF,
0xFF, 0x8A, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x00, 0x00,
0x00, 0x00, 0x00, 0x06, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0x00, 0x00, 0x55, 0xFF, 0xFF, 0xFF,
0xFF, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x02, 0x00, 0x00,
0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x1B, 0x00, 0x00, 0x00, 0x11, 0xE1, 0xFF, 0xFF, 0xFF, 0xFF,
0x9D, 0x00, 0x00, 0x00, 0x00, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x1F, 0x00, 0x2C, 0xC7, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xE9, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x08, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x39, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x11, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xA3, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE,
0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x3F, 0x50,
0x50, 0x48, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A,
0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE, 0xAE,
0x35, 0x00, 0x00, 0x02, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00,
0x00, 0x00, 0x96, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xEB, 0xF8, 0xFF, 0xFF,
0xFF, 0xFF, 0xFC, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x19, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0x13, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xDA,
0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0xFF,
0xFF, 0xF0, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0C, 0xE5, 0xFF, 0xFF, 0xFF, 0xFF, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFC, 0xFF,
0xFF, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC9, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF,
0xD8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x22, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x1B, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB8,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xAA, 0xF0, 0xFF, 0xFF, 0xFF, 0xF6, 0xB2,
0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xEB, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x50, 0x00, 0x00, 0x2A, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5,
0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0x85, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xFF, 0xFF,
0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0x52, 0x00,
0x00, 0x00, 0x00, 0x72, 0xFF, 0xFF, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF,
0xFF, 0xA7, 0x00, 0x00, 0x00, 0x13, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x00, 0x00, 0x00, 0x48,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x61, 0x00, 0x2C, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x00, 0x00,
0x00, 0x00, 0x00, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xF2, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x6E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xB4, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xE3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x9F, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xF2, 0xDA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x9B,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x83, 0x0C, 0x08, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
0x00, 0x3B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x48, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF,
0xFF, 0xBD, 0x00, 0x00, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39,
0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x02, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x00, 0x00, 0x00,
0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0xFC, 0xFF, 0xFF,
0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x00, 0x00,
0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x2C, 0x00, 0x00, 0x00, 0x26, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF,
0x9F, 0x00, 0x00, 0x72, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xB6, 0xA5, 0xB8, 0xFC, 0xFF, 0xFF,
0xFF, 0xFF, 0xFC, 0x28, 0x00, 0x00, 0x04, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x77,
0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x94, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x15, 0x48, 0x50, 0x50, 0x4C, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0x9D, 0xDF, 0xFC, 0xFF,
0xFF, 0xF6, 0xB2, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0xA7, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xD6,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAA, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
0x00, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0x57, 0x4A, 0x7F, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xA7, 0x00, 0x00, 0x00, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xC5, 0x08, 0x00, 0x00, 0x00,
0x85, 0xFF, 0xFF, 0xFF, 0xFF, 0xEE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x28, 0x00,
0x00, 0x00, 0x00, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x83, 0xFF, 0xFF, 0xFF, 0xFF,
0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x26, 0x00, 0xAE, 0xFF,
0xFF, 0xFF, 0xFF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D,
0x00, 0xB8, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x24, 0x00, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00,
0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xAC, 0x4A, 0x4A, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD8, 0x00, 0x00, 0x33, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA7, 0x00, 0x00,
0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF,
0x6E, 0x00, 0x00, 0x00, 0x13, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x39, 0xDD, 0xFF,
0xFF, 0xFF, 0xFF, 0x33, 0x00, 0x00, 0x00, 0x00, 0x06, 0x74, 0xC1, 0xF4, 0xF6, 0xD6, 0x88, 0x13,
0x37, 0xFF, 0xFF, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xB2, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xC5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC,
0x28, 0x00, 0x00, 0x00, 0x3F, 0x66, 0x2E, 0x02, 0x00, 0x02, 0x35, 0x81, 0xF0, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x55, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x81, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x02, 0x2C, 0x4C, 0x50, 0x50, 0x48, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x4E, 0x6F, 0x74, 0x6F, 0x20, 0x53, 0x61, 0x6E,
0x73, 0x20, 0x42, 0x6F, 0x6C, 0x64, 0x20, 0x49, 0x74, 0x61, 0x6C, 0x69, 0x63, 0x00, 0x13, 0x4E,
0x6F, 0x74, 0x6F, 0x53, 0x61, 0x6E, 0x73, 0x2D, 0x42, 0x6F, 0x6C, 0x64, 0x49, 0x74, 0x61, 0x6C,
0x69, 0x63, 0x01
};

168
PMS.cpp Normal file
View File

@@ -0,0 +1,168 @@
#include "Arduino.h"
#include "PMS.h"
/* From https://github.com/SwapBap/PMS */
PMS::PMS(Stream& stream)
{
this->_stream = &stream;
}
// Standby mode. For low power consumption and prolong the life of the sensor.
void PMS::sleep()
{
uint8_t command[] = { 0x42, 0x4D, 0xE4, 0x00, 0x00, 0x01, 0x73 };
_stream->write(command, sizeof(command));
}
// Operating mode. Stable data should be got at least 30 seconds after the sensor wakeup from the sleep mode because of the fan's performance.
void PMS::wakeUp()
{
uint8_t command[] = { 0x42, 0x4D, 0xE4, 0x00, 0x01, 0x01, 0x74 };
_stream->write(command, sizeof(command));
}
// Active mode. Default mode after power up. In this mode sensor would send serial data to the host automatically.
void PMS::activeMode()
{
uint8_t command[] = { 0x42, 0x4D, 0xE1, 0x00, 0x01, 0x01, 0x71 };
_stream->write(command, sizeof(command));
_mode = MODE_ACTIVE;
}
// Passive mode. In this mode sensor would send serial data to the host only for request.
void PMS::passiveMode()
{
uint8_t command[] = { 0x42, 0x4D, 0xE1, 0x00, 0x00, 0x01, 0x70 };
_stream->write(command, sizeof(command));
_mode = MODE_PASSIVE;
}
// Request read in Passive Mode.
void PMS::requestRead()
{
if (_mode == MODE_PASSIVE)
{
uint8_t command[] = { 0x42, 0x4D, 0xE2, 0x00, 0x00, 0x01, 0x71 };
_stream->write(command, sizeof(command));
}
}
// Non-blocking function for parse response.
bool PMS::read(DATA& data)
{
_data = &data;
loop();
return _status == STATUS_OK;
}
// Blocking function for parse response. Default timeout is 1s.
bool PMS::readUntil(DATA& data, uint16_t timeout)
{
_data = &data;
uint32_t start = millis();
do
{
loop();
if (_status == STATUS_OK) break;
} while (millis() - start < timeout);
return _status == STATUS_OK;
}
void PMS::loop()
{
_status = STATUS_WAITING;
if (_stream->available())
{
uint8_t ch = _stream->read();
switch (_index)
{
case 0:
if (ch != 0x42)
{
return;
}
_calculatedChecksum = ch;
break;
case 1:
if (ch != 0x4D)
{
_index = 0;
return;
}
_calculatedChecksum += ch;
break;
case 2:
_calculatedChecksum += ch;
_frameLen = ch << 8;
break;
case 3:
_frameLen |= ch;
// Unsupported sensor, different frame length, transmission error e.t.c.
if (_frameLen != 2 * 9 + 2 && _frameLen != 2 * 13 + 2)
{
_index = 0;
return;
}
_calculatedChecksum += ch;
break;
default:
if (_index == _frameLen + 2)
{
_checksum = ch << 8;
}
else if (_index == _frameLen + 2 + 1)
{
_checksum |= ch;
if (_calculatedChecksum == _checksum)
{
_status = STATUS_OK;
// Standard Particles, CF=1.
_data->PM_SP_UG_1_0 = makeWord(_payload[0], _payload[1]);
_data->PM_SP_UG_2_5 = makeWord(_payload[2], _payload[3]);
_data->PM_SP_UG_10_0 = makeWord(_payload[4], _payload[5]);
// Atmospheric Environment.
_data->PM_AE_UG_1_0 = makeWord(_payload[6], _payload[7]);
_data->PM_AE_UG_2_5 = makeWord(_payload[8], _payload[9]);
_data->PM_AE_UG_10_0 = makeWord(_payload[10], _payload[11]);
// Total particles
_data->PM_TOTALPARTICLES_0_3 = makeWord(_payload[12], _payload[13]);
_data->PM_TOTALPARTICLES_0_5 = makeWord(_payload[14], _payload[15]);
_data->PM_TOTALPARTICLES_1_0 = makeWord(_payload[16], _payload[17]);
_data->PM_TOTALPARTICLES_2_5 = makeWord(_payload[18], _payload[19]);
_data->PM_TOTALPARTICLES_5_0 = makeWord(_payload[20], _payload[21]);
_data->PM_TOTALPARTICLES_10_0 = makeWord(_payload[22], _payload[23]);
}
_index = 0;
return;
}
else
{
_calculatedChecksum += ch;
uint8_t payloadIndex = _index - 4;
// Payload is common to all sensors (first 2x6 bytes).
if (payloadIndex < sizeof(_payload))
{
_payload[payloadIndex] = ch;
}
}
break;
}
_index++;
}
}

65
PMS.h Normal file
View File

@@ -0,0 +1,65 @@
#ifndef PMS_H
#define PMS_H
/* From https://github.com/SwapBap/PMS */
#include "Stream.h"
class PMS
{
public:
static const uint16_t SINGLE_RESPONSE_TIME = 1000;
static const uint16_t TOTAL_RESPONSE_TIME = 1000 * 10;
static const uint16_t STEADY_RESPONSE_TIME = 1000 * 30;
static const uint16_t BAUD_RATE = 9600;
struct DATA {
// Standard Particles, CF=1
uint16_t PM_SP_UG_1_0;
uint16_t PM_SP_UG_2_5;
uint16_t PM_SP_UG_10_0;
// Atmospheric environment
uint16_t PM_AE_UG_1_0;
uint16_t PM_AE_UG_2_5;
uint16_t PM_AE_UG_10_0;
// Total particles
uint16_t PM_TOTALPARTICLES_0_3;
uint16_t PM_TOTALPARTICLES_0_5;
uint16_t PM_TOTALPARTICLES_1_0;
uint16_t PM_TOTALPARTICLES_2_5;
uint16_t PM_TOTALPARTICLES_5_0;
uint16_t PM_TOTALPARTICLES_10_0;
};
PMS(Stream&);
void sleep();
void wakeUp();
void activeMode();
void passiveMode();
void requestRead();
bool read(DATA& data);
bool readUntil(DATA& data, uint16_t timeout = SINGLE_RESPONSE_TIME);
private:
enum STATUS { STATUS_WAITING, STATUS_OK };
enum MODE { MODE_ACTIVE, MODE_PASSIVE };
uint8_t _payload[24];
Stream* _stream;
DATA* _data;
STATUS _status;
MODE _mode = MODE_ACTIVE;
uint8_t _index = 0;
uint16_t _frameLen;
uint16_t _checksum;
uint16_t _calculatedChecksum;
void loop();
};
#endif

7
README.md Normal file
View File

@@ -0,0 +1,7 @@
"Pro" version Particulate Matter Sensor firmware
=================================================
NOTE: This version of the firmware is for the "Pro" version of the
SuperHouse Air Quality Sensor project. It does not work on the "Basic"
and "Display" version of the project.

7
button.h Normal file
View File

@@ -0,0 +1,7 @@
#pragma once
#include "Arduino.h"
#include "config.h"
void initButtons( void );
void handleButtons( void );

33
buttons.cpp Normal file
View File

@@ -0,0 +1,33 @@
#include "button.h"
// Mode Button
uint8_t g_current_mode_button_state = 1; // Pin is pulled high by default
uint8_t g_previous_mode_button_state = 1;
uint32_t g_last_debounce_time = 0;
uint32_t g_debounce_delay = 50;
void initButtons(void)
{
Serial.print("initButtons:");
pinMode(MODE_BUTTON_PIN, INPUT_PULLUP); // Pin for switching screens button
Serial.println(" OK");
}
void handleButtons(void)
{
g_previous_mode_button_state = g_current_mode_button_state;
g_current_mode_button_state = digitalRead(MODE_BUTTON_PIN);
// Check if button is now pressed and it was previously unpressed
if (g_current_mode_button_state == LOW && g_previous_mode_button_state == HIGH)
{
// We haven't waited long enough so ignore this press
if (millis() - g_last_debounce_time <= g_debounce_delay)
{
return;
}
Serial.println("Button pressed");
// Increment display state
g_last_debounce_time = millis();
}
}

54
config.h Normal file
View File

@@ -0,0 +1,54 @@
#include "Arduino.h"
/* ----------------- General Config -------------------------------- */
/* WiFi config */
#define WIFI_SSID "poes" // Your WiFi SSID
#define WIFI_PASSWORD "Rijnstraat214" // Your WiFi password
/* MQTT */
#define mqtt_broker "192.168.2.5" // IP address of your MQTT broker
#define REPORT_MQTT_SEPARATE true // Report each value to its own topic
#define REPORT_MQTT_JSON true // Report all values in a JSON message
#define status_topic "events" // MQTT topic to report startup
#define device_name "AQS"
/* Particulate Matter Sensor */
#define g_pms_warmup_period 30 // Seconds to warm up PMS before reading
#define g_pms_report_period 120 // Seconds between reports
/* Use WiFi. If this is off, MQTT won't run */
#define ENABLE_WIFI true
/* Serial */
#define SERIAL_BAUD_RATE 115200 // Speed for USB serial console
/* Environmental sensor */
#define SEA_LEVEL_PRESSURE_HPA (1013.25)
/* ----------------- Hardware-specific Config ---------------------- */
/* Mode button connection (momentary between this pin and GND) */
#define MODE_BUTTON_PIN 0
/* RGB LEDs */
#define WS2812B_PIN 13
#define NUM_RGB_LEDS 0
/* LCD */
#define TFT_DC_PIN 2
#define TFT_RST_PIN 4
#define TFT_CS_PIN 26
#define TFT_SCLK_PIN 18
#define TFT_MISO_PIN 19
#define TFT_MOSI_PIN 23
/* I2C */
#define I2C_SDA_PIN 21
#define I2C_SCL_PIN 22
//#define BME680_I2C_ADDR 0x76
/* Particulate Matter Sensor */
#define PMS_BAUD_RATE 9600
#define PMS_SET_PIN 25
#define PMS_RESET_PIN 26
#define PMS_RX_PIN 27 // Tx to the PMS SHOULD BE 16
#define PMS_TX_PIN 14 // Rx from the PMS SHOULD BE 17

1151
dial.h Normal file

File diff suppressed because it is too large Load Diff

225
lcd.cpp Normal file
View File

@@ -0,0 +1,225 @@
#include "lcd.h"
// This example draws an animated dial with a rotating needle.
// The dial is a jpeg image, the needle is created using a rotated
// Sprite. The example operates by reading blocks of pixels from the
// TFT, thus the TFT setup must support reading from the TFT CGRAM.
// The sketch operates by creating a copy of the screen block where
// the needle will be drawn, the needle is then drawn on the screen.
// When the needle moves, the original copy of the sreen area is
// pushed to the screen to over-write the needle graphic. A copy
// of the screen where the new position will be drawn is then made
// before drawing the needle in the new postion. This technique
// allows the needle to move over other screen graphics.
// The sketch calculates the size of the buffer memory required and
// reserves the memory for the TFT block copy.
// Created by Bodmer 17/3/20 as an example to the TFT_eSPI library:
// https://github.com/Bodmer/TFT_eSPI
#define NEEDLE_LENGTH 35 // Visible length
#define NEEDLE_WIDTH 5 // Width of needle - make it an odd number
#define NEEDLE_RADIUS 90 // Radius at tip
#define NEEDLE_COLOR1 TFT_MAROON // Needle periphery colour
#define NEEDLE_COLOR2 TFT_RED // Needle centre colour
#define DIAL_CENTRE_X 120
#define DIAL_CENTRE_Y 120
// Font attached to this sketch
#include "NotoSansBold36.h"
#define AA_FONT_LARGE NotoSansBold36
#include <TFT_eSPI.h>
TFT_eSPI tft = TFT_eSPI();
TFT_eSprite needle = TFT_eSprite(&tft); // Sprite object for needle
TFT_eSprite spr = TFT_eSprite(&tft); // Sprite for meter reading
// Jpeg image array attached to this sketch
#include "dial.h"
// Include the jpeg decoder library
#include <TJpg_Decoder.h>
uint16_t *tft_buffer;
bool buffer_loaded = false;
uint16_t spr_width = 0;
void createNeedle(void);
void plotNeedle(int16_t angle, uint16_t ms_delay);
// =======================================================================================
// This function will be called during decoding of the jpeg file
// =======================================================================================
bool tft_output(int16_t x, int16_t y, uint16_t w, uint16_t h, uint16_t *bitmap)
{
// Stop further decoding as image is running off bottom of screen
if (y >= tft.height())
return 0;
// This function will clip the image block rendering automatically at the TFT boundaries
tft.pushImage(x, y, w, h, bitmap);
// Return 1 to decode next block
return 1;
}
// =======================================================================================
// Setup
// =======================================================================================
void initLCD()
{
Serial.print("InitLCD:");
// The byte order can be swapped (set true for TFT_eSPI)
TJpgDec.setSwapBytes(true);
// The jpeg decoder must be given the exact name of the rendering function above
TJpgDec.setCallback(tft_output);
tft.begin();
tft.setRotation(0);
tft.fillScreen(TFT_BLACK);
// Draw the dial
TJpgDec.drawJpg(0, 0, dial, sizeof(dial));
tft.drawCircle(DIAL_CENTRE_X, DIAL_CENTRE_Y, NEEDLE_RADIUS - NEEDLE_LENGTH, TFT_DARKGREY);
// Load the font and create the Sprite for reporting the value
spr.loadFont(AA_FONT_LARGE);
spr_width = spr.textWidth("277");
spr.createSprite(spr_width, spr.fontHeight());
uint16_t bg_color = tft.readPixel(120, 120); // Get colour from dial centre
spr.fillSprite(bg_color);
spr.setTextColor(TFT_WHITE, bg_color);
spr.setTextDatum(MC_DATUM);
spr.setTextPadding(spr_width);
spr.drawNumber(0, spr_width / 2, spr.fontHeight() / 2);
spr.pushSprite(DIAL_CENTRE_X - spr_width / 2, DIAL_CENTRE_Y - spr.fontHeight() / 2);
// Plot the label text
tft.setTextColor(TFT_WHITE, bg_color);
tft.setTextDatum(MC_DATUM);
tft.drawString("(PM2.5 ug/m3)", DIAL_CENTRE_X, DIAL_CENTRE_Y + 48, 2);
// Define where the needle pivot point is on the TFT before
// creating the needle so boundary calculation is correct
tft.setPivot(DIAL_CENTRE_X, DIAL_CENTRE_Y);
// Create the needle Sprite
createNeedle();
// Reset needle position to 0
plotNeedle(0, 0, 0);
delay(2000);
Serial.println("OK");
}
// =======================================================================================
// Loop
// =======================================================================================
void handleLCD()
{
//calculate value to angle
uint16_t angle = map(getLCDvalue(),0,50,0,240);
plotNeedle(angle,15, getLCDvalue());
}
// =======================================================================================
// Create the needle Sprite
// =======================================================================================
void createNeedle(void)
{
needle.setColorDepth(16);
needle.createSprite(NEEDLE_WIDTH, NEEDLE_LENGTH); // create the needle Sprite
needle.fillSprite(TFT_BLACK); // Fill with black
// Define needle pivot point relative to top left corner of Sprite
uint16_t piv_x = NEEDLE_WIDTH / 2; // pivot x in Sprite (middle)
uint16_t piv_y = NEEDLE_RADIUS; // pivot y in Sprite
needle.setPivot(piv_x, piv_y); // Set pivot point in this Sprite
// Draw the red needle in the Sprite
needle.fillRect(0, 0, NEEDLE_WIDTH, NEEDLE_LENGTH, TFT_MAROON);
needle.fillRect(1, 1, NEEDLE_WIDTH - 2, NEEDLE_LENGTH - 2, TFT_RED);
// Bounding box parameters to be populated
int16_t min_x;
int16_t min_y;
int16_t max_x;
int16_t max_y;
// Work out the worst case area that must be grabbed from the TFT,
// this is at a 45 degree rotation
needle.getRotatedBounds(45, &min_x, &min_y, &max_x, &max_y);
// Calculate the size and allocate the buffer for the grabbed TFT area
tft_buffer = (uint16_t *)malloc(((max_x - min_x) + 2) * ((max_y - min_y) + 2) * 2);
}
// =======================================================================================
// Move the needle to a new position
// =======================================================================================
void plotNeedle(int16_t angle, uint16_t ms_delay, uint32_t value)
{
static int16_t old_angle = -120; // Starts at -120 degrees
// Bounding box parameters
static int16_t min_x;
static int16_t min_y;
static int16_t max_x;
static int16_t max_y;
if (angle < 0)
angle = 0; // Limit angle to emulate needle end stops
if (angle > 240)
angle = 240;
angle -= 120; // Starts at -120 degrees
// Move the needle until new angle reached
while (angle != old_angle || !buffer_loaded)
{
if (old_angle < angle)
old_angle++;
else
old_angle--;
// Only plot needle at even values to improve plotting performance
if ((old_angle & 1) == 0)
{
if (buffer_loaded)
{
// Paste back the original needle free image area
tft.pushRect(min_x, min_y, 1 + max_x - min_x, 1 + max_y - min_y, tft_buffer);
}
if (needle.getRotatedBounds(old_angle, &min_x, &min_y, &max_x, &max_y))
{
// Grab a copy of the area before needle is drawn
tft.readRect(min_x, min_y, 1 + max_x - min_x, 1 + max_y - min_y, tft_buffer);
buffer_loaded = true;
}
// Draw the needle in the new postion, black in needle image is transparent
needle.pushRotated(old_angle, TFT_BLACK);
// Wait before next update
delay(ms_delay);
}
// Update the number at the centre of the dial
spr.drawNumber(value, spr_width / 2, spr.fontHeight() / 2);
spr.pushSprite(120 - spr_width / 2, 120 - spr.fontHeight() / 2);
// Slow needle down slightly as it approaches the new position
if (abs(old_angle - angle) < 10)
ms_delay += ms_delay / 5;
}
}
// =======================================================================================

9
lcd.h Normal file
View File

@@ -0,0 +1,9 @@
#pragma once
#include "Arduino.h"
#include "particles.h"
void initLCD();
void handleLCD();
void plotNeedle(int16_t angle, uint16_t ms_delay, uint32_t value);

68
main.cpp Normal file
View File

@@ -0,0 +1,68 @@
/*
Particulate Matter Sensor firmware (ESP32 version)
Written by Jonathan Oxer for www.superhouse.tv
https://github.com/superhouse/PM25SensorESP32
refactored by Willem Oldemans
Read from a Plantower PMS7003 particulate matter sensor and a BME680
environmental sensosr using an ESP32, and report the values to an MQTT
broker and show them on a 240x240 LCD, with a mode button to change
between display modes.
External dependencies. Install using the Arduino library manager:
"Adafruit GFX Library" by Adafruit
TFT_eSPI.h
Adafruit_NeoPixel.h
Adafruit_Sensor.h
Adafruit_BME680.h
"PubSubClient" by Nick O'Leary
RunningMedian
Bundled dependencies. No need to install separately:
"PMS Library" by Mariusz Kacki, forked by SwapBap
Inspired by https://github.com/SwapBap/WemosDustSensor/
*/
#define VERSION "3"
/*--------------------------- Configuration ------------------------------*/
// Configuration should be done in the included file:
#include "Arduino.h"
#include "config.h"
/*--------------------------- Modules ------------------------------------*/
#include "lcd.h"
#include "mqtt.h"
#include "particles.h"
#include "button.h"
/*--------------------------- Program ---------------------------------------*/
/**
Setup
*/
void setup()
{
Serial.begin(SERIAL_BAUD_RATE);
Serial.println();
Serial.print("Air Quality Sensor starting up, v");
Serial.println(VERSION);
initWifi();
initMQTT();
initParticles();
initLCD();
initButtons();
}
/**
Main loop
*/
void loop()
{
handleParticles();
handleMQTT();
handleButtons();
handleLCD();
}

156
mqtt.cpp Normal file
View File

@@ -0,0 +1,156 @@
#include "mqtt.h"
// Wifi
#define WIFI_CONNECT_INTERVAL 500 // Wait 500ms intervals for wifi connection
#define WIFI_CONNECT_MAX_ATTEMPTS 10 // Number of attempts/intervals to wait
// MQTT
uint32_t g_device_id; // Unique ID from ESP chip ID
WiFiClient esp_client;
PubSubClient client(esp_client);
uint32_t getDeviceID(void)
{
return g_device_id;
}
/*
This callback is invoked when an MQTT message is received. It's not important
right now for this project because we don't receive commands via MQTT. You
can modify this function to make the device act on commands that you send it.
*/
void callback(char *topic, byte *message, unsigned int length)
{
//Serial.print("Message arrived [");
//Serial.print(topic);
//Serial.print("] ");
//for (int i = 0; i < length; i++) {
// Serial.print((char)payload[i]);
//}
//Serial.println();
}
/**
Reconnect to MQTT broker, and publish a notification to the status topic
*/
void reconnectMqtt()
{
char g_mqtt_message_buffer[150]; // General purpose buffer for MQTT messages
char mqtt_client_id[20];
sprintf(mqtt_client_id, "esp32-%x", g_device_id);
// Loop until we're reconnected
while (!client.connected())
{
Serial.print("Attempting MQTT connection to ");
Serial.print(mqtt_broker);
Serial.print(" as ");
Serial.print(mqtt_client_id);
Serial.print("... ");
// Attempt to connect
if (client.connect(mqtt_client_id))
{
//Serial.println("connected");
// Once connected, publish an announcement
sprintf(g_mqtt_message_buffer, "Device %s starting up", mqtt_client_id);
client.publish(status_topic, g_mqtt_message_buffer);
// Resubscribe
//client.subscribe(g_command_topic);
}
else
{
//Serial.print("failed, rc=");
//Serial.print(client.state());
//Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
}
bool initWifi()
{
Serial.print("InitWifi:");
// Clean up any old auto-connections
if (WiFi.status() == WL_CONNECTED)
{
WiFi.disconnect();
}
WiFi.setAutoConnect(false);
// RETURN: No SSID, so no wifi!
if (sizeof(WIFI_SSID) == 1)
{
return false;
}
// Connect to wifi
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
// Wait for connection set amount of intervals
int num_attempts = 0;
while (WiFi.status() != WL_CONNECTED && num_attempts <= WIFI_CONNECT_MAX_ATTEMPTS)
{
delay(WIFI_CONNECT_INTERVAL);
num_attempts++;
}
if (WiFi.status() != WL_CONNECTED)
{
return false;
Serial.println("FAILED");
}
else
{
return true;
Serial.println(" OK");
}
}
void initMQTT(void)
{
Serial.print("InitMQTT:");
/* Set up the MQTT client */
// We need a unique device ID for our MQTT client connection
uint64_t macAddress = ESP.getEfuseMac();
uint64_t macAddressTrunc = macAddress << 40;
g_device_id = macAddressTrunc >> 40;
Serial.print("Device ID: ");
Serial.print(g_device_id, HEX);
client.setServer(mqtt_broker, 1883);
client.setCallback(callback);
Serial.println(" OK");
}
void handleMQTT(void)
{
if (WiFi.status() == WL_CONNECTED)
{
if (!client.connected())
{
reconnectMqtt();
}
}
client.loop(); // Process any outstanding MQTT messages
}
/**
Report the most recent values to MQTT if enough time has passed
*/
void publishSingle(uint32_t value, char *topic)
{
char g_mqtt_message_buffer[150]; // General purpose buffer for MQTT messages
String message_string;
message_string = String(value);
message_string.toCharArray(g_mqtt_message_buffer, message_string.length() + 1);
client.publish(topic, g_mqtt_message_buffer);
}

63
mqtt.h Normal file
View File

@@ -0,0 +1,63 @@
#pragma once
#include "Arduino.h"
#include "mqtt.h"
#include "config.h"
#include <WiFi.h> // ESP32 WiFi driver
#include <PubSubClient.h> // For MQTT
#include <string>
#include "RunningMedian.h"
void initMQTT( void );
void handleMQTT( void );
bool initWifi();
uint32_t getDeviceID( void );
void publishSingle(uint32_t value, char *topic);
class mqttSensor
{
char _topic[50];
char _topic_1h[50];
char _topic_24h[50];
const String _name;
uint32_t _value;
RunningMedian _average1h;
RunningMedian _average24h;
public:
mqttSensor(String name, String deviceID, uint8_t avgSamples): _name(name),
_average1h(avgSamples),
_average24h(avgSamples*24)
{
sprintf(_topic, "Sensors/%s/%s", deviceID.c_str(),name.c_str() );
sprintf(_topic_1h, "Sensors/%s/%s/1h/", deviceID.c_str(),name.c_str() );
sprintf(_topic_24h, "Sensors/%s/%s/24h/", deviceID.c_str(),name.c_str() );
}
void publish(void)
{
publishSingle(_value, _topic);
publishSingle(_average1h.getMedian(),_topic_1h);
publishSingle(_average24h.getMedian(),_topic_24h);
}
virtual void set(uint32_t value)
{
_value = value;
_average1h.add(_value);
_average24h.add(_value);
}
uint32_t value() {return _value;}
void print( void )
{
Serial.printf("sensor:%s = %d\n",_name.c_str(), _value);
}
};

194
particles.cpp Normal file
View File

@@ -0,0 +1,194 @@
#include "particles.h"
// Particulate matter sensor
PMS pms(Serial2);
PMS::DATA g_data;
char g_command_topic[50]; // MQTT topic for receiving commands
#define PMS_STATE_ASLEEP 0 // Low power mode, laser and fan off
#define PMS_STATE_WAKING_UP 1 // Laser and fan on, not ready yet
#define PMS_STATE_READY 2 // Warmed up, ready to give data
uint8_t g_pms_state = PMS_STATE_WAKING_UP;
uint32_t g_pms_state_start = 0; // Timestamp when PMS state last changed
uint8_t g_pms_readings_taken = 0; // 0/1: whether any readings have been taken
uint8_t g_pms_ppd_readings_taken = 0; // 0/1: whether PPD readings have been taken
uint8_t samples = 3600 / g_pms_report_period;
mqttSensor g_pm1p0_sp("SP_1P0", device_name, samples);
mqttSensor g_pm2p5_sp("SP_2P5", device_name, samples);
mqttSensor g_pm10p0_sp("SP_10P0", device_name, samples);
mqttSensor g_pm1p0_ae("AE_1P0", device_name, samples);
mqttSensor g_pm2p5_ae("AE_2P5", device_name, samples);
mqttSensor g_pm10p0_ae("AE_10P0", device_name, samples);
mqttSensor g_pm0p3_ppd("PPD_0P3", device_name, samples);
mqttSensor g_pm0p5_ppd("PPD_0P5", device_name, samples);
mqttSensor g_pm1p0_ppd("PPD_1P0", device_name, samples);
mqttSensor g_pm2p5_ppd("PPD_2P5", device_name, samples);
mqttSensor g_pm5p0_ppd("PPD_5P0", device_name, samples);
mqttSensor g_pm10p0_ppd("PPD_10P0", device_name, samples);
std::vector<mqttSensor*> sensorList;
void prepareTopics( void )
{
sensorList.push_back(&g_pm1p0_sp);
sensorList.push_back(&g_pm2p5_sp);
sensorList.push_back(&g_pm10p0_sp);
sensorList.push_back(&g_pm1p0_ae);
sensorList.push_back(&g_pm2p5_ae);
sensorList.push_back(&g_pm10p0_ae);
sensorList.push_back(&g_pm0p3_ppd);
sensorList.push_back(&g_pm0p5_ppd);
sensorList.push_back(&g_pm1p0_ppd);
sensorList.push_back(&g_pm2p5_ppd);
sensorList.push_back(&g_pm5p0_ppd);
sensorList.push_back(&g_pm10p0_ppd);
}
uint32_t getLCDvalue(void)
{
return g_pm2p5_ae.value();
}
/**
Report the latest values to the serial console
*/
void reportToSerial()
{
/* Report PM1.0 AE value */
for( auto && sensor : sensorList)
{
sensor->print();
}
}
/**
Update particulate matter sensor values
*/
void updatePmsReadings()
{
uint32_t time_now = millis();
// Check if we've been in the sleep state for long enough
if (PMS_STATE_ASLEEP == g_pms_state)
{
if (time_now - g_pms_state_start >= ((g_pms_report_period * 1000) - (g_pms_warmup_period * 1000)))
{
// It's time to wake up the sensor
Serial.println("Waking up sensor");
pms.wakeUp();
g_pms_state_start = time_now;
g_pms_state = PMS_STATE_WAKING_UP;
}
}
// Check if we've been in the waking up state for long enough
if (PMS_STATE_WAKING_UP == g_pms_state)
{
if (time_now - g_pms_state_start >= (g_pms_warmup_period * 1000))
{
g_pms_state_start = time_now;
g_pms_state = PMS_STATE_READY;
}
}
// Put the most recent values into globals for reference elsewhere
if (PMS_STATE_READY == g_pms_state)
{
//pms.requestRead();
if (pms.readUntil(g_data))
{
g_pm1p0_sp.set(g_data.PM_SP_UG_1_0);
g_pm2p5_sp.set(g_data.PM_SP_UG_2_5);
g_pm10p0_sp.set(g_data.PM_SP_UG_10_0);
g_pm1p0_ae.set(g_data.PM_AE_UG_1_0);
g_pm2p5_ae.set(g_data.PM_AE_UG_2_5);
g_pm10p0_ae.set(g_data.PM_AE_UG_10_0);
// This condition below should NOT be required, but currently I get all
// 0 values for the PPD results every second time. This check only updates
// the global values if there is a non-zero result for any of the values:
if (g_data.PM_TOTALPARTICLES_0_3 + g_data.PM_TOTALPARTICLES_0_5 + g_data.PM_TOTALPARTICLES_1_0 + g_data.PM_TOTALPARTICLES_2_5 + g_data.PM_TOTALPARTICLES_5_0 + g_data.PM_TOTALPARTICLES_10_0 != 0)
{
g_pm0p3_ppd.set(g_data.PM_TOTALPARTICLES_0_3);
g_pm0p5_ppd.set(g_data.PM_TOTALPARTICLES_0_5);
g_pm1p0_ppd.set(g_data.PM_TOTALPARTICLES_1_0);
g_pm2p5_ppd.set(g_data.PM_TOTALPARTICLES_2_5);
g_pm5p0_ppd.set(g_data.PM_TOTALPARTICLES_5_0);
g_pm10p0_ppd.set(g_data.PM_TOTALPARTICLES_10_0);
g_pms_ppd_readings_taken = 1;
}
else
{
Serial.println("PMS: zero's issue");
}
pms.sleep();
// Report the new values
reportToMqtt();
reportToSerial();
g_pms_readings_taken = 1;
g_pms_state_start = time_now;
g_pms_state = PMS_STATE_ASLEEP;
}
}
}
void reportToMqtt(void )
{
String message_string;
/* Report PM1.0 AE value */
g_pm1p0_ae.publish();
g_pm2p5_ae.publish();
g_pm10p0_ae.publish();
g_pm1p0_sp.publish();
g_pm2p5_sp.publish();
g_pm10p0_sp.publish();
if (1 == g_pms_ppd_readings_taken)
{
/* Report PM0.3 PPD value */
g_pm0p3_ppd.publish();
g_pm0p5_ppd.publish();
g_pm1p0_ppd.publish();
g_pm2p5_ppd.publish();
g_pm5p0_ppd.publish();
g_pm10p0_ppd.publish();
}
}
void initParticles( void )
{
Serial.print("initPMS:");
// Open a connection to the PMS and put it into passive mode
Serial2.begin(PMS_BAUD_RATE, SERIAL_8N1, PMS_RX_PIN, PMS_TX_PIN); // Connection for PMS5003
pms.activeMode(); // Tell PMS to stop sending data automatically
delay(100);
pms.wakeUp(); // Tell PMS to wake up (turn on fan and laser)
//Serial2.begin(PMS_BAUD_RATE, SERIAL_8N1, PMS_RX_PIN, PMS_TX_PIN);
prepareTopics();
Serial.println(" OK");
}
void handleParticles( void )
{
updatePmsReadings();
}

15
particles.h Normal file
View File

@@ -0,0 +1,15 @@
#pragma once
#include "Arduino.h"
#include "config.h"
#include <vector>
#include "PMS.h" // Particulate Matter Sensor driver (embedded)
#include "RunningMedian.h"
#include "mqtt.h"
uint32_t getLCDvalue(void);
void reportToMqtt(void );
void initParticles( void );
void handleParticles( void );

36
platformio.ini Normal file
View File

@@ -0,0 +1,36 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html
[platformio]
default_envs = esp32
src_dir = .
[common]
lib_deps_builtin =
WiFi
TFT_eSPI
lib_deps =
#adafruit/Adafruit BME680 Library
#adafruit/Adafruit GFX Library
#adafruit/Adafruit Neopixel
#adafruit/Adafruit Unified Sensor
knolleary/PubSubClient
robtillaart/RunningMedian
bodmer/Tjpg_decoder
[env:esp32]
platform = espressif32
board = esp-wrover-kit
framework = arduino
monitor_speed = 115200
lib_deps =
${common.lib_deps_builtin}
${common.lib_deps}

615
superhouselogo.h Normal file
View File

@@ -0,0 +1,615 @@
// Images can be converted to XBM format by using the online converter here:
// https://www.online-utility.org/image/convert/to/XBM
// The output must be pasted in a header file, renamed and adjusted to appear
// as a const unsigned char array in PROGMEM (FLASH program memory).
// The xbm format adds padding to pixel rows so they are a whole number of bytes.
// The library ignores the padding bits when drawing the image on the display.
#include <pgmspace.h> // PROGMEM support header
#define logo_width 240 // logo width
#define logo_height 240 // logo height
PROGMEM const unsigned char superhouse_logo[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xA0, 0xFB, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x7F,
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, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xAF, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x1F, 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, 0x7F, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFD,
0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE,
0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x9F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF,
0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xF7, 0xFF, 0x1F, 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, 0x7F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFB, 0xFF,
0xFF, 0xFF, 0xBF, 0x28, 0x88, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xBE, 0xFF, 0xFF, 0xEF, 0xBF, 0x00, 0x00, 0x00, 0x00,
0xDD, 0xFF, 0xEF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xEF, 0x3F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x0F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFE, 0xBF, 0x0F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x7F, 0xF7, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFD,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF8, 0xFB, 0xFD, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xDF, 0xFF,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xEE, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF,
0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF,
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF0, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE0, 0xEF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x7F, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFE, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xDF, 0x0F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x7F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE0, 0x7F, 0xFF, 0xFD, 0x00, 0x00, 0x40, 0x82, 0x00, 0x00, 0xF8,
0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x01,
0x00, 0xF0, 0xFF, 0x03, 0x00, 0xF0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF8, 0xFB, 0xFB, 0x7F, 0x03, 0x00, 0xF0, 0xFF, 0x01, 0x00, 0xE0,
0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
0xBF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x0F,
0x00, 0xB0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0xC0,
0xFD, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
0x00, 0xF8, 0xFF, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0xC0, 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x00,
0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE,
0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
0x01, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x03, 0xFC, 0x7F, 0x00, 0x00, 0x00,
0x7E, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF,
0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF,
0x07, 0xFC, 0x7D, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xFC, 0x7F, 0x00, 0x00, 0x00,
0xFC, 0xF7, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
0x7F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE,
0x3F, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x3F, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF,
0x1F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xBF, 0xFF, 0xFB, 0xFF, 0xEF, 0xFF,
0xFF, 0xFE, 0x3F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xF8,
0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00,
0xF0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF,
0x0F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xEF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00,
0xF0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xBF,
0x03, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF,
0xFF, 0xFD, 0x1F, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x0F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xE0, 0xFF,
0xFF, 0xFF, 0xF7, 0xF7, 0xFF, 0xFF, 0xBF, 0xDF, 0x1F, 0x00, 0x00, 0x00,
0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0x03, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x1F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00,
0xC0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xEF,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0xF7,
0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0xC0, 0xFE, 0x1F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xEF, 0xFB,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFD, 0xFF, 0x0F, 0x00, 0x00, 0x00,
0xC0, 0xEF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xBF, 0x7F, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xEF, 0x3F, 0x00, 0x00, 0x00,
0x80, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F,
0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF,
0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x37, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xFF, 0x37, 0x00, 0x00, 0x00, 0xF8, 0xFB, 0xFF,
0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF7, 0x00, 0x00, 0x00,
0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x1F,
0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFB,
0x7F, 0xFF, 0xFB, 0xBF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00,
0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xDF, 0x1F,
0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0xC0, 0xFD, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFB, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0F,
0x00, 0x00, 0xF0, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB,
0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFE, 0x7F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF0, 0xFF, 0x0F, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x01, 0x00,
0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x07,
0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF0, 0xFE, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x03,
0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xBF, 0xFF, 0xFB,
0xFF, 0xFF, 0xDD, 0xFF, 0x0F, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xDF, 0x08, 0x00, 0x00, 0x00,
0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xFF, 0x03,
0x00, 0x00, 0x00, 0xC0, 0xFB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x01,
0x00, 0x00, 0x00, 0xC0, 0xFB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0x3F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00,
0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEF, 0x01,
0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7C, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFB, 0x01, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0x00,
0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00,
0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00,
0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00,
0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xEE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00,
0x80, 0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00,
0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFE, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3B, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0x1F, 0x00, 0x00, 0x00, 0x00,
0x80, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00,
0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
0xC0, 0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00,
0x00, 0x00, 0x00, 0x7C, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x3F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
0xC0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00,
0x00, 0x00, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x7D, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
0xE0, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00,
0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xF7, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
0xE0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEF, 0x7F, 0x00,
0x00, 0x00, 0x00, 0xFC, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0xF0, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0,
0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xBF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x0F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xEE, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xF7, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00,
0x00, 0x00, 0x80, 0xFB, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x7F, 0x00,
0x00, 0x00, 0x80, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00,
0xDF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x6F, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80,
0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0x7F, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
0x7F, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x00, 0xC0, 0xDF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0x7B, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x6F, 0x00, 0x00, 0x00, 0xC0, 0xFB, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x00, 0x00, 0x00, 0x00, 0xF0,
0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0x3F, 0x00, 0x00, 0x00, 0x00, 0xD8, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFD, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00,
0x00, 0x00, 0xE0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0x3F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0xFF,
0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x00,
0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE,
0x3F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0x7F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x80, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xF7, 0x01,
0x00, 0x00, 0xE0, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE,
0x3F, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xE8, 0xFF,
0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xDF, 0x01,
0x00, 0x00, 0xF8, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
0x3F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFE, 0xFF,
0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0x03,
0x00, 0x00, 0xF8, 0x7E, 0xF7, 0xD5, 0x5B, 0xD5, 0x55, 0x6A, 0x00, 0xFF,
0x3F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0x03, 0x00, 0x00, 0xD8, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x7F, 0x80, 0xFF, 0x7F, 0x00, 0x00, 0x80, 0xFF, 0xDF,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFB, 0x03,
0x00, 0x00, 0xFC, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xEF,
0x7B, 0x00, 0x00, 0xE0, 0xFB, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF0, 0xFF, 0x07, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xF8, 0xFF, 0xFF,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x07,
0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0x3F, 0x00, 0xFF,
0xFF, 0x03, 0x00, 0xFE, 0xFF, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE0, 0xFF, 0x07, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xBF, 0x3F, 0x00, 0xFF, 0xFF, 0x07, 0xC0, 0xFF, 0xFF, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0D,
0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFF,
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFE, 0xFF, 0x7F, 0xFF, 0xEF, 0xFF, 0x0F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x1F,
0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0xFE,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xDF, 0x1F, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xFE, 0xDF, 0xFF, 0xF7, 0xFD, 0xFE, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F,
0x00, 0x00, 0x24, 0x00, 0x80, 0x80, 0x00, 0x01, 0x48, 0x00, 0x00, 0xFE,
0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x7F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8,
0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFB, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xEF, 0xFF, 0xFF, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0x7F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x5F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x7F,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 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, 0x70, 0xFF,
0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE0, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF,
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF,
0xEF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8,
0xEF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x0F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x1F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF0, 0xFD, 0x7F, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xFF, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7F, 0xFF, 0xBF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFE, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x17, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF0, 0xFE, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF9, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF7, 0xFF,
0x03, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xBC, 0xFF, 0xFF, 0xFF, 0x7F, 0x08, 0x00, 0x00, 0x00, 0xFD,
0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7F, 0xFF, 0xFF,
0xFF, 0x7F, 0x05, 0x48, 0xFB, 0xFF, 0xFF, 0xFF, 0xFB, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x7F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xE7,
0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0x7F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFE, 0xFF, 0xFB, 0xEF, 0xFF, 0xFF,
0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFE,
0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xE2, 0xFF, 0xFF, 0xFF, 0xFF, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xAD, 0xF7, 0x53, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x3F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0xFC,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF0, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x7C,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x7E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x7E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x3F, 0x00, 0xF0, 0x03, 0x3F, 0x7C, 0x7C, 0x00, 0xF0,
0x0F, 0xF8, 0x71, 0xFC, 0x00, 0x7E, 0x00, 0xFE, 0x00, 0x3F, 0xF0, 0x03,
0xFE, 0x01, 0xF0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x00, 0xF0,
0x03, 0x3F, 0x7C, 0xFF, 0x01, 0xFC, 0x3F, 0xF0, 0x7C, 0xFC, 0x00, 0x7E,
0xC0, 0xFF, 0x03, 0x3F, 0xF0, 0x83, 0xFF, 0x03, 0xFE, 0x0F, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x00, 0xF0, 0x03, 0x3F, 0xFC, 0xFF, 0x03, 0xFE,
0x3F, 0xF8, 0x7E, 0x7C, 0x00, 0x3F, 0xE0, 0xFF, 0x07, 0x3F, 0xF0, 0xC3,
0xFF, 0x03, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x03, 0xF0,
0x03, 0x1F, 0xFE, 0xFF, 0x03, 0xFF, 0x7F, 0xF8, 0x3F, 0xFE, 0xFF, 0x3F,
0xF0, 0xFF, 0x0F, 0x3F, 0xF0, 0xC3, 0xFF, 0x81, 0xFF, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFE, 0x0F, 0xF0, 0x03, 0x3F, 0xFE, 0xFB, 0x87, 0x3F,
0x7E, 0xF8, 0x3F, 0xFE, 0xFF, 0x3F, 0xF8, 0xE7, 0x0F, 0x1F, 0xF0, 0xE1,
0x0F, 0xC1, 0x1F, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x0F, 0xF0,
0x81, 0x1F, 0xFE, 0xF0, 0x87, 0x0F, 0x7E, 0xF8, 0x2F, 0xFE, 0xFF, 0x3F,
0xF8, 0xC3, 0x1F, 0x3F, 0xF8, 0xE1, 0x03, 0xE0, 0x0F, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0x3F, 0xF8, 0x81, 0x1F, 0x7E, 0xE0, 0xC7, 0x0F,
0x7E, 0xFC, 0x03, 0xFE, 0xFF, 0x3F, 0xFC, 0x80, 0x9F, 0x1F, 0xF8, 0xE1,
0x0F, 0xE0, 0x07, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x7F, 0xF8,
0x81, 0x1F, 0x7E, 0xE0, 0xE7, 0x07, 0x7F, 0xF8, 0x01, 0xFE, 0xFF, 0x1F,
0xFC, 0x80, 0x9F, 0x1F, 0xF8, 0xE1, 0x1F, 0xE0, 0xC3, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0x7F, 0xF8, 0x81, 0x1F, 0x3F, 0xE0, 0xC3, 0xFF,
0x3F, 0xFC, 0x01, 0x3F, 0x80, 0x1F, 0xFE, 0x80, 0x9F, 0x1F, 0xF8, 0xE0,
0x7F, 0xF0, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xF8,
0x80, 0x0F, 0x3E, 0xF0, 0xE7, 0xFF, 0x3F, 0xFC, 0x00, 0x3F, 0x80, 0x1F,
0x7E, 0xC0, 0x8F, 0x0F, 0xF8, 0x81, 0xFF, 0xF0, 0xFF, 0x0F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7E, 0xF8, 0xC0, 0x1F, 0x3F, 0xF0, 0xE3, 0xFF,
0x0F, 0xFC, 0x00, 0x3F, 0x80, 0x1F, 0x7E, 0xC0, 0xCF, 0x1F, 0xFC, 0x80,
0xFF, 0xF1, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7E, 0xFC,
0xC0, 0x0F, 0x3F, 0xF0, 0xE3, 0xFF, 0x03, 0x7C, 0x00, 0x3F, 0x80, 0x0F,
0x7E, 0xC0, 0x8F, 0x0F, 0xFC, 0x00, 0xFE, 0xF1, 0xFF, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x7E, 0xFC, 0xE0, 0x0F, 0x3F, 0xF8, 0xE3, 0x03,
0x00, 0x7C, 0x00, 0x1F, 0x80, 0x0F, 0x7E, 0xE0, 0xCF, 0x0F, 0xFC, 0x00,
0xF8, 0xF1, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x01, 0x3F, 0xFC,
0xE0, 0x0F, 0x1F, 0xFC, 0xE1, 0x07, 0x00, 0x7E, 0x80, 0x1F, 0xC0, 0x0F,
0xFE, 0xE0, 0xC7, 0x0F, 0xFE, 0x00, 0xF8, 0xF1, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0x3F, 0xFC, 0xF9, 0x0F, 0x7F, 0xFF, 0xE0, 0x9F,
0x0E, 0x7E, 0x80, 0x1F, 0xC0, 0x0F, 0xFC, 0xFB, 0xC7, 0x9F, 0xFF, 0x30,
0xFC, 0xF1, 0x6F, 0x07, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x1F, 0xFC,
0xFF, 0x87, 0xFF, 0xFF, 0xC0, 0xFF, 0x0F, 0x7E, 0x80, 0x1F, 0xC0, 0x0F,
0xFC, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xFF, 0xE0, 0xFF, 0x0F, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xFF, 0x1F, 0xFC, 0xFF, 0x87, 0xFF, 0x7F, 0x80, 0xFF,
0x1F, 0x3E, 0x80, 0x1F, 0xC0, 0x07, 0xF8, 0xFF, 0x81, 0xFF, 0x7F, 0xF8,
0xFF, 0xC0, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x07, 0xF8,
0xCF, 0x87, 0xFF, 0x1F, 0x80, 0xFF, 0x0F, 0x3F, 0x80, 0x0F, 0xE0, 0x0F,
0xF0, 0x7F, 0x80, 0xFF, 0x7C, 0xFC, 0x3F, 0xC0, 0xFF, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFF, 0x01, 0xF0, 0xC3, 0x87, 0xFF, 0x0F, 0x00, 0xFE,
0x03, 0x3F, 0xC0, 0x1F, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x3F, 0x7C, 0xF0,
0x0F, 0x00, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x0F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 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, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 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, 0xC0, 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, 0xE0, 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,
};