6 Commits

60 changed files with 2691 additions and 383 deletions

View File

@ -21,6 +21,8 @@ void vehicle_thread_entry(ULONG hfdcan_addr);
void vehicle_broadcast_buttons(GPIO_PinState *button_states);
void vehicle_broadcast_wishlist();
#endif // SIMULATOR
#ifdef __cplusplus

View File

@ -7,6 +7,7 @@ extern "C" {
#include "params.h"
#include "stw_defines.h"
#include <stdbool.h>
#include <stdint.h>
#define NUM_CONES 12
@ -112,6 +113,7 @@ typedef struct {
int sdc_closed;
int pdu_sdc_active;
int imd_ok;
bool drs_active;
int sdcl_state[3];
R2DProgress r2d_progress;
@ -148,6 +150,7 @@ typedef struct {
IniChkState ini_chk_state;
unsigned lap_count;
unsigned lap_count_endu;
float lap_last;
float lap_best;
@ -160,6 +163,12 @@ typedef struct {
float lv_bat_voltage;
int soc_lv;
float bat_delta_last;
float bat_delta_overall;
uint8_t power_limit;
uint8_t speed_limit;
float ts_current;
float ts_voltage_bat;
float ts_voltage_veh;
@ -185,7 +194,15 @@ typedef struct {
ParamType last_param_confirmed;
} VehicleState;
typedef struct {
bool initialized;
uint8_t power_limit;
uint8_t speed_limit;
} DriverWishlist;
extern VehicleState vehicle_state;
extern DriverWishlist wishlist;
#ifdef __cplusplus
} // extern "C"

View File

@ -80,31 +80,17 @@ void led_thread_entry(ULONG child_thread_stack_addr) {
continue;
}
float speed =
(vehicle_state.speed - LED_SPEED_MIN) / (LED_SPEED_MAX - LED_SPEED_MIN);
float num_leds_exact = speed * N_LEDS;
num_leds_exact = fmin(N_LEDS, fmax(0, num_leds_exact));
int num_leds = num_leds_exact;
float num_leds_frac = num_leds_exact - num_leds;
float hue =
LED_SPEED_HUE_MIN - speed * (LED_SPEED_HUE_MIN - LED_SPEED_HUE_MAX);
hue = fmin(LED_SPEED_HUE_MIN, fmax(LED_SPEED_HUE_MAX, hue));
uint8_t r, g, b;
led_hsv_to_rgb(hue, 1.0f, 1.0f, &r, &g, &b);
// Fully illuminate first n LEDs
for (int i = 0; i < num_leds; i++) {
led_set(i, r, g, b);
for (int i = 0; i <= 3; i++) {
int led_limit = (4 - i) * 3; // 3% per LED
int red = (vehicle_state.bat_delta_last >= led_limit) ? 0xFF : 0;
led_set(i, red, 0, 0);
}
// Partially illuminate n+1th LED
if (num_leds < N_LEDS) {
led_hsv_to_rgb(hue, 1.0f, num_leds_frac, &r, &g, &b);
led_set(num_leds, r, g, b);
}
// Turn off all other LEDs
for (int i = num_leds + 1; i < N_LEDS; i++) {
led_set(i, 0, 0, 0);
int blue = (vehicle_state.drs_active) ? 0xFF : 0;
led_set(4, 0, 0, blue);
for (int i = 5; i <= 9; i++) {
int led_limit = -((i - 4) * 3); // 3% per LED
int green = (vehicle_state.bat_delta_last <= led_limit) ? 0xFF : 0;
led_set(i, 0, green, 0);
}
}
}

View File

@ -329,7 +329,7 @@ static void MX_FDCAN1_Init(void) {
hfdcan1.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
hfdcan1.Init.TxEventsNbr = 0;
hfdcan1.Init.TxBuffersNbr = 0;
hfdcan1.Init.TxFifoQueueElmtsNbr = 1;
hfdcan1.Init.TxFifoQueueElmtsNbr = 32;
hfdcan1.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
hfdcan1.Init.TxElmtSize = FDCAN_DATA_BYTES_8;
if (HAL_FDCAN_Init(&hfdcan1) != HAL_OK) {

View File

@ -24,10 +24,12 @@
#define CAN_ID_CS_INTERNAL 0x108
#define CAN_ID_ABX_MISC 0x109
#define CAN_ID_ABX_HYDRAULICS 0x110
#define CAN_ID_ABX_ENDURANCE 0x113
#define CAN_ID_EPSC_OUT 0x321
#define CAN_ID_MISSION_SELECTED 0x400
#define CAN_ID_STW_BUTTONS 0x401
#define CAN_ID_STW_PARAM_SET 0x402
#define CAN_ID_STW_DRIVERWISHLIST 0x403
#define CAN_ID_AS_MISSION_FB 0x410
#define CAN_ID_STW_STATUS 0x412
#define CAN_ID_ABX_PARAM_CONFIRMED 0x413
@ -55,6 +57,7 @@
void vehicle_thread_entry(ULONG hfdcan_addr) {
memset(&vehicle_state, 0, sizeof(vehicle_state));
memset(&vehicle_state.cone_pos, 0xFF, sizeof(vehicle_state.cone_pos));
memset(&wishlist, 0, sizeof(wishlist));
ftcan_init((void *)hfdcan_addr);
ftcan_add_filter(CAN_ID_AMS_SLAVE_PANIC, 0x7FF);
@ -68,6 +71,7 @@ void vehicle_thread_entry(ULONG hfdcan_addr) {
ftcan_add_filter(CAN_ID_ABX_BRAKE_T, 0x7FF);
ftcan_add_filter(CAN_ID_CS_INTERNAL, 0x7FF);
ftcan_add_filter(CAN_ID_ABX_MISC, 0x7FF);
ftcan_add_filter(CAN_ID_ABX_ENDURANCE, 0x7FF);
ftcan_add_filter(CAN_ID_ABX_HYDRAULICS, 0x7FF);
ftcan_add_filter(CAN_ID_EPSC_OUT, 0x7FF);
ftcan_add_filter(CAN_ID_AS_MISSION_FB, 0x7FF);
@ -80,6 +84,7 @@ void vehicle_thread_entry(ULONG hfdcan_addr) {
while (1) {
tx_thread_sleep(10);
vehicle_broadcast_wishlist();
}
}
@ -102,6 +107,17 @@ void vehicle_broadcast_buttons(GPIO_PinState *button_states) {
ftcan_transmit(CAN_ID_STW_BUTTONS, &data, 1);
}
void vehicle_broadcast_wishlist() {
if (!wishlist.initialized) {
return;
}
uint8_t data[2];
data[0] = wishlist.power_limit;
data[1] = wishlist.speed_limit;
ftcan_transmit(CAN_ID_STW_DRIVERWISHLIST, data, 2);
}
void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
const uint8_t *ptr;
if ((id & CAN_ID_STW_CONES_MASK) == CAN_ID_STW_CONES_BASE) {
@ -166,6 +182,18 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
vehicle_state.hyd_press_b =
((data[1] >> 4) | (data[2] << 4)) * CAN_ABX_DRIVER_PRESS_FACTOR;
break;
case CAN_ID_ABX_ENDURANCE:
vehicle_state.power_limit = data[0];
vehicle_state.speed_limit = data[1];
if (!wishlist.initialized) {
wishlist.initialized = true;
wishlist.power_limit = vehicle_state.power_limit;
wishlist.speed_limit = vehicle_state.speed_limit;
}
vehicle_state.lap_count_endu = data[2];
vehicle_state.bat_delta_overall = ((int8_t)data[3]) * 1.0f;
vehicle_state.bat_delta_last = ((int8_t)data[4]) * 1.0f;
break;
case CAN_ID_ABX_TIMINGS:
vehicle_state.lap_best = (data[0] | (data[1] << 8)) * 0.01f;
vehicle_state.lap_last = (data[2] | (data[3] << 8)) * 0.01f;
@ -225,6 +253,7 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
vehicle_state.errors.err_res = (data[5] >> 2) & 1;
vehicle_state.errors.err_invl = (data[5] >> 3) & 1;
vehicle_state.errors.err_invr = (data[5] >> 4) & 1;
vehicle_state.drs_active = (data[5] >> 5) & 1;
break;
case CAN_ID_ABX_PARAM_CONFIRMED:
vehicle_state.last_param_confirmed = data[0];

View File

@ -1,6 +1,7 @@
#include "vehicle_state.h"
VehicleState vehicle_state;
DriverWishlist wishlist;
const char *inichkstate_str(IniChkState state) {
switch (vehicle_state.ini_chk_state) {

View File

@ -1,5 +1,5 @@
##########################################################################################################################
# File automatically-generated by tool: [projectgenerator] version: [4.1.0] date: [Mon Jul 24 18:47:29 CEST 2023]
# File automatically-generated by tool: [projectgenerator] version: [4.3.0-B58] date: [Wed Jun 12 17:44:56 CEST 2024]
##########################################################################################################################
# ------------------------------------------------
@ -228,7 +228,16 @@ Middlewares/ST/threadx/common/src/txe_timer_delete.c \
Middlewares/ST/threadx/common/src/txe_timer_info_get.c \
TouchGFX/App/app_touchgfx.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.c \
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc_ex.c \
TouchGFX/target/TouchGFXHAL.cpp \
TouchGFX/target/STM32TouchController.cpp \
TouchGFX/target/TouchGFXGPIO.cpp \
TouchGFX/target/generated/TouchGFXConfiguration.cpp \
TouchGFX/target/generated/TouchGFXGeneratedHAL.cpp \
TouchGFX/target/generated/STM32DMA.cpp \
TouchGFX/target/generated/OSWrappers.cpp \
Core/Src/sysmem.c \
Core/Src/syscalls.c
# ASM sources
ASM_SOURCES = \

View File

@ -8,7 +8,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file

View File

@ -8,7 +8,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file

View File

@ -171,6 +171,45 @@
</Text>
</TextGroup>
<TextGroup Id="Unsorted">
<Text Id="__SingleUse_6EXA" Alignment="Right" TypographyId="Chinat_Large">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_570K" Alignment="Left" TypographyId="Chinat_Large">
<Translation Language="GB">R2D</Translation>
</Text>
<Text Id="__SingleUse_G2S2" Alignment="Left" TypographyId="Chinat_Large">
<Translation Language="GB">PRECHARGE</Translation>
</Text>
<Text Id="__SingleUse_B2Q6" Alignment="Right" TypographyId="Numbers">
<Translation Language="GB">&lt;value&gt;°</Translation>
</Text>
<Text Id="__SingleUse_OP6C" Alignment="Right" TypographyId="Numbers">
<Translation Language="GB">&lt;value&gt;%</Translation>
</Text>
<Text Id="__SingleUse_1F9T" Alignment="Left" TypographyId="Chinat_Small">
<Translation Language="GB">SPEED</Translation>
</Text>
<Text Id="__SingleUse_QAZ3" Alignment="Left" TypographyId="Chinat_Small">
<Translation Language="GB">POWER</Translation>
</Text>
<Text Id="__SingleUse_DONW" Alignment="Center" TypographyId="Numbers_Huge">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_4X8X" Alignment="Center" TypographyId="Numbers_Huge">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_FPXE" Alignment="Right" TypographyId="Numbers_Huge">
<Translation Language="GB">&lt;value&gt;%</Translation>
</Text>
<Text Id="__SingleUse_51AZ" Alignment="Right" TypographyId="Numbers_Huge">
<Translation Language="GB">&lt;value&gt;%</Translation>
</Text>
<Text Id="__SingleUse_DJ62" Alignment="Center" TypographyId="Chinat_Small">
<Translation Language="GB">OVERALL BAT</Translation>
</Text>
<Text Id="__SingleUse_5W6Y" Alignment="Left" TypographyId="Chinat_Small">
<Translation Language="GB">LAST LAP BAT</Translation>
</Text>
<Text Id="__SingleUse_C17G" Alignment="Left" TypographyId="Chinat_Small">
<Translation Language="GB">AS &lt;value&gt;</Translation>
</Text>
@ -261,12 +300,6 @@
<Text Id="__SingleUse_1NKF" Alignment="Center" TypographyId="Chinat_Huge">
<Translation Language="GB"></Translation>
</Text>
<Text Id="__SingleUse_J5UH" Alignment="Right" TypographyId="Chinat_Large">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
<Text Id="__SingleUse_NGUK" Alignment="Left" TypographyId="Chinat_Large">
<Translation Language="GB">R2D</Translation>
</Text>
<Text Id="__SingleUse_4E84" Alignment="Right" TypographyId="Numbers">
<Translation Language="GB">&lt;value&gt;</Translation>
</Text>
@ -276,9 +309,6 @@
<Text Id="__SingleUse_RWCE" Alignment="Center" TypographyId="Chinat_Large">
<Translation Language="GB">PARAMETERS</Translation>
</Text>
<Text Id="__SingleUse_HMH2" Alignment="Left" TypographyId="Chinat_Large">
<Translation Language="GB">PRECHARGE</Translation>
</Text>
<Text Id="__SingleUse_PHFD" Alignment="Center" TypographyId="Chinat_Small">
<Translation Language="GB">&lt;value&gt;%</Translation>
</Text>
@ -305,5 +335,6 @@
<Typography Id="Default_Bold" Font="verdanab.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="! &quot;" WildcardCharacterRanges="#-~" />
<Typography Id="Numbers_Smaller" Font="lucon.TTF" Size="33" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=" .,-" WildcardCharacterRanges="0-9" />
<Typography Id="Numbers_Small" Font="lucon.TTF" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=" .,-" WildcardCharacterRanges="0-9" />
<Typography Id="Numbers_Huge" Font="lucon.TTF" Size="80" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=" .,-+" WildcardCharacterRanges="0-9" />
</Typographies>
</TextDatabase>

View File

@ -1,4 +1,5 @@
32
37
44
45
46
@ -12,4 +13,5 @@
55
56
57
63
63
176

View File

@ -0,0 +1,17 @@
32
37
43
44
45
46
48
49
50
51
52
53
54
55
56
57
63

View File

@ -1 +1 @@
{"typographies":[["Default","verdana.ttf",20,4],["Chinat_Large","CHINN___.ttf",30,4],["Chinat_Small","CHINN___.ttf",20,4],["Chinat_Huge","CHINN___.ttf",40,4],["Numbers","lucon.TTF",50,4],["Default_Bold","verdanab.ttf",20,4],["Numbers_Smaller","lucon.TTF",33,4],["Numbers_Small","lucon.TTF",20,4]],"generate_font_format":"0"}
{"typographies":[["Default","verdana.ttf",20,4],["Chinat_Large","CHINN___.ttf",30,4],["Chinat_Small","CHINN___.ttf",20,4],["Chinat_Huge","CHINN___.ttf",40,4],["Numbers","lucon.TTF",50,4],["Default_Bold","verdanab.ttf",20,4],["Numbers_Smaller","lucon.TTF",33,4],["Numbers_Small","lucon.TTF",20,4],["Numbers_Huge","lucon.TTF",80,4]],"generate_font_format":"0"}

View File

@ -1 +1 @@
{"typographies":[["Default","verdana.ttf",20,4],["Chinat_Large","CHINN___.ttf",30,4],["Chinat_Small","CHINN___.ttf",20,4],["Chinat_Huge","CHINN___.ttf",40,4],["Numbers","lucon.TTF",50,4],["Default_Bold","verdanab.ttf",20,4],["Numbers_Smaller","lucon.TTF",33,4],["Numbers_Small","lucon.TTF",20,4]],"generate_font_format":"0"}
{"typographies":[["Default","verdana.ttf",20,4],["Chinat_Large","CHINN___.ttf",30,4],["Chinat_Small","CHINN___.ttf",20,4],["Chinat_Huge","CHINN___.ttf",40,4],["Numbers","lucon.TTF",50,4],["Default_Bold","verdanab.ttf",20,4],["Numbers_Smaller","lucon.TTF",33,4],["Numbers_Small","lucon.TTF",20,4],["Numbers_Huge","lucon.TTF",80,4]],"generate_font_format":"0"}

View File

@ -1,5 +1,6 @@
AH:0 BA:1 FC:63 EC:0 FF:0 CF:0 FU:0
32
37
44
45
46
@ -14,3 +15,4 @@ AH:0 BA:1 FC:63 EC:0 FF:0 CF:0 FU:0
56
57
63
176

View File

@ -0,0 +1,18 @@
AH:0 BA:1 FC:63 EC:0 FF:0 CF:0 FU:0
32
37
43
44
45
46
48
49
50
51
52
53
54
55
56
57
63

View File

@ -21,6 +21,7 @@ struct Typography
static const touchgfx::FontId DEFAULT_BOLD = 5;
static const touchgfx::FontId NUMBERS_SMALLER = 6;
static const touchgfx::FontId NUMBERS_SMALL = 7;
static const touchgfx::FontId NUMBERS_HUGE = 8;
};
struct TypographyFontIndex
@ -33,7 +34,8 @@ struct TypographyFontIndex
static const touchgfx::FontId DEFAULT_BOLD = 5; // verdanab_20_4bpp
static const touchgfx::FontId NUMBERS_SMALLER = 6; // lucon_TTF_33_4bpp
static const touchgfx::FontId NUMBERS_SMALL = 7; // lucon_TTF_20_4bpp
static const uint16_t NUMBER_OF_FONTS = 8;
static const touchgfx::FontId NUMBERS_HUGE = 8; // lucon_TTF_80_4bpp
static const uint16_t NUMBER_OF_FONTS = 9;
};
class ApplicationFontProvider : public touchgfx::FontProvider

View File

@ -33,6 +33,9 @@ touchgfx::Font* ApplicationFontProvider::getFont(touchgfx::FontId typography)
case Typography::NUMBERS_SMALL:
// lucon_TTF_20_4bpp
return const_cast<touchgfx::Font*>(TypedTextDatabase::getFonts()[7]);
case Typography::NUMBERS_HUGE:
// lucon_TTF_80_4bpp
return const_cast<touchgfx::Font*>(TypedTextDatabase::getFonts()[8]);
default:
return 0;
}

View File

@ -4,6 +4,45 @@ FONT_GLYPH_LOCATION_FLASH_PRAGMA
KEEP extern const uint8_t unicodes_lucon_TTF_50_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = {
// Unicode: [0x0020]
// (Has no glyph data)
// Unicode: [0x0025]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xBF, 0x00,
0x00, 0x00, 0xB6, 0xFE, 0xAD, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0x2E, 0x00,
0x00, 0xD2, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x06, 0x00,
0x20, 0xFE, 0xEF, 0x68, 0xF9, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xAF, 0x00, 0x00,
0xB0, 0xFF, 0x2E, 0x00, 0x50, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0x1E, 0x00, 0x00,
0xF4, 0xFF, 0x06, 0x00, 0x00, 0xF9, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0x04, 0x00, 0x00,
0xF9, 0xFF, 0x01, 0x00, 0x00, 0xF3, 0xFF, 0x06, 0x00, 0x00, 0x20, 0xFE, 0x9F, 0x00, 0x00, 0x00,
0xFC, 0xCF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0A, 0x00, 0x00, 0xC0, 0xFF, 0x1D, 0x00, 0x00, 0x00,
0xFE, 0xAF, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0x0B, 0x00, 0x00, 0xF7, 0xFF, 0x03, 0x00, 0x00, 0x00,
0xFE, 0xAF, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x0C, 0x00, 0x30, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00,
0xFD, 0xBF, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0x0A, 0x00, 0xD0, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00,
0xFB, 0xEF, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0x08, 0x00, 0xF9, 0xEF, 0x02, 0x00, 0x00, 0x00, 0x00,
0xF6, 0xFF, 0x03, 0x00, 0x00, 0xF6, 0xFF, 0x04, 0x40, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00,
0xE1, 0xFF, 0x0B, 0x00, 0x10, 0xFD, 0xCF, 0x00, 0xD1, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xAF, 0x02, 0xC3, 0xFF, 0x3F, 0x00, 0xFA, 0xEF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x50, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0xFC, 0xFF, 0xFF, 0x3B, 0x00, 0xE2, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x20, 0x65, 0x15, 0x00, 0x00, 0xFB, 0xDF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xCF, 0x00, 0x00, 0x41, 0x56, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0x3F, 0x00, 0xA2, 0xFF, 0xFF, 0xDF, 0x05, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0x07, 0x30, 0xFE, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xBF, 0x00, 0xE1, 0xFF, 0x4D, 0x21, 0xF9, 0xFF, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0x2E, 0x00, 0xFA, 0xEF, 0x02, 0x00, 0xA0, 0xFF, 0x2F, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x05, 0x20, 0xFF, 0x8F, 0x00, 0x00, 0x20, 0xFF, 0x9F, 0x00,
0x00, 0x00, 0x00, 0x10, 0xFE, 0xAF, 0x00, 0x60, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0xFB, 0xDF, 0x00,
0x00, 0x00, 0x00, 0xA0, 0xFF, 0x1D, 0x00, 0x80, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0x00,
0x00, 0x00, 0x00, 0xF6, 0xFF, 0x04, 0x00, 0x90, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01,
0x00, 0x00, 0x20, 0xFE, 0x9F, 0x00, 0x00, 0x90, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0x01,
0x00, 0x00, 0xC0, 0xFF, 0x1D, 0x00, 0x00, 0x70, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0x00,
0x00, 0x00, 0xF7, 0xFF, 0x03, 0x00, 0x00, 0x40, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0xFD, 0xBF, 0x00,
0x00, 0x30, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xBF, 0x00, 0x00, 0x40, 0xFF, 0x6F, 0x00,
0x00, 0xD0, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0x06, 0x00, 0xD1, 0xFF, 0x0D, 0x00,
0x00, 0xF9, 0xEF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xAF, 0x87, 0xFE, 0xEF, 0x03, 0x00,
0x40, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x4E, 0x00, 0x00,
0xD1, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xDA, 0xEF, 0x7C, 0x01, 0x00, 0x00,
0xFA, 0xEF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x002C]
0x32, 0x33, 0x33, 0x23, 0xF8, 0xFF, 0xFF, 0xAF, 0xF8, 0xFF, 0xFF, 0xAF, 0xF8, 0xFF, 0xFF, 0xAF,
0xF8, 0xFF, 0xFF, 0xAF, 0xF8, 0xFF, 0xFF, 0xAF, 0xF8, 0xFF, 0xFF, 0x9F, 0xF8, 0xFF, 0xFF, 0x8F,
@ -339,5 +378,11 @@ KEEP extern const uint8_t unicodes_lucon_TTF_50_4bpp_0[] FONT_GLYPH_LOCATION_FLA
0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00
0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x00B0]
0x00, 0x60, 0xEC, 0xCE, 0x05, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xAF, 0x00, 0x80, 0xFF, 0x7D, 0xD7,
0xFF, 0x08, 0xF1, 0xBF, 0x01, 0x10, 0xFC, 0x1F, 0xF5, 0x3F, 0x00, 0x00, 0xF3, 0x4F, 0xF6, 0x0F,
0x00, 0x00, 0xF1, 0x6F, 0xF5, 0x3F, 0x00, 0x00, 0xF3, 0x4F, 0xF1, 0xCF, 0x01, 0x10, 0xFC, 0x1E,
0x80, 0xFF, 0x8D, 0xD8, 0xFF, 0x08, 0x00, 0xFA, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x60, 0xEC, 0xCE,
0x06, 0x00
};

View File

@ -0,0 +1,959 @@
#include <touchgfx/hal/Types.hpp>
FONT_GLYPH_LOCATION_FLASH_PRAGMA
KEEP extern const uint8_t unicodes_lucon_TTF_80_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = {
// Unicode: [0x0020]
// (Has no glyph data)
// Unicode: [0x0025]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0xFE, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF,
0x3F, 0x00, 0x00, 0x00, 0x00, 0x30, 0xB8, 0xED, 0xDE, 0x6B, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x30, 0xFB, 0xFF,
0xFF, 0xFF, 0xFF, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF,
0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x70, 0xFF,
0xFF, 0xFF, 0xDF, 0xFD, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x6E, 0x01, 0x20, 0xF9, 0xFF, 0xFF,
0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x10,
0xFE, 0xFF, 0xEF, 0x03, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xD1, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00,
0xFB, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x04, 0x00, 0x00,
0x00, 0xE1, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00,
0x00, 0x00, 0x50, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x07, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x0C, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0x4F, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x7F,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF,
0x8F, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF,
0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0xEF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFD, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0xF4,
0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00,
0x00, 0x50, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x4F, 0x00, 0x00,
0x90, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0x08, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x0A,
0x00, 0x10, 0xFE, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF,
0x7F, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0x03, 0x00, 0xB0, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x80, 0xFF, 0xFF,
0xAF, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF4, 0xFF, 0xFF, 0x7F, 0x01, 0x20, 0xFA, 0xFF, 0xFF, 0x1D, 0x00, 0x20, 0xFE, 0xFF, 0xBF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xDF, 0xFE, 0xFF,
0xFF, 0xEF, 0x03, 0x00, 0xC0, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0xF8, 0xFF, 0xFF,
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFB, 0xFF, 0xFF,
0xFF, 0xFF, 0x8F, 0x01, 0x00, 0x30, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xC8, 0xFD, 0xDE, 0x6B, 0x02, 0x00, 0x00, 0xD1, 0xFF,
0xFF, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFB, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE2, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x10, 0xA5, 0xEC, 0xDF, 0x9C, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xEF, 0x02, 0x00,
0x00, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0xB1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x0A,
0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xEF, 0xFD, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xDF, 0x01, 0x00, 0xB0, 0xFF, 0xFF, 0xCF, 0x03, 0x00,
0xE5, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF,
0x4F, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x20, 0xFD, 0xFF, 0xFF, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x08, 0x00, 0x10, 0xFE, 0xFF, 0xEF, 0x01,
0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE,
0xFF, 0xCF, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0x3F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xC0, 0xFF, 0xFF,
0x1F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF6, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE,
0xFF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFE, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xF3,
0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFA, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x05, 0x00, 0x00,
0x00, 0xF6, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x02, 0x00, 0x00,
0x00, 0x00, 0x30, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0x06, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0x1D, 0x00,
0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x01,
0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x08,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0x8F,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF,
0xCF, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF,
0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0xA0,
0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xFE, 0xFF, 0xEF, 0x01, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0xE2,
0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0x0A, 0x00, 0x00,
0x10, 0xFD, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xEF, 0x02, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xCF, 0x03, 0x00, 0xE5, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00,
0x80, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF,
0xEF, 0xED, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00,
0x00, 0x10, 0xFD, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x04, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0x4F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xA5, 0xEC, 0xEF, 0x9C, 0x04, 0x00,
0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x86, 0x88, 0x78, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x002B]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x22, 0x22, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC7, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,
0xCC, 0xCC, 0xCC, 0xFE, 0xFF, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x9C, 0xFA,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xCF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFA, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xCF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
// Unicode: [0x002C]
0x75, 0x77, 0x77, 0x77, 0x77, 0x67, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF,
0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF,
0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF,
0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF,
0xFF, 0xCF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0x8F, 0x00, 0x00,
0xF0, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x0E,
0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x0A, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0x04, 0x00, 0x80, 0xFF, 0xFF,
0xCF, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0x4F, 0x00, 0xC6, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0xFA, 0xFF,
0xFF, 0x8F, 0x00, 0x00, 0xFA, 0xFF, 0xDF, 0x05, 0x00, 0x00, 0xEA, 0x9C, 0x05, 0x00, 0x00, 0x00,
// Unicode: [0x002D]
0xB9, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
// Unicode: [0x002E]
0x75, 0x77, 0x77, 0x77, 0x77, 0x67, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF,
0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF,
0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF,
0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF,
0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF,
// Unicode: [0x0030]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xC9, 0xEE, 0xEF, 0xAC, 0x27, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCD, 0xDB, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0xFF, 0xEF,
0x27, 0x00, 0x00, 0x61, 0xFD, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC,
0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xEF, 0x02, 0x00, 0x00,
0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF,
0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF,
0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x05, 0x00,
0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF,
0xFF, 0xFF, 0x0C, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0xFB, 0xFF, 0xFF,
0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xEF, 0x00,
0x00, 0xFE, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA,
0xFF, 0xFF, 0xFF, 0x03, 0x40, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x07, 0x70, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0x0B, 0xB0, 0xFF, 0xFF, 0xFF,
0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x0E,
0xE0, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0xFF, 0xFF, 0x2F, 0xF1, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x4F, 0xF3, 0xFF, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0x6F, 0xF5, 0xFF, 0xFF, 0xFF,
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x8F,
0xF6, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xFF, 0xFF, 0xFF, 0x9F, 0xF7, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xBF, 0xF8, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xCF, 0xF9, 0xFF, 0xFF, 0xFF,
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xCF,
0xF9, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xDF, 0xFA, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xDF, 0xF9, 0xFF, 0xFF, 0xFF,
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xDF,
0xF9, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60,
0xFF, 0xFF, 0xFF, 0xCF, 0xF8, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xCF, 0xF7, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xAF, 0xF6, 0xFF, 0xFF, 0xFF,
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x9F,
0xF5, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90,
0xFF, 0xFF, 0xFF, 0x8F, 0xF3, 0xFF, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0x6F, 0xF1, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x4F, 0xD0, 0xFF, 0xFF, 0xFF,
0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x2F,
0xA0, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1,
0xFF, 0xFF, 0xFF, 0x0E, 0x70, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0x0A, 0x40, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xFE, 0xFF, 0xFF,
0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x03,
0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD,
0xFF, 0xFF, 0xEF, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x90, 0xFF, 0xFF,
0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x0C, 0x00,
0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF,
0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xFD, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0x0C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF,
0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF,
0xEF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0xFF, 0xEF, 0x27, 0x00, 0x00, 0x61,
0xFD, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xCD, 0xDB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF5, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x61, 0xC9, 0xFE, 0xEF, 0xAD, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0031]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x47, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFD, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x51,
0xEA, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xB6, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x72, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xD8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE8, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x9C, 0x26, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xEF, 0x8B, 0x14, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDB, 0x69, 0x03, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xB8, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xCB, 0xFF, 0xFF, 0xFF, 0xCF,
0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x09, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xFC, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C,
0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x0C, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C,
// Unicode: [0x0032]
0x00, 0x00, 0x00, 0x00, 0x10, 0x53, 0x98, 0xBA, 0xAB, 0x89, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x10, 0x84, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8D, 0x02, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x02,
0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xEF, 0x7B, 0x24, 0x01, 0x31, 0xB7,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0x04, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0xFF, 0x6D, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xEF, 0x01, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0x9F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF,
0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF,
0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF4, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xEF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFB, 0xFF, 0xFF, 0xFF, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0x6F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x06,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x6F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF,
0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF,
0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF,
0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF,
0xFF, 0xEF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF,
0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4,
0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0xFD, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x90, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0xEF, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
0xBB, 0xBB, 0xBB, 0xBB, 0x4B, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F,
// Unicode: [0x0033]
0x00, 0x00, 0x10, 0x74, 0xB9, 0xDD, 0xFE, 0xEE, 0xCD, 0x69, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x84, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x27, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF,
0x02, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x3E, 0x00, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xCD, 0xED, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0x8C, 0x25, 0x00, 0x00, 0x00, 0x73, 0xFE,
0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0xF0, 0xCF, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x91, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xA0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xDF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0x9F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF,
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF,
0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF,
0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF,
0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE5,
0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92,
0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x53, 0xB7,
0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0x88, 0x88, 0xA9, 0xEB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFE, 0xFF, 0xFF, 0xFF, 0x4F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xFF, 0xFF, 0xFF,
0xDF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF,
0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA,
0xFF, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF2, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFE, 0xFF, 0xFF, 0xFF,
0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xFF,
0xFF, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF,
0xFF, 0xCF, 0x00, 0x00, 0xFD, 0x6A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE5, 0xFF, 0xFF,
0xFF, 0xFF, 0x3F, 0x00, 0x00, 0xFD, 0xFF, 0xCF, 0x58, 0x02, 0x00, 0x00, 0x20, 0xC6, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xEF, 0xCD, 0xDB, 0xFE, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x95, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x6B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x74, 0xB9, 0xEC,
0xFE, 0xEF, 0xCE, 0x8A, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0034]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x55, 0x55, 0x35,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20,
0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xEF, 0xFA, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x6F, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x0B,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1,
0xFF, 0xFF, 0xEF, 0x02, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x5F, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xEF, 0x01, 0x00,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF,
0xFF, 0x5F, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xEF, 0x01, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF,
0x09, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xE1, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xDF, 0x01,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB,
0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF,
0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE2, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0xCF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0xF9, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xFA, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F,
0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x5F, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0xB7, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB,
0xBB, 0xBB, 0xBB, 0xBB, 0xFD, 0xFF, 0xFF, 0xEF, 0xBB, 0xBB, 0xBB, 0x4B, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xAF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF8, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0035]
0x40, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x07, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xEF, 0xCE, 0x9B, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAE, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x04, 0x00, 0x00, 0x00, 0x00,
0x50, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00,
0x40, 0xBB, 0xAA, 0xBA, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xB7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xEF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF, 0x0D, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0x4F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x8F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xCF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xEF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x02,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xEF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xAF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0x6F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00,
0xE7, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x00, 0x00,
0xF7, 0xFF, 0xAE, 0x36, 0x00, 0x00, 0x10, 0xA5, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x02, 0x00, 0x00,
0xF7, 0xFF, 0xFF, 0xFF, 0xDF, 0xCC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00,
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x00, 0x00,
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0x00, 0x00, 0x00,
0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00,
0x72, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x63, 0xB9, 0xED, 0xFF, 0xDE, 0x9C, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0036]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xB8, 0xED, 0xFF, 0xDE, 0x9B, 0x36, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xBE, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xBC, 0xDC, 0xFF, 0xFF, 0xFF, 0xFF,
0x0B, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x5A, 0x01, 0x00, 0x00, 0x41,
0xC7, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF, 0x2B, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x72, 0xFC, 0x0B, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF,
0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xC0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xEF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x1E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF,
0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF,
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0,
0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x72, 0xDA, 0xFE, 0xDE, 0x8B, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xDF, 0x06, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0xA1, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0x03, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x08,
0x30, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0xF7, 0xFF,
0xFF, 0xFF, 0x07, 0xE3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x37, 0xFE, 0xFF, 0xFF, 0xBF, 0x89, 0xA9, 0xFD, 0xFF, 0xFF, 0xFF,
0xFF, 0x6F, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xD8, 0xFF, 0xFF, 0x6E, 0x01, 0x00, 0x00, 0x40,
0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xAF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0xFA, 0xFF, 0xFF,
0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xEF, 0x01,
0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF,
0xFF, 0xFF, 0x07, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x0D, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x3F, 0xF8, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0x6F, 0xF7, 0xFF, 0xFF, 0xFF,
0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x9F, 0xF6,
0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0xBF, 0xF4, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFC, 0xFF, 0xFF, 0xCF, 0xF2, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xDF, 0xF0, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xDF, 0xC0, 0xFF, 0xFF, 0xFF, 0x7F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xCF, 0x90, 0xFF,
0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF,
0xBF, 0x60, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFB, 0xFF, 0xFF, 0x9F, 0x20, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0x7F, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0xF3, 0xFF,
0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0x0B,
0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF,
0xFF, 0xFF, 0x05, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF9, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0xFF, 0x8F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0xB0, 0xFF,
0xFF, 0xFF, 0xFF, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00,
0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, 0x38, 0x00, 0x00, 0x40, 0xFA, 0xFF, 0xFF, 0xFF, 0x6F,
0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xCB, 0xFE, 0xFF, 0xFF,
0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD3, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x30, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5B, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x95, 0xDB, 0xFE, 0xEF, 0xAC, 0x26, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0037]
0x20, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
0x22, 0x22, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xBF, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF2, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF2, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xF2, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF,
0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE1, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xEF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xFF, 0x0C, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF,
0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA,
0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x30, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xEF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFD, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0x4F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF,
0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF,
0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF6, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xFE, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x0C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0xFF,
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF,
0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70,
0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE1, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0x1E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF,
0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF,
0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1,
0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF,
0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF,
0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFA, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0038]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x96, 0xDC, 0xFE, 0xDE, 0xBD, 0x58, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x9E, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFA, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x02, 0x00, 0x00, 0x00,
0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xCC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0C,
0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x4A, 0x01, 0x00, 0x10, 0xA4, 0xFF, 0xFF,
0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0x4E, 0x00, 0x00, 0x00, 0x00,
0x00, 0xD4, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xEF, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0xFE, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xFF,
0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x50,
0xFF, 0xFF, 0xFF, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x08,
0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF,
0xFF, 0xFF, 0x09, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0xB0, 0xFF,
0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0x05, 0x00,
0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF,
0xFF, 0x01, 0x00, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xE1, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF, 0x3E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF,
0xFF, 0xFF, 0xEF, 0x04, 0x00, 0x00, 0x00, 0x00, 0xD1, 0xFF, 0xFF, 0xEF, 0x02, 0x00, 0x00, 0x00,
0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x10, 0xFB, 0xFF, 0xFF, 0x5F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x2B, 0x00, 0x00, 0xC2, 0xFF, 0xFF,
0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x06, 0x40,
0xFE, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xCF, 0xF9, 0xFF, 0xFF, 0xEF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF5,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE3, 0xFF, 0xFF,
0xFF, 0xAE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
0xFE, 0xFF, 0xFF, 0xDF, 0x02, 0xC3, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE3, 0xFF, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
0x03, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0x10, 0xF8, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x00,
0x30, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x01, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x10, 0xFD, 0xFF, 0xFF,
0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0xFF, 0x5F, 0x00, 0x60,
0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0xFF,
0xCF, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6,
0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF2, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0xF5, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xFF, 0x0B, 0xF8, 0xFF, 0xFF, 0xEF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0x0E, 0xFA, 0xFF,
0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF2, 0xFF, 0xFF, 0xFF,
0x0F, 0xFB, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0,
0xFF, 0xFF, 0xFF, 0x0F, 0xFB, 0xFF, 0xFF, 0xEF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0x0F, 0xFA, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0x0E, 0xF9, 0xFF, 0xFF, 0xFF, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x0C, 0xF7, 0xFF, 0xFF,
0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x09,
0xF3, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF,
0xFF, 0xFF, 0x04, 0xD0, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xFD, 0xFF, 0xFF, 0xEF, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xFF, 0x5E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0xF7, 0xFF, 0xFF,
0xFF, 0xFF, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB2, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00,
0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x38, 0x00, 0x00, 0x10, 0x94, 0xFF, 0xFF, 0xFF, 0xFF, 0x8F,
0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDE, 0xCC, 0xFD, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFC,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x50, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x28, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x85, 0xDB, 0xFE, 0xEF, 0xCD, 0x7A, 0x03, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
// Unicode: [0x0039]
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xA7, 0xEC, 0xFF, 0xDE, 0x7A, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xEF, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFE, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xCE, 0xDC, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xCF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xEF, 0x28,
0x00, 0x00, 0x51, 0xFA, 0xFF, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF7, 0xFF,
0xFF, 0xFF, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x40, 0xFD, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00,
0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0xFF, 0xFF, 0xFF,
0xEF, 0x01, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0x1D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF,
0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x8F, 0x00, 0x00,
0x10, 0xFE, 0xFF, 0xFF, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF,
0xFF, 0xDF, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x0B, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0xB0, 0xFF, 0xFF, 0xFF,
0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0x0C, 0x00,
0xE0, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xFF,
0xFF, 0xFF, 0x1F, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0xF2, 0xFF, 0xFF, 0xFF,
0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xAF, 0x00,
0xF2, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xFF,
0xFF, 0xFF, 0xCF, 0x00, 0xF2, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0x0A, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xE0, 0xFF, 0xFF, 0xFF,
0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0x02,
0xB0, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF,
0xFF, 0xFF, 0xFF, 0x03, 0x70, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x30, 0xFF, 0xFF, 0xFF, 0xDF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0xFC, 0xFF, 0xFF,
0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x04,
0x00, 0xF5, 0xFF, 0xFF, 0xFF, 0x2E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x05, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xDF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0xFF, 0x3D, 0x00,
0x00, 0x00, 0x00, 0x00, 0xD3, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0xF8, 0xFF,
0xFF, 0xFF, 0xFF, 0x28, 0x00, 0x00, 0x00, 0x82, 0xFF, 0xFF, 0x9F, 0xFB, 0xFF, 0xFF, 0xFF, 0x04,
0x00, 0x00, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xAC, 0x88, 0xCA, 0xFF, 0xFF, 0xFF, 0x1C, 0xFB,
0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x10, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xCF, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0x02, 0x00, 0x00, 0x00, 0xA0, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
0xE6, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xEF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0xE8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x02, 0x00, 0x10, 0xFF,
0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x95, 0xEC, 0xFF, 0xCE, 0x59, 0x01,
0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0x4F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xFF,
0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF3, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF,
0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x50, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xFE, 0xFF, 0xFF,
0xEF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xB0, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0xEF, 0x4A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFD, 0xFF, 0xFF, 0xFF, 0x6F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xAE, 0x36, 0x00, 0x00, 0x00, 0x62, 0xFC, 0xFF,
0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xBC,
0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4E, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x9F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x8E, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x41, 0x97, 0xDB, 0xFE, 0xEF, 0xAD, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
// Unicode: [0x003F]
0x00, 0x00, 0x00, 0x00, 0x42, 0x75, 0x98, 0xA9, 0xAA, 0x9A, 0x68, 0x25, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x30, 0x97, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE,
0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB5, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x6C, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x4D, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x00, 0x00, 0xF9,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9F,
0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xDF, 0x7A, 0x35, 0x12, 0x00, 0x11, 0x52, 0xA7, 0xFE, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xF9, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x40, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0xF9, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x50, 0xFE, 0xFF, 0xFF, 0xFF, 0x9F, 0x00, 0xF9, 0xFF, 0xFF, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF4, 0xFF, 0xFF, 0xFF, 0xEF, 0x00, 0xF9, 0xFF,
0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
0x03, 0xF9, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF,
0xFF, 0xFF, 0xFF, 0x05, 0xF9, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xFF, 0x06, 0xB7, 0xBB, 0xBB, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFA, 0xFF, 0xFF, 0xFF, 0x04, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFD, 0xFF, 0xFF, 0xFF, 0x01,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0xFF, 0xFF,
0xFF, 0xDF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xE2, 0xFF, 0xFF, 0xFF, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0x2E,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF,
0xFF, 0xEF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0xFB, 0xFF, 0xFF, 0xFF, 0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xD2, 0xFF, 0xFF, 0xFF, 0xEF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0xFE, 0xFF, 0xFF, 0xFF, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF, 0xAF, 0x01, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF,
0x4E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0xFF,
0xFF, 0xFF, 0xDF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xE2, 0xFF, 0xFF, 0xFF, 0x2D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xFC, 0xFF, 0xFF, 0xEF, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE1, 0xFF, 0xFF, 0xFF, 0x09, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF6, 0xFF, 0xFF, 0xFF,
0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFB,
0xFF, 0xFF, 0xBF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x40, 0xFF, 0xFF, 0xFF, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0x2F, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF, 0xFF, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0xFF, 0xFF,
0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xA0, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x80, 0xCC, 0xCC, 0xCC, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x99, 0x99, 0x99, 0x99,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF,
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00
};

