Compare commits
	
		
			8 Commits
		
	
	
		
			5fb5d271b1
			...
			ft23
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8fbf06c08b | |||
| 738e15e963 | |||
| afd4688c97 | |||
| 4c2c277fef | |||
| 0076387f21 | |||
| f0db650c30 | |||
| cb2f55be1b | |||
| 5a66f9bc54 | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -9,3 +9,4 @@ TouchGFX/build
 | 
				
			|||||||
/TouchGFX/*_backup.touchgfx
 | 
					/TouchGFX/*_backup.touchgfx
 | 
				
			||||||
/steering-wheel.ioc_bkp
 | 
					/steering-wheel.ioc_bkp
 | 
				
			||||||
/STM32Make.make
 | 
					/STM32Make.make
 | 
				
			||||||
 | 
					/.stm32env
 | 
				
			||||||
 | 
				
			|||||||
@ -10,20 +10,39 @@ extern "C" {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "util.h"
 | 
					#include "util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CountedEnum(ParamType, size_t, PF_BBAL, PF_SLIPREF, PF_MUMAX, PF_ASRP, PF_ASRON,
 | 
					CountedEnum(ParamType, size_t, PF_BBAL, PF_PLIM, PF_TORQUE, PF_SLIM,
 | 
				
			||||||
            PF_ASRI, PF_PLIM);
 | 
					            PF_APPS0_MIN, PF_APPS0_MAX, PF_APPS1_MIN, PF_APPS1_MAX, PF_TV,
 | 
				
			||||||
 | 
					            PF_TC, PF_TC_SLIPREF, PF_TC_MUMAX, PF_TC_P, PF_TC_I, PF_DRS_CLOSED,
 | 
				
			||||||
 | 
					            PF_DRS_OPEN, PF_MAP);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct {
 | 
					typedef union {
 | 
				
			||||||
 | 
					  struct {
 | 
				
			||||||
    float bbal;
 | 
					    float bbal;
 | 
				
			||||||
  float slipref;
 | 
					    float plim;
 | 
				
			||||||
  float mumax;
 | 
					    float torque;
 | 
				
			||||||
  unsigned asrp;
 | 
					    float slim;
 | 
				
			||||||
  unsigned asri;
 | 
					    float apps0_min;
 | 
				
			||||||
  unsigned asron;
 | 
					    float apps0_max;
 | 
				
			||||||
  unsigned plim;
 | 
					    float apps1_min;
 | 
				
			||||||
 | 
					    float apps1_max;
 | 
				
			||||||
 | 
					    int tv;
 | 
				
			||||||
 | 
					    int tc;
 | 
				
			||||||
 | 
					    float tc_slipref;
 | 
				
			||||||
 | 
					    float tc_mumax;
 | 
				
			||||||
 | 
					    float tc_p;
 | 
				
			||||||
 | 
					    float tc_i;
 | 
				
			||||||
 | 
					    float drs_closed;
 | 
				
			||||||
 | 
					    float drs_open;
 | 
				
			||||||
 | 
					    int map;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  // TODO: Use ParamType_COUNT somehow?
 | 
				
			||||||
 | 
					  float valuesFloat[17];
 | 
				
			||||||
 | 
					  int valuesInt[17];
 | 
				
			||||||
} Params;
 | 
					} Params;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern Params params;
 | 
					extern Params params;
 | 
				
			||||||
 | 
					// TODO: Use ParamType_COUNT somehow?
 | 
				
			||||||
 | 
					extern float param_steps[17];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void params_init();
 | 
					void params_init();
 | 
				
			||||||
void params_inc(ParamType param);
 | 
					void params_inc(ParamType param);
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,8 @@ void vehicle_thread_entry(ULONG hfdcan_addr);
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void vehicle_broadcast_buttons(GPIO_PinState *button_states);
 | 
					void vehicle_broadcast_buttons(GPIO_PinState *button_states);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void vehicle_broadcast_wishlist();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // SIMULATOR
 | 
					#endif // SIMULATOR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
				
			|||||||
@ -7,6 +7,7 @@ extern "C" {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "params.h"
 | 
					#include "params.h"
 | 
				
			||||||
#include "stw_defines.h"
 | 
					#include "stw_defines.h"
 | 
				
			||||||
 | 
					#include <stdbool.h>
 | 
				
			||||||
#include <stdint.h>
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define NUM_CONES 12
 | 
					#define NUM_CONES 12
 | 
				
			||||||
@ -112,6 +113,7 @@ typedef struct {
 | 
				
			|||||||
  int sdc_closed;
 | 
					  int sdc_closed;
 | 
				
			||||||
  int pdu_sdc_active;
 | 
					  int pdu_sdc_active;
 | 
				
			||||||
  int imd_ok;
 | 
					  int imd_ok;
 | 
				
			||||||
 | 
					  bool drs_active;
 | 
				
			||||||
  int sdcl_state[3];
 | 
					  int sdcl_state[3];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  R2DProgress r2d_progress;
 | 
					  R2DProgress r2d_progress;
 | 
				
			||||||
@ -148,6 +150,7 @@ typedef struct {
 | 
				
			|||||||
  IniChkState ini_chk_state;
 | 
					  IniChkState ini_chk_state;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  unsigned lap_count;
 | 
					  unsigned lap_count;
 | 
				
			||||||
 | 
					  unsigned lap_count_endu;
 | 
				
			||||||
  float lap_last;
 | 
					  float lap_last;
 | 
				
			||||||
  float lap_best;
 | 
					  float lap_best;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -160,6 +163,12 @@ typedef struct {
 | 
				
			|||||||
  float lv_bat_voltage;
 | 
					  float lv_bat_voltage;
 | 
				
			||||||
  int soc_lv;
 | 
					  int soc_lv;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  float bat_delta_last;
 | 
				
			||||||
 | 
					  float bat_delta_overall;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint8_t power_limit;
 | 
				
			||||||
 | 
					  uint8_t speed_limit;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  float ts_current;
 | 
					  float ts_current;
 | 
				
			||||||
  float ts_voltage_bat;
 | 
					  float ts_voltage_bat;
 | 
				
			||||||
  float ts_voltage_veh;
 | 
					  float ts_voltage_veh;
 | 
				
			||||||
@ -180,12 +189,29 @@ typedef struct {
 | 
				
			|||||||
  float measured_angle;
 | 
					  float measured_angle;
 | 
				
			||||||
  float desired_speed;
 | 
					  float desired_speed;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  float apps0_min;
 | 
				
			||||||
 | 
					  float apps0_max;
 | 
				
			||||||
 | 
					  float apps0_volt;
 | 
				
			||||||
 | 
					  float apps0_out;
 | 
				
			||||||
 | 
					  float apps1_min;
 | 
				
			||||||
 | 
					  float apps1_max;
 | 
				
			||||||
 | 
					  float apps1_volt;
 | 
				
			||||||
 | 
					  float apps1_out;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ConePosition cone_pos[NUM_CONES];
 | 
					  ConePosition cone_pos[NUM_CONES];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ParamType last_param_confirmed;
 | 
					  ParamType last_param_confirmed;
 | 
				
			||||||
} VehicleState;
 | 
					} VehicleState;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef struct {
 | 
				
			||||||
 | 
					  bool initialized;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  uint8_t power_limit;
 | 
				
			||||||
 | 
					  uint8_t speed_limit;
 | 
				
			||||||
 | 
					} DriverWishlist;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern VehicleState vehicle_state;
 | 
					extern VehicleState vehicle_state;
 | 
				
			||||||
 | 
					extern DriverWishlist wishlist;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __cplusplus
 | 
					#ifdef __cplusplus
 | 
				
			||||||
} // extern "C"
 | 
					} // extern "C"
 | 
				
			||||||
 | 
				
			|||||||
@ -80,31 +80,17 @@ void led_thread_entry(ULONG child_thread_stack_addr) {
 | 
				
			|||||||
      continue;
 | 
					      continue;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    float speed =
 | 
					    for (int i = 0; i <= 3; i++) {
 | 
				
			||||||
        (vehicle_state.speed - LED_SPEED_MIN) / (LED_SPEED_MAX - LED_SPEED_MIN);
 | 
					      int led_limit = (4 - i) * 3; // 3% per LED
 | 
				
			||||||
    float num_leds_exact = speed * N_LEDS;
 | 
					      int red = (vehicle_state.bat_delta_last >= led_limit) ? 0xFF : 0;
 | 
				
			||||||
    num_leds_exact = fmin(N_LEDS, fmax(0, num_leds_exact));
 | 
					      led_set(i, red, 0, 0);
 | 
				
			||||||
    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);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // Partially illuminate n+1th LED
 | 
					    int blue = (vehicle_state.drs_active) ? 0xFF : 0;
 | 
				
			||||||
    if (num_leds < N_LEDS) {
 | 
					    led_set(4, 0, 0, blue);
 | 
				
			||||||
      led_hsv_to_rgb(hue, 1.0f, num_leds_frac, &r, &g, &b);
 | 
					    for (int i = 5; i <= 9; i++) {
 | 
				
			||||||
      led_set(num_leds, r, g, b);
 | 
					      int led_limit = -((i - 4) * 3); // 3% per LED
 | 
				
			||||||
    }
 | 
					      int green = (vehicle_state.bat_delta_last <= led_limit) ? 0xFF : 0;
 | 
				
			||||||
    // Turn off all other LEDs
 | 
					      led_set(i, 0, green, 0);
 | 
				
			||||||
    for (int i = num_leds + 1; i < N_LEDS; i++) {
 | 
					 | 
				
			||||||
      led_set(i, 0, 0, 0);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -329,7 +329,7 @@ static void MX_FDCAN1_Init(void) {
 | 
				
			|||||||
  hfdcan1.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
 | 
					  hfdcan1.Init.RxBufferSize = FDCAN_DATA_BYTES_8;
 | 
				
			||||||
  hfdcan1.Init.TxEventsNbr = 0;
 | 
					  hfdcan1.Init.TxEventsNbr = 0;
 | 
				
			||||||
  hfdcan1.Init.TxBuffersNbr = 0;
 | 
					  hfdcan1.Init.TxBuffersNbr = 0;
 | 
				
			||||||
  hfdcan1.Init.TxFifoQueueElmtsNbr = 1;
 | 
					  hfdcan1.Init.TxFifoQueueElmtsNbr = 32;
 | 
				
			||||||
  hfdcan1.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
 | 
					  hfdcan1.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION;
 | 
				
			||||||
  hfdcan1.Init.TxElmtSize = FDCAN_DATA_BYTES_8;
 | 
					  hfdcan1.Init.TxElmtSize = FDCAN_DATA_BYTES_8;
 | 
				
			||||||
  if (HAL_FDCAN_Init(&hfdcan1) != HAL_OK) {
 | 
					  if (HAL_FDCAN_Init(&hfdcan1) != HAL_OK) {
 | 
				
			||||||
 | 
				
			|||||||
@ -3,6 +3,75 @@
 | 
				
			|||||||
#include "vehicle.h"
 | 
					#include "vehicle.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Params params = {0};
 | 
					Params params = {0};
 | 
				
			||||||
 | 
					static const float param_limits[] = {
 | 
				
			||||||
 | 
					    [PF_BBAL] = 100.0f,
 | 
				
			||||||
 | 
					    [PF_PLIM] = 120.0f,
 | 
				
			||||||
 | 
					    [PF_TORQUE] = 1500.0f,
 | 
				
			||||||
 | 
					    [PF_SLIM] = 150.0f,
 | 
				
			||||||
 | 
					    [PF_APPS0_MIN] = 5.0f,
 | 
				
			||||||
 | 
					    [PF_APPS0_MAX] = 5.0f,
 | 
				
			||||||
 | 
					    [PF_APPS1_MIN] = 5.0f,
 | 
				
			||||||
 | 
					    [PF_APPS1_MAX] = 5.0f,
 | 
				
			||||||
 | 
					    [PF_TV] = 1,
 | 
				
			||||||
 | 
					    [PF_TC] = 1,
 | 
				
			||||||
 | 
					    [PF_TC_SLIPREF] = 1.0f,
 | 
				
			||||||
 | 
					    [PF_TC_MUMAX] = 5.0f,
 | 
				
			||||||
 | 
					    [PF_TC_P] = 20.0f,
 | 
				
			||||||
 | 
					    [PF_TC_I] = 20.0f,
 | 
				
			||||||
 | 
					    [PF_DRS_CLOSED] = 1.0f,
 | 
				
			||||||
 | 
					    [PF_DRS_OPEN] = 1.0f,
 | 
				
			||||||
 | 
					    // TODO: counted enum for map?
 | 
				
			||||||
 | 
					    [PF_MAP] = 7,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					float param_steps[] = {
 | 
				
			||||||
 | 
					    [PF_BBAL] = 1,
 | 
				
			||||||
 | 
					    [PF_PLIM] = 1,
 | 
				
			||||||
 | 
					    [PF_TORQUE] = 10,
 | 
				
			||||||
 | 
					    [PF_SLIM] = 1,
 | 
				
			||||||
 | 
					    [PF_APPS0_MIN] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_APPS0_MAX] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_APPS1_MIN] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_APPS1_MAX] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_TV] = 1,
 | 
				
			||||||
 | 
					    [PF_TC] = 1,
 | 
				
			||||||
 | 
					    [PF_TC_SLIPREF] = 0.01f,
 | 
				
			||||||
 | 
					    [PF_TC_MUMAX] = 0.1f,
 | 
				
			||||||
 | 
					    [PF_TC_P] = 0.1f,
 | 
				
			||||||
 | 
					    [PF_TC_I] = 0.1f,
 | 
				
			||||||
 | 
					    [PF_DRS_CLOSED] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_DRS_OPEN] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_MAP] = 1,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					static const float param_broadcast_factors[] = {
 | 
				
			||||||
 | 
					    [PF_BBAL] = 1,
 | 
				
			||||||
 | 
					    [PF_PLIM] = 1,
 | 
				
			||||||
 | 
					    [PF_TORQUE] = 1,
 | 
				
			||||||
 | 
					    [PF_SLIM] = 1,
 | 
				
			||||||
 | 
					    [PF_APPS0_MIN] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_APPS0_MAX] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_APPS1_MIN] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_APPS1_MAX] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_TV] = 1,
 | 
				
			||||||
 | 
					    [PF_TC] = 1,
 | 
				
			||||||
 | 
					    [PF_TC_SLIPREF] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_TC_MUMAX] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_TC_P] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_TC_I] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_DRS_CLOSED] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_DRS_OPEN] = 0.001f,
 | 
				
			||||||
 | 
					    [PF_MAP] = 1,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					_Static_assert(sizeof(param_limits) / sizeof(param_limits[0]) ==
 | 
				
			||||||
 | 
					                   ParamType_COUNT,
 | 
				
			||||||
 | 
					               "Incorrect number of param limits");
 | 
				
			||||||
 | 
					_Static_assert(sizeof(param_steps) / sizeof(param_steps[0]) == ParamType_COUNT,
 | 
				
			||||||
 | 
					               "Incorrect number of param steps");
 | 
				
			||||||
 | 
					_Static_assert(sizeof(param_broadcast_factors) /
 | 
				
			||||||
 | 
					                       sizeof(param_broadcast_factors[0]) ==
 | 
				
			||||||
 | 
					                   ParamType_COUNT,
 | 
				
			||||||
 | 
					               "Incorrect number of param broadcast factors");
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void params_init() {
 | 
					void params_init() {
 | 
				
			||||||
  params.bbal = 50;
 | 
					  params.bbal = 50;
 | 
				
			||||||
@ -11,96 +80,50 @@ void params_init() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void params_inc(ParamType param) {
 | 
					void params_inc(ParamType param) {
 | 
				
			||||||
  switch (param) {
 | 
					  switch (param) {
 | 
				
			||||||
  case PF_BBAL:
 | 
					  case PF_TV:
 | 
				
			||||||
    params.bbal += 0.5f;
 | 
					  case PF_TC:
 | 
				
			||||||
    if (params.bbal > 100.0f) {
 | 
					  case PF_MAP:
 | 
				
			||||||
      params.bbal = 100.0f;
 | 
					    params.valuesInt[param] += param_steps[param];
 | 
				
			||||||
 | 
					    if (params.valuesInt[param] > param_limits[param]) {
 | 
				
			||||||
 | 
					      params.valuesInt[param] = param_limits[param];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case PF_SLIPREF:
 | 
					  default:
 | 
				
			||||||
    params.slipref += 0.01f;
 | 
					    params.valuesFloat[param] += param_steps[param];
 | 
				
			||||||
    break;
 | 
					    if (params.valuesFloat[param] > param_limits[param]) {
 | 
				
			||||||
  case PF_MUMAX:
 | 
					      params.valuesFloat[param] = param_limits[param];
 | 
				
			||||||
    params.mumax += 0.1f;
 | 
					    }
 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_ASRP:
 | 
					 | 
				
			||||||
    params.asrp++;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_ASRI:
 | 
					 | 
				
			||||||
    params.asri++;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_ASRON:
 | 
					 | 
				
			||||||
    params.asron = 1;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_PLIM:
 | 
					 | 
				
			||||||
    params.plim = (params.plim < 80) ? params.plim + 1 : 80;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void params_dec(ParamType param) {
 | 
					void params_dec(ParamType param) {
 | 
				
			||||||
  switch (param) {
 | 
					  switch (param) {
 | 
				
			||||||
  case PF_BBAL:
 | 
					  case PF_TV:
 | 
				
			||||||
    params.bbal -= 0.5f;
 | 
					  case PF_TC:
 | 
				
			||||||
    if (params.bbal < 0.0f) {
 | 
					  case PF_MAP:
 | 
				
			||||||
      params.bbal = 0.0f;
 | 
					    params.valuesInt[param] -= param_steps[param];
 | 
				
			||||||
 | 
					    if (params.valuesInt[param] < 0) {
 | 
				
			||||||
 | 
					      params.valuesInt[param] = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case PF_SLIPREF:
 | 
					  default:
 | 
				
			||||||
    if (params.slipref > 0) {
 | 
					    params.valuesFloat[param] -= param_steps[param];
 | 
				
			||||||
      params.slipref -= 0.01f;
 | 
					    if (params.valuesFloat[param] < 0) {
 | 
				
			||||||
 | 
					      params.valuesFloat[param] = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_MUMAX:
 | 
					 | 
				
			||||||
    if (params.mumax > 0) {
 | 
					 | 
				
			||||||
      params.mumax -= 0.1f;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_ASRP:
 | 
					 | 
				
			||||||
    if (params.asrp > 0) {
 | 
					 | 
				
			||||||
      params.asrp--;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_ASRI:
 | 
					 | 
				
			||||||
    if (params.asri > 0) {
 | 
					 | 
				
			||||||
      params.asri--;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_ASRON:
 | 
					 | 
				
			||||||
    params.asron = 0;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_PLIM:
 | 
					 | 
				
			||||||
    params.plim = (params.plim > 2) ? params.plim - 1 : 2;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void params_broadcast(ParamType param) {
 | 
					void params_broadcast(ParamType param) {
 | 
				
			||||||
  int32_t value;
 | 
					  int32_t value;
 | 
				
			||||||
  switch (param) {
 | 
					  switch (param) {
 | 
				
			||||||
  case PF_BBAL:
 | 
					  case PF_TV:
 | 
				
			||||||
    value = params.bbal * 10;
 | 
					  case PF_TC:
 | 
				
			||||||
    break;
 | 
					  case PF_MAP:
 | 
				
			||||||
  case PF_SLIPREF:
 | 
					    value = params.valuesInt[param] / param_broadcast_factors[param];
 | 
				
			||||||
    value = params.slipref * 100;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_MUMAX:
 | 
					 | 
				
			||||||
    value = params.mumax * 10;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_ASRP:
 | 
					 | 
				
			||||||
    value = params.asrp;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_ASRI:
 | 
					 | 
				
			||||||
    value = params.asri;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_ASRON:
 | 
					 | 
				
			||||||
    value = params.asron;
 | 
					 | 
				
			||||||
    break;
 | 
					 | 
				
			||||||
  case PF_PLIM:
 | 
					 | 
				
			||||||
    value = params.plim;
 | 
					 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  default:
 | 
					  default:
 | 
				
			||||||
    return;
 | 
					    value = params.valuesFloat[param] / param_broadcast_factors[param];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  vehicle_broadcast_param(param, value);
 | 
					  vehicle_broadcast_param(param, value);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -24,10 +24,14 @@
 | 
				
			|||||||
#define CAN_ID_CS_INTERNAL 0x108
 | 
					#define CAN_ID_CS_INTERNAL 0x108
 | 
				
			||||||
#define CAN_ID_ABX_MISC 0x109
 | 
					#define CAN_ID_ABX_MISC 0x109
 | 
				
			||||||
#define CAN_ID_ABX_HYDRAULICS 0x110
 | 
					#define CAN_ID_ABX_HYDRAULICS 0x110
 | 
				
			||||||
 | 
					#define CAN_ID_ABX_ENDURANCE 0x113
 | 
				
			||||||
 | 
					#define CAN_ID_ABX_APPS 0x114
 | 
				
			||||||
 | 
					#define CAN_ID_ABX_APPS_LIMITS 0x115
 | 
				
			||||||
#define CAN_ID_EPSC_OUT 0x321
 | 
					#define CAN_ID_EPSC_OUT 0x321
 | 
				
			||||||
#define CAN_ID_MISSION_SELECTED 0x400
 | 
					#define CAN_ID_MISSION_SELECTED 0x400
 | 
				
			||||||
#define CAN_ID_STW_BUTTONS 0x401
 | 
					#define CAN_ID_STW_BUTTONS 0x401
 | 
				
			||||||
#define CAN_ID_STW_PARAM_SET 0x402
 | 
					#define CAN_ID_STW_PARAM_SET 0x402
 | 
				
			||||||
 | 
					#define CAN_ID_STW_DRIVERWISHLIST 0x403
 | 
				
			||||||
#define CAN_ID_AS_MISSION_FB 0x410
 | 
					#define CAN_ID_AS_MISSION_FB 0x410
 | 
				
			||||||
#define CAN_ID_STW_STATUS 0x412
 | 
					#define CAN_ID_STW_STATUS 0x412
 | 
				
			||||||
#define CAN_ID_ABX_PARAM_CONFIRMED 0x413
 | 
					#define CAN_ID_ABX_PARAM_CONFIRMED 0x413
 | 
				
			||||||
@ -55,6 +59,7 @@
 | 
				
			|||||||
void vehicle_thread_entry(ULONG hfdcan_addr) {
 | 
					void vehicle_thread_entry(ULONG hfdcan_addr) {
 | 
				
			||||||
  memset(&vehicle_state, 0, sizeof(vehicle_state));
 | 
					  memset(&vehicle_state, 0, sizeof(vehicle_state));
 | 
				
			||||||
  memset(&vehicle_state.cone_pos, 0xFF, sizeof(vehicle_state.cone_pos));
 | 
					  memset(&vehicle_state.cone_pos, 0xFF, sizeof(vehicle_state.cone_pos));
 | 
				
			||||||
 | 
					  memset(&wishlist, 0, sizeof(wishlist));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ftcan_init((void *)hfdcan_addr);
 | 
					  ftcan_init((void *)hfdcan_addr);
 | 
				
			||||||
  ftcan_add_filter(CAN_ID_AMS_SLAVE_PANIC, 0x7FF);
 | 
					  ftcan_add_filter(CAN_ID_AMS_SLAVE_PANIC, 0x7FF);
 | 
				
			||||||
@ -68,7 +73,10 @@ void vehicle_thread_entry(ULONG hfdcan_addr) {
 | 
				
			|||||||
  ftcan_add_filter(CAN_ID_ABX_BRAKE_T, 0x7FF);
 | 
					  ftcan_add_filter(CAN_ID_ABX_BRAKE_T, 0x7FF);
 | 
				
			||||||
  ftcan_add_filter(CAN_ID_CS_INTERNAL, 0x7FF);
 | 
					  ftcan_add_filter(CAN_ID_CS_INTERNAL, 0x7FF);
 | 
				
			||||||
  ftcan_add_filter(CAN_ID_ABX_MISC, 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_ABX_HYDRAULICS, 0x7FF);
 | 
				
			||||||
 | 
					  ftcan_add_filter(CAN_ID_ABX_APPS, 0x7FF);
 | 
				
			||||||
 | 
					  ftcan_add_filter(CAN_ID_ABX_APPS_LIMITS, 0x7FF);
 | 
				
			||||||
  ftcan_add_filter(CAN_ID_EPSC_OUT, 0x7FF);
 | 
					  ftcan_add_filter(CAN_ID_EPSC_OUT, 0x7FF);
 | 
				
			||||||
  ftcan_add_filter(CAN_ID_AS_MISSION_FB, 0x7FF);
 | 
					  ftcan_add_filter(CAN_ID_AS_MISSION_FB, 0x7FF);
 | 
				
			||||||
  ftcan_add_filter(CAN_ID_STW_STATUS, 0x7FF);
 | 
					  ftcan_add_filter(CAN_ID_STW_STATUS, 0x7FF);
 | 
				
			||||||
@ -80,6 +88,7 @@ void vehicle_thread_entry(ULONG hfdcan_addr) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  while (1) {
 | 
					  while (1) {
 | 
				
			||||||
    tx_thread_sleep(10);
 | 
					    tx_thread_sleep(10);
 | 
				
			||||||
 | 
					    vehicle_broadcast_wishlist();
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -102,6 +111,17 @@ void vehicle_broadcast_buttons(GPIO_PinState *button_states) {
 | 
				
			|||||||
  ftcan_transmit(CAN_ID_STW_BUTTONS, &data, 1);
 | 
					  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) {
 | 
					void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
 | 
				
			||||||
  const uint8_t *ptr;
 | 
					  const uint8_t *ptr;
 | 
				
			||||||
  if ((id & CAN_ID_STW_CONES_MASK) == CAN_ID_STW_CONES_BASE) {
 | 
					  if ((id & CAN_ID_STW_CONES_MASK) == CAN_ID_STW_CONES_BASE) {
 | 
				
			||||||
@ -166,6 +186,18 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
 | 
				
			|||||||
      vehicle_state.hyd_press_b =
 | 
					      vehicle_state.hyd_press_b =
 | 
				
			||||||
          ((data[1] >> 4) | (data[2] << 4)) * CAN_ABX_DRIVER_PRESS_FACTOR;
 | 
					          ((data[1] >> 4) | (data[2] << 4)) * CAN_ABX_DRIVER_PRESS_FACTOR;
 | 
				
			||||||
      break;
 | 
					      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:
 | 
					    case CAN_ID_ABX_TIMINGS:
 | 
				
			||||||
      vehicle_state.lap_best = (data[0] | (data[1] << 8)) * 0.01f;
 | 
					      vehicle_state.lap_best = (data[0] | (data[1] << 8)) * 0.01f;
 | 
				
			||||||
      vehicle_state.lap_last = (data[2] | (data[3] << 8)) * 0.01f;
 | 
					      vehicle_state.lap_last = (data[2] | (data[3] << 8)) * 0.01f;
 | 
				
			||||||
@ -176,6 +208,18 @@ void ftcan_msg_received_cb(uint16_t id, size_t datalen, const uint8_t *data) {
 | 
				
			|||||||
      vehicle_state.temps.brake_rl = (data[4] | (data[5] << 8)) * 0.01f;
 | 
					      vehicle_state.temps.brake_rl = (data[4] | (data[5] << 8)) * 0.01f;
 | 
				
			||||||
      vehicle_state.temps.brake_rr = (data[6] | (data[7] << 8)) * 0.01f;
 | 
					      vehicle_state.temps.brake_rr = (data[6] | (data[7] << 8)) * 0.01f;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
 | 
					    case CAN_ID_ABX_APPS:
 | 
				
			||||||
 | 
					      vehicle_state.apps0_volt = (data[0] | (data[1] << 8)) * 0.001f;
 | 
				
			||||||
 | 
					      vehicle_state.apps1_volt = (data[2] | (data[3] << 8)) * 0.001f;
 | 
				
			||||||
 | 
					      vehicle_state.apps0_out = (int16_t)((data[4] | (data[5] << 8))) * 0.001f;
 | 
				
			||||||
 | 
					      vehicle_state.apps1_out = (int16_t)((data[6] | (data[7] << 8))) * 0.001f;
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					    case CAN_ID_ABX_APPS_LIMITS:
 | 
				
			||||||
 | 
					      vehicle_state.apps0_min = (data[0] | (data[1] << 8)) * 0.001f;
 | 
				
			||||||
 | 
					      vehicle_state.apps0_max = (data[2] | (data[3] << 8)) * 0.001f;
 | 
				
			||||||
 | 
					      vehicle_state.apps1_min = (data[4] | (data[5] << 8)) * 0.001f;
 | 
				
			||||||
 | 
					      vehicle_state.apps1_max = (data[6] | (data[7] << 8)) * 0.001f;
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
    case CAN_ID_CS_INTERNAL:
 | 
					    case CAN_ID_CS_INTERNAL:
 | 
				
			||||||
      vehicle_state.temps.inv_l =
 | 
					      vehicle_state.temps.inv_l =
 | 
				
			||||||
          (data[0] | (data[1] << 8)) * CAN_CS_INTERNAL_TEMP_FACTOR;
 | 
					          (data[0] | (data[1] << 8)) * CAN_CS_INTERNAL_TEMP_FACTOR;
 | 
				
			||||||
@ -225,6 +269,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_res = (data[5] >> 2) & 1;
 | 
				
			||||||
      vehicle_state.errors.err_invl = (data[5] >> 3) & 1;
 | 
					      vehicle_state.errors.err_invl = (data[5] >> 3) & 1;
 | 
				
			||||||
      vehicle_state.errors.err_invr = (data[5] >> 4) & 1;
 | 
					      vehicle_state.errors.err_invr = (data[5] >> 4) & 1;
 | 
				
			||||||
 | 
					      vehicle_state.drs_active = (data[5] >> 5) & 1;
 | 
				
			||||||
      break;
 | 
					      break;
 | 
				
			||||||
    case CAN_ID_ABX_PARAM_CONFIRMED:
 | 
					    case CAN_ID_ABX_PARAM_CONFIRMED:
 | 
				
			||||||
      vehicle_state.last_param_confirmed = data[0];
 | 
					      vehicle_state.last_param_confirmed = data[0];
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,7 @@
 | 
				
			|||||||
#include "vehicle_state.h"
 | 
					#include "vehicle_state.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VehicleState vehicle_state;
 | 
					VehicleState vehicle_state;
 | 
				
			||||||
 | 
					DriverWishlist wishlist;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const char *inichkstate_str(IniChkState state) {
 | 
					const char *inichkstate_str(IniChkState state) {
 | 
				
			||||||
  switch (vehicle_state.ini_chk_state) {
 | 
					  switch (vehicle_state.ini_chk_state) {
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										13
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile
									
									
									
									
									
								
							@ -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 \
 | 
					Middlewares/ST/threadx/common/src/txe_timer_info_get.c \
 | 
				
			||||||
TouchGFX/App/app_touchgfx.c \
 | 
					TouchGFX/App/app_touchgfx.c \
 | 
				
			||||||
Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_crc.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
 | 
				
			||||||
ASM_SOURCES =  \
 | 
					ASM_SOURCES =  \
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
  ******************************************************************************
 | 
					  ******************************************************************************
 | 
				
			||||||
  * @attention
 | 
					  * @attention
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
					  * Copyright (c) 2024 STMicroelectronics.
 | 
				
			||||||
  * All rights reserved.
 | 
					  * All rights reserved.
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
				
			|||||||
@ -8,7 +8,7 @@
 | 
				
			|||||||
  ******************************************************************************
 | 
					  ******************************************************************************
 | 
				
			||||||
  * @attention
 | 
					  * @attention
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
					  * Copyright (c) 2024 STMicroelectronics.
 | 
				
			||||||
  * All rights reserved.
 | 
					  * All rights reserved.
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
				
			|||||||
@ -171,6 +171,84 @@
 | 
				
			|||||||
      </Text>
 | 
					      </Text>
 | 
				
			||||||
    </TextGroup>
 | 
					    </TextGroup>
 | 
				
			||||||
    <TextGroup Id="Unsorted">
 | 
					    <TextGroup Id="Unsorted">
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_W4YT" Alignment="Left" TypographyId="Chinat_Small">
 | 
				
			||||||
 | 
					        <Translation Language="GB">APPS1</Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_SM6H" Alignment="Left" TypographyId="Numbers_Smaller">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_8KB4" Alignment="Left" TypographyId="Numbers_Smaller">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_P4TL" Alignment="Left" TypographyId="Numbers_Smaller">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_CBZ9" Alignment="Center" TypographyId="Chinat_Small">
 | 
				
			||||||
 | 
					        <Translation Language="GB">CUR</Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_WQXQ" Alignment="Center" TypographyId="Chinat_Small">
 | 
				
			||||||
 | 
					        <Translation Language="GB">MAX</Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_QXG5" Alignment="Center" TypographyId="Chinat_Small">
 | 
				
			||||||
 | 
					        <Translation Language="GB">MIN</Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_MBQT" Alignment="Left" TypographyId="Numbers_Smaller">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_978V" Alignment="Left" TypographyId="Numbers_Smaller">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_H8OI" Alignment="Left" TypographyId="Numbers_Smaller">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_6EKV" Alignment="Left" TypographyId="Chinat_Small">
 | 
				
			||||||
 | 
					        <Translation Language="GB">APPS0</Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_RK9Z" Alignment="Right" TypographyId="Numbers_Small">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_UBFH" Alignment="Left" TypographyId="Chinat_Large">
 | 
				
			||||||
 | 
					        <Translation Language="GB">APPS CALIBRATION</Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_6EXA" Alignment="Right" TypographyId="Chinat_Large">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></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"><value>°</Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_OP6C" Alignment="Right" TypographyId="Numbers">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value>%</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"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_4X8X" Alignment="Center" TypographyId="Numbers_Huge">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_FPXE" Alignment="Right" TypographyId="Numbers_Huge">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value>%</Translation>
 | 
				
			||||||
 | 
					      </Text>
 | 
				
			||||||
 | 
					      <Text Id="__SingleUse_51AZ" Alignment="Right" TypographyId="Numbers_Huge">
 | 
				
			||||||
 | 
					        <Translation Language="GB"><value>%</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">
 | 
					      <Text Id="__SingleUse_C17G" Alignment="Left" TypographyId="Chinat_Small">
 | 
				
			||||||
        <Translation Language="GB">AS <value></Translation>
 | 
					        <Translation Language="GB">AS <value></Translation>
 | 
				
			||||||
      </Text>
 | 
					      </Text>
 | 
				
			||||||
@ -261,12 +339,6 @@
 | 
				
			|||||||
      <Text Id="__SingleUse_1NKF" Alignment="Center" TypographyId="Chinat_Huge">
 | 
					      <Text Id="__SingleUse_1NKF" Alignment="Center" TypographyId="Chinat_Huge">
 | 
				
			||||||
        <Translation Language="GB"></Translation>
 | 
					        <Translation Language="GB"></Translation>
 | 
				
			||||||
      </Text>
 | 
					      </Text>
 | 
				
			||||||
      <Text Id="__SingleUse_J5UH" Alignment="Right" TypographyId="Chinat_Large">
 | 
					 | 
				
			||||||
        <Translation Language="GB"><value></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">
 | 
					      <Text Id="__SingleUse_4E84" Alignment="Right" TypographyId="Numbers">
 | 
				
			||||||
        <Translation Language="GB"><value></Translation>
 | 
					        <Translation Language="GB"><value></Translation>
 | 
				
			||||||
      </Text>
 | 
					      </Text>
 | 
				
			||||||
@ -276,9 +348,6 @@
 | 
				
			|||||||
      <Text Id="__SingleUse_RWCE" Alignment="Center" TypographyId="Chinat_Large">
 | 
					      <Text Id="__SingleUse_RWCE" Alignment="Center" TypographyId="Chinat_Large">
 | 
				
			||||||
        <Translation Language="GB">PARAMETERS</Translation>
 | 
					        <Translation Language="GB">PARAMETERS</Translation>
 | 
				
			||||||
      </Text>
 | 
					      </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">
 | 
					      <Text Id="__SingleUse_PHFD" Alignment="Center" TypographyId="Chinat_Small">
 | 
				
			||||||
        <Translation Language="GB"><value>%</Translation>
 | 
					        <Translation Language="GB"><value>%</Translation>
 | 
				
			||||||
      </Text>
 | 
					      </Text>
 | 
				
			||||||
@ -304,6 +373,7 @@
 | 
				
			|||||||
    <Typography Id="Numbers" Font="lucon.TTF" Size="50" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=". ,-" WildcardCharacterRanges="0-9" />
 | 
					    <Typography Id="Numbers" Font="lucon.TTF" Size="50" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=". ,-" WildcardCharacterRanges="0-9" />
 | 
				
			||||||
    <Typography Id="Default_Bold" Font="verdanab.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="! "" WildcardCharacterRanges="#-~" />
 | 
					    <Typography Id="Default_Bold" Font="verdanab.ttf" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters="! "" WildcardCharacterRanges="#-~" />
 | 
				
			||||||
    <Typography Id="Numbers_Smaller" Font="lucon.TTF" Size="33" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=" .,-" WildcardCharacterRanges="0-9" />
 | 
					    <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_Small" Font="lucon.TTF" Size="20" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=" .,-" WidgetWildcardCharacters="-., 0123456789" WildcardCharacterRanges="0-9" />
 | 
				
			||||||
 | 
					    <Typography Id="Numbers_Huge" Font="lucon.TTF" Size="80" Bpp="4" Direction="LTR" FallbackCharacter="?" WildcardCharacters=" .,-+" WildcardCharacterRanges="0-9" />
 | 
				
			||||||
  </Typographies>
 | 
					  </Typographies>
 | 
				
			||||||
</TextDatabase>
 | 
					</TextDatabase>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,5 @@
 | 
				
			|||||||
32
 | 
					32
 | 
				
			||||||
 | 
					37
 | 
				
			||||||
44
 | 
					44
 | 
				
			||||||
45
 | 
					45
 | 
				
			||||||
46
 | 
					46
 | 
				
			||||||
@ -13,3 +14,4 @@
 | 
				
			|||||||
56
 | 
					56
 | 
				
			||||||
57
 | 
					57
 | 
				
			||||||
63
 | 
					63
 | 
				
			||||||
 | 
					176
 | 
				
			||||||
							
								
								
									
										17
									
								
								TouchGFX/generated/fonts/UnicodeListlucon_TTF_80_4.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								TouchGFX/generated/fonts/UnicodeListlucon_TTF_80_4.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,17 @@
 | 
				
			|||||||
 | 
					32
 | 
				
			||||||
 | 
					37
 | 
				
			||||||
 | 
					43
 | 
				
			||||||
 | 
					44
 | 
				
			||||||
 | 
					45
 | 
				
			||||||
 | 
					46
 | 
				
			||||||
 | 
					48
 | 
				
			||||||
 | 
					49
 | 
				
			||||||
 | 
					50
 | 
				
			||||||
 | 
					51
 | 
				
			||||||
 | 
					52
 | 
				
			||||||
 | 
					53
 | 
				
			||||||
 | 
					54
 | 
				
			||||||
 | 
					55
 | 
				
			||||||
 | 
					56
 | 
				
			||||||
 | 
					57
 | 
				
			||||||
 | 
					63
 | 
				
			||||||
@ -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"}
 | 
				
			||||||
@ -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"}
 | 
				
			||||||
@ -1,5 +1,6 @@
 | 
				
			|||||||
AH:0 BA:1 FC:63 EC:0 FF:0 CF:0 FU:0
 | 
					AH:0 BA:1 FC:63 EC:0 FF:0 CF:0 FU:0
 | 
				
			||||||
32
 | 
					32
 | 
				
			||||||
 | 
					37
 | 
				
			||||||
44
 | 
					44
 | 
				
			||||||
45
 | 
					45
 | 
				
			||||||
46
 | 
					46
 | 
				
			||||||
@ -14,3 +15,4 @@ AH:0 BA:1 FC:63 EC:0 FF:0 CF:0 FU:0
 | 
				
			|||||||
56
 | 
					56
 | 
				
			||||||
57
 | 
					57
 | 
				
			||||||
63
 | 
					63
 | 
				
			||||||
 | 
					176
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										18
									
								
								TouchGFX/generated/fonts/cache/Font_lucon_TTF_80_4bppCpp.cache
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								TouchGFX/generated/fonts/cache/Font_lucon_TTF_80_4bppCpp.cache
									
									
									
									
										vendored
									
									
										Normal 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
 | 
				
			||||||
@ -21,6 +21,7 @@ struct Typography
 | 
				
			|||||||
    static const touchgfx::FontId DEFAULT_BOLD = 5;
 | 
					    static const touchgfx::FontId DEFAULT_BOLD = 5;
 | 
				
			||||||
    static const touchgfx::FontId NUMBERS_SMALLER = 6;
 | 
					    static const touchgfx::FontId NUMBERS_SMALLER = 6;
 | 
				
			||||||
    static const touchgfx::FontId NUMBERS_SMALL = 7;
 | 
					    static const touchgfx::FontId NUMBERS_SMALL = 7;
 | 
				
			||||||
 | 
					    static const touchgfx::FontId NUMBERS_HUGE = 8;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
struct TypographyFontIndex
 | 
					struct TypographyFontIndex
 | 
				
			||||||
@ -33,7 +34,8 @@ struct TypographyFontIndex
 | 
				
			|||||||
    static const touchgfx::FontId DEFAULT_BOLD = 5;    // verdanab_20_4bpp
 | 
					    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_SMALLER = 6; // lucon_TTF_33_4bpp
 | 
				
			||||||
    static const touchgfx::FontId NUMBERS_SMALL = 7;   // lucon_TTF_20_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
 | 
					class ApplicationFontProvider : public touchgfx::FontProvider
 | 
				
			||||||
 | 
				
			|||||||
@ -33,6 +33,9 @@ touchgfx::Font* ApplicationFontProvider::getFont(touchgfx::FontId typography)
 | 
				
			|||||||
    case Typography::NUMBERS_SMALL:
 | 
					    case Typography::NUMBERS_SMALL:
 | 
				
			||||||
        // lucon_TTF_20_4bpp
 | 
					        // lucon_TTF_20_4bpp
 | 
				
			||||||
        return const_cast<touchgfx::Font*>(TypedTextDatabase::getFonts()[7]);
 | 
					        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:
 | 
					    default:
 | 
				
			||||||
        return 0;
 | 
					        return 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -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 = {
 | 
					KEEP extern const uint8_t unicodes_lucon_TTF_50_4bpp_0[] FONT_GLYPH_LOCATION_FLASH_ATTRIBUTE = {
 | 
				
			||||||
    // Unicode: [0x0020]
 | 
					    // Unicode: [0x0020]
 | 
				
			||||||
    // (Has no glyph data)
 | 
					    // (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]
 | 
					    // Unicode: [0x002C]
 | 
				
			||||||
    0x32, 0x33, 0x33, 0x23, 0xF8, 0xFF, 0xFF, 0xAF, 0xF8, 0xFF, 0xFF, 0xAF, 0xF8, 0xFF, 0xFF, 0xAF,
 | 
					    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,
 | 
					    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,
 | 
					    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,
 | 
					    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, 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
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										959
									
								
								TouchGFX/generated/fonts/src/Font_lucon_TTF_80_4bpp_0.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										959
									
								
								TouchGFX/generated/fonts/src/Font_lucon_TTF_80_4bpp_0.cpp
									
									
									
									
									
										Normal 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
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -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 }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -5,20 +5,22 @@
 | 
				
			|||||||
FONT_TABLE_LOCATION_FLASH_PRAGMA
 | 
					FONT_TABLE_LOCATION_FLASH_PRAGMA
 | 
				
			||||||
KEEP extern const touchgfx::GlyphNode glyphs_lucon_TTF_50_4bpp[] FONT_TABLE_LOCATION_FLASH_ATTRIBUTE = {
 | 
					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, 0x0020,   0,   0,   0,   0,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {     0, 0x002C,   8,  16,   8,  11,  30,   0,   0, 0x00 },
 | 
					    {     0, 0x0025,  31,  38,  37,   0,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {    64, 0x002D,  20,   4,  17,   5,  30,   0,   0, 0x00 },
 | 
					    {   608, 0x002C,   8,  16,   8,  11,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {   104, 0x002E,   8,   8,   8,  11,  30,   0,   0, 0x00 },
 | 
					    {   672, 0x002D,  20,   4,  17,   5,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {   136, 0x0030,  26,  38,  37,   2,  30,   0,   0, 0x00 },
 | 
					    {   712, 0x002E,   8,   8,   8,  11,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {   630, 0x0031,  25,  37,  37,   4,  30,   0,   0, 0x00 },
 | 
					    {   744, 0x0030,  26,  38,  37,   2,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {  1111, 0x0032,  21,  37,  37,   4,  30,   0,   0, 0x00 },
 | 
					    {  1238, 0x0031,  25,  37,  37,   4,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {  1518, 0x0033,  21,  38,  37,   5,  30,   0,   0, 0x00 },
 | 
					    {  1719, 0x0032,  21,  37,  37,   4,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {  1936, 0x0034,  26,  36,  36,   2,  30,   0,   0, 0x00 },
 | 
					    {  2126, 0x0033,  21,  38,  37,   5,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {  2404, 0x0035,  20,  37,  36,   6,  30,   0,   0, 0x00 },
 | 
					    {  2544, 0x0034,  26,  36,  36,   2,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {  2774, 0x0036,  24,  38,  37,   4,  30,   0,   0, 0x00 },
 | 
					    {  3012, 0x0035,  20,  37,  36,   6,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {  3230, 0x0037,  23,  36,  36,   4,  30,   0,   0, 0x00 },
 | 
					    {  3382, 0x0036,  24,  38,  37,   4,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {  3662, 0x0038,  24,  38,  37,   3,  30,   0,   0, 0x00 },
 | 
					    {  3838, 0x0037,  23,  36,  36,   4,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {  4118, 0x0039,  25,  38,  37,   3,  30,   0,   0, 0x00 },
 | 
					    {  4270, 0x0038,  24,  38,  37,   3,  30,   0,   0, 0x00 },
 | 
				
			||||||
    {  4612, 0x003F,  23,  37,  37,   4,  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
 | 
					// lucon_TTF_50_4bpp
 | 
				
			||||||
@ -36,6 +38,6 @@ touchgfx::GeneratedFont& getFont_lucon_TTF_50_4bpp();
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
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;
 | 
					    return lucon_TTF_50_4bpp;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										43
									
								
								TouchGFX/generated/fonts/src/Table_lucon_TTF_80_4bpp.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								TouchGFX/generated/fonts/src/Table_lucon_TTF_80_4bpp.cpp
									
									
									
									
									
										Normal 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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					/*********************************************************************************/
 | 
				
			||||||
 | 
					/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
 | 
				
			||||||
 | 
					/*********************************************************************************/
 | 
				
			||||||
 | 
					#ifndef APPSVIEWBASE_HPP
 | 
				
			||||||
 | 
					#define APPSVIEWBASE_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <gui/common/FrontendApplication.hpp>
 | 
				
			||||||
 | 
					#include <mvp/View.hpp>
 | 
				
			||||||
 | 
					#include <gui/apps_screen/APPSPresenter.hpp>
 | 
				
			||||||
 | 
					#include <touchgfx/widgets/Box.hpp>
 | 
				
			||||||
 | 
					#include <touchgfx/widgets/graph/GraphWrapAndOverwrite.hpp>
 | 
				
			||||||
 | 
					#include <touchgfx/widgets/graph/GraphElements.hpp>
 | 
				
			||||||
 | 
					#include <touchgfx/widgets/graph/GraphLabels.hpp>
 | 
				
			||||||
 | 
					#include <touchgfx/widgets/canvas/PainterRGB565.hpp>
 | 
				
			||||||
 | 
					#include <touchgfx/widgets/TextArea.hpp>
 | 
				
			||||||
 | 
					#include <touchgfx/widgets/TextAreaWithWildcard.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class APPSViewBase : public touchgfx::View<APPSPresenter>
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					    APPSViewBase();
 | 
				
			||||||
 | 
					    virtual ~APPSViewBase();
 | 
				
			||||||
 | 
					    virtual void setupScreen();
 | 
				
			||||||
 | 
					    virtual void handleKeyEvent(uint8_t key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					     * Virtual Action Handlers
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    virtual void selectPrevField()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Override and implement this function in APPS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    virtual void selectNextField()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Override and implement this function in APPS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    virtual void decField()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Override and implement this function in APPS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    virtual void incField()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Override and implement this function in APPS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    virtual void confirmField()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Override and implement this function in APPS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    virtual void switchPrecision()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        // Override and implement this function in APPS
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					    FrontendApplication& application() {
 | 
				
			||||||
 | 
					        return *static_cast<FrontendApplication*>(touchgfx::Application::getInstance());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					     * Member Declarations
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    touchgfx::Box __background;
 | 
				
			||||||
 | 
					    touchgfx::GraphWrapAndOverwrite<50> apps0Graph;
 | 
				
			||||||
 | 
					    touchgfx::GraphElementGridY apps0GraphMajorYAxisGrid;
 | 
				
			||||||
 | 
					    touchgfx::GraphLabelsY apps0GraphMajorYAxisLabel;
 | 
				
			||||||
 | 
					    touchgfx::GraphElementLine apps0GraphLine1;
 | 
				
			||||||
 | 
					    touchgfx::PainterRGB565 apps0GraphLine1Painter;
 | 
				
			||||||
 | 
					    touchgfx::GraphElementVerticalGapLine apps0GraphVerticalFrontline;
 | 
				
			||||||
 | 
					    touchgfx::GraphWrapAndOverwrite<50> apps1Graph;
 | 
				
			||||||
 | 
					    touchgfx::GraphElementLine apps1GraphLine1;
 | 
				
			||||||
 | 
					    touchgfx::PainterRGB565 apps1GraphLine1Painter;
 | 
				
			||||||
 | 
					    touchgfx::TextArea title;
 | 
				
			||||||
 | 
					    touchgfx::TextArea apps0;
 | 
				
			||||||
 | 
					    touchgfx::TextArea apps1;
 | 
				
			||||||
 | 
					    touchgfx::TextArea min;
 | 
				
			||||||
 | 
					    touchgfx::TextArea max;
 | 
				
			||||||
 | 
					    touchgfx::TextArea cur;
 | 
				
			||||||
 | 
					    touchgfx::Box apps1max_bg;
 | 
				
			||||||
 | 
					    touchgfx::Box apps0max_bg;
 | 
				
			||||||
 | 
					    touchgfx::Box apps1min_bg;
 | 
				
			||||||
 | 
					    touchgfx::Box apps0min_bg;
 | 
				
			||||||
 | 
					    touchgfx::TextAreaWithOneWildcard apps1cur;
 | 
				
			||||||
 | 
					    touchgfx::TextAreaWithOneWildcard apps0cur;
 | 
				
			||||||
 | 
					    touchgfx::TextAreaWithOneWildcard apps1max;
 | 
				
			||||||
 | 
					    touchgfx::TextAreaWithOneWildcard apps0max;
 | 
				
			||||||
 | 
					    touchgfx::TextAreaWithOneWildcard apps1min;
 | 
				
			||||||
 | 
					    touchgfx::TextAreaWithOneWildcard apps0min;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /*
 | 
				
			||||||
 | 
					     * Canvas Buffer Size
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    static const uint32_t CANVAS_BUFFER_SIZE = 7200;
 | 
				
			||||||
 | 
					    uint8_t canvasBuffer[CANVAS_BUFFER_SIZE];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // APPSVIEWBASE_HPP
 | 
				
			||||||
@ -38,6 +38,12 @@ public:
 | 
				
			|||||||
    // SDC
 | 
					    // SDC
 | 
				
			||||||
    void gotoSDCScreenNoTransition();
 | 
					    void gotoSDCScreenNoTransition();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Endurance
 | 
				
			||||||
 | 
					    void gotoEnduranceScreenNoTransition();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // APPS
 | 
				
			||||||
 | 
					    void gotoAPPSScreenNoTransition();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
protected:
 | 
					protected:
 | 
				
			||||||
    touchgfx::Callback<FrontendApplicationBase> transitionCallback;
 | 
					    touchgfx::Callback<FrontendApplicationBase> transitionCallback;
 | 
				
			||||||
    FrontendHeap& frontendHeap;
 | 
					    FrontendHeap& frontendHeap;
 | 
				
			||||||
@ -60,6 +66,12 @@ protected:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // SDC
 | 
					    // SDC
 | 
				
			||||||
    void gotoSDCScreenNoTransitionImpl();
 | 
					    void gotoSDCScreenNoTransitionImpl();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Endurance
 | 
				
			||||||
 | 
					    void gotoEnduranceScreenNoTransitionImpl();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // APPS
 | 
				
			||||||
 | 
					    void gotoAPPSScreenNoTransitionImpl();
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif // FRONTENDAPPLICATIONBASE_HPP
 | 
					#endif // FRONTENDAPPLICATIONBASE_HPP
 | 
				
			||||||
 | 
				
			|||||||
@ -24,6 +24,10 @@
 | 
				
			|||||||
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
 | 
					#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
 | 
				
			||||||
#include <gui/sdc_screen/SDCView.hpp>
 | 
					#include <gui/sdc_screen/SDCView.hpp>
 | 
				
			||||||
#include <gui/sdc_screen/SDCPresenter.hpp>
 | 
					#include <gui/sdc_screen/SDCPresenter.hpp>
 | 
				
			||||||
 | 
					#include <gui/endurance_screen/EnduranceView.hpp>
 | 
				
			||||||
 | 
					#include <gui/endurance_screen/EndurancePresenter.hpp>
 | 
				
			||||||
 | 
					#include <gui/apps_screen/APPSView.hpp>
 | 
				
			||||||
 | 
					#include <gui/apps_screen/APPSPresenter.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@ -52,7 +56,9 @@ public:
 | 
				
			|||||||
            touchgfx::meta::TypeList< DebugViewView,
 | 
					            touchgfx::meta::TypeList< DebugViewView,
 | 
				
			||||||
            touchgfx::meta::TypeList< VehicleConfigView,
 | 
					            touchgfx::meta::TypeList< VehicleConfigView,
 | 
				
			||||||
            touchgfx::meta::TypeList< SDCView,
 | 
					            touchgfx::meta::TypeList< SDCView,
 | 
				
			||||||
            touchgfx::meta::Nil > > > > >
 | 
					            touchgfx::meta::TypeList< EnduranceView,
 | 
				
			||||||
 | 
					            touchgfx::meta::TypeList< APPSView,
 | 
				
			||||||
 | 
					            touchgfx::meta::Nil > > > > > > >
 | 
				
			||||||
            > GeneratedViewTypes;
 | 
					            > GeneratedViewTypes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -70,7 +76,9 @@ public:
 | 
				
			|||||||
            touchgfx::meta::TypeList< DebugViewPresenter,
 | 
					            touchgfx::meta::TypeList< DebugViewPresenter,
 | 
				
			||||||
            touchgfx::meta::TypeList< VehicleConfigPresenter,
 | 
					            touchgfx::meta::TypeList< VehicleConfigPresenter,
 | 
				
			||||||
            touchgfx::meta::TypeList< SDCPresenter,
 | 
					            touchgfx::meta::TypeList< SDCPresenter,
 | 
				
			||||||
            touchgfx::meta::Nil > > > > >
 | 
					            touchgfx::meta::TypeList< EndurancePresenter,
 | 
				
			||||||
 | 
					            touchgfx::meta::TypeList< APPSPresenter,
 | 
				
			||||||
 | 
					            touchgfx::meta::Nil > > > > > > >
 | 
				
			||||||
            > GeneratedPresenterTypes;
 | 
					            > GeneratedPresenterTypes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
@ -20,7 +20,7 @@
 | 
				
			|||||||
#include <gui/containers/DriverViewField.hpp>
 | 
					#include <gui/containers/DriverViewField.hpp>
 | 
				
			||||||
#include <touchgfx/containers/ListLayout.hpp>
 | 
					#include <touchgfx/containers/ListLayout.hpp>
 | 
				
			||||||
#include <gui/containers/DriverViewStatusItem.hpp>
 | 
					#include <gui/containers/DriverViewStatusItem.hpp>
 | 
				
			||||||
#include <touchgfx/containers/progress_indicators/BoxProgress.hpp>
 | 
					#include <gui/containers/ProgressBar.hpp>
 | 
				
			||||||
#include <gui/containers/ErrorPopup.hpp>
 | 
					#include <gui/containers/ErrorPopup.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DriverViewViewBase : public touchgfx::View<DriverViewPresenter>
 | 
					class DriverViewViewBase : public touchgfx::View<DriverViewPresenter>
 | 
				
			||||||
@ -98,10 +98,7 @@ protected:
 | 
				
			|||||||
    DriverViewStatusItem statusPDU;
 | 
					    DriverViewStatusItem statusPDU;
 | 
				
			||||||
    DriverViewStatusItem statusINV;
 | 
					    DriverViewStatusItem statusINV;
 | 
				
			||||||
    DriverViewStatusItem statusLV;
 | 
					    DriverViewStatusItem statusLV;
 | 
				
			||||||
    touchgfx::BoxProgress progressBar;
 | 
					    ProgressBar progressBar;
 | 
				
			||||||
    touchgfx::TextArea prechargeLabel;
 | 
					 | 
				
			||||||
    touchgfx::TextArea r2dLabel;
 | 
					 | 
				
			||||||
    touchgfx::TextAreaWithOneWildcard r2dProgressLabel;
 | 
					 | 
				
			||||||
    ErrorPopup errorPopup;
 | 
					    ErrorPopup errorPopup;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
@ -0,0 +1,216 @@
 | 
				
			|||||||
 | 
					/*********************************************************************************/
 | 
				
			||||||
 | 
					/********** THIS FILE IS GENERATED BY TOUCHGFX DESIGNER, DO NOT MODIFY ***********/
 | 
				
			||||||
 | 
					/*********************************************************************************/
 | 
				
			||||||
 | 
					#include <gui_generated/apps_screen/APPSViewBase.hpp>
 | 
				
			||||||
 | 
					#include <touchgfx/canvas_widget_renderer/CanvasWidgetRenderer.hpp>
 | 
				
			||||||
 | 
					#include <touchgfx/Color.hpp>
 | 
				
			||||||
 | 
					#include <texts/TextKeysAndLanguages.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPSViewBase::APPSViewBase()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    touchgfx::CanvasWidgetRenderer::setupBuffer(canvasBuffer, CANVAS_BUFFER_SIZE);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    __background.setPosition(0, 0, 480, 320);
 | 
				
			||||||
 | 
					    __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
 | 
				
			||||||
 | 
					    add(__background);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0Graph.setPosition(11, 36, 458, 180);
 | 
				
			||||||
 | 
					    apps0Graph.setScale(10);
 | 
				
			||||||
 | 
					    apps0Graph.setGraphAreaMargin(0, 40, 0, 0);
 | 
				
			||||||
 | 
					    apps0Graph.setGraphAreaPadding(0, 0, 0, 0);
 | 
				
			||||||
 | 
					    apps0Graph.setGraphRangeY(-10, 110);
 | 
				
			||||||
 | 
					    apps0GraphMajorYAxisGrid.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    apps0GraphMajorYAxisGrid.setInterval(20);
 | 
				
			||||||
 | 
					    apps0GraphMajorYAxisGrid.setLineWidth(1);
 | 
				
			||||||
 | 
					    apps0GraphMajorYAxisGrid.setScale(10);
 | 
				
			||||||
 | 
					    apps0Graph.addGraphElement(apps0GraphMajorYAxisGrid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0GraphMajorYAxisLabel.setInterval(20);
 | 
				
			||||||
 | 
					    apps0GraphMajorYAxisLabel.setLabelTypedText(touchgfx::TypedText(T___SINGLEUSE_RK9Z));
 | 
				
			||||||
 | 
					    apps0GraphMajorYAxisLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    apps0GraphMajorYAxisLabel.setScale(10);
 | 
				
			||||||
 | 
					    apps0Graph.addLeftElement(apps0GraphMajorYAxisLabel);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0GraphLine1Painter.setColor(touchgfx::Color::getColorFromRGB(20, 151, 197));
 | 
				
			||||||
 | 
					    apps0GraphLine1.setPainter(apps0GraphLine1Painter);
 | 
				
			||||||
 | 
					    apps0GraphLine1.setLineWidth(2);
 | 
				
			||||||
 | 
					    apps0Graph.addGraphElement(apps0GraphLine1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0GraphVerticalFrontline.setColor(touchgfx::Color::getColorFromRGB(137, 224, 13));
 | 
				
			||||||
 | 
					    apps0GraphVerticalFrontline.setGapLineWidth(1);
 | 
				
			||||||
 | 
					    apps0Graph.addGraphElement(apps0GraphVerticalFrontline);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    add(apps0Graph);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps1Graph.setPosition(11, 36, 458, 180);
 | 
				
			||||||
 | 
					    apps1Graph.setScale(10);
 | 
				
			||||||
 | 
					    apps1Graph.setGraphAreaMargin(0, 0, 0, 0);
 | 
				
			||||||
 | 
					    apps1Graph.setGraphAreaPadding(0, 40, 0, 0);
 | 
				
			||||||
 | 
					    apps1Graph.setGraphRangeY(-10, 110);
 | 
				
			||||||
 | 
					    apps1GraphLine1Painter.setColor(touchgfx::Color::getColorFromRGB(196, 109, 22));
 | 
				
			||||||
 | 
					    apps1GraphLine1.setPainter(apps1GraphLine1Painter);
 | 
				
			||||||
 | 
					    apps1GraphLine1.setLineWidth(2);
 | 
				
			||||||
 | 
					    apps1Graph.addGraphElement(apps1GraphLine1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    add(apps1Graph);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    title.setXY(38, 0);
 | 
				
			||||||
 | 
					    title.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    title.setLinespacing(0);
 | 
				
			||||||
 | 
					    title.setTypedText(touchgfx::TypedText(T___SINGLEUSE_UBFH));
 | 
				
			||||||
 | 
					    add(title);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0.setXY(11, 247);
 | 
				
			||||||
 | 
					    apps0.setColor(touchgfx::Color::getColorFromRGB(20, 151, 197));
 | 
				
			||||||
 | 
					    apps0.setLinespacing(0);
 | 
				
			||||||
 | 
					    apps0.setTypedText(touchgfx::TypedText(T___SINGLEUSE_6EKV));
 | 
				
			||||||
 | 
					    add(apps0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps1.setXY(11, 285);
 | 
				
			||||||
 | 
					    apps1.setColor(touchgfx::Color::getColorFromRGB(196, 109, 22));
 | 
				
			||||||
 | 
					    apps1.setLinespacing(0);
 | 
				
			||||||
 | 
					    apps1.setTypedText(touchgfx::TypedText(T___SINGLEUSE_W4YT));
 | 
				
			||||||
 | 
					    add(apps1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    min.setPosition(127, 216, 100, 24);
 | 
				
			||||||
 | 
					    min.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    min.setLinespacing(0);
 | 
				
			||||||
 | 
					    min.setTypedText(touchgfx::TypedText(T___SINGLEUSE_QXG5));
 | 
				
			||||||
 | 
					    add(min);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    max.setPosition(250, 216, 100, 24);
 | 
				
			||||||
 | 
					    max.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    max.setLinespacing(0);
 | 
				
			||||||
 | 
					    max.setTypedText(touchgfx::TypedText(T___SINGLEUSE_WQXQ));
 | 
				
			||||||
 | 
					    add(max);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    cur.setPosition(369, 216, 100, 24);
 | 
				
			||||||
 | 
					    cur.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    cur.setLinespacing(0);
 | 
				
			||||||
 | 
					    cur.setTypedText(touchgfx::TypedText(T___SINGLEUSE_CBZ9));
 | 
				
			||||||
 | 
					    add(cur);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps1max_bg.setPosition(250, 278, 100, 38);
 | 
				
			||||||
 | 
					    apps1max_bg.setColor(touchgfx::Color::getColorFromRGB(68, 68, 68));
 | 
				
			||||||
 | 
					    apps1max_bg.setVisible(false);
 | 
				
			||||||
 | 
					    add(apps1max_bg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0max_bg.setPosition(250, 240, 100, 38);
 | 
				
			||||||
 | 
					    apps0max_bg.setColor(touchgfx::Color::getColorFromRGB(68, 68, 68));
 | 
				
			||||||
 | 
					    apps0max_bg.setVisible(false);
 | 
				
			||||||
 | 
					    add(apps0max_bg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps1min_bg.setPosition(127, 278, 100, 38);
 | 
				
			||||||
 | 
					    apps1min_bg.setColor(touchgfx::Color::getColorFromRGB(68, 68, 68));
 | 
				
			||||||
 | 
					    apps1min_bg.setVisible(false);
 | 
				
			||||||
 | 
					    add(apps1min_bg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0min_bg.setPosition(127, 240, 100, 38);
 | 
				
			||||||
 | 
					    apps0min_bg.setColor(touchgfx::Color::getColorFromRGB(68, 68, 68));
 | 
				
			||||||
 | 
					    apps0min_bg.setVisible(false);
 | 
				
			||||||
 | 
					    add(apps0min_bg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps1cur.setPosition(369, 278, 100, 38);
 | 
				
			||||||
 | 
					    apps1cur.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    apps1cur.setLinespacing(0);
 | 
				
			||||||
 | 
					    apps1cur.setTypedText(touchgfx::TypedText(T___SINGLEUSE_SM6H));
 | 
				
			||||||
 | 
					    add(apps1cur);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0cur.setPosition(369, 240, 100, 38);
 | 
				
			||||||
 | 
					    apps0cur.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    apps0cur.setLinespacing(0);
 | 
				
			||||||
 | 
					    apps0cur.setTypedText(touchgfx::TypedText(T___SINGLEUSE_8KB4));
 | 
				
			||||||
 | 
					    add(apps0cur);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps1max.setPosition(250, 278, 100, 38);
 | 
				
			||||||
 | 
					    apps1max.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    apps1max.setLinespacing(0);
 | 
				
			||||||
 | 
					    apps1max.setTypedText(touchgfx::TypedText(T___SINGLEUSE_H8OI));
 | 
				
			||||||
 | 
					    add(apps1max);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0max.setPosition(250, 240, 100, 38);
 | 
				
			||||||
 | 
					    apps0max.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    apps0max.setLinespacing(0);
 | 
				
			||||||
 | 
					    apps0max.setTypedText(touchgfx::TypedText(T___SINGLEUSE_978V));
 | 
				
			||||||
 | 
					    add(apps0max);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps1min.setPosition(127, 278, 100, 38);
 | 
				
			||||||
 | 
					    apps1min.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    apps1min.setLinespacing(0);
 | 
				
			||||||
 | 
					    apps1min.setTypedText(touchgfx::TypedText(T___SINGLEUSE_P4TL));
 | 
				
			||||||
 | 
					    add(apps1min);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    apps0min.setPosition(127, 240, 100, 38);
 | 
				
			||||||
 | 
					    apps0min.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
 | 
				
			||||||
 | 
					    apps0min.setLinespacing(0);
 | 
				
			||||||
 | 
					    apps0min.setTypedText(touchgfx::TypedText(T___SINGLEUSE_MBQT));
 | 
				
			||||||
 | 
					    add(apps0min);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPSViewBase::~APPSViewBase()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    touchgfx::CanvasWidgetRenderer::resetBuffer();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSViewBase::setupScreen()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSViewBase::handleKeyEvent(uint8_t key)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if(104 == key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //SelectPrevField
 | 
				
			||||||
 | 
					        //When hardware button 104 clicked call virtual function
 | 
				
			||||||
 | 
					        //Call selectPrevField
 | 
				
			||||||
 | 
					        selectPrevField();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(108 == key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //SelectNextField
 | 
				
			||||||
 | 
					        //When hardware button 108 clicked call virtual function
 | 
				
			||||||
 | 
					        //Call selectNextField
 | 
				
			||||||
 | 
					        selectNextField();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(107 == key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //DecField
 | 
				
			||||||
 | 
					        //When hardware button 107 clicked call virtual function
 | 
				
			||||||
 | 
					        //Call decField
 | 
				
			||||||
 | 
					        decField();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(106 == key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //IncField
 | 
				
			||||||
 | 
					        //When hardware button 106 clicked call virtual function
 | 
				
			||||||
 | 
					        //Call incField
 | 
				
			||||||
 | 
					        incField();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(54 == key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //ConfirmField
 | 
				
			||||||
 | 
					        //When hardware button 54 clicked call virtual function
 | 
				
			||||||
 | 
					        //Call confirmField
 | 
				
			||||||
 | 
					        confirmField();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(53 == key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //SwitchPrecision
 | 
				
			||||||
 | 
					        //When hardware button 53 clicked call virtual function
 | 
				
			||||||
 | 
					        //Call switchPrecision
 | 
				
			||||||
 | 
					        switchPrecision();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -21,6 +21,10 @@
 | 
				
			|||||||
#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
 | 
					#include <gui/vehicleconfig_screen/VehicleConfigPresenter.hpp>
 | 
				
			||||||
#include <gui/sdc_screen/SDCView.hpp>
 | 
					#include <gui/sdc_screen/SDCView.hpp>
 | 
				
			||||||
#include <gui/sdc_screen/SDCPresenter.hpp>
 | 
					#include <gui/sdc_screen/SDCPresenter.hpp>
 | 
				
			||||||
 | 
					#include <gui/endurance_screen/EnduranceView.hpp>
 | 
				
			||||||
 | 
					#include <gui/endurance_screen/EndurancePresenter.hpp>
 | 
				
			||||||
 | 
					#include <gui/apps_screen/APPSView.hpp>
 | 
				
			||||||
 | 
					#include <gui/apps_screen/APPSPresenter.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using namespace touchgfx;
 | 
					using namespace touchgfx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -117,3 +121,29 @@ void FrontendApplicationBase::gotoSDCScreenNoTransitionImpl()
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    touchgfx::makeTransition<SDCView, SDCPresenter, touchgfx::NoTransition, Model >(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model);
 | 
					    touchgfx::makeTransition<SDCView, SDCPresenter, touchgfx::NoTransition, Model >(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Endurance
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FrontendApplicationBase::gotoEnduranceScreenNoTransition()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplicationBase::gotoEnduranceScreenNoTransitionImpl);
 | 
				
			||||||
 | 
					    pendingScreenTransitionCallback = &transitionCallback;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FrontendApplicationBase::gotoEnduranceScreenNoTransitionImpl()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    touchgfx::makeTransition<EnduranceView, EndurancePresenter, touchgfx::NoTransition, Model >(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// APPS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FrontendApplicationBase::gotoAPPSScreenNoTransition()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    transitionCallback = touchgfx::Callback<FrontendApplicationBase>(this, &FrontendApplicationBase::gotoAPPSScreenNoTransitionImpl);
 | 
				
			||||||
 | 
					    pendingScreenTransitionCallback = &transitionCallback;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void FrontendApplicationBase::gotoAPPSScreenNoTransitionImpl()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    touchgfx::makeTransition<APPSView, APPSPresenter, touchgfx::NoTransition, Model >(¤tScreen, ¤tPresenter, frontendHeap, ¤tTransition, &model);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -124,36 +124,8 @@ DriverViewViewBase::DriverViewViewBase() :
 | 
				
			|||||||
    statusBar.add(statusItems);
 | 
					    statusBar.add(statusItems);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    progressBar.setXY(0, 0);
 | 
					    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);
 | 
					    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);
 | 
					    add(statusBar);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    errorPopup.setXY(12, 125);
 | 
					    errorPopup.setXY(12, 125);
 | 
				
			||||||
@ -187,6 +159,7 @@ void DriverViewViewBase::setupScreen()
 | 
				
			|||||||
    statusPDU.initialize();
 | 
					    statusPDU.initialize();
 | 
				
			||||||
    statusINV.initialize();
 | 
					    statusINV.initialize();
 | 
				
			||||||
    statusLV.initialize();
 | 
					    statusLV.initialize();
 | 
				
			||||||
 | 
					    progressBar.initialize();
 | 
				
			||||||
    errorPopup.initialize();
 | 
					    errorPopup.initialize();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -144,4 +144,22 @@ void MissionSelectViewBase::handleKeyEvent(uint8_t key)
 | 
				
			|||||||
        application().gotoSDCScreenNoTransition();
 | 
					        application().gotoSDCScreenNoTransition();
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(249 == key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //DummyChangeEnduranceView
 | 
				
			||||||
 | 
					        //When hardware button 249 clicked change screen to Endurance
 | 
				
			||||||
 | 
					        //Go to Endurance with no screen transition
 | 
				
			||||||
 | 
					        application().gotoEnduranceScreenNoTransition();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if(248 == key)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        //DummyChangeAPPSView
 | 
				
			||||||
 | 
					        //When hardware button 248 clicked change screen to APPS
 | 
				
			||||||
 | 
					        //Go to APPS with no screen transition
 | 
				
			||||||
 | 
					        application().gotoAPPSScreenNoTransition();
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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":[["557","T_LV"],["421","T_PDU"],["549","T_SCS"],["553","T_SDC"],["545","T_R2D"],["542","T_TS"],["537","T_INV"],["409","T_AMS"],["252","T_ERROR_AMS"],["217","T_DEBUGVIEWFIELD_TITLE"],["217","T_DRIVERVIEWFIELD_TITLE"],["217","T_NUMBERSMALLWILDCARD"],["479","T_FIELD_BBAL"],["400","T_FIELD_TSVOLTVEH"],["393","T_FIELD_TSVOLTBAT"],["449","T_FIELD_LVSOC"],["473","T_FIELD_TSSOC"],["494","T_FIELD_MAXCELLTEMP"],["504","T_FIELD_TIREFL"],["509","T_FIELD_TIREFR"],["514","T_FIELD_TIRERL"],["519","T_FIELD_TIRERR"],["489","T_FIELD_LAPCOUNT"],["322","T_FIELD_INICHKSTATE"],["443","T_FIELD_ERR"],["553","T_FIELD_SDC"],["338","T_FIELD_INVRREADY"],["330","T_FIELD_INVLREADY"],["362","T_FIELD_R2DPROGRESS"],["346","T_FIELD_ACTIVEMISSION"],["306","T_FIELD_ASSTATE"],["378","T_FIELD_TSSTATE"],["217","T_NUMBERWILDCARD"],["217","T_DEFAULTWILDCARD_CENTERED"],["217","T_DEFAULTWILDCARD_RIGHTALIGNED"],["541","T_FIELD_TSCURRENT"],["524","T_FIELD_MINCELLVOLT"],["467","T_FIELD_SPEED"],["219","T_INSPECTION_HUGE"],["297","T_EBS_HUGE"],["241","T_TRACKDRIVE_HUGE"],["262","T_AUTOX_HUGE"],["370","T_SKIDPAD_HUGE"],["163","T_ACCEL_HUGE"],["52","T_INVALID_HUGE"],["133","T_MANUAL"],["219","T_INSPECTION"],["297","T_EBS"],["241","T_TRACKDRIVE"],["262","T_AUTOX"],["370","T_SKIDPAD"],["163","T_ACCEL"],["431","T___SINGLEUSE_W4YT"],["217","T___SINGLEUSE_SM6H"],["217","T___SINGLEUSE_8KB4"],["217","T___SINGLEUSE_P4TL"],["533","T___SINGLEUSE_CBZ9"],["495","T___SINGLEUSE_WQXQ"],["525","T___SINGLEUSE_QXG5"],["217","T___SINGLEUSE_MBQT"],["217","T___SINGLEUSE_978V"],["217","T___SINGLEUSE_H8OI"],["425","T___SINGLEUSE_6EKV"],["217","T___SINGLEUSE_RK9Z"],["18","T___SINGLEUSE_UBFH"],["217","T___SINGLEUSE_6EXA"],["545","T___SINGLEUSE_570K"],["272","T___SINGLEUSE_G2S2"],["285","T___SINGLEUSE_B2Q6"],["282","T___SINGLEUSE_OP6C"],["467","T___SINGLEUSE_1F9T"],["461","T___SINGLEUSE_QAZ3"],["217","T___SINGLEUSE_DONW"],["217","T___SINGLEUSE_4X8X"],["282","T___SINGLEUSE_FPXE"],["282","T___SINGLEUSE_51AZ"],["202","T___SINGLEUSE_DJ62"],["176","T___SINGLEUSE_5W6Y"],["214","T___SINGLEUSE_C17G"],["407","T___SINGLEUSE_XFW7"],["413","T___SINGLEUSE_N50J"],["529","T___SINGLEUSE_V38H"],["499","T___SINGLEUSE_XC1X"],["288","T___SINGLEUSE_KI1B"],["189","T___SINGLEUSE_QNHI"],["0","T___SINGLEUSE_43KA"],["419","T___SINGLEUSE_YRU7"],["484","T___SINGLEUSE_E6D7"],["217","T___SINGLEUSE_ZEKA"],["148","T___SINGLEUSE_0L75"],["117","T___SINGLEUSE_GA13"],["217","T___SINGLEUSE_THUG"],["217","T___SINGLEUSE_CO7A"],["217","T___SINGLEUSE_A0LF"],["217","T___SINGLEUSE_166C"],["101","T___SINGLEUSE_OOU3"],["85","T___SINGLEUSE_2FPP"],["217","T___SINGLEUSE_2S21"],["217","T___SINGLEUSE_OQ6P"],["354","T___SINGLEUSE_590R"],["314","T___SINGLEUSE_Z78U"],["217","T___SINGLEUSE_LLOZ"],["217","T___SINGLEUSE_232C"],["455","T___SINGLEUSE_JFR7"],["437","T___SINGLEUSE_3MDX"],["17","T___SINGLEUSE_F9I5"],["217","T___SINGLEUSE_9L8R"],["17","T___SINGLEUSE_1NKF"],["217","T___SINGLEUSE_4E84"],["217","T___SINGLEUSE_YTAB"],["230","T___SINGLEUSE_RWCE"],["282","T___SINGLEUSE_PHFD"],["386","T___SINGLEUSE_H6UX"],["217","T___SINGLEUSE_20H3"],["69","T___SINGLEUSE_M5X7"],["35","T___SINGLEUSE_6GPV"]]}
 | 
				
			||||||
@ -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_W4YT","T___SINGLEUSE_SM6H","T___SINGLEUSE_8KB4","T___SINGLEUSE_P4TL","T___SINGLEUSE_CBZ9","T___SINGLEUSE_WQXQ","T___SINGLEUSE_QXG5","T___SINGLEUSE_MBQT","T___SINGLEUSE_978V","T___SINGLEUSE_H8OI","T___SINGLEUSE_6EKV","T___SINGLEUSE_RK9Z","T___SINGLEUSE_UBFH","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"]}
 | 
				
			||||||
@ -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,65,80,80,83,32,67,65,76,73,66,82,65,84,73,79,78,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,65,80,80,83,48,0,65,80,80,83,49,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,67,85,82,0,73,78,86,0,73,84,83,0,82,50,68,0,83,67,83,0,83,68,67,0,76,86,0]}
 | 
				
			||||||
@ -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"],[2,"LEFT","LTR"],[6,"LEFT","LTR"],[6,"LEFT","LTR"],[6,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[6,"LEFT","LTR"],[6,"LEFT","LTR"],[6,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[1,"LEFT","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"],[2,"LEFT","LTR"],[6,"LEFT","LTR"],[6,"LEFT","LTR"],[6,"LEFT","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[2,"CENTER","LTR"],[6,"LEFT","LTR"],[6,"LEFT","LTR"],[6,"LEFT","LTR"],[2,"LEFT","LTR"],[7,"RIGHT","LTR"],[1,"LEFT","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"}
 | 
				
			||||||
@ -64,6 +64,32 @@ enum TEXTS
 | 
				
			|||||||
    T_AUTOX,
 | 
					    T_AUTOX,
 | 
				
			||||||
    T_SKIDPAD,
 | 
					    T_SKIDPAD,
 | 
				
			||||||
    T_ACCEL,
 | 
					    T_ACCEL,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_W4YT,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_SM6H,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_8KB4,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_P4TL,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_CBZ9,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_WQXQ,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_QXG5,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_MBQT,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_978V,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_H8OI,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_6EKV,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_RK9Z,
 | 
				
			||||||
 | 
					    T___SINGLEUSE_UBFH,
 | 
				
			||||||
 | 
					    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_C17G,
 | 
				
			||||||
    T___SINGLEUSE_XFW7,
 | 
					    T___SINGLEUSE_XFW7,
 | 
				
			||||||
    T___SINGLEUSE_N50J,
 | 
					    T___SINGLEUSE_N50J,
 | 
				
			||||||
@ -94,12 +120,9 @@ enum TEXTS
 | 
				
			|||||||
    T___SINGLEUSE_F9I5,
 | 
					    T___SINGLEUSE_F9I5,
 | 
				
			||||||
    T___SINGLEUSE_9L8R,
 | 
					    T___SINGLEUSE_9L8R,
 | 
				
			||||||
    T___SINGLEUSE_1NKF,
 | 
					    T___SINGLEUSE_1NKF,
 | 
				
			||||||
    T___SINGLEUSE_J5UH,
 | 
					 | 
				
			||||||
    T___SINGLEUSE_NGUK,
 | 
					 | 
				
			||||||
    T___SINGLEUSE_4E84,
 | 
					    T___SINGLEUSE_4E84,
 | 
				
			||||||
    T___SINGLEUSE_YTAB,
 | 
					    T___SINGLEUSE_YTAB,
 | 
				
			||||||
    T___SINGLEUSE_RWCE,
 | 
					    T___SINGLEUSE_RWCE,
 | 
				
			||||||
    T___SINGLEUSE_HMH2,
 | 
					 | 
				
			||||||
    T___SINGLEUSE_PHFD,
 | 
					    T___SINGLEUSE_PHFD,
 | 
				
			||||||
    T___SINGLEUSE_H6UX,
 | 
					    T___SINGLEUSE_H6UX,
 | 
				
			||||||
    T___SINGLEUSE_20H3,
 | 
					    T___SINGLEUSE_20H3,
 | 
				
			||||||
 | 
				
			|||||||
@ -10,97 +10,120 @@ KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE;
 | 
				
			|||||||
// Remap all strings
 | 
					// Remap all strings
 | 
				
			||||||
TEXT_LOCATION_FLASH_PRAGMA
 | 
					TEXT_LOCATION_FLASH_PRAGMA
 | 
				
			||||||
KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
 | 
					KEEP extern const uint32_t indicesGb[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
 | 
				
			||||||
    490, // T_LV: "LV"
 | 
					    557, // T_LV: "LV"
 | 
				
			||||||
    376, // T_PDU: "PDU"
 | 
					    421, // T_PDU: "PDU"
 | 
				
			||||||
    482, // T_SCS: "SCS"
 | 
					    549, // T_SCS: "SCS"
 | 
				
			||||||
    486, // T_SDC: "SDC"
 | 
					    553, // T_SDC: "SDC"
 | 
				
			||||||
    478, // T_R2D: "R2D"
 | 
					    545, // T_R2D: "R2D"
 | 
				
			||||||
    475, // T_TS: "TS"
 | 
					    542, // T_TS: "TS"
 | 
				
			||||||
    470, // T_INV: "INV"
 | 
					    537, // T_INV: "INV"
 | 
				
			||||||
    364, // T_AMS: "AMS"
 | 
					    409, // T_AMS: "AMS"
 | 
				
			||||||
    210, // T_ERROR_AMS: "AMS ErrOr"
 | 
					    252, // T_ERROR_AMS: "AMS ErrOr"
 | 
				
			||||||
    175, // T_DEBUGVIEWFIELD_TITLE: "<>"
 | 
					    217, // T_DEBUGVIEWFIELD_TITLE: "<>"
 | 
				
			||||||
    175, // T_DRIVERVIEWFIELD_TITLE: "<>"
 | 
					    217, // T_DRIVERVIEWFIELD_TITLE: "<>"
 | 
				
			||||||
    175, // T_NUMBERSMALLWILDCARD: "<>"
 | 
					    217, // T_NUMBERSMALLWILDCARD: "<>"
 | 
				
			||||||
    416, // T_FIELD_BBAL: "BBAL"
 | 
					    479, // T_FIELD_BBAL: "BBAL"
 | 
				
			||||||
    355, // T_FIELD_TSVOLTVEH: "TSVVEH"
 | 
					    400, // T_FIELD_TSVOLTVEH: "TSVVEH"
 | 
				
			||||||
    348, // T_FIELD_TSVOLTBAT: "TSVBAT"
 | 
					    393, // T_FIELD_TSVOLTBAT: "TSVBAT"
 | 
				
			||||||
    392, // T_FIELD_LVSOC: "LVSOC"
 | 
					    449, // T_FIELD_LVSOC: "LVSOC"
 | 
				
			||||||
    410, // T_FIELD_TSSOC: "TSSOC"
 | 
					    473, // T_FIELD_TSSOC: "TSSOC"
 | 
				
			||||||
    431, // T_FIELD_MAXCELLTEMP: "TMAX"
 | 
					    494, // T_FIELD_MAXCELLTEMP: "TMAX"
 | 
				
			||||||
    441, // T_FIELD_TIREFL: "TTFL"
 | 
					    504, // T_FIELD_TIREFL: "TTFL"
 | 
				
			||||||
    446, // T_FIELD_TIREFR: "TTFR"
 | 
					    509, // T_FIELD_TIREFR: "TTFR"
 | 
				
			||||||
    451, // T_FIELD_TIRERL: "TTRL"
 | 
					    514, // T_FIELD_TIRERL: "TTRL"
 | 
				
			||||||
    456, // T_FIELD_TIRERR: "TTRR"
 | 
					    519, // T_FIELD_TIRERR: "TTRR"
 | 
				
			||||||
    426, // T_FIELD_LAPCOUNT: "LAPS"
 | 
					    489, // T_FIELD_LAPCOUNT: "LAPS"
 | 
				
			||||||
    277, // T_FIELD_INICHKSTATE: "ICSTATE"
 | 
					    322, // T_FIELD_INICHKSTATE: "ICSTATE"
 | 
				
			||||||
    386, // T_FIELD_ERR: "ERROR"
 | 
					    443, // T_FIELD_ERR: "ERROR"
 | 
				
			||||||
    486, // T_FIELD_SDC: "SDC"
 | 
					    553, // T_FIELD_SDC: "SDC"
 | 
				
			||||||
    293, // T_FIELD_INVRREADY: "INVRRDY"
 | 
					    338, // T_FIELD_INVRREADY: "INVRRDY"
 | 
				
			||||||
    285, // T_FIELD_INVLREADY: "INVLRDY"
 | 
					    330, // T_FIELD_INVLREADY: "INVLRDY"
 | 
				
			||||||
    317, // T_FIELD_R2DPROGRESS: "R2DPROG"
 | 
					    362, // T_FIELD_R2DPROGRESS: "R2DPROG"
 | 
				
			||||||
    301, // T_FIELD_ACTIVEMISSION: "MISSION"
 | 
					    346, // T_FIELD_ACTIVEMISSION: "MISSION"
 | 
				
			||||||
    261, // T_FIELD_ASSTATE: "ASSTATE"
 | 
					    306, // T_FIELD_ASSTATE: "ASSTATE"
 | 
				
			||||||
    333, // T_FIELD_TSSTATE: "TSSTATE"
 | 
					    378, // T_FIELD_TSSTATE: "TSSTATE"
 | 
				
			||||||
    175, // T_NUMBERWILDCARD: "<>"
 | 
					    217, // T_NUMBERWILDCARD: "<>"
 | 
				
			||||||
    175, // T_DEFAULTWILDCARD_CENTERED: "<>"
 | 
					    217, // T_DEFAULTWILDCARD_CENTERED: "<>"
 | 
				
			||||||
    175, // T_DEFAULTWILDCARD_RIGHTALIGNED: "<>"
 | 
					    217, // T_DEFAULTWILDCARD_RIGHTALIGNED: "<>"
 | 
				
			||||||
    474, // T_FIELD_TSCURRENT: "ITS"
 | 
					    541, // T_FIELD_TSCURRENT: "ITS"
 | 
				
			||||||
    461, // T_FIELD_MINCELLVOLT: "VMIN"
 | 
					    524, // T_FIELD_MINCELLVOLT: "VMIN"
 | 
				
			||||||
    404, // T_FIELD_SPEED: "SPEED"
 | 
					    467, // T_FIELD_SPEED: "SPEED"
 | 
				
			||||||
    177, // T_INSPECTION_HUGE: "Inspection"
 | 
					    219, // T_INSPECTION_HUGE: "Inspection"
 | 
				
			||||||
    252, // T_EBS_HUGE: "EBS Test"
 | 
					    297, // T_EBS_HUGE: "EBS Test"
 | 
				
			||||||
    199, // T_TRACKDRIVE_HUGE: "Trackdrive"
 | 
					    241, // T_TRACKDRIVE_HUGE: "Trackdrive"
 | 
				
			||||||
    220, // T_AUTOX_HUGE: "Autocross"
 | 
					    262, // T_AUTOX_HUGE: "Autocross"
 | 
				
			||||||
    325, // T_SKIDPAD_HUGE: "Skidpad"
 | 
					    370, // T_SKIDPAD_HUGE: "Skidpad"
 | 
				
			||||||
    146, // T_ACCEL_HUGE: "Acceleration"
 | 
					    163, // T_ACCEL_HUGE: "Acceleration"
 | 
				
			||||||
    35,  // T_INVALID_HUGE: "Invalid Mission!"
 | 
					    52,  // T_INVALID_HUGE: "Invalid Mission!"
 | 
				
			||||||
    116, // T_MANUAL: "Manual Driving"
 | 
					    133, // T_MANUAL: "Manual Driving"
 | 
				
			||||||
    177, // T_INSPECTION: "Inspection"
 | 
					    219, // T_INSPECTION: "Inspection"
 | 
				
			||||||
    252, // T_EBS: "EBS Test"
 | 
					    297, // T_EBS: "EBS Test"
 | 
				
			||||||
    199, // T_TRACKDRIVE: "Trackdrive"
 | 
					    241, // T_TRACKDRIVE: "Trackdrive"
 | 
				
			||||||
    220, // T_AUTOX: "Autocross"
 | 
					    262, // T_AUTOX: "Autocross"
 | 
				
			||||||
    325, // T_SKIDPAD: "Skidpad"
 | 
					    370, // T_SKIDPAD: "Skidpad"
 | 
				
			||||||
    146, // T_ACCEL: "Acceleration"
 | 
					    163, // T_ACCEL: "Acceleration"
 | 
				
			||||||
    172, // T___SINGLEUSE_C17G: "AS <>"
 | 
					    431, // T___SINGLEUSE_W4YT: "APPS1"
 | 
				
			||||||
    362, // T___SINGLEUSE_XFW7: "\n\nAMS"
 | 
					    217, // T___SINGLEUSE_SM6H: "<>"
 | 
				
			||||||
    368, // T___SINGLEUSE_N50J: "\n\nIMD"
 | 
					    217, // T___SINGLEUSE_8KB4: "<>"
 | 
				
			||||||
    466, // T___SINGLEUSE_V38H: "ACC"
 | 
					    217, // T___SINGLEUSE_P4TL: "<>"
 | 
				
			||||||
    436, // T___SINGLEUSE_XC1X: "TSMS"
 | 
					    533, // T___SINGLEUSE_CBZ9: "CUR"
 | 
				
			||||||
    243, // T___SINGLEUSE_KI1B: "BSPD\nHVD"
 | 
					    495, // T___SINGLEUSE_WQXQ: "MAX"
 | 
				
			||||||
    159, // T___SINGLEUSE_QNHI: "SDB\nRES\nSDCL"
 | 
					    525, // T___SINGLEUSE_QXG5: "MIN"
 | 
				
			||||||
 | 
					    217, // T___SINGLEUSE_MBQT: "<>"
 | 
				
			||||||
 | 
					    217, // T___SINGLEUSE_978V: "<>"
 | 
				
			||||||
 | 
					    217, // T___SINGLEUSE_H8OI: "<>"
 | 
				
			||||||
 | 
					    425, // T___SINGLEUSE_6EKV: "APPS0"
 | 
				
			||||||
 | 
					    217, // T___SINGLEUSE_RK9Z: "<>"
 | 
				
			||||||
 | 
					    18,  // T___SINGLEUSE_UBFH: "APPS CALIBRATION"
 | 
				
			||||||
 | 
					    217, // T___SINGLEUSE_6EXA: "<>"
 | 
				
			||||||
 | 
					    545, // T___SINGLEUSE_570K: "R2D"
 | 
				
			||||||
 | 
					    272, // T___SINGLEUSE_G2S2: "PRECHARGE"
 | 
				
			||||||
 | 
					    285, // T___SINGLEUSE_B2Q6: "<>?"
 | 
				
			||||||
 | 
					    282, // T___SINGLEUSE_OP6C: "<>%"
 | 
				
			||||||
 | 
					    467, // T___SINGLEUSE_1F9T: "SPEED"
 | 
				
			||||||
 | 
					    461, // T___SINGLEUSE_QAZ3: "POWER"
 | 
				
			||||||
 | 
					    217, // T___SINGLEUSE_DONW: "<>"
 | 
				
			||||||
 | 
					    217, // T___SINGLEUSE_4X8X: "<>"
 | 
				
			||||||
 | 
					    282, // T___SINGLEUSE_FPXE: "<>%"
 | 
				
			||||||
 | 
					    282, // T___SINGLEUSE_51AZ: "<>%"
 | 
				
			||||||
 | 
					    202, // T___SINGLEUSE_DJ62: "OVERALL BAT"
 | 
				
			||||||
 | 
					    176, // T___SINGLEUSE_5W6Y: "LAST LAP BAT"
 | 
				
			||||||
 | 
					    214, // T___SINGLEUSE_C17G: "AS <>"
 | 
				
			||||||
 | 
					    407, // T___SINGLEUSE_XFW7: "\n\nAMS"
 | 
				
			||||||
 | 
					    413, // T___SINGLEUSE_N50J: "\n\nIMD"
 | 
				
			||||||
 | 
					    529, // T___SINGLEUSE_V38H: "ACC"
 | 
				
			||||||
 | 
					    499, // T___SINGLEUSE_XC1X: "TSMS"
 | 
				
			||||||
 | 
					    288, // T___SINGLEUSE_KI1B: "BSPD\nHVD"
 | 
				
			||||||
 | 
					    189, // T___SINGLEUSE_QNHI: "SDB\nRES\nSDCL"
 | 
				
			||||||
    0,   // T___SINGLEUSE_43KA: "DASH\nBOTS\nINERTIA"
 | 
					    0,   // T___SINGLEUSE_43KA: "DASH\nBOTS\nINERTIA"
 | 
				
			||||||
    374, // T___SINGLEUSE_YRU7: "\n\nPDU"
 | 
					    419, // T___SINGLEUSE_YRU7: "\n\nPDU"
 | 
				
			||||||
    421, // T___SINGLEUSE_E6D7: "INIT"
 | 
					    484, // T___SINGLEUSE_E6D7: "INIT"
 | 
				
			||||||
    175, // T___SINGLEUSE_ZEKA: "<>"
 | 
					    217, // T___SINGLEUSE_ZEKA: "<>"
 | 
				
			||||||
    131, // T___SINGLEUSE_0L75: "Pressure Rear:"
 | 
					    148, // T___SINGLEUSE_0L75: "Pressure Rear:"
 | 
				
			||||||
    100, // T___SINGLEUSE_GA13: "Pressure Front:"
 | 
					    117, // T___SINGLEUSE_GA13: "Pressure Front:"
 | 
				
			||||||
    175, // T___SINGLEUSE_THUG: "<>"
 | 
					    217, // T___SINGLEUSE_THUG: "<>"
 | 
				
			||||||
    175, // T___SINGLEUSE_CO7A: "<>"
 | 
					    217, // T___SINGLEUSE_CO7A: "<>"
 | 
				
			||||||
    175, // T___SINGLEUSE_A0LF: "<>"
 | 
					    217, // T___SINGLEUSE_A0LF: "<>"
 | 
				
			||||||
    175, // T___SINGLEUSE_166C: "<>"
 | 
					    217, // T___SINGLEUSE_166C: "<>"
 | 
				
			||||||
    84,  // T___SINGLEUSE_OOU3: "Pressure Acc B:"
 | 
					    101, // T___SINGLEUSE_OOU3: "Pressure Acc B:"
 | 
				
			||||||
    68,  // T___SINGLEUSE_2FPP: "Pressure Acc A:"
 | 
					    85,  // T___SINGLEUSE_2FPP: "Pressure Acc A:"
 | 
				
			||||||
    175, // T___SINGLEUSE_2S21: "<>"
 | 
					    217, // T___SINGLEUSE_2S21: "<>"
 | 
				
			||||||
    175, // T___SINGLEUSE_OQ6P: "<>"
 | 
					    217, // T___SINGLEUSE_OQ6P: "<>"
 | 
				
			||||||
    309, // T___SINGLEUSE_590R: "MSPEED:"
 | 
					    354, // T___SINGLEUSE_590R: "MSPEED:"
 | 
				
			||||||
    269, // T___SINGLEUSE_Z78U: "DSPEED:"
 | 
					    314, // T___SINGLEUSE_Z78U: "DSPEED:"
 | 
				
			||||||
    175, // T___SINGLEUSE_LLOZ: "<>"
 | 
					    217, // T___SINGLEUSE_LLOZ: "<>"
 | 
				
			||||||
    175, // T___SINGLEUSE_232C: "<>"
 | 
					    217, // T___SINGLEUSE_232C: "<>"
 | 
				
			||||||
    398, // T___SINGLEUSE_JFR7: "MANG:"
 | 
					    455, // T___SINGLEUSE_JFR7: "MANG:"
 | 
				
			||||||
    380, // T___SINGLEUSE_3MDX: "DANG:"
 | 
					    437, // T___SINGLEUSE_3MDX: "DANG:"
 | 
				
			||||||
    17,  // T___SINGLEUSE_F9I5: ""
 | 
					    17,  // T___SINGLEUSE_F9I5: ""
 | 
				
			||||||
    175, // T___SINGLEUSE_9L8R: "<>"
 | 
					    217, // T___SINGLEUSE_9L8R: "<>"
 | 
				
			||||||
    17,  // T___SINGLEUSE_1NKF: ""
 | 
					    17,  // T___SINGLEUSE_1NKF: ""
 | 
				
			||||||
    175, // T___SINGLEUSE_J5UH: "<>"
 | 
					    217, // T___SINGLEUSE_4E84: "<>"
 | 
				
			||||||
    478, // T___SINGLEUSE_NGUK: "R2D"
 | 
					    217, // T___SINGLEUSE_YTAB: "<>"
 | 
				
			||||||
    175, // T___SINGLEUSE_4E84: "<>"
 | 
					    230, // T___SINGLEUSE_RWCE: "PARAMETERS"
 | 
				
			||||||
    175, // T___SINGLEUSE_YTAB: "<>"
 | 
					    282, // T___SINGLEUSE_PHFD: "<>%"
 | 
				
			||||||
    188, // T___SINGLEUSE_RWCE: "PARAMETERS"
 | 
					    386, // T___SINGLEUSE_H6UX: "BRAKES"
 | 
				
			||||||
    230, // T___SINGLEUSE_HMH2: "PRECHARGE"
 | 
					    217, // T___SINGLEUSE_20H3: "<>"
 | 
				
			||||||
    240, // T___SINGLEUSE_PHFD: "<>%"
 | 
					    69,  // T___SINGLEUSE_M5X7: "Invalid Mission"
 | 
				
			||||||
    341, // T___SINGLEUSE_H6UX: "BRAKES"
 | 
					    35   // T___SINGLEUSE_6GPV: "Choose a mission"
 | 
				
			||||||
    175, // T___SINGLEUSE_20H3: "<>"
 | 
					 | 
				
			||||||
    52,  // T___SINGLEUSE_M5X7: "Invalid Mission"
 | 
					 | 
				
			||||||
    18   // T___SINGLEUSE_6GPV: "Choose a mission"
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -61,65 +61,73 @@ extern const touchgfx::TypedText::TypedTextData* const typedTextDatabaseArray[];
 | 
				
			|||||||
TEXT_LOCATION_FLASH_PRAGMA
 | 
					TEXT_LOCATION_FLASH_PRAGMA
 | 
				
			||||||
KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
 | 
					KEEP extern const touchgfx::Unicode::UnicodeChar texts_all_languages[] TEXT_LOCATION_FLASH_ATTRIBUTE = {
 | 
				
			||||||
    0x44, 0x41, 0x53, 0x48, 0xa, 0x42, 0x4f, 0x54, 0x53, 0xa, 0x49, 0x4e, 0x45, 0x52, 0x54, 0x49, 0x41, 0x0, // @0 "DASH\nBOTS\nINERTIA"
 | 
					    0x44, 0x41, 0x53, 0x48, 0xa, 0x42, 0x4f, 0x54, 0x53, 0xa, 0x49, 0x4e, 0x45, 0x52, 0x54, 0x49, 0x41, 0x0, // @0 "DASH\nBOTS\nINERTIA"
 | 
				
			||||||
    0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x0, // @18 "Choose a mission"
 | 
					    0x41, 0x50, 0x50, 0x53, 0x20, 0x43, 0x41, 0x4c, 0x49, 0x42, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x0, // @18 "APPS CALIBRATION"
 | 
				
			||||||
    0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x21, 0x0, // @35 "Invalid Mission!"
 | 
					    0x43, 0x68, 0x6f, 0x6f, 0x73, 0x65, 0x20, 0x61, 0x20, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x0, // @35 "Choose a mission"
 | 
				
			||||||
    0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x0, // @52 "Invalid Mission"
 | 
					    0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x21, 0x0, // @52 "Invalid Mission!"
 | 
				
			||||||
    0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x20, 0x41, 0x63, 0x63, 0x20, 0x41, 0x3a, 0x0, // @68 "Pressure Acc A:"
 | 
					    0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x4d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x0, // @69 "Invalid Mission"
 | 
				
			||||||
    0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x20, 0x41, 0x63, 0x63, 0x20, 0x42, 0x3a, 0x0, // @84 "Pressure Acc B:"
 | 
					    0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x20, 0x41, 0x63, 0x63, 0x20, 0x41, 0x3a, 0x0, // @85 "Pressure Acc A:"
 | 
				
			||||||
    0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x20, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x3a, 0x0, // @100 "Pressure Front:"
 | 
					    0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x20, 0x41, 0x63, 0x63, 0x20, 0x42, 0x3a, 0x0, // @101 "Pressure Acc B:"
 | 
				
			||||||
    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, 0x46, 0x72, 0x6f, 0x6e, 0x74, 0x3a, 0x0, // @117 "Pressure Front:"
 | 
				
			||||||
    0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x20, 0x52, 0x65, 0x61, 0x72, 0x3a, 0x0, // @131 "Pressure Rear:"
 | 
					    0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x20, 0x44, 0x72, 0x69, 0x76, 0x69, 0x6e, 0x67, 0x0, // @133 "Manual Driving"
 | 
				
			||||||
    0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0, // @146 "Acceleration"
 | 
					    0x50, 0x72, 0x65, 0x73, 0x73, 0x75, 0x72, 0x65, 0x20, 0x52, 0x65, 0x61, 0x72, 0x3a, 0x0, // @148 "Pressure Rear:"
 | 
				
			||||||
    0x53, 0x44, 0x42, 0xa, 0x52, 0x45, 0x53, 0xa, 0x53, 0x44, 0x43, 0x4c, 0x0, // @159 "SDB\nRES\nSDCL"
 | 
					    0x41, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0, // @163 "Acceleration"
 | 
				
			||||||
    0x41, 0x53, 0x20, 0x2, 0x0, // @172 "AS <>"
 | 
					    0x4c, 0x41, 0x53, 0x54, 0x20, 0x4c, 0x41, 0x50, 0x20, 0x42, 0x41, 0x54, 0x0, // @176 "LAST LAP BAT"
 | 
				
			||||||
    0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0, // @177 "Inspection"
 | 
					    0x53, 0x44, 0x42, 0xa, 0x52, 0x45, 0x53, 0xa, 0x53, 0x44, 0x43, 0x4c, 0x0, // @189 "SDB\nRES\nSDCL"
 | 
				
			||||||
    0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x53, 0x0, // @188 "PARAMETERS"
 | 
					    0x4f, 0x56, 0x45, 0x52, 0x41, 0x4c, 0x4c, 0x20, 0x42, 0x41, 0x54, 0x0, // @202 "OVERALL BAT"
 | 
				
			||||||
    0x54, 0x72, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x0, // @199 "Trackdrive"
 | 
					    0x41, 0x53, 0x20, 0x2, 0x0, // @214 "AS <>"
 | 
				
			||||||
    0x41, 0x4d, 0x53, 0x20, 0x45, 0x72, 0x72, 0x4f, 0x72, 0x0, // @210 "AMS ErrOr"
 | 
					    0x49, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x0, // @219 "Inspection"
 | 
				
			||||||
    0x41, 0x75, 0x74, 0x6f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x0, // @220 "Autocross"
 | 
					    0x50, 0x41, 0x52, 0x41, 0x4d, 0x45, 0x54, 0x45, 0x52, 0x53, 0x0, // @230 "PARAMETERS"
 | 
				
			||||||
    0x50, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x0, // @230 "PRECHARGE"
 | 
					    0x54, 0x72, 0x61, 0x63, 0x6b, 0x64, 0x72, 0x69, 0x76, 0x65, 0x0, // @241 "Trackdrive"
 | 
				
			||||||
    0x2, 0x25, 0x0, // @240 "<>%"
 | 
					    0x41, 0x4d, 0x53, 0x20, 0x45, 0x72, 0x72, 0x4f, 0x72, 0x0, // @252 "AMS ErrOr"
 | 
				
			||||||
    0x42, 0x53, 0x50, 0x44, 0xa, 0x48, 0x56, 0x44, 0x0, // @243 "BSPD\nHVD"
 | 
					    0x41, 0x75, 0x74, 0x6f, 0x63, 0x72, 0x6f, 0x73, 0x73, 0x0, // @262 "Autocross"
 | 
				
			||||||
    0x45, 0x42, 0x53, 0x20, 0x54, 0x65, 0x73, 0x74, 0x0, // @252 "EBS Test"
 | 
					    0x50, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x0, // @272 "PRECHARGE"
 | 
				
			||||||
    0x41, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @261 "ASSTATE"
 | 
					    0x2, 0x25, 0x0, // @282 "<>%"
 | 
				
			||||||
    0x44, 0x53, 0x50, 0x45, 0x45, 0x44, 0x3a, 0x0, // @269 "DSPEED:"
 | 
					    0x2, 0xb0, 0x0, // @285 "<>?"
 | 
				
			||||||
    0x49, 0x43, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @277 "ICSTATE"
 | 
					    0x42, 0x53, 0x50, 0x44, 0xa, 0x48, 0x56, 0x44, 0x0, // @288 "BSPD\nHVD"
 | 
				
			||||||
    0x49, 0x4e, 0x56, 0x4c, 0x52, 0x44, 0x59, 0x0, // @285 "INVLRDY"
 | 
					    0x45, 0x42, 0x53, 0x20, 0x54, 0x65, 0x73, 0x74, 0x0, // @297 "EBS Test"
 | 
				
			||||||
    0x49, 0x4e, 0x56, 0x52, 0x52, 0x44, 0x59, 0x0, // @293 "INVRRDY"
 | 
					    0x41, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @306 "ASSTATE"
 | 
				
			||||||
    0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x0, // @301 "MISSION"
 | 
					    0x44, 0x53, 0x50, 0x45, 0x45, 0x44, 0x3a, 0x0, // @314 "DSPEED:"
 | 
				
			||||||
    0x4d, 0x53, 0x50, 0x45, 0x45, 0x44, 0x3a, 0x0, // @309 "MSPEED:"
 | 
					    0x49, 0x43, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @322 "ICSTATE"
 | 
				
			||||||
    0x52, 0x32, 0x44, 0x50, 0x52, 0x4f, 0x47, 0x0, // @317 "R2DPROG"
 | 
					    0x49, 0x4e, 0x56, 0x4c, 0x52, 0x44, 0x59, 0x0, // @330 "INVLRDY"
 | 
				
			||||||
    0x53, 0x6b, 0x69, 0x64, 0x70, 0x61, 0x64, 0x0, // @325 "Skidpad"
 | 
					    0x49, 0x4e, 0x56, 0x52, 0x52, 0x44, 0x59, 0x0, // @338 "INVRRDY"
 | 
				
			||||||
    0x54, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @333 "TSSTATE"
 | 
					    0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x0, // @346 "MISSION"
 | 
				
			||||||
    0x42, 0x52, 0x41, 0x4b, 0x45, 0x53, 0x0, // @341 "BRAKES"
 | 
					    0x4d, 0x53, 0x50, 0x45, 0x45, 0x44, 0x3a, 0x0, // @354 "MSPEED:"
 | 
				
			||||||
    0x54, 0x53, 0x56, 0x42, 0x41, 0x54, 0x0, // @348 "TSVBAT"
 | 
					    0x52, 0x32, 0x44, 0x50, 0x52, 0x4f, 0x47, 0x0, // @362 "R2DPROG"
 | 
				
			||||||
    0x54, 0x53, 0x56, 0x56, 0x45, 0x48, 0x0, // @355 "TSVVEH"
 | 
					    0x53, 0x6b, 0x69, 0x64, 0x70, 0x61, 0x64, 0x0, // @370 "Skidpad"
 | 
				
			||||||
    0xa, 0xa, 0x41, 0x4d, 0x53, 0x0, // @362 "\n\nAMS"
 | 
					    0x54, 0x53, 0x53, 0x54, 0x41, 0x54, 0x45, 0x0, // @378 "TSSTATE"
 | 
				
			||||||
    0xa, 0xa, 0x49, 0x4d, 0x44, 0x0, // @368 "\n\nIMD"
 | 
					    0x42, 0x52, 0x41, 0x4b, 0x45, 0x53, 0x0, // @386 "BRAKES"
 | 
				
			||||||
    0xa, 0xa, 0x50, 0x44, 0x55, 0x0, // @374 "\n\nPDU"
 | 
					    0x54, 0x53, 0x56, 0x42, 0x41, 0x54, 0x0, // @393 "TSVBAT"
 | 
				
			||||||
    0x44, 0x41, 0x4e, 0x47, 0x3a, 0x0, // @380 "DANG:"
 | 
					    0x54, 0x53, 0x56, 0x56, 0x45, 0x48, 0x0, // @400 "TSVVEH"
 | 
				
			||||||
    0x45, 0x52, 0x52, 0x4f, 0x52, 0x0, // @386 "ERROR"
 | 
					    0xa, 0xa, 0x41, 0x4d, 0x53, 0x0, // @407 "\n\nAMS"
 | 
				
			||||||
    0x4c, 0x56, 0x53, 0x4f, 0x43, 0x0, // @392 "LVSOC"
 | 
					    0xa, 0xa, 0x49, 0x4d, 0x44, 0x0, // @413 "\n\nIMD"
 | 
				
			||||||
    0x4d, 0x41, 0x4e, 0x47, 0x3a, 0x0, // @398 "MANG:"
 | 
					    0xa, 0xa, 0x50, 0x44, 0x55, 0x0, // @419 "\n\nPDU"
 | 
				
			||||||
    0x53, 0x50, 0x45, 0x45, 0x44, 0x0, // @404 "SPEED"
 | 
					    0x41, 0x50, 0x50, 0x53, 0x30, 0x0, // @425 "APPS0"
 | 
				
			||||||
    0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @410 "TSSOC"
 | 
					    0x41, 0x50, 0x50, 0x53, 0x31, 0x0, // @431 "APPS1"
 | 
				
			||||||
    0x42, 0x42, 0x41, 0x4c, 0x0, // @416 "BBAL"
 | 
					    0x44, 0x41, 0x4e, 0x47, 0x3a, 0x0, // @437 "DANG:"
 | 
				
			||||||
    0x49, 0x4e, 0x49, 0x54, 0x0, // @421 "INIT"
 | 
					    0x45, 0x52, 0x52, 0x4f, 0x52, 0x0, // @443 "ERROR"
 | 
				
			||||||
    0x4c, 0x41, 0x50, 0x53, 0x0, // @426 "LAPS"
 | 
					    0x4c, 0x56, 0x53, 0x4f, 0x43, 0x0, // @449 "LVSOC"
 | 
				
			||||||
    0x54, 0x4d, 0x41, 0x58, 0x0, // @431 "TMAX"
 | 
					    0x4d, 0x41, 0x4e, 0x47, 0x3a, 0x0, // @455 "MANG:"
 | 
				
			||||||
    0x54, 0x53, 0x4d, 0x53, 0x0, // @436 "TSMS"
 | 
					    0x50, 0x4f, 0x57, 0x45, 0x52, 0x0, // @461 "POWER"
 | 
				
			||||||
    0x54, 0x54, 0x46, 0x4c, 0x0, // @441 "TTFL"
 | 
					    0x53, 0x50, 0x45, 0x45, 0x44, 0x0, // @467 "SPEED"
 | 
				
			||||||
    0x54, 0x54, 0x46, 0x52, 0x0, // @446 "TTFR"
 | 
					    0x54, 0x53, 0x53, 0x4f, 0x43, 0x0, // @473 "TSSOC"
 | 
				
			||||||
    0x54, 0x54, 0x52, 0x4c, 0x0, // @451 "TTRL"
 | 
					    0x42, 0x42, 0x41, 0x4c, 0x0, // @479 "BBAL"
 | 
				
			||||||
    0x54, 0x54, 0x52, 0x52, 0x0, // @456 "TTRR"
 | 
					    0x49, 0x4e, 0x49, 0x54, 0x0, // @484 "INIT"
 | 
				
			||||||
    0x56, 0x4d, 0x49, 0x4e, 0x0, // @461 "VMIN"
 | 
					    0x4c, 0x41, 0x50, 0x53, 0x0, // @489 "LAPS"
 | 
				
			||||||
    0x41, 0x43, 0x43, 0x0, // @466 "ACC"
 | 
					    0x54, 0x4d, 0x41, 0x58, 0x0, // @494 "TMAX"
 | 
				
			||||||
    0x49, 0x4e, 0x56, 0x0, // @470 "INV"
 | 
					    0x54, 0x53, 0x4d, 0x53, 0x0, // @499 "TSMS"
 | 
				
			||||||
    0x49, 0x54, 0x53, 0x0, // @474 "ITS"
 | 
					    0x54, 0x54, 0x46, 0x4c, 0x0, // @504 "TTFL"
 | 
				
			||||||
    0x52, 0x32, 0x44, 0x0, // @478 "R2D"
 | 
					    0x54, 0x54, 0x46, 0x52, 0x0, // @509 "TTFR"
 | 
				
			||||||
    0x53, 0x43, 0x53, 0x0, // @482 "SCS"
 | 
					    0x54, 0x54, 0x52, 0x4c, 0x0, // @514 "TTRL"
 | 
				
			||||||
    0x53, 0x44, 0x43, 0x0, // @486 "SDC"
 | 
					    0x54, 0x54, 0x52, 0x52, 0x0, // @519 "TTRR"
 | 
				
			||||||
    0x4c, 0x56, 0x0 // @490 "LV"
 | 
					    0x56, 0x4d, 0x49, 0x4e, 0x0, // @524 "VMIN"
 | 
				
			||||||
 | 
					    0x41, 0x43, 0x43, 0x0, // @529 "ACC"
 | 
				
			||||||
 | 
					    0x43, 0x55, 0x52, 0x0, // @533 "CUR"
 | 
				
			||||||
 | 
					    0x49, 0x4e, 0x56, 0x0, // @537 "INV"
 | 
				
			||||||
 | 
					    0x49, 0x54, 0x53, 0x0, // @541 "ITS"
 | 
				
			||||||
 | 
					    0x52, 0x32, 0x44, 0x0, // @545 "R2D"
 | 
				
			||||||
 | 
					    0x53, 0x43, 0x53, 0x0, // @549 "SCS"
 | 
				
			||||||
 | 
					    0x53, 0x44, 0x43, 0x0, // @553 "SDC"
 | 
				
			||||||
 | 
					    0x4c, 0x56, 0x0 // @557 "LV"
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
TEXT_LOCATION_FLASH_PRAGMA
 | 
					TEXT_LOCATION_FLASH_PRAGMA
 | 
				
			||||||
 | 
				
			|||||||
@ -13,6 +13,7 @@ extern touchgfx::GeneratedFont& getFont_lucon_TTF_50_4bpp();
 | 
				
			|||||||
extern touchgfx::GeneratedFont& getFont_verdanab_20_4bpp();
 | 
					extern touchgfx::GeneratedFont& getFont_verdanab_20_4bpp();
 | 
				
			||||||
extern touchgfx::GeneratedFont& getFont_lucon_TTF_33_4bpp();
 | 
					extern touchgfx::GeneratedFont& getFont_lucon_TTF_33_4bpp();
 | 
				
			||||||
extern touchgfx::GeneratedFont& getFont_lucon_TTF_20_4bpp();
 | 
					extern touchgfx::GeneratedFont& getFont_lucon_TTF_20_4bpp();
 | 
				
			||||||
 | 
					extern touchgfx::GeneratedFont& getFont_lucon_TTF_80_4bpp();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const touchgfx::Font* touchgfx_fonts[] = {
 | 
					const touchgfx::Font* touchgfx_fonts[] = {
 | 
				
			||||||
    &(getFont_verdana_20_4bpp()),
 | 
					    &(getFont_verdana_20_4bpp()),
 | 
				
			||||||
@ -22,7 +23,8 @@ const touchgfx::Font* touchgfx_fonts[] = {
 | 
				
			|||||||
    &(getFont_lucon_TTF_50_4bpp()),
 | 
					    &(getFont_lucon_TTF_50_4bpp()),
 | 
				
			||||||
    &(getFont_verdanab_20_4bpp()),
 | 
					    &(getFont_verdanab_20_4bpp()),
 | 
				
			||||||
    &(getFont_lucon_TTF_33_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[];
 | 
					extern const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[];
 | 
				
			||||||
@ -83,6 +85,32 @@ 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 },
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 7, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 1, touchgfx::LEFT, 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 },
 | 
				
			||||||
    { 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 +140,9 @@ const touchgfx::TypedText::TypedTextData typedText_database_GB[] TEXT_LOCATION_F
 | 
				
			|||||||
    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 3, touchgfx::CENTER, 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 },
 | 
					    { 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 1, touchgfx::CENTER, 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 },
 | 
				
			||||||
    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
@ -179,6 +204,32 @@ 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 },
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 6, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 2, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 7, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
 | 
					    { 1, touchgfx::LEFT, 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 },
 | 
				
			||||||
    { 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 +259,9 @@ const touchgfx::TypedText::TypedTextData typedText_database_DEFAULT[] TEXT_LOCAT
 | 
				
			|||||||
    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 0, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 3, touchgfx::CENTER, 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 },
 | 
					    { 4, touchgfx::RIGHT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 1, touchgfx::LEFT, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 1, touchgfx::CENTER, 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 },
 | 
				
			||||||
    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 2, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
    { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
					    { 4, touchgfx::CENTER, touchgfx::TEXT_DIRECTION_LTR },
 | 
				
			||||||
@ -278,6 +326,9 @@ void resetFont(touchgfx::FontId fontId)
 | 
				
			|||||||
    case 7:
 | 
					    case 7:
 | 
				
			||||||
        touchgfx_fonts[7] = &(getFont_lucon_TTF_20_4bpp());
 | 
					        touchgfx_fonts[7] = &(getFont_lucon_TTF_20_4bpp());
 | 
				
			||||||
        break;
 | 
					        break;
 | 
				
			||||||
 | 
					    case 8:
 | 
				
			||||||
 | 
					        touchgfx_fonts[8] = &(getFont_lucon_TTF_80_4bpp());
 | 
				
			||||||
 | 
					        break;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
} // namespace TypedTextDatabase
 | 
					} // namespace TypedTextDatabase
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										40
									
								
								TouchGFX/gui/include/gui/apps_screen/APPSPresenter.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								TouchGFX/gui/include/gui/apps_screen/APPSPresenter.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					#ifndef APPSPRESENTER_HPP
 | 
				
			||||||
 | 
					#define APPSPRESENTER_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <gui/model/ModelListener.hpp>
 | 
				
			||||||
 | 
					#include <mvp/Presenter.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					using namespace touchgfx;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class APPSView;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class APPSPresenter : public touchgfx::Presenter, public ModelListener {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  APPSPresenter(APPSView &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 ~APPSPresenter() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void nextScreen() override;
 | 
				
			||||||
 | 
					  void vehicleStateUpdated() override;
 | 
				
			||||||
 | 
					  void paramConfirmed() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					  APPSPresenter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  APPSView &view;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // APPSPRESENTER_HPP
 | 
				
			||||||
							
								
								
									
										45
									
								
								TouchGFX/gui/include/gui/apps_screen/APPSView.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								TouchGFX/gui/include/gui/apps_screen/APPSView.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
				
			|||||||
 | 
					#ifndef APPSVIEW_HPP
 | 
				
			||||||
 | 
					#define APPSVIEW_HPP
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "params.h"
 | 
				
			||||||
 | 
					#include <gui/apps_screen/APPSPresenter.hpp>
 | 
				
			||||||
 | 
					#include <gui_generated/apps_screen/APPSViewBase.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class APPSView : public APPSViewBase {
 | 
				
			||||||
 | 
					public:
 | 
				
			||||||
 | 
					  static constexpr int FIELD_COUNT = 4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  APPSView();
 | 
				
			||||||
 | 
					  virtual ~APPSView() {}
 | 
				
			||||||
 | 
					  virtual void setupScreen();
 | 
				
			||||||
 | 
					  virtual void tearDownScreen();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void selectPrevField() override;
 | 
				
			||||||
 | 
					  void selectNextField() override;
 | 
				
			||||||
 | 
					  void decField() override;
 | 
				
			||||||
 | 
					  void incField() override;
 | 
				
			||||||
 | 
					  void confirmField() override;
 | 
				
			||||||
 | 
					  void switchPrecision() override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void abxParamConfirmed(ParamType param);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void updateFieldValues();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  void addGraphPoints(float apps0, float apps1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					protected:
 | 
				
			||||||
 | 
					private:
 | 
				
			||||||
 | 
					  int selectedField;
 | 
				
			||||||
 | 
					  float precision = 0.001f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  bool fieldsDirty[FIELD_COUNT] = {false};
 | 
				
			||||||
 | 
					  ParamType fieldParams[FIELD_COUNT] = {PF_APPS0_MIN, PF_APPS0_MAX,
 | 
				
			||||||
 | 
					                                        PF_APPS1_MIN, PF_APPS1_MAX};
 | 
				
			||||||
 | 
					  touchgfx::TextAreaWithOneWildcard *fieldWidgets[FIELD_COUNT] = {nullptr};
 | 
				
			||||||
 | 
					  touchgfx::Box *fieldBackgrounds[FIELD_COUNT] = {nullptr};
 | 
				
			||||||
 | 
					  touchgfx::Unicode::UnicodeChar fieldBuffers[FIELD_COUNT][16];
 | 
				
			||||||
 | 
					  touchgfx::Unicode::UnicodeChar apps0Buffer[16];
 | 
				
			||||||
 | 
					  touchgfx::Unicode::UnicodeChar apps1Buffer[16];
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif // APPSVIEW_HPP
 | 
				
			||||||
							
								
								
									
										25
									
								
								TouchGFX/gui/include/gui/containers/ProgressBar.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								TouchGFX/gui/include/gui/containers/ProgressBar.hpp
									
									
									
									
									
										Normal 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
 | 
				
			||||||
@ -3,15 +3,11 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "gui/common/NamedField.hpp"
 | 
					#include "gui/common/NamedField.hpp"
 | 
				
			||||||
#include "gui/containers/DriverViewFieldSelection.hpp"
 | 
					#include "gui/containers/DriverViewFieldSelection.hpp"
 | 
				
			||||||
#include "touchgfx/Unicode.hpp"
 | 
					 | 
				
			||||||
#include "touchgfx/containers/scrollers/DrawableList.hpp"
 | 
					 | 
				
			||||||
#include <gui/driverview_screen/DriverViewPresenter.hpp>
 | 
					#include <gui/driverview_screen/DriverViewPresenter.hpp>
 | 
				
			||||||
#include <gui_generated/driverview_screen/DriverViewViewBase.hpp>
 | 
					#include <gui_generated/driverview_screen/DriverViewViewBase.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "vehicle_state.h"
 | 
					#include "vehicle_state.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
enum class DriverViewProgressType { PRECHARGE, R2D };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class DriverViewView : public DriverViewViewBase {
 | 
					class DriverViewView : public DriverViewViewBase {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  DriverViewView();
 | 
					  DriverViewView();
 | 
				
			||||||
@ -28,7 +24,7 @@ public:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  void setTemps(const Temperatures &temps);
 | 
					  void setTemps(const Temperatures &temps);
 | 
				
			||||||
  void setTSSoC(uint8_t soc);
 | 
					  void setTSSoC(uint8_t soc);
 | 
				
			||||||
  void setProgress(bool active, DriverViewProgressType type, float progress);
 | 
					  void updateProgress();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  void showAMSError();
 | 
					  void showAMSError();
 | 
				
			||||||
  void clearErrorPopup();
 | 
					  void clearErrorPopup();
 | 
				
			||||||
@ -53,7 +49,6 @@ private:
 | 
				
			|||||||
  size_t selectedFieldIndex;
 | 
					  size_t selectedFieldIndex;
 | 
				
			||||||
  DataFieldType fieldTypes[NUM_FIELDS];
 | 
					  DataFieldType fieldTypes[NUM_FIELDS];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  touchgfx::Unicode::UnicodeChar r2dProgBuffer[16];
 | 
					 | 
				
			||||||
  touchgfx::Unicode::UnicodeChar socBuffer[4];
 | 
					  touchgfx::Unicode::UnicodeChar socBuffer[4];
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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
 | 
				
			||||||
							
								
								
									
										79
									
								
								TouchGFX/gui/include/gui/endurance_screen/EnduranceView.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								TouchGFX/gui/include/gui/endurance_screen/EnduranceView.hpp
									
									
									
									
									
										Normal 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
 | 
				
			||||||
							
								
								
									
										28
									
								
								TouchGFX/gui/src/apps_screen/APPSPresenter.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								TouchGFX/gui/src/apps_screen/APPSPresenter.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					#include "stm32h7xx_hal.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <gui/apps_screen/APPSPresenter.hpp>
 | 
				
			||||||
 | 
					#include <gui/apps_screen/APPSView.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPSPresenter::APPSPresenter(APPSView &v) : view(v) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSPresenter::activate() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSPresenter::deactivate() {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSPresenter::nextScreen() {
 | 
				
			||||||
 | 
					  static_cast<FrontendApplication *>(Application::getInstance())
 | 
				
			||||||
 | 
					      ->gotoSDCScreenNoTransition();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSPresenter::vehicleStateUpdated() {
 | 
				
			||||||
 | 
					  static uint32_t last_graph_update = 0;
 | 
				
			||||||
 | 
					  view.updateFieldValues();
 | 
				
			||||||
 | 
					  if (HAL_GetTick() - last_graph_update > 100) {
 | 
				
			||||||
 | 
					    view.addGraphPoints(vehicle_state.apps0_out, vehicle_state.apps1_out);
 | 
				
			||||||
 | 
					    last_graph_update = HAL_GetTick();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSPresenter::paramConfirmed() {
 | 
				
			||||||
 | 
					  view.abxParamConfirmed(vehicle_state.last_param_confirmed);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										137
									
								
								TouchGFX/gui/src/apps_screen/APPSView.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								TouchGFX/gui/src/apps_screen/APPSView.cpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,137 @@
 | 
				
			|||||||
 | 
					#include "params.h"
 | 
				
			||||||
 | 
					#include "touchgfx/Color.hpp"
 | 
				
			||||||
 | 
					#include "vehicle_state.h"
 | 
				
			||||||
 | 
					#include <gui/apps_screen/APPSView.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					APPSView::APPSView() : selectedField{-1} {
 | 
				
			||||||
 | 
					  for (size_t i = 0; i < FIELD_COUNT; i++) {
 | 
				
			||||||
 | 
					    fieldsDirty[i] = false;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  fieldWidgets[0] = &apps0min;
 | 
				
			||||||
 | 
					  fieldWidgets[1] = &apps0max;
 | 
				
			||||||
 | 
					  fieldWidgets[2] = &apps1min;
 | 
				
			||||||
 | 
					  fieldWidgets[3] = &apps1max;
 | 
				
			||||||
 | 
					  fieldBackgrounds[0] = &apps0min_bg;
 | 
				
			||||||
 | 
					  fieldBackgrounds[1] = &apps0max_bg;
 | 
				
			||||||
 | 
					  fieldBackgrounds[2] = &apps1min_bg;
 | 
				
			||||||
 | 
					  fieldBackgrounds[3] = &apps1max_bg;
 | 
				
			||||||
 | 
					  params.apps0_min = vehicle_state.apps0_min;
 | 
				
			||||||
 | 
					  params.apps0_max = vehicle_state.apps0_max;
 | 
				
			||||||
 | 
					  params.apps1_min = vehicle_state.apps1_min;
 | 
				
			||||||
 | 
					  params.apps1_max = vehicle_state.apps1_max;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::setupScreen() { APPSViewBase::setupScreen(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::tearDownScreen() { APPSViewBase::tearDownScreen(); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::selectPrevField() {
 | 
				
			||||||
 | 
					  if (selectedField != -1) {
 | 
				
			||||||
 | 
					    fieldBackgrounds[selectedField]->setVisible(false);
 | 
				
			||||||
 | 
					    fieldBackgrounds[selectedField]->invalidate();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (selectedField == -1) {
 | 
				
			||||||
 | 
					    selectedField = FIELD_COUNT - 1;
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    selectedField = (selectedField - 1) % FIELD_COUNT;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  fieldBackgrounds[selectedField]->setVisible(true);
 | 
				
			||||||
 | 
					  fieldBackgrounds[selectedField]->invalidate();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::selectNextField() {
 | 
				
			||||||
 | 
					  if (selectedField != -1) {
 | 
				
			||||||
 | 
					    fieldBackgrounds[selectedField]->setVisible(false);
 | 
				
			||||||
 | 
					    fieldBackgrounds[selectedField]->invalidate();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  selectedField = (selectedField + 1) % FIELD_COUNT;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  fieldBackgrounds[selectedField]->setVisible(true);
 | 
				
			||||||
 | 
					  fieldBackgrounds[selectedField]->invalidate();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::decField() {
 | 
				
			||||||
 | 
					  if (selectedField == -1) {
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  fieldsDirty[selectedField] = true;
 | 
				
			||||||
 | 
					  params_dec(fieldParams[selectedField]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::incField() {
 | 
				
			||||||
 | 
					  if (selectedField == -1) {
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  fieldsDirty[selectedField] = true;
 | 
				
			||||||
 | 
					  params_inc(fieldParams[selectedField]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::confirmField() {
 | 
				
			||||||
 | 
					  if (selectedField == -1) {
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  params_broadcast(fieldParams[selectedField]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::switchPrecision() {
 | 
				
			||||||
 | 
					  if (precision == 0.001f) {
 | 
				
			||||||
 | 
					    precision = 0.01f;
 | 
				
			||||||
 | 
					  } else {
 | 
				
			||||||
 | 
					    precision = 0.001f;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  for (ParamType ¶m : fieldParams) {
 | 
				
			||||||
 | 
					    param_steps[param] = precision;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::abxParamConfirmed(ParamType param) {
 | 
				
			||||||
 | 
					  for (size_t i = 0; i < FIELD_COUNT; i++) {
 | 
				
			||||||
 | 
					    if (fieldParams[i] == param) {
 | 
				
			||||||
 | 
					      fieldsDirty[i] = false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::updateFieldValues() {
 | 
				
			||||||
 | 
					  float values[FIELD_COUNT];
 | 
				
			||||||
 | 
					  values[0] = vehicle_state.apps0_min;
 | 
				
			||||||
 | 
					  values[1] = vehicle_state.apps0_max;
 | 
				
			||||||
 | 
					  values[2] = vehicle_state.apps1_min;
 | 
				
			||||||
 | 
					  values[3] = vehicle_state.apps1_max;
 | 
				
			||||||
 | 
					  for (size_t i = 0; i < FIELD_COUNT; i++) {
 | 
				
			||||||
 | 
					    auto &buf = fieldBuffers[i];
 | 
				
			||||||
 | 
					    if (fieldsDirty[i]) {
 | 
				
			||||||
 | 
					      values[i] = params.valuesFloat[fieldParams[i]];
 | 
				
			||||||
 | 
					      fieldWidgets[i]->setColor(
 | 
				
			||||||
 | 
					          touchgfx::Color::getColorFromRGB(0xff, 0x00, 0x00));
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      fieldWidgets[i]->setColor(
 | 
				
			||||||
 | 
					          touchgfx::Color::getColorFromRGB(0xff, 0xff, 0xff));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    touchgfx::Unicode::snprintfFloat(buf, sizeof(buf) / sizeof(*buf), "%5.3f",
 | 
				
			||||||
 | 
					                                     values[i]);
 | 
				
			||||||
 | 
					    fieldWidgets[i]->setWildcard(buf);
 | 
				
			||||||
 | 
					    fieldWidgets[i]->invalidate();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  touchgfx::Unicode::snprintfFloat(apps0Buffer,
 | 
				
			||||||
 | 
					                                   sizeof(apps0Buffer) / sizeof(*apps0Buffer),
 | 
				
			||||||
 | 
					                                   "%5.3f", vehicle_state.apps0_volt);
 | 
				
			||||||
 | 
					  apps0cur.setWildcard(apps0Buffer);
 | 
				
			||||||
 | 
					  apps0cur.invalidate();
 | 
				
			||||||
 | 
					  touchgfx::Unicode::snprintfFloat(apps1Buffer,
 | 
				
			||||||
 | 
					                                   sizeof(apps1Buffer) / sizeof(*apps1Buffer),
 | 
				
			||||||
 | 
					                                   "%5.3f", vehicle_state.apps1_volt);
 | 
				
			||||||
 | 
					  apps1cur.setWildcard(apps1Buffer);
 | 
				
			||||||
 | 
					  apps1cur.invalidate();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void APPSView::addGraphPoints(float apps0, float apps1) {
 | 
				
			||||||
 | 
					  apps0Graph.addDataPoint(apps0 * 100);
 | 
				
			||||||
 | 
					  apps1Graph.addDataPoint(apps1 * 100);
 | 
				
			||||||
 | 
					  apps0Graph.invalidate();
 | 
				
			||||||
 | 
					  apps1Graph.invalidate();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -275,13 +275,30 @@ static_assert(sizeof(dataFieldDescs) / sizeof(dataFieldDescs[0]) ==
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
NamedFieldDescription paramFieldDescs[] = {
 | 
					NamedFieldDescription paramFieldDescs[] = {
 | 
				
			||||||
    [PF_BBAL] = {NamedFieldKind::Float, "BBAL", 2, 1, PARAM_FIELD(bbal)},
 | 
					    [PF_BBAL] = {NamedFieldKind::Float, "BBAL", 2, 1, PARAM_FIELD(bbal)},
 | 
				
			||||||
    [PF_SLIPREF] = {NamedFieldKind::Float, "SLIPREF", 2, 2,
 | 
					 | 
				
			||||||
                    PARAM_FIELD(slipref)},
 | 
					 | 
				
			||||||
    [PF_MUMAX] = {NamedFieldKind::Float, "MUMAX", 2, 1, PARAM_FIELD(mumax)},
 | 
					 | 
				
			||||||
    [PF_ASRP] = {NamedFieldKind::Int, "ASR-P", 2, 0, PARAM_FIELD(asrp)},
 | 
					 | 
				
			||||||
    [PF_ASRON] = {NamedFieldKind::Int, "ASR-ON", 2, 0, PARAM_FIELD(asron)},
 | 
					 | 
				
			||||||
    [PF_ASRI] = {NamedFieldKind::Int, "ASR-I", 2, 0, PARAM_FIELD(asri)},
 | 
					 | 
				
			||||||
    [PF_PLIM] = {NamedFieldKind::Int, "PLIM", 2, 0, PARAM_FIELD(plim)},
 | 
					    [PF_PLIM] = {NamedFieldKind::Int, "PLIM", 2, 0, PARAM_FIELD(plim)},
 | 
				
			||||||
 | 
					    [PF_TORQUE] = {NamedFieldKind::Float, "TSCALE", 3, 1, PARAM_FIELD(torque)},
 | 
				
			||||||
 | 
					    [PF_SLIM] = {NamedFieldKind::Int, "SLIM", 2, 0, PARAM_FIELD(slim)},
 | 
				
			||||||
 | 
					    [PF_APPS0_MIN] = {NamedFieldKind::Float, "APPS0MIN", 3, 1,
 | 
				
			||||||
 | 
					                      PARAM_FIELD(apps0_min)},
 | 
				
			||||||
 | 
					    [PF_APPS0_MAX] = {NamedFieldKind::Float, "APPS0MAX", 3, 1,
 | 
				
			||||||
 | 
					                      PARAM_FIELD(apps0_max)},
 | 
				
			||||||
 | 
					    [PF_APPS1_MIN] = {NamedFieldKind::Float, "APPS1MIN", 3, 1,
 | 
				
			||||||
 | 
					                      PARAM_FIELD(apps1_min)},
 | 
				
			||||||
 | 
					    [PF_APPS1_MAX] = {NamedFieldKind::Float, "APPS1MAX", 3, 1,
 | 
				
			||||||
 | 
					                      PARAM_FIELD(apps1_max)},
 | 
				
			||||||
 | 
					    [PF_TV] = {NamedFieldKind::Int, "TV", 3, 0, PARAM_FIELD(tv)},
 | 
				
			||||||
 | 
					    [PF_TC] = {NamedFieldKind::Int, "TC", 3, 0, PARAM_FIELD(tc)},
 | 
				
			||||||
 | 
					    [PF_TC_SLIPREF] = {NamedFieldKind::Float, "TCSLIPREF", 3, 1,
 | 
				
			||||||
 | 
					                       PARAM_FIELD(tc_slipref)},
 | 
				
			||||||
 | 
					    [PF_TC_MUMAX] = {NamedFieldKind::Float, "TCMUMAX", 3, 1,
 | 
				
			||||||
 | 
					                     PARAM_FIELD(tc_mumax)},
 | 
				
			||||||
 | 
					    [PF_TC_P] = {NamedFieldKind::Float, "TCP", 3, 1, PARAM_FIELD(tc_p)},
 | 
				
			||||||
 | 
					    [PF_TC_I] = {NamedFieldKind::Float, "TCI", 3, 1, PARAM_FIELD(tc_i)},
 | 
				
			||||||
 | 
					    [PF_DRS_CLOSED] = {NamedFieldKind::Float, "DRSCLOSED", 3, 1,
 | 
				
			||||||
 | 
					                       PARAM_FIELD(drs_closed)},
 | 
				
			||||||
 | 
					    [PF_DRS_OPEN] = {NamedFieldKind::Float, "DRSOPEN", 3, 1,
 | 
				
			||||||
 | 
					                     PARAM_FIELD(drs_open)},
 | 
				
			||||||
 | 
					    [PF_MAP] = {NamedFieldKind::Int, "MAP", 3, 0, PARAM_FIELD(map)},
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static_assert(sizeof(paramFieldDescs) / sizeof(paramFieldDescs[0]) ==
 | 
					static_assert(sizeof(paramFieldDescs) / sizeof(paramFieldDescs[0]) ==
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										61
									
								
								TouchGFX/gui/src/containers/ProgressBar.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								TouchGFX/gui/src/containers/ProgressBar.cpp
									
									
									
									
									
										Normal 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();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -2,6 +2,7 @@
 | 
				
			|||||||
#include <gui/driverview_screen/DriverViewView.hpp>
 | 
					#include <gui/driverview_screen/DriverViewView.hpp>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "gui/common/NamedField.hpp"
 | 
					#include "gui/common/NamedField.hpp"
 | 
				
			||||||
 | 
					#include "gui/containers/ProgressBar.hpp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
constexpr int32_t SHOW_ERRORS_FOR = 10000; // ms
 | 
					constexpr int32_t SHOW_ERRORS_FOR = 10000; // ms
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -24,7 +25,7 @@ void DriverViewPresenter::deactivate() {}
 | 
				
			|||||||
void DriverViewPresenter::vehicleStateUpdated() {
 | 
					void DriverViewPresenter::vehicleStateUpdated() {
 | 
				
			||||||
  view.setTemps(vehicle_state.temps);
 | 
					  view.setTemps(vehicle_state.temps);
 | 
				
			||||||
  view.setTSSoC(vehicle_state.soc_ts);
 | 
					  view.setTSSoC(vehicle_state.soc_ts);
 | 
				
			||||||
  updateProgress();
 | 
					  view.updateProgress();
 | 
				
			||||||
  updateErrorPopup();
 | 
					  updateErrorPopup();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  view.updateFieldValues();
 | 
					  view.updateFieldValues();
 | 
				
			||||||
@ -41,23 +42,6 @@ void DriverViewPresenter::setFieldType(size_t i, DataFieldType type) {
 | 
				
			|||||||
  view.setFieldType(i, 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() {
 | 
					void DriverViewPresenter::updateErrorPopup() {
 | 
				
			||||||
  static uint32_t last_error = 0;
 | 
					  static uint32_t last_error = 0;
 | 
				
			||||||
  if (vehicle_state.ts_state == TS_ERROR) {
 | 
					  if (vehicle_state.ts_state == TS_ERROR) {
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
#include "gui/common/NamedField.hpp"
 | 
					#include "gui/common/NamedField.hpp"
 | 
				
			||||||
#include "gui/containers/DriverViewField.hpp"
 | 
					#include "gui/containers/DriverViewField.hpp"
 | 
				
			||||||
#include "gui/containers/DriverViewStatusItem.hpp"
 | 
					#include "gui/containers/DriverViewStatusItem.hpp"
 | 
				
			||||||
 | 
					#include "gui/containers/ProgressBar.hpp"
 | 
				
			||||||
#include "gui/driverview_screen/DriverViewPresenter.hpp"
 | 
					#include "gui/driverview_screen/DriverViewPresenter.hpp"
 | 
				
			||||||
#include "texts/TextKeysAndLanguages.hpp"
 | 
					 | 
				
			||||||
#include "touchgfx/Callback.hpp"
 | 
					#include "touchgfx/Callback.hpp"
 | 
				
			||||||
#include "touchgfx/Drawable.hpp"
 | 
					#include "touchgfx/Drawable.hpp"
 | 
				
			||||||
#include "touchgfx/Unicode.hpp"
 | 
					#include "touchgfx/Unicode.hpp"
 | 
				
			||||||
@ -96,45 +96,7 @@ void DriverViewView::setTSSoC(uint8_t value) {
 | 
				
			|||||||
  socLabel.invalidate();
 | 
					  socLabel.invalidate();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DriverViewView::setProgress(bool active, DriverViewProgressType type,
 | 
					void DriverViewView::updateProgress() { progressBar.update(); }
 | 
				
			||||||
                                 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::showAMSError() {
 | 
					void DriverViewView::showAMSError() {
 | 
				
			||||||
  errorPopup.setVisible(true);
 | 
					  errorPopup.setVisible(true);
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										20
									
								
								TouchGFX/gui/src/endurance_screen/EndurancePresenter.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								TouchGFX/gui/src/endurance_screen/EndurancePresenter.cpp
									
									
									
									
									
										Normal 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();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										174
									
								
								TouchGFX/gui/src/endurance_screen/EnduranceView.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										174
									
								
								TouchGFX/gui/src/endurance_screen/EnduranceView.cpp
									
									
									
									
									
										Normal 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();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -27,7 +27,7 @@ void MissionSelectPresenter::vehicleStateUpdated() {
 | 
				
			|||||||
    // Do nothing
 | 
					    // Do nothing
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  case MISSION_MANUAL:
 | 
					  case MISSION_MANUAL:
 | 
				
			||||||
    app->gotoDriverViewScreenNoTransition();
 | 
					    app->gotoEnduranceScreenNoTransition();
 | 
				
			||||||
    break;
 | 
					    break;
 | 
				
			||||||
  default:
 | 
					  default:
 | 
				
			||||||
    app->gotoAMIScreenNoTransition();
 | 
					    app->gotoAMIScreenNoTransition();
 | 
				
			||||||
@ -39,7 +39,7 @@ void MissionSelectPresenter::nextScreen() {
 | 
				
			|||||||
      static_cast<FrontendApplication *>(FrontendApplication::getInstance());
 | 
					      static_cast<FrontendApplication *>(FrontendApplication::getInstance());
 | 
				
			||||||
  if (app->getBackToMissionSelect()) {
 | 
					  if (app->getBackToMissionSelect()) {
 | 
				
			||||||
    if (vehicle_state.active_mission == MISSION_MANUAL) {
 | 
					    if (vehicle_state.active_mission == MISSION_MANUAL) {
 | 
				
			||||||
      app->gotoDriverViewScreenNoTransition();
 | 
					      app->gotoEnduranceScreenNoTransition();
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      app->gotoAMIScreenNoTransition();
 | 
					      app->gotoAMIScreenNoTransition();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -4,7 +4,56 @@
 | 
				
			|||||||
Model::Model() : modelListener(0) {}
 | 
					Model::Model() : modelListener(0) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef SIMULATOR
 | 
					#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
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "main.h"
 | 
					#include "main.h"
 | 
				
			||||||
 | 
				
			|||||||
@ -11,7 +11,7 @@ void VehicleConfigPresenter::deactivate() {}
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void VehicleConfigPresenter::nextScreen() {
 | 
					void VehicleConfigPresenter::nextScreen() {
 | 
				
			||||||
  static_cast<FrontendApplication *>(Application::getInstance())
 | 
					  static_cast<FrontendApplication *>(Application::getInstance())
 | 
				
			||||||
      ->gotoSDCScreenNoTransition();
 | 
					      ->gotoAPPSScreenNoTransition();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void VehicleConfigPresenter::paramConfirmed() {
 | 
					void VehicleConfigPresenter::paramConfirmed() {
 | 
				
			||||||
 | 
				
			|||||||
@ -204,6 +204,30 @@
 | 
				
			|||||||
              "ScreenTransitionType": "ScreenTransitionNone",
 | 
					              "ScreenTransitionType": "ScreenTransitionNone",
 | 
				
			||||||
              "ActionComponent": "SDC"
 | 
					              "ActionComponent": "SDC"
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "InteractionName": "DummyChangeEnduranceView",
 | 
				
			||||||
 | 
					            "Trigger": {
 | 
				
			||||||
 | 
					              "Type": "TriggerPhysicalButtonClicked",
 | 
				
			||||||
 | 
					              "ButtonKey": 249
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Action": {
 | 
				
			||||||
 | 
					              "Type": "ActionGotoScreen",
 | 
				
			||||||
 | 
					              "ScreenTransitionType": "ScreenTransitionNone",
 | 
				
			||||||
 | 
					              "ActionComponent": "Endurance"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "InteractionName": "DummyChangeAPPSView",
 | 
				
			||||||
 | 
					            "Trigger": {
 | 
				
			||||||
 | 
					              "Type": "TriggerPhysicalButtonClicked",
 | 
				
			||||||
 | 
					              "ButtonKey": 248
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Action": {
 | 
				
			||||||
 | 
					              "Type": "ActionGotoScreen",
 | 
				
			||||||
 | 
					              "ScreenTransitionType": "ScreenTransitionNone",
 | 
				
			||||||
 | 
					              "ActionComponent": "APPS"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
          }
 | 
					          }
 | 
				
			||||||
        ]
 | 
					        ]
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
@ -248,7 +272,7 @@
 | 
				
			|||||||
                "X": 273,
 | 
					                "X": 273,
 | 
				
			||||||
                "Y": 103,
 | 
					                "Y": 103,
 | 
				
			||||||
                "Width": 84,
 | 
					                "Width": 84,
 | 
				
			||||||
                "Height": 25,
 | 
					                "Height": 24,
 | 
				
			||||||
                "TextId": "__SingleUse_3MDX",
 | 
					                "TextId": "__SingleUse_3MDX",
 | 
				
			||||||
                "TextRotation": "0",
 | 
					                "TextRotation": "0",
 | 
				
			||||||
                "Color": {
 | 
					                "Color": {
 | 
				
			||||||
@ -264,7 +288,7 @@
 | 
				
			|||||||
                "X": 273,
 | 
					                "X": 273,
 | 
				
			||||||
                "Y": 135,
 | 
					                "Y": 135,
 | 
				
			||||||
                "Width": 85,
 | 
					                "Width": 85,
 | 
				
			||||||
                "Height": 25,
 | 
					                "Height": 24,
 | 
				
			||||||
                "TextId": "__SingleUse_JFR7",
 | 
					                "TextId": "__SingleUse_JFR7",
 | 
				
			||||||
                "TextRotation": "0",
 | 
					                "TextRotation": "0",
 | 
				
			||||||
                "Color": {
 | 
					                "Color": {
 | 
				
			||||||
@ -344,7 +368,7 @@
 | 
				
			|||||||
                "X": 273,
 | 
					                "X": 273,
 | 
				
			||||||
                "Y": 198,
 | 
					                "Y": 198,
 | 
				
			||||||
                "Width": 129,
 | 
					                "Width": 129,
 | 
				
			||||||
                "Height": 25,
 | 
					                "Height": 24,
 | 
				
			||||||
                "TextId": "__SingleUse_590R",
 | 
					                "TextId": "__SingleUse_590R",
 | 
				
			||||||
                "TextRotation": "0",
 | 
					                "TextRotation": "0",
 | 
				
			||||||
                "Color": {
 | 
					                "Color": {
 | 
				
			||||||
@ -360,7 +384,7 @@
 | 
				
			|||||||
                "X": 273,
 | 
					                "X": 273,
 | 
				
			||||||
                "Y": 166,
 | 
					                "Y": 166,
 | 
				
			||||||
                "Width": 128,
 | 
					                "Width": 128,
 | 
				
			||||||
                "Height": 25,
 | 
					                "Height": 24,
 | 
				
			||||||
                "TextId": "__SingleUse_Z78U",
 | 
					                "TextId": "__SingleUse_Z78U",
 | 
				
			||||||
                "TextRotation": "0",
 | 
					                "TextRotation": "0",
 | 
				
			||||||
                "Color": {
 | 
					                "Color": {
 | 
				
			||||||
@ -664,7 +688,7 @@
 | 
				
			|||||||
                "X": 68,
 | 
					                "X": 68,
 | 
				
			||||||
                "Y": 247,
 | 
					                "Y": 247,
 | 
				
			||||||
                "Width": 255,
 | 
					                "Width": 255,
 | 
				
			||||||
                "Height": 25,
 | 
					                "Height": 24,
 | 
				
			||||||
                "TextId": "__SingleUse_0L75",
 | 
					                "TextId": "__SingleUse_0L75",
 | 
				
			||||||
                "TextRotation": "0",
 | 
					                "TextRotation": "0",
 | 
				
			||||||
                "Color": {
 | 
					                "Color": {
 | 
				
			||||||
@ -680,7 +704,7 @@
 | 
				
			|||||||
                "X": 68,
 | 
					                "X": 68,
 | 
				
			||||||
                "Y": 215,
 | 
					                "Y": 215,
 | 
				
			||||||
                "Width": 273,
 | 
					                "Width": 273,
 | 
				
			||||||
                "Height": 25,
 | 
					                "Height": 24,
 | 
				
			||||||
                "TextId": "__SingleUse_GA13",
 | 
					                "TextId": "__SingleUse_GA13",
 | 
				
			||||||
                "TextRotation": "0",
 | 
					                "TextRotation": "0",
 | 
				
			||||||
                "Color": {
 | 
					                "Color": {
 | 
				
			||||||
@ -760,7 +784,7 @@
 | 
				
			|||||||
                "X": 68,
 | 
					                "X": 68,
 | 
				
			||||||
                "Y": 184,
 | 
					                "Y": 184,
 | 
				
			||||||
                "Width": 259,
 | 
					                "Width": 259,
 | 
				
			||||||
                "Height": 25,
 | 
					                "Height": 24,
 | 
				
			||||||
                "TextId": "__SingleUse_OOU3",
 | 
					                "TextId": "__SingleUse_OOU3",
 | 
				
			||||||
                "TextRotation": "0",
 | 
					                "TextRotation": "0",
 | 
				
			||||||
                "Color": {
 | 
					                "Color": {
 | 
				
			||||||
@ -776,7 +800,7 @@
 | 
				
			|||||||
                "X": 68,
 | 
					                "X": 68,
 | 
				
			||||||
                "Y": 152,
 | 
					                "Y": 152,
 | 
				
			||||||
                "Width": 256,
 | 
					                "Width": 256,
 | 
				
			||||||
                "Height": 25,
 | 
					                "Height": 24,
 | 
				
			||||||
                "TextId": "__SingleUse_2FPP",
 | 
					                "TextId": "__SingleUse_2FPP",
 | 
				
			||||||
                "TextRotation": "0",
 | 
					                "TextRotation": "0",
 | 
				
			||||||
                "Color": {
 | 
					                "Color": {
 | 
				
			||||||
@ -1100,70 +1124,11 @@
 | 
				
			|||||||
                ]
 | 
					                ]
 | 
				
			||||||
              },
 | 
					              },
 | 
				
			||||||
              {
 | 
					              {
 | 
				
			||||||
                "Type": "BoxProgress",
 | 
					                "Type": "CustomContainerInstance",
 | 
				
			||||||
                "Name": "progressBar",
 | 
					                "Name": "progressBar",
 | 
				
			||||||
                "Width": 456,
 | 
					                "Width": 456,
 | 
				
			||||||
                "Height": 33,
 | 
					                "Height": 33,
 | 
				
			||||||
                "Visible": false,
 | 
					                "CustomContainerDefinitionName": "ProgressBar"
 | 
				
			||||||
                "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": {}
 | 
					 | 
				
			||||||
              }
 | 
					              }
 | 
				
			||||||
            ]
 | 
					            ]
 | 
				
			||||||
          },
 | 
					          },
 | 
				
			||||||
@ -1627,6 +1592,739 @@
 | 
				
			|||||||
          }
 | 
					          }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "Interactions": []
 | 
					        "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": 24,
 | 
				
			||||||
 | 
					                "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": 24,
 | 
				
			||||||
 | 
					                "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": 24,
 | 
				
			||||||
 | 
					                "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"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					      {
 | 
				
			||||||
 | 
					        "Name": "APPS",
 | 
				
			||||||
 | 
					        "CanvasBufferSize": 7200,
 | 
				
			||||||
 | 
					        "Components": [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "DynamicGraph",
 | 
				
			||||||
 | 
					            "Name": "apps0Graph",
 | 
				
			||||||
 | 
					            "X": 11,
 | 
				
			||||||
 | 
					            "Y": 36,
 | 
				
			||||||
 | 
					            "Width": 458,
 | 
				
			||||||
 | 
					            "Height": 180,
 | 
				
			||||||
 | 
					            "DataSeed": -1468026350,
 | 
				
			||||||
 | 
					            "NumberOfValues": 50,
 | 
				
			||||||
 | 
					            "MaxY": 110.0,
 | 
				
			||||||
 | 
					            "MinY": -10.0,
 | 
				
			||||||
 | 
					            "Precision": "0.1",
 | 
				
			||||||
 | 
					            "LastIndex": 49,
 | 
				
			||||||
 | 
					            "XAxisScale": 1.0,
 | 
				
			||||||
 | 
					            "LabelSizeLeft": 40,
 | 
				
			||||||
 | 
					            "GraphType": "GraphWrapOverwrite",
 | 
				
			||||||
 | 
					            "VerticalFrontline": {
 | 
				
			||||||
 | 
					              "Type": "GraphVerticalFrontline",
 | 
				
			||||||
 | 
					              "Color": {
 | 
				
			||||||
 | 
					                "Red": 137,
 | 
				
			||||||
 | 
					                "Green": 224,
 | 
				
			||||||
 | 
					                "Blue": 13
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              "GapLineWidth": 1
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "GraphDrawers": [
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                "Type": "LineDrawer",
 | 
				
			||||||
 | 
					                "LineWidth": 2,
 | 
				
			||||||
 | 
					                "FileNameImage": "",
 | 
				
			||||||
 | 
					                "Color": {
 | 
				
			||||||
 | 
					                  "Red": 20,
 | 
				
			||||||
 | 
					                  "Green": 151,
 | 
				
			||||||
 | 
					                  "Blue": 197
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					            "YAxisGrid": {
 | 
				
			||||||
 | 
					              "Type": "GraphGrid",
 | 
				
			||||||
 | 
					              "Color": {
 | 
				
			||||||
 | 
					                "Red": 255,
 | 
				
			||||||
 | 
					                "Green": 255,
 | 
				
			||||||
 | 
					                "Blue": 255
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              "Interval": 20.0,
 | 
				
			||||||
 | 
					              "LineWidth": 1
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "YAxisLabel": {
 | 
				
			||||||
 | 
					              "Type": "GraphLabel",
 | 
				
			||||||
 | 
					              "Interval": 20.0,
 | 
				
			||||||
 | 
					              "DecimalSeparator": "Point",
 | 
				
			||||||
 | 
					              "TextColor": {
 | 
				
			||||||
 | 
					                "Red": 255,
 | 
				
			||||||
 | 
					                "Green": 255,
 | 
				
			||||||
 | 
					                "Blue": 255
 | 
				
			||||||
 | 
					              },
 | 
				
			||||||
 | 
					              "TextId": "__SingleUse_RK9Z",
 | 
				
			||||||
 | 
					              "TextRotation": "0",
 | 
				
			||||||
 | 
					              "Position": "Left"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "DynamicGraph",
 | 
				
			||||||
 | 
					            "Name": "apps1Graph",
 | 
				
			||||||
 | 
					            "X": 11,
 | 
				
			||||||
 | 
					            "Y": 36,
 | 
				
			||||||
 | 
					            "Width": 458,
 | 
				
			||||||
 | 
					            "Height": 180,
 | 
				
			||||||
 | 
					            "DataSeed": 484013386,
 | 
				
			||||||
 | 
					            "NumberOfValues": 50,
 | 
				
			||||||
 | 
					            "MaxY": 110.0,
 | 
				
			||||||
 | 
					            "MinY": -10.0,
 | 
				
			||||||
 | 
					            "Precision": "0.1",
 | 
				
			||||||
 | 
					            "LastIndex": 49,
 | 
				
			||||||
 | 
					            "XAxisScale": 1.0,
 | 
				
			||||||
 | 
					            "PaddingLeft": 40,
 | 
				
			||||||
 | 
					            "GraphType": "GraphWrapOverwrite",
 | 
				
			||||||
 | 
					            "GraphDrawers": [
 | 
				
			||||||
 | 
					              {
 | 
				
			||||||
 | 
					                "Type": "LineDrawer",
 | 
				
			||||||
 | 
					                "LineWidth": 2,
 | 
				
			||||||
 | 
					                "FileNameImage": "",
 | 
				
			||||||
 | 
					                "Color": {
 | 
				
			||||||
 | 
					                  "Red": 196,
 | 
				
			||||||
 | 
					                  "Green": 109,
 | 
				
			||||||
 | 
					                  "Blue": 22
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            ]
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "title",
 | 
				
			||||||
 | 
					            "X": 38,
 | 
				
			||||||
 | 
					            "Width": 405,
 | 
				
			||||||
 | 
					            "Height": 30,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_UBFH",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "AutoSize": true
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "apps0",
 | 
				
			||||||
 | 
					            "X": 11,
 | 
				
			||||||
 | 
					            "Y": 247,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 24,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_6EKV",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 20,
 | 
				
			||||||
 | 
					              "Green": 151,
 | 
				
			||||||
 | 
					              "Blue": 197
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "AutoSize": true
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "apps1",
 | 
				
			||||||
 | 
					            "X": 11,
 | 
				
			||||||
 | 
					            "Y": 285,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 24,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_W4YT",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 196,
 | 
				
			||||||
 | 
					              "Green": 109,
 | 
				
			||||||
 | 
					              "Blue": 22
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "AutoSize": true
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "min",
 | 
				
			||||||
 | 
					            "X": 127,
 | 
				
			||||||
 | 
					            "Y": 216,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 24,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_QXG5",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "max",
 | 
				
			||||||
 | 
					            "X": 250,
 | 
				
			||||||
 | 
					            "Y": 216,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 24,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_WQXQ",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "cur",
 | 
				
			||||||
 | 
					            "X": 369,
 | 
				
			||||||
 | 
					            "Y": 216,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 24,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_CBZ9",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "Box",
 | 
				
			||||||
 | 
					            "Name": "apps1max_bg",
 | 
				
			||||||
 | 
					            "X": 250,
 | 
				
			||||||
 | 
					            "Y": 278,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "Visible": false,
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 68,
 | 
				
			||||||
 | 
					              "Green": 68,
 | 
				
			||||||
 | 
					              "Blue": 68
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "Box",
 | 
				
			||||||
 | 
					            "Name": "apps0max_bg",
 | 
				
			||||||
 | 
					            "X": 250,
 | 
				
			||||||
 | 
					            "Y": 240,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "Visible": false,
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 68,
 | 
				
			||||||
 | 
					              "Green": 68,
 | 
				
			||||||
 | 
					              "Blue": 68
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "Box",
 | 
				
			||||||
 | 
					            "Name": "apps1min_bg",
 | 
				
			||||||
 | 
					            "X": 127,
 | 
				
			||||||
 | 
					            "Y": 278,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "Visible": false,
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 68,
 | 
				
			||||||
 | 
					              "Green": 68,
 | 
				
			||||||
 | 
					              "Blue": 68
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "Box",
 | 
				
			||||||
 | 
					            "Name": "apps0min_bg",
 | 
				
			||||||
 | 
					            "X": 127,
 | 
				
			||||||
 | 
					            "Y": 240,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "Visible": false,
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 68,
 | 
				
			||||||
 | 
					              "Green": 68,
 | 
				
			||||||
 | 
					              "Blue": 68
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "apps1cur",
 | 
				
			||||||
 | 
					            "X": 369,
 | 
				
			||||||
 | 
					            "Y": 278,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_SM6H",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Wildcard1": {}
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "apps0cur",
 | 
				
			||||||
 | 
					            "X": 369,
 | 
				
			||||||
 | 
					            "Y": 240,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_8KB4",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Wildcard1": {}
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "apps1max",
 | 
				
			||||||
 | 
					            "X": 250,
 | 
				
			||||||
 | 
					            "Y": 278,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_H8OI",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Wildcard1": {}
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "apps0max",
 | 
				
			||||||
 | 
					            "X": 250,
 | 
				
			||||||
 | 
					            "Y": 240,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_978V",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Wildcard1": {}
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "apps1min",
 | 
				
			||||||
 | 
					            "X": 127,
 | 
				
			||||||
 | 
					            "Y": 278,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_P4TL",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Wildcard1": {}
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "Type": "TextArea",
 | 
				
			||||||
 | 
					            "Name": "apps0min",
 | 
				
			||||||
 | 
					            "X": 127,
 | 
				
			||||||
 | 
					            "Y": 240,
 | 
				
			||||||
 | 
					            "Width": 100,
 | 
				
			||||||
 | 
					            "Height": 38,
 | 
				
			||||||
 | 
					            "TextId": "__SingleUse_MBQT",
 | 
				
			||||||
 | 
					            "TextRotation": "0",
 | 
				
			||||||
 | 
					            "Color": {
 | 
				
			||||||
 | 
					              "Red": 255,
 | 
				
			||||||
 | 
					              "Green": 255,
 | 
				
			||||||
 | 
					              "Blue": 255
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Wildcard1": {}
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ],
 | 
				
			||||||
 | 
					        "Interactions": [
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "InteractionName": "SelectPrevField",
 | 
				
			||||||
 | 
					            "Trigger": {
 | 
				
			||||||
 | 
					              "Type": "TriggerPhysicalButtonClicked",
 | 
				
			||||||
 | 
					              "ButtonKey": 104
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Action": {
 | 
				
			||||||
 | 
					              "Type": "ActionCustom",
 | 
				
			||||||
 | 
					              "FunctionName": "selectPrevField"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "InteractionName": "SelectNextField",
 | 
				
			||||||
 | 
					            "Trigger": {
 | 
				
			||||||
 | 
					              "Type": "TriggerPhysicalButtonClicked",
 | 
				
			||||||
 | 
					              "ButtonKey": 108
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Action": {
 | 
				
			||||||
 | 
					              "Type": "ActionCustom",
 | 
				
			||||||
 | 
					              "FunctionName": "selectNextField"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "InteractionName": "DecField",
 | 
				
			||||||
 | 
					            "Trigger": {
 | 
				
			||||||
 | 
					              "Type": "TriggerPhysicalButtonClicked",
 | 
				
			||||||
 | 
					              "ButtonKey": 107
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Action": {
 | 
				
			||||||
 | 
					              "Type": "ActionCustom",
 | 
				
			||||||
 | 
					              "FunctionName": "decField"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "InteractionName": "IncField",
 | 
				
			||||||
 | 
					            "Trigger": {
 | 
				
			||||||
 | 
					              "Type": "TriggerPhysicalButtonClicked",
 | 
				
			||||||
 | 
					              "ButtonKey": 106
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Action": {
 | 
				
			||||||
 | 
					              "Type": "ActionCustom",
 | 
				
			||||||
 | 
					              "FunctionName": "incField"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "InteractionName": "ConfirmField",
 | 
				
			||||||
 | 
					            "Trigger": {
 | 
				
			||||||
 | 
					              "Type": "TriggerPhysicalButtonClicked",
 | 
				
			||||||
 | 
					              "ButtonKey": 54
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Action": {
 | 
				
			||||||
 | 
					              "Type": "ActionCustom",
 | 
				
			||||||
 | 
					              "FunctionName": "confirmField"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          },
 | 
				
			||||||
 | 
					          {
 | 
				
			||||||
 | 
					            "InteractionName": "SwitchPrecision",
 | 
				
			||||||
 | 
					            "Trigger": {
 | 
				
			||||||
 | 
					              "Type": "TriggerPhysicalButtonClicked",
 | 
				
			||||||
 | 
					              "ButtonKey": 53
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            "Action": {
 | 
				
			||||||
 | 
					              "Type": "ActionCustom",
 | 
				
			||||||
 | 
					              "FunctionName": "switchPrecision"
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        ]
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    "CustomContainerDefinitions": [
 | 
					    "CustomContainerDefinitions": [
 | 
				
			||||||
@ -2107,6 +2805,82 @@
 | 
				
			|||||||
          }
 | 
					          }
 | 
				
			||||||
        ],
 | 
					        ],
 | 
				
			||||||
        "Interactions": []
 | 
					        "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",
 | 
					    "Name": "SteeringWheel",
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
  ******************************************************************************
 | 
					  ******************************************************************************
 | 
				
			||||||
  * @attention
 | 
					  * @attention
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
					  * Copyright (c) 2024 STMicroelectronics.
 | 
				
			||||||
  * All rights reserved.
 | 
					  * All rights reserved.
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,7 @@
 | 
				
			|||||||
  ******************************************************************************
 | 
					  ******************************************************************************
 | 
				
			||||||
  * @attention
 | 
					  * @attention
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
					  * Copyright (c) 2024 STMicroelectronics.
 | 
				
			||||||
  * All rights reserved.
 | 
					  * All rights reserved.
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
  ******************************************************************************
 | 
					  ******************************************************************************
 | 
				
			||||||
  * @attention
 | 
					  * @attention
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
					  * Copyright (c) 2024 STMicroelectronics.
 | 
				
			||||||
  * All rights reserved.
 | 
					  * All rights reserved.
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
  ******************************************************************************
 | 
					  ******************************************************************************
 | 
				
			||||||
  * @attention
 | 
					  * @attention
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
					  * Copyright (c) 2024 STMicroelectronics.
 | 
				
			||||||
  * All rights reserved.
 | 
					  * All rights reserved.
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
  ******************************************************************************
 | 
					  ******************************************************************************
 | 
				
			||||||
  * @attention
 | 
					  * @attention
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
					  * Copyright (c) 2024 STMicroelectronics.
 | 
				
			||||||
  * All rights reserved.
 | 
					  * All rights reserved.
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
				
			|||||||
@ -6,7 +6,7 @@
 | 
				
			|||||||
  ******************************************************************************
 | 
					  ******************************************************************************
 | 
				
			||||||
  * @attention
 | 
					  * @attention
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * Copyright (c) 2023 STMicroelectronics.
 | 
					  * Copyright (c) 2024 STMicroelectronics.
 | 
				
			||||||
  * All rights reserved.
 | 
					  * All rights reserved.
 | 
				
			||||||
  *
 | 
					  *
 | 
				
			||||||
  * This software is licensed under terms that can be found in the LICENSE file
 | 
					  * This software is licensed under terms that can be found in the LICENSE file
 | 
				
			||||||
 | 
				
			|||||||
@ -36,7 +36,7 @@ FDCAN1.NominalTimeSeg1=63
 | 
				
			|||||||
FDCAN1.NominalTimeSeg2=16
 | 
					FDCAN1.NominalTimeSeg2=16
 | 
				
			||||||
FDCAN1.RxFifo0ElmtsNbr=16
 | 
					FDCAN1.RxFifo0ElmtsNbr=16
 | 
				
			||||||
FDCAN1.StdFiltersNbr=32
 | 
					FDCAN1.StdFiltersNbr=32
 | 
				
			||||||
FDCAN1.TxFifoQueueElmtsNbr=1
 | 
					FDCAN1.TxFifoQueueElmtsNbr=32
 | 
				
			||||||
File.Version=6
 | 
					File.Version=6
 | 
				
			||||||
GPIO.groupedBy=Show All
 | 
					GPIO.groupedBy=Show All
 | 
				
			||||||
JPEG.IPParameters=JPEG_RGB_FORMAT
 | 
					JPEG.IPParameters=JPEG_RGB_FORMAT
 | 
				
			||||||
@ -152,8 +152,8 @@ Mcu.Pin7=PF2
 | 
				
			|||||||
Mcu.Pin70=VP_TIM1_VS_ClockSourceINT
 | 
					Mcu.Pin70=VP_TIM1_VS_ClockSourceINT
 | 
				
			||||||
Mcu.Pin71=VP_TIM2_VS_ClockSourceINT
 | 
					Mcu.Pin71=VP_TIM2_VS_ClockSourceINT
 | 
				
			||||||
Mcu.Pin72=VP_TIM17_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.Pin73=VP_STMicroelectronics.X-CUBE-TOUCHGFX_VS_GraphicsJjApplication_4.22.0
 | 
				
			||||||
Mcu.Pin74=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.Pin8=PF3
 | 
				
			||||||
Mcu.Pin9=PF4
 | 
					Mcu.Pin9=PF4
 | 
				
			||||||
Mcu.PinsNb=75
 | 
					Mcu.PinsNb=75
 | 
				
			||||||
@ -448,7 +448,7 @@ ProjectManager.ToolChainLocation=
 | 
				
			|||||||
ProjectManager.UAScriptAfterPath=
 | 
					ProjectManager.UAScriptAfterPath=
 | 
				
			||||||
ProjectManager.UAScriptBeforePath=
 | 
					ProjectManager.UAScriptBeforePath=
 | 
				
			||||||
ProjectManager.UnderRoot=false
 | 
					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.ADCFreq_Value=2000000
 | 
				
			||||||
RCC.AHB12Freq_Value=160000000
 | 
					RCC.AHB12Freq_Value=160000000
 | 
				
			||||||
RCC.AHB4Freq_Value=160000000
 | 
					RCC.AHB4Freq_Value=160000000
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user