From ddc4a109af3ef867ee9d43401616fefb7b06b3d3 Mon Sep 17 00:00:00 2001 From: Sebastian Nieto Date: Wed, 14 Oct 2026 21:35:22 -0300 Subject: [PATCH] feat(ui,backlight): calibracion adaptativa de LDR, tipografia antialiasing y texto simplificado - Calibracion de curva de brillo por LDR: noche (7%), luz ambiente (25%), luz directa/sol (100%) - Filtrado progresivo IIR sobre LDR para eliminar parpadeo y transiciones bruscas - Soporte completo de caracteres ASCII y signos en fuente antialiasing Latin_Sans_Bold_26 - Menu de brillo con renderizado suave de titulos y eliminacion de porcentajes/parentesis redundantes - Optimizacion en renderizado DSEG7 e indicador de unidad de temperatura --- sketch/obd2_gauge/Latin_Sans_Bold_26.h | 1750 +++++++++++++++--------- sketch/obd2_gauge/cluster_screen.h | 270 ++-- sketch/obd2_gauge/config.h | 808 +++++++---- sketch/obd2_gauge/kmh_aa_data.h | 44 + sketch/obd2_gauge/meter.h | 125 +- sketch/obd2_gauge/rainbow_text.h | 18 +- sketch/obd2_gauge/tri_temp.h | 116 +- 7 files changed, 1911 insertions(+), 1220 deletions(-) diff --git a/sketch/obd2_gauge/Latin_Sans_Bold_26.h b/sketch/obd2_gauge/Latin_Sans_Bold_26.h index b595105..2455dd4 100644 --- a/sketch/obd2_gauge/Latin_Sans_Bold_26.h +++ b/sketch/obd2_gauge/Latin_Sans_Bold_26.h @@ -3,9 +3,30 @@ // Antialiased Latin Sans Bold 26pt (VLW font for TFT_eSPI) const uint8_t Latin_Sans_Bold_26[] PROGMEM = { - 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, + 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x19, + 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1B, + 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, + 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, @@ -30,52 +51,73 @@ const uint8_t Latin_Sans_Bold_26[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, + 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x11, + 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x17, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, - 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x19, - 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, - 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, + 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, + 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x12, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, + 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, + 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x1A, + 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x07, + 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x10, @@ -121,7 +163,14 @@ const uint8_t Latin_Sans_Bold_26[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x0D, - 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, + 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, + 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x1A, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x0B, + 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x01, @@ -132,178 +181,441 @@ const uint8_t Latin_Sans_Bold_26[] PROGMEM = { 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xA0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0F, - 0x3C, 0xFF, 0xFF, 0xFF, 0x70, 0x3C, 0xFF, 0xFF, 0xFF, 0x70, 0x3C, 0xFF, 0xFF, 0xFF, 0x70, 0x3C, - 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x53, 0xFF, - 0xFF, 0xB2, 0x00, 0x00, 0x00, 0x83, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0xB2, 0xFF, 0xFF, 0x55, - 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x26, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xF5, 0x02, 0x00, 0x00, - 0x40, 0xFF, 0xFF, 0xCA, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0x9B, 0x00, 0x00, 0x00, 0x9F, 0xFF, - 0xFF, 0x6D, 0x00, 0x00, 0x00, 0xCF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x04, 0xF9, 0xFF, 0xFF, 0x10, - 0x00, 0x00, 0x2D, 0xFF, 0xFF, 0xE2, 0x00, 0x00, 0x00, 0x5D, 0xFF, 0xFF, 0xB3, 0x00, 0x00, 0x00, - 0x8C, 0xFF, 0xFF, 0x85, 0x00, 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0xEB, 0xFF, - 0xFF, 0x28, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xF7, 0x03, 0x00, 0x00, 0x4A, 0xFF, 0xFF, 0xCB, 0x00, - 0x00, 0x00, 0x79, 0xFF, 0xFF, 0x9D, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x67, 0xC5, 0xE7, 0xF8, 0xE0, 0x9C, 0x27, 0x00, 0x00, 0x00, 0x00, 0x11, 0xD0, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x4A, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, 0xFF, 0xEC, - 0xD9, 0xFC, 0xFF, 0xFF, 0xF2, 0x16, 0x00, 0x25, 0xFE, 0xFF, 0xFF, 0x99, 0x03, 0x00, 0x37, 0xF9, - 0xFF, 0xFF, 0x87, 0x00, 0x78, 0xFF, 0xFF, 0xFC, 0x10, 0x00, 0x00, 0x00, 0xA7, 0xFF, 0xFF, 0xDA, - 0x00, 0xB1, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0xFF, 0xFF, 0x16, 0xD5, 0xFF, - 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x3C, 0xEB, 0xFF, 0xFF, 0x9F, 0x00, - 0x00, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0xFF, 0x52, 0xF5, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0x00, - 0x32, 0xFF, 0xFF, 0xFF, 0x5E, 0xF3, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0x00, 0x34, 0xFF, 0xFF, - 0xFF, 0x5D, 0xE7, 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0x52, 0xD0, - 0xFF, 0xFF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0xFF, 0xFF, 0x39, 0xA7, 0xFF, 0xFF, 0xD1, - 0x00, 0x00, 0x00, 0x00, 0x6E, 0xFF, 0xFF, 0xFF, 0x10, 0x6A, 0xFF, 0xFF, 0xFD, 0x14, 0x00, 0x00, - 0x00, 0xAF, 0xFF, 0xFF, 0xCE, 0x00, 0x19, 0xF9, 0xFF, 0xFF, 0x9D, 0x04, 0x00, 0x46, 0xFD, 0xFF, - 0xFF, 0x75, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0xED, 0xDE, 0xFE, 0xFF, 0xFF, 0xE3, 0x0A, 0x00, - 0x00, 0x06, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x32, 0x00, 0x00, 0x00, 0x00, 0x02, - 0x67, 0xC5, 0xEF, 0xF7, 0xDB, 0x8F, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x74, 0xF9, - 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, - 0x00, 0x31, 0xFF, 0xFF, 0xF6, 0x6C, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x38, 0xFF, - 0xCA, 0x27, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x33, 0x81, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0x67, 0xE9, 0xFF, 0xFF, 0x70, 0xE1, 0xFF, 0xFF, 0x6A, + 0xDA, 0xFF, 0xFF, 0x63, 0xD3, 0xFF, 0xFF, 0x5C, 0xCB, 0xFF, 0xFF, 0x55, 0xC4, 0xFF, 0xFF, 0x4E, + 0xBD, 0xFF, 0xFF, 0x46, 0xB8, 0xFF, 0xFF, 0x3E, 0xB2, 0xFF, 0xFF, 0x35, 0xAB, 0xFF, 0xFF, 0x2D, + 0xA3, 0xFF, 0xFF, 0x25, 0x90, 0xFF, 0xF9, 0x14, 0x00, 0x00, 0x00, 0x00, 0x24, 0x60, 0x59, 0x09, + 0xD7, 0xFF, 0xFF, 0x61, 0xEE, 0xFF, 0xFF, 0x76, 0xA1, 0xFC, 0xEA, 0x3A, 0x72, 0xF8, 0xF5, 0x62, + 0x00, 0x00, 0x00, 0x62, 0xF6, 0xF8, 0x73, 0xCB, 0xFF, 0xFF, 0xBB, 0x00, 0x00, 0x00, 0xB7, 0xFF, + 0xFF, 0xCF, 0xCB, 0xFF, 0xFF, 0xBB, 0x00, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xCF, 0xCB, 0xFF, 0xFF, + 0xBB, 0x00, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xCF, 0xCB, 0xFF, 0xFF, 0xBB, 0x00, 0x00, 0x00, 0xB7, + 0xFF, 0xFF, 0xCF, 0xCB, 0xFF, 0xFF, 0xBB, 0x00, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xCF, 0x74, 0xF9, + 0xF6, 0x64, 0x00, 0x00, 0x00, 0x64, 0xF6, 0xF8, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0xCB, 0xA2, 0x00, 0x00, 0x00, 0x05, 0xC3, 0xAD, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFF, 0xEA, 0x00, 0x00, 0x00, 0x46, 0xFF, + 0xF4, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xFF, + 0xAC, 0x00, 0x00, 0x00, 0x8D, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0x67, 0x00, 0x00, 0x00, 0xD4, 0xFF, 0x73, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xFF, 0xFF, 0x22, 0x00, 0x00, 0x1C, + 0xFF, 0xFF, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, + 0xFF, 0xDA, 0x00, 0x00, 0x00, 0x63, 0xFF, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xB9, 0xFF, 0x93, 0x00, 0x00, 0x00, 0xAA, 0xFF, 0x9F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x16, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2F, 0xF7, 0xFF, 0x6F, 0x2B, 0x2B, + 0x2C, 0xEE, 0xFF, 0x79, 0x2B, 0x2B, 0x2B, 0x0E, 0x00, 0x43, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x19, 0x32, + 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xD9, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE7, 0xFF, 0x5D, 0x00, + 0x00, 0x00, 0xDD, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x46, 0xFF, 0xF6, 0x0D, 0x00, 0x00, 0x38, 0xFF, 0xFC, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0xFF, 0xA8, 0x00, 0x00, 0x00, 0x92, 0xFF, 0xB8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD6, 0x0F, 0x45, 0xFE, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF6, 0x19, 0x00, 0x1A, 0x2F, 0x2F, 0x2F, 0xA6, 0xFF, 0xC4, 0x2F, 0x2F, 0x2F, 0x99, 0xFF, + 0xD1, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xFF, + 0x76, 0x00, 0x00, 0x00, 0xC3, 0xFF, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1B, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x0F, 0xFB, 0xFF, 0x3F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xFF, 0xE7, 0x01, 0x00, 0x00, 0x52, + 0xFF, 0xF3, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA7, + 0xFF, 0xA1, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xEB, 0xFF, 0x5A, 0x00, 0x00, 0x00, 0xDD, 0xFF, 0x6A, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xFF, 0xFE, 0x15, 0x00, 0x00, + 0x1A, 0xFF, 0xFF, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0xD5, 0x98, 0x00, 0x00, 0x00, 0x05, 0xCD, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xD5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x04, 0x56, 0x96, 0xF1, 0xFF, 0xBD, 0x7F, 0x29, 0x00, 0x00, 0x00, 0x19, 0xC5, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x09, 0x00, 0xB3, 0xFF, 0xFF, 0xEE, 0xEE, 0xFF, 0xF3, 0xFF, + 0xFF, 0xFF, 0x1F, 0x2F, 0xFF, 0xFF, 0xE7, 0x12, 0xCB, 0xFF, 0x18, 0x42, 0xBD, 0xF2, 0x01, 0x56, + 0xFF, 0xFF, 0xAC, 0x00, 0xCB, 0xFF, 0x13, 0x00, 0x01, 0x35, 0x00, 0x5A, 0xFF, 0xFF, 0xE9, 0x09, + 0xCB, 0xFF, 0x13, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0xDA, 0xE6, 0xFF, 0x13, 0x00, + 0x00, 0x00, 0x00, 0x01, 0xC6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x2D, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x68, 0x00, 0x00, 0x00, 0x00, 0x22, 0xC1, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xDC, 0xFF, 0xFA, 0xFF, + 0xFF, 0xF1, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFF, 0x41, 0xE4, 0xFF, 0xFF, 0x69, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFF, 0x13, 0x84, 0xFF, 0xFF, 0x91, 0x1B, 0x30, 0x00, 0x00, 0x00, + 0xCB, 0xFF, 0x13, 0x63, 0xFF, 0xFF, 0x90, 0x7B, 0xFB, 0x86, 0x0F, 0x00, 0xCB, 0xFF, 0x16, 0xB1, + 0xFF, 0xFF, 0x6A, 0xAA, 0xFF, 0xFF, 0xFB, 0xBF, 0xE9, 0xFF, 0xDA, 0xFF, 0xFF, 0xEF, 0x0F, 0x49, + 0xE1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x59, 0x00, 0x00, 0x06, 0x63, 0xAA, 0xE4, + 0xFF, 0xFF, 0xEB, 0xA6, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xE0, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x8B, 0xB9, 0xD3, 0xB8, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xC3, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xEC, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xF1, 0xFF, + 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xFF, 0xFF, 0x5D, 0x20, 0xBE, 0xFF, 0xFF, 0x58, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xC7, 0xFF, 0xDE, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x28, 0xFF, + 0xFF, 0xDF, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xFF, + 0xFB, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0xFF, 0xFF, 0xC8, 0x00, 0x00, 0x0D, 0xFF, 0xFF, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFD, 0xFF, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x64, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x12, 0xE4, + 0xFF, 0xBD, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xFF, 0xFF, 0xC8, 0x00, 0x00, 0x0D, + 0xFF, 0xFF, 0xDB, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xFF, 0xEB, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xDE, 0x00, 0x00, 0x3B, 0xFF, 0xFF, 0xB9, 0x00, 0x00, 0x00, 0x69, + 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCB, 0xFF, 0xFF, 0x5B, + 0x1F, 0xBD, 0xFF, 0xFF, 0x56, 0x00, 0x00, 0x2B, 0xF6, 0xFF, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x03, 0x00, 0x08, + 0xD2, 0xFF, 0xD0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, + 0x97, 0xCC, 0xD3, 0xA6, 0x66, 0x01, 0x00, 0x00, 0x94, 0xFF, 0xF5, 0x29, 0x00, 0x00, 0x00, 0x01, + 0x17, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4E, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2E, 0xC0, 0xF5, 0xFF, 0xFD, 0xBD, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A, 0xEC, 0xFF, 0xAB, 0x00, 0x00, 0x32, 0xF9, + 0xFF, 0xFD, 0xDA, 0xFF, 0xFF, 0xE5, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xBD, 0xFF, 0xE1, 0x10, 0x00, 0x00, 0xB9, 0xFF, 0xFF, 0x4F, 0x00, 0x6F, 0xFF, 0xFF, 0x98, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFF, 0xFC, 0x3B, 0x00, 0x00, 0x06, + 0xFE, 0xFF, 0xFF, 0x06, 0x00, 0x07, 0xFA, 0xFF, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x37, 0xFB, 0xFF, 0x7D, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xDD, + 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xDD, 0xFF, 0xC1, 0x03, 0x00, 0x00, + 0x00, 0x39, 0xFF, 0xFF, 0xE5, 0x00, 0x00, 0x00, 0xD6, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xA3, 0xFF, 0xEE, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xF6, 0x00, 0x00, + 0x00, 0xE3, 0xFF, 0xFE, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xFF, 0xFF, 0x51, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x08, 0xF3, 0xFF, 0xFF, 0x0C, 0x00, 0x14, 0xFE, 0xFF, 0xE1, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x23, 0xF2, 0xFF, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, 0xFF, 0xFF, + 0x85, 0x19, 0xA0, 0xFF, 0xFF, 0x7D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xFF, 0xD4, 0x09, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x11, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5D, 0xC7, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0E, 0x86, 0xC7, 0xD6, 0xAE, 0x77, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xB8, + 0xEB, 0xE1, 0xA9, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0xFF, 0xFF, 0xF1, 0xA1, 0xFE, 0xF8, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x4F, 0xFF, 0xFF, 0xA0, 0x06, 0x00, 0xD7, 0xFF, 0xEA, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0x21, 0x00, 0x00, 0xB1, 0xFF, 0xFF, 0x36, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0x12, 0x00, 0x00, 0xD3, 0xFF, + 0xFE, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xFF, 0xFF, 0x3A, 0x00, + 0x57, 0xFF, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, + 0xFF, 0x88, 0x73, 0xFC, 0xFF, 0xC0, 0x0A, 0x00, 0x00, 0x00, 0x2E, 0x48, 0x42, 0x00, 0x00, 0x00, + 0x00, 0x60, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xB2, 0x09, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xE6, + 0x00, 0x00, 0x00, 0x00, 0x0D, 0xF5, 0xFF, 0xFF, 0xFC, 0x7A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x25, + 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x08, 0x8C, 0xFD, 0xFF, 0xFF, 0xD5, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x8F, 0xFF, 0xFD, 0x21, 0x00, 0x00, 0x30, 0xD7, 0xFF, 0xE0, 0xE5, 0xFF, 0xFF, 0x90, + 0x00, 0x00, 0x00, 0x00, 0x25, 0xF9, 0xFF, 0x9A, 0x00, 0x00, 0x1B, 0xEA, 0xFF, 0xF8, 0x1F, 0x42, + 0xFE, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x02, 0xBC, 0xFF, 0xF0, 0x16, 0x00, 0x00, 0x7D, 0xFF, 0xFF, + 0xCA, 0x00, 0x00, 0x8A, 0xFF, 0xFF, 0xEE, 0x2A, 0x00, 0x89, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, + 0xBD, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0x04, 0xB4, 0xFF, 0xFF, 0xE3, 0x94, 0xFF, 0xFF, 0x89, 0x00, + 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFA, 0x24, 0x00, 0x00, 0x09, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xB1, 0x01, 0x00, 0x00, 0x00, 0x09, 0x46, 0xFE, 0xFF, 0xFF, 0xEA, 0xA3, 0xAB, 0xE0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0xC1, 0x9D, 0xA5, 0xD3, 0xF6, 0x00, 0x7B, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC4, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x00, 0x00, 0x33, 0xAA, + 0xD9, 0xF8, 0xE3, 0xC4, 0x83, 0x31, 0x00, 0x02, 0x55, 0xA4, 0xCE, 0xF6, 0xFF, 0xFF, 0xD4, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x11, + 0x0D, 0x00, 0x72, 0xF8, 0xF5, 0x62, 0xCB, 0xFF, 0xFF, 0xBB, 0xCB, 0xFF, 0xFF, 0xBB, 0xCB, 0xFF, + 0xFF, 0xBB, 0xCB, 0xFF, 0xFF, 0xBB, 0xCB, 0xFF, 0xFF, 0xBB, 0x74, 0xF9, 0xF6, 0x64, 0x00, 0x00, + 0x00, 0x00, 0x02, 0xA4, 0xFD, 0x58, 0x00, 0x00, 0x00, 0x00, 0x95, 0xFF, 0xC0, 0x02, 0x00, 0x00, + 0x00, 0x77, 0xFF, 0xF7, 0x1F, 0x00, 0x00, 0x00, 0x24, 0xFB, 0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, + 0xA8, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x31, 0xFE, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x90, + 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x23, 0xFF, + 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, 0x64, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x96, 0xFF, 0xFF, 0xD4, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xFF, + 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xFF, + 0xFF, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xFF, 0xFF, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xFF, + 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xFB, 0x02, 0x00, 0x00, 0x00, 0x27, 0xFF, + 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x01, 0xEE, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x9D, + 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0xFF, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x35, 0xFC, 0xFF, 0x9B, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x85, 0xFF, 0xF7, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0xB0, 0xFF, 0xBE, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x08, 0xB1, 0xFE, 0x57, 0x42, 0xFE, 0xBB, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAF, + 0xFF, 0xB8, 0x05, 0x00, 0x00, 0x00, 0x00, 0x18, 0xF0, 0xFF, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8C, 0xFF, 0xFE, 0x41, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFC, 0xFF, 0xC3, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xB9, 0xFF, 0xFF, 0x32, 0x00, 0x00, 0x00, 0x00, 0x71, 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x00, + 0x00, 0x38, 0xFF, 0xFF, 0xF8, 0x09, 0x00, 0x00, 0x00, 0x0B, 0xFE, 0xFF, 0xFF, 0x3A, 0x00, 0x00, + 0x00, 0x00, 0xE8, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFF, 0xFF, 0xA3, 0x00, 0x00, + 0x00, 0x00, 0xBD, 0xFF, 0xFF, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xFF, 0xFF, 0xCB, 0x00, 0x00, + 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0xD6, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xFF, 0xFF, 0xC4, 0x00, 0x00, + 0x00, 0x00, 0xBE, 0xFF, 0xFF, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xFF, 0xFF, 0x97, 0x00, 0x00, + 0x00, 0x00, 0xE8, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x08, 0xFE, 0xFF, 0xFF, 0x3B, 0x00, 0x00, + 0x00, 0x36, 0xFF, 0xFF, 0xEE, 0x03, 0x00, 0x00, 0x00, 0x6D, 0xFF, 0xFF, 0xA8, 0x00, 0x00, 0x00, + 0x00, 0xB6, 0xFF, 0xFF, 0x49, 0x00, 0x00, 0x00, 0x13, 0xF8, 0xFF, 0xC1, 0x00, 0x00, 0x00, 0x00, + 0x79, 0xFF, 0xFF, 0x39, 0x00, 0x00, 0x00, 0x11, 0xED, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0xA8, + 0xFF, 0xAE, 0x02, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xB9, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0xBE, 0xDD, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0xFF, + 0xFF, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x67, 0x97, 0x0D, 0x01, 0xF1, 0xFF, 0x35, 0x00, 0x67, + 0x8C, 0x09, 0x1D, 0xFD, 0xFF, 0xCB, 0x14, 0xBD, 0xF8, 0x09, 0x98, 0xFF, 0xFF, 0x5D, 0x0E, 0xCD, + 0xFF, 0xFF, 0xD7, 0xA5, 0xCE, 0xAB, 0xFF, 0xFF, 0xEB, 0x2F, 0x00, 0x00, 0x32, 0x83, 0xD5, 0xFF, + 0xFF, 0xE8, 0x98, 0x45, 0x05, 0x00, 0x00, 0x00, 0x2A, 0x7B, 0xCC, 0xFE, 0xFF, 0xE2, 0x91, 0x41, + 0x04, 0x00, 0x06, 0xCC, 0xFF, 0xFF, 0xD8, 0xA5, 0xCF, 0xB0, 0xFF, 0xFF, 0xE7, 0x33, 0x1C, 0xFE, + 0xFF, 0xCA, 0x14, 0xBC, 0xF8, 0x09, 0x9F, 0xFF, 0xFF, 0x5F, 0x00, 0x6B, 0x8E, 0x0C, 0x01, 0xF0, + 0xFF, 0x34, 0x01, 0x79, 0x91, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x26, 0xFF, 0xFF, 0x6A, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xC3, 0xDB, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xDD, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x35, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, + 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x37, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, + 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xE9, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF3, 0x5E, 0x45, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x1A, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0xF9, + 0xFF, 0x5D, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x37, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, + 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0x33, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, + 0xDB, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x63, 0x63, 0x32, 0xBE, 0xFF, + 0xFF, 0xA6, 0xBF, 0xFF, 0xFF, 0xA7, 0xAF, 0xFF, 0xFF, 0x97, 0x0D, 0xF8, 0xFF, 0x3B, 0x58, 0xFF, + 0xA9, 0x00, 0x9B, 0xEF, 0x20, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0xFC, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xA0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA0, 0x17, 0x18, 0x18, 0x18, 0x18, + 0x18, 0x0F, 0x3C, 0xFF, 0xFF, 0xFF, 0x70, 0x3C, 0xFF, 0xFF, 0xFF, 0x70, 0x3C, 0xFF, 0xFF, 0xFF, + 0x70, 0x3C, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, + 0x53, 0xFF, 0xFF, 0xB2, 0x00, 0x00, 0x00, 0x83, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0xB2, 0xFF, + 0xFF, 0x55, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x26, 0x00, 0x00, 0x11, 0xFF, 0xFF, 0xF5, 0x02, + 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xCA, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0x9B, 0x00, 0x00, 0x00, + 0x9F, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0xCF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x04, 0xF9, 0xFF, + 0xFF, 0x10, 0x00, 0x00, 0x2D, 0xFF, 0xFF, 0xE2, 0x00, 0x00, 0x00, 0x5D, 0xFF, 0xFF, 0xB3, 0x00, + 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0x85, 0x00, 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0x56, 0x00, 0x00, 0x00, + 0xEB, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x1A, 0xFF, 0xFF, 0xF7, 0x03, 0x00, 0x00, 0x4A, 0xFF, 0xFF, + 0xCB, 0x00, 0x00, 0x00, 0x79, 0xFF, 0xFF, 0x9D, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, 0x6F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x08, 0x67, 0xC5, 0xE7, 0xF8, 0xE0, 0x9C, 0x27, 0x00, 0x00, 0x00, 0x00, + 0x11, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x4A, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, + 0xFF, 0xEC, 0xD9, 0xFC, 0xFF, 0xFF, 0xF2, 0x16, 0x00, 0x25, 0xFE, 0xFF, 0xFF, 0x99, 0x03, 0x00, + 0x37, 0xF9, 0xFF, 0xFF, 0x87, 0x00, 0x78, 0xFF, 0xFF, 0xFC, 0x10, 0x00, 0x00, 0x00, 0xA7, 0xFF, + 0xFF, 0xDA, 0x00, 0xB1, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x69, 0xFF, 0xFF, 0xFF, 0x16, + 0xD5, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x3C, 0xEB, 0xFF, 0xFF, + 0x9F, 0x00, 0x00, 0x00, 0x00, 0x38, 0xFF, 0xFF, 0xFF, 0x52, 0xF5, 0xFF, 0xFF, 0x99, 0x00, 0x00, + 0x00, 0x00, 0x32, 0xFF, 0xFF, 0xFF, 0x5E, 0xF3, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0x00, 0x34, + 0xFF, 0xFF, 0xFF, 0x5D, 0xE7, 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, + 0x52, 0xD0, 0xFF, 0xFF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0xFF, 0xFF, 0x39, 0xA7, 0xFF, + 0xFF, 0xD1, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xFF, 0xFF, 0xFF, 0x10, 0x6A, 0xFF, 0xFF, 0xFD, 0x14, + 0x00, 0x00, 0x00, 0xAF, 0xFF, 0xFF, 0xCE, 0x00, 0x19, 0xF9, 0xFF, 0xFF, 0x9D, 0x04, 0x00, 0x46, + 0xFD, 0xFF, 0xFF, 0x75, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0xED, 0xDE, 0xFE, 0xFF, 0xFF, 0xE3, + 0x0A, 0x00, 0x00, 0x06, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x32, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x67, 0xC5, 0xEF, 0xF7, 0xDB, 0x8F, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x74, 0xF9, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xBC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xED, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA4, 0x00, + 0x00, 0x00, 0x00, 0x31, 0xFF, 0xFF, 0xF6, 0x6C, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, + 0x38, 0xFF, 0xCA, 0x27, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x33, 0x81, 0x04, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, + 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, - 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xA8, 0xA8, - 0xA8, 0xA8, 0xFA, 0xFF, 0xFF, 0xE0, 0xA8, 0xA8, 0xA8, 0x7B, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0x28, 0x96, 0xD8, 0xF5, 0xF9, 0xE6, 0xB4, 0x58, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x5F, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, 0x07, 0x00, - 0x00, 0x2E, 0xFB, 0xFF, 0xFF, 0xFF, 0xEF, 0xE4, 0xFE, 0xFF, 0xFF, 0xFF, 0x89, 0x00, 0x00, 0xA1, - 0xFF, 0xFF, 0xFF, 0x6B, 0x01, 0x00, 0x2E, 0xEF, 0xFF, 0xFF, 0xEC, 0x02, 0x00, 0xBA, 0xE4, 0xF1, - 0xC7, 0x00, 0x00, 0x00, 0x00, 0x95, 0xFF, 0xFF, 0xFF, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x09, 0xE1, 0xFF, 0xFF, 0xE3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xA0, 0xFF, - 0xFF, 0xFF, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9E, 0xFF, 0xFF, 0xFF, 0xCD, - 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xBB, 0xFF, 0xFF, 0xFF, 0xD1, 0x18, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0xD6, 0xFF, 0xFF, 0xFF, 0xC1, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x26, 0xE6, 0xFF, 0xFF, 0xFF, 0x92, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xE4, - 0xFF, 0xFF, 0xFB, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCB, 0xFF, 0xFF, 0xF9, - 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF5, 0xFF, 0xFF, 0xFF, 0xF2, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0x65, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x6C, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, - 0x00, 0x00, 0x00, 0x2B, 0x97, 0xD8, 0xF5, 0xF9, 0xE6, 0xB5, 0x5D, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x6E, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x0E, 0x00, 0x00, 0x48, 0xFF, 0xFF, - 0xFF, 0xFF, 0xEB, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0x00, 0x00, 0xC6, 0xFF, 0xFF, 0xF8, 0x4C, - 0x00, 0x00, 0x3A, 0xF3, 0xFF, 0xFF, 0xF1, 0x00, 0x05, 0xC8, 0xDD, 0xEF, 0x99, 0x00, 0x00, 0x00, - 0x00, 0x9F, 0xFF, 0xFF, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, - 0xFF, 0xFF, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x82, 0xFF, 0xFF, 0xFF, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x63, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xCE, 0x53, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xB6, 0xE4, 0xFB, 0xFF, 0xFF, 0xFF, 0xD5, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x4E, 0xE9, 0xFF, 0xFF, 0xE6, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x5B, 0xFF, 0xFF, 0xFF, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x2F, 0xFF, 0xFF, 0xFF, 0x7D, 0x3D, 0xC6, 0xDB, 0xF0, 0x66, 0x00, 0x00, 0x00, 0x00, 0x56, - 0xFF, 0xFF, 0xFF, 0x6F, 0x1C, 0xFC, 0xFF, 0xFF, 0xEA, 0x41, 0x00, 0x00, 0x31, 0xDD, 0xFF, 0xFF, - 0xFF, 0x38, 0x00, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xC3, 0x00, - 0x00, 0x0A, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x19, 0x00, 0x00, 0x00, - 0x00, 0x4B, 0xA8, 0xDE, 0xF7, 0xFA, 0xE9, 0xBA, 0x66, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x5D, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x13, 0xEB, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xFF, - 0xFF, 0xDE, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDB, 0xFF, 0xE9, - 0x7C, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xFF, 0x61, 0x75, - 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFA, 0xFF, 0xC0, 0x00, 0x78, 0xFF, - 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC7, 0xFF, 0xF8, 0x27, 0x00, 0x78, 0xFF, 0xFF, - 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, - 0x00, 0x00, 0x00, 0x00, 0x1B, 0xF1, 0xFF, 0xD7, 0x06, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, - 0x00, 0x00, 0x00, 0xAF, 0xFF, 0xFE, 0x3E, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, 0x00, - 0x00, 0x4F, 0xFF, 0xFF, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, - 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x9C, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x66, 0xA8, - 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xD1, 0xFF, 0xFF, 0xFA, 0xA8, 0xA8, 0x37, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x37, 0xFF, 0xFF, 0xFF, 0xB7, 0xA8, 0xA8, 0xA8, 0xA8, - 0xA8, 0xA8, 0x76, 0x00, 0x00, 0x47, 0xFF, 0xFF, 0xFF, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x56, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x66, 0xFF, 0xFF, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x75, - 0xFF, 0xFF, 0xEE, 0x47, 0xBD, 0xF2, 0xF7, 0xD7, 0x8A, 0x15, 0x00, 0x00, 0x00, 0x85, 0xFF, 0xFF, - 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x2B, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF5, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x05, 0x00, 0xA4, 0xFF, 0xFF, 0xFC, 0x6B, 0x05, 0x00, - 0x2F, 0xD9, 0xFF, 0xFF, 0xFF, 0x59, 0x00, 0x05, 0x08, 0x08, 0x06, 0x00, 0x00, 0x00, 0x00, 0x3F, - 0xFF, 0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFB, 0xFF, - 0xFF, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFD, 0xFF, 0xFF, 0xAD, - 0x15, 0xC2, 0xD7, 0xED, 0x90, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0xDD, - 0xFF, 0xFF, 0xF8, 0x51, 0x00, 0x00, 0x2B, 0xD9, 0xFF, 0xFF, 0xFF, 0x35, 0x00, 0x5E, 0xFF, 0xFF, - 0xFF, 0xFF, 0xEA, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x84, 0xFE, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x09, 0x00, 0x00, 0x00, 0x00, 0x36, 0x9F, 0xDB, 0xF7, 0xF9, - 0xE3, 0xAC, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xA7, 0xE4, 0xFA, 0xEE, 0xBC, - 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8D, - 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xF7, 0xD9, 0xFA, 0xFF, 0xFF, 0xFF, 0x45, 0x00, - 0x00, 0x0B, 0xE9, 0xFF, 0xFF, 0xBD, 0x12, 0x00, 0x25, 0xEC, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x59, - 0xFF, 0xFF, 0xF6, 0x17, 0x00, 0x00, 0x00, 0x7C, 0xE0, 0xB8, 0x8B, 0x00, 0x00, 0xA4, 0xFF, 0xFF, - 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0x86, 0x28, - 0xA6, 0xE9, 0xF9, 0xDE, 0x8F, 0x15, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xAA, 0xF6, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xE1, 0x1F, 0x00, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0xAE, 0xE6, 0xFF, - 0xFF, 0xFF, 0xBD, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x0E, 0xC8, 0xFF, 0xFF, - 0xFF, 0x2C, 0x00, 0xFC, 0xFF, 0xFF, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x66, - 0x00, 0xEA, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0xBE, - 0xFF, 0xFF, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x23, 0xFF, 0xFF, 0xFF, 0x75, 0x00, 0x7F, 0xFF, 0xFF, - 0xFD, 0x24, 0x00, 0x00, 0x00, 0x5A, 0xFF, 0xFF, 0xFF, 0x53, 0x00, 0x24, 0xFC, 0xFF, 0xFF, 0xBA, - 0x0C, 0x00, 0x1F, 0xDB, 0xFF, 0xFF, 0xF7, 0x12, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xF0, 0xD3, - 0xFA, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x05, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xAC, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xB6, 0xE9, 0xFB, 0xEC, 0xB9, 0x57, 0x01, - 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0xE0, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0xD2, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x61, 0xFF, 0xFF, 0xDD, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xF0, 0xFF, - 0xFF, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xAD, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xFF, 0xFF, 0xF6, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0E, 0xE6, 0xFF, 0xFF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, - 0xFF, 0xFF, 0xF2, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF7, 0xFF, 0xFF, 0x82, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xFF, 0xFF, 0xF7, 0x11, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0xED, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, - 0xFF, 0xF8, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xCA, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF, 0x9E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x2F, 0xFF, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x37, - 0x9F, 0xDA, 0xF5, 0xFA, 0xEA, 0xBF, 0x70, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x20, 0x00, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0xF1, 0x9B, 0x8B, - 0xCA, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0x34, 0x00, 0x00, 0x01, 0xC2, - 0xFF, 0xFF, 0xFF, 0x19, 0x00, 0xB6, 0xFF, 0xFF, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, - 0xFF, 0x2F, 0x00, 0x8E, 0xFF, 0xFF, 0xFB, 0x0A, 0x00, 0x00, 0x00, 0x93, 0xFF, 0xFF, 0xFB, 0x0C, - 0x00, 0x1F, 0xF5, 0xFF, 0xFF, 0xA2, 0x1B, 0x0A, 0x49, 0xF2, 0xFF, 0xFF, 0x8E, 0x00, 0x00, 0x00, - 0x39, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x8C, 0x03, 0x00, 0x00, 0x00, 0x08, 0x64, - 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x34, 0x00, 0x00, 0x00, 0x14, 0xC9, 0xFF, 0xFF, 0xEF, - 0x9C, 0x8D, 0xC7, 0xFF, 0xFF, 0xFC, 0x6B, 0x00, 0x00, 0x9B, 0xFF, 0xFF, 0xF3, 0x20, 0x00, 0x00, - 0x00, 0x96, 0xFF, 0xFF, 0xFA, 0x26, 0x03, 0xF9, 0xFF, 0xFF, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x27, - 0xFF, 0xFF, 0xFF, 0x7C, 0x22, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, - 0xFF, 0x9E, 0x19, 0xFF, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x93, - 0x00, 0xE0, 0xFF, 0xFF, 0xF4, 0x20, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xFF, 0xFF, 0x5A, 0x00, 0x6B, - 0xFF, 0xFF, 0xFF, 0xF1, 0xA1, 0x8F, 0xC5, 0xFF, 0xFF, 0xFF, 0xDC, 0x07, 0x00, 0x00, 0x8F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x28, 0x00, 0x00, 0x00, 0x00, 0x39, 0x9E, 0xD9, - 0xF5, 0xFB, 0xEB, 0xBF, 0x70, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x91, 0xD5, 0xF3, 0xF7, - 0xDC, 0x97, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF7, 0x4D, 0x00, 0x00, 0x00, 0x2F, 0xF9, 0xFF, 0xFF, 0xFF, 0xE8, 0xE6, 0xFF, 0xFF, 0xFF, 0xF6, - 0x20, 0x00, 0x00, 0xA9, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x5F, 0xFE, 0xFF, 0xFF, 0x9D, 0x00, - 0x00, 0xEF, 0xFF, 0xFF, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0xF0, 0x06, 0x0E, 0xFF, - 0xFF, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x00, 0x66, 0xFF, 0xFF, 0xFF, 0x33, 0x10, 0xFF, 0xFF, 0xFF, - 0x92, 0x00, 0x00, 0x00, 0x00, 0x51, 0xFF, 0xFF, 0xFF, 0x5C, 0x01, 0xF4, 0xFF, 0xFF, 0xC2, 0x00, - 0x00, 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0xB8, 0xFF, 0xFF, 0xFF, 0x51, 0x00, 0x00, - 0x29, 0xED, 0xFF, 0xFF, 0xFF, 0x7B, 0x00, 0x49, 0xFF, 0xFF, 0xFF, 0xFD, 0xC5, 0xBC, 0xF7, 0xFF, - 0xFF, 0xFF, 0xFF, 0x75, 0x00, 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, - 0xFF, 0x68, 0x00, 0x00, 0x00, 0x5A, 0xC5, 0xF4, 0xF3, 0xC7, 0x60, 0x22, 0xFF, 0xFF, 0xFF, 0x49, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0x65, - 0xB0, 0xD6, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0xD1, 0x00, 0x00, 0x78, 0xFF, 0xFF, - 0xFF, 0x5A, 0x00, 0x01, 0x6C, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x14, 0xF0, 0xFF, 0xFF, 0xFF, - 0xE0, 0xE8, 0xFF, 0xFF, 0xFF, 0xD2, 0x05, 0x00, 0x00, 0x00, 0x50, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xD7, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xA4, 0xE3, 0xFA, 0xEF, 0xC9, 0x73, - 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x28, 0x80, 0xFF, 0xFF, 0xFF, 0x28, 0x80, 0xFF, - 0xFF, 0xFF, 0x28, 0x80, 0xFF, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFF, 0x28, 0x80, 0xFF, 0xFF, 0xFF, 0x28, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x3C, + 0xA8, 0xA8, 0xA8, 0xA8, 0xFA, 0xFF, 0xFF, 0xE0, 0xA8, 0xA8, 0xA8, 0x7B, 0x5C, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0x28, 0x96, 0xD8, 0xF5, 0xF9, 0xE6, 0xB4, + 0x58, 0x01, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB6, + 0x07, 0x00, 0x00, 0x2E, 0xFB, 0xFF, 0xFF, 0xFF, 0xEF, 0xE4, 0xFE, 0xFF, 0xFF, 0xFF, 0x89, 0x00, + 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0x6B, 0x01, 0x00, 0x2E, 0xEF, 0xFF, 0xFF, 0xEC, 0x02, 0x00, 0xBA, + 0xE4, 0xF1, 0xC7, 0x00, 0x00, 0x00, 0x00, 0x95, 0xFF, 0xFF, 0xFF, 0x19, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x09, 0xE1, 0xFF, 0xFF, 0xE3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xA0, 0xFF, 0xFF, 0xFF, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x9E, 0xFF, 0xFF, + 0xFF, 0xCD, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xBB, 0xFF, 0xFF, 0xFF, 0xD1, 0x18, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xD6, 0xFF, 0xFF, 0xFF, 0xC1, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x26, 0xE6, 0xFF, 0xFF, 0xFF, 0x92, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1F, 0xE4, 0xFF, 0xFF, 0xFB, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xCB, 0xFF, + 0xFF, 0xF9, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF5, 0xFF, 0xFF, 0xFF, 0xF2, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x65, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x6C, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x6C, 0x00, 0x00, 0x00, 0x2B, 0x97, 0xD8, 0xF5, 0xF9, 0xE6, 0xB5, 0x5D, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x6E, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC2, 0x0E, 0x00, 0x00, 0x48, + 0xFF, 0xFF, 0xFF, 0xFF, 0xEB, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0x97, 0x00, 0x00, 0xC6, 0xFF, 0xFF, + 0xF8, 0x4C, 0x00, 0x00, 0x3A, 0xF3, 0xFF, 0xFF, 0xF1, 0x00, 0x05, 0xC8, 0xDD, 0xEF, 0x99, 0x00, + 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xB2, 0xFF, 0xFF, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x20, 0x82, 0xFF, + 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0x63, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xCE, 0x53, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xB6, 0xE4, 0xFB, 0xFF, 0xFF, 0xFF, 0xD5, 0x2E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x4E, 0xE9, 0xFF, 0xFF, 0xE6, 0x0C, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0xFF, 0xFF, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x2F, 0xFF, 0xFF, 0xFF, 0x7D, 0x3D, 0xC6, 0xDB, 0xF0, 0x66, 0x00, 0x00, 0x00, + 0x00, 0x56, 0xFF, 0xFF, 0xFF, 0x6F, 0x1C, 0xFC, 0xFF, 0xFF, 0xEA, 0x41, 0x00, 0x00, 0x31, 0xDD, + 0xFF, 0xFF, 0xFF, 0x38, 0x00, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC3, 0x00, 0x00, 0x0A, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD1, 0x19, 0x00, + 0x00, 0x00, 0x00, 0x4B, 0xA8, 0xDE, 0xF7, 0xFA, 0xE9, 0xBA, 0x66, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x13, 0xEB, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x43, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xDB, + 0xFF, 0xE9, 0x7C, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xFF, + 0x61, 0x75, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFA, 0xFF, 0xC0, 0x00, + 0x78, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xC7, 0xFF, 0xF8, 0x27, 0x00, 0x78, + 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x78, 0xFF, + 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xF1, 0xFF, 0xD7, 0x06, 0x00, 0x00, 0x78, 0xFF, 0xFF, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xFF, 0xFE, 0x3E, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x4F, 0xFF, 0xFF, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x54, 0x9C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, + 0x66, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xA8, 0xD1, 0xFF, 0xFF, 0xFA, 0xA8, 0xA8, 0x37, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x28, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x37, 0xFF, 0xFF, 0xFF, 0xB7, 0xA8, 0xA8, + 0xA8, 0xA8, 0xA8, 0xA8, 0x76, 0x00, 0x00, 0x47, 0xFF, 0xFF, 0xFF, 0x21, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x66, 0xFF, 0xFF, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x75, 0xFF, 0xFF, 0xEE, 0x47, 0xBD, 0xF2, 0xF7, 0xD7, 0x8A, 0x15, 0x00, 0x00, 0x00, 0x85, + 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x2B, 0x00, 0x00, 0x94, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF5, 0xEE, 0xFF, 0xFF, 0xFF, 0xFF, 0xDA, 0x05, 0x00, 0xA4, 0xFF, 0xFF, 0xFC, 0x6B, + 0x05, 0x00, 0x2F, 0xD9, 0xFF, 0xFF, 0xFF, 0x59, 0x00, 0x05, 0x08, 0x08, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, + 0xFB, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFD, 0xFF, + 0xFF, 0xAD, 0x15, 0xC2, 0xD7, 0xED, 0x90, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x87, + 0x00, 0xDD, 0xFF, 0xFF, 0xF8, 0x51, 0x00, 0x00, 0x2B, 0xD9, 0xFF, 0xFF, 0xFF, 0x35, 0x00, 0x5E, + 0xFF, 0xFF, 0xFF, 0xFF, 0xEA, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x84, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x09, 0x00, 0x00, 0x00, 0x00, 0x36, 0x9F, 0xDB, + 0xF7, 0xF9, 0xE3, 0xAC, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xA7, 0xE4, 0xFA, + 0xEE, 0xBC, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x8D, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xF7, 0xD9, 0xFA, 0xFF, 0xFF, 0xFF, + 0x45, 0x00, 0x00, 0x0B, 0xE9, 0xFF, 0xFF, 0xBD, 0x12, 0x00, 0x25, 0xEC, 0xFF, 0xFF, 0xB8, 0x00, + 0x00, 0x59, 0xFF, 0xFF, 0xF6, 0x17, 0x00, 0x00, 0x00, 0x7C, 0xE0, 0xB8, 0x8B, 0x00, 0x00, 0xA4, + 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, + 0x86, 0x28, 0xA6, 0xE9, 0xF9, 0xDE, 0x8F, 0x15, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xAA, 0xF6, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0x1F, 0x00, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0xAE, + 0xE6, 0xFF, 0xFF, 0xFF, 0xBD, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x0E, 0xC8, + 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0xFC, 0xFF, 0xFF, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, + 0xFF, 0x66, 0x00, 0xEA, 0xFF, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0x7D, + 0x00, 0xBE, 0xFF, 0xFF, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x23, 0xFF, 0xFF, 0xFF, 0x75, 0x00, 0x7F, + 0xFF, 0xFF, 0xFD, 0x24, 0x00, 0x00, 0x00, 0x5A, 0xFF, 0xFF, 0xFF, 0x53, 0x00, 0x24, 0xFC, 0xFF, + 0xFF, 0xBA, 0x0C, 0x00, 0x1F, 0xDB, 0xFF, 0xFF, 0xF7, 0x12, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, + 0xF0, 0xD3, 0xFA, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x05, 0xAB, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xAC, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0xB6, 0xE9, 0xFB, 0xEC, 0xB9, + 0x57, 0x01, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x50, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0xD2, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x61, 0xFF, 0xFF, 0xDD, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, + 0xF0, 0xFF, 0xFF, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xAD, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xFF, 0xFF, 0xF6, 0x1D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0E, 0xE6, 0xFF, 0xFF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8A, 0xFF, 0xFF, 0xF2, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF7, 0xFF, + 0xFF, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x85, 0xFF, 0xFF, 0xF7, 0x11, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xED, 0xFF, 0xFF, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA4, 0xFF, 0xFF, 0xF8, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, + 0xCA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0xFF, 0xFF, 0xFF, 0x9E, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F, 0xFF, 0xFF, 0xFF, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x37, 0x9F, 0xDA, 0xF5, 0xFA, 0xEA, 0xBF, 0x70, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDC, 0x20, 0x00, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0xF1, + 0x9B, 0x8B, 0xCA, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0x34, 0x00, 0x00, + 0x01, 0xC2, 0xFF, 0xFF, 0xFF, 0x19, 0x00, 0xB6, 0xFF, 0xFF, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x7F, + 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x8E, 0xFF, 0xFF, 0xFB, 0x0A, 0x00, 0x00, 0x00, 0x93, 0xFF, 0xFF, + 0xFB, 0x0C, 0x00, 0x1F, 0xF5, 0xFF, 0xFF, 0xA2, 0x1B, 0x0A, 0x49, 0xF2, 0xFF, 0xFF, 0x8E, 0x00, + 0x00, 0x00, 0x39, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x8C, 0x03, 0x00, 0x00, 0x00, + 0x08, 0x64, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA1, 0x34, 0x00, 0x00, 0x00, 0x14, 0xC9, 0xFF, + 0xFF, 0xEF, 0x9C, 0x8D, 0xC7, 0xFF, 0xFF, 0xFC, 0x6B, 0x00, 0x00, 0x9B, 0xFF, 0xFF, 0xF3, 0x20, + 0x00, 0x00, 0x00, 0x96, 0xFF, 0xFF, 0xFA, 0x26, 0x03, 0xF9, 0xFF, 0xFF, 0xA1, 0x00, 0x00, 0x00, + 0x00, 0x27, 0xFF, 0xFF, 0xFF, 0x7C, 0x22, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x00, 0x10, + 0xFF, 0xFF, 0xFF, 0x9E, 0x19, 0xFF, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, + 0xFF, 0x93, 0x00, 0xE0, 0xFF, 0xFF, 0xF4, 0x20, 0x00, 0x00, 0x00, 0x97, 0xFF, 0xFF, 0xFF, 0x5A, + 0x00, 0x6B, 0xFF, 0xFF, 0xFF, 0xF1, 0xA1, 0x8F, 0xC5, 0xFF, 0xFF, 0xFF, 0xDC, 0x07, 0x00, 0x00, + 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0x28, 0x00, 0x00, 0x00, 0x00, 0x39, + 0x9E, 0xD9, 0xF5, 0xFB, 0xEB, 0xBF, 0x70, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x91, 0xD5, + 0xF3, 0xF7, 0xDC, 0x97, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF7, 0x4D, 0x00, 0x00, 0x00, 0x2F, 0xF9, 0xFF, 0xFF, 0xFF, 0xE8, 0xE6, 0xFF, 0xFF, + 0xFF, 0xF6, 0x20, 0x00, 0x00, 0xA9, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x5F, 0xFE, 0xFF, 0xFF, + 0x9D, 0x00, 0x00, 0xEF, 0xFF, 0xFF, 0xCA, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0xF0, 0x06, + 0x0E, 0xFF, 0xFF, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x00, 0x66, 0xFF, 0xFF, 0xFF, 0x33, 0x10, 0xFF, + 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x51, 0xFF, 0xFF, 0xFF, 0x5C, 0x01, 0xF4, 0xFF, 0xFF, + 0xC2, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0xB8, 0xFF, 0xFF, 0xFF, 0x51, + 0x00, 0x00, 0x29, 0xED, 0xFF, 0xFF, 0xFF, 0x7B, 0x00, 0x49, 0xFF, 0xFF, 0xFF, 0xFD, 0xC5, 0xBC, + 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0x00, 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, + 0xFF, 0xFF, 0xFF, 0x68, 0x00, 0x00, 0x00, 0x5A, 0xC5, 0xF4, 0xF3, 0xC7, 0x60, 0x22, 0xFF, 0xFF, + 0xFF, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFF, 0xFF, 0xFF, 0x1C, + 0x00, 0x65, 0xB0, 0xD6, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0xD1, 0x00, 0x00, 0x78, + 0xFF, 0xFF, 0xFF, 0x5A, 0x00, 0x01, 0x6C, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x14, 0xF0, 0xFF, + 0xFF, 0xFF, 0xE0, 0xE8, 0xFF, 0xFF, 0xFF, 0xD2, 0x05, 0x00, 0x00, 0x00, 0x50, 0xFB, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xA4, 0xE3, 0xFA, 0xEF, + 0xC9, 0x73, 0x07, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x28, 0x80, 0xFF, 0xFF, 0xFF, 0x28, 0x80, 0xFF, 0xFF, 0xFF, 0x28, 0x80, 0xFF, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0xFF, 0x28, 0x80, 0xFF, 0xFF, + 0xFF, 0x28, 0x80, 0xFF, 0xFF, 0xFF, 0x28, 0x80, 0xFF, 0xFF, 0xFF, 0x28, 0xAE, 0xFF, 0xFF, 0x96, + 0xBF, 0xFF, 0xFF, 0xA7, 0xBE, 0xFF, 0xFF, 0xA6, 0x3F, 0x67, 0x67, 0x35, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0x63, 0x63, 0x32, + 0xBE, 0xFF, 0xFF, 0xA6, 0xBF, 0xFF, 0xFF, 0xA7, 0xAF, 0xFF, 0xFF, 0x97, 0x0D, 0xF8, 0xFF, 0x3B, + 0x58, 0xFF, 0xA9, 0x00, 0x9B, 0xEF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x69, 0xDA, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x7C, 0xEA, 0xFF, 0xD5, 0x3F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x8E, 0xF3, 0xFF, 0xC4, 0x4D, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2B, 0xA0, 0xFA, 0xFE, 0xB2, 0x3B, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xB2, 0xFE, 0xFA, 0x9F, + 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4D, 0xC4, 0xFF, 0xF3, + 0x8D, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x60, 0xD6, 0xFF, + 0xE8, 0x7A, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x72, 0xE3, + 0xFF, 0xDC, 0x68, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x69, 0xFF, 0xFF, 0xA2, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x09, 0x7A, 0xE9, 0xFF, 0xD5, 0x5F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x68, 0xDC, 0xFF, 0xE3, 0x72, 0x0D, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x56, 0xCC, + 0xFF, 0xEF, 0x85, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x43, 0xBA, 0xFF, 0xF7, 0x98, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xA7, 0xFC, 0xFD, 0xAB, 0x36, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x95, 0xF6, + 0xFF, 0xBE, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x15, 0x82, 0xED, 0xFF, 0xD1, 0x3B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x70, 0xDF, 0x87, 0x00, 0x16, 0x2B, 0x2B, 0x2B, + 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x1F, 0x00, 0x43, + 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x79, 0x32, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x32, 0xE9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x5E, 0x45, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x1A, 0x2F, 0x2F, 0x2F, + 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x24, 0x01, 0x57, + 0xE5, 0x83, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x23, 0xBE, 0xFF, 0xF6, 0x95, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xAB, 0xFD, 0xFC, 0xA7, 0x31, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x25, 0x98, 0xF7, 0xFF, + 0xB9, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x17, 0x85, 0xEF, 0xFF, 0xCB, 0x54, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x72, 0xE3, 0xFF, 0xDA, 0x66, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x5F, 0xD4, 0xFF, 0xE7, + 0x78, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x4C, 0xC3, 0xFF, 0xF1, 0x8A, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xFE, 0xFF, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x4B, 0xC2, 0xFF, 0xF5, 0x93, 0x18, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x5D, 0xD3, 0xFF, 0xEC, 0x80, 0x13, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x70, 0xE2, 0xFF, 0xDF, 0x6D, 0x0A, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x82, 0xED, 0xFF, 0xD1, 0x5B, 0x04, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x95, 0xF6, 0xFF, 0xBF, 0x48, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xA7, 0xFC, 0xFD, 0xAC, + 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xB9, 0xFF, 0xF8, + 0x99, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, + 0xE8, 0x87, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x16, 0x7C, 0xC7, 0xF1, 0xFD, 0xF4, 0xC9, 0x84, 0x0A, 0x00, 0x3E, 0xF6, 0xFF, + 0xFF, 0xFF, 0xEA, 0xFC, 0xFF, 0xFF, 0xD3, 0x1C, 0x29, 0xFF, 0xE5, 0x59, 0x13, 0x00, 0x17, 0xE5, + 0xFF, 0xFF, 0x97, 0x00, 0x95, 0x21, 0x00, 0x00, 0x00, 0x00, 0xAF, 0xFF, 0xFF, 0xCE, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, + 0xF5, 0xFF, 0xFF, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xD7, 0xFF, 0xFF, 0xD1, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0xC1, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xCE, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xFF, 0xFF, 0x3B, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE8, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFF, + 0xFF, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF9, 0xFF, 0x9F, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0x48, 0x63, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xEF, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x28, 0xE5, 0xFE, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x91, 0xC9, + 0xE6, 0xF7, 0xF3, 0xDD, 0xA3, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xD1, 0xFF, 0xFF, + 0xFF, 0xFD, 0xE6, 0xF7, 0xFF, 0xFF, 0xFF, 0x8A, 0x00, 0x00, 0x00, 0x00, 0x45, 0xF8, 0xFF, 0xFF, + 0xAF, 0x45, 0x09, 0x00, 0x05, 0x48, 0xF2, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x1A, 0xEF, 0xFF, 0xFF, + 0x6C, 0x00, 0x05, 0x69, 0x9D, 0xC9, 0xD4, 0xE1, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x8F, 0xFF, 0xFF, + 0xB9, 0x00, 0x21, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0E, 0x01, 0xEC, 0xFF, + 0xFF, 0x48, 0x00, 0xB9, 0xFF, 0xFF, 0xA3, 0x25, 0x35, 0xC0, 0xFF, 0xFF, 0xFF, 0x3D, 0x2D, 0xFF, + 0xFF, 0xF4, 0x01, 0x37, 0xFF, 0xFF, 0xE3, 0x08, 0x00, 0x00, 0x1E, 0xFB, 0xFF, 0xFF, 0x4D, 0x50, + 0xFF, 0xFF, 0xD9, 0x00, 0x6B, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0x5E, + 0x62, 0xFF, 0xFF, 0xC0, 0x00, 0x8B, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, + 0x6B, 0x63, 0xFF, 0xFF, 0xBA, 0x00, 0x8B, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xFF, + 0xFF, 0x62, 0x50, 0xFF, 0xFF, 0xC9, 0x00, 0x6A, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0x00, 0xD1, + 0xFF, 0xFF, 0x47, 0x2E, 0xFF, 0xFF, 0xEE, 0x01, 0x3A, 0xFF, 0xFF, 0xE3, 0x08, 0x00, 0x00, 0x1E, + 0xFB, 0xFF, 0xF7, 0x09, 0x01, 0xEC, 0xFF, 0xFF, 0x31, 0x00, 0xBB, 0xFF, 0xFF, 0xA2, 0x25, 0x33, + 0xBF, 0xFF, 0xFF, 0xA4, 0x00, 0x00, 0x8F, 0xFF, 0xFF, 0xA0, 0x00, 0x25, 0xD3, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xCB, 0x13, 0x00, 0x00, 0x19, 0xF0, 0xFF, 0xFE, 0x58, 0x00, 0x06, 0x71, 0xA6, + 0xCF, 0xD0, 0xB2, 0x62, 0x07, 0x00, 0x00, 0x00, 0x00, 0x44, 0xF9, 0xFF, 0xFD, 0xA1, 0x3A, 0x04, + 0x00, 0x00, 0x06, 0x2A, 0x76, 0xB9, 0xBF, 0x33, 0x00, 0x00, 0x00, 0x31, 0xD2, 0xFF, 0xFF, 0xFF, + 0xF9, 0xE6, 0xE8, 0xFE, 0xFF, 0xFF, 0xDF, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x44, 0x95, + 0xCB, 0xE9, 0xF8, 0xFC, 0xE0, 0x9E, 0x57, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF5, 0xFF, 0xFF, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, @@ -803,491 +1115,591 @@ const uint8_t Latin_Sans_Bold_26[] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x21, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x25, 0x93, 0xD4, 0xF4, 0xFA, 0xE6, - 0xAF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF5, 0xFF, 0xFF, 0xE1, 0x6A, 0x63, 0xD3, 0xFF, 0xFF, - 0xFE, 0x32, 0x00, 0x00, 0x00, 0x75, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x25, 0xFF, 0xFF, 0xFF, - 0x8A, 0x00, 0x00, 0x00, 0x0E, 0x22, 0x2D, 0x39, 0x08, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0xAC, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x0C, 0xDE, 0xFF, 0xFF, 0xB4, 0x00, - 0x00, 0x00, 0x00, 0x26, 0x95, 0xD5, 0xF3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x00, 0x00, - 0x00, 0x49, 0xF8, 0xFF, 0xFF, 0xFF, 0xFD, 0xF0, 0xEB, 0xFC, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x03, - 0xE5, 0xFF, 0xFF, 0xE9, 0x46, 0x04, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x2C, 0xFF, - 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x12, 0xFA, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x34, 0xFF, 0xFF, - 0xFF, 0xA0, 0x00, 0x00, 0x03, 0xA2, 0xFF, 0xFF, 0xFF, 0xC4, 0x00, 0x00, 0x0D, 0xF8, 0xFF, 0xFF, - 0xFC, 0xA0, 0x88, 0xD1, 0xFF, 0xB6, 0xFF, 0xFF, 0xF9, 0x63, 0x34, 0x00, 0x84, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x91, 0x1D, 0xF8, 0xFF, 0xFF, 0xFF, 0xA0, 0x00, 0x01, 0x66, 0xCE, 0xF7, 0xF1, - 0xC4, 0x58, 0x00, 0x00, 0x50, 0xC9, 0xE5, 0xD2, 0x68, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, - 0xFF, 0xFF, 0xFF, 0x62, 0x0A, 0x80, 0xD6, 0xF6, 0xED, 0xB0, 0x30, 0x00, 0x00, 0x30, 0xFF, 0xFF, - 0xFF, 0x64, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x40, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xD6, - 0xF7, 0x9A, 0x80, 0xC5, 0xFF, 0xFF, 0xFF, 0xDF, 0x06, 0x30, 0xFF, 0xFF, 0xFF, 0xFD, 0x3C, 0x00, - 0x00, 0x01, 0xAE, 0xFF, 0xFF, 0xFF, 0x50, 0x30, 0xFF, 0xFF, 0xFF, 0xB3, 0x00, 0x00, 0x00, 0x00, - 0x36, 0xFF, 0xFF, 0xFF, 0x92, 0x30, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFC, - 0xFF, 0xFF, 0xB9, 0x30, 0xFF, 0xFF, 0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFF, 0xFF, - 0xC9, 0x30, 0xFF, 0xFF, 0xFF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xFF, 0xFF, 0xC8, 0x30, - 0xFF, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFD, 0xFF, 0xFF, 0xB6, 0x30, 0xFF, 0xFF, - 0xFF, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0x8C, 0x30, 0xFF, 0xFF, 0xFF, 0xFD, - 0x34, 0x00, 0x00, 0x01, 0xB4, 0xFF, 0xFF, 0xFF, 0x45, 0x32, 0xFF, 0xFF, 0xFF, 0xEA, 0xF2, 0x90, - 0x78, 0xC3, 0xFF, 0xFF, 0xFF, 0xD2, 0x02, 0x36, 0xFF, 0xFF, 0xFF, 0x64, 0xDC, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF0, 0x30, 0x00, 0x41, 0xFF, 0xFF, 0xFF, 0x3F, 0x13, 0x90, 0xDF, 0xF9, 0xE7, 0xA1, - 0x21, 0x00, 0x00, 0x00, 0x00, 0x03, 0x5F, 0xB7, 0xE9, 0xFA, 0xEE, 0xBE, 0x60, 0x02, 0x00, 0x00, - 0x00, 0x13, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x0D, 0x00, 0x01, 0xBA, 0xFF, - 0xFF, 0xFF, 0xAF, 0x7D, 0xB2, 0xFF, 0xFF, 0xFF, 0xAB, 0x00, 0x4B, 0xFF, 0xFF, 0xFF, 0x8A, 0x00, - 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x32, 0xA6, 0xFF, 0xFF, 0xFD, 0x15, 0x00, 0x00, 0x00, 0x21, - 0xF9, 0xEC, 0xDF, 0x67, 0xDC, 0xFF, 0xFF, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xF2, 0xFF, 0xFF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, - 0xFF, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xE0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xFF, 0xFF, 0xFE, 0x19, 0x00, 0x00, 0x00, - 0x09, 0xF3, 0xEE, 0xE2, 0x80, 0x54, 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, 0x00, 0x72, 0xFF, 0xFF, - 0xFF, 0x51, 0x02, 0xC4, 0xFF, 0xFF, 0xFF, 0xB0, 0x78, 0xA6, 0xFE, 0xFF, 0xFF, 0xC4, 0x01, 0x00, - 0x17, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCA, 0x14, 0x00, 0x00, 0x00, 0x05, 0x65, - 0xBD, 0xEB, 0xFB, 0xE9, 0xBA, 0x62, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, - 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x00, - 0x00, 0x2E, 0xAB, 0xE9, 0xF8, 0xDB, 0x87, 0x0C, 0x7E, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x45, 0xF9, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x84, 0xFF, 0xFF, 0xFF, 0x10, 0x0D, 0xE7, 0xFF, 0xFF, 0xFF, - 0xAD, 0x73, 0x96, 0xF9, 0xED, 0xFF, 0xFF, 0xFF, 0x10, 0x67, 0xFF, 0xFF, 0xFF, 0x8C, 0x00, 0x00, - 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xAE, 0xFF, 0xFF, 0xFE, 0x18, 0x00, 0x00, 0x00, 0x00, - 0xD7, 0xFF, 0xFF, 0xFF, 0x10, 0xD7, 0xFF, 0xFF, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xFF, - 0xFF, 0xFF, 0x10, 0xE9, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, - 0x10, 0xE9, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0x10, 0xD9, - 0xFF, 0xFF, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xFF, 0xFF, 0xFF, 0x10, 0xB0, 0xFF, 0xFF, - 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xFF, 0x10, 0x6C, 0xFF, 0xFF, 0xFF, 0x92, - 0x00, 0x00, 0x00, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x11, 0xED, 0xFF, 0xFF, 0xFF, 0xB1, 0x76, - 0x9E, 0xFC, 0xE5, 0xFF, 0xFF, 0xFF, 0x12, 0x00, 0x53, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, - 0x74, 0xFF, 0xFF, 0xFF, 0x19, 0x00, 0x00, 0x3D, 0xBA, 0xF1, 0xF4, 0xD4, 0x7C, 0x08, 0x58, 0xFF, - 0xFF, 0xFF, 0x25, 0x00, 0x00, 0x07, 0x6A, 0xBE, 0xEC, 0xFA, 0xE9, 0xB5, 0x52, 0x00, 0x00, 0x00, - 0x00, 0x1C, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA2, 0x03, 0x00, 0x04, 0xCB, 0xFF, - 0xFF, 0xE8, 0x6E, 0x4A, 0x7B, 0xF2, 0xFF, 0xFF, 0x76, 0x00, 0x59, 0xFF, 0xFF, 0xFE, 0x32, 0x00, - 0x00, 0x00, 0x55, 0xFF, 0xFF, 0xED, 0x08, 0xAF, 0xFF, 0xFF, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x04, - 0xF6, 0xFF, 0xFF, 0x46, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x76, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x89, 0xF4, 0xFF, - 0xFF, 0xD5, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x22, 0xDF, 0xFF, 0xFF, 0xD9, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xFF, 0xFF, 0xFC, 0x12, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x42, 0xF4, 0xDD, - 0xC6, 0x21, 0x05, 0xCF, 0xFF, 0xFF, 0xFF, 0xA8, 0x6B, 0x89, 0xF0, 0xFF, 0xFF, 0xB1, 0x00, 0x00, - 0x20, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x0F, 0x00, 0x00, 0x00, 0x0A, 0x70, - 0xC3, 0xEE, 0xF9, 0xE2, 0xBA, 0x5A, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xB0, 0xEB, 0xFA, - 0xE7, 0x95, 0x00, 0x00, 0x11, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x60, 0xFF, 0xFF, - 0xFF, 0xB7, 0x6B, 0x53, 0x00, 0x00, 0x85, 0xFF, 0xFF, 0xFF, 0x11, 0x00, 0x00, 0x00, 0x00, 0x8C, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x90, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x3A, 0x68, 0xBB, 0xFF, 0xFF, 0xFF, 0x68, 0x68, - 0x49, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, - 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, - 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xAC, 0xE9, 0xF8, 0xDC, 0x8B, 0x0E, 0x4C, 0xFF, 0xFF, - 0xFF, 0x1E, 0x00, 0x48, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x6A, 0xFF, 0xFF, 0xFF, 0x15, - 0x0F, 0xE9, 0xFF, 0xFF, 0xFF, 0xB9, 0x7C, 0x9F, 0xFC, 0xE5, 0xFF, 0xFF, 0xFF, 0x11, 0x69, 0xFF, - 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xAE, 0xFF, 0xFF, 0xFF, - 0x1D, 0x00, 0x00, 0x00, 0x01, 0xDD, 0xFF, 0xFF, 0xFF, 0x10, 0xD8, 0xFF, 0xFF, 0xE3, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x99, 0xFF, 0xFF, 0xFF, 0x10, 0xE9, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x10, 0xEA, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, - 0xFF, 0xFF, 0xFF, 0x10, 0xDA, 0xFF, 0xFF, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xFF, 0xFF, - 0xFF, 0x10, 0xB3, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xFF, 0xFF, 0xFF, 0x10, - 0x70, 0xFF, 0xFF, 0xFF, 0x97, 0x00, 0x00, 0x00, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x15, 0xF1, - 0xFF, 0xFF, 0xFF, 0xBA, 0x7F, 0xA4, 0xFC, 0xE8, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x59, 0xFE, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x7E, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x40, 0xBB, 0xF1, 0xF5, - 0xD5, 0x7E, 0x08, 0x7E, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x0A, 0x06, 0x00, 0x00, 0x00, - 0x00, 0x9C, 0xFF, 0xFF, 0xEF, 0x00, 0x2F, 0xCD, 0xEC, 0xFF, 0x7D, 0x00, 0x00, 0x00, 0x12, 0xEE, - 0xFF, 0xFF, 0xAE, 0x00, 0x07, 0xE1, 0xFF, 0xFF, 0xFC, 0x97, 0x61, 0x7A, 0xDF, 0xFF, 0xFF, 0xFD, - 0x38, 0x00, 0x00, 0x35, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x62, 0x00, 0x00, - 0x00, 0x00, 0x12, 0x71, 0xC5, 0xE4, 0xFA, 0xF2, 0xD0, 0x8F, 0x26, 0x00, 0x00, 0x00, 0x30, 0xFF, - 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x60, 0x02, 0x6E, 0xD1, 0xF5, 0xEE, 0xB3, 0x32, - 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x58, 0xA9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x36, 0x00, - 0x30, 0xFF, 0xFF, 0xFF, 0xAD, 0xFF, 0xD0, 0xBB, 0xF2, 0xFF, 0xFF, 0xFF, 0xC4, 0x00, 0x30, 0xFF, - 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x22, 0xEA, 0xFF, 0xFF, 0xFF, 0x13, 0x30, 0xFF, 0xFF, 0xFF, - 0xD5, 0x01, 0x00, 0x00, 0x00, 0x89, 0xFF, 0xFF, 0xFF, 0x37, 0x30, 0xFF, 0xFF, 0xFF, 0x87, 0x00, - 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xFF, 0x43, 0x30, 0xFF, 0xFF, 0xFF, 0x6A, 0x00, 0x00, 0x00, - 0x00, 0x49, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, - 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, - 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, - 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, - 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, - 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, - 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, - 0xFF, 0x64, 0x1E, 0xA0, 0xA0, 0xA0, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, - 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, - 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, - 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, - 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, - 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x1B, 0xA0, 0xA0, 0xA0, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, - 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, - 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, - 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, - 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, - 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, - 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x30, 0xFF, - 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x52, 0xFF, 0xFF, 0xFF, 0x59, 0x3F, 0x9D, 0xE9, 0xFF, 0xFF, 0xFF, - 0x34, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x01, 0x5E, 0xF6, 0xFD, 0xE3, 0x9F, 0x15, 0x00, 0x30, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x24, 0x5D, 0xD2, 0xDB, 0xDB, 0xDB, 0xC3, 0x16, 0xBA, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE8, 0x20, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, + 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, + 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, + 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, + 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, + 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, + 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, + 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, + 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, + 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBF, + 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x1F, 0x6A, 0xDC, 0xDF, + 0xDF, 0xDF, 0xC7, 0x17, 0x30, 0xE5, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0xFD, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, + 0xF2, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0x68, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0xD1, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xFF, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x17, 0xFA, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xA8, 0xF8, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, + 0xFF, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xDC, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6E, 0xFF, 0x47, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF5, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xFC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x33, 0xFF, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xCA, 0xE6, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFF, 0x53, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xEE, 0xBC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xFE, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFF, 0x8E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xBE, 0xEE, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x55, 0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xE7, 0xC9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xFF, 0x32, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0xFC, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xF4, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x3D, 0xEA, 0x1E, 0x29, 0xCB, 0xDB, 0xDB, 0xDB, 0xD5, 0x4D, 0x38, 0xF0, 0xFF, + 0xFF, 0xFF, 0xFF, 0x9B, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, + 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, + 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, + 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, + 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, + 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, + 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, + 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, + 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, + 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, + 0x00, 0xBF, 0xFF, 0xFF, 0x9F, 0x37, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x9B, 0x2B, 0xD0, 0xDF, 0xDF, + 0xDF, 0xD2, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x5A, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x98, 0xFB, 0xFF, 0xD2, 0x4A, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x81, 0xF3, 0xB8, 0x4B, 0x26, 0x8E, 0xEF, 0xBE, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x05, 0x6B, 0xDB, 0x92, 0x26, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x67, 0xD2, + 0xA8, 0x23, 0x00, 0x06, 0xAF, 0x6C, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x40, 0xA7, 0x4C, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, + 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x06, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0B, 0xAD, 0xFF, 0xFF, 0xC8, 0x07, 0x00, 0x00, 0x07, 0x9D, 0xFF, 0xFF, 0x96, 0x00, + 0x00, 0x00, 0x00, 0x68, 0xFA, 0xFF, 0x57, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xE6, 0xEF, 0x0B, 0x00, + 0x00, 0x00, 0x25, 0x93, 0xD4, 0xF4, 0xFA, 0xE6, 0xAF, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x19, 0xF5, + 0xFF, 0xFF, 0xE1, 0x6A, 0x63, 0xD3, 0xFF, 0xFF, 0xFE, 0x32, 0x00, 0x00, 0x00, 0x75, 0xFF, 0xFF, + 0xFF, 0x4D, 0x00, 0x00, 0x25, 0xFF, 0xFF, 0xFF, 0x8A, 0x00, 0x00, 0x00, 0x0E, 0x22, 0x2D, 0x39, + 0x08, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0xAC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x06, 0x0C, 0xDE, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x26, 0x95, 0xD5, 0xF3, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x00, 0x49, 0xF8, 0xFF, 0xFF, 0xFF, 0xFD, 0xF0, + 0xEB, 0xFC, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x03, 0xE5, 0xFF, 0xFF, 0xE9, 0x46, 0x04, 0x00, 0x00, + 0xDF, 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x88, 0x00, 0x00, 0x00, 0x12, 0xFA, + 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x34, 0xFF, 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x03, 0xA2, 0xFF, 0xFF, + 0xFF, 0xC4, 0x00, 0x00, 0x0D, 0xF8, 0xFF, 0xFF, 0xFC, 0xA0, 0x88, 0xD1, 0xFF, 0xB6, 0xFF, 0xFF, + 0xF9, 0x63, 0x34, 0x00, 0x84, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x91, 0x1D, 0xF8, 0xFF, 0xFF, + 0xFF, 0xA0, 0x00, 0x01, 0x66, 0xCE, 0xF7, 0xF1, 0xC4, 0x58, 0x00, 0x00, 0x50, 0xC9, 0xE5, 0xD2, + 0x68, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x2F, 0xF4, 0xFF, - 0xFF, 0xAC, 0x02, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x18, 0xE2, 0xFF, 0xFF, 0xC3, 0x08, - 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x09, 0xCA, 0xFF, 0xFF, 0xD7, 0x12, 0x00, 0x00, 0x30, - 0xFF, 0xFF, 0xFF, 0x64, 0x01, 0xAA, 0xFF, 0xFF, 0xE6, 0x1F, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, - 0xFF, 0x64, 0x84, 0xFF, 0xFF, 0xF2, 0x31, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xBB, - 0xFF, 0xFF, 0xFF, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE2, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0xFC, 0xFF, 0xFF, - 0x89, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xB7, 0x11, 0x97, 0xFF, 0xFF, 0xFA, 0x2A, - 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x14, 0xEE, 0xFF, 0xFF, 0xBF, 0x00, 0x00, - 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x6F, 0xFF, 0xFF, 0xFF, 0x5B, 0x00, 0x00, 0x30, - 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x04, 0xD6, 0xFF, 0xFF, 0xE7, 0x0F, 0x00, 0x30, 0xFF, 0xFF, - 0xFF, 0x64, 0x00, 0x00, 0x00, 0x46, 0xFF, 0xFF, 0xFF, 0x92, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, - 0x00, 0x00, 0x00, 0x00, 0xB2, 0xFF, 0xFF, 0xFC, 0x31, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, - 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, - 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, - 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, - 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, - 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, - 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x42, 0xFF, 0xFF, 0xFF, 0x27, 0x0B, 0x89, 0xE1, - 0xF6, 0xD5, 0x6D, 0x00, 0x00, 0x12, 0x93, 0xE2, 0xF8, 0xD9, 0x6F, 0x00, 0x00, 0x36, 0xFF, 0xFF, - 0xFF, 0x3B, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7A, 0x0A, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x7D, 0x00, 0x31, 0xFF, 0xFF, 0xFF, 0xA9, 0xFC, 0xBC, 0xDA, 0xFF, 0xFF, 0xFF, 0xEF, 0x85, 0xFD, - 0xBE, 0xD6, 0xFF, 0xFF, 0xFF, 0xF8, 0x11, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x03, 0xBA, - 0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x00, 0x01, 0xAD, 0xFF, 0xFF, 0xFF, 0x52, 0x30, 0xFF, 0xFF, 0xFF, - 0xC6, 0x00, 0x00, 0x00, 0x4F, 0xFF, 0xFF, 0xFF, 0xD1, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, - 0x74, 0x30, 0xFF, 0xFF, 0xFF, 0x82, 0x00, 0x00, 0x00, 0x29, 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, - 0x00, 0x19, 0xFF, 0xFF, 0xFF, 0x7F, 0x30, 0xFF, 0xFF, 0xFF, 0x69, 0x00, 0x00, 0x00, 0x19, 0xFF, - 0xFF, 0xFF, 0x73, 0x00, 0x00, 0x00, 0x09, 0xFF, 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, - 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, - 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, - 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, - 0xFF, 0x70, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, - 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x30, - 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x08, - 0xFF, 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, - 0x70, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, - 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x42, 0xFF, - 0xFF, 0xFF, 0x27, 0x03, 0x6F, 0xD2, 0xF5, 0xEE, 0xB3, 0x32, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xFF, - 0x39, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x36, 0x00, 0x31, 0xFF, 0xFF, 0xFF, 0xA3, 0xFF, - 0xD0, 0xBB, 0xF2, 0xFF, 0xFF, 0xFF, 0xC4, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, - 0x22, 0xEA, 0xFF, 0xFF, 0xFF, 0x13, 0x30, 0xFF, 0xFF, 0xFF, 0xD5, 0x01, 0x00, 0x00, 0x00, 0x89, - 0xFF, 0xFF, 0xFF, 0x37, 0x30, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, - 0xFF, 0x43, 0x30, 0xFF, 0xFF, 0xFF, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x49, 0xFF, 0xFF, 0xFF, 0x44, - 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x62, 0x0A, 0x80, 0xD6, 0xF6, + 0xED, 0xB0, 0x30, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0xCB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF8, 0x40, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xD6, 0xF7, 0x9A, 0x80, 0xC5, 0xFF, 0xFF, 0xFF, 0xDF, + 0x06, 0x30, 0xFF, 0xFF, 0xFF, 0xFD, 0x3C, 0x00, 0x00, 0x01, 0xAE, 0xFF, 0xFF, 0xFF, 0x50, 0x30, + 0xFF, 0xFF, 0xFF, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xFF, 0x92, 0x30, 0xFF, 0xFF, + 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x05, 0xFC, 0xFF, 0xFF, 0xB9, 0x30, 0xFF, 0xFF, 0xFF, 0x5A, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFF, 0xFF, 0xC9, 0x30, 0xFF, 0xFF, 0xFF, 0x5E, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xEE, 0xFF, 0xFF, 0xC8, 0x30, 0xFF, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xFD, 0xFF, 0xFF, 0xB6, 0x30, 0xFF, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, + 0xFF, 0xFF, 0x8C, 0x30, 0xFF, 0xFF, 0xFF, 0xFD, 0x34, 0x00, 0x00, 0x01, 0xB4, 0xFF, 0xFF, 0xFF, + 0x45, 0x32, 0xFF, 0xFF, 0xFF, 0xEA, 0xF2, 0x90, 0x78, 0xC3, 0xFF, 0xFF, 0xFF, 0xD2, 0x02, 0x36, + 0xFF, 0xFF, 0xFF, 0x64, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x30, 0x00, 0x41, 0xFF, 0xFF, + 0xFF, 0x3F, 0x13, 0x90, 0xDF, 0xF9, 0xE7, 0xA1, 0x21, 0x00, 0x00, 0x00, 0x00, 0x03, 0x5F, 0xB7, + 0xE9, 0xFA, 0xEE, 0xBE, 0x60, 0x02, 0x00, 0x00, 0x00, 0x13, 0xC4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBE, 0x0D, 0x00, 0x01, 0xBA, 0xFF, 0xFF, 0xFF, 0xAF, 0x7D, 0xB2, 0xFF, 0xFF, 0xFF, + 0xAB, 0x00, 0x4B, 0xFF, 0xFF, 0xFF, 0x8A, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x32, 0xA6, + 0xFF, 0xFF, 0xFD, 0x15, 0x00, 0x00, 0x00, 0x21, 0xF9, 0xEC, 0xDF, 0x67, 0xDC, 0xFF, 0xFF, 0xDD, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xC8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAC, 0xFF, 0xFF, 0xFE, 0x19, 0x00, 0x00, 0x00, 0x09, 0xF3, 0xEE, 0xE2, 0x80, 0x54, 0xFF, 0xFF, + 0xFF, 0x91, 0x00, 0x00, 0x00, 0x72, 0xFF, 0xFF, 0xFF, 0x51, 0x02, 0xC4, 0xFF, 0xFF, 0xFF, 0xB0, + 0x78, 0xA6, 0xFE, 0xFF, 0xFF, 0xC4, 0x01, 0x00, 0x17, 0xCC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xCA, 0x14, 0x00, 0x00, 0x00, 0x05, 0x65, 0xBD, 0xEB, 0xFB, 0xE9, 0xBA, 0x62, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x2E, 0xAB, 0xE9, 0xF8, 0xDB, 0x87, 0x0C, + 0x7E, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x45, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x84, 0xFF, + 0xFF, 0xFF, 0x10, 0x0D, 0xE7, 0xFF, 0xFF, 0xFF, 0xAD, 0x73, 0x96, 0xF9, 0xED, 0xFF, 0xFF, 0xFF, + 0x10, 0x67, 0xFF, 0xFF, 0xFF, 0x8C, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xAE, + 0xFF, 0xFF, 0xFE, 0x18, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xFF, 0xFF, 0xFF, 0x10, 0xD7, 0xFF, 0xFF, + 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xFF, 0xFF, 0xFF, 0x10, 0xE9, 0xFF, 0xFF, 0xCD, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x10, 0xE9, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0x10, 0xD9, 0xFF, 0xFF, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x96, 0xFF, 0xFF, 0xFF, 0x10, 0xB0, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0xD7, 0xFF, + 0xFF, 0xFF, 0x10, 0x6C, 0xFF, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, + 0x10, 0x11, 0xED, 0xFF, 0xFF, 0xFF, 0xB1, 0x76, 0x9E, 0xFC, 0xE5, 0xFF, 0xFF, 0xFF, 0x12, 0x00, + 0x53, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x74, 0xFF, 0xFF, 0xFF, 0x19, 0x00, 0x00, 0x3D, + 0xBA, 0xF1, 0xF4, 0xD4, 0x7C, 0x08, 0x58, 0xFF, 0xFF, 0xFF, 0x25, 0x00, 0x00, 0x07, 0x6A, 0xBE, + 0xEC, 0xFA, 0xE9, 0xB5, 0x52, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xD2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xA2, 0x03, 0x00, 0x04, 0xCB, 0xFF, 0xFF, 0xE8, 0x6E, 0x4A, 0x7B, 0xF2, 0xFF, 0xFF, + 0x76, 0x00, 0x59, 0xFF, 0xFF, 0xFE, 0x32, 0x00, 0x00, 0x00, 0x55, 0xFF, 0xFF, 0xED, 0x08, 0xAF, + 0xFF, 0xFF, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x04, 0xF6, 0xFF, 0xFF, 0x46, 0xE0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x89, 0xF4, 0xFF, 0xFF, 0xD5, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0x3C, 0x3C, 0x22, 0xDF, 0xFF, 0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAD, 0xFF, 0xFF, 0xFC, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xFF, 0xFF, + 0xFF, 0x88, 0x00, 0x00, 0x00, 0x42, 0xF4, 0xDD, 0xC6, 0x21, 0x05, 0xCF, 0xFF, 0xFF, 0xFF, 0xA8, + 0x6B, 0x89, 0xF0, 0xFF, 0xFF, 0xB1, 0x00, 0x00, 0x20, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0x0F, 0x00, 0x00, 0x00, 0x0A, 0x70, 0xC3, 0xEE, 0xF9, 0xE2, 0xBA, 0x5A, 0x05, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2C, 0xB0, 0xEB, 0xFA, 0xE7, 0x95, 0x00, 0x00, 0x11, 0xE6, 0xFF, 0xFF, + 0xFF, 0xFF, 0xB4, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xB7, 0x6B, 0x53, 0x00, 0x00, 0x85, 0xFF, + 0xFF, 0xFF, 0x11, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x90, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xB4, + 0x3A, 0x68, 0xBB, 0xFF, 0xFF, 0xFF, 0x68, 0x68, 0x49, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xAC, + 0xE9, 0xF8, 0xDC, 0x8B, 0x0E, 0x4C, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x48, 0xFA, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xD2, 0x6A, 0xFF, 0xFF, 0xFF, 0x15, 0x0F, 0xE9, 0xFF, 0xFF, 0xFF, 0xB9, 0x7C, 0x9F, + 0xFC, 0xE5, 0xFF, 0xFF, 0xFF, 0x11, 0x69, 0xFF, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0x5C, 0xFF, + 0xFF, 0xFF, 0xFF, 0x10, 0xAE, 0xFF, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x01, 0xDD, 0xFF, 0xFF, + 0xFF, 0x10, 0xD8, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99, 0xFF, 0xFF, 0xFF, 0x10, + 0xE9, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x10, 0xEA, 0xFF, + 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0x10, 0xDA, 0xFF, 0xFF, 0xE2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xFF, 0xFF, 0xFF, 0x10, 0xB3, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, + 0x00, 0x00, 0x00, 0xD6, 0xFF, 0xFF, 0xFF, 0x10, 0x70, 0xFF, 0xFF, 0xFF, 0x97, 0x00, 0x00, 0x00, + 0x5E, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x15, 0xF1, 0xFF, 0xFF, 0xFF, 0xBA, 0x7F, 0xA4, 0xFC, 0xE8, + 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x59, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x7E, 0xFF, 0xFF, + 0xFF, 0x10, 0x00, 0x00, 0x40, 0xBB, 0xF1, 0xF5, 0xD5, 0x7E, 0x08, 0x7E, 0xFF, 0xFF, 0xFF, 0x08, + 0x00, 0x00, 0x00, 0x0A, 0x06, 0x00, 0x00, 0x00, 0x00, 0x9C, 0xFF, 0xFF, 0xEF, 0x00, 0x2F, 0xCD, + 0xEC, 0xFF, 0x7D, 0x00, 0x00, 0x00, 0x12, 0xEE, 0xFF, 0xFF, 0xAE, 0x00, 0x07, 0xE1, 0xFF, 0xFF, + 0xFC, 0x97, 0x61, 0x7A, 0xDF, 0xFF, 0xFF, 0xFD, 0x38, 0x00, 0x00, 0x35, 0xEB, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x62, 0x00, 0x00, 0x00, 0x00, 0x12, 0x71, 0xC5, 0xE4, 0xFA, 0xF2, + 0xD0, 0x8F, 0x26, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, + 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, + 0x60, 0x02, 0x6E, 0xD1, 0xF5, 0xEE, 0xB3, 0x32, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x58, 0xA9, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x36, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xAD, 0xFF, 0xD0, 0xBB, + 0xF2, 0xFF, 0xFF, 0xFF, 0xC4, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x22, 0xEA, + 0xFF, 0xFF, 0xFF, 0x13, 0x30, 0xFF, 0xFF, 0xFF, 0xD5, 0x01, 0x00, 0x00, 0x00, 0x89, 0xFF, 0xFF, + 0xFF, 0x37, 0x30, 0xFF, 0xFF, 0xFF, 0x87, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xFF, 0x43, + 0x30, 0xFF, 0xFF, 0xFF, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x49, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, - 0xFF, 0x44, 0x00, 0x00, 0x00, 0x44, 0xA6, 0xDF, 0xF6, 0xF5, 0xDE, 0xA5, 0x43, 0x00, 0x00, 0x00, - 0x00, 0x09, 0xA7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x07, 0x00, 0x00, 0xA5, - 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x82, 0xD1, 0xFF, 0xFF, 0xFF, 0x9B, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, - 0xAE, 0x02, 0x00, 0x00, 0x03, 0xB7, 0xFF, 0xFF, 0xFF, 0x2E, 0xA2, 0xFF, 0xFF, 0xFF, 0x24, 0x00, - 0x00, 0x00, 0x00, 0x33, 0xFF, 0xFF, 0xFF, 0x87, 0xDB, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0xF6, 0xFF, 0xFF, 0xBD, 0xF3, 0xFF, 0xFF, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xE1, 0xFF, 0xFF, 0xD2, 0xF2, 0xFF, 0xFF, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xFF, - 0xFF, 0xD1, 0xDA, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0xFF, 0xFF, 0xB9, - 0xA0, 0xFF, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0xFF, - 0xFF, 0xFF, 0xAD, 0x01, 0x00, 0x00, 0x07, 0xC3, 0xFF, 0xFF, 0xFB, 0x20, 0x00, 0xA5, 0xFF, 0xFF, - 0xFF, 0xC7, 0x7A, 0x83, 0xD8, 0xFF, 0xFF, 0xFF, 0x81, 0x00, 0x00, 0x09, 0xA8, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x47, 0xA8, 0xE1, 0xF8, 0xF4, - 0xDA, 0x9B, 0x32, 0x00, 0x00, 0x00, 0x42, 0xFF, 0xFF, 0xFF, 0x3B, 0x0E, 0x87, 0xD9, 0xF6, 0xEC, - 0xAE, 0x2C, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xFF, 0x5A, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, - 0x3A, 0x00, 0x32, 0xFF, 0xFF, 0xFF, 0xE0, 0xF7, 0x9B, 0x80, 0xC9, 0xFF, 0xFF, 0xFF, 0xDA, 0x05, - 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x00, 0x00, 0x02, 0xB5, 0xFF, 0xFF, 0xFF, 0x4D, 0x30, 0xFF, - 0xFF, 0xFF, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x3B, 0xFF, 0xFF, 0xFF, 0x91, 0x30, 0xFF, 0xFF, 0xFF, - 0x7B, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFC, 0xFF, 0xFF, 0xB8, 0x30, 0xFF, 0xFF, 0xFF, 0x61, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0xC9, 0x30, 0xFF, 0xFF, 0xFF, 0x5E, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xEE, 0xFF, 0xFF, 0xC8, 0x30, 0xFF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, - 0xFD, 0xFF, 0xFF, 0xB6, 0x30, 0xFF, 0xFF, 0xFF, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0xFF, - 0xFF, 0x8C, 0x30, 0xFF, 0xFF, 0xFF, 0xFE, 0x35, 0x00, 0x00, 0x01, 0xB6, 0xFF, 0xFF, 0xFF, 0x45, - 0x30, 0xFF, 0xFF, 0xFF, 0xE9, 0xF3, 0x8F, 0x78, 0xC5, 0xFF, 0xFF, 0xFF, 0xD2, 0x02, 0x30, 0xFF, - 0xFF, 0xFF, 0x72, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x2F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, - 0x63, 0x13, 0x90, 0xDF, 0xF9, 0xE6, 0xA0, 0x20, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, + 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x1E, 0xA0, 0xA0, 0xA0, 0x3E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, + 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, + 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, + 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, + 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, + 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x1B, + 0xA0, 0xA0, 0xA0, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, + 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, + 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, + 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, + 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, + 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x2C, + 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x52, 0xFF, 0xFF, + 0xFF, 0x59, 0x3F, 0x9D, 0xE9, 0xFF, 0xFF, 0xFF, 0x34, 0x68, 0xFF, 0xFF, 0xFF, 0xFF, 0xC6, 0x01, + 0x5E, 0xF6, 0xFD, 0xE3, 0x9F, 0x15, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, + 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, + 0xFF, 0x64, 0x00, 0x00, 0x00, 0x2F, 0xF4, 0xFF, 0xFF, 0xAC, 0x02, 0x30, 0xFF, 0xFF, 0xFF, 0x64, + 0x00, 0x00, 0x18, 0xE2, 0xFF, 0xFF, 0xC3, 0x08, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x09, + 0xCA, 0xFF, 0xFF, 0xD7, 0x12, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x01, 0xAA, 0xFF, 0xFF, + 0xE6, 0x1F, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x84, 0xFF, 0xFF, 0xF2, 0x31, 0x00, + 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xBB, 0xFF, 0xFF, 0xFF, 0x7A, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE2, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x30, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0xFC, 0xFF, 0xFF, 0x89, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, + 0xFF, 0xB7, 0x11, 0x97, 0xFF, 0xFF, 0xFA, 0x2A, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, + 0x00, 0x14, 0xEE, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, + 0x6F, 0xFF, 0xFF, 0xFF, 0x5B, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x04, 0xD6, + 0xFF, 0xFF, 0xE7, 0x0F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x46, 0xFF, 0xFF, + 0xFF, 0x92, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xFF, 0xFF, 0xFC, + 0x31, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, + 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, + 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, + 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, + 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, + 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x30, 0xFF, 0xFF, 0xFF, 0x64, + 0x42, 0xFF, 0xFF, 0xFF, 0x27, 0x0B, 0x89, 0xE1, 0xF6, 0xD5, 0x6D, 0x00, 0x00, 0x12, 0x93, 0xE2, + 0xF8, 0xD9, 0x6F, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xFF, 0x3B, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x7A, 0x0A, 0xCE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7D, 0x00, 0x31, 0xFF, 0xFF, 0xFF, 0xA9, 0xFC, + 0xBC, 0xDA, 0xFF, 0xFF, 0xFF, 0xEF, 0x85, 0xFD, 0xBE, 0xD6, 0xFF, 0xFF, 0xFF, 0xF8, 0x11, 0x30, + 0xFF, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x03, 0xBA, 0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x00, 0x01, 0xAD, + 0xFF, 0xFF, 0xFF, 0x52, 0x30, 0xFF, 0xFF, 0xFF, 0xC6, 0x00, 0x00, 0x00, 0x4F, 0xFF, 0xFF, 0xFF, + 0xD1, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0x74, 0x30, 0xFF, 0xFF, 0xFF, 0x82, 0x00, 0x00, + 0x00, 0x29, 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, 0x00, 0x19, 0xFF, 0xFF, 0xFF, 0x7F, 0x30, 0xFF, + 0xFF, 0xFF, 0x69, 0x00, 0x00, 0x00, 0x19, 0xFF, 0xFF, 0xFF, 0x73, 0x00, 0x00, 0x00, 0x09, 0xFF, + 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, + 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, + 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, + 0xFF, 0x64, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, + 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, + 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x18, + 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x30, 0xFF, 0xFF, 0xFF, + 0x64, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0x00, 0x08, 0xFF, 0xFF, 0xFF, + 0x80, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, + 0x00, 0x08, 0xFF, 0xFF, 0xFF, 0x80, 0x42, 0xFF, 0xFF, 0xFF, 0x27, 0x03, 0x6F, 0xD2, 0xF5, 0xEE, + 0xB3, 0x32, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xFF, 0x39, 0xAA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, + 0x36, 0x00, 0x31, 0xFF, 0xFF, 0xFF, 0xA3, 0xFF, 0xD0, 0xBB, 0xF2, 0xFF, 0xFF, 0xFF, 0xC4, 0x00, + 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x22, 0xEA, 0xFF, 0xFF, 0xFF, 0x13, 0x30, 0xFF, + 0xFF, 0xFF, 0xD5, 0x01, 0x00, 0x00, 0x00, 0x89, 0xFF, 0xFF, 0xFF, 0x37, 0x30, 0xFF, 0xFF, 0xFF, + 0x87, 0x00, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xFF, 0x43, 0x30, 0xFF, 0xFF, 0xFF, 0x6A, 0x00, + 0x00, 0x00, 0x00, 0x49, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, + 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, + 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, + 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, + 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, + 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x30, 0xFF, 0xFF, 0xFF, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x48, 0xFF, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x44, 0xA6, 0xDF, + 0xF6, 0xF5, 0xDE, 0xA5, 0x43, 0x00, 0x00, 0x00, 0x00, 0x09, 0xA7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xA6, 0x07, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0xD0, 0x82, 0x82, 0xD1, 0xFF, + 0xFF, 0xFF, 0x9B, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xAE, 0x02, 0x00, 0x00, 0x03, 0xB7, 0xFF, 0xFF, + 0xFF, 0x2E, 0xA2, 0xFF, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x33, 0xFF, 0xFF, 0xFF, 0x87, + 0xDB, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xF6, 0xFF, 0xFF, 0xBD, 0xF3, 0xFF, + 0xFF, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xD2, 0xF2, 0xFF, 0xFF, 0xC9, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xFF, 0xFF, 0xD1, 0xDA, 0xFF, 0xFF, 0xE3, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xF8, 0xFF, 0xFF, 0xB9, 0xA0, 0xFF, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, + 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0xFF, 0xFF, 0xFF, 0xAD, 0x01, 0x00, 0x00, 0x07, 0xC3, + 0xFF, 0xFF, 0xFB, 0x20, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0xC7, 0x7A, 0x83, 0xD8, 0xFF, 0xFF, 0xFF, + 0x81, 0x00, 0x00, 0x09, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8C, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x47, 0xA8, 0xE1, 0xF8, 0xF4, 0xDA, 0x9B, 0x32, 0x00, 0x00, 0x00, 0x42, 0xFF, + 0xFF, 0xFF, 0x3B, 0x0E, 0x87, 0xD9, 0xF6, 0xEC, 0xAE, 0x2C, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xFF, + 0x5A, 0xD6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6, 0x3A, 0x00, 0x32, 0xFF, 0xFF, 0xFF, 0xE0, 0xF7, + 0x9B, 0x80, 0xC9, 0xFF, 0xFF, 0xFF, 0xDA, 0x05, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x41, 0x00, 0x00, + 0x02, 0xB5, 0xFF, 0xFF, 0xFF, 0x4D, 0x30, 0xFF, 0xFF, 0xFF, 0xC2, 0x00, 0x00, 0x00, 0x00, 0x3B, + 0xFF, 0xFF, 0xFF, 0x91, 0x30, 0xFF, 0xFF, 0xFF, 0x7B, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFC, 0xFF, + 0xFF, 0xB8, 0x30, 0xFF, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0xED, 0xFF, 0xFF, 0xC9, + 0x30, 0xFF, 0xFF, 0xFF, 0x5E, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xFF, 0xFF, 0xC8, 0x30, 0xFF, + 0xFF, 0xFF, 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0xFD, 0xFF, 0xFF, 0xB6, 0x30, 0xFF, 0xFF, 0xFF, + 0xB9, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0x8C, 0x30, 0xFF, 0xFF, 0xFF, 0xFE, 0x35, + 0x00, 0x00, 0x01, 0xB6, 0xFF, 0xFF, 0xFF, 0x45, 0x30, 0xFF, 0xFF, 0xFF, 0xE9, 0xF3, 0x8F, 0x78, + 0xC5, 0xFF, 0xFF, 0xFF, 0xD2, 0x02, 0x30, 0xFF, 0xFF, 0xFF, 0x72, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xEF, 0x2F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x63, 0x13, 0x90, 0xDF, 0xF9, 0xE6, 0xA0, 0x20, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x2A, 0xA8, 0xE8, 0xF8, 0xDC, 0x8B, 0x0E, 0x59, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x40, - 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x77, 0xFF, 0xFF, 0xFF, 0x15, 0x0B, 0xE4, 0xFF, 0xFF, - 0xFF, 0xB9, 0x7C, 0x9D, 0xFA, 0xEC, 0xFF, 0xFF, 0xFF, 0x11, 0x64, 0xFF, 0xFF, 0xFF, 0x99, 0x00, - 0x00, 0x00, 0x54, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xAC, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00, - 0x00, 0xD9, 0xFF, 0xFF, 0xFF, 0x10, 0xD7, 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, - 0xFF, 0xFF, 0xFF, 0x10, 0xE9, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, - 0xFF, 0x10, 0xE9, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xFF, 0xFF, 0xFF, 0x10, - 0xD9, 0xFF, 0xFF, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9B, 0xFF, 0xFF, 0xFF, 0x10, 0xB1, 0xFF, - 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x01, 0xDF, 0xFF, 0xFF, 0xFF, 0x10, 0x6D, 0xFF, 0xFF, 0xFF, - 0x93, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x12, 0xEE, 0xFF, 0xFF, 0xFF, 0xB2, - 0x77, 0x9D, 0xFB, 0xE5, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x55, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xCD, 0x7A, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x3F, 0xBB, 0xF1, 0xF4, 0xD4, 0x7F, 0x0A, 0x77, + 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, + 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2A, 0xA8, 0xE8, 0xF8, 0xDC, 0x8B, + 0x0E, 0x59, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x40, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x77, + 0xFF, 0xFF, 0xFF, 0x15, 0x0B, 0xE4, 0xFF, 0xFF, 0xFF, 0xB9, 0x7C, 0x9D, 0xFA, 0xEC, 0xFF, 0xFF, + 0xFF, 0x11, 0x64, 0xFF, 0xFF, 0xFF, 0x99, 0x00, 0x00, 0x00, 0x54, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, + 0xAC, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x00, 0xD9, 0xFF, 0xFF, 0xFF, 0x10, 0xD7, 0xFF, + 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xFF, 0xFF, 0xFF, 0x10, 0xE9, 0xFF, 0xFF, 0xCD, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x10, 0xE9, 0xFF, 0xFF, 0xCC, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x82, 0xFF, 0xFF, 0xFF, 0x10, 0xD9, 0xFF, 0xFF, 0xE2, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x9B, 0xFF, 0xFF, 0xFF, 0x10, 0xB1, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x01, 0xDF, + 0xFF, 0xFF, 0xFF, 0x10, 0x6D, 0xFF, 0xFF, 0xFF, 0x93, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xFF, + 0xFF, 0x10, 0x12, 0xEE, 0xFF, 0xFF, 0xFF, 0xB2, 0x77, 0x9D, 0xFB, 0xE5, 0xFF, 0xFF, 0xFF, 0x10, + 0x00, 0x55, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0x7A, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, + 0x3F, 0xBB, 0xF1, 0xF4, 0xD4, 0x7F, 0x0A, 0x77, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, - 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0x10, 0x43, 0xFF, 0xFF, 0xFF, 0x27, 0x30, - 0xCA, 0xF9, 0xA7, 0x37, 0xFF, 0xFF, 0xFF, 0x40, 0xE2, 0xFF, 0xFF, 0xB8, 0x31, 0xFF, 0xFF, 0xFF, - 0xA6, 0xFF, 0xFF, 0xFF, 0xB8, 0x30, 0xFF, 0xFF, 0xFF, 0xFB, 0xA9, 0x1A, 0x07, 0x17, 0x30, 0xFF, - 0xFF, 0xFF, 0xE1, 0x06, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, 0x00, 0x00, - 0x30, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, - 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, - 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, - 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x30, - 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x9F, 0xD9, 0xF5, 0xF7, - 0xDD, 0xB7, 0x56, 0x04, 0x00, 0x00, 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC9, 0x10, 0x00, 0x00, 0x32, 0xFE, 0xFF, 0xFF, 0xAF, 0x6F, 0x66, 0x8A, 0xEF, 0xFF, 0xFF, - 0xA2, 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x4A, 0xF1, 0xD6, 0xB4, 0x02, - 0x00, 0x7E, 0xFF, 0xFF, 0xF2, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, - 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xA5, 0x6D, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xB6, 0xF7, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x39, 0x6E, - 0xAE, 0xF9, 0xFF, 0xFF, 0xFF, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, - 0xFB, 0xFF, 0xFF, 0x5A, 0x01, 0x98, 0xC6, 0xEB, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF4, 0xFF, - 0xFF, 0x4D, 0x00, 0x95, 0xFF, 0xFF, 0xF3, 0x91, 0x68, 0x61, 0x78, 0xCD, 0xFF, 0xFF, 0xEB, 0x0C, - 0x00, 0x0F, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x3F, 0x00, 0x00, 0x00, - 0x06, 0x66, 0xB6, 0xE3, 0xF9, 0xFC, 0xEE, 0xC6, 0x7F, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, - 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x94, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x30, - 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x30, 0x47, 0x68, 0xF6, 0xFF, 0xFF, 0xC2, 0x68, - 0x68, 0x13, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, - 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, - 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xF0, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x9A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xEC, 0xFF, 0xFF, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFF, 0xFF, 0xFF, - 0xA2, 0x81, 0x35, 0x00, 0x00, 0x78, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0x05, 0x82, - 0xDF, 0xFA, 0xEB, 0xC3, 0x35, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, - 0xFF, 0xFF, 0x10, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, - 0x10, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x64, - 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x64, 0xFF, 0xFF, + 0xFF, 0x10, 0x43, 0xFF, 0xFF, 0xFF, 0x27, 0x30, 0xCA, 0xF9, 0xA7, 0x37, 0xFF, 0xFF, 0xFF, 0x40, + 0xE2, 0xFF, 0xFF, 0xB8, 0x31, 0xFF, 0xFF, 0xFF, 0xA6, 0xFF, 0xFF, 0xFF, 0xB8, 0x30, 0xFF, 0xFF, + 0xFF, 0xFB, 0xA9, 0x1A, 0x07, 0x17, 0x30, 0xFF, 0xFF, 0xFF, 0xE1, 0x06, 0x00, 0x00, 0x00, 0x30, + 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x00, + 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, + 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, + 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x9F, 0xD9, 0xF5, 0xF7, 0xDD, 0xB7, 0x56, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x7B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC9, 0x10, 0x00, 0x00, 0x32, 0xFE, 0xFF, + 0xFF, 0xAF, 0x6F, 0x66, 0x8A, 0xEF, 0xFF, 0xFF, 0xA2, 0x00, 0x00, 0x7B, 0xFF, 0xFF, 0xD0, 0x00, + 0x00, 0x00, 0x00, 0x4A, 0xF1, 0xD6, 0xB4, 0x02, 0x00, 0x7E, 0xFF, 0xFF, 0xF2, 0x3D, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xA5, 0x6D, 0x2D, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDD, 0x67, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xB6, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x98, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x39, 0x6E, 0xAE, 0xF9, 0xFF, 0xFF, 0xFF, 0x29, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xFB, 0xFF, 0xFF, 0x5A, 0x01, 0x98, 0xC6, 0xEB, + 0x4D, 0x00, 0x00, 0x00, 0x00, 0x08, 0xF4, 0xFF, 0xFF, 0x4D, 0x00, 0x95, 0xFF, 0xFF, 0xF3, 0x91, + 0x68, 0x61, 0x78, 0xCD, 0xFF, 0xFF, 0xEB, 0x0C, 0x00, 0x0F, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xEF, 0x3F, 0x00, 0x00, 0x00, 0x06, 0x66, 0xB6, 0xE3, 0xF9, 0xFC, 0xEE, 0xC6, + 0x7F, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x35, + 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0xB0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x30, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x30, 0x47, 0x68, 0xF6, 0xFF, 0xFF, 0xC2, 0x68, 0x68, 0x13, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x98, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, + 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFF, 0xFF, 0xBE, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xCE, 0xFF, 0xFF, 0xFF, 0xA2, 0x81, 0x35, 0x00, 0x00, 0x78, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0x05, 0x82, 0xDF, 0xFA, 0xEB, 0xC3, 0x35, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x64, 0xFF, 0xFF, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, - 0x86, 0xFF, 0xFF, 0xFF, 0x10, 0x63, 0xFF, 0xFF, 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, - 0xFF, 0xFF, 0x10, 0x59, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x0A, 0xEB, 0xFF, 0xFF, 0xFF, - 0x10, 0x35, 0xFF, 0xFF, 0xFF, 0xDC, 0x16, 0x00, 0x01, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x03, - 0xE3, 0xFF, 0xFF, 0xFF, 0xED, 0xB8, 0xD8, 0xFF, 0xA3, 0xFF, 0xFF, 0xFF, 0x12, 0x00, 0x53, 0xFD, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x56, 0xFF, 0xFF, 0xFF, 0x17, 0x00, 0x00, 0x45, 0xBF, 0xF3, - 0xF4, 0xCB, 0x62, 0x00, 0x45, 0xFF, 0xFF, 0xFF, 0x24, 0xB8, 0xFF, 0xFF, 0xF9, 0x0D, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0x29, 0x5E, 0xFF, 0xFF, 0xFF, 0x54, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xCC, 0x00, 0x0D, 0xF6, 0xFF, 0xFF, 0xA2, 0x00, 0x00, 0x00, 0x00, - 0x31, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0xAA, 0xFF, 0xFF, 0xEC, 0x03, 0x00, 0x00, 0x00, 0x82, - 0xFF, 0xFF, 0xFC, 0x17, 0x00, 0x00, 0x51, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0xD4, 0xFF, - 0xFF, 0xB7, 0x00, 0x00, 0x00, 0x07, 0xEF, 0xFF, 0xFF, 0x8B, 0x00, 0x00, 0x25, 0xFF, 0xFF, 0xFF, - 0x5A, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xFF, 0xFF, 0xD9, 0x00, 0x00, 0x76, 0xFF, 0xFF, 0xF3, 0x0A, - 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x26, 0x00, 0xC6, 0xFF, 0xFF, 0xA1, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x02, 0xE6, 0xFF, 0xFF, 0x72, 0x18, 0xFE, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xBA, 0x62, 0xFF, 0xFF, 0xE5, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xF7, 0xB2, 0xFF, 0xFF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xDC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x29, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0xFF, 0xFF, 0x62, - 0x00, 0x00, 0x00, 0x02, 0xEF, 0xFF, 0xFF, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, - 0x26, 0x00, 0xB2, 0xFF, 0xFF, 0x98, 0x00, 0x00, 0x00, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0x00, - 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xE4, 0x00, 0x00, 0x71, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x77, - 0xFF, 0xFF, 0xF4, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x94, 0xFF, 0xFF, 0xA2, 0x00, 0x00, 0x30, 0xFF, - 0xFF, 0xFA, 0x08, 0x00, 0x00, 0xB9, 0xFF, 0xE7, 0xB0, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0xCB, 0xFF, - 0xFF, 0x60, 0x00, 0x00, 0x01, 0xED, 0xFF, 0xFF, 0x38, 0x00, 0x06, 0xF5, 0xFF, 0xAE, 0x7C, 0xFF, - 0xFF, 0x29, 0x00, 0x08, 0xFA, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0x6E, 0x00, - 0x3F, 0xFF, 0xFF, 0x72, 0x42, 0xFF, 0xFF, 0x6A, 0x00, 0x3B, 0xFF, 0xFF, 0xDC, 0x00, 0x00, 0x00, - 0x00, 0x6D, 0xFF, 0xFF, 0xA3, 0x00, 0x81, 0xFF, 0xFF, 0x31, 0x09, 0xF8, 0xFF, 0xAB, 0x00, 0x72, - 0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xFF, 0xFF, 0xD9, 0x00, 0xC4, 0xFF, 0xED, 0x02, - 0x00, 0xC0, 0xFF, 0xEB, 0x01, 0xAA, 0xFF, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xFF, - 0xFE, 0x19, 0xFA, 0xFF, 0xAC, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x2C, 0xE2, 0xFF, 0xFF, 0x17, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xA9, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x6A, 0x00, 0x00, 0x3E, 0xFF, 0xFF, - 0x7C, 0xFF, 0xFF, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, - 0x28, 0x00, 0x00, 0x06, 0xF6, 0xFF, 0xE1, 0xFF, 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x27, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0x50, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE5, 0xFF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0x00, - 0x7A, 0xFF, 0xFF, 0xFF, 0xFD, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, - 0xFF, 0x61, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFF, 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x3D, - 0xFD, 0xFF, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x00, 0x34, 0xFC, 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x85, - 0xFF, 0xFF, 0xFE, 0x3B, 0x00, 0x00, 0x04, 0xD0, 0xFF, 0xFF, 0xDD, 0x0D, 0x00, 0x00, 0x05, 0xCB, - 0xFF, 0xFF, 0xD7, 0x07, 0x00, 0x79, 0xFF, 0xFF, 0xFC, 0x39, 0x00, 0x00, 0x00, 0x00, 0x26, 0xF4, - 0xFF, 0xFF, 0x82, 0x24, 0xF7, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xFF, - 0xFF, 0xFA, 0xCE, 0xFF, 0xFF, 0xC6, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF2, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xF1, 0xFF, - 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xFF, 0xFF, 0xD1, 0x74, 0xFF, 0xFF, - 0xF7, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0xFF, 0xFF, 0xFD, 0x35, 0x03, 0xCC, 0xFF, 0xFF, - 0xCD, 0x05, 0x00, 0x00, 0x00, 0x23, 0xF3, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x31, 0xFC, 0xFF, 0xFF, - 0x85, 0x00, 0x00, 0x03, 0xC5, 0xFF, 0xFF, 0xE0, 0x0B, 0x00, 0x00, 0x00, 0x8D, 0xFF, 0xFF, 0xFC, - 0x3A, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0x49, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xFF, 0xFF, 0xDD, - 0x0C, 0x9B, 0xFF, 0xFF, 0xFF, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x25, - 0x37, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xFF, 0xFF, 0xC7, 0x00, 0x00, - 0xD3, 0xFF, 0xFF, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x29, 0xFF, 0xFF, 0xFF, 0x69, 0x00, 0x00, 0x70, - 0xFF, 0xFF, 0xFE, 0x1C, 0x00, 0x00, 0x00, 0x76, 0xFF, 0xFF, 0xF9, 0x12, 0x00, 0x00, 0x13, 0xF9, - 0xFF, 0xFF, 0x6E, 0x00, 0x00, 0x00, 0xC4, 0xFF, 0xFF, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xFF, - 0xFF, 0xC2, 0x00, 0x00, 0x14, 0xFD, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFF, 0xFF, - 0xFD, 0x17, 0x00, 0x5D, 0xFF, 0xFF, 0xEC, 0x05, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0xFF, 0xFF, - 0x67, 0x00, 0xA5, 0xFF, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xB5, - 0x00, 0xE8, 0xFF, 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1E, 0xFD, 0xFF, 0xF5, 0x35, - 0xFF, 0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0xB3, 0xFF, - 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, - 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xEB, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xFF, 0xFF, 0xF6, 0x0E, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xFD, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x73, 0xA1, 0xB9, 0xFE, 0xFF, 0xFF, 0xEA, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x92, 0xF4, 0xFB, 0xE2, 0xA7, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x40, 0x94, 0x94, 0x94, 0x94, 0x94, 0xDA, 0xFF, 0xFF, 0xFF, - 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xF9, 0xFF, 0xFF, 0xBC, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0B, 0xD9, 0xFF, 0xFF, 0xEA, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xFF, - 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x21, 0xF1, 0xFF, 0xFF, 0xCF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0xC7, 0xFF, 0xFF, 0xF5, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xFF, 0xFF, 0xFF, 0x63, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xFD, 0xFF, 0xFF, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xFF, 0xAB, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x09, 0xF4, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, - 0xDE, 0xFF, 0xFF, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x0E, 0xCF, 0xFF, 0xFF, 0x98, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x06, 0xBD, 0xFF, 0xF7, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x93, 0xFF, 0xE0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, + 0xFF, 0xFF, 0x10, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, + 0x10, 0x64, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x10, 0x64, + 0xFF, 0xFF, 0xFF, 0x31, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0xFF, 0xFF, 0x10, 0x63, 0xFF, 0xFF, + 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFF, 0xFF, 0x10, 0x59, 0xFF, 0xFF, 0xFF, 0x6F, + 0x00, 0x00, 0x00, 0x0A, 0xEB, 0xFF, 0xFF, 0xFF, 0x10, 0x35, 0xFF, 0xFF, 0xFF, 0xDC, 0x16, 0x00, + 0x01, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x03, 0xE3, 0xFF, 0xFF, 0xFF, 0xED, 0xB8, 0xD8, 0xFF, + 0xA3, 0xFF, 0xFF, 0xFF, 0x12, 0x00, 0x53, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8E, 0x56, 0xFF, + 0xFF, 0xFF, 0x17, 0x00, 0x00, 0x45, 0xBF, 0xF3, 0xF4, 0xCB, 0x62, 0x00, 0x45, 0xFF, 0xFF, 0xFF, + 0x24, 0xB8, 0xFF, 0xFF, 0xF9, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0x29, + 0x5E, 0xFF, 0xFF, 0xFF, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xCC, 0x00, 0x0D, + 0xF6, 0xFF, 0xFF, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x31, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x00, 0xAA, + 0xFF, 0xFF, 0xEC, 0x03, 0x00, 0x00, 0x00, 0x82, 0xFF, 0xFF, 0xFC, 0x17, 0x00, 0x00, 0x51, 0xFF, + 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0xD4, 0xFF, 0xFF, 0xB7, 0x00, 0x00, 0x00, 0x07, 0xEF, 0xFF, + 0xFF, 0x8B, 0x00, 0x00, 0x25, 0xFF, 0xFF, 0xFF, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x9D, 0xFF, 0xFF, + 0xD9, 0x00, 0x00, 0x76, 0xFF, 0xFF, 0xF3, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, + 0x26, 0x00, 0xC6, 0xFF, 0xFF, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xE6, 0xFF, 0xFF, 0x72, + 0x18, 0xFE, 0xFF, 0xFF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xBA, 0x62, + 0xFF, 0xFF, 0xE5, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xF7, 0xB2, 0xFF, + 0xFF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xFF, 0xFF, 0xFF, 0xFF, 0xD2, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x29, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x03, 0xF0, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x02, 0xEF, 0xFF, 0xFF, 0xFF, + 0x24, 0x00, 0x00, 0x00, 0x24, 0xFF, 0xFF, 0xFF, 0x26, 0x00, 0xB2, 0xFF, 0xFF, 0x98, 0x00, 0x00, + 0x00, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0x65, 0x00, 0x00, 0x00, 0x5C, 0xFF, 0xFF, 0xE4, 0x00, 0x00, + 0x71, 0xFF, 0xFF, 0xCD, 0x00, 0x00, 0x00, 0x77, 0xFF, 0xFF, 0xF4, 0xFF, 0xA6, 0x00, 0x00, 0x00, + 0x94, 0xFF, 0xFF, 0xA2, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFA, 0x08, 0x00, 0x00, 0xB9, 0xFF, 0xE7, + 0xB0, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0xCB, 0xFF, 0xFF, 0x60, 0x00, 0x00, 0x01, 0xED, 0xFF, 0xFF, + 0x38, 0x00, 0x06, 0xF5, 0xFF, 0xAE, 0x7C, 0xFF, 0xFF, 0x29, 0x00, 0x08, 0xFA, 0xFF, 0xFF, 0x1E, + 0x00, 0x00, 0x00, 0xAE, 0xFF, 0xFF, 0x6E, 0x00, 0x3F, 0xFF, 0xFF, 0x72, 0x42, 0xFF, 0xFF, 0x6A, + 0x00, 0x3B, 0xFF, 0xFF, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x6D, 0xFF, 0xFF, 0xA3, 0x00, 0x81, 0xFF, + 0xFF, 0x31, 0x09, 0xF8, 0xFF, 0xAB, 0x00, 0x72, 0xFF, 0xFF, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x2C, + 0xFF, 0xFF, 0xD9, 0x00, 0xC4, 0xFF, 0xED, 0x02, 0x00, 0xC0, 0xFF, 0xEB, 0x01, 0xAA, 0xFF, 0xFF, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE9, 0xFF, 0xFE, 0x19, 0xFA, 0xFF, 0xAC, 0x00, 0x00, 0x7F, + 0xFF, 0xFF, 0x2C, 0xE2, 0xFF, 0xFF, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0x6A, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0x7C, 0xFF, 0xFF, 0xD4, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x68, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x06, 0xF6, 0xFF, 0xE1, 0xFF, + 0xFF, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0xFF, 0xFF, 0xFF, 0xFF, 0xE5, 0x00, 0x00, + 0x00, 0x00, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE5, + 0xFF, 0xFF, 0xFF, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x7A, 0xFF, 0xFF, 0xFF, 0xFD, 0x11, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5, 0xFF, 0xFF, 0xFF, 0x61, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFF, + 0xFF, 0xFF, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xFD, 0xFF, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x00, + 0x34, 0xFC, 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x85, 0xFF, 0xFF, 0xFE, 0x3B, 0x00, 0x00, 0x04, 0xD0, + 0xFF, 0xFF, 0xDD, 0x0D, 0x00, 0x00, 0x05, 0xCB, 0xFF, 0xFF, 0xD7, 0x07, 0x00, 0x79, 0xFF, 0xFF, + 0xFC, 0x39, 0x00, 0x00, 0x00, 0x00, 0x26, 0xF4, 0xFF, 0xFF, 0x82, 0x24, 0xF7, 0xFF, 0xFF, 0x7F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0xFF, 0xFF, 0xFA, 0xCE, 0xFF, 0xFF, 0xC6, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xFF, 0xFF, 0xFF, 0xFF, 0xF2, 0x22, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0xF1, 0xFF, 0xFF, 0xFF, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4F, 0xFF, 0xFF, 0xFF, 0xFF, 0xBB, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x16, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xB2, 0xFF, 0xFF, 0xD1, 0x74, 0xFF, 0xFF, 0xF7, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, + 0xFF, 0xFF, 0xFD, 0x35, 0x03, 0xCC, 0xFF, 0xFF, 0xCD, 0x05, 0x00, 0x00, 0x00, 0x23, 0xF3, 0xFF, + 0xFF, 0x8F, 0x00, 0x00, 0x31, 0xFC, 0xFF, 0xFF, 0x85, 0x00, 0x00, 0x03, 0xC5, 0xFF, 0xFF, 0xE0, + 0x0B, 0x00, 0x00, 0x00, 0x8D, 0xFF, 0xFF, 0xFC, 0x3A, 0x00, 0x7B, 0xFF, 0xFF, 0xFF, 0x49, 0x00, + 0x00, 0x00, 0x00, 0x0B, 0xE0, 0xFF, 0xFF, 0xDD, 0x0C, 0x9B, 0xFF, 0xFF, 0xFF, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x8F, 0xFF, 0xFF, 0xFF, 0x25, 0x37, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xDC, 0xFF, 0xFF, 0xC7, 0x00, 0x00, 0xD3, 0xFF, 0xFF, 0xC8, 0x00, 0x00, 0x00, 0x00, + 0x29, 0xFF, 0xFF, 0xFF, 0x69, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFE, 0x1C, 0x00, 0x00, 0x00, 0x76, + 0xFF, 0xFF, 0xF9, 0x12, 0x00, 0x00, 0x13, 0xF9, 0xFF, 0xFF, 0x6E, 0x00, 0x00, 0x00, 0xC4, 0xFF, + 0xFF, 0xAE, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xFF, 0xFF, 0xC2, 0x00, 0x00, 0x14, 0xFD, 0xFF, 0xFF, + 0x50, 0x00, 0x00, 0x00, 0x00, 0x46, 0xFF, 0xFF, 0xFD, 0x17, 0x00, 0x5D, 0xFF, 0xFF, 0xEC, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x02, 0xE0, 0xFF, 0xFF, 0x67, 0x00, 0xA5, 0xFF, 0xFF, 0x95, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xB5, 0x00, 0xE8, 0xFF, 0xFF, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1E, 0xFD, 0xFF, 0xF5, 0x35, 0xFF, 0xFF, 0xD9, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0xB3, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0xEB, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x8E, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x9D, 0xFF, 0xFF, 0xF6, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0xFD, + 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xA1, 0xB9, 0xFE, 0xFF, 0xFF, + 0xEA, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x42, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0xF4, 0xFB, 0xE2, 0xA7, 0x2C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x70, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x00, 0x40, 0x94, + 0x94, 0x94, 0x94, 0x94, 0xDA, 0xFF, 0xFF, 0xFF, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, + 0xF9, 0xFF, 0xFF, 0xBC, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xD9, 0xFF, 0xFF, 0xEA, 0x19, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x58, 0xFF, 0xFF, 0xFF, 0x91, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xF1, 0xFF, 0xFF, + 0xCF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xC7, 0xFF, 0xFF, 0xF5, 0x28, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x87, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xFD, + 0xFF, 0xFF, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDF, 0xFF, 0xFF, 0xFF, 0xAB, 0x9C, + 0x9C, 0x9C, 0x9C, 0x9C, 0x9C, 0x09, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x10, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x4C, 0xA1, 0xC4, 0xDD, 0xB3, 0x00, 0x00, 0x00, 0x00, 0x19, 0xCE, 0xFF, + 0xF3, 0x79, 0x2D, 0x02, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xFF, 0xFF, 0x48, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xF5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, + 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, + 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, + 0xFF, 0xFF, 0xD5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xFF, 0xFF, 0x87, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x2E, 0x92, 0xFC, 0xFF, 0xB0, 0x06, 0x00, 0x00, 0x00, 0x00, 0xD6, 0xFF, 0xFF, + 0xFC, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x23, 0x84, 0xFA, 0xFF, 0xB7, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xFF, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0xFD, 0xFF, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xE7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, + 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB, + 0xFF, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAD, 0xFF, 0xFF, 0x4B, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0xC2, 0xFF, 0xF5, 0x7A, 0x28, 0x04, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x5B, 0xA0, 0xD4, 0xE7, 0xB6, 0x7B, 0xB5, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, + 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, + 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, + 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0xA7, 0xEF, 0x72, 0xC5, 0xC9, 0xE0, 0xCD, 0x97, 0x51, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x2C, 0x84, 0xF9, 0xFF, 0xB6, 0x14, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5B, 0xFF, 0xFF, 0x9C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, + 0xFE, 0xFF, 0xDB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xFF, 0xF2, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0x64, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xB6, 0xFF, 0xFB, 0x83, 0x26, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, + 0x85, 0xFE, 0xFF, 0xFF, 0xBD, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xC7, 0xFF, 0xF7, 0x79, 0x23, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x9F, 0xFF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, + 0xFF, 0xF6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE8, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF7, 0xFF, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xFE, 0xFF, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x58, 0xFF, 0xFF, 0x9D, 0x00, 0x00, 0x00, 0x00, 0x04, 0x31, + 0x80, 0xF7, 0xFF, 0xC6, 0x12, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xDF, 0xC6, 0xA2, 0x49, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x4A, 0x65, 0xDA, 0xDA, 0x8D, 0x16, 0x00, 0x00, 0x00, 0x00, + 0x0E, 0x9C, 0x34, 0x45, 0xED, 0x9C, 0x42, 0x2E, 0x63, 0xD4, 0xF3, 0x85, 0x3B, 0x2B, 0x6A, 0xE0, + 0x77, 0x00, 0xB1, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x02, 0x5C, 0xC5, 0xEE, 0x9A, 0x42, 0x43, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xDE, 0xFF, 0xFF, 0xA7, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xCF, 0xFF, 0xFF, + 0x98, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xBD, + 0xFF, 0xF7, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x93, 0xFF, 0xE0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF5, - 0xFF, 0xFF, 0xFF, 0xC5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0xFD, 0xFF, 0xFF, 0xA7, 0xFF, 0xFF, 0xDA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xFF, 0xFF, 0xE8, 0x28, 0xFF, 0xFF, - 0xFF, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xFF, 0xFF, 0x99, - 0x00, 0xD8, 0xFF, 0xFF, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, - 0xFF, 0xFF, 0x47, 0x00, 0x86, 0xFF, 0xFF, 0xEB, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x8D, 0xFF, 0xFF, 0xEE, 0x05, 0x00, 0x32, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x03, 0xE6, 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x00, 0xDD, 0xFF, 0xFF, 0xA9, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x8A, 0xFF, - 0xFF, 0xF7, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0xF2, 0x07, 0x00, 0x00, - 0x00, 0x36, 0xFF, 0xFF, 0xFF, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xF4, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1D, 0x00, 0x00, 0x00, - 0x00, 0xBA, 0xFF, 0xFF, 0xFD, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD8, 0xFF, 0xFF, 0xFF, 0x77, - 0x00, 0x00, 0x00, 0x1A, 0xFD, 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xEB, - 0xFF, 0xFF, 0xD4, 0x00, 0x00, 0x00, 0x74, 0xFF, 0xFF, 0xFF, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xEE, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xFF, 0xFF, 0xFF, 0x8D, 0x00, 0x2D, 0xFF, 0xFF, 0xFF, 0x94, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCD, 0xFF, 0xFF, 0xE6, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xAC, 0xFF, 0xFF, 0xEA, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xFF, 0xFF, 0xC9, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7C, 0xFF, 0xFF, 0x9A, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xF8, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xF5, 0xFF, 0xFF, 0xFF, 0xC5, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1B, 0xFD, 0xFF, 0xFF, 0xA7, 0xFF, 0xFF, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x76, 0xFF, 0xFF, 0xE8, 0x28, 0xFF, 0xFF, 0xFF, 0x37, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xFF, 0xFF, 0x99, 0x00, 0xD8, 0xFF, 0xFF, 0x94, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x47, 0x00, 0x86, + 0xFF, 0xFF, 0xEB, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8D, 0xFF, 0xFF, 0xEE, + 0x05, 0x00, 0x32, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE6, + 0xFF, 0xFF, 0xA0, 0x00, 0x00, 0x00, 0xDD, 0xFF, 0xFF, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x47, 0xFF, 0xFF, 0xFF, 0x4C, 0x00, 0x00, 0x00, 0x8A, 0xFF, 0xFF, 0xF7, 0x0E, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0xF2, 0x07, 0x00, 0x00, 0x00, 0x36, 0xFF, 0xFF, 0xFF, + 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1D, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xFF, 0xFF, 0xFD, + 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD0, 0xD8, 0xFF, 0xFF, 0xFF, 0x77, 0x00, 0x00, 0x00, 0x1A, 0xFD, + 0xFF, 0xFF, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xEB, 0xFF, 0xFF, 0xD4, 0x00, 0x00, + 0x00, 0x74, 0xFF, 0xFF, 0xFF, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, + 0xFF, 0x30, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xEE, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2E, 0xFF, 0xFF, 0xFF, 0x8D, 0x00, 0x2D, 0xFF, 0xFF, 0xFF, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xCD, 0xFF, 0xFF, 0xE6, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xAC, 0xFF, 0xFF, 0xEA, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x95, 0xFF, 0xFF, 0xC9, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, + 0xFF, 0xFF, 0x9A, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, + 0xF8, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0xF1, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xB9, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0xF1, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0x07, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, - 0xFF, 0xFF, 0xF1, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0x4A, 0x44, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x44, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x00, 0x00, - 0x13, 0xD7, 0xFF, 0xFF, 0xB3, 0x00, 0x0A, 0xC7, 0xFF, 0xFF, 0xA1, 0x09, 0x03, 0xB3, 0xFF, 0xF9, - 0x6A, 0x00, 0x00, 0x87, 0xFF, 0xE5, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xD0, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0xF1, 0xE4, 0xE4, + 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xB9, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0xF1, 0xE4, 0xE4, + 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0x07, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0xF1, 0xE4, 0xE4, + 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0xE4, 0x4A, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x00, 0x00, 0x13, 0xD7, 0xFF, 0xFF, 0xB3, + 0x00, 0x0A, 0xC7, 0xFF, 0xFF, 0xA1, 0x09, 0x03, 0xB3, 0xFF, 0xF9, 0x6A, 0x00, 0x00, 0x87, 0xFF, + 0xE5, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, + 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, - 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x44, - 0xFF, 0xFF, 0xFF, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xDC, 0xF5, 0xA5, 0x1F, 0x00, - 0x00, 0x80, 0xFF, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF6, 0xFF, 0xFF, 0xFF, 0xF5, - 0x77, 0x38, 0xDE, 0xFF, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFF, 0xB1, 0x35, 0x97, - 0xFE, 0xFF, 0xFF, 0xFF, 0xD2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0x46, 0x00, - 0x00, 0x36, 0xC0, 0xF6, 0xC4, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0xDC, 0xF5, 0xA5, 0x1F, 0x00, 0x00, 0x80, 0xFF, 0x48, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0xF6, 0xFF, 0xFF, 0xFF, 0xF5, 0x77, 0x38, 0xDE, 0xFF, 0x24, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFF, 0xB1, 0x35, 0x97, 0xFE, 0xFF, 0xFF, 0xFF, 0xD2, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0xFF, 0x46, 0x00, 0x00, 0x36, 0xC0, 0xF6, 0xC4, + 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, - 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, - 0xFF, 0xFF, 0xD7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xED, 0x11, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, - 0x44, 0xFF, 0xFF, 0xEB, 0xE8, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, - 0x08, 0x44, 0xFF, 0xFF, 0xF6, 0x65, 0xFF, 0xFF, 0xFA, 0x26, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, - 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x09, 0xD2, 0xFF, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0x4C, 0xFF, - 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x0F, 0x45, 0xFF, 0xFF, 0xFF, 0x42, 0x00, 0x00, 0x4C, - 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0xB6, 0xFF, 0xFF, 0xD0, 0x02, 0x00, - 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x2A, 0xFC, 0xFF, 0xFF, 0x64, - 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x96, 0xFF, 0xFF, - 0xE7, 0x0C, 0x4A, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x15, 0xF1, - 0xFF, 0xFF, 0x85, 0x44, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, - 0x77, 0xFF, 0xFF, 0xF7, 0x55, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, - 0x00, 0x07, 0xDF, 0xFF, 0xFF, 0xC6, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, - 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51, 0xFD, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0xF7, 0xFF, 0xF2, 0x53, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xEF, 0xFF, 0xD7, 0x29, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE3, 0xFF, - 0xAD, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xD7, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xED, 0x11, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xEB, 0xE8, + 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xF6, + 0x65, 0xFF, 0xFF, 0xFA, 0x26, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, + 0xFF, 0x09, 0xD2, 0xFF, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, + 0xFF, 0xFF, 0x0F, 0x45, 0xFF, 0xFF, 0xFF, 0x42, 0x00, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, 0x44, + 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0xB6, 0xFF, 0xFF, 0xD0, 0x02, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, 0x08, + 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x2A, 0xFC, 0xFF, 0xFF, 0x64, 0x00, 0x4C, 0xFF, 0xFF, 0xFF, + 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x96, 0xFF, 0xFF, 0xE7, 0x0C, 0x4A, 0xFF, 0xFF, + 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x15, 0xF1, 0xFF, 0xFF, 0x85, 0x44, 0xFF, + 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x77, 0xFF, 0xFF, 0xF7, 0x55, + 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x07, 0xDF, 0xFF, 0xFF, + 0xC6, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x57, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xC7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x39, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x44, 0xFF, 0xFF, 0xFF, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xA8, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x51, 0xFD, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3D, 0xF7, 0xFF, 0xF2, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xEF, 0xFF, 0xD7, 0x29, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE3, 0xFF, 0xAD, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x13, 0x72, 0xB5, 0xE1, 0xF4, 0xF7, 0xE4, 0xBE, 0x7E, 0x1E, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x77, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFA, 0x8F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0x07, 0x00, 0x00, 0x00, 0x75, 0xFF, 0xFF, 0xFF, 0xFA, 0x8D, - 0x2B, 0x03, 0x01, 0x21, 0x7A, 0xF3, 0xFF, 0xFF, 0xFF, 0x9B, 0x00, 0x00, 0x11, 0xF1, 0xFF, 0xFF, - 0xFD, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0xF4, 0xFF, 0xFF, 0xFE, 0x2E, 0x00, 0x6C, - 0xFF, 0xFF, 0xFF, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xFF, 0xFF, 0xFF, - 0x98, 0x00, 0xAD, 0xFF, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, - 0xFA, 0xFF, 0xFF, 0xDA, 0x00, 0xD5, 0xFF, 0xFF, 0xF3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xCF, 0xFF, 0xFF, 0xFE, 0x04, 0xE8, 0xFF, 0xFF, 0xDE, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7, 0xFF, 0xFF, 0xFF, 0x17, 0xE5, 0xFF, 0xFF, 0xE1, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xFF, 0xFF, 0xFF, 0x17, 0xD2, 0xFF, - 0xFF, 0xF7, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xFC, - 0x06, 0xA5, 0xFF, 0xFF, 0xFF, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, - 0xFF, 0xFF, 0xD4, 0x00, 0x61, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x74, 0xFF, 0xFF, 0xFF, 0x89, 0x00, 0x0A, 0xEA, 0xFF, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x32, 0xF4, 0xFF, 0xFF, 0xFA, 0x21, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFD, - 0x97, 0x2E, 0x03, 0x01, 0x20, 0x7A, 0xF3, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x91, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x6B, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x6F, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x6F, 0xB5, 0xE2, 0xF5, 0xFA, 0xE7, 0xBD, 0x77, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xB6, - 0xFF, 0xFF, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, - 0xFF, 0xFF, 0xC2, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, - 0xFF, 0xFF, 0x90, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, - 0xFF, 0xF5, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, + 0x72, 0xB5, 0xE1, 0xF4, 0xF7, 0xE4, 0xBE, 0x7E, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x77, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFA, 0x8F, 0x05, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xA4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC1, 0x07, 0x00, 0x00, 0x00, 0x75, 0xFF, 0xFF, 0xFF, 0xFA, 0x8D, 0x2B, 0x03, 0x01, 0x21, 0x7A, + 0xF3, 0xFF, 0xFF, 0xFF, 0x9B, 0x00, 0x00, 0x11, 0xF1, 0xFF, 0xFF, 0xFD, 0x4A, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x33, 0xF4, 0xFF, 0xFF, 0xFE, 0x2E, 0x00, 0x6C, 0xFF, 0xFF, 0xFF, 0x95, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0xFF, 0xFF, 0xFF, 0x98, 0x00, 0xAD, 0xFF, 0xFF, + 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xFA, 0xFF, 0xFF, 0xDA, 0x00, + 0xD5, 0xFF, 0xFF, 0xF3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCF, 0xFF, + 0xFF, 0xFE, 0x04, 0xE8, 0xFF, 0xFF, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xB7, 0xFF, 0xFF, 0xFF, 0x17, 0xE5, 0xFF, 0xFF, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xBA, 0xFF, 0xFF, 0xFF, 0x17, 0xD2, 0xFF, 0xFF, 0xF7, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xFC, 0x06, 0xA5, 0xFF, 0xFF, 0xFF, + 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xD4, 0x00, 0x61, + 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74, 0xFF, 0xFF, 0xFF, + 0x89, 0x00, 0x0A, 0xEA, 0xFF, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0xF4, + 0xFF, 0xFF, 0xFA, 0x21, 0x00, 0x00, 0x63, 0xFF, 0xFF, 0xFF, 0xFD, 0x97, 0x2E, 0x03, 0x01, 0x20, + 0x7A, 0xF3, 0xFF, 0xFF, 0xFF, 0x74, 0x00, 0x00, 0x00, 0x00, 0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFD, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6B, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x6F, 0xB5, 0xE2, 0xF5, 0xFA, 0xE7, 0xBD, 0x77, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xB6, 0xFF, 0xFF, 0xE3, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xC2, 0x17, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x88, 0xFF, 0xFF, 0x90, 0x04, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0xFF, 0xF5, 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 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, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, - 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, - 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, - 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, - 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x91, 0xFF, 0xFF, 0xFF, 0x2F, 0x68, 0xFF, 0xFF, 0xFF, 0x5C, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0x22, 0x51, 0xFF, 0xFF, 0xFF, 0x8B, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xD8, 0xFF, 0xFF, 0xFC, 0x0A, 0x19, 0xFF, 0xFF, 0xFF, 0xE9, 0x12, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x57, 0xFF, 0xFF, 0xFF, 0xC5, 0x00, 0x00, 0xB6, 0xFF, 0xFF, 0xFF, 0xD0, - 0x42, 0x04, 0x00, 0x15, 0x75, 0xF8, 0xFF, 0xFF, 0xFF, 0x55, 0x00, 0x00, 0x28, 0xF0, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFC, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x36, 0xDE, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x8D, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x60, 0xAF, 0xE1, 0xF6, 0xFA, 0xEA, 0xC5, 0x87, 0x24, 0x00, 0x00, 0x00, 0x00 + 0x30, 0x70, 0xFF, 0xFF, 0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xFF, 0xFF, + 0xFF, 0x2F, 0x68, 0xFF, 0xFF, 0xFF, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, + 0xFF, 0xFF, 0x22, 0x51, 0xFF, 0xFF, 0xFF, 0x8B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD8, + 0xFF, 0xFF, 0xFC, 0x0A, 0x19, 0xFF, 0xFF, 0xFF, 0xE9, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, + 0xFF, 0xFF, 0xFF, 0xC5, 0x00, 0x00, 0xB6, 0xFF, 0xFF, 0xFF, 0xD0, 0x42, 0x04, 0x00, 0x15, 0x75, + 0xF8, 0xFF, 0xFF, 0xFF, 0x55, 0x00, 0x00, 0x28, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF5, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x36, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x8D, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x60, 0xAF, 0xE1, 0xF6, + 0xFA, 0xEA, 0xC5, 0x87, 0x24, 0x00, 0x00, 0x00, 0x00 }; diff --git a/sketch/obd2_gauge/cluster_screen.h b/sketch/obd2_gauge/cluster_screen.h index 8e8aa64..dc5b727 100644 --- a/sketch/obd2_gauge/cluster_screen.h +++ b/sketch/obd2_gauge/cluster_screen.h @@ -97,44 +97,38 @@ inline void drawClusterBaseCards(int x_offset = 0) { uint16_t cCool = isRainbowTheme() ? getRainbowScreenColor(20, 150) : (isYapaTheme() ? getYapaColor(2) : priCol); uint16_t cVolt = isRainbowTheme() ? getRainbowScreenColor(180, 150) : (isYapaTheme() ? getYapaColor(3) : accCol); - // 1. TACHOMETER CARD (x: 8, y: 8, w: 304, h: 50) - tft.fillRoundRect(8 + x_offset, 8, 304, 50, 5, cardBg); - tft.drawRoundRect(8 + x_offset, 8, 304, 50, 5, border); - // Tachometer background rail on the LEFT (x: 18 to 90, w: 72, h: 14) - tft.fillRoundRect(18 + x_offset, 15, 72, 14, 3, 0x0841); - if (isYapaTheme()) { - int sx = 20 + x_offset; - char buf[2] = {0, 0}; - for (int i = 0; i < 7; i++) { - buf[0] = '1' + i; - tft.setTextColor(getYapaColor(i), cardBg); - tft.drawString(buf, sx, 32, 1); - sx += tft.textWidth(buf, 1) + tft.textWidth(" ", 1); - } - } else { - tft.setTextColor(cRpm, cardBg); - tft.drawString("1 2 3 4 5 6 7", 20 + x_offset, 32, 1); + // 1. TACHOMETER CARD (x: 8, y: 8, w: 304, h: 58) + tft.fillRoundRect(8 + x_offset, 8, 304, 58, 5, cardBg); + tft.drawRoundRect(8 + x_offset, 8, 304, 58, 5, border); + tft.fillRoundRect(14 + x_offset, 14, 4, 46, 2, cRpm); + // Tachometer triangle VU-meter inactive background slots (14 steps, ramp h: 5..31 px, x: 24..106) + for (int s = 0; s < 14; s++) { + int barX = 24 + s * 6 + x_offset; + int barH = 5 + s * 2; + int barY = 54 - barH; + tft.fillRect(barX, barY, 4, barH, 0x2145); } - // "RPM" unit on the far right in Chakra Petch Bold Italic (aligned with foot of digits at y = 55) - drawRpm_AA(tft, 242 + x_offset, 35, cRpm, cardBg, 240, isRainbowTheme()); + // "RPM" unit on the far right in Chakra Petch Bold Italic (aligned with foot of digits at y = 59) + drawRpm_AA(tft, 242 + x_offset, 39, cRpm, cardBg, 240, isRainbowTheme()); - // 2. SPEEDOMETER CARD (x: 8, y: 62, w: 304, h: 86) - tft.fillRoundRect(8 + x_offset, 62, 304, 86, 5, cardBg); - tft.drawRoundRect(8 + x_offset, 62, 304, 86, 5, border); - // Large anti-aliased "KM/H" (Chakra Petch Bold Italic) at far right (baseline at y = 145) - drawKmH_AA(tft, 198 + x_offset, 117, cSpd, cardBg, 240, isRainbowTheme()); + // 2. SPEEDOMETER CARD (x: 8, y: 70, w: 304, h: 100) + tft.fillRoundRect(8 + x_offset, 70, 304, 100, 5, cardBg); + tft.drawRoundRect(8 + x_offset, 70, 304, 100, 5, border); + tft.fillRoundRect(14 + x_offset, 78, 4, 84, 2, cSpd); + // Large anti-aliased "KM/H" (Chakra Petch Bold Italic) at far right (baseline at y = 160) + drawKmH_AA(tft, 198 + x_offset, 132, cSpd, cardBg, 240, isRainbowTheme()); - // 3. COOLANT TEMP CARD (x: 8, y: 152, w: 148, h: 84) - tft.fillRoundRect(8 + x_offset, 152, 148, 84, 5, cardBg); - tft.drawRoundRect(8 + x_offset, 152, 148, 84, 5, border); - drawTitRef_AA(tft, 28 + x_offset, 158, cCool, cardBg, 240, isRainbowTheme()); - drawDegreeC_AA(tft, 117 + x_offset, 198, cCool, cardBg, 240, isRainbowTheme()); + // 3. COOLANT TEMP CARD (x: 8, y: 174, w: 148, h: 62) + tft.fillRoundRect(8 + x_offset, 174, 148, 62, 5, cardBg); + tft.drawRoundRect(8 + x_offset, 174, 148, 62, 5, border); + tft.fillRoundRect(14 + x_offset, 182, 4, 46, 2, cCool); + draw7SegDegreeC(tft, 118 + x_offset, 201, cCool, cardBg, isRainbowTheme()); - // 4. BATTERY VOLTAGE CARD (x: 164, y: 152, w: 148, h: 84) - tft.fillRoundRect(164 + x_offset, 152, 148, 84, 5, cardBg); - tft.drawRoundRect(164 + x_offset, 152, 148, 84, 5, border); - drawTitBat_AA(tft, 208 + x_offset, 158, cVolt, cardBg, 240, isRainbowTheme()); - drawVolt_AA(tft, 286 + x_offset, 198, cVolt, cardBg, 240, isRainbowTheme()); + // 4. BATTERY VOLTAGE CARD (x: 164, y: 174, w: 148, h: 62) + tft.fillRoundRect(164 + x_offset, 174, 148, 62, 5, cardBg); + tft.drawRoundRect(164 + x_offset, 174, 148, 62, 5, border); + tft.fillRoundRect(170 + x_offset, 182, 4, 46, 2, cVolt); + drawVolt_AA(tft, 286 + x_offset, 202, cVolt, cardBg, 240, isRainbowTheme()); } // Initial direct draw of Page 0 @@ -179,21 +173,23 @@ inline void updateClusterScreen(bool forceRedraw) { if (forceRedraw || abs(curRpm - oldClusterRpm) >= 20 || (curRpm == 0 && oldClusterRpm != 0)) { oldClusterRpm = curRpm; - // Segmented Tachometer Bar on the LEFT (10 segments between x: 20 and 88) - int activeSegs = map(constrain(curRpm, 0, 7000), 0, 7000, 0, 10); + // Segmented Tachometer Triangle VU-Meter on the LEFT (14 steps from 0 to 7000 RPM, ramp h: 5..31 px, x: 24..106) + int activeSegs = (curRpm > 0) ? map(constrain(curRpm, 0, 7000), 0, 7000, 1, 14) : 0; if (activeSegs != oldClusterSegs || forceRedraw) { oldClusterSegs = activeSegs; - for (int s = 0; s < 10; s++) { - int sx = 20 + s * 7; + for (int s = 0; s < 14; s++) { + int barX = 24 + s * 6; + int barH = 5 + s * 2; + int barY = 54 - barH; uint16_t segCol; if (s < activeSegs) { - if (s >= 8) segCol = TFT_RED; - else if (s >= 6) segCol = 0xFD60; - else segCol = isRainbowTheme() ? getRainbowScreenColor(sx, 20) : (isYapaTheme() ? getYapaColor(s) : cRpm); + if (s >= 12) segCol = TFT_RED; + else if (s >= 9) segCol = 0xFD60; + else segCol = isRainbowTheme() ? getRainbowScreenColor(barX, barY) : (isYapaTheme() ? getYapaColor(s) : cRpm); } else { - segCol = 0x0841; // inactive dark track + segCol = 0x2145; // inactive dark track } - tft.fillRect(sx, 17, 5, 10, segCol); + tft.fillRect(barX, barY, 4, barH, segCol); } } @@ -202,17 +198,17 @@ inline void updateClusterScreen(bool forceRedraw) { if (curRpm > 0) { uint16_t rpmCol = (curRpm >= 6000) ? TFT_RED : ((curRpm >= 4500) ? 0xFD60 : cRpm); String rpmStr = String(curRpm); - drawDseg7RightFast44(tft, rpmStr.c_str(), 238, 11, rpmCol, cardBg, 138, rainbowTxt && (rpmCol != TFT_RED)); + drawDseg7RightFast44(tft, rpmStr.c_str(), 238, 15, rpmCol, cardBg, 138, rainbowTxt && (rpmCol != TFT_RED)); } else { - drawDseg7RightFast44(tft, "---", 238, 11, cRpm, cardBg, 138, rainbowTxt); + drawDseg7RightFast44(tft, "---", 238, 15, cRpm, cardBg, 138, rainbowTxt); } } - // ECO Indicator in Card 1 centered directly above RPM unit (x = 248, y = 14, w = 48, h = 17) + // ECO Indicator in Card 1 centered directly above RPM unit (x = 248, y = 15, w = 48, h = 17) if (forceRedraw || isEcoOptimal != oldClusterEco) { oldClusterEco = isEcoOptimal; if (isEcoOptimal) { - tft.fillRoundRect(248, 14, 48, 17, 3, 0x0202); + tft.fillRoundRect(248, 15, 48, 17, 3, 0x0202); if (isYapaTheme()) { char buf[2] = {0, 0}; const char *ecoStr = "ECO"; @@ -220,16 +216,16 @@ inline void updateClusterScreen(bool forceRedraw) { for (int i = 0; i < 3; i++) { buf[0] = ecoStr[i]; tft.setTextColor(getYapaColor(i), 0x0202); - tft.drawString(buf, ex, 15, 2); + tft.drawString(buf, ex, 16, 2); ex += tft.textWidth(buf, 2); } } else { tft.setTextColor(TFT_WHITE, 0x0202); - tft.drawString("ECO", 260, 15, 2); + tft.drawString("ECO", 260, 16, 2); } - tft.drawRoundRect(248, 14, 48, 17, 3, 0x07E0); + tft.drawRoundRect(248, 15, 48, 17, 3, 0x07E0); } else { - tft.fillRect(248, 14, 48, 17, cardBg); + tft.fillRect(248, 15, 48, 17, cardBg); } } @@ -240,33 +236,33 @@ inline void updateClusterScreen(bool forceRedraw) { int curSpd = (curSpdF >= 0.0f) ? (int)round(curSpdF) : -999; bool isGps = isClusterSpeedFromGps(); - // GPS Satellite icon in Card 2 centered directly above KM/H (where ECO was): x = 243, y = 82, w = 18, h = 18 + // GPS Satellite icon in Card 2 centered directly above KM/H: x = 238, y = 88, w = 28, h = 28 (same large 28x28 icon as Satélites GPS) // Only shows satellite icon if speed comes from GPS; clears when speed is from OBD2 if (forceRedraw || isGps != oldClusterGpsLock) { oldClusterGpsLock = isGps; if (isGps) { - drawGpsSatelliteIcon(tft, 243, 82, 0x07FF, 0x07FF, cardBg, 2); + drawLargeGpsSatelliteIcon(tft, 238, 88, TFT_WHITE, 0x07FF, cardBg, 2); } else { - tft.fillRect(238, 80, 28, 22, cardBg); + tft.fillRect(236, 86, 32, 32, cardBg); } } if (forceRedraw || curSpd != oldClusterSpd) { oldClusterSpd = curSpd; - // Giant Speed Display using DSEG7 80pt rendered with zero-flicker line buffer (x: 14..194, rightX: 194) + // Giant Speed Display using DSEG7 80pt rendered with zero-flicker line buffer (x: 24..194, rightX: 194) if (curSpd >= 0) { String spdStr = String(curSpd); - uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(194, 105) : cSpd; - drawDseg7RightFast80(tft, spdStr.c_str(), 194, 65, spdCol, cardBg, 180, isRainbowTheme()); + uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(194, 120) : cSpd; + drawDseg7RightFast80(tft, spdStr.c_str(), 194, 80, spdCol, cardBg, 168, isRainbowTheme()); } else { - uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(194, 105) : cSpd; - drawDseg7RightFast80(tft, "---", 194, 65, spdCol, cardBg, 180, isRainbowTheme()); + uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(194, 120) : cSpd; + drawDseg7RightFast80(tft, "---", 194, 80, spdCol, cardBg, 168, isRainbowTheme()); } } // ------------------------------------------------------------- - // 3. COOLANT TEMP (REFRIGERANTE) + // 3. COOLANT TEMP (REFRIGERANTE / AGUA) // ------------------------------------------------------------- float curCoolF = getClusterCoolantVal(); int curCool = (curCoolF > -900.0f) ? (int)round(curCoolF) : -999; @@ -277,14 +273,20 @@ inline void updateClusterScreen(bool forceRedraw) { uint16_t coolCol = (curCool >= 105) ? TFT_RED : ((curCool < 70) ? 0x05BF : cCool); String valStr = String(curCool); bool rainbowTxt = isRainbowTheme(); - drawDseg7RightFast44(tft, valStr.c_str(), 112, 179, coolCol, cardBg, 102, rainbowTxt && (coolCol != TFT_RED)); + drawDseg7RightFast44(tft, valStr.c_str(), 114, 183, coolCol, cardBg, 90, rainbowTxt && (coolCol != TFT_RED)); if (coolCol != oldClusterCoolCol || forceRedraw) { oldClusterCoolCol = coolCol; - drawDegreeC_AA(tft, 117, 198, coolCol, cardBg, 240, rainbowTxt); + tft.fillRoundRect(14, 182, 4, 46, 2, coolCol); + draw7SegDegreeC(tft, 118, 201, coolCol, cardBg, rainbowTxt && (coolCol != TFT_RED)); } } else { - drawDseg7RightFast44(tft, "---", 112, 179, cCool, cardBg, 102, isRainbowTheme()); + drawDseg7RightFast44(tft, "---", 114, 183, cCool, cardBg, 90, isRainbowTheme()); + if (cCool != oldClusterCoolCol || forceRedraw) { + oldClusterCoolCol = cCool; + tft.fillRoundRect(14, 182, 4, 46, 2, cCool); + draw7SegDegreeC(tft, 118, 201, cCool, cardBg, isRainbowTheme()); + } } } @@ -299,14 +301,20 @@ inline void updateClusterScreen(bool forceRedraw) { uint16_t voltCol = (curVolt < 11.8f || curVolt > 15.0f) ? TFT_RED : ((curVolt >= 13.5f) ? 0x07E0 : cVolt); String voltStr = String(curVolt, 1); bool rainbowTxt = isRainbowTheme(); - drawDseg7RightFast44(tft, voltStr.c_str(), 282, 179, voltCol, cardBg, 112, rainbowTxt && (voltCol != TFT_RED)); + drawDseg7RightFast44(tft, voltStr.c_str(), 282, 183, voltCol, cardBg, 106, rainbowTxt && (voltCol != TFT_RED)); if (voltCol != oldClusterVoltCol || forceRedraw) { oldClusterVoltCol = voltCol; - drawVolt_AA(tft, 286, 198, voltCol, cardBg, 240, rainbowTxt); + tft.fillRoundRect(170, 182, 4, 46, 2, voltCol); + drawVolt_AA(tft, 286, 202, voltCol, cardBg, 240, rainbowTxt); } } else { - drawDseg7RightFast44(tft, "---", 282, 179, cVolt, cardBg, 112, isRainbowTheme()); + drawDseg7RightFast44(tft, "---", 282, 183, cVolt, cardBg, 106, isRainbowTheme()); + if (cVolt != oldClusterVoltCol || forceRedraw) { + oldClusterVoltCol = cVolt; + tft.fillRoundRect(170, 182, 4, 46, 2, cVolt); + drawVolt_AA(tft, 286, 202, cVolt, cardBg, 240, isRainbowTheme()); + } } } } @@ -332,56 +340,43 @@ inline void renderClusterScreenToSprite(TFT_eSprite &s, int x_offset, int y_slic s.fillCircle(181, 2, 2, 0x5AEB); } - // 1. TACHOMETER CARD (y: 8 to 58) + // 1. TACHOMETER CARD (y: 8 to 66) int c0Y = 8 - y_slice; - if (c0Y < slice_h && c0Y + 50 > 0) { - s.fillRoundRect(8, c0Y, 304, 50, 5, cardBg); - s.drawRoundRect(8, c0Y, 304, 50, 5, border); - s.setTextColor(cRpm, cardBg); - // Tachometer background rail on the LEFT - s.fillRoundRect(18, c0Y + 7, 72, 14, 3, 0x0841); - if (isYapaTheme()) { - int sx = 20; - char buf[2] = {0, 0}; - for (int i = 0; i < 7; i++) { - buf[0] = '1' + i; - s.setTextColor(getYapaColor(i), cardBg); - s.drawString(buf, sx, c0Y + 24, 1); - sx += s.textWidth(buf, 1) + s.textWidth(" ", 1); - } - } else { - s.setTextColor(cRpm, cardBg); - s.drawString("1 2 3 4 5 6 7", 20, c0Y + 24, 1); - } - + if (c0Y < slice_h && c0Y + 58 > 0) { + s.fillRoundRect(8, c0Y, 304, 58, 5, cardBg); + s.drawRoundRect(8, c0Y, 304, 58, 5, border); + s.fillRoundRect(14, c0Y + 6, 4, 46, 2, cRpm); float curRpmF = getClusterRpmVal(); int curRpm = (int)round(curRpmF); bool rainbowTxt = isRainbowTheme(); - int digitY = c0Y + 3; + int digitY = c0Y + 7; if (curRpm > 0) { uint16_t rpmCol = (curRpm >= 6000) ? TFT_RED : ((curRpm >= 4500) ? 0xFD60 : cRpm); String rpmStr = String(curRpm); drawDseg7RightString44(s, rpmStr.c_str(), 238, digitY, rpmCol, cardBg, 0, slice_h, rainbowTxt && (rpmCol != TFT_RED)); - - int activeSegs = map(constrain(curRpm, 0, 7000), 0, 7000, 0, 10); - for (int seg = 0; seg < 10; seg++) { - int sx = 20 + seg * 7; - uint16_t segCol = 0x0841; - if (seg < activeSegs) { - if (seg >= 8) segCol = TFT_RED; - else if (seg >= 6) segCol = 0xFD60; - else segCol = isRainbowTheme() ? getRainbowScreenColor(sx, 20) : (isYapaTheme() ? getYapaColor(seg) : cRpm); - } - s.fillRect(sx, c0Y + 9, 5, 10, segCol); - } } else { drawDseg7RightString44(s, "---", 238, digitY, cRpm, cardBg, 0, slice_h, rainbowTxt); } - drawRpm_AA(s, 242, c0Y + 27, cRpm, cardBg, slice_h, isRainbowTheme()); + // Segmented Tachometer Triangle VU-Meter on the LEFT (14 steps, ramp h: 5..31 px, x: 24..106) + int activeSegs = (curRpm > 0) ? map(constrain(curRpm, 0, 7000), 0, 7000, 1, 14) : 0; + for (int seg = 0; seg < 14; seg++) { + int barX = 24 + seg * 6; + int barH = 5 + seg * 2; + int barY = c0Y + 46 - barH; + uint16_t segCol = 0x2145; + if (seg < activeSegs) { + if (seg >= 12) segCol = TFT_RED; + else if (seg >= 9) segCol = 0xFD60; + else segCol = isRainbowTheme() ? getRainbowScreenColor(barX, 8 + 46 - barH) : (isYapaTheme() ? getYapaColor(seg) : cRpm); + } + s.fillRect(barX, barY, 4, barH, segCol); + } + + drawRpm_AA(s, 242, c0Y + 31, cRpm, cardBg, slice_h, isRainbowTheme()); if (isEcoOptimal) { - s.fillRoundRect(248, c0Y + 6, 48, 17, 3, 0x0202); + s.fillRoundRect(248, c0Y + 7, 48, 17, 3, 0x0202); if (isYapaTheme()) { char buf[2] = {0, 0}; const char *ecoStr = "ECO"; @@ -389,32 +384,33 @@ inline void renderClusterScreenToSprite(TFT_eSprite &s, int x_offset, int y_slic for (int i = 0; i < 3; i++) { buf[0] = ecoStr[i]; s.setTextColor(getYapaColor(i), 0x0202); - s.drawString(buf, ex, c0Y + 7, 2); + s.drawString(buf, ex, c0Y + 8, 2); ex += s.textWidth(buf, 2); } } else { s.setTextColor(TFT_WHITE, 0x0202); - s.drawString("ECO", 260, c0Y + 7, 2); + s.drawString("ECO", 260, c0Y + 8, 2); } - s.drawRoundRect(248, c0Y + 6, 48, 17, 3, 0x07E0); + s.drawRoundRect(248, c0Y + 7, 48, 17, 3, 0x07E0); } } - // 2. SPEEDOMETER CARD (y: 62 to 148) - int c1Y = 62 - y_slice; - if (c1Y < slice_h && c1Y + 86 > 0) { - s.fillRoundRect(8, c1Y, 304, 86, 5, cardBg); - s.drawRoundRect(8, c1Y, 304, 86, 5, border); + // 2. SPEEDOMETER CARD (y: 70 to 170) + int c1Y = 70 - y_slice; + if (c1Y < slice_h && c1Y + 100 > 0) { + s.fillRoundRect(8, c1Y, 304, 100, 5, cardBg); + s.drawRoundRect(8, c1Y, 304, 100, 5, border); + s.fillRoundRect(14, c1Y + 8, 4, 84, 2, cSpd); bool isGps = isClusterSpeedFromGps(); if (isGps) { - drawGpsSatelliteIcon(s, 243, c1Y + 20, 0x07FF, 0x07FF, cardBg, 2); + drawLargeGpsSatelliteIcon(s, 238, c1Y + 18, TFT_WHITE, 0x07FF, cardBg, 2); } float curSpdF = getClusterSpeedVal(); int curSpd = (curSpdF >= 0.0f) ? (int)round(curSpdF) : -999; - int digitY = c1Y + 3; - uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(240, 105) : cSpd; + int digitY = c1Y + 10; + uint16_t spdCol = isRainbowTheme() ? getRainbowScreenColor(240, 120) : cSpd; if (curSpd >= 0) { String spdStr = String(curSpd); drawDseg7RightString80(s, spdStr.c_str(), 194, digitY, spdCol, cardBg, 0, slice_h, isRainbowTheme()); @@ -422,49 +418,45 @@ inline void renderClusterScreenToSprite(TFT_eSprite &s, int x_offset, int y_slic drawDseg7RightString80(s, "---", 194, digitY, spdCol, cardBg, 0, slice_h, isRainbowTheme()); } - drawKmH_AA(s, 198, c1Y + 55, cSpd, cardBg, slice_h, isRainbowTheme()); + drawKmH_AA(s, 198, c1Y + 62, cSpd, cardBg, slice_h, isRainbowTheme()); } - // 3. COOLANT TEMP CARD (y: 152 to 236) - int c2Y = 152 - y_slice; - if (c2Y < slice_h && c2Y + 84 > 0) { - s.fillRoundRect(8, c2Y, 148, 84, 5, cardBg); - s.drawRoundRect(8, c2Y, 148, 84, 5, border); - drawTitRef_AA(s, 28, c2Y + 6, cCool, cardBg, slice_h, isRainbowTheme()); - + // 3. COOLANT TEMP CARD (y: 174 to 236) + int c2Y = 174 - y_slice; + if (c2Y < slice_h && c2Y + 62 > 0) { + s.fillRoundRect(8, c2Y, 148, 62, 5, cardBg); + s.drawRoundRect(8, c2Y, 148, 62, 5, border); float curCoolF = getClusterCoolantVal(); int curCool = (curCoolF > -900.0f) ? (int)round(curCoolF) : -999; + uint16_t coolCol = (curCool > -900) ? ((curCool >= 105) ? TFT_RED : ((curCool < 70) ? 0x05BF : cCool)) : cCool; + s.fillRoundRect(14, c2Y + 8, 4, 46, 2, coolCol); if (curCool > -900) { - uint16_t coolCol = (curCool >= 105) ? TFT_RED : ((curCool < 70) ? 0x05BF : cCool); String valStr = String(curCool); bool rainbowTxt = isRainbowTheme(); - int rightX = (valStr.length() >= 3) ? 112 : 106; - drawDseg7RightString44(s, valStr.c_str(), rightX, c2Y + 27, coolCol, cardBg, 0, slice_h, rainbowTxt && (coolCol != TFT_RED)); - - drawDegreeC_AA(s, 117, c2Y + 46, coolCol, cardBg, slice_h, isRainbowTheme()); + int rightX = (valStr.length() >= 3) ? 114 : 108; + drawDseg7RightString44(s, valStr.c_str(), rightX, c2Y + 9, coolCol, cardBg, 0, slice_h, rainbowTxt && (coolCol != TFT_RED)); } else { - drawDseg7RightString44(s, "---", 112, c2Y + 27, cCool, cardBg, 0, slice_h, isRainbowTheme()); + drawDseg7RightString44(s, "---", 114, c2Y + 9, cCool, cardBg, 0, slice_h, isRainbowTheme()); } + draw7SegDegreeC(s, 118, c2Y + 27, coolCol, cardBg, isRainbowTheme() && (coolCol != TFT_RED)); } - // 4. BATTERY VOLTAGE CARD (y: 152 to 236) - int c3Y = 152 - y_slice; - if (c3Y < slice_h && c3Y + 84 > 0) { - s.fillRoundRect(164, c3Y, 148, 84, 5, cardBg); - s.drawRoundRect(164, c3Y, 148, 84, 5, border); - drawTitBat_AA(s, 208, c3Y + 6, cVolt, cardBg, slice_h, isRainbowTheme()); - + // 4. BATTERY VOLTAGE CARD (y: 174 to 236) + int c3Y = 174 - y_slice; + if (c3Y < slice_h && c3Y + 62 > 0) { + s.fillRoundRect(164, c3Y, 148, 62, 5, cardBg); + s.drawRoundRect(164, c3Y, 148, 62, 5, border); float curVolt = getClusterVoltVal(); + uint16_t voltCol = (curVolt > 0.0f) ? ((curVolt < 11.8f || curVolt > 15.0f) ? TFT_RED : ((curVolt >= 13.5f) ? 0x07E0 : cVolt)) : cVolt; + s.fillRoundRect(170, c3Y + 8, 4, 46, 2, voltCol); if (curVolt > 0.0f) { - uint16_t voltCol = (curVolt < 11.8f || curVolt > 15.0f) ? TFT_RED : ((curVolt >= 13.5f) ? 0x07E0 : cVolt); String voltStr = String(curVolt, 1); bool rainbowTxt = isRainbowTheme(); - drawDseg7RightString44(s, voltStr.c_str(), 282, c3Y + 27, voltCol, cardBg, 0, slice_h, rainbowTxt && (voltCol != TFT_RED)); - - drawVolt_AA(s, 286, c3Y + 46, voltCol, cardBg, slice_h, isRainbowTheme()); + drawDseg7RightString44(s, voltStr.c_str(), 282, c3Y + 9, voltCol, cardBg, 0, slice_h, rainbowTxt && (voltCol != TFT_RED)); } else { - drawDseg7RightString44(s, "---", 282, c3Y + 27, cVolt, cardBg, 0, slice_h, isRainbowTheme()); + drawDseg7RightString44(s, "---", 282, c3Y + 9, cVolt, cardBg, 0, slice_h, isRainbowTheme()); } + drawVolt_AA(s, 286, c3Y + 28, voltCol, cardBg, slice_h, isRainbowTheme()); } } diff --git a/sketch/obd2_gauge/config.h b/sketch/obd2_gauge/config.h index 177a988..cf4d874 100644 --- a/sketch/obd2_gauge/config.h +++ b/sketch/obd2_gauge/config.h @@ -1,10 +1,10 @@ /* "config.h" Configuration menu for OBD2 Gauge with volume and per-instrument alarm controls */ -#include +#include "rainbow_text.h" #include #include -#include "rainbow_text.h" +#include extern bool isRainbowTheme(); extern bool isYapaTheme(); @@ -12,32 +12,42 @@ extern bool isYapaTheme(); // Continuous Rainbow Stencil & Alpha Theme Engine // ------------------------------------------------------------------- inline uint16_t getRainbowAlphaColor(int16_t x, uint8_t alpha) { - if (alpha >= 255) return getRainbowScreenColor(x); + if (alpha >= 255) + return getRainbowScreenColor(x); return tft.alphaBlend(alpha, getRainbowScreenColor(x), TFT_BLACK); } inline void drawRainbowHLine(int16_t y, int16_t h = 2, uint8_t alpha = 255) { tft.startWrite(); for (int16_t x = 0; x < 320; x++) { - uint16_t c = (alpha >= 255) ? getRainbowScreenColor(x) : tft.alphaBlend(alpha, getRainbowScreenColor(x), TFT_BLACK); + uint16_t c = + (alpha >= 255) + ? getRainbowScreenColor(x) + : tft.alphaBlend(alpha, getRainbowScreenColor(x), TFT_BLACK); tft.drawFastVLine(x, y, h, c); } tft.endWrite(); } inline int8_t getRainbowCornerInset(int16_t col, int16_t w, int16_t r) { - int16_t d = (col < r) ? (r - 1 - col) : ((col >= w - r) ? (col - (w - r)) : -1); - if (d < 0) return 0; - if (d >= r - 1) return r > 3 ? 3 : 1; - if (d >= r - 2) return r > 3 ? 2 : 1; + int16_t d = + (col < r) ? (r - 1 - col) : ((col >= w - r) ? (col - (w - r)) : -1); + if (d < 0) + return 0; + if (d >= r - 1) + return r > 3 ? 3 : 1; + if (d >= r - 2) + return r > 3 ? 2 : 1; return 1; } -inline void fillRainbowAlphaRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, uint8_t alpha) { +inline void fillRainbowAlphaRoundRect(int16_t x, int16_t y, int16_t w, + int16_t h, int16_t r, uint8_t alpha) { tft.startWrite(); for (int16_t col = 0; col < w; col++) { int16_t curX = x + col; - if (curX < 0 || curX >= 320) continue; + if (curX < 0 || curX >= 320) + continue; uint16_t colColor = getRainbowAlphaColor(curX, alpha); int8_t inset = (r > 0) ? getRainbowCornerInset(col, w, r) : 0; int16_t topY = y + inset; @@ -49,11 +59,13 @@ inline void fillRainbowAlphaRoundRect(int16_t x, int16_t y, int16_t w, int16_t h tft.endWrite(); } -inline void drawRainbowRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, uint8_t alpha = 255) { +inline void drawRainbowRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, + int16_t r, uint8_t alpha = 255) { tft.startWrite(); for (int16_t col = r; col < w - r; col++) { int16_t curX = x + col; - if (curX < 0 || curX >= 320) continue; + if (curX < 0 || curX >= 320) + continue; uint16_t c = getRainbowAlphaColor(curX, alpha); tft.drawPixel(curX, y, c); tft.drawPixel(curX, y + h - 1, c); @@ -78,7 +90,7 @@ inline void drawRainbowRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, int tft.endWrite(); } -inline void drawMenuHeaderBanner(const char* title) { +inline void drawMenuHeaderBanner(const char *title) { if (isRainbowTheme()) { tft.fillRect(0, 0, 320, 26, TFT_BLACK); drawRainbowHLine(26, 2, 255); @@ -90,7 +102,8 @@ inline void drawMenuHeaderBanner(const char* title) { } drawYapaCentreString(title, 160, 2, 4); } else { - tft.fillRectVGradient(0, 0, 320, 26, getThemeAccentColor(), getThemeDarkColor()); + tft.fillRectVGradient(0, 0, 320, 26, getThemeAccentColor(), + getThemeDarkColor()); tft.fillRect(0, 26, 320, 2, getThemePrimaryColor()); tft.setTextColor(TFT_WHITE); tft.drawCentreString(title, 160, 2, 4); @@ -98,20 +111,27 @@ inline void drawMenuHeaderBanner(const char* title) { } inline uint16_t getRainbowItemColor(uint8_t idx) { - switch(idx % 6) { - case 0: return 0xF9C0; - case 1: return 0xFDA0; - case 2: return 0x07E0; - case 3: return 0x07FF; - case 4: return 0x4B3F; - case 5: return 0xE1BF; - default: return 0x07FF; + switch (idx % 6) { + case 0: + return 0xF9C0; + case 1: + return 0xFDA0; + case 2: + return 0x07E0; + case 3: + return 0x07FF; + case 4: + return 0x4B3F; + case 5: + return 0xE1BF; + default: + return 0x07FF; } } // Inactivity Auto-Sleep settings (0: OFF, 1: 30s, 2: 1m, 3: 2m, 4: 5m) -const uint16_t AUTO_SLEEP_SEC_TABLE[5] = { 0, 30, 60, 120, 300 }; -const char* const AUTO_SLEEP_NAME_TABLE[5] = { "OFF", "30s", "1m", "2m", "5m" }; +const uint16_t AUTO_SLEEP_SEC_TABLE[5] = {0, 30, 60, 120, 300}; +const char *const AUTO_SLEEP_NAME_TABLE[5] = {"OFF", "30s", "1m", "2m", "5m"}; extern uint8_t autoSleepIndex; extern uint32_t lastActivityTime; extern uint8_t beepSoundType; @@ -127,9 +147,7 @@ extern const String pidConfig[5][9]; static uint32_t lastMenuActivityTime = 0; static bool menuExitedDueToTimeout = false; -inline void resetMenuActivity() { - lastMenuActivityTime = millis(); -} +inline void resetMenuActivity() { lastMenuActivityTime = millis(); } inline bool checkMenuTimeout() { if (millis() - lastMenuActivityTime >= 10000) { @@ -140,17 +158,13 @@ inline bool checkMenuTimeout() { } /*------------ SOUND EFFECTS ----------*/ -const char* const BEEP_NAME_TABLE[6] = { - "Casio Chirp", - "Click Corto", - "Tono Suave", - "Tick Digital", - "Doble Pip", - "Campana Retro" -}; +const char *const BEEP_NAME_TABLE[6] = {"Casio Chirp", "Click Corto", + "Tono Suave", "Tick Digital", + "Doble Pip", "Campana Retro"}; void playBeepSample(uint8_t type, uint8_t vol) { - if (vol == 0) return; + if (vol == 0) + return; uint16_t duty = VOL_DUTY_TABLE[vol > 5 ? 3 : vol]; if (type == 0) { // Casio Chirp (4096 Hz, 25ms) @@ -191,9 +205,7 @@ void playBeepSample(uint8_t type, uint8_t vol) { } } -void touchBeep() { - playBeepSample(beepSoundType, buzzerVolumeLevel); -} +void touchBeep() { playBeepSample(beepSoundType, buzzerVolumeLevel); } // Crisp High-Pitch Casio Chirp (redirects to touchBeep when freq == 4096) inline void casioBeep(uint16_t freq = 4096, uint8_t duration_ms = 25) { @@ -202,7 +214,8 @@ inline void casioBeep(uint16_t freq = 4096, uint8_t duration_ms = 25) { return; } uint16_t duty = VOL_DUTY_TABLE[buzzerVolumeLevel > 5 ? 3 : buzzerVolumeLevel]; - if (duty == 0) return; // Mute mode + if (duty == 0) + return; // Mute mode ledcSetup(buzzerChannel, freq, 10); ledcWrite(buzzerChannel, duty); delay(duration_ms); @@ -215,33 +228,27 @@ void beepbeep() { touchBeep(); } -void beep() { - touchBeep(); -} +void beep() { touchBeep(); } -void clickSound() { - touchBeep(); -} +void clickSound() { touchBeep(); } // Configuration menu list (7 options) const String menuList[7] = { - "Alarmas", // 0 - "Sonidos", // 1 - "Brillo de Pantalla", // 2 - "Apariencia", // 3 - "Modo Dormir", // 4 - "Reiniciar", // 5 - "Salir" // 6 + "Alarmas", // 0 + "Sonidos", // 1 + "Brillo de Pantalla", // 2 + "Apariencia", // 3 + "Modo Dormir", // 4 + "Reiniciar", // 5 + "Salir" // 6 }; const uint8_t maxMenu = 7; // Menu list for warning setting (4 vehicle gauges) -const String parameterList[4][2] = { - {"Temperatura", " `C"}, - {"RPM", " rpm"}, - {"Voltaje", " V"}, - {"Velocidad", " km/h"} -}; +const String parameterList[4][2] = {{"Temperatura", " `C"}, + {"RPM", " rpm"}, + {"Voltaje", " V"}, + {"Velocidad", " km/h"}}; // ------------------------------------------------------------- // Componente de Boton SALIR con Animacion de Pulsacion Tactil @@ -324,12 +331,15 @@ void warningMenu() { for (uint8_t i = 0; i < 4; i++) { int y = 10 + i * 44; tft.fillRoundRect(8, y, 304, 38, 5, 0x1082); - tft.drawRoundRect(8, y, 304, 38, 5, alarmEnabled[i] ? getYapaColor(i) : 0x3186); + tft.drawRoundRect(8, y, 304, 38, 5, + alarmEnabled[i] ? getYapaColor(i) : 0x3186); drawYapaString(parameterList[i][0], 22, y + 7, 4); // Large tactile ON / OFF badge - tft.fillRoundRect(220, y + 4, 84, 30, 5, alarmEnabled[i] ? 0x2104 : 0x0821); - tft.drawRoundRect(220, y + 4, 84, 30, 5, alarmEnabled[i] ? getYapaColor(i + 2) : 0x3186); + tft.fillRoundRect(220, y + 4, 84, 30, 5, + alarmEnabled[i] ? 0x2104 : 0x0821); + tft.drawRoundRect(220, y + 4, 84, 30, 5, + alarmEnabled[i] ? getYapaColor(i + 2) : 0x3186); if (alarmEnabled[i]) { drawYapaCentreString("ON", 262, y + 7, 4); } else { @@ -351,7 +361,8 @@ void warningMenu() { tft.fillRoundRect(10, y + 4, 3, 30, 1, itemCol); } - tft.setTextColor(alarmEnabled[i] ? TFT_WHITE : 0x8410, getThemeDarkColor()); + tft.setTextColor(alarmEnabled[i] ? TFT_WHITE : 0x8410, + getThemeDarkColor()); tft.drawString(parameterList[i][0], 22, y + 7, 4); // Large tactile ON / OFF badge @@ -373,7 +384,8 @@ void warningMenu() { waitForTouchRelease(); while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); uint16_t tx = 0, ty = 0; if (getTouch(&tx, &ty)) { @@ -421,27 +433,35 @@ void thresholdMenu() { if (row == 0) { // Temperatura ECT: 70 to 125, step 1 °C int v = warningValue[0].toInt(); v += increment ? 1 : -1; - if (v < 70) v = 70; - if (v > 125) v = 125; + if (v < 70) + v = 70; + if (v > 125) + v = 125; warningValue[0] = String(v); } else if (row == 1) { // RPM: 2000 to 6500, step 100 rpm int v = warningValue[1].toInt(); v += increment ? 100 : -100; - if (v < 2000) v = 2000; - if (v > 6500) v = 6500; + if (v < 2000) + v = 2000; + if (v > 6500) + v = 6500; warningValue[1] = String(v); } else if (row == 2) { // Voltaje: 13.0 to 16.0, step 0.1 V float v = warningValue[2].toFloat(); v += increment ? 0.1f : -0.1f; - if (v < 13.0f) v = 13.0f; - if (v > 16.0f) v = 16.0f; + if (v < 13.0f) + v = 13.0f; + if (v > 16.0f) + v = 16.0f; v = roundf(v * 10.0f) / 10.0f; warningValue[2] = String(v, 1); } else if (row == 3) { // Velocidad: 60 to 180, step 5 km/h int v = warningValue[3].toInt(); v += increment ? 5 : -5; - if (v < 60) v = 60; - if (v > 180) v = 180; + if (v < 60) + v = 60; + if (v > 180) + v = 180; warningValue[3] = String(v); } }; @@ -485,7 +505,7 @@ void thresholdMenu() { auto drawAllThresholdRows = [&]() { if (isRainbowTheme()) { drawRainbowHLine(2, 2, 255); - const char* const thrNames[4] = { "Temp.", "RPM", "Voltaje", "Veloc." }; + const char *const thrNames[4] = {"Temp.", "RPM", "Voltaje", "Veloc."}; for (uint8_t i = 0; i < 4; i++) { int y = 10 + i * 44; fillRainbowAlphaRoundRect(8, y, 304, 38, 5, 25); @@ -512,7 +532,7 @@ void thresholdMenu() { for (int16_t x = 0; x < 320; x++) { tft.drawFastVLine(x, 2, 2, getYapaColor(x / 53)); } - const char* const thrNames[4] = { "Temp.", "RPM", "Voltaje", "Veloc." }; + const char *const thrNames[4] = {"Temp.", "RPM", "Voltaje", "Veloc."}; for (uint8_t i = 0; i < 4; i++) { int y = 10 + i * 44; tft.fillRoundRect(8, y, 304, 38, 5, 0x1082); @@ -546,7 +566,7 @@ void thresholdMenu() { tft.fillRoundRect(10, y + 4, 3, 30, 1, itemCol); // Parameter label - const char* const thrNames[4] = { "Temp.", "RPM", "Voltaje", "Veloc." }; + const char *const thrNames[4] = {"Temp.", "RPM", "Voltaje", "Veloc."}; tft.setTextColor(TFT_WHITE, getThemeDarkColor()); tft.drawString(thrNames[i], 18, y + 7, 4); @@ -576,7 +596,8 @@ void thresholdMenu() { waitForTouchRelease(); while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); uint16_t tx = 0, ty = 0; @@ -658,7 +679,8 @@ void alarmCategoryMenu() { uint8_t activeCount = 0; for (uint8_t i = 0; i < 4; i++) { - if (alarmEnabled[i]) activeCount++; + if (alarmEnabled[i]) + activeCount++; } String actInfo = String(activeCount) + " de 4 alarmas activas (ON/OFF)"; drawRainbowString(actInfo, 24, 58, 2); @@ -668,9 +690,12 @@ void alarmCategoryMenu() { fillRainbowAlphaRoundRect(10, 102, 300, 68, 5, (sel == 1) ? 80 : 30); drawRainbowRoundRect(10, 102, 300, 68, 5, (sel == 1) ? 255 : 120); drawRainbowString("Seteo de Umbrales", 24, 110, 4); - String thrInfo = "T: " + warningValue[0] + "`C | RPM: " + warningValue[1] + " | V: " + warningValue[2] + "V | Vel: " + warningValue[3] + "k/h"; + String thrInfo = + "T: " + warningValue[0] + "`C | RPM: " + warningValue[1] + + " | V: " + warningValue[2] + "V | Vel: " + warningValue[3] + "k/h"; drawRainbowString(thrInfo, 24, 140, 2); - tft.fillTriangle(296, 136, 290, 130, 290, 142, getRainbowScreenColor(293)); + tft.fillTriangle(296, 136, 290, 130, 290, 142, + getRainbowScreenColor(293)); drawExitButton(false); return; @@ -682,7 +707,8 @@ void alarmCategoryMenu() { // Card 0: Activacion de Alarmas (y: 20 to 88, h: 68) tft.fillRoundRect(10, 20, 300, 68, 5, (sel == 0) ? 0x2104 : 0x1082); - tft.drawRoundRect(10, 20, 300, 68, 5, (sel == 0) ? getYapaColor(0) : 0x3186); + tft.drawRoundRect(10, 20, 300, 68, 5, + (sel == 0) ? getYapaColor(0) : 0x3186); if (sel == 0) { tft.drawRoundRect(11, 21, 298, 66, 4, TFT_WHITE); } @@ -690,22 +716,28 @@ void alarmCategoryMenu() { uint8_t activeCount = 0; for (uint8_t i = 0; i < 4; i++) { - if (alarmEnabled[i]) activeCount++; + if (alarmEnabled[i]) + activeCount++; } String actInfo = String(activeCount) + " de 4 alarmas activas (ON/OFF)"; drawYapaString(actInfo, 24, 58, 2); - tft.fillTriangle(296, 54, 290, 48, 290, 60, (sel == 0) ? TFT_WHITE : getYapaColor(1)); + tft.fillTriangle(296, 54, 290, 48, 290, 60, + (sel == 0) ? TFT_WHITE : getYapaColor(1)); // Card 1: Seteo de Umbrales (y: 102 to 170, h: 68) tft.fillRoundRect(10, 102, 300, 68, 5, (sel == 1) ? 0x2104 : 0x1082); - tft.drawRoundRect(10, 102, 300, 68, 5, (sel == 1) ? getYapaColor(2) : 0x3186); + tft.drawRoundRect(10, 102, 300, 68, 5, + (sel == 1) ? getYapaColor(2) : 0x3186); if (sel == 1) { tft.drawRoundRect(11, 103, 298, 66, 4, TFT_WHITE); } drawYapaString("Seteo de Umbrales", 24, 110, 4); - String thrInfo = "T: " + warningValue[0] + "`C | RPM: " + warningValue[1] + " | V: " + warningValue[2] + "V | Vel: " + warningValue[3] + "k/h"; + String thrInfo = + "T: " + warningValue[0] + "`C | RPM: " + warningValue[1] + + " | V: " + warningValue[2] + "V | Vel: " + warningValue[3] + "k/h"; drawYapaString(thrInfo, 24, 140, 2); - tft.fillTriangle(296, 136, 290, 130, 290, 142, (sel == 1) ? TFT_WHITE : getYapaColor(3)); + tft.fillTriangle(296, 136, 290, 130, 290, 142, + (sel == 1) ? TFT_WHITE : getYapaColor(3)); drawExitButton(false); return; @@ -713,7 +745,8 @@ void alarmCategoryMenu() { // Card 0: Activacion de Alarmas (y: 20 to 88, h: 68) uint16_t bg0 = (sel == 0) ? getThemeAccentColor() : getThemeDarkColor(); - uint16_t border0 = (sel == 0) ? getThemePrimaryColor() : getThemeAccentColor(); + uint16_t border0 = + (sel == 0) ? getThemePrimaryColor() : getThemeAccentColor(); tft.fillRoundRect(10, 20, 300, 68, 5, bg0); tft.drawRoundRect(10, 20, 300, 68, 5, border0); if (sel == 0) { @@ -726,16 +759,19 @@ void alarmCategoryMenu() { uint8_t activeCount = 0; for (uint8_t i = 0; i < 4; i++) { - if (alarmEnabled[i]) activeCount++; + if (alarmEnabled[i]) + activeCount++; } String actInfo = String(activeCount) + " de 4 alarmas activas (ON/OFF)"; tft.setTextColor((sel == 0) ? TFT_YELLOW : 0xBDD7, bg0); tft.drawString(actInfo, 24, 58, 2); - tft.fillTriangle(296, 54, 290, 48, 290, 60, (sel == 0) ? TFT_WHITE : getThemePrimaryColor()); + tft.fillTriangle(296, 54, 290, 48, 290, 60, + (sel == 0) ? TFT_WHITE : getThemePrimaryColor()); // Card 1: Seteo de Umbrales (y: 102 to 170, h: 68) uint16_t bg1 = (sel == 1) ? getThemeAccentColor() : getThemeDarkColor(); - uint16_t border1 = (sel == 1) ? getThemePrimaryColor() : getThemeAccentColor(); + uint16_t border1 = + (sel == 1) ? getThemePrimaryColor() : getThemeAccentColor(); tft.fillRoundRect(10, 102, 300, 68, 5, bg1); tft.drawRoundRect(10, 102, 300, 68, 5, border1); if (sel == 1) { @@ -745,10 +781,13 @@ void alarmCategoryMenu() { } tft.setTextColor(TFT_WHITE, bg1); tft.drawString("Seteo de Umbrales", 24, 110, 4); - String thrInfo = "T: " + warningValue[0] + "`C | RPM: " + warningValue[1] + " | V: " + warningValue[2] + "V | Vel: " + warningValue[3] + "k/h"; + String thrInfo = "T: " + warningValue[0] + "`C | RPM: " + warningValue[1] + + " | V: " + warningValue[2] + + "V | Vel: " + warningValue[3] + "k/h"; tft.setTextColor((sel == 1) ? TFT_YELLOW : 0xBDD7, bg1); tft.drawString(thrInfo, 24, 140, 2); - tft.fillTriangle(296, 136, 290, 130, 290, 142, (sel == 1) ? TFT_WHITE : getThemePrimaryColor()); + tft.fillTriangle(296, 136, 290, 130, 290, 142, + (sel == 1) ? TFT_WHITE : getThemePrimaryColor()); // Bottom action button: [ SALIR ] (x: 80, y: 186, w: 160, h: 42) drawExitButton(false); @@ -762,7 +801,8 @@ void alarmCategoryMenu() { waitForTouchRelease(); while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); int8_t executeSelect = -1; uint16_t tx = 0, ty = 0; @@ -794,7 +834,8 @@ void alarmCategoryMenu() { thresholdMenu(); // Seteo de Umbrales } - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; choice = 255; drawCategoryUI(choice); waitForTouchRelease(); @@ -812,17 +853,13 @@ void alarmCategoryMenu() { // ------------------------------------------------------------- // Sub-screen 1: Sonido de Alarma (Tipo de Sonido y Volumen) // ------------------------------------------------------------- -const char* const ALARM_NAME_TABLE[6] = { - "Chime BMW", - "Mercedes Gong", - "Audi Cockpit", - "Porsche Sport", - "Casio Clasico", - "Triple Urgente" -}; +const char *const ALARM_NAME_TABLE[6] = {"Chime BMW", "Mercedes Gong", + "Audi Cockpit", "Porsche Sport", + "Casio Clasico", "Triple Urgente"}; void playAlarmSample(uint8_t type, uint8_t vol) { - if (vol == 0) return; + if (vol == 0) + return; uint16_t duty = VOL_DUTY_TABLE[vol > 5 ? 3 : vol]; if (type == 0) { // Chime BMW (Mi7 -> Do7, 2637 Hz -> 2093 Hz) @@ -845,7 +882,8 @@ void playAlarmSample(uint8_t type, uint8_t vol) { ledcWrite(buzzerChannel, duty); delay(85); ledcWrite(buzzerChannel, 0); - } else if (type == 2) { // Audi Cockpit (Do7 -> Mi7 -> Sol7, 2093 -> 2637 -> 3136 Hz) + } else if (type == + 2) { // Audi Cockpit (Do7 -> Mi7 -> Sol7, 2093 -> 2637 -> 3136 Hz) ledcSetup(buzzerChannel, 2093, 10); ledcWrite(buzzerChannel, duty); delay(35); @@ -882,7 +920,8 @@ void playAlarmSample(uint8_t type, uint8_t vol) { ledcWrite(buzzerChannel, duty); delay(22); ledcWrite(buzzerChannel, 0); - if (k < 2) delay(25); + if (k < 2) + delay(25); } } } @@ -980,8 +1019,10 @@ void alarmSoundMenu() { int16_t bh = 54; bool isSel = (i == alarmVolumeLevel); - uint16_t bgCol = isSel ? (i == 0 ? 0x3187 : getThemeAccentColor()) : getThemeDarkColor(); - uint16_t borderCol = isSel ? (i == 0 ? TFT_WHITE : getThemePrimaryColor()) : getThemeAccentColor(); + uint16_t bgCol = isSel ? (i == 0 ? 0x3187 : getThemeAccentColor()) + : getThemeDarkColor(); + uint16_t borderCol = isSel ? (i == 0 ? TFT_WHITE : getThemePrimaryColor()) + : getThemeAccentColor(); tft.fillRoundRect(bx, by, bw, bh, 5, bgCol); tft.drawRoundRect(bx, by, bw, bh, 5, borderCol); if (isSel) { @@ -999,7 +1040,8 @@ void alarmSoundMenu() { waitForTouchRelease(); while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); uint16_t tx = 0, ty = 0; if (getTouch(&tx, &ty)) { @@ -1008,8 +1050,10 @@ void alarmSoundMenu() { if (ty < 122) { int8_t col = (tx < 160) ? 0 : 1; int8_t row = (ty - 6) / 38; - if (row < 0) row = 0; - if (row > 2) row = 2; + if (row < 0) + row = 0; + if (row > 2) + row = 2; uint8_t selType = row * 2 + col; if (selType < 6) { alarmSoundType = selType; @@ -1142,8 +1186,10 @@ void beepSoundMenu() { int16_t bh = 54; bool isSel = (i == buzzerVolumeLevel); - uint16_t bgCol = isSel ? (i == 0 ? 0x3187 : getThemeAccentColor()) : getThemeDarkColor(); - uint16_t borderCol = isSel ? (i == 0 ? TFT_WHITE : getThemePrimaryColor()) : getThemeAccentColor(); + uint16_t bgCol = isSel ? (i == 0 ? 0x3187 : getThemeAccentColor()) + : getThemeDarkColor(); + uint16_t borderCol = isSel ? (i == 0 ? TFT_WHITE : getThemePrimaryColor()) + : getThemeAccentColor(); tft.fillRoundRect(bx, by, bw, bh, 5, bgCol); tft.drawRoundRect(bx, by, bw, bh, 5, borderCol); if (isSel) { @@ -1161,7 +1207,8 @@ void beepSoundMenu() { waitForTouchRelease(); while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); uint16_t tx = 0, ty = 0; if (getTouch(&tx, &ty)) { @@ -1170,8 +1217,10 @@ void beepSoundMenu() { if (ty < 122) { int8_t col = (tx < 160) ? 0 : 1; int8_t row = (ty - 6) / 38; - if (row < 0) row = 0; - if (row > 2) row = 2; + if (row < 0) + row = 0; + if (row > 2) + row = 2; uint8_t selType = row * 2 + col; if (selType < 6) { beepSoundType = selType; @@ -1208,9 +1257,7 @@ void beepSoundMenu() { } } -void volumeMenu() { - beepSoundMenu(); -} +void volumeMenu() { beepSoundMenu(); } // ------------------------------------------------------------- // Sub-screen 3: Modo Reposo / Sleep (Manual y por Inactividad) @@ -1242,7 +1289,8 @@ void enterLightSleep() { systemSleeping = true; // Signal background task to pause Bluetooth attempts - // Cleanly disconnect active Bluetooth link before sleep to release remote connection + // Cleanly disconnect active Bluetooth link before sleep to release remote + // connection Serial.println(">>> [SLEEP] Disconnecting BT link..."); Serial.flush(); if (BTSerial.hasClient() || BTSerial.connected() || foundOBD2) { @@ -1251,15 +1299,18 @@ void enterLightSleep() { } foundOBD2 = false; - // Make sure finger or button is completely released before entering sleep loop + // Make sure finger or button is completely released before entering sleep + // loop waitForTouchRelease(); #ifdef SERIAL_DEBUG - Serial.println(">>> [SLEEP] Sleeping (display & LEDs off, waiting for touch/button)..."); + Serial.println( + ">>> [SLEEP] Sleeping (display & LEDs off, waiting for touch/button)..."); Serial.flush(); #endif - // Put GPS module to sleep (UBX backup mode - debe ser lo ultimo antes de entrar en reposo) + // Put GPS module to sleep (UBX backup mode - debe ser lo ultimo antes de + // entrar en reposo) gpsSleep(); while (true) { @@ -1302,24 +1353,18 @@ void enterLightSleep() { // Wake up GPS module gpsWake(); - // 6. Restore backlight smoothly according to current brightness setting (Auto LDR or Manual) + // 6. Restore backlight smoothly according to current brightness setting (Auto + // LDR or Manual) uint8_t wakeTarget = 255; if (brightnessIndex > 0) { - wakeTarget = BRIGHTNESS_PWM_TABLE[brightnessIndex > 5 ? 5 : brightnessIndex]; + wakeTarget = + BRIGHTNESS_PWM_TABLE[brightnessIndex > 5 ? 5 : brightnessIndex]; } else { - // Mode Auto: sample LDR sensor immediately to determine day or night + // Mode Auto: sample LDR sensor immediately to determine ambient brightness int light = analogRead(LDR_PIN); - if (light > LIGHT_LEVEL) { // Low light (night) - wakeTarget = 15; - dim = true; - low_count = 6; - high_count = 0; - } else { // Bright light (day) - wakeTarget = 255; - dim = false; - high_count = 6; - low_count = 0; - } + int mapped = map(constrain(light, 200, 2400), 2400, 200, 18, 255); + wakeTarget = (uint8_t)mapped; + dim = (wakeTarget <= 70); } // Smooth fade in to target brightness @@ -1346,9 +1391,7 @@ void enterLightSleep() { wokeFromSleep = true; } -void drawSleepHeader() { - drawMenuHeaderBanner("Modo Dormir"); -} +void drawSleepHeader() { drawMenuHeaderBanner("Modo Dormir"); } void sleepMenu() { tft.fillScreen(TFT_BLACK); @@ -1361,7 +1404,7 @@ void sleepMenu() { int16_t by = 166; int16_t bw = 140; int16_t bh = 48; - const char* label = (idx == 0) ? "DORMIR" : "SALIR"; + const char *label = (idx == 0) ? "DORMIR" : "SALIR"; if (isRainbowTheme()) { uint8_t bgAlpha = isPressed ? 110 : (isSel ? 70 : 35); @@ -1413,7 +1456,8 @@ void sleepMenu() { drawRainbowCentreString("Auto-Sleep por Inactividad", 160, 38, 4); drawRainbowCentreString("(Apagado al detenerse el motor)", 160, 68, 2); - // 2. 5 Direct Touch Tiles for Auto-Sleep Timeout: [OFF] [30s] [1m] [2m] [5m] + // 2. 5 Direct Touch Tiles for Auto-Sleep Timeout: [OFF] [30s] [1m] [2m] + // [5m] for (uint8_t i = 0; i < 5; i++) { int16_t bx = 8 + i * 62; int16_t by = 94; @@ -1423,7 +1467,8 @@ void sleepMenu() { fillRainbowAlphaRoundRect(bx, by, bw, bh, 5, isSel ? 90 : 30); drawRainbowRoundRect(bx, by, bw, bh, 5, isSel ? 255 : 100); - drawRainbowCentreString(AUTO_SLEEP_NAME_TABLE[i], bx + bw / 2, by + 14, 4); + drawRainbowCentreString(AUTO_SLEEP_NAME_TABLE[i], bx + bw / 2, by + 14, + 4); } return; } @@ -1454,7 +1499,8 @@ void sleepMenu() { tft.setTextColor(0xBDD7, TFT_BLACK); tft.drawCentreString("(Apagado al detenerse el motor)", 160, 68, 2); - // 2. 5 Direct Touch Tiles for Auto-Sleep Timeout: [OFF] [30s] [1m] [2m] [5m] + // 2. 5 Direct Touch Tiles for Auto-Sleep Timeout: [OFF] [30s] [1m] [2m] + // [5m] for (uint8_t i = 0; i < 5; i++) { int16_t bx = 8 + i * 62; int16_t by = 94; @@ -1462,8 +1508,10 @@ void sleepMenu() { int16_t bh = 54; bool isSel = (i == autoSleepIndex); - uint16_t bgCol = isSel ? (i == 0 ? 0x3187 : getThemeAccentColor()) : getThemeDarkColor(); - uint16_t borderCol = isSel ? (i == 0 ? TFT_WHITE : getThemePrimaryColor()) : getThemeAccentColor(); + uint16_t bgCol = isSel ? (i == 0 ? 0x3187 : getThemeAccentColor()) + : getThemeDarkColor(); + uint16_t borderCol = isSel ? (i == 0 ? TFT_WHITE : getThemePrimaryColor()) + : getThemeAccentColor(); tft.fillRoundRect(bx, by, bw, bh, 5, bgCol); tft.drawRoundRect(bx, by, bw, bh, 5, borderCol); @@ -1484,7 +1532,8 @@ void sleepMenu() { long holdtimer = 0; while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); uint16_t tx = 0, ty = 0; if (getTouch(&tx, &ty)) { @@ -1511,7 +1560,8 @@ void sleepMenu() { delay(120); waitForTouchRelease(); enterLightSleep(); - if (wokeFromSleep) break; + if (wokeFromSleep) + break; // Redraw UI upon waking up tft.fillScreen(TFT_BLACK); drawSleepHeader(); @@ -1539,7 +1589,8 @@ void sleepMenu() { touchBeep(); delay(120); enterLightSleep(); - if (wokeFromSleep) break; + if (wokeFromSleep) + break; tft.fillScreen(TFT_BLACK); drawSleepHeader(); drawSleepUI(); @@ -1591,14 +1642,15 @@ void restartConfirmationMenu() { tft.drawCentreString("Desea reiniciar la placa?", 160, 80, 4); } - uint8_t subSel = 1; // 0: REINICIAR, 1: SALIR (por defecto SALIR para seguridad) + uint8_t subSel = + 1; // 0: REINICIAR, 1: SALIR (por defecto SALIR para seguridad) auto drawSubButton = [&](uint8_t idx, bool isSel, bool isPressed) { int16_t bx = (idx == 0) ? 14 : 166; int16_t by = 166; int16_t bw = 140; int16_t bh = 48; - const char* label = (idx == 0) ? "REINICIAR" : "SALIR"; + const char *label = (idx == 0) ? "REINICIAR" : "SALIR"; if (isRainbowTheme()) { uint8_t bgAlpha = isPressed ? 110 : (isSel ? 70 : 35); @@ -1650,7 +1702,8 @@ void restartConfirmationMenu() { long holdtimer = 0; while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); uint16_t tx = 0, ty = 0; if (getTouch(&tx, &ty)) { @@ -1726,15 +1779,111 @@ void brightnessMenu() { auto applyBrightness = [](uint8_t idx) { if (idx == 0) { - int light = analogRead(LDR_PIN); - targetBacklight = (light > LIGHT_LEVEL) ? 15 : 255; + int light = getFilteredLdr(); + targetBacklight = calcAutoBacklight(light); + dim = (targetBacklight <= 70); } else { targetBacklight = BRIGHTNESS_PWM_TABLE[idx > 5 ? 5 : idx]; + dim = false; } currentBacklight = (float)targetBacklight; ledcWrite(backlightChannel, targetBacklight); }; + auto drawProgressBar = [&](int fillW) { + if (isRainbowTheme()) { + fillRainbowAlphaRoundRect(20, 72, 280, 16, 4, 30); + drawRainbowRoundRect(20, 72, 280, 16, 4, 120); + if (fillW > 4) { + for (int bx = 0; bx < fillW; bx++) { + tft.drawFastVLine(22 + bx, 74, 12, + getRainbowScreenColor(22 + bx, 74)); + } + } + } else if (isYapaTheme()) { + tft.fillRoundRect(20, 72, 280, 16, 4, 0x0821); + tft.drawRoundRect(20, 72, 280, 16, 4, 0x3186); + if (fillW > 4) { + for (int bx = 0; bx < fillW; bx++) { + tft.drawFastVLine(22 + bx, 74, 12, getYapaColor(bx / 46)); + } + } + } else { + tft.fillRoundRect(20, 72, 280, 16, 4, 0x0841); + tft.drawRoundRect(20, 72, 280, 16, 4, getThemeDarkColor()); + if (fillW > 4) { + uint16_t barCol = + (brightnessIndex == 0) + ? getThemePrimaryColor() + : (brightnessIndex >= 4 ? TFT_ORANGE : getThemeAccentColor()); + tft.fillRoundRect(22, 74, fillW, 12, 3, barCol); + } + } + }; + + auto drawTitleAA = [&](const String &str, uint16_t cardBg) { + tft.loadFont(Latin_Sans_Bold_26); + if (isRainbowTheme()) { + int curX = 24; + char buf[2] = {0, 0}; + for (size_t i = 0; i < str.length(); i++) { + char c = str[i]; + buf[0] = c; + if (c == ' ') { + curX += tft.textWidth(buf); + continue; + } + tft.setTextColor(getRainbowScreenColor(curX + 6), cardBg); + tft.drawString(buf, curX, 24); + curX += tft.textWidth(buf); + } + } else if (isYapaTheme()) { + int curX = 24; + char buf[2] = {0, 0}; + uint8_t cIdx = 0; + for (size_t i = 0; i < str.length(); i++) { + char c = str[i]; + buf[0] = c; + if (c == ' ') { + curX += tft.textWidth(buf); + continue; + } + tft.setTextColor(getYapaColor(cIdx++), cardBg); + tft.drawString(buf, curX, 24); + curX += tft.textWidth(buf); + } + } else { + tft.setTextColor(TFT_WHITE, cardBg); + tft.drawString(str, 24, 24); + } + tft.unloadFont(); + }; + + auto drawSubtitle = [&](const String &str, uint16_t cardBg) { + tft.fillRect(22, 48, 276, 20, cardBg); + if (isRainbowTheme()) { + drawRainbowString(str, 24, 50, 2); + } else if (isYapaTheme()) { + drawYapaString(str, 24, 50, 2); + } else { + tft.setTextColor(0xBDD7, cardBg); + tft.drawString(str, 24, 50, 2); + } + }; + + auto updateDynamicAutoInfo = [&](int lightVal, int pwm) { + if (brightnessIndex != 0) + return; + String ldrText = String("Sensor LDR: ") + String(lightVal) + " -> Auto"; + uint16_t cardBg = isYapaTheme() ? 0x1082 + : (isRainbowTheme() ? 0x0000 : getThemeDarkColor()); + + drawSubtitle(ldrText, cardBg); + + int fillW = map(constrain(pwm, 0, 255), 0, 255, 0, 276); + drawProgressBar(fillW); + }; + auto drawBrightnessUI = [&]() { tft.fillRect(0, 0, 320, 180, TFT_BLACK); if (isRainbowTheme()) { @@ -1744,33 +1893,26 @@ void brightnessMenu() { fillRainbowAlphaRoundRect(10, 16, 300, 82, 5, 30); drawRainbowRoundRect(10, 16, 300, 82, 5, 120); + uint16_t cardBg = 0x0000; if (brightnessIndex == 0) { - drawRainbowString("Modo: AUTOMATICO", 24, 24, 4); - int lightVal = analogRead(LDR_PIN); - String ldrText = String("Sensor LDR: ") + String(lightVal) + (lightVal > LIGHT_LEVEL ? " -> Noche (15)" : " -> Dia (255)"); - drawRainbowString(ldrText, 24, 50, 2); + drawTitleAA("Modo: AUTOMATICO", cardBg); + int lightVal = getFilteredLdr(); + String ldrText = String("Sensor LDR: ") + String(lightVal) + " -> Auto"; + drawSubtitle(ldrText, cardBg); } else { - String title = String("Modo: MANUAL (") + BRIGHTNESS_NAME_TABLE[brightnessIndex] + ")"; - drawRainbowString(title, 24, 24, 4); + String title = "Modo: MANUAL"; + drawTitleAA(title, cardBg); String sub = String("Nivel ") + String(brightnessIndex) + " de 5 fijo"; - drawRainbowString(sub, 24, 50, 2); + drawSubtitle(sub, cardBg); } - // Visual Progress Bar (y = 72, x = 20, w = 280, h = 16) - fillRainbowAlphaRoundRect(20, 72, 280, 16, 4, 30); - drawRainbowRoundRect(20, 72, 280, 16, 4, 120); - int fillW = 0; if (brightnessIndex == 0) { - fillW = map((int)currentBacklight, 0, 255, 0, 276); + fillW = map(constrain((int)currentBacklight, 0, 255), 0, 255, 0, 276); } else { fillW = (brightnessIndex * 276) / 5; } - if (fillW > 4) { - for (int bx = 0; bx < fillW; bx++) { - tft.drawFastVLine(22 + bx, 74, 12, getRainbowScreenColor(22 + bx, 74)); - } - } + drawProgressBar(fillW); // 2. 6 Direct Touch Tiles (y: 112 to 170, h: 58) for (uint8_t i = 0; i < 6; i++) { @@ -1796,33 +1938,26 @@ void brightnessMenu() { tft.fillRoundRect(10, 16, 300, 82, 5, 0x1082); tft.drawRoundRect(10, 16, 300, 82, 5, 0x3186); + uint16_t cardBg = 0x1082; if (brightnessIndex == 0) { - drawYapaString("Modo: AUTOMATICO", 24, 24, 4); - int lightVal = analogRead(LDR_PIN); - String ldrText = String("Sensor LDR: ") + String(lightVal) + (lightVal > LIGHT_LEVEL ? " -> Noche (15)" : " -> Dia (255)"); - drawYapaString(ldrText, 24, 50, 2); + drawTitleAA("Modo: AUTOMATICO", cardBg); + int lightVal = getFilteredLdr(); + String ldrText = String("Sensor LDR: ") + String(lightVal) + " -> Auto"; + drawSubtitle(ldrText, cardBg); } else { - String title = String("Modo: MANUAL (") + BRIGHTNESS_NAME_TABLE[brightnessIndex] + ")"; - drawYapaString(title, 24, 24, 4); + String title = "Modo: MANUAL"; + drawTitleAA(title, cardBg); String sub = String("Nivel ") + String(brightnessIndex) + " de 5 fijo"; - drawYapaString(sub, 24, 50, 2); + drawSubtitle(sub, cardBg); } - // Visual Progress Bar (y = 72, x = 20, w = 280, h = 16) - tft.fillRoundRect(20, 72, 280, 16, 4, 0x0821); - tft.drawRoundRect(20, 72, 280, 16, 4, 0x3186); - int fillW = 0; if (brightnessIndex == 0) { - fillW = map((int)currentBacklight, 0, 255, 0, 276); + fillW = map(constrain((int)currentBacklight, 0, 255), 0, 255, 0, 276); } else { fillW = (brightnessIndex * 276) / 5; } - if (fillW > 4) { - for (int bx = 0; bx < fillW; bx++) { - tft.drawFastVLine(22 + bx, 74, 12, getYapaColor(bx / 46)); - } - } + drawProgressBar(fillW); // 2. 6 Direct Touch Tiles (y: 112 to 170, h: 58) for (uint8_t i = 0; i < 6; i++) { @@ -1845,40 +1980,32 @@ void brightnessMenu() { return; } + // Standard Theme // 1. Status Card (y: 16 to 98, h: 82) tft.fillRoundRect(10, 16, 300, 82, 5, getThemeDarkColor()); tft.drawRoundRect(10, 16, 300, 82, 5, getThemeAccentColor()); tft.fillRoundRect(12, 22, 4, 70, 2, getThemePrimaryColor()); - tft.setTextColor(TFT_WHITE, getThemeDarkColor()); + uint16_t cardBg = getThemeDarkColor(); if (brightnessIndex == 0) { - tft.drawString("Modo: AUTOMATICO", 24, 24, 4); - tft.setTextColor(0xBDD7, getThemeDarkColor()); - int lightVal = analogRead(LDR_PIN); - String ldrText = String("Sensor LDR: ") + String(lightVal) + (lightVal > LIGHT_LEVEL ? " -> Noche (15)" : " -> Dia (255)"); - tft.drawString(ldrText, 24, 50, 2); + drawTitleAA("Modo: AUTOMATICO", cardBg); + int lightVal = getFilteredLdr(); + String ldrText = String("Sensor LDR: ") + String(lightVal) + " -> Auto"; + drawSubtitle(ldrText, cardBg); } else { - String title = String("Modo: MANUAL (") + BRIGHTNESS_NAME_TABLE[brightnessIndex] + ")"; - tft.drawString(title, 24, 24, 4); - tft.setTextColor(0xBDD7, getThemeDarkColor()); + String title = "Modo: MANUAL"; + drawTitleAA(title, cardBg); String sub = String("Nivel ") + String(brightnessIndex) + " de 5 fijo"; - tft.drawString(sub, 24, 50, 2); + drawSubtitle(sub, cardBg); } - // Visual Progress Bar (y = 72, x = 20, w = 280, h = 16) - tft.fillRoundRect(20, 72, 280, 16, 4, 0x0841); - tft.drawRoundRect(20, 72, 280, 16, 4, getThemeDarkColor()); - int fillW = 0; if (brightnessIndex == 0) { - fillW = map((int)currentBacklight, 0, 255, 0, 276); + fillW = map(constrain((int)currentBacklight, 0, 255), 0, 255, 0, 276); } else { fillW = (brightnessIndex * 276) / 5; } - if (fillW > 4) { - uint16_t barCol = (brightnessIndex == 0) ? getThemePrimaryColor() : (brightnessIndex >= 4 ? TFT_ORANGE : getThemeAccentColor()); - tft.fillRoundRect(22, 74, fillW, 12, 3, barCol); - } + drawProgressBar(fillW); // 2. 6 Direct Touch Tiles (y: 112 to 170, h: 58) for (uint8_t i = 0; i < 6; i++) { @@ -1911,16 +2038,24 @@ void brightnessMenu() { waitForTouchRelease(); uint32_t lastLdrRefresh = 0; - bool lastDimState = dim; + int lastShownLdr = -1; + int lastShownPwm = -1; while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); if (brightnessIndex == 0) { - if (dim != lastDimState || millis() - lastLdrRefresh > 500) { - lastDimState = dim; + if (millis() - lastLdrRefresh >= 100) { lastLdrRefresh = millis(); - drawBrightnessUI(); + int curLdr = getFilteredLdr(); + int curPwm = (int)round(currentBacklight); + if (abs(curLdr - lastShownLdr) >= 15 || + abs(curPwm - lastShownPwm) >= 2) { + lastShownLdr = curLdr; + lastShownPwm = curPwm; + updateDynamicAutoInfo(curLdr, curPwm); + } } } uint16_t tx = 0, ty = 0; @@ -1931,10 +2066,12 @@ void brightnessMenu() { if (ty >= 106 && ty < 176) { int8_t touchedTile = (tx - 7) / 52; if (touchedTile >= 0 && touchedTile <= 5) { - brightnessIndex = touchedTile; - applyBrightness(brightnessIndex); - drawBrightnessUI(); - clickSound(); + if (brightnessIndex != touchedTile) { + brightnessIndex = touchedTile; + applyBrightness(brightnessIndex); + drawBrightnessUI(); + clickSound(); + } } waitForTouchRelease(); } @@ -1993,16 +2130,22 @@ void soundsMenu() { fillRainbowAlphaRoundRect(10, 20, 300, 68, 5, (sel == 0) ? 80 : 30); drawRainbowRoundRect(10, 20, 300, 68, 5, (sel == 0) ? 255 : 120); drawRainbowString("Sonido de Alarma", 24, 28, 4); - String almInfo = String(ALARM_NAME_TABLE[alarmSoundType > 5 ? 0 : alarmSoundType]) + " | " + - (alarmVolumeLevel == 0 ? "Silencio" : ("Vol: " + String(alarmVolumeLevel))); + String almInfo = + String(ALARM_NAME_TABLE[alarmSoundType > 5 ? 0 : alarmSoundType]) + + " | " + + (alarmVolumeLevel == 0 ? "Silencio" + : ("Vol: " + String(alarmVolumeLevel))); drawRainbowString(almInfo, 24, 58, 2); // Card 1: Sonido de Click (y: 102 to 170, h: 68) fillRainbowAlphaRoundRect(10, 102, 300, 68, 5, (sel == 1) ? 80 : 30); drawRainbowRoundRect(10, 102, 300, 68, 5, (sel == 1) ? 255 : 120); drawRainbowString("Sonido de Click", 24, 110, 4); - String beepInfo = String(BEEP_NAME_TABLE[beepSoundType > 5 ? 0 : beepSoundType]) + " | " + - (buzzerVolumeLevel == 0 ? "Silencio" : ("Vol: " + String(buzzerVolumeLevel))); + String beepInfo = + String(BEEP_NAME_TABLE[beepSoundType > 5 ? 0 : beepSoundType]) + + " | " + + (buzzerVolumeLevel == 0 ? "Silencio" + : ("Vol: " + String(buzzerVolumeLevel))); drawRainbowString(beepInfo, 24, 140, 2); drawExitButton(false); @@ -2015,24 +2158,32 @@ void soundsMenu() { // Card 0: Sonido de Alarma (y: 20 to 88, h: 68) tft.fillRoundRect(10, 20, 300, 68, 5, (sel == 0) ? 0x2104 : 0x1082); - tft.drawRoundRect(10, 20, 300, 68, 5, (sel == 0) ? getYapaColor(0) : 0x3186); + tft.drawRoundRect(10, 20, 300, 68, 5, + (sel == 0) ? getYapaColor(0) : 0x3186); if (sel == 0) { tft.drawRoundRect(11, 21, 298, 66, 4, TFT_WHITE); } drawYapaString("Sonido de Alarma", 24, 28, 4); - String almInfo = String(ALARM_NAME_TABLE[alarmSoundType > 5 ? 0 : alarmSoundType]) + " | " + - (alarmVolumeLevel == 0 ? "Silencio" : ("Vol: " + String(alarmVolumeLevel))); + String almInfo = + String(ALARM_NAME_TABLE[alarmSoundType > 5 ? 0 : alarmSoundType]) + + " | " + + (alarmVolumeLevel == 0 ? "Silencio" + : ("Vol: " + String(alarmVolumeLevel))); drawYapaString(almInfo, 24, 58, 2); // Card 1: Sonido de Click (y: 102 to 170, h: 68) tft.fillRoundRect(10, 102, 300, 68, 5, (sel == 1) ? 0x2104 : 0x1082); - tft.drawRoundRect(10, 102, 300, 68, 5, (sel == 1) ? getYapaColor(2) : 0x3186); + tft.drawRoundRect(10, 102, 300, 68, 5, + (sel == 1) ? getYapaColor(2) : 0x3186); if (sel == 1) { tft.drawRoundRect(11, 103, 298, 66, 4, TFT_WHITE); } drawYapaString("Sonido de Click", 24, 110, 4); - String beepInfo = String(BEEP_NAME_TABLE[beepSoundType > 5 ? 0 : beepSoundType]) + " | " + - (buzzerVolumeLevel == 0 ? "Silencio" : ("Vol: " + String(buzzerVolumeLevel))); + String beepInfo = + String(BEEP_NAME_TABLE[beepSoundType > 5 ? 0 : beepSoundType]) + + " | " + + (buzzerVolumeLevel == 0 ? "Silencio" + : ("Vol: " + String(buzzerVolumeLevel))); drawYapaString(beepInfo, 24, 140, 2); drawExitButton(false); @@ -2041,7 +2192,8 @@ void soundsMenu() { // Card 0: Sonido de Alarma (y: 20 to 88, h: 68) uint16_t bg0 = (sel == 0) ? getThemeAccentColor() : getThemeDarkColor(); - uint16_t border0 = (sel == 0) ? getThemePrimaryColor() : getThemeAccentColor(); + uint16_t border0 = + (sel == 0) ? getThemePrimaryColor() : getThemeAccentColor(); tft.fillRoundRect(10, 20, 300, 68, 5, bg0); tft.drawRoundRect(10, 20, 300, 68, 5, border0); if (sel == 0) { @@ -2051,14 +2203,18 @@ void soundsMenu() { } tft.setTextColor(TFT_WHITE, bg0); tft.drawString("Sonido de Alarma", 24, 28, 4); - String almInfo = String(ALARM_NAME_TABLE[alarmSoundType > 5 ? 0 : alarmSoundType]) + " | " + - (alarmVolumeLevel == 0 ? "Silencio" : ("Vol: " + String(alarmVolumeLevel))); + String almInfo = + String(ALARM_NAME_TABLE[alarmSoundType > 5 ? 0 : alarmSoundType]) + + " | " + + (alarmVolumeLevel == 0 ? "Silencio" + : ("Vol: " + String(alarmVolumeLevel))); tft.setTextColor((sel == 0) ? TFT_YELLOW : 0xBDD7, bg0); tft.drawString(almInfo, 24, 58, 2); // Card 1: Sonido de Click (y: 102 to 170, h: 68) uint16_t bg1 = (sel == 1) ? getThemeAccentColor() : getThemeDarkColor(); - uint16_t border1 = (sel == 1) ? getThemePrimaryColor() : getThemeAccentColor(); + uint16_t border1 = + (sel == 1) ? getThemePrimaryColor() : getThemeAccentColor(); tft.fillRoundRect(10, 102, 300, 68, 5, bg1); tft.drawRoundRect(10, 102, 300, 68, 5, border1); if (sel == 1) { @@ -2068,8 +2224,11 @@ void soundsMenu() { } tft.setTextColor(TFT_WHITE, bg1); tft.drawString("Sonido de Click", 24, 110, 4); - String beepInfo = String(BEEP_NAME_TABLE[beepSoundType > 5 ? 0 : beepSoundType]) + " | " + - (buzzerVolumeLevel == 0 ? "Silencio" : ("Vol: " + String(buzzerVolumeLevel))); + String beepInfo = + String(BEEP_NAME_TABLE[beepSoundType > 5 ? 0 : beepSoundType]) + + " | " + + (buzzerVolumeLevel == 0 ? "Silencio" + : ("Vol: " + String(buzzerVolumeLevel))); tft.setTextColor((sel == 1) ? TFT_YELLOW : 0xBDD7, bg1); tft.drawString(beepInfo, 24, 140, 2); @@ -2085,7 +2244,8 @@ void soundsMenu() { waitForTouchRelease(); while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); int8_t executeSelect = -1; uint16_t tx = 0, ty = 0; @@ -2126,8 +2286,10 @@ void soundsMenu() { if (pressed) { resetMenuActivity(); if (millis() - holdtimer >= 40 && millis() - holdtimer <= 1200) { - if (choice == 255) choice = 0; - else choice = (choice + 1) % 3; + if (choice == 255) + choice = 0; + else + choice = (choice + 1) % 3; drawSoundsUI(choice); clickSound(); } @@ -2139,13 +2301,15 @@ void soundsMenu() { if (executeSelect >= 0) { if (executeSelect == 0) { alarmSoundMenu(); - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; choice = 255; drawSoundsUI(choice); waitForTouchRelease(); } else if (executeSelect == 1) { beepSoundMenu(); - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; choice = 255; drawSoundsUI(choice); waitForTouchRelease(); @@ -2162,16 +2326,14 @@ void soundsMenu() { // ------------------------------------------------------------- // Menu de Apariencia / Temas (Grid 3x3 de 9 Temas) // ------------------------------------------------------------- -void drawThemeHeader() { - drawMenuHeaderBanner("Temas de Color"); -} +void drawThemeHeader() { drawMenuHeaderBanner("Temas de Color"); } void themeMenu() { tft.fillScreen(TFT_BLACK); - const char* const THEME_SHORT_NAMES[9] = { - "Cian", "Verde", "Arcoiris", "Blanco", "Naranja", "Violeta", "Rojo", "Ambar", "Yapa" - }; + const char *const THEME_SHORT_NAMES[9] = {"Cian", "Verde", "Arcoiris", + "Blanco", "Naranja", "Violeta", + "Rojo", "Ambar", "Yapa"}; auto drawThemeUI = [&]() { // Redraw screen header banner in newly selected theme colors @@ -2224,9 +2386,11 @@ void themeMenu() { // Rainbow theme: color-wheel swatch (hue by angle) for (int8_t dy = -5; dy <= 5; dy++) { for (int8_t dx = -5; dx <= 5; dx++) { - if (dx * dx + dy * dy > 25) continue; + if (dx * dx + dy * dy > 25) + continue; float ang = atan2f((float)dy, (float)dx) * 57.2958f; - if (ang < 0) ang += 360.0f; + if (ang < 0) + ang += 360.0f; tft.drawPixel(cx + dx, cy + dy, hueToRgb565((uint16_t)ang)); } } @@ -2263,7 +2427,8 @@ void themeMenu() { long holdtimer = 0; while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); uint16_t tx = 0, ty = 0; @@ -2326,9 +2491,7 @@ void themeMenu() { // ------------------------------------------------------------- // Sub-screen 4: Menu de Transiciones (Deslizamiento / Desvanecimiento) // ------------------------------------------------------------- -void drawTransitionHeader() { - drawMenuHeaderBanner("Efecto de Transicion"); -} +void drawTransitionHeader() { drawMenuHeaderBanner("Efecto de Transicion"); } void transitionMenu() { tft.fillScreen(TFT_BLACK); @@ -2336,8 +2499,9 @@ void transitionMenu() { auto drawTransitionUI = [&]() { drawTransitionHeader(); - const char* titles[2] = { "Fundido a Negro", "Desvanecimiento" }; - const char* descs[2] = { "Atenuacion de luz estilo cockpit", "Mezcla gradual de pantallas" }; + const char *titles[2] = {"Fundido a Negro", "Desvanecimiento"}; + const char *descs[2] = {"Atenuacion de luz estilo cockpit", + "Mezcla gradual de pantallas"}; for (uint8_t i = 0; i < 2; i++) { int16_t y = 36 + i * 54; @@ -2449,7 +2613,8 @@ void transitionMenu() { long holdtimer = 0; while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); uint16_t tx = 0, ty = 0; if (getTouch(&tx, &ty)) { @@ -2479,7 +2644,8 @@ void transitionMenu() { // 2. Touch on [ PROBAR EFECTO ] (y: 142 to 176) else if (ty >= 142 && ty <= 176 && tx >= 40 && tx <= 280) { touchBeep(); - // Demonstrate transition across all 5 pages (Page 0 -> Page 1 -> Page 2 -> Page 3 -> Page 4 -> Page 0) + // Demonstrate transition across all 5 pages (Page 0 -> Page 1 -> Page 2 + // -> Page 3 -> Page 4 -> Page 0) performScreenTransition(true, 0, 1); delay(350); performScreenTransition(true, 1, 2); @@ -2537,9 +2703,7 @@ void transitionMenu() { // ------------------------------------------------------------- // Sub-screen 3: Menu de Apariencia (Temas de Color y Transiciones) // ------------------------------------------------------------- -void drawAppearanceHeader() { - drawMenuHeaderBanner("Apariencia"); -} +void drawAppearanceHeader() { drawMenuHeaderBanner("Apariencia"); } void appearanceMenu() { uint8_t choice = 255; @@ -2559,23 +2723,29 @@ void appearanceMenu() { tft.drawRoundRect(11, 35, 298, 66, 4, TFT_WHITE); } drawRainbowString("Temas de Color", 24, 42, 4); - String themeInfo = String(GAUGE_THEMES[themeIndex].name) + " | " + String(GAUGE_THEMES[themeIndex].desc); + String themeInfo = String(GAUGE_THEMES[themeIndex].name) + " | " + + String(GAUGE_THEMES[themeIndex].desc); drawRainbowString(themeInfo, 24, 72, 2); - tft.fillTriangle(296, 68, 290, 62, 290, 74, (sel == 0) ? TFT_WHITE : getRainbowScreenColor(293)); + tft.fillTriangle(296, 68, 290, 62, 290, 74, + (sel == 0) ? TFT_WHITE : getRainbowScreenColor(293)); } else if (isYapaTheme()) { tft.fillRoundRect(10, 34, 300, 68, 5, (sel == 0) ? 0x2104 : 0x1082); - tft.drawRoundRect(10, 34, 300, 68, 5, (sel == 0) ? getYapaColor(0) : 0x3186); + tft.drawRoundRect(10, 34, 300, 68, 5, + (sel == 0) ? getYapaColor(0) : 0x3186); if (sel == 0) { tft.drawRoundRect(11, 35, 298, 66, 4, TFT_WHITE); } drawYapaString("Temas de Color", 24, 42, 4); - String themeInfo = String(GAUGE_THEMES[themeIndex].name) + " | " + String(GAUGE_THEMES[themeIndex].desc); + String themeInfo = String(GAUGE_THEMES[themeIndex].name) + " | " + + String(GAUGE_THEMES[themeIndex].desc); drawYapaString(themeInfo, 24, 72, 2); - tft.fillTriangle(296, 68, 290, 62, 290, 74, (sel == 0) ? TFT_WHITE : getYapaColor(1)); + tft.fillTriangle(296, 68, 290, 62, 290, 74, + (sel == 0) ? TFT_WHITE : getYapaColor(1)); } else { uint16_t col0 = getThemePrimaryColor(); uint16_t bg0 = (sel == 0) ? getThemeAccentColor() : getThemeDarkColor(); - uint16_t border0 = (sel == 0) ? getThemePrimaryColor() : getThemeAccentColor(); + uint16_t border0 = + (sel == 0) ? getThemePrimaryColor() : getThemeAccentColor(); tft.fillRoundRect(10, 34, 300, 68, 5, bg0); tft.drawRoundRect(10, 34, 300, 68, 5, border0); if (sel == 0) { @@ -2585,10 +2755,12 @@ void appearanceMenu() { } tft.setTextColor(TFT_WHITE, bg0); tft.drawString("Temas de Color", 24, 42, 4); - String themeInfo = String(GAUGE_THEMES[themeIndex].name) + " | " + String(GAUGE_THEMES[themeIndex].desc); + String themeInfo = String(GAUGE_THEMES[themeIndex].name) + " | " + + String(GAUGE_THEMES[themeIndex].desc); tft.setTextColor((sel == 0) ? TFT_YELLOW : 0xBDD7, bg0); tft.drawString(themeInfo, 24, 72, 2); - tft.fillTriangle(296, 68, 290, 62, 290, 74, (sel == 0) ? TFT_WHITE : col0); + tft.fillTriangle(296, 68, 290, 62, 290, 74, + (sel == 0) ? TFT_WHITE : col0); } // Card 1: Efecto de Transicion (y: 110 to 178, h: 68) @@ -2599,23 +2771,31 @@ void appearanceMenu() { tft.drawRoundRect(11, 111, 298, 66, 4, TFT_WHITE); } drawRainbowString("Efecto Transicion", 24, 118, 4); - String transInfo = (transitionType == 0) ? "Fundido a Negro | Atenuacion" : "Desvanecimiento | Mezcla gradual"; + String transInfo = (transitionType == 0) + ? "Fundido a Negro | Atenuacion" + : "Desvanecimiento | Mezcla gradual"; drawRainbowString(transInfo, 24, 148, 2); - tft.fillTriangle(296, 144, 290, 138, 290, 150, (sel == 1) ? TFT_WHITE : getRainbowScreenColor(293)); + tft.fillTriangle(296, 144, 290, 138, 290, 150, + (sel == 1) ? TFT_WHITE : getRainbowScreenColor(293)); } else if (isYapaTheme()) { tft.fillRoundRect(10, 110, 300, 68, 5, (sel == 1) ? 0x2104 : 0x1082); - tft.drawRoundRect(10, 110, 300, 68, 5, (sel == 1) ? getYapaColor(2) : 0x3186); + tft.drawRoundRect(10, 110, 300, 68, 5, + (sel == 1) ? getYapaColor(2) : 0x3186); if (sel == 1) { tft.drawRoundRect(11, 111, 298, 66, 4, TFT_WHITE); } drawYapaString("Efecto Transicion", 24, 118, 4); - String transInfo = (transitionType == 0) ? "Fundido a Negro | Atenuacion" : "Desvanecimiento | Mezcla gradual"; + String transInfo = (transitionType == 0) + ? "Fundido a Negro | Atenuacion" + : "Desvanecimiento | Mezcla gradual"; drawYapaString(transInfo, 24, 148, 2); - tft.fillTriangle(296, 144, 290, 138, 290, 150, (sel == 1) ? TFT_WHITE : getYapaColor(3)); + tft.fillTriangle(296, 144, 290, 138, 290, 150, + (sel == 1) ? TFT_WHITE : getYapaColor(3)); } else { uint16_t col1 = getThemePrimaryColor(); uint16_t bg1 = (sel == 1) ? getThemeAccentColor() : getThemeDarkColor(); - uint16_t border1 = (sel == 1) ? getThemePrimaryColor() : getThemeAccentColor(); + uint16_t border1 = + (sel == 1) ? getThemePrimaryColor() : getThemeAccentColor(); tft.fillRoundRect(10, 110, 300, 68, 5, bg1); tft.drawRoundRect(10, 110, 300, 68, 5, border1); if (sel == 1) { @@ -2625,10 +2805,13 @@ void appearanceMenu() { } tft.setTextColor(TFT_WHITE, bg1); tft.drawString("Efecto Transicion", 24, 118, 4); - String transInfo = (transitionType == 0) ? "Fundido a Negro | Atenuacion" : "Desvanecimiento | Mezcla gradual"; + String transInfo = (transitionType == 0) + ? "Fundido a Negro | Atenuacion" + : "Desvanecimiento | Mezcla gradual"; tft.setTextColor((sel == 1) ? TFT_YELLOW : 0xBDD7, bg1); tft.drawString(transInfo, 24, 148, 2); - tft.fillTriangle(296, 144, 290, 138, 290, 150, (sel == 1) ? TFT_WHITE : col1); + tft.fillTriangle(296, 144, 290, 138, 290, 150, + (sel == 1) ? TFT_WHITE : col1); } // Bottom action button: [ SALIR ] (x: 80, y: 186, w: 160, h: 42) @@ -2648,7 +2831,8 @@ void appearanceMenu() { waitForTouchRelease(); while (true) { - if (checkMenuTimeout()) break; + if (checkMenuTimeout()) + break; autoDim(); int8_t executeSelect = -1; uint16_t tx = 0, ty = 0; @@ -2698,7 +2882,8 @@ void appearanceMenu() { choice = 0; } else { choice++; - if (choice > 2) choice = 0; + if (choice > 2) + choice = 0; } drawAppearanceUI(choice); touchBeep(); @@ -2714,13 +2899,15 @@ void appearanceMenu() { break; } else if (executeSelect == 0) { themeMenu(); - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; choice = 255; drawAppearanceUI(choice); waitForTouchRelease(); } else if (executeSelect == 1) { transitionMenu(); - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; choice = 255; drawAppearanceUI(choice); waitForTouchRelease(); @@ -2733,9 +2920,7 @@ void appearanceMenu() { // ------------------------------------------------------------- // Encabezado del Menu de Configuracion // ------------------------------------------------------------- -void drawConfigHeader() { - drawMenuHeaderBanner("Menu de Configuracion"); -} +void drawConfigHeader() { drawMenuHeaderBanner("Menu de Configuracion"); } // ------------------------------------------------------------- // Funciones de Botones de Scroll con Animacion Tactil @@ -2744,11 +2929,13 @@ void drawScrollUpButton(bool canScroll, bool pressed) { if (isRainbowTheme()) { uint8_t alpha = pressed ? 90 : (canScroll ? 35 : 12); fillRainbowAlphaRoundRect(268, 32, 42, 42, 5, alpha); - drawRainbowRoundRect(268, 32, 42, 42, 5, pressed ? 255 : (canScroll ? 150 : 40)); + drawRainbowRoundRect(268, 32, 42, 42, 5, + pressed ? 255 : (canScroll ? 150 : 40)); if (pressed) { tft.drawRoundRect(269, 33, 40, 40, 4, TFT_WHITE); } - uint16_t fg = pressed ? TFT_WHITE : (canScroll ? getRainbowScreenColor(289) : 0x4208); + uint16_t fg = + pressed ? TFT_WHITE : (canScroll ? getRainbowScreenColor(289) : 0x4208); tft.fillTriangle(289, 42, 278, 58, 300, 58, fg); return; } @@ -2782,11 +2969,13 @@ void drawScrollDownButton(bool canScroll, bool pressed) { if (isRainbowTheme()) { uint8_t alpha = pressed ? 90 : (canScroll ? 35 : 12); fillRainbowAlphaRoundRect(268, 186, 42, 42, 5, alpha); - drawRainbowRoundRect(268, 186, 42, 42, 5, pressed ? 255 : (canScroll ? 150 : 40)); + drawRainbowRoundRect(268, 186, 42, 42, 5, + pressed ? 255 : (canScroll ? 150 : 40)); if (pressed) { tft.drawRoundRect(269, 187, 40, 40, 4, TFT_WHITE); } - uint16_t fg = pressed ? TFT_WHITE : (canScroll ? getRainbowScreenColor(289) : 0x4208); + uint16_t fg = + pressed ? TFT_WHITE : (canScroll ? getRainbowScreenColor(289) : 0x4208); tft.fillTriangle(289, 214, 278, 198, 300, 198, fg); return; } @@ -2826,7 +3015,8 @@ void listMenu(uint8_t choice, uint8_t scrollOffset) { // 1. Draw 3 visible cards from menuList[scrollOffset .. scrollOffset + 2] for (uint8_t i = 0; i < 3; i++) { uint8_t itemIdx = scrollOffset + i; - if (itemIdx >= 6) break; // 6 list items (0 to 5), item 6 is Salir + if (itemIdx >= 6) + break; // 6 list items (0 to 5), item 6 is Salir int y = 32 + i * 50; bool isSel = (choice == itemIdx); @@ -2838,20 +3028,24 @@ void listMenu(uint8_t choice, uint8_t scrollOffset) { tft.drawRoundRect(11, y + 1, 248, 42, 4, TFT_WHITE); } drawRainbowString(menuList[itemIdx], 26, y + 9, 4); - tft.fillTriangle(248, y + 22, 242, y + 16, 242, y + 28, isSel ? TFT_WHITE : getRainbowScreenColor(245)); + tft.fillTriangle(248, y + 22, 242, y + 16, 242, y + 28, + isSel ? TFT_WHITE : getRainbowScreenColor(245)); } else if (isYapaTheme()) { tft.fillRoundRect(10, y, 250, 44, 5, isSel ? 0x2104 : 0x1082); - tft.drawRoundRect(10, y, 250, 44, 5, isSel ? getYapaColor(itemIdx) : 0x3186); + tft.drawRoundRect(10, y, 250, 44, 5, + isSel ? getYapaColor(itemIdx) : 0x3186); if (isSel) { tft.drawRoundRect(11, y + 1, 248, 42, 4, TFT_WHITE); } else { tft.fillRoundRect(13, y + 6, 4, 32, 2, getYapaColor(itemIdx)); } drawYapaString(menuList[itemIdx], 26, y + 9, 4); - tft.fillTriangle(248, y + 22, 242, y + 16, 242, y + 28, isSel ? TFT_WHITE : getYapaColor(itemIdx)); + tft.fillTriangle(248, y + 22, 242, y + 16, 242, y + 28, + isSel ? TFT_WHITE : getYapaColor(itemIdx)); } else { uint16_t bgCol = isSel ? getThemeAccentColor() : getThemeDarkColor(); - uint16_t borderCol = isSel ? getThemePrimaryColor() : getThemeAccentColor(); + uint16_t borderCol = + isSel ? getThemePrimaryColor() : getThemeAccentColor(); tft.fillRoundRect(10, y, 250, 44, 5, bgCol); tft.drawRoundRect(10, y, 250, 44, 5, borderCol); @@ -2866,7 +3060,8 @@ void listMenu(uint8_t choice, uint8_t scrollOffset) { tft.drawString(menuList[itemIdx], 26, y + 9, 4); // Chevron arrow '>' on right edge of card in theme primary color - tft.fillTriangle(248, y + 22, 242, y + 16, 242, y + 28, isSel ? TFT_WHITE : getThemePrimaryColor()); + tft.fillTriangle(248, y + 22, 242, y + 16, 242, y + 28, + isSel ? TFT_WHITE : getThemePrimaryColor()); } } @@ -2878,7 +3073,8 @@ void listMenu(uint8_t choice, uint8_t scrollOffset) { // Extended Middle Track & Thumb (y: 78 to 182, h: 104) tft.fillRoundRect(286, 78, 6, 104, 3, 0x0841); - tft.drawRoundRect(286, 78, 6, 104, 3, isRainbowTheme() ? 0x2104 : getThemeDarkColor()); + tft.drawRoundRect(286, 78, 6, 104, 3, + isRainbowTheme() ? 0x2104 : getThemeDarkColor()); int thumbY = 78 + (scrollOffset * 72) / maxScroll; if (isRainbowTheme()) { tft.fillRoundRect(286, thumbY, 6, 32, 3, getRainbowScreenColor(286)); @@ -2918,11 +3114,13 @@ void configMenu() { drawConfigHeader(); listMenu(select, scrollOffset); - // Exigir que el usuario levante el dedo antes de registrar cualquier pulsacion en los submenues + // Exigir que el usuario levante el dedo antes de registrar cualquier + // pulsacion en los submenues bool requireTouchRelease = true; while (true) { - if (wokeFromSleep || checkMenuTimeout()) break; + if (wokeFromSleep || checkMenuTimeout()) + break; autoDim(); int8_t executeSelect = -1; @@ -2930,7 +3128,8 @@ void configMenu() { bool touched = getTouch(&tx, &ty); bool btnLow = (digitalRead(SELECTOR_PIN) == LOW); - // Solo habilitar interacciones cuando se haya soltado la pantalla y el boton por completo + // Solo habilitar interacciones cuando se haya soltado la pantalla y el + // boton por completo if (!touched && !btnLow) { requireTouchRelease = false; } @@ -2986,11 +3185,13 @@ void configMenu() { if (ty < 130) { drawScrollUpButton(scrollOffset > 0, true); touchBeep(); - if (scrollOffset > 0) scrollOffset--; + if (scrollOffset > 0) + scrollOffset--; } else { drawScrollDownButton(scrollOffset < maxScroll, true); touchBeep(); - if (scrollOffset < maxScroll) scrollOffset++; + if (scrollOffset < maxScroll) + scrollOffset++; } delay(100); waitForTouchRelease(); @@ -3033,7 +3234,8 @@ void configMenu() { select = scrollOffset; } else { select++; - if (select >= maxMenu) select = 0; + if (select >= maxMenu) + select = 0; } // Auto-scroll to keep selected card visible if (select < 6) { @@ -3057,7 +3259,8 @@ void configMenu() { // Option 0: Alarmas (Menu de Activacion y Umbrales) if (select == 0) { alarmCategoryMenu(); - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; tft.fillScreen(TFT_BLACK); drawConfigHeader(); select = 255; @@ -3067,7 +3270,8 @@ void configMenu() { // Option 1: Sonidos (Menu de Sonido de Alarma y Sonido de Click) else if (select == 1) { soundsMenu(); - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; tft.fillScreen(TFT_BLACK); drawConfigHeader(); select = 255; @@ -3077,7 +3281,8 @@ void configMenu() { // Option 2: Brillo de Pantalla else if (select == 2) { brightnessMenu(); - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; tft.fillScreen(TFT_BLACK); drawConfigHeader(); select = 255; @@ -3087,7 +3292,8 @@ void configMenu() { // Option 3: Apariencia (Temas y Transiciones) else if (select == 3) { appearanceMenu(); - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; tft.fillScreen(TFT_BLACK); drawConfigHeader(); select = 255; @@ -3097,7 +3303,8 @@ void configMenu() { // Option 4: Modo Dormir else if (select == 4) { sleepMenu(); - if (wokeFromSleep || menuExitedDueToTimeout) break; + if (wokeFromSleep || menuExitedDueToTimeout) + break; tft.fillScreen(TFT_BLACK); drawConfigHeader(); select = 255; @@ -3107,7 +3314,8 @@ void configMenu() { // Option 5: Reiniciar else if (select == 5) { restartConfirmationMenu(); - if (menuExitedDueToTimeout) break; + if (menuExitedDueToTimeout) + break; tft.fillScreen(TFT_BLACK); drawConfigHeader(); select = 255; diff --git a/sketch/obd2_gauge/kmh_aa_data.h b/sketch/obd2_gauge/kmh_aa_data.h index fc45d1a..2d27fdb 100644 --- a/sketch/obd2_gauge/kmh_aa_data.h +++ b/sketch/obd2_gauge/kmh_aa_data.h @@ -13,6 +13,9 @@ #define VOLT_AA_WIDTH 22 #define VOLT_AA_HEIGHT 25 +#define TIT_AGUA_WIDTH 44 +#define TIT_AGUA_HEIGHT 11 + #define TIT_REF_WIDTH 108 #define TIT_REF_HEIGHT 11 @@ -148,6 +151,40 @@ static const uint8_t s_titRefAlpha[1188] PROGMEM = { 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x0A, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x09, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0xBF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0xA6, 0xFF, 0x6F, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x35, 0xFB, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, }; +static const uint8_t s_titAguaAlpha[484] PROGMEM = { + 0x00, 0x00, 0x00, 0x41, 0xFF, 0xEE, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xC3, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC3, 0x0B, 0x00, 0x00, 0xFF, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xEE, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9A, + 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBB, 0xFF, 0xEE, 0xC4, 0xC4, 0xC4, 0xEB, 0xFF, + 0xBC, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x9A, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xED, 0xF6, 0xFF, 0xA6, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x2D, 0x00, 0x00, 0x00, 0x26, 0xFF, 0xFC, 0x00, 0x00, 0xFF, + 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x05, 0xED, 0xF6, 0xFF, + 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0x91, 0xE4, 0xF4, 0x0A, 0x00, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7E, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x4D, 0xFF, 0x91, 0xE4, 0xF4, 0x0A, 0x00, 0x00, + 0x00, 0x00, 0xA7, 0xFF, 0x40, 0x93, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0xA7, 0xFF, 0x40, 0x93, 0xFF, 0x58, 0x00, 0x00, 0x00, 0x0B, 0xF4, 0xEC, + 0x03, 0x40, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x68, 0xFF, 0xFF, 0xFF, + 0xFC, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x0B, + 0xF4, 0xEC, 0x03, 0x40, 0xFF, 0xB1, 0x00, 0x00, 0x00, 0x5A, 0xFF, 0xA0, 0x00, 0x03, 0xEA, 0xF9, + 0x11, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x4F, 0xC4, 0xC4, 0xFF, 0xFC, 0x00, 0x00, 0xFF, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x5A, 0xFF, 0xA0, 0x00, 0x03, + 0xEA, 0xF9, 0x11, 0x00, 0x00, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0xB3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x63, 0x00, + 0x12, 0xFA, 0xFE, 0xD0, 0xD0, 0xD0, 0xDD, 0xFF, 0xBC, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x28, 0x00, + 0x00, 0x00, 0x22, 0xFF, 0xFC, 0x00, 0x00, 0xFF, 0xFE, 0x28, 0x00, 0x00, 0x00, 0x22, 0xFF, 0xFC, + 0x00, 0x00, 0x12, 0xFA, 0xFE, 0xD0, 0xD0, 0xD0, 0xDD, 0xFF, 0xBC, 0x00, 0x66, 0xFF, 0xBA, 0x00, + 0x00, 0x00, 0x12, 0xF8, 0xFD, 0x18, 0x00, 0x00, 0xBB, 0xFF, 0xEE, 0xC4, 0xC4, 0xC4, 0xE9, 0xFF, + 0xB7, 0x00, 0x00, 0xBB, 0xFF, 0xEE, 0xC4, 0xC4, 0xC4, 0xE9, 0xFF, 0xB7, 0x00, 0x00, 0x66, 0xFF, + 0xBA, 0x00, 0x00, 0x00, 0x12, 0xF8, 0xFD, 0x18, 0xBF, 0xFF, 0x56, 0x00, 0x00, 0x00, 0x00, 0xA6, + 0xFF, 0x6F, 0x00, 0x00, 0x0A, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x09, 0x00, 0x00, 0x0A, + 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x09, 0x00, 0x00, 0xBF, 0xFF, 0x56, 0x00, 0x00, 0x00, + 0x00, 0xA6, 0xFF, 0x6F, +}; + // 8-bit Anti-Aliased 'titBat' (60x11) static const uint8_t s_titBatAlpha[660] PROGMEM = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xEE, 0x06, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCC, 0x0F, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xFF, 0xEE, 0x06, 0x00, 0x00, 0x00, @@ -189,6 +226,8 @@ inline void drawKmhAaBitmap(T &dst, int bx, int by, int w, int h, const uint8_t curCol = (i < 13) ? getYapaColor(0) : getYapaColor(1); } else if (alpha == s_voltAlpha) { curCol = getYapaColor(2); + } else if (alpha == s_titAguaAlpha) { + curCol = getYapaColor((i * 4) / 44); } else if (alpha == s_titRefAlpha) { curCol = getYapaColor((i * 12) / 108); } else if (alpha == s_titBatAlpha) { @@ -223,6 +262,11 @@ inline void drawVolt_AA(T &dst, int bx, int by, uint16_t color = 0xC618, uint16_ drawKmhAaBitmap(dst, bx, by, VOLT_AA_WIDTH, VOLT_AA_HEIGHT, s_voltAlpha, color, bgCol, clip_h, rainbow); } +template +inline void drawTitAgua_AA(T &dst, int bx, int by, uint16_t color = 0xBDD7, uint16_t bgCol = 0x10A2, int clip_h = 240, bool rainbow = false) { + drawKmhAaBitmap(dst, bx, by, TIT_AGUA_WIDTH, TIT_AGUA_HEIGHT, s_titAguaAlpha, color, bgCol, clip_h, rainbow); +} + template inline void drawTitRef_AA(T &dst, int bx, int by, uint16_t color = 0xBDD7, uint16_t bgCol = 0x10A2, int clip_h = 240, bool rainbow = false) { drawKmhAaBitmap(dst, bx, by, TIT_REF_WIDTH, TIT_REF_HEIGHT, s_titRefAlpha, color, bgCol, clip_h, rainbow); diff --git a/sketch/obd2_gauge/meter.h b/sketch/obd2_gauge/meter.h index d028f4b..cbe9c68 100644 --- a/sketch/obd2_gauge/meter.h +++ b/sketch/obd2_gauge/meter.h @@ -349,7 +349,8 @@ const float blockC[20][4] PROGMEM = { // Draw an individual solid rectangular block with smooth subpixel anti-aliasing inline void drawBarBlock(uint8_t i, uint16_t color) { - if (isRainbowTheme() && color != TFT_RED && color != METER_INACTIVE_COLOR && color != TFT_BLACK) + if (isRainbowTheme() && color != TFT_RED && color != METER_INACTIVE_COLOR && + color != TFT_BLACK) color = getRainbowBlockColor(i, NUM_BAR_BLOCKS); int16_t minX = pgm_read_word(&blockMinX[i]); int16_t maxX = pgm_read_word(&blockMaxX[i]); @@ -479,7 +480,8 @@ const float quadBlockC[20][4] PROGMEM = { // subpixel anti-aliasing inline void drawQuadBarBlock(uint8_t cell, uint8_t i, uint16_t color) { // Rainbow theme: active blocks become a spectral gradient - if (isRainbowTheme() && color != TFT_RED && color != METER_INACTIVE_COLOR && color != TFT_BLACK) + if (isRainbowTheme() && color != TFT_RED && color != METER_INACTIVE_COLOR && + color != TFT_BLACK) color = getRainbowBlockColor(i); int16_t ox = cell4_x[cell]; int16_t oy = cell4_y[cell]; @@ -1110,9 +1112,11 @@ void arcMeter4(uint8_t cell, uint8_t pid, bool redrawHeader = true) { old_data[cell] = -999; plotArc4(cell, last_valid_data[cell], warn, min, max, digit, unit); } else { - // Value placeholder using DSEG7 Modern 34pt smooth font with rainbow gradient + // Value placeholder using DSEG7 Modern 34pt smooth font with rainbow + // gradient bool rainbowTxt = isRainbowTheme(); - drawDseg7RightString34(tft, "---", x + 152, y + 74, getThemeCellColor(cell), TFT_BLACK, 114, 240, rainbowTxt); + drawDseg7RightString34(tft, "---", x + 152, y + 74, getThemeCellColor(cell), + TFT_BLACK, 114, 240, rainbowTxt); old_data[cell] = -999; } if (cell == 1 && isGpsSpeedValid()) { @@ -1192,7 +1196,8 @@ void plotArc4(uint8_t cell, float data, int warn, int min, int max, bool digit, uint16_t txtCol = (col == TFT_RED) ? TFT_RED : getThemeCellColor(cell); bool rainbowTxt = isRainbowTheme() && (col != TFT_RED); - drawDseg7RightString34(tft, numStr.c_str(), x + 152, y + 74, txtCol, TFT_BLACK, 114, 240, rainbowTxt); + drawDseg7RightString34(tft, numStr.c_str(), x + 152, y + 74, txtCol, + TFT_BLACK, 114, 240, rainbowTxt); old_data[cell] = data; // Draw GPS Satellite Icon & indicator in top-right corner of cell 1 @@ -1255,7 +1260,8 @@ void fullScreenMeter(uint8_t cell, uint8_t pid, bool redrawHeader = true) { } bool rainbowTxt = isRainbowTheme(); - drawDseg7RightString80(tft, "---", 312, 148, getThemeCellColor(cell), TFT_BLACK, 240, 240, rainbowTxt); + drawDseg7RightString80(tft, "---", 312, 148, getThemeCellColor(cell), + TFT_BLACK, 240, 240, rainbowTxt); old_data[cell] = -999; } } @@ -1333,7 +1339,8 @@ void plotFullScreen(uint8_t cell, float data, int warn, int min, int max, bool rainbowTxt = isRainbowTheme() && (col != TFT_RED); // Value bottom-right using DSEG7 Modern smooth font with rainbow gradient - drawDseg7RightString80(tft, numStr.c_str(), 312, 148, txtCol, TFT_BLACK, 240, 240, rainbowTxt); + drawDseg7RightString80(tft, numStr.c_str(), 312, 148, txtCol, TFT_BLACK, 240, + 240, rainbowTxt); old_data[cell] = data; if (cell == 1 && isGpsSpeedValid()) { @@ -1449,7 +1456,8 @@ inline void drawPidIconToSprite(TFT_eSprite &s, int ix, int iy, // anti-aliasing inline void drawQuadBarBlockToSprite(TFT_eSprite &s, int16_t qx, int16_t qy, uint8_t i, uint16_t color, int slice_h) { - if (isRainbowTheme() && color != TFT_RED && color != METER_INACTIVE_COLOR && color != TFT_BLACK) + if (isRainbowTheme() && color != TFT_RED && color != METER_INACTIVE_COLOR && + color != TFT_BLACK) color = getRainbowBlockColor(i); int16_t minX = pgm_read_word(&quadBlockMinX[i]); int16_t maxX = pgm_read_word(&quadBlockMaxX[i]); @@ -1554,7 +1562,8 @@ inline void renderPage1ToSprite(TFT_eSprite &s, int x_offset, int y_slice, else if (val >= 100.0f) accentCol = TFT_YELLOW; else - accentCol = isRainbowTheme() ? (uint16_t)0x07FF : getThemePrimaryColor(); + accentCol = + isRainbowTheme() ? (uint16_t)0x07FF : getThemePrimaryColor(); } else if (cardIdx == 1) { titleStr = "INTERIOR"; subStr = (dsSensorCount > 0) ? "DS18B20 SENSOR 1 (GPIO 22)" @@ -1613,19 +1622,23 @@ inline void renderPage1ToSprite(TFT_eSprite &s, int x_offset, int y_slice, s.fillRoundRect(barX, barY, fillW, 8, 3, accentCol); // Value text using authentic DSEG7 34pt font with rainbow gradient - String numStr = - (val <= -900.0f) ? "---" : String((int)round(val)); + String numStr = (val <= -900.0f) ? "---" : String((int)round(val)); uint16_t numCol = accentCol; bool rainbowTxt = isRainbowTheme() && (accentCol != TFT_RED); int numY = cardY + 20; if (numY < slice_h && numY + 40 > 0) { - drawDseg7RightString34(s, numStr.c_str(), cardX + 262, numY, numCol, cardBg, 0, slice_h, rainbowTxt); + drawDseg7RightString34(s, numStr.c_str(), cardX + 262, numY, numCol, + cardBg, 0, slice_h, rainbowTxt); } int unitY = cardY + 22; if (unitY < slice_h && unitY + 26 > 0) { bool rainbowUnit = isRainbowTheme() && (accentCol != TFT_RED); - uint16_t unitCol = rainbowUnit ? getRainbowScreenColor(cardX + 268, unitY) : (isYapaTheme() && accentCol != TFT_RED ? getYapaColor(numStr.length()) : (accentCol == TFT_RED ? TFT_RED : accentCol)); + uint16_t unitCol = + rainbowUnit ? getRainbowScreenColor(cardX + 268, unitY) + : (isYapaTheme() && accentCol != TFT_RED + ? getYapaColor(numStr.length()) + : (accentCol == TFT_RED ? TFT_RED : accentCol)); draw7SegDegreeC(s, cardX + 268, unitY, unitCol, cardBg, rainbowUnit); } } @@ -1647,7 +1660,8 @@ inline void animateBlackTransition(int8_t toPage = -1) { if (startBrightness < 20) startBrightness = 20; - // 1. Smoothly fade backlight down to black in ~200ms (quadratic ease for natural eye response) + // 1. Smoothly fade backlight down to black in ~200ms (quadratic ease for + // natural eye response) const uint8_t fadeSteps = 16; for (int8_t i = fadeSteps - 1; i >= 0; i--) { float t = (float)i / (float)fadeSteps; @@ -1657,7 +1671,8 @@ inline void animateBlackTransition(int8_t toPage = -1) { } ledcWrite(backlightChannel, 0); - // 2. Render new screen slice-by-slice while backlight is totally off (100% invisible redraw) + // 2. Render new screen slice-by-slice while backlight is totally off (100% + // invisible redraw) const int slice_h = 40; const uint8_t numSlices = 240 / slice_h; // exactly 6 slices for (uint8_t s = 0; s < numSlices; s++) { @@ -1786,13 +1801,13 @@ inline void animateFadeTransition(int8_t fromPage = -1, int8_t toPage = -1) { if (y_slice == 0) { uint8_t activeDot = (alpha < 16) ? fromPage : toPage; sprTrans.fillCircle(139, 2, 2, - (activeDot == 0) ? getThemePrimaryColor() : 0x5AEB); + (activeDot == 0) ? getThemePrimaryColor() : 0x5AEB); sprTrans.fillCircle(153, 2, 2, - (activeDot == 1) ? getThemePrimaryColor() : 0x5AEB); + (activeDot == 1) ? getThemePrimaryColor() : 0x5AEB); sprTrans.fillCircle(167, 2, 2, - (activeDot == 2) ? getThemePrimaryColor() : 0x5AEB); + (activeDot == 2) ? getThemePrimaryColor() : 0x5AEB); sprTrans.fillCircle(181, 2, 2, - (activeDot == 3) ? getThemePrimaryColor() : 0x5AEB); + (activeDot == 3) ? getThemePrimaryColor() : 0x5AEB); } sprTrans.pushSprite(0, y_slice); @@ -2505,7 +2520,8 @@ void handleArcAlarmFlash() { } } } else if (currentScreenPage == 0) { - // Cockpit Instrumental: check alarms for buzzer without drawing old quadrants + // Cockpit Instrumental: check alarms for buzzer without drawing old + // quadrants for (uint8_t cell = 0; cell < 4; cell++) { if (last_valid_data[cell] > -900.0f) { uint8_t pidIdx = pidInCell[cell]; @@ -2561,6 +2577,41 @@ void updateBacklightFade() { } } +// Global filtered LDR reading for stable noise-free brightness +static float s_filteredLdr = -1.0f; + +inline int getFilteredLdr() { + int raw = analogRead(LDR_PIN); + if (s_filteredLdr < 0) + s_filteredLdr = (float)raw; + else + s_filteredLdr = s_filteredLdr * 0.82f + (float)raw * 0.18f; + return (int)round(s_filteredLdr); +} + +// Curva de brillo automatico calibrada: +// - Oscuridad / noche: 18 PWM (7%) +// - Luz ambiente de habitacion: 64 PWM (25%) +// - Escala progresiva hasta luz directa / sol: 255 PWM (100%) +inline uint8_t calcAutoBacklight(int light) { + if (light >= 350) return 18; // Noche / oscuridad total: 7% + + if (light >= 100) { + // Transicion suave de noche (350) a luz ambiente de habitacion (100): 7% a 25% + float t = (350.0f - (float)light) / 250.0f; + int target = (int)round(18.0f + t * (64.0f - 18.0f)); + return (uint8_t)constrain(target, 18, 64); + } + + if (light <= 0) return 255; + + // De luz ambiente (100) a luz muy intensa / sol directo (0): 25% a 100% + float t = (100.0f - (float)light) / 100.0f; + float curve = t * t; + int target = (int)round(64.0f + curve * (255.0f - 64.0f)); + return (uint8_t)constrain(target, 64, 255); +} + // auto dim backlight function void autoDim() { if (brightnessIndex > 0) { @@ -2569,38 +2620,16 @@ void autoDim() { if (targetBacklight != manualVal) { targetBacklight = manualVal; } + dim = false; updateBacklightFade(); return; } - int light = analogRead(LDR_PIN); // read light - if (light > LIGHT_LEVEL) { // low light (dark) - low_count++; - if (low_count > 6) { - low_count = 6; - if (!dim) { - targetBacklight = 15; // smooth fade target: dim - dim = true; -#ifdef SERIAL_DEBUG - Serial.println(F("Backlight -> target dim (15)")); -#endif - } - } - high_count = 0; - } else { // bright light (day) - high_count++; - if (high_count > 6) { - high_count = 6; - if (dim) { - targetBacklight = 255; // smooth fade target: bright - dim = false; -#ifdef SERIAL_DEBUG - Serial.println(F("Backlight -> target bright (255)")); -#endif - } - } - low_count = 0; - } + // AUTO Mode: continuous adaptive smooth scaling from ambient light + int light = getFilteredLdr(); + targetBacklight = calcAutoBacklight(light); + dim = (targetBacklight <= 70); + updateBacklightFade(); } // autodim //--------------------------- diff --git a/sketch/obd2_gauge/rainbow_text.h b/sketch/obd2_gauge/rainbow_text.h index 8857d53..a41427b 100644 --- a/sketch/obd2_gauge/rainbow_text.h +++ b/sketch/obd2_gauge/rainbow_text.h @@ -321,9 +321,13 @@ inline void drawDseg7RightFast44(T &dst, const char *str, int rightX, int y0, bool rainbow = false) { int totalW = getDseg7StringWidth44(str); int renderW = (minTotalW > totalW) ? minTotalW : totalW; - if (renderW > 160) renderW = 160; int startX = rightX - renderW; - int textOffsetX = renderW - totalW; + if (rightX <= 120 && startX < 22) { + renderW -= (22 - startX); + startX = 22; + } + if (renderW > 160) renderW = 160; + int textOffsetX = (rightX - totalW) - startX; uint16_t lineBuf[160]; @@ -390,13 +394,13 @@ inline void drawDseg7RightFast80(T &dst, const char *str, int rightX, int y0, else totalW += 65; } int renderW = (minTotalW > totalW) ? minTotalW : totalW; - if (renderW > 184) renderW = 184; int startX = rightX - renderW; - if (startX < 10) { - renderW -= (10 - startX); - startX = 10; + if (startX < 22) { + renderW -= (22 - startX); + startX = 22; } - int textOffsetX = renderW - totalW; + if (renderW > 180) renderW = 180; + int textOffsetX = (rightX - totalW) - startX; uint16_t lineBuf[200]; diff --git a/sketch/obd2_gauge/tri_temp.h b/sketch/obd2_gauge/tri_temp.h index 41c3e0b..c5e96b8 100644 --- a/sketch/obd2_gauge/tri_temp.h +++ b/sketch/obd2_gauge/tri_temp.h @@ -105,60 +105,60 @@ inline void initTriTemp() { #endif } -// 8-bit anti-aliased alpha mask for digital 7-segment italic "°C" (30x26) -const uint8_t s_dsegUnitAlpha[30 * 26] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x10, 0x11, 0x11, 0x12, 0x0E, 0x00, 0x01, 0x00, - 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7A, 0xED, 0xEC, 0xED, 0xED, 0xE4, 0x2A, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x11, 0x03, 0x00, 0x01, - 0x00, 0x00, 0x01, 0x02, 0x0C, 0xA2, 0xFF, 0xF2, 0xF3, 0xF4, 0xF1, 0xFF, 0xD2, 0x12, 0x04, - 0x00, 0x01, 0x97, 0xEE, 0xEC, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEC, 0xEE, 0xC1, 0x13, 0x01, - 0x00, 0x00, 0x04, 0x00, 0x5C, 0xFF, 0x9F, 0x10, 0x14, 0x10, 0x13, 0xD9, 0xFF, 0x2B, 0x00, - 0x12, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x92, 0xFC, 0x63, 0x00, 0x01, 0x00, 0x19, 0xFC, 0xE1, 0x05, 0x31, - 0xD8, 0xFF, 0xFC, 0xFE, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFB, 0xF9, 0x89, 0x0B, 0x02, - 0x00, 0x00, 0x01, 0x00, 0xC8, 0xFF, 0x38, 0x05, 0x0B, 0x05, 0x4E, 0xFF, 0xAD, 0x00, 0xD4, - 0xFF, 0xFC, 0x66, 0x27, 0x2A, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x23, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x15, 0xF3, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFF, 0x73, 0x09, 0xF8, - 0xFD, 0xF6, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, - 0x00, 0x02, 0x00, 0x2A, 0xFF, 0xDF, 0x7A, 0x7C, 0x7D, 0x7A, 0xDB, 0xFC, 0x28, 0x3B, 0xFF, - 0xFF, 0xD5, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x84, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x46, 0x00, 0x7E, 0xFF, - 0xFF, 0xA3, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x70, 0x7B, 0x7A, 0x7A, 0x79, 0x22, 0x00, 0x00, 0xAF, 0xFF, - 0xFF, 0x6E, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, 0xDF, 0xFF, - 0xFF, 0x3A, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x27, 0xFB, 0xFF, - 0xED, 0x11, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x57, 0xFF, 0xFF, - 0xC5, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x8A, 0xFF, 0xFF, - 0x91, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xC0, 0xFF, 0xFF, - 0x5D, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0C, 0xE9, 0xFF, 0xFC, - 0x2D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x34, 0xFF, 0xFF, 0xE4, - 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x67, 0xFF, 0xFF, 0xB6, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x9C, 0xFF, 0xFF, 0x82, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0xCF, 0xFF, 0xFF, 0x4D, - 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0xF2, 0xFF, 0xF7, 0x1A, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x4B, 0xFF, 0xFE, 0xD8, 0x12, - 0x12, 0x12, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x20, 0xE4, 0xFF, 0xF7, 0xED, - 0xEE, 0xED, 0xED, 0xED, 0xED, 0xED, 0xEB, 0xED, 0x93, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x37, 0xFA, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x67, 0xF9, 0xF6, - 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF8, 0xF7, 0xE9, 0x5B, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x28, 0x2A, - 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x29, 0x2A, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +// 8-bit anti-aliased alpha mask for digital 7-segment italic "°C" (34x26) +const uint8_t s_dsegUnitAlpha[34 * 26] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x10, 0x11, 0x11, 0x12, 0x0E, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x7A, 0xED, 0xEC, 0xED, 0xED, 0xE4, 0x2A, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x02, 0x00, 0x00, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x11, 0x03, 0x00, 0x01, + 0x00, 0x00, 0x01, 0x02, 0x0C, 0xA2, 0xFF, 0xF2, 0xF3, 0xF4, 0xF1, 0xFF, 0xD2, 0x12, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x97, 0xEE, 0xEC, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEC, 0xEE, 0xC1, 0x13, 0x01, + 0x00, 0x00, 0x04, 0x00, 0x5C, 0xFF, 0x9F, 0x10, 0x14, 0x10, 0x13, 0xD9, 0xFF, 0x2B, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x12, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x92, 0xFC, 0x63, 0x00, 0x01, 0x00, 0x19, 0xFC, 0xE1, 0x05, 0x00, 0x00, 0x00, + 0x00, 0x31, 0xD8, 0xFF, 0xFC, 0xFE, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFD, 0xFB, 0xF9, 0x89, 0x0B, 0x02, + 0x00, 0x00, 0x01, 0x00, 0xC8, 0xFF, 0x38, 0x05, 0x0B, 0x05, 0x4E, 0xFF, 0xAD, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xD4, 0xFF, 0xFC, 0x66, 0x27, 0x2A, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x23, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x15, 0xF3, 0xE9, 0x00, 0x00, 0x00, 0x00, 0x79, 0xFF, 0x73, 0x09, 0x00, 0x00, 0x00, + 0x00, 0xF8, 0xFD, 0xF6, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, + 0x00, 0x02, 0x00, 0x2A, 0xFF, 0xDF, 0x7A, 0x7C, 0x7D, 0x7A, 0xDB, 0xFC, 0x28, 0x00, 0x00, 0x00, 0x00, + 0x3B, 0xFF, 0xFF, 0xD5, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x84, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7E, 0xFF, 0xFF, 0xA3, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x70, 0x7B, 0x7A, 0x7A, 0x79, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAF, 0xFF, 0xFF, 0x6E, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x05, + 0xDF, 0xFF, 0xFF, 0x3A, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, 0x27, + 0xFB, 0xFF, 0xED, 0x11, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x57, + 0xFF, 0xFF, 0xC5, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x8A, + 0xFF, 0xFF, 0x91, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0xC0, + 0xFF, 0xFF, 0x5D, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x0C, 0xE9, + 0xFF, 0xFC, 0x2D, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x34, 0xFF, + 0xFF, 0xE4, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x67, 0xFF, + 0xFF, 0xB6, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x9C, 0xFF, + 0xFF, 0x82, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0xCF, 0xFF, + 0xFF, 0x4D, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x16, 0xF2, 0xFF, + 0xF7, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x4B, 0xFF, 0xFE, + 0xD8, 0x12, 0x12, 0x12, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x20, 0xE4, 0xFF, + 0xF7, 0xED, 0xEE, 0xED, 0xED, 0xED, 0xED, 0xED, 0xEB, 0xED, 0x93, 0x05, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x37, 0xFA, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x67, + 0xF9, 0xF6, 0xF9, 0xF9, 0xF9, 0xF9, 0xF9, 0xF8, 0xF7, 0xE9, 0x5B, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x28, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, 0x29, 0x2A, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; // Draw 100% anti-aliased digital 7-segment italic unit "°C" matching DSEG7 typography and color @@ -166,8 +166,8 @@ inline void draw7SegDegreeC(TFT_eSPI &dst, int bx, int by, uint16_t color = 0xC6 for (int j = 0; j < 26; j++) { int py = by + j; if (py < 0 || py >= dst.height()) continue; - int rowOffset = j * 30; - for (int i = 0; i < 30; i++) { + int rowOffset = j * 34; + for (int i = 0; i < 34; i++) { int px = bx + i; if (px < 0 || px >= dst.width()) continue; uint8_t a = pgm_read_byte(&s_dsegUnitAlpha[rowOffset + i]); @@ -176,7 +176,7 @@ inline void draw7SegDegreeC(TFT_eSPI &dst, int bx, int by, uint16_t color = 0xC6 if (rainbow) { curCol = getRainbowScreenColor(px, py); } else if (isYapaTheme()) { - curCol = (i < 12) ? getYapaColor(0) : getYapaColor(1); + curCol = (i < 15) ? getYapaColor(0) : getYapaColor(1); } uint16_t pixCol = (a >= 250) ? curCol : fastBlend(a, curCol, bgCol); dst.drawPixel(px, py, pixCol); @@ -185,6 +185,7 @@ inline void draw7SegDegreeC(TFT_eSPI &dst, int bx, int by, uint16_t color = 0xC6 } } + // Double-buffered 120x8 progress bar sprite (zero jitter) static TFT_eSprite sprBar(&tft); static bool sprBarCreated = false; @@ -420,6 +421,7 @@ inline void updateTriTempCardValue(uint8_t cardIdx, float val, float oldVal) { tft.fillRoundRect(cardX + 6, cardY + 6, 4, cardH - 12, 2, accentCol); bool rainbowUnit = isRainbowTheme() && (accentCol != TFT_RED); uint16_t unitCol = rainbowUnit ? getRainbowScreenColor(cardX + 268, cardY + 22) : (isYapaTheme() && accentCol != TFT_RED ? getYapaColor(3) : (accentCol == TFT_RED ? TFT_RED : 0xC618)); + tft.fillRect(cardX + 268, cardY + 22, 34, 26, cardBg); draw7SegDegreeC(tft, cardX + 268, cardY + 22, unitCol, cardBg, rainbowUnit); }