View File

@ -0,0 +1,6 @@
#include <touchgfx/Font.hpp>
FONT_KERNING_LOCATION_FLASH_PRAGMA
KEEP extern const touchgfx::KerningNode kerning_lucon_TTF_80_4bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE = {
{ 0, 0 }
};

View File

@ -5,20 +5,22 @@
FONT_TABLE_LOCATION_FLASH_PRAGMA
KEEP extern const touchgfx::GlyphNode glyphs_lucon_TTF_50_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = {
{ 0, 0x0020, 0, 0, 0, 0, 30, 0, 0, 0x00 },
{ 0, 0x002C, 8, 16, 8, 11, 30, 0, 0, 0x00 },
{ 64, 0x002D, 20, 4, 17, 5, 30, 0, 0, 0x00 },
{ 104, 0x002E, 8, 8, 8, 11, 30, 0, 0, 0x00 },
{ 136, 0x0030, 26, 38, 37, 2, 30, 0, 0, 0x00 },
{ 630, 0x0031, 25, 37, 37, 4, 30, 0, 0, 0x00 },
{ 1111, 0x0032, 21, 37, 37, 4, 30, 0, 0, 0x00 },
{ 1518, 0x0033, 21, 38, 37, 5, 30, 0, 0, 0x00 },
{ 1936, 0x0034, 26, 36, 36, 2, 30, 0, 0, 0x00 },
{ 2404, 0x0035, 20, 37, 36, 6, 30, 0, 0, 0x00 },
{ 2774, 0x0036, 24, 38, 37, 4, 30, 0, 0, 0x00 },
{ 3230, 0x0037, 23, 36, 36, 4, 30, 0, 0, 0x00 },
{ 3662, 0x0038, 24, 38, 37, 3, 30, 0, 0, 0x00 },
{ 4118, 0x0039, 25, 38, 37, 3, 30, 0, 0, 0x00 },
{ 4612, 0x003F, 23, 37, 37, 4, 30, 0, 0, 0x00 }
{ 0, 0x0025, 31, 38, 37, 0, 30, 0, 0, 0x00 },
{ 608, 0x002C, 8, 16, 8, 11, 30, 0, 0, 0x00 },
{ 672, 0x002D, 20, 4, 17, 5, 30, 0, 0, 0x00 },
{ 712, 0x002E, 8, 8, 8, 11, 30, 0, 0, 0x00 },
{ 744, 0x0030, 26, 38, 37, 2, 30, 0, 0, 0x00 },
{ 1238, 0x0031, 25, 37, 37, 4, 30, 0, 0, 0x00 },
{ 1719, 0x0032, 21, 37, 37, 4, 30, 0, 0, 0x00 },
{ 2126, 0x0033, 21, 38, 37, 5, 30, 0, 0, 0x00 },
{ 2544, 0x0034, 26, 36, 36, 2, 30, 0, 0, 0x00 },
{ 3012, 0x0035, 20, 37, 36, 6, 30, 0, 0, 0x00 },
{ 3382, 0x0036, 24, 38, 37, 4, 30, 0, 0, 0x00 },
{ 3838, 0x0037, 23, 36, 36, 4, 30, 0, 0, 0x00 },
{ 4270, 0x0038, 24, 38, 37, 3, 30, 0, 0, 0x00 },
{ 4726, 0x0039, 25, 38, 37, 3, 30, 0, 0, 0x00 },
{ 5220, 0x003F, 23, 37, 37, 4, 30, 0, 0, 0x00 },
{ 5664, 0x00B0, 12, 11, 37, 9, 30, 0, 0, 0x00 }
};
// lucon_TTF_50_4bpp
@ -36,6 +38,6 @@ touchgfx::GeneratedFont& getFont_lucon_TTF_50_4bpp();
touchgfx::GeneratedFont& getFont_lucon_TTF_50_4bpp()
{
static touchgfx::GeneratedFont lucon_TTF_50_4bpp(glyphs_lucon_TTF_50_4bpp, 15, 58, 50, 0, 0, 4, 1, 0, 0, unicodes_lucon_TTF_50_4bpp, kerning_lucon_TTF_50_4bpp, 63, 0, 0, 0);
static touchgfx::GeneratedFont lucon_TTF_50_4bpp(glyphs_lucon_TTF_50_4bpp, 17, 58, 50, 0, 0, 4, 1, 0, 1, unicodes_lucon_TTF_50_4bpp, kerning_lucon_TTF_50_4bpp, 63, 0, 0, 0);
return lucon_TTF_50_4bpp;
}

View File

@ -0,0 +1,43 @@
// Autogenerated, do not edit
#include <fonts/GeneratedFont.hpp>
FONT_TABLE_LOCATION_FLASH_PRAGMA
KEEP extern const touchgfx::GlyphNode glyphs_lucon_TTF_80_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = {
{ 0, 0x0020, 0, 0, 0, 0, 48, 0, 0, 0x00 },
{ 0, 0x0025, 49, 61, 59, 0, 48, 0, 0, 0x00 },
{ 1525, 0x002B, 42, 42, 42, 3, 48, 0, 0, 0x00 },
{ 2407, 0x002C, 12, 24, 12, 18, 48, 0, 0, 0x00 },
{ 2551, 0x002D, 32, 6, 27, 8, 48, 0, 0, 0x00 },
{ 2647, 0x002E, 12, 12, 12, 18, 48, 0, 0, 0x00 },
{ 2719, 0x0030, 40, 60, 59, 4, 48, 0, 0, 0x00 },
{ 3919, 0x0031, 39, 59, 59, 7, 48, 0, 0, 0x00 },
{ 5099, 0x0032, 34, 59, 59, 6, 48, 0, 0, 0x00 },
{ 6102, 0x0033, 33, 60, 59, 9, 48, 0, 0, 0x00 },
{ 7122, 0x0034, 40, 58, 58, 4, 48, 0, 0, 0x00 },
{ 8282, 0x0035, 31, 59, 58, 10, 48, 0, 0, 0x00 },
{ 9226, 0x0036, 38, 60, 59, 6, 48, 0, 0, 0x00 },
{ 10366, 0x0037, 36, 58, 58, 7, 48, 0, 0, 0x00 },
{ 11410, 0x0038, 37, 60, 59, 6, 48, 0, 0, 0x00 },
{ 12550, 0x0039, 39, 60, 59, 5, 48, 0, 0, 0x00 },
{ 13750, 0x003F, 37, 59, 59, 6, 48, 0, 0, 0x00 }
};
// lucon_TTF_80_4bpp
FONT_TABLE_LOCATION_FLASH_PRAGMA
KEEP extern const touchgfx::GlyphNode glyphs_lucon_TTF_80_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE;
FONT_GLYPH_LOCATION_FLASH_PRAGMA
KEEP extern const uint8_t unicodes_lucon_TTF_80_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE;
FONT_SEARCHTABLE_LOCATION_FLASH_PRAGMA
KEEP extern const uint8_t* const unicodes_lucon_TTF_80_4bpp[] FONT_SEARCHTABLE_LOCATION_FLASH_ATTRIBUTE = {
unicodes_lucon_TTF_80_4bpp_0
};
FONT_KERNING_LOCATION_FLASH_PRAGMA
KEEP extern const touchgfx::KerningNode kerning_lucon_TTF_80_4bpp[] FONT_KERNING_LOCATION_FLASH_ATTRIBUTE;
touchgfx::GeneratedFont& getFont_lucon_TTF_80_4bpp();
touchgfx::GeneratedFont& getFont_lucon_TTF_80_4bpp()
{
static touchgfx::GeneratedFont lucon_TTF_80_4bpp(glyphs_lucon_TTF_80_4bpp, 17, 92, 80, 0, 0, 4, 1, 0, 1, unicodes_lucon_TTF_80_4bpp, kerning_lucon_TTF_80_4bpp, 63, 0, 0, 0);
return lucon_TTF_80_4bpp;
}

View File

@ -38,6 +38,9 @@ public:
// SDC
void gotoSDCScreenNoTransition();
// Endurance
void gotoEnduranceScreenNoTransition();
protected:
touchgfx::Callback<FrontendApplicationBase> transitionCallback;
FrontendHeap& frontendHeap;
@ -60,6 +63,9 @@ protected:
// SDC
void gotoSDCScreenNoTransitionImpl();
// Endurance
void gotoEnduranceScreenNoTransitionImpl();
};
#endif // FRONTENDAPPLICATIONBASE_HPP

View File

@ -24,6 +24,8 @@
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
#include <gui/sdc_screen/SDCView.hpp>
#include <gui/sdc_screen/SDCPresenter.hpp>
#include <gui/endurance_screen/EnduranceView.hpp>
#include <gui/endurance_screen/EndurancePresenter.hpp>
/**
@ -52,7 +54,8 @@ public:
touchgfx::meta::TypeList< DebugViewView,
touchgfx::meta::TypeList< VehicleConfigView,
touchgfx::meta::TypeList< SDCView,
touchgfx::meta::Nil > > > > >
touchgfx::meta::TypeList< EnduranceView,
touchgfx::meta::Nil > > > > > >
> GeneratedViewTypes;
/**
@ -70,7 +73,8 @@ public:
touchgfx::meta::TypeList< DebugViewPresenter,
touchgfx::meta::TypeList< VehicleConfigPresenter,
touchgfx::meta::TypeList< SDCPresenter,
touchgfx::meta::Nil > > > > >
touchgfx::meta::TypeList< EndurancePresenter,
touchgfx::meta::Nil > > > > > >
> GeneratedPresenterTypes;
/**

View File

@ -0,0 +1,37 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef PROGRESSBARBASE_HPP
#define PROGRESSBARBASE_HPP
#include <gui/common/FrontendApplication.hpp>
#include <touchgfx/containers/Container.hpp>
#include <touchgfx/widgets/TextAreaWithWildcard.hpp>
#include <touchgfx/widgets/TextArea.hpp>
#include <touchgfx/containers/progress_indicators/BoxProgress.hpp>
class ProgressBarBase : public touchgfx::Container
{
public:
ProgressBarBase();
virtual ~ProgressBarBase();
virtual void initialize();
protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}
/*
* Member Declarations
*/
touchgfx::TextAreaWithOneWildcard r2dProgressLabel;
touchgfx::TextArea r2dLabel;
touchgfx::TextArea prechargeLabel;
touchgfx::BoxProgress progressBar;
private:
};
#endif // PROGRESSBARBASE_HPP

View File

@ -20,7 +20,7 @@
#include <gui/containers/DriverViewField.hpp>
#include <touchgfx/containers/ListLayout.hpp>
#include <gui/containers/DriverViewStatusItem.hpp>
#include <touchgfx/containers/progress_indicators/BoxProgress.hpp>
#include <gui/containers/ProgressBar.hpp>
#include <gui/containers/ErrorPopup.hpp>
class DriverViewViewBase : public touchgfx::View<DriverViewPresenter>
@ -98,10 +98,7 @@ protected:
DriverViewStatusItem statusPDU;
DriverViewStatusItem statusINV;
DriverViewStatusItem statusLV;
touchgfx::BoxProgress progressBar;
touchgfx::TextArea prechargeLabel;
touchgfx::TextArea r2dLabel;
touchgfx::TextAreaWithOneWildcard r2dProgressLabel;
ProgressBar progressBar;
ErrorPopup errorPopup;
private:

View File

@ -0,0 +1,79 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#ifndef ENDURANCEVIEWBASE_HPP
#define ENDURANCEVIEWBASE_HPP
#include <gui/common/FrontendApplication.hpp>
#include <mvp/View.hpp>
#include <gui/endurance_screen/EndurancePresenter.hpp>
#include <touchgfx/widgets/Box.hpp>
#include <touchgfx/containers/Container.hpp>
#include <touchgfx/widgets/BoxWithBorder.hpp>
#include <touchgfx/widgets/TextArea.hpp>
#include <touchgfx/widgets/TextAreaWithWildcard.hpp>
#include <gui/containers/ProgressBar.hpp>
class EnduranceViewBase : public touchgfx::View<EndurancePresenter>
{
public:
EnduranceViewBase();
virtual ~EnduranceViewBase();
virtual void setupScreen();
virtual void handleKeyEvent(uint8_t key);
/*
* Virtual Action Handlers
*/
virtual void decreasePowerLimit()
{
// Override and implement this function in Endurance
}
virtual void increasePowerLimit()
{
// Override and implement this function in Endurance
}
virtual void decreaseSpeedLimit()
{
// Override and implement this function in Endurance
}
virtual void increaseSpeedLimit()
{
// Override and implement this function in Endurance
}
protected:
FrontendApplication& application() {
return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
}
/*
* Member Declarations
*/
touchgfx::Box __background;
touchgfx::Container detailContainer;
touchgfx::BoxWithBorder boxWithBorder2;
touchgfx::BoxWithBorder boxWithBorder2_1;
touchgfx::BoxWithBorder boxWithBorder3;
touchgfx::BoxWithBorder boxWithBorder3_1;
touchgfx::TextArea textArea3;
touchgfx::TextArea textArea3_1;
touchgfx::TextAreaWithOneWildcard powerLimit;
touchgfx::TextAreaWithOneWildcard speedLimit;
touchgfx::TextAreaWithOneWildcard soc;
touchgfx::TextAreaWithOneWildcard batTemp;
touchgfx::Container overallContainer;
touchgfx::BoxWithBorder overallBox;
touchgfx::TextArea textArea1_1;
touchgfx::TextAreaWithOneWildcard overallBat;
touchgfx::Container lastLapContainer;
touchgfx::BoxWithBorder lastLapBox;
touchgfx::TextArea textArea1;
touchgfx::TextAreaWithOneWildcard lastLapBat;
ProgressBar progressBar;
private:
};
#endif // ENDURANCEVIEWBASE_HPP

View File

@ -21,6 +21,8 @@
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
#include <gui/sdc_screen/SDCView.hpp>
#include <gui/sdc_screen/SDCPresenter.hpp>
#include <gui/endurance_screen/EnduranceView.hpp>
#include <gui/endurance_screen/EndurancePresenter.hpp>
using namespace touchgfx;
@ -117,3 +119,16 @@ void FrontendApplicationBase::gotoSDCScreenNoTransitionImpl()
{
touchgfx::makeTransition<SDCView, SDCPresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model);
}
// Endurance
void FrontendApplicationBase::gotoEnduranceScreenNoTransition()
{
transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplicationBase::gotoEnduranceScreenNoTransitionImpl);
pendingScreenTransitionCallback = &transitionCallback;
}
void FrontendApplicationBase::gotoEnduranceScreenNoTransitionImpl()
{
touchgfx::makeTransition<EnduranceView, EndurancePresenter, touchgfx::NoTransition, Model >(&currentScreen, &currentPresenter, frontendHeap, &currentTransition, &model);
}

View File

@ -0,0 +1,53 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/containers/ProgressBarBase.hpp>
#include <texts/TextKeysAndLanguages.hpp>
#include <touchgfx/Color.hpp>
#include <images/BitmapDatabase.hpp>
ProgressBarBase::ProgressBarBase()
{
setWidth(456);
setHeight(33);
r2dProgressLabel.setPosition(168, -2, 219, 37);
r2dProgressLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
r2dProgressLabel.setLinespacing(0);
r2dProgressLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_6EXA));
r2dProgressLabel.setVisible(false);
add(r2dProgressLabel);
r2dLabel.setPosition(70, -2, 317, 37);
r2dLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
r2dLabel.setLinespacing(0);
r2dLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_570K));
r2dLabel.setVisible(false);
add(r2dLabel);
prechargeLabel.setXY(95, -2);
prechargeLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
prechargeLabel.setLinespacing(0);
prechargeLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_G2S2));
prechargeLabel.setVisible(false);
add(prechargeLabel);
progressBar.setXY(0, 0);
progressBar.setProgressIndicatorPosition(0, 0, 480, 55);
progressBar.setRange(0, 100);
progressBar.setDirection(touchgfx::AbstractDirectionProgress::RIGHT);
progressBar.setBackground(touchgfx::Bitmap(BITMAP_PROG_HORIZ_BG_ID));
progressBar.setColor(touchgfx::Color::getColorFromRGB(99, 186, 0));
progressBar.setValue(0);
progressBar.setVisible(false);
add(progressBar);
}
ProgressBarBase::~ProgressBarBase()
{
}
void ProgressBarBase::initialize()
{
}

View File

@ -124,36 +124,8 @@ DriverViewViewBase::DriverViewViewBase() :
statusBar.add(statusItems);
progressBar.setXY(0, 0);
progressBar.setProgressIndicatorPosition(0, 0, 480, 55);
progressBar.setRange(0, 100);
progressBar.setDirection(touchgfx::AbstractDirectionProgress::RIGHT);
progressBar.setBackground(touchgfx::Bitmap(BITMAP_PROG_HORIZ_BG_ID));
progressBar.setColor(touchgfx::Color::getColorFromRGB(99, 186, 0));
progressBar.setValue(0);
progressBar.setVisible(false);
statusBar.add(progressBar);
prechargeLabel.setXY(95, -2);
prechargeLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
prechargeLabel.setLinespacing(0);
prechargeLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_HMH2));
prechargeLabel.setVisible(false);
statusBar.add(prechargeLabel);
r2dLabel.setPosition(70, -2, 317, 37);
r2dLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
r2dLabel.setLinespacing(0);
r2dLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_NGUK));
r2dLabel.setVisible(false);
statusBar.add(r2dLabel);
r2dProgressLabel.setPosition(168, -2, 219, 37);
r2dProgressLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
r2dProgressLabel.setLinespacing(0);
r2dProgressLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_J5UH));
r2dProgressLabel.setVisible(false);
statusBar.add(r2dProgressLabel);
add(statusBar);
errorPopup.setXY(12, 125);
@ -187,6 +159,7 @@ void DriverViewViewBase::setupScreen()
statusPDU.initialize();
statusINV.initialize();
statusLV.initialize();
progressBar.initialize();
errorPopup.initialize();
}

View File

@ -0,0 +1,170 @@
/*********************************************************************************/
/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
/*********************************************************************************/
#include <gui_generated/endurance_screen/EnduranceViewBase.hpp>
#include <touchgfx/Color.hpp>
#include <texts/TextKeysAndLanguages.hpp>
EnduranceViewBase::EnduranceViewBase()
{
__background.setPosition(0, 0, 480, 320);
__background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
add(__background);
detailContainer.setPosition(12, 187, 456, 118);
boxWithBorder2.setPosition(0, 0, 152, 118);
boxWithBorder2.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
boxWithBorder2.setBorderColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
boxWithBorder2.setBorderSize(3);
detailContainer.add(boxWithBorder2);
boxWithBorder2_1.setPosition(304, 0, 152, 118);
boxWithBorder2_1.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
boxWithBorder2_1.setBorderColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
boxWithBorder2_1.setBorderSize(3);
detailContainer.add(boxWithBorder2_1);
boxWithBorder3.setPosition(152, 0, 152, 59);
boxWithBorder3.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
boxWithBorder3.setBorderColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
boxWithBorder3.setBorderSize(3);
detailContainer.add(boxWithBorder3);
boxWithBorder3_1.setPosition(152, 59, 152, 59);
boxWithBorder3_1.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
boxWithBorder3_1.setBorderColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
boxWithBorder3_1.setBorderSize(3);
detailContainer.add(boxWithBorder3_1);
textArea3.setXY(27, 2);
textArea3.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
textArea3.setLinespacing(0);
textArea3.setTypedText(touchgfx::TypedText(T___SINGLEUSE_QAZ3));
detailContainer.add(textArea3);
textArea3_1.setXY(329, 2);
textArea3_1.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
textArea3_1.setLinespacing(0);
textArea3_1.setTypedText(touchgfx::TypedText(T___SINGLEUSE_1F9T));
detailContainer.add(textArea3_1);
powerLimit.setPosition(28, 20, 96, 92);
powerLimit.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
powerLimit.setLinespacing(0);
powerLimit.setTypedText(touchgfx::TypedText(T___SINGLEUSE_4X8X));
detailContainer.add(powerLimit);
speedLimit.setPosition(308, 20, 144, 92);
speedLimit.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
speedLimit.setLinespacing(0);
speedLimit.setTypedText(touchgfx::TypedText(T___SINGLEUSE_DONW));
detailContainer.add(speedLimit);
soc.setPosition(168, -2, 120, 58);
soc.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
soc.setLinespacing(0);
soc.setTypedText(touchgfx::TypedText(T___SINGLEUSE_OP6C));
detailContainer.add(soc);
batTemp.setPosition(157, 57, 150, 58);
batTemp.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
batTemp.setLinespacing(0);
batTemp.setTypedText(touchgfx::TypedText(T___SINGLEUSE_B2Q6));
detailContainer.add(batTemp);
add(detailContainer);
overallContainer.setPosition(248, 15, 220, 160);
overallBox.setPosition(0, 0, 220, 160);
overallBox.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
overallBox.setBorderColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
overallBox.setBorderSize(3);
overallContainer.add(overallBox);
textArea1_1.setPosition(9, 7, 203, 24);
textArea1_1.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
textArea1_1.setLinespacing(0);
textArea1_1.setTypedText(touchgfx::TypedText(T___SINGLEUSE_DJ62));
overallContainer.add(textArea1_1);
overallBat.setPosition(14, 40, 192, 92);
overallBat.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
overallBat.setLinespacing(0);
overallBat.setTypedText(touchgfx::TypedText(T___SINGLEUSE_FPXE));
overallContainer.add(overallBat);
add(overallContainer);
lastLapContainer.setPosition(12, 15, 220, 160);
lastLapBox.setPosition(0, 0, 220, 160);
lastLapBox.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
lastLapBox.setBorderColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
lastLapBox.setBorderSize(3);
lastLapContainer.add(lastLapBox);
textArea1.setXY(8, 7);
textArea1.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
textArea1.setLinespacing(0);
textArea1.setTypedText(touchgfx::TypedText(T___SINGLEUSE_5W6Y));
lastLapContainer.add(textArea1);
lastLapBat.setPosition(14, 40, 192, 92);
lastLapBat.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
lastLapBat.setLinespacing(0);
lastLapBat.setTypedText(touchgfx::TypedText(T___SINGLEUSE_51AZ));
lastLapContainer.add(lastLapBat);
add(lastLapContainer);
progressBar.setXY(12, 15);
add(progressBar);
}
EnduranceViewBase::~EnduranceViewBase()
{
}
void EnduranceViewBase::setupScreen()
{
progressBar.initialize();
}
void EnduranceViewBase::handleKeyEvent(uint8_t key)
{
if(104 == key)
{
//DecreasePLim
//When hardware button 104 clicked call virtual function
//Call decreasePowerLimit
decreasePowerLimit();
}
if(108 == key)
{
//IncreasePLim
//When hardware button 108 clicked call virtual function
//Call increasePowerLimit
increasePowerLimit();
}
if(107 == key)
{
//DecreaseSLim
//When hardware button 107 clicked call virtual function
//Call decreaseSpeedLimit
decreaseSpeedLimit();
}
if(106 == key)
{
//IncreaseSLim
//When hardware button 106 clicked call virtual function
//Call increaseSpeedLimit
increaseSpeedLimit();
}
}

View File

@ -144,4 +144,13 @@ void MissionSelectViewBase::handleKeyEvent(uint8_t key)
application().gotoSDCScreenNoTransition();
}
if(249 == key)
{
//DummyChangeEnduranceView
//When hardware button 249 clicked change screen to Endurance
//Go to Endurance with no screen transition
application().gotoEnduranceScreenNoTransition();
}
}

View File

@ -1 +1 @@
{"remap":"yes","language":"GB","language_index":0,"indices":[["490","T_LV"],["376","T_PDU"],["482","T_SCS"],["486","T_SDC"],["478","T_R2D"],["475","T_TS"],["470","T_INV"],["364","T_AMS"],["210","T_ERROR_AMS"],["175","T_DEBUGVIEWFIELD_TITLE"],["175","T_DRIVERVIEWFIELD_TITLE"],["175","T_NUMBERSMALLWILDCARD"],["416","T_FIELD_BBAL"],["355","T_FIELD_TSVOLTVEH"],["348","T_FIELD_TSVOLTBAT"],["392","T_FIELD_LVSOC"],["410","T_FIELD_TSSOC"],["431","T_FIELD_MAXCELLTEMP"],["441","T_FIELD_TIREFL"],["446","T_FIELD_TIREFR"],["451","T_FIELD_TIRERL"],["456","T_FIELD_TIRERR"],["426","T_FIELD_LAPCOUNT"],["277","T_FIELD_INICHKSTATE"],["386","T_FIELD_ERR"],["486","T_FIELD_SDC"],["293","T_FIELD_INVRREADY"],["285","T_FIELD_INVLREADY"],["317","T_FIELD_R2DPROGRESS"],["301","T_FIELD_ACTIVEMISSION"],["261","T_FIELD_ASSTATE"],["333","T_FIELD_TSSTATE"],["175","T_NUMBERWILDCARD"],["175","T_DEFAULTWILDCARD_CENTERED"],["175","T_DEFAULTWILDCARD_RIGHTALIGNED"],["474","T_FIELD_TSCURRENT"],["461","T_FIELD_MINCELLVOLT"],["404","T_FIELD_SPEED"],["177","T_INSPECTION_HUGE"],["252","T_EBS_HUGE"],["199","T_TRACKDRIVE_HUGE"],["220","T_AUTOX_HUGE"],["325","T_SKIDPAD_HUGE"],["146","T_ACCEL_HUGE"],["35","T_INVALID_HUGE"],["116","T_MANUAL"],["177","T_INSPECTION"],["252","T_EBS"],["199","T_TRACKDRIVE"],["220","T_AUTOX"],["325","T_SKIDPAD"],["146","T_ACCEL"],["172","T___SINGLEUSE_C17G"],["362","T___SINGLEUSE_XFW7"],["368","T___SINGLEUSE_N50J"],["466","T___SINGLEUSE_V38H"],["436","T___SINGLEUSE_XC1X"],["243","T___SINGLEUSE_KI1B"],["159","T___SINGLEUSE_QNHI"],["0","T___SINGLEUSE_43KA"],["374","T___SINGLEUSE_YRU7"],["421","T___SINGLEUSE_E6D7"],["175","T___SINGLEUSE_ZEKA"],["131","T___SINGLEUSE_0L75"],["100","T___SINGLEUSE_GA13"],["175","T___SINGLEUSE_THUG"],["175","T___SINGLEUSE_CO7A"],["175","T___SINGLEUSE_A0LF"],["175","T___SINGLEUSE_166C"],["84","T___SINGLEUSE_OOU3"],["68","T___SINGLEUSE_2FPP"],["175","T___SINGLEUSE_2S21"],["175","T___SINGLEUSE_OQ6P"],["309","T___SINGLEUSE_590R"],["269","T___SINGLEUSE_Z78U"],["175","T___SINGLEUSE_LLOZ"],["175","T___SINGLEUSE_232C"],["398","T___SINGLEUSE_JFR7"],["380","T___SINGLEUSE_3MDX"],["17","T___SINGLEUSE_F9I5"],["175","T___SINGLEUSE_9L8R"],["17","T___SINGLEUSE_1NKF"],["175","T___SINGLEUSE_J5UH"],["478","T___SINGLEUSE_NGUK"],["175","T___SINGLEUSE_4E84"],["175","T___SINGLEUSE_YTAB"],["188","T___SINGLEUSE_RWCE"],["230","T___SINGLEUSE_HMH2"],["240","T___SINGLEUSE_PHFD"],["341","T___SINGLEUSE_H6UX"],["175","T___SINGLEUSE_20H3"],["52","T___SINGLEUSE_M5X7"],["18","T___SINGLEUSE_6GPV"]]}
{"remap":"yes","language":"GB","language_index":0,"indices":[["524","T_LV"],["404","T_PDU"],["516","T_SCS"],["520","T_SDC"],["512","T_R2D"],["509","T_TS"],["504","T_INV"],["392","T_AMS"],["235","T_ERROR_AMS"],["200","T_DEBUGVIEWFIELD_TITLE"],["200","T_DRIVERVIEWFIELD_TITLE"],["200","T_NUMBERSMALLWILDCARD"],["450","T_FIELD_BBAL"],["383","T_FIELD_TSVOLTVEH"],["376","T_FIELD_TSVOLTBAT"],["420","T_FIELD_LVSOC"],["444","T_FIELD_TSSOC"],["465","T_FIELD_MAXCELLTEMP"],["475","T_FIELD_TIREFL"],["480","T_FIELD_TIREFR"],["485","T_FIELD_TIRERL"],["490","T_FIELD_TIRERR"],["460","T_FIELD_LAPCOUNT"],["305","T_FIELD_INICHKSTATE"],["414","T_FIELD_ERR"],["520","T_FIELD_SDC"],["321","T_FIELD_INVRREADY"],["313","T_FIELD_INVLREADY"],["345","T_FIELD_R2DPROGRESS"],["329","T_FIELD_ACTIVEMISSION"],["289","T_FIELD_ASSTATE"],["361","T_FIELD_TSSTATE"],["200","T_NUMBERWILDCARD"],["200","T_DEFAULTWILDCARD_CENTERED"],["200","T_DEFAULTWILDCARD_RIGHTALIGNED"],["508","T_FIELD_TSCURRENT"],["495","T_FIELD_MINCELLVOLT"],["438","T_FIELD_SPEED"],["202","T_INSPECTION_HUGE"],["280","T_EBS_HUGE"],["224","T_TRACKDRIVE_HUGE"],["245","T_AUTOX_HUGE"],["353","T_SKIDPAD_HUGE"],["146","T_ACCEL_HUGE"],["35","T_INVALID_HUGE"],["116","T_MANUAL"],["202","T_INSPECTION"],["280","T_EBS"],["224","T_TRACKDRIVE"],["245","T_AUTOX"],["353","T_SKIDPAD"],["146","T_ACCEL"],["200","T___SINGLEUSE_6EXA"],["512","T___SINGLEUSE_570K"],["255","T___SINGLEUSE_G2S2"],["268","T___SINGLEUSE_B2Q6"],["265","T___SINGLEUSE_OP6C"],["438","T___SINGLEUSE_1F9T"],["432","T___SINGLEUSE_QAZ3"],["200","T___SINGLEUSE_DONW"],["200","T___SINGLEUSE_4X8X"],["265","T___SINGLEUSE_FPXE"],["265","T___SINGLEUSE_51AZ"],["185","T___SINGLEUSE_DJ62"],["159","T___SINGLEUSE_5W6Y"],["197","T___SINGLEUSE_C17G"],["390","T___SINGLEUSE_XFW7"],["396","T___SINGLEUSE_N50J"],["500","T___SINGLEUSE_V38H"],["470","T___SINGLEUSE_XC1X"],["271","T___SINGLEUSE_KI1B"],["172","T___SINGLEUSE_QNHI"],["0","T___SINGLEUSE_43KA"],["402","T___SINGLEUSE_YRU7"],["455","T___SINGLEUSE_E6D7"],["200","T___SINGLEUSE_ZEKA"],["131","T___SINGLEUSE_0L75"],["100","T___SINGLEUSE_GA13"],["200","T___SINGLEUSE_THUG"],["200","T___SINGLEUSE_CO7A"],["200","T___SINGLEUSE_A0LF"],["200","T___SINGLEUSE_166C"],["84","T___SINGLEUSE_OOU3"],["68","T___SINGLEUSE_2FPP"],["200","T___SINGLEUSE_2S21"],["200","T___SINGLEUSE_OQ6P"],["337","T___SINGLEUSE_590R"],["297","T___SINGLEUSE_Z78U"],["200","T___SINGLEUSE_LLOZ"],["200","T___SINGLEUSE_232C"],["426","T___SINGLEUSE_JFR7"],["408","T___SINGLEUSE_3MDX"],["17","T___SINGLEUSE_F9I5"],["200","T___SINGLEUSE_9L8R"],["17","T___SINGLEUSE_1NKF"],["200","T___SINGLEUSE_4E84"],["200","T___SINGLEUSE_YTAB"],["213","T___SINGLEUSE_RWCE"],["265","T___SINGLEUSE_PHFD"],["369","T___SINGLEUSE_H6UX"],["200","T___SINGLEUSE_20H3"],["52","T___SINGLEUSE_M5X7"],["18","T___SINGLEUSE_6GPV"]]}

View File

@ -1 +1 @@
{"languages":["GB"],"textids":["T_LV","T_PDU","T_SCS","T_SDC","T_R2D","T_TS","T_INV","T_AMS","T_ERROR_AMS","T_DEBUGVIEWFIELD_TITLE","T_DRIVERVIEWFIELD_TITLE","T_NUMBERSMALLWILDCARD","T_FIELD_BBAL","T_FIELD_TSVOLTVEH","T_FIELD_TSVOLTBAT","T_FIELD_LVSOC","T_FIELD_TSSOC","T_FIELD_MAXCELLTEMP","T_FIELD_TIREFL","T_FIELD_TIREFR","T_FIELD_TIRERL","T_FIELD_TIRERR","T_FIELD_LAPCOUNT","T_FIELD_INICHKSTATE","T_FIELD_ERR","T_FIELD_SDC","T_FIELD_INVRREADY","T_FIELD_INVLREADY","T_FIELD_R2DPROGRESS","T_FIELD_ACTIVEMISSION","T_FIELD_ASSTATE","T_FIELD_TSSTATE","T_NUMBERWILDCARD","T_DEFAULTWILDCARD_CENTERED","T_DEFAULTWILDCARD_RIGHTALIGNED","T_FIELD_TSCURRENT","T_FIELD_MINCELLVOLT","T_FIELD_SPEED","T_INSPECTION_HUGE","T_EBS_HUGE","T_TRACKDRIVE_HUGE","T_AUTOX_HUGE","T_SKIDPAD_HUGE","T_ACCEL_HUGE","T_INVALID_HUGE","T_MANUAL","T_INSPECTION","T_EBS","T_TRACKDRIVE","T_AUTOX","T_SKIDPAD","T_ACCEL","T___SINGLEUSE_C17G","T___SINGLEUSE_XFW7","T___SINGLEUSE_N50J","T___SINGLEUSE_V38H","T___SINGLEUSE_XC1X","T___SINGLEUSE_KI1B","T___SINGLEUSE_QNHI","T___SINGLEUSE_43KA","T___SINGLEUSE_YRU7","T___SINGLEUSE_E6D7","T___SINGLEUSE_ZEKA","T___SINGLEUSE_0L75","T___SINGLEUSE_GA13","T___SINGLEUSE_THUG","T___SINGLEUSE_CO7A","T___SINGLEUSE_A0LF","T___SINGLEUSE_166C","T___SINGLEUSE_OOU3","T___SINGLEUSE_2FPP","T___SINGLEUSE_2S21","T___SINGLEUSE_OQ6P","T___SINGLEUSE_590R","T___SINGLEUSE_Z78U","T___SINGLEUSE_LLOZ","T___SINGLEUSE_232C","T___SINGLEUSE_JFR7","T___SINGLEUSE_3MDX","T___SINGLEUSE_F9I5","T___SINGLEUSE_9L8R","T___SINGLEUSE_1NKF","T___SINGLEUSE_J5UH","T___SINGLEUSE_NGUK","T___SINGLEUSE_4E84","T___SINGLEUSE_YTAB","T___SINGLEUSE_RWCE","T___SINGLEUSE_HMH2","T___SINGLEUSE_PHFD","T___SINGLEUSE_H6UX","T___SINGLEUSE_20H3","T___SINGLEUSE_M5X7","T___SINGLEUSE_6GPV"]}
{"languages":["GB"],"textids":["T_LV","T_PDU","T_SCS","T_SDC","T_R2D","T_TS","T_INV","T_AMS","T_ERROR_AMS","T_DEBUGVIEWFIELD_TITLE","T_DRIVERVIEWFIELD_TITLE","T_NUMBERSMALLWILDCARD","T_FIELD_BBAL","T_FIELD_TSVOLTVEH","T_FIELD_TSVOLTBAT","T_FIELD_LVSOC","T_FIELD_TSSOC","T_FIELD_MAXCELLTEMP","T_FIELD_TIREFL","T_FIELD_TIREFR","T_FIELD_TIRERL","T_FIELD_TIRERR","T_FIELD_LAPCOUNT","T_FIELD_INICHKSTATE","T_FIELD_ERR","T_FIELD_SDC","T_FIELD_INVRREADY","T_FIELD_INVLREADY","T_FIELD_R2DPROGRESS","T_FIELD_ACTIVEMISSION","T_FIELD_ASSTATE","T_FIELD_TSSTATE","T_NUMBERWILDCARD","T_DEFAULTWILDCARD_CENTERED","T_DEFAULTWILDCARD_RIGHTALIGNED","T_FIELD_TSCURRENT","T_FIELD_MINCELLVOLT","T_FIELD_SPEED","T_INSPECTION_HUGE","T_EBS_HUGE","T_TRACKDRIVE_HUGE","T_AUTOX_HUGE","T_SKIDPAD_HUGE","T_ACCEL_HUGE","T_INVALID_HUGE","T_MANUAL","T_INSPECTION","T_EBS","T_TRACKDRIVE","T_AUTOX","T_SKIDPAD","T_ACCEL","T___SINGLEUSE_6EXA","T___SINGLEUSE_570K","T___SINGLEUSE_G2S2","T___SINGLEUSE_B2Q6","T___SINGLEUSE_OP6C","T___SINGLEUSE_1F9T","T___SINGLEUSE_QAZ3","T___SINGLEUSE_DONW","T___SINGLEUSE_4X8X","T___SINGLEUSE_FPXE","T___SINGLEUSE_51AZ","T___SINGLEUSE_DJ62","T___SINGLEUSE_5W6Y","T___SINGLEUSE_C17G","T___SINGLEUSE_XFW7","T___SINGLEUSE_N50J","T___SINGLEUSE_V38H","T___SINGLEUSE_XC1X","T___SINGLEUSE_KI1B","T___SINGLEUSE_QNHI","T___SINGLEUSE_43KA","T___SINGLEUSE_YRU7","T___SINGLEUSE_E6D7","T___SINGLEUSE_ZEKA","T___SINGLEUSE_0L75","T___SINGLEUSE_GA13","T___SINGLEUSE_THUG","T___SINGLEUSE_CO7A","T___SINGLEUSE_A0LF","T___SINGLEUSE_166C","T___SINGLEUSE_OOU3","T___SINGLEUSE_2FPP","T___SINGLEUSE_2S21","T___SINGLEUSE_OQ6P","T___SINGLEUSE_590R","T___SINGLEUSE_Z78U","T___SINGLEUSE_LLOZ","T___SINGLEUSE_232C","T___SINGLEUSE_JFR7","T___SINGLEUSE_3MDX","T___SINGLEUSE_F9I5","T___SINGLEUSE_9L8R","T___SINGLEUSE_1NKF","T___SINGLEUSE_4E84","T___SINGLEUSE_YTAB","T___SINGLEUSE_RWCE","T___SINGLEUSE_PHFD","T___SINGLEUSE_H6UX","T___SINGLEUSE_20H3","T___SINGLEUSE_M5X7","T___SINGLEUSE_6GPV"]}

View File

@ -1 +1 @@
{"remap":"yes","languages":["Gb"],"characters":[68,65,83,72,10,66,79,84,83,10,73,78,69,82,84,73,65,0,67,104,111,111,115,101,32,97,32,109,105,115,115,105,111,110,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,33,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,0,80,114,101,115,115,117,114,101,32,65,99,99,32,65,58,0,80,114,101,115,115,117,114,101,32,65,99,99,32,66,58,0,80,114,101,115,115,117,114,101,32,70,114,111,110,116,58,0,77,97,110,117,97,108,32,68,114,105,118,105,110,103,0,80,114,101,115,115,117,114,101,32,82,101,97,114,58,0,65,99,99,101,108,101,114,97,116,105,111,110,0,83,68,66,10,82,69,83,10,83,68,67,76,0,65,83,32,2,0,73,110,115,112,101,99,116,105,111,110,0,80,65,82,65,77,69,84,69,82,83,0,84,114,97,99,107,100,114,105,118,101,0,65,77,83,32,69,114,114,79,114,0,65,117,116,111,99,114,111,115,115,0,80,82,69,67,72,65,82,71,69,0,2,37,0,66,83,80,68,10,72,86,68,0,69,66,83,32,84,101,115,116,0,65,83,83,84,65,84,69,0,68,83,80,69,69,68,58,0,73,67,83,84,65,84,69,0,73,78,86,76,82,68,89,0,73,78,86,82,82,68,89,0,77,73,83,83,73,79,78,0,77,83,80,69,69,68,58,0,82,50,68,80,82,79,71,0,83,107,105,100,112,97,100,0,84,83,83,84,65,84,69,0,66,82,65,75,69,83,0,84,83,86,66,65,84,0,84,83,86,86,69,72,0,10,10,65,77,83,0,10,10,73,77,68,0,10,10,80,68,85,0,68,65,78,71,58,0,69,82,82,79,82,0,76,86,83,79,67,0,77,65,78,71,58,0,83,80,69,69,68,0,84,83,83,79,67,0,66,66,65,76,0,73,78,73,84,0,76,65,80,83,0,84,77,65,88,0,84,83,77,83,0,84,84,70,76,0,84,84,70,82,0,84,84,82,76,0,84,84,82,82,0,86,77,73,78,0,65,67,67,0,73,78,86,0,73,84,83,0,82,50,68,0,83,67,83,0,83,68,67,0,76,86,0]}
{"remap":"yes","languages":["Gb"],"characters":[68,65,83,72,10,66,79,84,83,10,73,78,69,82,84,73,65,0,67,104,111,111,115,101,32,97,32,109,105,115,115,105,111,110,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,33,0,73,110,118,97,108,105,100,32,77,105,115,115,105,111,110,0,80,114,101,115,115,117,114,101,32,65,99,99,32,65,58,0,80,114,101,115,115,117,114,101,32,65,99,99,32,66,58,0,80,114,101,115,115,117,114,101,32,70,114,111,110,116,58,0,77,97,110,117,97,108,32,68,114,105,118,105,110,103,0,80,114,101,115,115,117,114,101,32,82,101,97,114,58,0,65,99,99,101,108,101,114,97,116,105,111,110,0,76,65,83,84,32,76,65,80,32,66,65,84,0,83,68,66,10,82,69,83,10,83,68,67,76,0,79,86,69,82,65,76,76,32,66,65,84,0,65,83,32,2,0,73,110,115,112,101,99,116,105,111,110,0,80,65,82,65,77,69,84,69,82,83,0,84,114,97,99,107,100,114,105,118,101,0,65,77,83,32,69,114,114,79,114,0,65,117,116,111,99,114,111,115,115,0,80,82,69,67,72,65,82,71,69,0,2,37,0,2,176,0,66,83,80,68,10,72,86,68,0,69,66,83,32,84,101,115,116,0,65,83,83,84,65,84,69,0,68,83,80,69,69,68,58,0,73,67,83,84,65,84,69,0,73,78,86,76,82,68,89,0,73,78,86,82,82,68,89,0,77,73,83,83,73,79,78,0,77,83,80,69,69,68,58,0,82,50,68,80,82,79,71,0,83,107,105,100,112,97,100,0,84,83,83,84,65,84,69,0,66,82,65,75,69,83,0,84,83,86,66,65,84,0,84,83,86,86,69,72,0,10,10,65,77,83,0,10,10,73,77,68,0,10,10,80,68,85,0,68,65,78,71,58,0,69,82,82,79,82,0,76,86,83,79,67,0,77,65,78,71,58,0,80,79,87,69,82,0,83,80,69,69,68,0,84,83,83,79,67,0,66,66,65,76,0,73,78,73,84,0,76,65,80,83,0,84,77,65,88,0,84,83,77,83,0,84,84,70,76,0,84,84,70,82,0,84,84,82,76,0,84,84,82,82,0,86,77,73,78,0,65,67,67,0,73,78,86,0,73,84,83,0,82,50,68,0,83,67,83,0,83,68,67,0,76,86,0]}

View File

@ -1 +1 @@
{"databases":{"GB":[[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[5,"LEFT","LTR"],[2,"CENTER","LTR"],[6,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[1,"LEFT","LTR"],[1,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[0,"LEFT","LTR"],[3,"CENTER","LTR"],[1,"RIGHT","LTR"],[1,"LEFT","LTR"],[4,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]],"DEFAULT":[[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[5,"LEFT","LTR"],[2,"CENTER","LTR"],[6,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[1,"LEFT","LTR"],[1,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[0,"LEFT","LTR"],[3,"CENTER","LTR"],[1,"RIGHT","LTR"],[1,"LEFT","LTR"],[4,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"CENTER","LTR"],[1,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]]},"database_list":["GB"],"fonts":{"getFont_verdana_20_4bpp":0,"getFont_CHINN____30_4bpp":1,"getFont_CHINN____20_4bpp":2,"getFont_CHINN____40_4bpp":3,"getFont_lucon_TTF_50_4bpp":4,"getFont_verdanab_20_4bpp":5,"getFont_lucon_TTF_33_4bpp":6,"getFont_lucon_TTF_20_4bpp":7},"generate_font_format":"0"}
{"databases":{"GB":[[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[5,"LEFT","LTR"],[2,"CENTER","LTR"],[6,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"LEFT","LTR"],[4,"RIGHT","LTR"],[4,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[8,"CENTER","LTR"],[8,"CENTER","LTR"],[8,"RIGHT","LTR"],[8,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[1,"LEFT","LTR"],[1,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[0,"LEFT","LTR"],[3,"CENTER","LTR"],[4,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]],"DEFAULT":[[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[5,"LEFT","LTR"],[2,"CENTER","LTR"],[6,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[0,"CENTER","LTR"],[0,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[3,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"LEFT","LTR"],[4,"RIGHT","LTR"],[4,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[8,"CENTER","LTR"],[8,"CENTER","LTR"],[8,"RIGHT","LTR"],[8,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"RIGHT","LTR"],[2,"CENTER","LTR"],[2,"LEFT","LTR"],[1,"LEFT","LTR"],[1,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[7,"RIGHT","LTR"],[2,"LEFT","LTR"],[2,"LEFT","LTR"],[2,"CENTER","LTR"],[0,"LEFT","LTR"],[3,"CENTER","LTR"],[4,"RIGHT","LTR"],[1,"LEFT","LTR"],[1,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[4,"CENTER","LTR"],[2,"CENTER","LTR"],[1,"LEFT","LTR"]]},"database_list":["GB"],"fonts":{"getFont_verdana_20_4bpp":0,"getFont_CHINN____30_4bpp":1,"getFont_CHINN____20_4bpp":2,"getFont_CHINN____40_4bpp":3,"getFont_lucon_TTF_50_4bpp":4,"getFont_verdanab_20_4bpp":5,"getFont_lucon_TTF_33_4bpp":6,"getFont_lucon_TTF_20_4bpp":7,"getFont_lucon_TTF_80_4bpp":8},"generate_font_format":"0"}

View File

@ -64,6 +64,19 @@ enum TEXTS
T_AUTOX,
T_SKIDPAD,
T_ACCEL,
T___SINGLEUSE_6EXA,
T___SINGLEUSE_570K,
T___SINGLEUSE_G2S2,
T___SINGLEUSE_B2Q6,
T___SINGLEUSE_OP6C,
T___SINGLEUSE_1F9T,
T___SINGLEUSE_QAZ3,
T___SINGLEUSE_DONW,
T___SINGLEUSE_4X8X,
T___SINGLEUSE_FPXE,
T___SINGLEUSE_51AZ,
T___SINGLEUSE_DJ62,
T___SINGLEUSE_5W6Y,
T___SINGLEUSE_C17G,
T___SINGLEUSE_XFW7,
T___SINGLEUSE_N50J,
@ -94,12 +107,9 @@ enum TEXTS
T___SINGLEUSE_F9I5,
T___SINGLEUSE_9L8R,
T___SINGLEUSE_1NKF,
T___SINGLEUSE_J5UH,
T___SINGLEUSE_NGUK,
T___SINGLEUSE_4E84,
T___SINGLEUSE_YTAB,
T___SINGLEUSE_RWCE,
T___SINGLEUSE_HMH2,
T___SINGLEUSE_PHFD,
T___SINGLEUSE_H6UX,
T___SINGLEUSE_20H3,

View File

@ -10,97 +10,107 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE;
// Remap all strings
TEXT_LOCATION_FLASH_PRAGMA
KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
490, // T_LV: "LV"
376, // T_PDU: "PDU"
482, // T_SCS: "SCS"
486, // T_SDC: "SDC"
478, // T_R2D: "R2D"
475, // T_TS: "TS"
470, // T_INV: "INV"
364, // T_AMS: "AMS"
210, // T_ERROR_AMS: "AMS ErrOr"
175, // T_DEBUGVIEWFIELD_TITLE: "<>"
175, // T_DRIVERVIEWFIELD_TITLE: "<>"
175, // T_NUMBERSMALLWILDCARD: "<>"
416, // T_FIELD_BBAL: "BBAL"
355, // T_FIELD_TSVOLTVEH: "TSVVEH"
348, // T_FIELD_TSVOLTBAT: "TSVBAT"
392, // T_FIELD_LVSOC: "LVSOC"
410, // T_FIELD_TSSOC: "TSSOC"
431, // T_FIELD_MAXCELLTEMP: "TMAX"
441, // T_FIELD_TIREFL: "TTFL"
446, // T_FIELD_TIREFR: "TTFR"
451, // T_FIELD_TIRERL: "TTRL"
456, // T_FIELD_TIRERR: "TTRR"
426, // T_FIELD_LAPCOUNT: "LAPS"
277, // T_FIELD_INICHKSTATE: "ICSTATE"
386, // T_FIELD_ERR: "ERROR"
486, // T_FIELD_SDC: "SDC"
293, // T_FIELD_INVRREADY: "INVRRDY"
285, // T_FIELD_INVLREADY: "INVLRDY"
317, // T_FIELD_R2DPROGRESS: "R2DPROG"
301, // T_FIELD_ACTIVEMISSION: "MISSION"
261, // T_FIELD_ASSTATE: "ASSTATE"
333, // T_FIELD_TSSTATE: "TSSTATE"
175, // T_NUMBERWILDCARD: "<>"
175, // T_DEFAULTWILDCARD_CENTERED: "<>"
175, // T_DEFAULTWILDCARD_RIGHTALIGNED: "<>"
474, // T_FIELD_TSCURRENT: "ITS"
461, // T_FIELD_MINCELLVOLT: "VMIN"
404, // T_FIELD_SPEED: "SPEED"
177, // T_INSPECTION_HUGE: "Inspection"
252, // T_EBS_HUGE: "EBS Test"
199, // T_TRACKDRIVE_HUGE: "Trackdrive"
220, // T_AUTOX_HUGE: "Autocross"
325, // T_SKIDPAD_HUGE: "Skidpad"
524, // T_LV: "LV"
404, // T_PDU: "PDU"
516, // T_SCS: "SCS"
520, // T_SDC: "SDC"
512, // T_R2D: "R2D"
509, // T_TS: "TS"
504, // T_INV: "INV"
392, // T_AMS: "AMS"
235, // T_ERROR_AMS: "AMS ErrOr"
200, // T_DEBUGVIEWFIELD_TITLE: "<>"
200, // T_DRIVERVIEWFIELD_TITLE: "<>"
200, // T_NUMBERSMALLWILDCARD: "<>"
450, // T_FIELD_BBAL: "BBAL"
383, // T_FIELD_TSVOLTVEH: "TSVVEH"
376, // T_FIELD_TSVOLTBAT: "TSVBAT"
420, // T_FIELD_LVSOC: "LVSOC"
444, // T_FIELD_TSSOC: "TSSOC"
465, // T_FIELD_MAXCELLTEMP: "TMAX"
475, // T_FIELD_TIREFL: "TTFL"
480, // T_FIELD_TIREFR: "TTFR"
485, // T_FIELD_TIRERL: "TTRL"
490, // T_FIELD_TIRERR: "TTRR"
460, // T_FIELD_LAPCOUNT: "LAPS"
305, // T_FIELD_INICHKSTATE: "ICSTATE"
414, // T_FIELD_ERR: "ERROR"
520, // T_FIELD_SDC: "SDC"
321, // T_FIELD_INVRREADY: "INVRRDY"
313, // T_FIELD_INVLREADY: "INVLRDY"
345, // T_FIELD_R2DPROGRESS: "R2DPROG"
329, // T_FIELD_ACTIVEMISSION: "MISSION"
289, // T_FIELD_ASSTATE: "ASSTATE"
361, // T_FIELD_TSSTATE: "TSSTATE"
200, // T_NUMBERWILDCARD: "<>"
200, // T_DEFAULTWILDCARD_CENTERED: "<>"
200, // T_DEFAULTWILDCARD_RIGHTALIGNED: "<>"
508, // T_FIELD_TSCURRENT: "ITS"
495, // T_FIELD_MINCELLVOLT: "VMIN"
438, // T_FIELD_SPEED: "SPEED"
202, // T_INSPECTION_HUGE: "Inspection"
280, // T_EBS_HUGE: "EBS Test"
224, // T_TRACKDRIVE_HUGE: "Trackdrive"
245, // T_AUTOX_HUGE: "Autocross"
353, // T_SKIDPAD_HUGE: "Skidpad"
146, // T_ACCEL_HUGE: "Acceleration"
35, // T_INVALID_HUGE: "Invalid Mission!"
116, // T_MANUAL: "Manual Driving"
177, // T_INSPECTION: "Inspection"
252, // T_EBS: "EBS Test"
199, // T_TRACKDRIVE: "Trackdrive"
220, // T_AUTOX: "Autocross"
325, // T_SKIDPAD: "Skidpad"
202, // T_INSPECTION: "Inspection"
280, // T_EBS: "EBS Test"
224, // T_TRACKDRIVE: "Trackdrive"
245, // T_AUTOX: "Autocross"
353, // T_SKIDPAD: "Skidpad"
146, // T_ACCEL: "Acceleration"
172, // T___SINGLEUSE_C17G: "AS <>"
362, // T___SINGLEUSE_XFW7: "\n\nAMS"
368, // T___SINGLEUSE_N50J: "\n\nIMD"
466, // T___SINGLEUSE_V38H: "ACC"
436, // T___SINGLEUSE_XC1X: "TSMS"
243, // T___SINGLEUSE_KI1B: "BSPD\nHVD"
159, // T___SINGLEUSE_QNHI: "SDB\nRES\nSDCL"
200, // T___SINGLEUSE_6EXA: "<>"
512, // T___SINGLEUSE_570K: "R2D"
255, // T___SINGLEUSE_G2S2: "PRECHARGE"
268, // T___SINGLEUSE_B2Q6: "<>?"
265, // T___SINGLEUSE_OP6C: "<>%"
438, // T___SINGLEUSE_1F9T: "SPEED"
432, // T___SINGLEUSE_QAZ3: "POWER"
200, // T___SINGLEUSE_DONW: "<>"
200, // T___SINGLEUSE_4X8X: "<>"
265, // T___SINGLEUSE_FPXE: "<>%"
265, // T___SINGLEUSE_51AZ: "<>%"
185, // T___SINGLEUSE_DJ62: "OVERALL BAT"
159, // T___SINGLEUSE_5W6Y: "LAST LAP BAT"
197, // T___SINGLEUSE_C17G: "AS <>"
390, // T___SINGLEUSE_XFW7: "\n\nAMS"
396, // T___SINGLEUSE_N50J: "\n\nIMD"
500, // T___SINGLEUSE_V38H: "ACC"
470, // T___SINGLEUSE_XC1X: "TSMS"
271, // T___SINGLEUSE_KI1B: "BSPD\nHVD"
172, // T___SINGLEUSE_QNHI: "SDB\nRES\nSDCL"
0, // T___SINGLEUSE_43KA: "DASH\nBOTS\nINERTIA"
374, // T___SINGLEUSE_YRU7: "\n\nPDU"
421, // T___SINGLEUSE_E6D7: "INIT"
175, // T___SINGLEUSE_ZEKA: "<>"
402, // T___SINGLEUSE_YRU7: "\n\nPDU"
455, // T___SINGLEUSE_E6D7: "INIT"
200, // T___SINGLEUSE_ZEKA: "<>"
131, // T___SINGLEUSE_0L75: "Pressure Rear:"
100, // T___SINGLEUSE_GA13: "Pressure Front:"
175, // T___SINGLEUSE_THUG: "<>"
175, // T___SINGLEUSE_CO7A: "<>"
175, // T___SINGLEUSE_A0LF: "<>"
175, // T___SINGLEUSE_166C: "<>"
200, // T___SINGLEUSE_THUG: "<>"
200, // T___SINGLEUSE_CO7A: "<>"
200, // T___SINGLEUSE_A0LF: "<>"
200, // T___SINGLEUSE_166C: "<>"
84, // T___SINGLEUSE_OOU3: "Pressure Acc B:"
68, // T___SINGLEUSE_2FPP: "Pressure Acc A:"
175, // T___SINGLEUSE_2S21: "<>"
175, // T___SINGLEUSE_OQ6P: "<>"
309, // T___SINGLEUSE_590R: "MSPEED:"
269, // T___SINGLEUSE_Z78U: "DSPEED:"
175, // T___SINGLEUSE_LLOZ: "<>"
175, // T___SINGLEUSE_232C: "<>"
398, // T___SINGLEUSE_JFR7: "MANG:"
380, // T___SINGLEUSE_3MDX: "DANG:"
200, // T___SINGLEUSE_2S21: "<>"
200, // T___SINGLEUSE_OQ6P: "<>"
337, // T___SINGLEUSE_590R: "MSPEED:"
297, // T___SINGLEUSE_Z78U: "DSPEED:"
200, // T___SINGLEUSE_LLOZ: "<>"
200, // T___SINGLEUSE_232C: "<>"
426, // T___SINGLEUSE_JFR7: "MANG:"
408, // T___SINGLEUSE_3MDX: "DANG:"
17, // T___SINGLEUSE_F9I5: ""
175, // T___SINGLEUSE_9L8R: "<>"
200, // T___SINGLEUSE_9L8R: "<>"
17, // T___SINGLEUSE_1NKF: ""
175, // T___SINGLEUSE_J5UH: "<>"
478, // T___SINGLEUSE_NGUK: "R2D"
175, // T___SINGLEUSE_4E84: "<>"
175, // T___SINGLEUSE_YTAB: "<>"
188, // T___SINGLEUSE_RWCE: "PARAMETERS"
230, // T___SINGLEUSE_HMH2: "PRECHARGE"
240, // T___SINGLEUSE_PHFD: "<>%"
341, // T___SINGLEUSE_H6UX: "BRAKES"
175, // T___SINGLEUSE_20H3: "<>"
200, // T___SINGLEUSE_4E84: "<>"
200, // T___SINGLEUSE_YTAB: "<>"
213, // T___SINGLEUSE_RWCE: "PARAMETERS"
265, // T___SINGLEUSE_PHFD: "<>%"
369, // T___SINGLEUSE_H6UX: "BRAKES"
200, // T___SINGLEUSE_20H3: "<>"
52, // T___SINGLEUSE_M5X7: "Invalid Mission"
18 // T___SINGLEUSE_6GPV: "Choose a mission"
};

View File

@ -70,56 +70,60 @@ KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCA
0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x20, 0x44, 0x72, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x0, // @116 "Manual Driving"
0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x20, 0x52, 0x65, 0x61, 0x72, 0x3a, 0x0, // @131 "Pressure Rear:"
0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0, // @146 "Acceleration"
0x53, 0x44, 0x42, 0xa, 0x52, 0x45, 0x53, 0xa, 0x53, 0x44, 0x43, 0x4c, 0x0, // @159 "SDB\nRES\nSDCL"
0x41, 0x53, 0x20, 0x2, 0x0, // @172 "AS <>"
0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0, // @177 "Inspection"
0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x53, 0x0, // @188 "PARAMETERS"
0x54, 0x72, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x0, // @199 "Trackdrive"
0x41, 0x4d, 0x53, 0x20, 0x45, 0x72, 0x72, 0x4f, 0x72, 0x0, // @210 "AMS ErrOr"
0x41, 0x75, 0x74, 0x6f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x0, // @220 "Autocross"
0x50, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x0, // @230 "PRECHARGE"
0x2, 0x25, 0x0, // @240 "<>%"
0x42, 0x53, 0x50, 0x44, 0xa, 0x48, 0x56, 0x44, 0x0, // @243 "BSPD\nHVD"
0x45, 0x42, 0x53, 0x20, 0x54, 0x65, 0x73, 0x74, 0x0, // @252 "EBS Test"
0x41, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @261 "ASSTATE"
0x44, 0x53, 0x50, 0x45, 0x45, 0x44, 0x3a, 0x0, // @269 "DSPEED:"
0x49, 0x43, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @277 "ICSTATE"
0x49, 0x4e, 0x56, 0x4c, 0x52, 0x44, 0x59, 0x0, // @285 "INVLRDY"
0x49, 0x4e, 0x56, 0x52, 0x52, 0x44, 0x59, 0x0, // @293 "INVRRDY"
0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x0, // @301 "MISSION"
0x4d, 0x53, 0x50, 0x45, 0x45, 0x44, 0x3a, 0x0, // @309 "MSPEED:"
0x52, 0x32, 0x44, 0x50, 0x52, 0x4f, 0x47, 0x0, // @317 "R2DPROG"
0x53, 0x6b, 0x69, 0x64, 0x70, 0x61, 0x64, 0x0, // @325 "Skidpad"
0x54, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @333 "TSSTATE"
0x42, 0x52, 0x41, 0x4b, 0x45, 0x53, 0x0, // @341 "BRAKES"
0x54, 0x53, 0x56, 0x42, 0x41, 0x54, 0x0, // @348 "TSVBAT"
0x54, 0x53, 0x56, 0x56, 0x45, 0x48, 0x0, // @355 "TSVVEH"
0xa, 0xa, 0x41, 0x4d, 0x53, 0x0, // @362 "\n\nAMS"
0xa, 0xa, 0x49, 0x4d, 0x44, 0x0, // @368 "\n\nIMD"
0xa, 0xa, 0x50, 0x44, 0x55, 0x0, // @374 "\n\nPDU"
0x44, 0x41, 0x4e, 0x47, 0x3a, 0x0, // @380 "DANG:"
0x45, 0x52, 0x52, 0x4f, 0x52, 0x0, // @386 "ERROR"
0x4c, 0x56, 0x53, 0x4f, 0x43, 0x0, // @392 "LVSOC"
0x4d, 0x41, 0x4e, 0x47, 0x3a, 0x0, // @398 "MANG:"
0x53, 0x50, 0x45, 0x45, 0x44, 0x0, // @404 "SPEED"
0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @410 "TSSOC"
0x42, 0x42, 0x41, 0x4c, 0x0, // @416 "BBAL"
0x49, 0x4e, 0x49, 0x54, 0x0, // @421 "INIT"
0x4c, 0x41, 0x50, 0x53, 0x0, // @426 "LAPS"
0x54, 0x4d, 0x41, 0x58, 0x0, // @431 "TMAX"
0x54, 0x53, 0x4d, 0x53, 0x0, // @436 "TSMS"
0x54, 0x54, 0x46, 0x4c, 0x0, // @441 "TTFL"
0x54, 0x54, 0x46, 0x52, 0x0, // @446 "TTFR"
0x54, 0x54, 0x52, 0x4c, 0x0, // @451 "TTRL"
0x54, 0x54, 0x52, 0x52, 0x0, // @456 "TTRR"
0x56, 0x4d, 0x49, 0x4e, 0x0, // @461 "VMIN"
0x41, 0x43, 0x43, 0x0, // @466 "ACC"
0x49, 0x4e, 0x56, 0x0, // @470 "INV"
0x49, 0x54, 0x53, 0x0, // @474 "ITS"
0x52, 0x32, 0x44, 0x0, // @478 "R2D"
0x53, 0x43, 0x53, 0x0, // @482 "SCS"
0x53, 0x44, 0x43, 0x0, // @486 "SDC"
0x4c, 0x56, 0x0 // @490 "LV"
0x4c, 0x41, 0x53, 0x54, 0x20, 0x4c, 0x41, 0x50, 0x20, 0x42, 0x41, 0x54, 0x0, // @159 "LAST LAP BAT"
0x53, 0x44, 0x42, 0xa, 0x52, 0x45, 0x53, 0xa, 0x53, 0x44, 0x43, 0x4c, 0x0, // @172 "SDB\nRES\nSDCL"
0x4f, 0x56, 0x45, 0x52, 0x41, 0x4c, 0x4c, 0x20, 0x42, 0x41, 0x54, 0x0, // @185 "OVERALL BAT"
0x41, 0x53, 0x20, 0x2, 0x0, // @197 "AS <>"
0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0, // @202 "Inspection"
0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x53, 0x0, // @213 "PARAMETERS"
0x54, 0x72, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x0, // @224 "Trackdrive"
0x41, 0x4d, 0x53, 0x20, 0x45, 0x72, 0x72, 0x4f, 0x72, 0x0, // @235 "AMS ErrOr"
0x41, 0x75, 0x74, 0x6f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x0, // @245 "Autocross"
0x50, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x0, // @255 "PRECHARGE"
0x2, 0x25, 0x0, // @265 "<>%"
0x2, 0xb0, 0x0, // @268 "<>?"
0x42, 0x53, 0x50, 0x44, 0xa, 0x48, 0x56, 0x44, 0x0, // @271 "BSPD\nHVD"
0x45, 0x42, 0x53, 0x20, 0x54, 0x65, 0x73, 0x74, 0x0, // @280 "EBS Test"
0x41, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @289 "ASSTATE"
0x44, 0x53, 0x50, 0x45, 0x45, 0x44, 0x3a, 0x0, // @297 "DSPEED:"
0x49, 0x43, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @305 "ICSTATE"
0x49, 0x4e, 0x56, 0x4c, 0x52, 0x44, 0x59, 0x0, // @313 "INVLRDY"
0x49, 0x4e, 0x56, 0x52, 0x52, 0x44, 0x59, 0x0, // @321 "INVRRDY"
0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x0, // @329 "MISSION"
0x4d, 0x53, 0x50, 0x45, 0x45, 0x44, 0x3a, 0x0, // @337 "MSPEED:"
0x52, 0x32, 0x44, 0x50, 0x52, 0x4f, 0x47, 0x0, // @345 "R2DPROG"
0x53, 0x6b, 0x69, 0x64, 0x70, 0x61, 0x64, 0x0, // @353 "Skidpad"
0x54, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @361 "TSSTATE"
0x42, 0x52, 0x41, 0x4b, 0x45, 0x53, 0x0, // @369 "BRAKES"
0x54, 0x53, 0x56, 0x42, 0x41, 0x54, 0x0, // @376 "TSVBAT"
0x54, 0x53, 0x56, 0x56, 0x45, 0x48, 0x0, // @383 "TSVVEH"
0xa, 0xa, 0x41, 0x4d, 0x53, 0x0, // @390 "\n\nAMS"
0xa, 0xa, 0x49, 0x4d, 0x44, 0x0, // @396 "\n\nIMD"
0xa, 0xa, 0x50, 0x44, 0x55, 0x0, // @402 "\n\nPDU"
0x44, 0x41, 0x4e, 0x47, 0x3a, 0x0, // @408 "DANG:"
0x45, 0x52, 0x52, 0x4f, 0x52, 0x0, // @414 "ERROR"
0x4c, 0x56, 0x53, 0x4f, 0x43, 0x0, // @420 "LVSOC"
0x4d, 0x41, 0x4e, 0x47, 0x3a, 0x0, // @426 "MANG:"
0x50, 0x4f, 0x57, 0x45, 0x52, 0x0, // @432 "POWER"
0x53, 0x50, 0x45, 0x45, 0x44, 0x0, // @438 "SPEED"
0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @444 "TSSOC"
0x42, 0x42, 0x41, 0x4c, 0x0, // @450 "BBAL"
0x49, 0x4e, 0x49, 0x54, 0x0, // @455 "INIT"
0x4c, 0x41, 0x50, 0x53, 0x0, // @460 "LAPS"
0x54, 0x4d, 0x41, 0x58, 0x0, // @465 "TMAX"
0x54, 0x53, 0x4d, 0x53, 0x0, // @470 "TSMS"
0x54, 0x54, 0x46, 0x4c, 0x0, // @475 "TTFL"
0x54, 0x54, 0x46, 0x52, 0x0, // @480 "TTFR"
0x54, 0x54, 0x52, 0x4c, 0x0, // @485 "TTRL"
0x54, 0x54, 0x52, 0x52, 0x0, // @490 "TTRR"
0x56, 0x4d, 0x49, 0x4e, 0x0, // @495 "VMIN"
0x41, 0x43, 0x43, 0x0, // @500 "ACC"
0x49, 0x4e, 0x56, 0x0, // @504 "INV"
0x49, 0x54, 0x53, 0x0, // @508 "ITS"
0x52, 0x32, 0x44, 0x0, // @512 "R2D"
0x53, 0x43, 0x53, 0x0, // @516 "SCS"
0x53, 0x44, 0x43, 0x0, // @520 "SDC"
0x4c, 0x56, 0x0 // @524 "LV"
};
TEXT_LOCATION_FLASH_PRAGMA

View File

@ -13,6 +13,7 @@ extern touchgfx::GeneratedFont& getFont_lucon_TTF_50_4bpp();
extern touchgfx::GeneratedFont& getFont_verdanab_20_4bpp();
extern touchgfx::GeneratedFont& getFont_lucon_TTF_33_4bpp();
extern touchgfx::GeneratedFont& getFont_lucon_TTF_20_4bpp();
extern touchgfx::GeneratedFont& getFont_lucon_TTF_80_4bpp();
const touchgfx::Font* touchgfx_fonts[] = {
&(getFont_verdana_20_4bpp()),
@ -22,7 +23,8 @@ const touchgfx::Font* touchgfx_fonts[] = {
&(getFont_lucon_TTF_50_4bpp()),
&(getFont_verdanab_20_4bpp()),
&(getFont_lucon_TTF_33_4bpp()),
&(getFont_lucon_TTF_20_4bpp())
&(getFont_lucon_TTF_20_4bpp()),
&(getFont_lucon_TTF_80_4bpp())
};
extern const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[];
@ -82,6 +84,19 @@ const touchgfx::TypedText::TypedTextData typedText_database_GB[] TEXT_LOCATION_F
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 8, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 8, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 8, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 8, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
@ -112,12 +127,9 @@ const touchgfx::TypedText::TypedTextData typedText_database_GB[] TEXT_LOCATION_F
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 3, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
@ -178,6 +190,19 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 8, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 8, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 8, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 8, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
@ -208,12 +233,9 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 3, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
{ 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
@ -278,6 +300,9 @@ void resetFont(touchgfx::FontId fontId)
case 7:
touchgfx_fonts[7] = &(getFont_lucon_TTF_20_4bpp());
break;
case 8:
touchgfx_fonts[8] = &(getFont_lucon_TTF_80_4bpp());
break;
}
}
} // namespace TypedTextDatabase

View File

@ -0,0 +1,25 @@
#ifndef PROGRESSBAR_HPP
#define PROGRESSBAR_HPP
#include <gui_generated/containers/ProgressBarBase.hpp>
enum class ProgressType { PRECHARGE, R2D };
class ProgressBar : public ProgressBarBase {
public:
ProgressBar();
virtual ~ProgressBar() {}
virtual void initialize();
void update();
protected:
private:
touchgfx::Unicode::UnicodeChar r2dProgBuffer[16];
touchgfx::Unicode::UnicodeChar socBuffer[4];
void setProgress(bool active, ProgressType type, float progress);
};
#endif // PROGRESSBAR_HPP

View File

@ -3,15 +3,11 @@
#include "gui/common/NamedField.hpp"
#include "gui/containers/DriverViewFieldSelection.hpp"
#include "touchgfx/Unicode.hpp"
#include "touchgfx/containers/scrollers/DrawableList.hpp"
#include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui_generated/driverview_screen/DriverViewViewBase.hpp>
#include "vehicle_state.h"
enum class DriverViewProgressType { PRECHARGE, R2D };
class DriverViewView : public DriverViewViewBase {
public:
DriverViewView();
@ -28,7 +24,7 @@ public:
void setTemps(const Temperatures &temps);
void setTSSoC(uint8_t soc);
void setProgress(bool active, DriverViewProgressType type, float progress);
void updateProgress();
void showAMSError();
void clearErrorPopup();
@ -53,7 +49,6 @@ private:
size_t selectedFieldIndex;
DataFieldType fieldTypes[NUM_FIELDS];
touchgfx::Unicode::UnicodeChar r2dProgBuffer[16];
touchgfx::Unicode::UnicodeChar socBuffer[4];
};

View File

@ -0,0 +1,39 @@
#ifndef ENDURANCEPRESENTER_HPP
#define ENDURANCEPRESENTER_HPP
#include <gui/model/ModelListener.hpp>
#include <mvp/Presenter.hpp>
using namespace touchgfx;
class EnduranceView;
class EndurancePresenter : public touchgfx::Presenter, public ModelListener {
public:
EndurancePresenter(EnduranceView &v);
/**
* The activate function is called automatically when this screen is "switched
* in" (ie. made active). Initialization logic can be placed here.
*/
virtual void activate() override;
/**
* The deactivate function is called automatically when this screen is
* "switched out" (ie. made inactive). Teardown functionality can be placed
* here.
*/
virtual void deactivate() override;
virtual ~EndurancePresenter() {}
void vehicleStateUpdated() override;
void nextScreen() override;
private:
EndurancePresenter();
EnduranceView &view;
};
#endif // ENDURANCEPRESENTER_HPP

View File

@ -0,0 +1,79 @@
#ifndef ENDURANCEVIEW_HPP
#define ENDURANCEVIEW_HPP
#include "touchgfx/Unicode.hpp"
#include "touchgfx/widgets/BoxWithBorder.hpp"
#include "touchgfx/widgets/TextAreaWithWildcard.hpp"
#include <cstddef>
#include <gui/endurance_screen/EndurancePresenter.hpp>
#include <gui_generated/endurance_screen/EnduranceViewBase.hpp>
class BatDelta {
public:
BatDelta(touchgfx::BoxWithBorder &box,
touchgfx::TextAreaWithOneWildcard &field);
void setBox(touchgfx::BoxWithBorder &box);
void setField(touchgfx::TextAreaWithOneWildcard &field);
void setDelta(float delta);
protected:
touchgfx::BoxWithBorder &box;
touchgfx::TextAreaWithOneWildcard &field;
touchgfx::Unicode::UnicodeChar buffer[16];
int value;
};
class ValueBuffer {
public:
ValueBuffer(touchgfx::TextAreaWithOneWildcard &field, size_t intDigits,
size_t decimalDigits);
void setField(touchgfx::TextAreaWithOneWildcard &field);
void setIntValue(int value);
void setFloatValue(float value);
protected:
touchgfx::TextAreaWithOneWildcard &field;
touchgfx::Unicode::UnicodeChar buffer[16];
size_t intDigits;
size_t decimalDigits;
union {
int i;
float f;
} value;
};
class EnduranceView : public EnduranceViewBase {
public:
EnduranceView();
virtual ~EnduranceView() {}
virtual void setupScreen() override;
virtual void tearDownScreen() override;
void updateBatDelta();
void updateDetails();
void updateProgress();
void decreasePowerLimit() override;
void increasePowerLimit() override;
void decreaseSpeedLimit() override;
void increaseSpeedLimit() override;
protected:
BatDelta lastLapDelta;
BatDelta overallDelta;
ValueBuffer plimBuffer;
ValueBuffer slimBuffer;
ValueBuffer socBuffer;
ValueBuffer tbatBuffer;
bool limitsChangable();
};
#endif // ENDURANCEVIEW_HPP

View File

@ -0,0 +1,61 @@
#include "gui/common/NamedField.hpp"
#include <gui/containers/ProgressBar.hpp>
ProgressBar::ProgressBar() {}
void ProgressBar::initialize() { ProgressBarBase::initialize(); }
void ProgressBar::update() {
if (vehicle_state.ts_state == TS_PRECHARGE) {
float progress = 0;
if (vehicle_state.ts_voltage_bat != 0) {
progress =
vehicle_state.ts_voltage_veh / vehicle_state.ts_voltage_bat * 100;
}
setProgress(true, ProgressType::PRECHARGE, progress);
} else if (vehicle_state.r2d_progress > R2D_TSACTIVE &&
vehicle_state.r2d_progress < R2D_INIT_SUCCESS) {
setProgress(true, ProgressType::R2D, vehicle_state.r2d_progress);
} else {
setProgress(false, ProgressType::PRECHARGE, 0);
}
}
void ProgressBar::setProgress(bool active, ProgressType type, float progress) {
if (active) {
switch (type) {
case ProgressType::PRECHARGE:
prechargeLabel.setVisible(true);
r2dLabel.setVisible(false);
r2dProgressLabel.setVisible(false);
progressBar.setValue(progress);
break;
case ProgressType::R2D:
const char *progText = static_cast<const char *>(get_r2dprog_text());
touchgfx::Unicode::strncpy(r2dProgBuffer, progText,
sizeof(r2dProgBuffer) /
sizeof(*r2dProgBuffer));
r2dProgressLabel.setWildcard(r2dProgBuffer);
r2dProgressLabel.setVisible(true);
r2dLabel.setVisible(true);
prechargeLabel.setVisible(false);
progress = progress - R2D_TSACTIVE;
progressBar.setValue(progress * 100 / 5);
break;
}
prechargeLabel.invalidate();
r2dProgressLabel.invalidate();
r2dLabel.invalidate();
progressBar.setVisible(true);
progressBar.invalidate();
} else if (progressBar.isVisible()) {
prechargeLabel.setVisible(false);
prechargeLabel.invalidate();
r2dLabel.setVisible(false);
r2dLabel.invalidate();
r2dProgressLabel.setVisible(false);
r2dProgressLabel.invalidate();
progressBar.setVisible(false);
progressBar.invalidate();
}
}

View File

@ -2,6 +2,7 @@
#include <gui/driverview_screen/DriverViewView.hpp>
#include "gui/common/NamedField.hpp"
#include "gui/containers/ProgressBar.hpp"
constexpr int32_t SHOW_ERRORS_FOR = 10000; // ms
@ -24,7 +25,7 @@ void DriverViewPresenter::deactivate() {}
void DriverViewPresenter::vehicleStateUpdated() {
view.setTemps(vehicle_state.temps);
view.setTSSoC(vehicle_state.soc_ts);
updateProgress();
view.updateProgress();
updateErrorPopup();
view.updateFieldValues();
@ -41,23 +42,6 @@ void DriverViewPresenter::setFieldType(size_t i, DataFieldType type) {
view.setFieldType(i, type);
}
void DriverViewPresenter::updateProgress() {
if (vehicle_state.ts_state == TS_PRECHARGE) {
float progress = 0;
if (vehicle_state.ts_voltage_bat != 0) {
progress =
vehicle_state.ts_voltage_veh / vehicle_state.ts_voltage_bat * 100;
}
view.setProgress(true, DriverViewProgressType::PRECHARGE, progress);
} else if (vehicle_state.r2d_progress > R2D_TSACTIVE &&
vehicle_state.r2d_progress < R2D_INIT_SUCCESS) {
view.setProgress(true, DriverViewProgressType::R2D,
vehicle_state.r2d_progress);
} else {
view.setProgress(false, DriverViewProgressType::PRECHARGE, 0);
}
}
void DriverViewPresenter::updateErrorPopup() {
static uint32_t last_error = 0;
if (vehicle_state.ts_state == TS_ERROR) {

View File

@ -1,8 +1,8 @@
#include "gui/common/NamedField.hpp"
#include "gui/containers/DriverViewField.hpp"
#include "gui/containers/DriverViewStatusItem.hpp"
#include "gui/containers/ProgressBar.hpp"
#include "gui/driverview_screen/DriverViewPresenter.hpp"
#include "texts/TextKeysAndLanguages.hpp"
#include "touchgfx/Callback.hpp"
#include "touchgfx/Drawable.hpp"
#include "touchgfx/Unicode.hpp"
@ -96,45 +96,7 @@ void DriverViewView::setTSSoC(uint8_t value) {
socLabel.invalidate();
}
void DriverViewView::setProgress(bool active, DriverViewProgressType type,
float progress) {
if (active) {
switch (type) {
case DriverViewProgressType::PRECHARGE:
prechargeLabel.setVisible(true);
r2dLabel.setVisible(false);
r2dProgressLabel.setVisible(false);
progressBar.setValue(progress);
break;
case DriverViewProgressType::R2D:
const char *progText = static_cast<const char *>(get_r2dprog_text());
touchgfx::Unicode::strncpy(r2dProgBuffer, progText,
sizeof(r2dProgBuffer) /
sizeof(*r2dProgBuffer));
r2dProgressLabel.setWildcard(r2dProgBuffer);
r2dProgressLabel.setVisible(true);
r2dLabel.setVisible(true);
prechargeLabel.setVisible(false);
progress = progress - R2D_TSACTIVE;
progressBar.setValue(progress * 100 / 5);
break;
}
prechargeLabel.invalidate();
r2dProgressLabel.invalidate();
r2dLabel.invalidate();
progressBar.setVisible(true);
progressBar.invalidate();
} else if (progressBar.isVisible()) {
prechargeLabel.setVisible(false);
prechargeLabel.invalidate();
r2dLabel.setVisible(false);
r2dLabel.invalidate();
r2dProgressLabel.setVisible(false);
r2dProgressLabel.invalidate();
progressBar.setVisible(false);
progressBar.invalidate();
}
}
void DriverViewView::updateProgress() { progressBar.update(); }
void DriverViewView::showAMSError() {
errorPopup.setVisible(true);

View File

@ -0,0 +1,20 @@
#include "gui/common/FrontendApplication.hpp"
#include "touchgfx/Application.hpp"
#include <gui/endurance_screen/EndurancePresenter.hpp>
#include <gui/endurance_screen/EnduranceView.hpp>
EndurancePresenter::EndurancePresenter(EnduranceView &v) : view(v) {}
void EndurancePresenter::activate() {}
void EndurancePresenter::deactivate() {}
void EndurancePresenter::vehicleStateUpdated() {
view.updateBatDelta();
view.updateDetails();
}
void EndurancePresenter::nextScreen() {
static_cast<FrontendApplication *>(Application::getInstance())
->gotoDriverViewScreenNoTransition();
}

View File

@ -0,0 +1,174 @@
#include "main.h"
#include "touchgfx/Color.hpp"
#include "touchgfx/Unicode.hpp"
#include "vehicle_state.h"
#include <climits>
#include <cmath>
#include <gui/endurance_screen/EnduranceView.hpp>
#ifndef SIMULATOR
#include "stm32h7xx_hal_gpio.h"
#endif
EnduranceView::EnduranceView()
: lastLapDelta(lastLapBox, lastLapBat),
overallDelta(overallBox, overallBat), plimBuffer(powerLimit, 2, 0),
slimBuffer(speedLimit, 2, 0), socBuffer(soc, 3, 0),
tbatBuffer(batTemp, 2, 1) {}
void EnduranceView::setupScreen() {
EnduranceViewBase::setupScreen();
lastLapDelta.setField(lastLapBat);
lastLapDelta.setBox(lastLapBox);
overallDelta.setField(overallBat);
overallDelta.setBox(overallBox);
plimBuffer.setField(powerLimit);
slimBuffer.setField(speedLimit);
socBuffer.setField(soc);
tbatBuffer.setField(batTemp);
}
void EnduranceView::tearDownScreen() { EnduranceViewBase::tearDownScreen(); }
void EnduranceView::updateBatDelta() {
lastLapDelta.setDelta(vehicle_state.bat_delta_last);
overallDelta.setDelta(vehicle_state.bat_delta_overall);
}
void EnduranceView::updateDetails() {
plimBuffer.setIntValue(vehicle_state.power_limit);
slimBuffer.setIntValue(vehicle_state.speed_limit);
socBuffer.setIntValue(vehicle_state.soc_ts);
tbatBuffer.setFloatValue(vehicle_state.max_cell_temp);
}
void EnduranceView::updateProgress() { progressBar.update(); }
void EnduranceView::decreasePowerLimit() {
if (!limitsChangable()) {
return;
}
if (wishlist.power_limit > 15) {
wishlist.power_limit--;
}
}
void EnduranceView::increasePowerLimit() {
if (!limitsChangable()) {
return;
}
if (wishlist.power_limit < 40) {
wishlist.power_limit++;
}
}
void EnduranceView::decreaseSpeedLimit() {
if (!limitsChangable()) {
return;
}
if (wishlist.speed_limit > 40) {
wishlist.speed_limit--;
}
}
void EnduranceView::increaseSpeedLimit() {
if (!limitsChangable()) {
return;
}
if (wishlist.speed_limit < 100) {
wishlist.speed_limit++;
}
}
bool EnduranceView::limitsChangable() {
#ifdef SIMULATOR
return true;
#else
return HAL_GPIO_ReadPin(BTN3_GPIO_Port, BTN3_Pin) == GPIO_PIN_SET;
#endif
}
BatDelta::BatDelta(touchgfx::BoxWithBorder &box,
touchgfx::TextAreaWithOneWildcard &field)
: box(box), field(field), value(INT_MIN) {}
void BatDelta::setField(touchgfx::TextAreaWithOneWildcard &field) {
this->field = field;
}
void BatDelta::setBox(touchgfx::BoxWithBorder &box) { this->box = box; }
void BatDelta::setDelta(float delta) {
int deltaRounded = std::round(delta);
if (deltaRounded == value) {
return;
}
value = deltaRounded;
touchgfx::Unicode::snprintf(buffer, sizeof(buffer) / sizeof(*buffer), "%+3d",
value);
field.setWildcard(buffer);
field.invalidate();
if (value > 10) {
box.setColor(touchgfx::Color::getColorFromRGB(0xa8, 0x08, 0x08));
} else if (value > 5) {
box.setColor(touchgfx::Color::getColorFromRGB(0xc7, 0x71, 0x08));
} else if (value > 0) {
box.setColor(touchgfx::Color::getColorFromRGB(0xdb, 0xb2, 0x0b));
} else if (value > -5) {
box.setColor(touchgfx::Color::getColorFromRGB(0x80, 0xba, 0x14));
} else if (value > -10) {
box.setColor(touchgfx::Color::getColorFromRGB(0x09, 0x96, 0x3b));
} else {
box.setColor(touchgfx::Color::getColorFromRGB(0x05, 0x77, 0xa8));
}
box.invalidate();
}
ValueBuffer::ValueBuffer(touchgfx::TextAreaWithOneWildcard &field,
size_t intDigits, size_t decimalDigits)
: field(field), intDigits(intDigits), decimalDigits(decimalDigits) {
value.f = NAN;
}
void ValueBuffer::setField(touchgfx::TextAreaWithOneWildcard &field) {
this->field = field;
}
void ValueBuffer::setIntValue(int value) {
if (value == this->value.i) {
return;
}
this->value.i = value;
touchgfx::Unicode::snprintf(buffer, sizeof(buffer) / sizeof(*buffer), "%*d",
static_cast<int>(intDigits), value);
field.setWildcard(buffer);
field.invalidate();
}
void ValueBuffer::setFloatValue(float value) {
if (value == this->value.f) {
return;
}
this->value.f = value;
size_t width = intDigits;
if (decimalDigits > 0) {
width += 1 + decimalDigits; // 1 for the decimal point
}
float params[3] = {static_cast<float>(width),
static_cast<float>(decimalDigits), value};
touchgfx::Unicode::snprintfFloats(buffer, sizeof(buffer) / sizeof(*buffer),
"%*.*f", params);
field.setWildcard(buffer);
field.invalidate();
}

View File

@ -27,7 +27,7 @@ void MissionSelectPresenter::vehicleStateUpdated() {
// Do nothing
break;
case MISSION_MANUAL:
app->gotoDriverViewScreenNoTransition();
app->gotoEnduranceScreenNoTransition();
break;
default:
app->gotoAMIScreenNoTransition();
@ -39,7 +39,7 @@ void MissionSelectPresenter::nextScreen() {
static_cast<FrontendApplication *>(FrontendApplication::getInstance());
if (app->getBackToMissionSelect()) {
if (vehicle_state.active_mission == MISSION_MANUAL) {
app->gotoDriverViewScreenNoTransition();
app->gotoEnduranceScreenNoTransition();
} else {
app->gotoAMIScreenNoTransition();
}

View File

@ -4,7 +4,56 @@
Model::Model() : modelListener(0) {}
#ifdef SIMULATOR
void Model::tick() { modelListener->vehicleStateUpdated(); }
void bounce(float &value, bool &rising, float step, float lower, float upper) {
if (rising) {
value += step;
if (value > upper) {
value = upper;
rising = false;
}
} else {
value -= step;
if (value < lower) {
value = lower;
rising = true;
}
}
}
void Model::tick() {
static float last_lap_delta = 0;
static bool lap_delta_rising = true;
static float overall_delta = 0;
static bool overall_delta_rising = false;
static float power_limit = 20;
static bool power_limit_rising = false;
static float speed_limit = 70;
static bool speed_limit_rising = true;
static float soc = 100;
static bool soc_rising = false;
static float bat_temp = 13;
static bool bat_temp_rising = true;
static int iter = 0;
if (iter++ % 5 != 0) {
return;
}
bounce(last_lap_delta, lap_delta_rising, 0.2, -12, 12);
bounce(overall_delta, overall_delta_rising, 0.1, -12, 12);
bounce(power_limit, power_limit_rising, 0.1, 5, 30);
bounce(speed_limit, speed_limit_rising, 0.2, 50, 100);
bounce(soc, soc_rising, 0.5, 0, 100);
bounce(bat_temp, bat_temp_rising, 0.2, 10, 59);
vehicle_state.bat_delta_last = last_lap_delta;
vehicle_state.bat_delta_overall = overall_delta;
vehicle_state.power_limit = power_limit;
vehicle_state.speed_limit = speed_limit;
vehicle_state.soc_ts = soc;
vehicle_state.max_cell_temp = bat_temp;
vehicle_state.active_mission = MISSION_MANUAL;
modelListener->vehicleStateUpdated();
}
#else
#include "main.h"

View File

@ -204,6 +204,18 @@
"ScreenTransitionType": "ScreenTransitionNone",
"ActionComponent": "SDC"
}
},
{
"InteractionName": "DummyChangeEnduranceView",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 249
},
"Action": {
"Type": "ActionGotoScreen",
"ScreenTransitionType": "ScreenTransitionNone",
"ActionComponent": "Endurance"
}
}
]
},
@ -248,7 +260,7 @@
"X": 273,
"Y": 103,
"Width": 84,
"Height": 25,
"Height": 24,
"TextId": "__SingleUse_3MDX",
"TextRotation": "0",
"Color": {
@ -264,7 +276,7 @@
"X": 273,
"Y": 135,
"Width": 85,
"Height": 25,
"Height": 24,
"TextId": "__SingleUse_JFR7",
"TextRotation": "0",
"Color": {
@ -344,7 +356,7 @@
"X": 273,
"Y": 198,
"Width": 129,
"Height": 25,
"Height": 24,
"TextId": "__SingleUse_590R",
"TextRotation": "0",
"Color": {
@ -360,7 +372,7 @@
"X": 273,
"Y": 166,
"Width": 128,
"Height": 25,
"Height": 24,
"TextId": "__SingleUse_Z78U",
"TextRotation": "0",
"Color": {
@ -664,7 +676,7 @@
"X": 68,
"Y": 247,
"Width": 255,
"Height": 25,
"Height": 24,
"TextId": "__SingleUse_0L75",
"TextRotation": "0",
"Color": {
@ -680,7 +692,7 @@
"X": 68,
"Y": 215,
"Width": 273,
"Height": 25,
"Height": 24,
"TextId": "__SingleUse_GA13",
"TextRotation": "0",
"Color": {
@ -760,7 +772,7 @@
"X": 68,
"Y": 184,
"Width": 259,
"Height": 25,
"Height": 24,
"TextId": "__SingleUse_OOU3",
"TextRotation": "0",
"Color": {
@ -776,7 +788,7 @@
"X": 68,
"Y": 152,
"Width": 256,
"Height": 25,
"Height": 24,
"TextId": "__SingleUse_2FPP",
"TextRotation": "0",
"Color": {
@ -1100,70 +1112,11 @@
]
},
{
"Type": "BoxProgress",
"Type": "CustomContainerInstance",
"Name": "progressBar",
"Width": 456,
"Height": 33,
"Visible": false,
"Color": {
"Red": 99,
"Green": 186
},
"Direction": "Right",
"FileNameBackground": "prog_horiz_bg.png",
"IndicatorPositionWidth": 480,
"IndicatorPositionHeight": 55,
"ProgressRangeMax": 100
},
{
"Type": "TextArea",
"Name": "prechargeLabel",
"X": 95,
"Y": -2,
"Width": 269,
"Height": 37,
"Visible": false,
"TextId": "__SingleUse_HMH2",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"AutoSize": true
},
{
"Type": "TextArea",
"Name": "r2dLabel",
"X": 70,
"Y": -2,
"Width": 317,
"Height": 37,
"Visible": false,
"TextId": "__SingleUse_NGUK",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
}
},
{
"Type": "TextArea",
"Name": "r2dProgressLabel",
"X": 168,
"Y": -2,
"Width": 219,
"Height": 37,
"Visible": false,
"TextId": "__SingleUse_J5UH",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
"CustomContainerDefinitionName": "ProgressBar"
}
]
},
@ -1627,6 +1580,331 @@
}
],
"Interactions": []
},
{
"Name": "Endurance",
"Components": [
{
"Type": "Container",
"Name": "detailContainer",
"X": 12,
"Y": 187,
"Width": 456,
"Height": 118,
"Components": [
{
"Type": "BoxWithBorder",
"Name": "boxWithBorder2",
"Width": 152,
"Height": 118,
"BorderColor": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"BorderSize": 3
},
{
"Type": "BoxWithBorder",
"Name": "boxWithBorder2_1",
"X": 304,
"Width": 152,
"Height": 118,
"BorderColor": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"BorderSize": 3
},
{
"Type": "BoxWithBorder",
"Name": "boxWithBorder3",
"X": 152,
"Width": 152,
"Height": 59,
"BorderColor": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"BorderSize": 3
},
{
"Type": "BoxWithBorder",
"Name": "boxWithBorder3_1",
"X": 152,
"Y": 59,
"Width": 152,
"Height": 59,
"BorderColor": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"BorderSize": 3
},
{
"Type": "TextArea",
"Name": "textArea3",
"X": 27,
"Y": 2,
"Width": 99,
"Height": 25,
"TextId": "__SingleUse_QAZ3",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"AutoSize": true
},
{
"Type": "TextArea",
"Name": "textArea3_1",
"X": 329,
"Y": 2,
"Width": 102,
"Height": 25,
"TextId": "__SingleUse_1F9T",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"AutoSize": true
},
{
"Type": "TextArea",
"Name": "powerLimit",
"X": 28,
"Y": 20,
"Width": 96,
"Height": 92,
"TextId": "__SingleUse_4X8X",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
},
{
"Type": "TextArea",
"Name": "speedLimit",
"X": 308,
"Y": 20,
"Width": 144,
"Height": 92,
"TextId": "__SingleUse_DONW",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
},
{
"Type": "TextArea",
"Name": "soc",
"X": 168,
"Y": -2,
"Width": 120,
"Height": 58,
"TextId": "__SingleUse_OP6C",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
},
{
"Type": "TextArea",
"Name": "batTemp",
"X": 157,
"Y": 57,
"Width": 150,
"Height": 58,
"TextId": "__SingleUse_B2Q6",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
}
]
},
{
"Type": "Container",
"Name": "overallContainer",
"X": 248,
"Y": 15,
"Width": 220,
"Height": 160,
"Components": [
{
"Type": "BoxWithBorder",
"Name": "overallBox",
"Width": 220,
"Height": 160,
"BorderColor": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"BorderSize": 3
},
{
"Type": "TextArea",
"Name": "textArea1_1",
"X": 9,
"Y": 7,
"Width": 203,
"Height": 24,
"TextId": "__SingleUse_DJ62",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
}
},
{
"Type": "TextArea",
"Name": "overallBat",
"X": 14,
"Y": 40,
"Width": 192,
"Height": 92,
"TextId": "__SingleUse_FPXE",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
}
]
},
{
"Type": "Container",
"Name": "lastLapContainer",
"X": 12,
"Y": 15,
"Width": 220,
"Height": 160,
"Components": [
{
"Type": "BoxWithBorder",
"Name": "lastLapBox",
"Width": 220,
"Height": 160,
"BorderColor": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"BorderSize": 3
},
{
"Type": "TextArea",
"Name": "textArea1",
"X": 8,
"Y": 7,
"Width": 203,
"Height": 25,
"TextId": "__SingleUse_5W6Y",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"AutoSize": true
},
{
"Type": "TextArea",
"Name": "lastLapBat",
"X": 14,
"Y": 40,
"Width": 192,
"Height": 92,
"TextId": "__SingleUse_51AZ",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
}
]
},
{
"Type": "CustomContainerInstance",
"Name": "progressBar",
"X": 12,
"Y": 15,
"Width": 456,
"Height": 33,
"CustomContainerDefinitionName": "ProgressBar"
}
],
"Interactions": [
{
"InteractionName": "DecreasePLim",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 104
},
"Action": {
"Type": "ActionCustom",
"FunctionName": "decreasePowerLimit"
}
},
{
"InteractionName": "IncreasePLim",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 108
},
"Action": {
"Type": "ActionCustom",
"FunctionName": "increasePowerLimit"
}
},
{
"InteractionName": "DecreaseSLim",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 107
},
"Action": {
"Type": "ActionCustom",
"FunctionName": "decreaseSpeedLimit"
}
},
{
"InteractionName": "IncreaseSLim",
"Trigger": {
"Type": "TriggerPhysicalButtonClicked",
"ButtonKey": 106
},
"Action": {
"Type": "ActionCustom",
"FunctionName": "increaseSpeedLimit"
}
}
]
}
],
"CustomContainerDefinitions": [
@ -2107,6 +2385,82 @@
}
],
"Interactions": []
},
{
"Name": "ProgressBar",
"X": -80,
"Y": 80,
"Width": 456,
"Height": 33,
"Components": [
{
"Type": "TextArea",
"Name": "r2dProgressLabel",
"X": 168,
"Y": -2,
"Width": 219,
"Height": 37,
"Visible": false,
"TextId": "__SingleUse_6EXA",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"Wildcard1": {}
},
{
"Type": "TextArea",
"Name": "r2dLabel",
"X": 70,
"Y": -2,
"Width": 317,
"Height": 37,
"Visible": false,
"TextId": "__SingleUse_570K",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
}
},
{
"Type": "TextArea",
"Name": "prechargeLabel",
"X": 95,
"Y": -2,
"Width": 269,
"Height": 37,
"Visible": false,
"TextId": "__SingleUse_G2S2",
"TextRotation": "0",
"Color": {
"Red": 255,
"Green": 255,
"Blue": 255
},
"AutoSize": true
},
{
"Type": "BoxProgress",
"Name": "progressBar",
"Width": 456,
"Height": 33,
"Visible": false,
"Color": {
"Red": 99,
"Green": 186
},
"Direction": "Right",
"FileNameBackground": "prog_horiz_bg.png",
"IndicatorPositionWidth": 480,
"IndicatorPositionHeight": 55,
"ProgressRangeMax": 100
}
],
"Interactions": []
}
],
"Name": "SteeringWheel",

View File

@ -6,7 +6,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file

View File

@ -7,7 +7,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file

View File

@ -6,7 +6,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file

View File

@ -6,7 +6,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file

View File

@ -6,7 +6,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file

View File

@ -6,7 +6,7 @@
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* Copyright (c) 2024 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file

View File

@ -36,7 +36,7 @@ FDCAN1.NominalTimeSeg1=63
FDCAN1.NominalTimeSeg2=16
FDCAN1.RxFifo0ElmtsNbr=16
FDCAN1.StdFiltersNbr=32
FDCAN1.TxFifoQueueElmtsNbr=1
FDCAN1.TxFifoQueueElmtsNbr=32
File.Version=6
GPIO.groupedBy=Show All
JPEG.IPParameters=JPEG_RGB_FORMAT
@ -152,8 +152,8 @@ Mcu.Pin7=PF2
Mcu.Pin70=VP_TIM1_VS_ClockSourceINT
Mcu.Pin71=VP_TIM2_VS_ClockSourceINT
Mcu.Pin72=VP_TIM17_VS_ClockSourceINT
Mcu.Pin73=VP_STMicroelectronics.X-CUBE-AZRTOS-H7_VS_RTOSJjThreadX_6.1.12_3.0.0
Mcu.Pin74=VP_STMicroelectronics.X-CUBE-TOUCHGFX_VS_GraphicsJjApplication_4.22.0
Mcu.Pin73=VP_STMicroelectronics.X-CUBE-TOUCHGFX_VS_GraphicsJjApplication_4.22.0
Mcu.Pin74=VP_STMicroelectronics.X-CUBE-AZRTOS-H7_VS_RTOSJjThreadX_6.1.12_3.0.0
Mcu.Pin8=PF3
Mcu.Pin9=PF4
Mcu.PinsNb=75
@ -448,7 +448,7 @@ ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_FDCAN1_Init-FDCAN1-false-HAL-true,5-MX_LTDC_Init-LTDC-false-HAL-true,6-MX_JPEG_Init-JPEG-false-HAL-true,7-MX_OCTOSPI1_Init-OCTOSPI1-false-HAL-true,8-MX_SPI3_Init-SPI3-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_TIM2_Init-TIM2-false-HAL-true,11-MX_TIM4_Init-TIM4-false-HAL-true,12-MX_CRC_Init-CRC-false-HAL-true,13-MX_TIM17_Init-TIM17-false-HAL-true,14-MX_DMA2D_Init-DMA2D-false-HAL-true,16-MX_TouchGFX_Init-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.2-false-HAL-false,17-MX_TouchGFX_Process-STMicroelectronics.X-CUBE-TOUCHGFX.4.21.2-false-HAL-false,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_FDCAN1_Init-FDCAN1-false-HAL-true,5-MX_LTDC_Init-LTDC-false-HAL-true,6-MX_JPEG_Init-JPEG-false-HAL-true,7-MX_OCTOSPI1_Init-OCTOSPI1-false-HAL-true,8-MX_SPI3_Init-SPI3-false-HAL-true,9-MX_TIM1_Init-TIM1-false-HAL-true,10-MX_TIM2_Init-TIM2-false-HAL-true,11-MX_TIM4_Init-TIM4-false-HAL-true,12-MX_CRC_Init-CRC-false-HAL-true,13-MX_TIM17_Init-TIM17-false-HAL-true,14-MX_DMA2D_Init-DMA2D-false-HAL-true,15-MX_TouchGFX_Init-STMicroelectronics.X-CUBE-TOUCHGFX.4.22.0-false-HAL-false,16-MX_TouchGFX_Process-STMicroelectronics.X-CUBE-TOUCHGFX.4.22.0-false-HAL-false,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
RCC.ADCFreq_Value=2000000
RCC.AHB12Freq_Value=160000000
RCC.AHB4Freq_Value=160000000