- First complete version of firmware. Currently being tested in the rehearsal room

- Added bunch of screens, fonts and images
 - Added script to read out frame buffer (function currently disabled in Firmware)
This commit is contained in:
2025-10-26 20:57:58 +01:00
parent 90bca063e6
commit 89c875e38f
62 changed files with 4668 additions and 489 deletions

View File

@@ -40,6 +40,15 @@
"files.associations": {
"*.h": "c",
"compare": "c",
"cstdint": "c"
"cstdint": "c",
"charconv": "c",
"optional": "c",
"format": "c",
"system_error": "c",
"array": "c",
"functional": "c",
"tuple": "c",
"type_traits": "c",
"utility": "c"
}
}

View File

@@ -58,8 +58,10 @@ add_executable(Firmware
main.c
PWM.c
UART0.c
Convert.c
I2C_Master.c
USB_Serial.c
Serial_Command.c
Hue.c
Easings.c
@@ -133,6 +135,7 @@ target_link_libraries(Firmware
hardware_clocks
hardware_uart
pico_multicore
pico_rand
)
pico_add_extra_outputs(Firmware)

View File

@@ -79,6 +79,8 @@
#define MULTICORE_COMMAND_GET_ANALOG_VOLTAGE 'a'
#define MULTICORE_COMMAND_GET_LED_POWER_ERROR 'b'
#define MULTICORE_COMMAND_GET_LED_ENABLE_PIN 'c'
#define MULTICORE_COMMAND_GET_LED_ALERT_PIN 'd'
// ============================================================================================
@@ -118,6 +120,11 @@ typedef union
uint32_t Pixel;
} __packed LED_Data_t;
typedef struct {
int32_t Min;
int32_t Max;
} __packed MinMax_t;
typedef struct {
int16_t Data;
uint64_t Timestamp_ms;
@@ -133,12 +140,14 @@ typedef struct {
typedef struct
{
uint8_t MIDI_Channel;
int8_t Octave;
uint8_t Note_Color_Red;
uint8_t Note_Color_Green;
uint8_t Note_Color_Blue;
int32_t MIDI_Channel;
int32_t Octave;
int32_t Note_Color_Red;
int32_t Note_Color_Green;
int32_t Note_Color_Blue;
uint8_t Skip_Note_Off_Event;
uint8_t Note_Reset_Enabled;
int32_t Note_Reset_Timeout;
} __packed Channel_MIDI_Configuration_s;
typedef struct
@@ -146,31 +155,28 @@ typedef struct
uint8_t Enabled;
LED_Data_t Color;
uint32_t Timeout;
uint8_t Reset_Condition;
uint8_t Fade_Speed;
int32_t Reset_Condition;
int32_t Fade_Speed;
} __packed Pause_Light_Configuration_s;
typedef struct
{
uint Timer;
uint32_t Timer;
bool Is_Active;
} Pause_Light_Timer_s;
typedef uint16_t Duration_t;
typedef struct
{
Duration_t Duration_Min_s;
Duration_t Duration_Max_s;
MinMax_t Durations;
int32_t Hue_Angle_Start_Color;
uint32_t Color_Change;
uint8_t Fade_Speed;
int32_t Color_Change;
int32_t Fade_Speed;
} __packed Jam_Light_Configuration_s;
typedef struct
{
LED_Data_t Color;
uint8_t Fade_Speed;
int32_t Fade_Speed;
} __packed Const_Light_Configuration_s;

55
Firmware/Convert.c Normal file
View File

@@ -0,0 +1,55 @@
/*
* Convert.c
*
* Created: Tue Feb 22 2022 20:31:44
* Author Chris
*/
// ============================================================================================
// Includes
#include "Convert.h"
// ============================================================================================
// Defines
// ============================================================================================
// Variables
// ============================================================================================
// Function Declarations
/*******************************************************************
Functions
*******************************************************************/
int Convert_Char_To_Number(char input)
{
int Result_Number = 0;
if(input>='a' && input<='f') { Result_Number = (input-'a'+10); }
else if(input>='A' && input<='F') { Result_Number = (input-'A'+10); }
else if(input>='0' && input<='9') { Result_Number = (input-'0'); }
return Result_Number;
}
int Convert_CharArray_To_Number(char input[], int length)
{
int i;
int Result_Number = 0;
for(i=0;i<length;i++)
{
Result_Number += (Convert_Char_To_Number(input[i]) << (4*(length-1-i)));
}
return Result_Number;
}
/*******************************************************************
Internal Functions
*******************************************************************/

30
Firmware/Convert.h Normal file
View File

@@ -0,0 +1,30 @@
/*
* Convert.h
*
* Created: Tue Feb 22 2022 20:31:26
* Author Chris
*/
#ifndef CONVERT_H_
#define CONVERT_H_
// ============================================================================================
// Includes
#include <stdint.h>
#include <stdlib.h>
// ============================================================================================
// Defines
// ============================================================================================
// Datatypes
// ============================================================================================
// Function Declarations
int Convert_Char_To_Number(char input);
int Convert_CharArray_To_Number(char input[], int length);
#endif /* CONVERT_H_ */

View File

@@ -105,8 +105,10 @@ void Core1_Parse_Command(uint8_t command, uint8_t parameter, int16_t value)
///////////////////
// Get Functions //
///////////////////
case MULTICORE_COMMAND_GET_ANALOG_VOLTAGE: Core1_Send_Multicore_Answer(MULTICORE_COMMAND_GET_ANALOG_VOLTAGE , 0, (int16_t)Core1_ADC_Get_Result_mV()); break;
case MULTICORE_COMMAND_GET_LED_POWER_ERROR: Core1_Send_Multicore_Answer(MULTICORE_COMMAND_GET_LED_POWER_ERROR , 0, (int16_t)Core1_LED_Enable_Get_Error()); break;
case MULTICORE_COMMAND_GET_ANALOG_VOLTAGE: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_ADC_Get_Result_mV()); break;
case MULTICORE_COMMAND_GET_LED_POWER_ERROR: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_LED_Enable_Get_Error()); break;
case MULTICORE_COMMAND_GET_LED_ENABLE_PIN: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_LED_Enable_Get_Enable_Pin()); break;
case MULTICORE_COMMAND_GET_LED_ALERT_PIN: Core1_Send_Multicore_Answer(command, 0, (int16_t)Core1_LED_Enable_Get_Alert_Pin()); break;
default: break;
}

View File

@@ -14,6 +14,8 @@
#include "hardware/gpio.h"
#include "USB_Serial.h"
// ============================================================================================
// Defines
@@ -26,7 +28,6 @@
#define LEDG_OFF gpio_put(LEDG_PIN, 1)
#define LED_PWR_EN_GPIO 0
#define INA260_ALERT_GPIO 13
@@ -54,13 +55,17 @@ void Core1_LED_Enable_Set_Error(LED_Power_Error error);
*******************************************************************/
void Core1_LED_Enable_Init()
{
gpio_init(LED_PWR_EN_GPIO);
gpio_set_dir(LED_PWR_EN_GPIO, GPIO_OUT);
DISABLE_LED_POWER();
gpio_init(INA260_ALERT_GPIO);
gpio_set_dir(INA260_ALERT_GPIO, GPIO_IN);
_LED_Power_Error = UNDEFINED;
_Power_Was_Enabled_Before = false;
_INA260_Alert_Last_State = gpio_get(INA260_ALERT_GPIO);
Core1_LED_Enable_Update_Alert_Status();
}
@@ -92,11 +97,16 @@ void Core1_LED_Enable_Update_INA260_BusVoltage(uint16_t voltage_mV)
_INA260_BusVoltage_mV = voltage_mV;
}
bool Core1_LED_Enable_Get_Status()
bool Core1_LED_Enable_Get_Enable_Pin()
{
return gpio_get(LED_PWR_EN_GPIO);
}
bool Core1_LED_Enable_Get_Alert_Pin()
{
return gpio_get(INA260_ALERT_GPIO);
}
LED_Power_Error Core1_LED_Enable_Get_Error()
{
return _LED_Power_Error;
@@ -108,11 +118,14 @@ LED_Power_Error Core1_LED_Enable_Get_Error()
*******************************************************************/
void Core1_LED_Enable_Update_Alert_Status()
{
if(_INA260_Alert_Last_State == true && gpio_get(LED_PWR_EN_GPIO) == false) {
// Falling edge detection if Alert pin -> Falling edge means Overcurrent detection triggered
bool Current_Alert_State = gpio_get(INA260_ALERT_GPIO);
if(_INA260_Alert_Last_State == true && Current_Alert_State == false) {
Core1_LED_Enable_Set_Error(OVERCURRENT);
USB_SERIAL_SEND_STRING("OVERCURRENT"); USB_SERIAL_SEND_TERMINATOR();
}
_INA260_Alert_Last_State = gpio_get(LED_PWR_EN_GPIO);
_INA260_Alert_Last_State = Current_Alert_State;
}
void Core1_LED_Enable_Set_Error(LED_Power_Error error)

View File

@@ -37,7 +37,8 @@ void Core1_LED_Enable_Tick();
void Core1_LED_Enable_Update_INA260_BusVoltage(uint16_t voltage_mV);
bool Core1_LED_Enable_Get_Status();
bool Core1_LED_Enable_Get_Enable_Pin();
bool Core1_LED_Enable_Get_Alert_Pin();
LED_Power_Error Core1_LED_Enable_Get_Error();
#endif // CORE1_LED_ENABLE_H

View File

@@ -25,7 +25,9 @@
#define NOTE_COLOR_GREEN_ALT NOTE_COLOR_GREEN + 1
#define NOTE_COLOR_BLUE_ALT NOTE_COLOR_BLUE + 1
#define NOTE_COLOR_COUNT_RESET_THRESHOLD_TICKS 100 // 100 * 10 ms -> 1s
#define NOTE_COLOR_COUNT_RESET_THRESHOLD_TICKS (_EEPROM_Content.Channel_MIDI_Configuration[ch].Note_Reset_Timeout * (1000 / TIMER_INTERVALL_LED_UPDATE_ms))
// #define COUNT_APPLIED_NOTES
// ============================================================================================
@@ -37,12 +39,15 @@
volatile bool _MIDI_To_Light_Enabled;
extern volatile EEPROM_Content_t _EEPROM_Content;
volatile Info_Last_Received_Note_t _Info_Last_Received_Note[NUM_LED_CHANNELS];
volatile Info_Last_Received_Note_t _Info_Last_Applied_Note[NUM_LED_CHANNELS];
Info_Last_Received_Note_t _Info_Last_Received_Note[NUM_LED_CHANNELS];
Info_Last_Received_Note_t _Info_Last_Applied_Note[NUM_LED_CHANNELS];
volatile Pause_Light_Timer_s _Pause_Light_Timer[NUM_LED_CHANNELS];
volatile int _NoteOn_Color_Counter[NUM_LED_CHANNELS][NUM_LED_COLORS];
volatile int _NoteOn_Color_Reset_Counter;
// 1 LED Channel, 3 LED Colors, 2 Event Types (Note On & Off)
int32_t _Event_Received_Counter[NUM_LED_CHANNELS][NUM_LED_COLORS][2];
static const uint8_t _PWM_Lookup[NUM_LED_COLORS][128] = {
{ // Red
0x04, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08,
@@ -97,7 +102,7 @@ void Core1_Light_Controller_Init(void)
{
_MIDI_To_Light_Enabled = true;
for(uint ch=0;ch<NUM_LED_CHANNELS;ch++)
for(uint32_t ch=0;ch<NUM_LED_CHANNELS;ch++)
{
_Info_Last_Received_Note[ch].Event = 0;
_Info_Last_Received_Note[ch].Note = NO_NOTE;
@@ -110,6 +115,11 @@ void Core1_Light_Controller_Init(void)
_Info_Last_Applied_Note[ch].Note_In_Octave = NO_NOTE;
_Info_Last_Applied_Note[ch].Velocity = 0;
_Info_Last_Applied_Note[ch].Timestamp_ms = 0;
for(uint32_t col=0;col < NUM_LED_COLORS;col++) {
_Event_Received_Counter[ch][col][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF] = 0;
_Event_Received_Counter[ch][col][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF] = 0;
}
}
Core1_Light_Controller_Reset_NoteOn_Counter();
@@ -146,8 +156,9 @@ void Core1_Light_Controller_Tick(void)
if(_Pause_Light_Timer[ch].Timer < PAUSE_LIGHT_TIMEOUT_TICKS) {
_Pause_Light_Timer[ch].Timer++;
}
}
if(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Enabled > 0)
{
if(_NoteOn_Color_Reset_Counter < NOTE_COLOR_COUNT_RESET_THRESHOLD_TICKS) {
_NoteOn_Color_Reset_Counter++;
}
@@ -155,6 +166,8 @@ void Core1_Light_Controller_Tick(void)
Core1_Light_Controller_Reset_NoteOn_Counter();
}
}
}
}
void Core1_Light_Controller_MIDI_OnOff_Event_Received(uint8_t midi_command_shifted_right, uint8_t midi_channel)
{
@@ -217,6 +230,10 @@ void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t
Core1_LED_Control_Set_DC_Direct(ch, R, DutyCycle);
_NoteOn_Color_Counter[ch][R]++;
#ifdef COUNT_APPLIED_NOTES
_Event_Received_Counter[ch][R][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF]++;
#endif
}
else if(midi_note_in_octave == NOTE_COLOR_GREEN || midi_note_in_octave == NOTE_COLOR_GREEN_ALT)
{
@@ -225,6 +242,10 @@ void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t
Core1_LED_Control_Set_DC_Direct(ch, G, DutyCycle);
_NoteOn_Color_Counter[ch][G]++;
#ifdef COUNT_APPLIED_NOTES
_Event_Received_Counter[ch][G][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF]++;
#endif
}
else if(midi_note_in_octave == NOTE_COLOR_BLUE || midi_note_in_octave == NOTE_COLOR_BLUE_ALT)
{
@@ -233,6 +254,10 @@ void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t
Core1_LED_Control_Set_DC_Direct(ch, B, DutyCycle);
_NoteOn_Color_Counter[ch][B]++;
#ifdef COUNT_APPLIED_NOTES
_Event_Received_Counter[ch][B][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF]++;
#endif
}
else
{
@@ -245,16 +270,28 @@ void Core1_Light_Controller_MIDI_Full_Note_Received(uint8_t midi_event, uint8_t
{
_NoteOn_Color_Counter[ch][R]--;
if(_NoteOn_Color_Counter[ch][R] == 0) { Core1_LED_Control_Set_DC_Direct(ch, R, 0); }
#ifdef COUNT_APPLIED_NOTES
_Event_Received_Counter[ch][R][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF]++;
#endif
}
else if(midi_note_in_octave == NOTE_COLOR_GREEN || midi_note_in_octave == NOTE_COLOR_GREEN_ALT)
{
_NoteOn_Color_Counter[ch][G]--;
if(_NoteOn_Color_Counter[ch][G] == 0) { Core1_LED_Control_Set_DC_Direct(ch, G, 0); }
#ifdef COUNT_APPLIED_NOTES
_Event_Received_Counter[ch][G][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF]++;
#endif
}
else if(midi_note_in_octave == NOTE_COLOR_BLUE || midi_note_in_octave == NOTE_COLOR_BLUE_ALT)
{
_NoteOn_Color_Counter[ch][B]--;
if(_NoteOn_Color_Counter[ch][B] == 0) { Core1_LED_Control_Set_DC_Direct(ch, B, 0); }
#ifdef COUNT_APPLIED_NOTES
_Event_Received_Counter[ch][B][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF]++;
#endif
}
else
{

View File

@@ -446,7 +446,7 @@ void Display_Render_Objects(void)
case SELECT_LIST:
SL = (Object_Select_List*)(Object->Data);
Display_Render_Complex_Select_List(&Coordinates_Object, SL->List_Titles, SL->List_Entry_Count, SL->List_Char_Length, *SL->Selected_Entry, SL->Config);
Display_Render_Complex_Select_List(&Coordinates_Object, SL->List_Titles, SL->List_Entry_Count, SL->List_Char_Length, *SL->Selected_Entry, SL->Initial_Entry, SL->Config);
break;
case SELECT_VALUE:
@@ -634,11 +634,13 @@ void Display_Draw_Style(Coordinates* coordinates, Style* style, uint32_t content
void Display_Draw_Focused(Coordinates* coordinates, uint32_t width, uint32_t height)
{
// No focus indicator needed for this projects
if(_Object_Selected == true) {
Display_Shapes_Draw_Rect_Filled(coordinates->X, coordinates->Y, 3, 3, DISPLAY_COLOR_RED);
// Display_Shapes_Draw_Rect_Filled(coordinates->X, coordinates->Y, 3, 3, DISPLAY_COLOR_RED);
}
else {
Display_Shapes_Draw_Rect_Filled(coordinates->X, coordinates->Y, 3, 3, DISPLAY_COLOR_GREEN);
// Display_Shapes_Draw_Rect_Filled(coordinates->X, coordinates->Y, 3, 3, DISPLAY_COLOR_GREEN);
}
}

View File

@@ -47,9 +47,9 @@ const Message_Box_Style _Message_Box_Style_Regular = {
Configuration_Menu_Select _Configuration_Default_Select_Menu = {
.X_Offset = 60,
.X_Indent = -4,
.Font = { _Font_DejaVu_Sans_Mono_Bold_7x15, _Font_DejaVu_Sans_Mono_7x15, _Font_DejaVu_Sans_Mono_6x12 },
.X_Offset = 70,
.X_Indent = -6,
.Font = { _Font_DejaVu_Sans_Mono_10x17, _Font_DejaVu_Sans_Mono_7x15, _Font_DejaVu_Sans_Mono_6x12 },
.Color = { DISPLAY_COLOR_WHITE, DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_DARKGREY }
};
@@ -104,9 +104,19 @@ Configuration_Select_YesNo _Configuration_Default_Select_YesNo = {
Configuration_Select_List _Configuration_Default_Select_List = {
.Font = _Font_DejaVu_Sans_Mono_10x17,
.List_Entry_Y_Gap = 10,
.Color_Selected = DISPLAY_COLOR_WHITE,
.Color_Not_Selected = DISPLAY_COLOR_DARKGREY
.Color_Not_Selected = DISPLAY_COLOR_DARKGREY,
.Y_Top = 80,
.List_Entry_Y_Gap = 10,
.Visible_Items = 5, // Show 5 items on screen
.Show_Selection_Box = true,
.Selection_Box_Padding = 4,
.Selection_Box_Min_Width = 120,
.Selection_Box_Color = DISPLAY_COLOR_CYAN,
.Mark_Initial_Entry = true
};
Configuration_Select_Value _Configuration_Default_Select_Value = {
@@ -129,7 +139,7 @@ Configuration_Select_RGB _Configuration_Default_Select_RGB = {
.Ring_Color_Blue = DISPLAY_COLOR_FROM_RGB888(68, 68, 255), // Bright blue #4444ff
// Geometry settings optimized for 240x240 circular display
.Center_Preview_Radius = 70, // 140px diameter color preview (leaves 50px margin)
.Center_Preview_Radius = 40, // 140px diameter color preview (leaves 50px margin)
.Progress_Ring_Radius = 100, // 200px diameter progress ring (20px from edge)
.Progress_Ring_Thickness = 8, // Substantial ring thickness for visibility
.Indicator_Radius = 8, // 16px diameter indicator dot
@@ -142,17 +152,18 @@ Configuration_Select_RGB _Configuration_Default_Select_RGB = {
.Background_Ring_Color = DISPLAY_COLOR_FROM_RGB888(64, 64, 64), // Dark gray background ring
.Background_Ring_Thickness = 2, // Thin background ring
// Previous marker settings - NEW
// Previous marker settings
.Previous_Marker_Color = DISPLAY_COLOR_WHITE,
.Previous_Marker_Radius = 3,
.Previous_Marker_Ring_Offset = 15, // 15 pixels inside the main ring
.Show_Previous_Markers = true,
// Text display settings - clear hierarchy
.Component_Label_Font = _Font_DejaVu_Sans_Mono_Bold_7x15, // Bold for component labels (RED/GREEN/BLUE)
.Component_Font = _Font_DejaVu_Sans_Mono_Bold_11x17, // Bold for component labels (RED/GREEN/BLUE)
.Value_Font = _Font_DejaVu_Sans_Mono_10x17, // Large readable font for values
.Text_Color = DISPLAY_COLOR_WHITE, // High contrast white text
.Text_Y_Offset = 100, // 100px from bottom edge
.Component_Text_Y_Offset = DISPLAY_Y_CENTER - 60,
.Value_Text_Y_Offset = DISPLAY_Y_CENTER + 60,
// Animation and interaction settings
.Smooth_Animation_Steps = 8, // Smooth but not too slow transitions
@@ -161,86 +172,6 @@ Configuration_Select_RGB _Configuration_Default_Select_RGB = {
.Acceleration_Multiplier = 5 // 5x speed during fast rotation
};
// Alternative configuration for smaller displays or different aesthetics
Configuration_Select_RGB _Configuration_Compact_Select_RGB = {
// More subdued colors for compact interface
.Ring_Color_Red = DISPLAY_COLOR_FROM_RGB888(220, 80, 80), // Softer red
.Ring_Color_Green = DISPLAY_COLOR_FROM_RGB888(80, 220, 80), // Softer green
.Ring_Color_Blue = DISPLAY_COLOR_FROM_RGB888(80, 80, 220), // Softer blue
// Smaller geometry for compact displays
.Center_Preview_Radius = 50, // Smaller preview circle
.Progress_Ring_Radius = 80, // Closer to center
.Progress_Ring_Thickness = 6, // Thinner ring
.Indicator_Radius = 6, // Smaller indicator
// Minimal UI colors
.Preview_Border_Color = DISPLAY_COLOR_LIGHTGREY,
.Preview_Border_Thickness = 2,
.Indicator_Core_Color = DISPLAY_COLOR_WHITE,
.Indicator_Glow_Color = DISPLAY_COLOR_LIGHTGREY,
.Background_Ring_Color = DISPLAY_COLOR_DARKGREY,
.Background_Ring_Thickness = 1,
// Previous marker settings - NEW
.Previous_Marker_Color = DISPLAY_COLOR_WHITE,
.Previous_Marker_Radius = 3,
.Previous_Marker_Ring_Offset = 15, // 15 pixels inside the main ring
.Show_Previous_Markers = true,
// Smaller fonts for compact layout
.Component_Label_Font = _Font_DejaVu_Sans_Mono_6x12, // Smaller label font
.Value_Font = _Font_DejaVu_Sans_Mono_Bold_7x15, // Medium value font
.Text_Color = DISPLAY_COLOR_LIGHTGREY,
.Text_Y_Offset = 25,
// Faster, more responsive settings for compact interface
.Smooth_Animation_Steps = 4, // Faster transitions
.Enable_Encoder_Acceleration = true,
.Acceleration_Threshold = 2, // More sensitive acceleration
.Acceleration_Multiplier = 8 // Higher acceleration
};
// High contrast configuration for accessibility
Configuration_Select_RGB _Configuration_High_Contrast_Select_RGB = {
// Pure, high contrast colors
.Ring_Color_Red = DISPLAY_COLOR_RED, // Pure red
.Ring_Color_Green = DISPLAY_COLOR_GREEN, // Pure green
.Ring_Color_Blue = DISPLAY_COLOR_BLUE, // Pure blue
// Standard geometry
.Center_Preview_Radius = 70,
.Progress_Ring_Radius = 100,
.Progress_Ring_Thickness = 10, // Thicker for better visibility
.Indicator_Radius = 10, // Larger indicator
// High contrast UI
.Preview_Border_Color = DISPLAY_COLOR_WHITE,
.Preview_Border_Thickness = 4, // Thick border for definition
.Indicator_Core_Color = DISPLAY_COLOR_WHITE,
.Indicator_Glow_Color = DISPLAY_COLOR_WHITE, // No glow, just solid white
.Background_Ring_Color = DISPLAY_COLOR_BLACK, // Maximum contrast
.Background_Ring_Thickness = 3,
// Previous marker settings - NEW
.Previous_Marker_Color = DISPLAY_COLOR_WHITE,
.Previous_Marker_Radius = 3,
.Previous_Marker_Ring_Offset = 15, // 15 pixels inside the main ring
.Show_Previous_Markers = true,
// Large, clear fonts
.Component_Label_Font = _Font_DejaVu_Sans_Mono_10x17, // Larger labels
.Value_Font = _Font_DejaVu_Sans_Mono_Bold_7x15, // Bold values
.Text_Color = DISPLAY_COLOR_WHITE,
.Text_Y_Offset = 35,
// Conservative animation for accessibility
.Smooth_Animation_Steps = 12, // Slower, more predictable
.Enable_Encoder_Acceleration = false, // Disable acceleration for precision
.Acceleration_Threshold = 5,
.Acceleration_Multiplier = 2
};
Configuration_Entry_Indicator _Configuration_Default_Entry_Indicator_Arc = {
.Type = INDICATOR_ARC,

View File

@@ -33,8 +33,6 @@ extern Configuration_Select_List _Configuration_Default_Select_List;
extern Configuration_Select_Value _Configuration_Default_Select_Value;
extern Configuration_Select_RGB _Configuration_Default_Select_RGB;
extern Configuration_Select_RGB _Configuration_Compact_Select_RGB;
extern Configuration_Select_RGB _Configuration_High_Contrast_Select_RGB;
extern Configuration_Entry_Indicator _Configuration_Default_Entry_Indicator_Arc;
extern Configuration_Entry_Indicator _Configuration_Default_Entry_Indicator_Dot;

View File

@@ -427,6 +427,7 @@ Object_ID Display_Objects_Add_Image(Anchor_Point anchor_point, Coordinates_Type
Image->Image = image;
Image->Rotation_Angle = Rotation_Angle;
Image->Alpha = UINT8_MAX;
Image->Scale = 1.0f;
return Display_Objects_Add(IMAGE, anchor_point, coordinates_type, x, y, selectable, (void *)Image, style_id, animation_id);
}
@@ -645,7 +646,7 @@ Object_ID Display_Objects_Add_Menu_Select(char* menu_titles, uint32_t menu_entry
return Display_Objects_Add(MENU_SELECT, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Menu_Select, NO_STYLE, NO_ANIMATION);
}
Object_ID Display_Objects_Add_Menu_Icon_Row(Icon_Row_Item* items, uint32_t item_count, uint32_t* selected_item, Configuration_Menu_Icon_Row* config)
Object_ID Display_Objects_Add_Menu_Icon_Row(Icon_Row_Item* items, uint32_t item_count, uint32_t* selected_item, const Configuration_Menu_Icon_Row* config)
{
Object_Menu_Icon_Row* Icon_Row = malloc(sizeof(Object_Menu_Icon_Row));
Icon_Row->Items = items;
@@ -709,7 +710,7 @@ Object_ID Display_Objects_Add_Menu_Ring(Menu_Ring_Item_Config* items, uint32_t i
return Display_Objects_Add(MENU_RING, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, SELECTABLE, (void *)Menu_Ring, NO_STYLE, NO_ANIMATION);
}
Object_ID Display_Objects_Add_Menu_Hierarchical(const Menu_List** current_list, int32_t* selected_item, int32_t* scroll_offset, Configuration_Menu_Hierarchical* config)
Object_ID Display_Objects_Add_Menu_Hierarchical(const Menu_List** current_list, int32_t* selected_item, int32_t* scroll_offset, const Configuration_Menu_Hierarchical* config)
{
Object_Menu_Hierarchical* Menu_Hierarchical = malloc(sizeof(Object_Menu_Hierarchical));
Menu_Hierarchical->Current_List = current_list;
@@ -740,7 +741,7 @@ Object_ID Display_Objects_Add_Menu_Hierarchical(const Menu_List** current_list,
return Display_Objects_Add(MENU_HIERARCHICAL, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Menu_Hierarchical, NO_STYLE, NO_ANIMATION);
}
Object_ID Display_Objects_Add_Select_YesNo(char* title, uint32_t title_length, bool* value, Configuration_Select_YesNo* config)
Object_ID Display_Objects_Add_Select_YesNo(char* title, uint32_t title_length, bool* value, const Configuration_Select_YesNo* config)
{
Object_Select_YesNo* Select_YesNo = malloc(sizeof(Object_Select_YesNo));
Select_YesNo->Title = title;
@@ -751,19 +752,20 @@ Object_ID Display_Objects_Add_Select_YesNo(char* title, uint32_t title_length, b
return Display_Objects_Add(SELECT_YESNO, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Select_YesNo, NO_STYLE, NO_ANIMATION);
}
Object_ID Display_Objects_Add_Select_List(char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t* selected_entry, Configuration_Select_List* config)
Object_ID Display_Objects_Add_Select_List(char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t* selected_entry, const Configuration_Select_List* config)
{
Object_Select_List* Select_List = malloc(sizeof(Object_Select_List));
Select_List->List_Titles = list_titles;
Select_List->List_Entry_Count = list_entry_count;
Select_List->List_Char_Length = list_char_length;
Select_List->Selected_Entry = selected_entry;
Select_List->Initial_Entry = *selected_entry;
Select_List->Config = config;
return Display_Objects_Add(SELECT_LIST, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Select_List, NO_STYLE, NO_ANIMATION);
}
Object_ID Display_Objects_Add_Select_Value(char* title, uint32_t title_length, int32_t* value, int32_t max, int32_t min, char* format, Configuration_Select_Value* config)
Object_ID Display_Objects_Add_Select_Value(char* title, uint32_t title_length, int32_t* value, int32_t max, int32_t min, char* format, const Configuration_Select_Value* config)
{
Object_Select_Value* Select_Value = malloc(sizeof(Object_Select_Value));
Select_Value->Title = title;
@@ -777,7 +779,7 @@ Object_ID Display_Objects_Add_Select_Value(char* title, uint32_t title_length, i
return Display_Objects_Add(SELECT_VALUE, LEFT_TOP, BOTH_IN_PIXEL, 0, 0, NOT_SELECTABLE, (void *)Select_Value, NO_STYLE, NO_ANIMATION);
}
Object_ID Display_Objects_Add_Select_RGB(LED_Data_t* color_value, uint8_t* current_component, Configuration_Select_RGB* config)
Object_ID Display_Objects_Add_Select_RGB(LED_Data_t* color_value, uint8_t* current_component, const Configuration_Select_RGB* config)
{
if (color_value == NULL || config == NULL) {
return -1; // Invalid parameters
@@ -826,7 +828,7 @@ Object_ID Display_Objects_Add_Select_RGB(LED_Data_t* color_value, uint8_t* curre
);
}
Object_ID Display_Objects_Add_Entry_Indicator(uint32_t entry_count, int32_t* entry_value, Configuration_Entry_Indicator* config)
Object_ID Display_Objects_Add_Entry_Indicator(uint32_t entry_count, int32_t* entry_value, const Configuration_Entry_Indicator* config)
{
Object_Entry_Indicator* Entry_Indicator = malloc(sizeof(Object_Entry_Indicator));
Entry_Indicator->Entry_Count = entry_count;
@@ -894,6 +896,12 @@ void Display_Objects_Update_Color(Object_ID id, Display_Color color)
((Object_Shape*)(Object->Data))->Color = color;
break;
case VALUE_BAR_ARC:
if(((Object_Value_Bar_Arc*)(Object->Data))->Arc != NULL) {
((Object_Value_Bar_Arc*)(Object->Data))->Arc->Color = color;
}
break;
default:
break;
}
@@ -948,11 +956,7 @@ void Display_Objects_Update_Alpha(Object_ID id, uint8_t new_alpha)
{
Display_Object* Object = Display_Objects_Get_By_ID(id);
if(Object == NULL) {
return;
}
if(Object->Type != IMAGE) {
if(Object == NULL || Object->Type != IMAGE) {
return;
}
@@ -961,6 +965,19 @@ void Display_Objects_Update_Alpha(Object_ID id, uint8_t new_alpha)
IM->Alpha = new_alpha;
}
void Display_Objects_Update_Scale(Object_ID id, float new_scale)
{
Display_Object* Object = Display_Objects_Get_By_ID(id);
if(Object == NULL || Object->Type != IMAGE || new_scale < 0.0f) {
return;
}
Object_Image_Color* IM = (Object_Image_Color*)(Object->Data);
IM->Scale = new_scale;
}
void Display_Objects_Update_Max_Min(Object_ID id, uint max, uint min)
{
Display_Object* Object = Display_Objects_Get_By_ID(id);
@@ -976,6 +993,11 @@ void Display_Objects_Update_Max_Min(Object_ID id, uint max, uint min)
((Object_Value_Bar_Rect*)Object->Data)->Min = min;
break;
case VALUE_BAR_ARC:
((Object_Value_Bar_Arc*)Object->Data)->Max = max;
((Object_Value_Bar_Arc*)Object->Data)->Min = min;
break;
case GRAPH:
((Object_Graph*)Object->Data)->Max = max;
((Object_Graph*)Object->Data)->Min = min;

View File

@@ -81,14 +81,14 @@ Object_ID Dispaly_Objects_Add_Line_Rad ( Coordinates_Type coordinates_
Object_ID Display_Objects_Add_Canvas (Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, bool selectable, Display_Color color, uint width, uint height , Style_ID style_id, Animation_ID animation_id);
Object_ID Display_Objects_Add_Message_Box (Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y, char* text, Object_Message_Box_Icon icon, const Message_Box_Style* style);
Object_ID Display_Objects_Add_Menu_Select (char* menu_titles, uint32_t menu_entry_count, uint32_t title_char_length, uint32_t* selected_entry, Configuration_Menu_Select* config);
Object_ID Display_Objects_Add_Menu_Icon_Row (Icon_Row_Item* items, uint32_t item_count, uint32_t* selected_item, Configuration_Menu_Icon_Row* config);
Object_ID Display_Objects_Add_Menu_Icon_Row (Icon_Row_Item* items, uint32_t item_count, uint32_t* selected_item, const Configuration_Menu_Icon_Row* config);
Object_ID Display_Objects_Add_Menu_Ring (Menu_Ring_Item_Config* items, uint32_t item_count, uint32_t* selected_item, Configuration_Menu_Ring* config);
Object_ID Display_Objects_Add_Menu_Hierarchical (const Menu_List** current_list, int32_t* selected_item, int32_t* scroll_offset, Configuration_Menu_Hierarchical* config);
Object_ID Display_Objects_Add_Select_YesNo (char* title, uint32_t title_length, bool* value, Configuration_Select_YesNo* config);
Object_ID Display_Objects_Add_Select_List (char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t* selected_entry, Configuration_Select_List* config);
Object_ID Display_Objects_Add_Select_Value (char* title, uint32_t title_length, int32_t* value, int32_t max, int32_t min, char* format, Configuration_Select_Value* config);
Object_ID Display_Objects_Add_Select_RGB (LED_Data_t* color_value, uint8_t* current_component, Configuration_Select_RGB* config);
Object_ID Display_Objects_Add_Entry_Indicator (uint32_t entry_count, int32_t* entry_value, Configuration_Entry_Indicator* config);
Object_ID Display_Objects_Add_Menu_Hierarchical (const Menu_List** current_list, int32_t* selected_item, int32_t* scroll_offset, const Configuration_Menu_Hierarchical* config);
Object_ID Display_Objects_Add_Select_YesNo (char* title, uint32_t title_length, bool* value, const Configuration_Select_YesNo* config);
Object_ID Display_Objects_Add_Select_List (char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t* selected_entry, const Configuration_Select_List* config);
Object_ID Display_Objects_Add_Select_Value (char* title, uint32_t title_length, int32_t* value, int32_t max, int32_t min, char* format, const Configuration_Select_Value* config);
Object_ID Display_Objects_Add_Select_RGB (LED_Data_t* color_value, uint8_t* current_component, const Configuration_Select_RGB* config);
Object_ID Display_Objects_Add_Entry_Indicator (uint32_t entry_count, int32_t* entry_value, const Configuration_Entry_Indicator* config);
void Display_Objects_Update_Coordinates (Object_ID id, Anchor_Point anchor_point, Coordinates_Type coordinates_type, int16_t x, int16_t y);
@@ -97,6 +97,7 @@ void Display_Objects_Update_Color (Object_ID id, Display_Color color);
void Display_Objects_Update_Text (Object_ID id, char* text);
void Display_Objects_Update_Image (Object_ID id, Image_Color* new_image);
void Display_Objects_Update_Alpha (Object_ID id, uint8_t new_alpha);
void Display_Objects_Update_Scale (Object_ID id, float new_scale);
void Display_Objects_Update_Max_Min (Object_ID id, uint max, uint min);
int Display_Objects_Update_Pixel (Object_ID id, int16_t x, int16_t y, Display_Color color);
void Display_Objects_Show_Message_Box (Object_ID id, uint32_t ticks);

View File

@@ -297,6 +297,7 @@ typedef struct {
Image_Color *Image;
uint16_t Rotation_Angle;
uint8_t Alpha;
float Scale;
} Object_Image_Color;
typedef struct {
@@ -404,7 +405,7 @@ typedef struct {
uint32_t Item_Count;
uint32_t* Selected_Item;
Configuration_Menu_Icon_Row* Config;
const Configuration_Menu_Icon_Row* Config;
} Object_Menu_Icon_Row;
@@ -572,7 +573,7 @@ typedef struct {
const Menu_List** Current_List;
int32_t* Selected_Item;
int32_t* Scroll_Offset;
Configuration_Menu_Hierarchical* Config;
const Configuration_Menu_Hierarchical* Config;
// Internal state
uint32_t Animation_Counter;
@@ -605,15 +606,26 @@ typedef struct {
bool* Value;
Configuration_Select_YesNo* Config;
const Configuration_Select_YesNo* Config;
} Object_Select_YesNo;
typedef struct {
const unsigned char *Font;
int16_t List_Entry_Y_Gap;
Display_Color Color_Selected;
Display_Color Color_Not_Selected;
int16_t Y_Top;
int16_t List_Entry_Y_Gap;
uint16_t Visible_Items; // Number of items visible on screen
// Animation Parameters
bool Show_Selection_Box;
uint16_t Selection_Box_Padding; // Padding around selection
uint16_t Selection_Box_Min_Width;
Display_Color Selection_Box_Color;
bool Mark_Initial_Entry;
} Configuration_Select_List;
typedef struct {
@@ -621,7 +633,8 @@ typedef struct {
uint32_t List_Entry_Count;
uint32_t List_Char_Length;
uint32_t* Selected_Entry;
Configuration_Select_List* Config;
uint32_t Initial_Entry;
const Configuration_Select_List* Config;
} Object_Select_List;
@@ -648,7 +661,7 @@ typedef struct {
char Format[32];
Configuration_Select_Value* Config;
const Configuration_Select_Value* Config;
} Object_Select_Value;
/*******************************************************************
@@ -681,10 +694,11 @@ typedef struct {
bool Show_Previous_Markers; // Enable/disable previous markers
// Text display settings
const unsigned char* Component_Label_Font; // Font for "RED", "GREEN", "BLUE" labels
const unsigned char* Component_Font; // Font for "RED", "GREEN", "BLUE" labels
const unsigned char* Value_Font; // Font for numeric value display
Display_Color Text_Color; // Color for all text elements
int16_t Text_Y_Offset; // Vertical offset from bottom for text
int16_t Component_Text_Y_Offset; // Vertical offset from bottom for text
int16_t Value_Text_Y_Offset; // Vertical offset from bottom for text
// Animation settings
uint16_t Smooth_Animation_Steps; // Steps for smooth value transitions
@@ -711,7 +725,7 @@ typedef struct {
uint16_t Progress_Start_Angle; // Starting angle for progress arc (270° = 12 o'clock)
// Configuration pointer
Configuration_Select_RGB* Config;
const Configuration_Select_RGB* Config;
} Object_Select_RGB;
@@ -747,7 +761,7 @@ typedef struct {
uint32_t Entry_Count;
int32_t* Entry_Value;
Configuration_Entry_Indicator* Config;
const Configuration_Entry_Indicator* Config;
} Object_Entry_Indicator;
/*******************************************************************

View File

@@ -35,7 +35,10 @@ static int32_t _Menu_Hierarchical_Last_Selected = -1; // Previous selected ite
static int16_t _Menu_Select_Current_Y = 0;
static int16_t _Menu_Icon_Row_Current_X = 0;
static int16_t _Select_YesNo_Current_X = 0;
static int16_t _Select_List_Current_Y = 0;
static int32_t _Select_List_Target_Scroll_Y = 0;
static int32_t _Select_List_Current_Scroll_Y = 0;
static float _Entry_Indicator_Current_Angle = 0.0f;
static int16_t _Entry_Indicator_Current_X = 0;
@@ -49,17 +52,18 @@ static Menu_Transition_Direction Display_Render_Complex_Menu_Hierarchical_Detect
static void Display_Render_Complex_Menu_Hierarchical_Auto_Detect_Changes(Object_Menu_Hierarchical* menu_hierarchical);
static void Display_Render_Complex_Menu_Hierarchical_Update_Transition_Animation(Object_Menu_Hierarchical* menu_hierarchical);
static void Display_Render_Complex_Menu_Hierarchical_Update_All_Animations(Object_Menu_Hierarchical* menu_hierarchical);
static void Display_Render_Complex_Menu_Hierarchical_Update_Animation(const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Single_Menu(Coordinates* coordinates, const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, Configuration_Menu_Hierarchical* config, int16_t x_offset);
static void Display_Render_Complex_Menu_Hierarchical_Title(Coordinates* coordinates, const char* title, Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Items(Coordinates* coordinates, const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Single_Item(Coordinates* coordinates, const Menu_Item* item, int32_t item_index, int32_t selected_item, int16_t item_y, Display_Color item_color, float scale_factor, Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Selection_Box(Coordinates* coordinates, int32_t selected_item, int32_t scroll_offset, Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Scroll_Indicators(Coordinates* coordinates, const Menu_List* current_list, int32_t scroll_offset, Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Update_Animation(const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Single_Menu(Coordinates* coordinates, const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config, int16_t x_offset);
static void Display_Render_Complex_Menu_Hierarchical_Title(Coordinates* coordinates, const char* title, const Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Items(Coordinates* coordinates, const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Single_Item(Coordinates* coordinates, const Menu_Item* item, int32_t item_index, int32_t selected_item, int16_t item_y, Display_Color item_color, float scale_factor, const Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Selection_Box(Coordinates* coordinates, int32_t selected_item, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config);
static void Display_Render_Complex_Menu_Hierarchical_Scroll_Indicators(Coordinates* coordinates, const Menu_List* current_list, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config);
static int32_t Display_Render_Complex_Select_List_Calculate_Scroll_Offset(uint32_t selected_entry, uint32_t total_entries, uint16_t visible_items);
static float Display_Render_Complex_Select_RGB_Calculate_Progress_Ring_Angle(uint8_t value, uint8_t min_value, uint8_t max_value);
static void Display_Render_Complex_Entry_Indicator_Arc(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, Configuration_Entry_Indicator* config);
static void Display_Render_Complex_Entry_Indicator_Dot(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, Configuration_Entry_Indicator* config);
static void Display_Render_Complex_Entry_Indicator_Arc(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, const Configuration_Entry_Indicator* config);
static void Display_Render_Complex_Entry_Indicator_Dot(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, const Configuration_Entry_Indicator* config);
/*******************************************************************
@@ -115,13 +119,13 @@ void Display_Render_Complex_Value_Bar_Arc(Coordinates* coordinates, Object_Value
{
Object_Value_Bar_Arc* V = value_bar;
if(*V->Value != V->Current)
if(*(V->Value )!= V->Current)
{
// Need to drcrease
if(*V->Value < V->Current)
// Need to decrease
if(*(V->Value) < V->Current)
{
if(abs(*V->Value - V->Current) <= V->Delta_Dec) {
V->Current = *V->Value;
if((V->Current - *(V->Value)) <= V->Delta_Dec) {
V->Current = *(V->Value);
}
else {
V->Current -= V->Delta_Dec;
@@ -130,8 +134,8 @@ void Display_Render_Complex_Value_Bar_Arc(Coordinates* coordinates, Object_Value
// Need to increase
else
{
if(abs(*V->Value - V->Current) <= V->Delta_Inc) {
V->Current = *V->Value;
if((*(V->Value) - V->Current) <= V->Delta_Inc) {
V->Current = *(V->Value);
}
else {
V->Current += V->Delta_Inc;
@@ -335,7 +339,7 @@ void Display_Render_Complex_Menu_Icon_Row_Set(uint32_t initially_selected_item,
_Menu_Icon_Row_Current_X = (DISPLAY_WIDTH >> 1) - initially_selected_item * icon_space_width;
}
void Display_Render_Complex_Menu_Icon_Row(Coordinates* coordinates, Icon_Row_Item* items, uint32_t item_count, uint32_t selected_item, Configuration_Menu_Icon_Row* config)
void Display_Render_Complex_Menu_Icon_Row(Coordinates* coordinates, Icon_Row_Item* items, uint32_t item_count, uint32_t selected_item, const Configuration_Menu_Icon_Row* config)
{
int16_t X_Target = coordinates->X + DISPLAY_X_CENTER - selected_item * config->Icon_Space_Width;
@@ -545,7 +549,7 @@ void Display_Render_Complex_Menu_Ring(Coordinates* coordinates, Object_Menu_Ring
void Display_Render_Complex_Menu_Hierarchical(Coordinates* coordinates, Object_Menu_Hierarchical* menu_hierarchical)
{
Configuration_Menu_Hierarchical* Config = menu_hierarchical->Config;
const Configuration_Menu_Hierarchical* Config = menu_hierarchical->Config;
if (menu_hierarchical->Current_List == NULL || Config == NULL) {
return;
@@ -587,9 +591,31 @@ void Display_Render_Complex_Menu_Hierarchical(Coordinates* coordinates, Object_M
}
}
void Display_Render_Complex_Select_YesNo(Coordinates* coordinates, char* title, uint32_t title_length, bool value, Configuration_Select_YesNo* config)
void Display_Render_Complex_Select_YesNo_Set(bool value, const Configuration_Select_YesNo* config)
{
if(config == NULL) {
if(config == NULL || config->Value_Font == NULL) {
return;
}
Display_Font_Set_Font(config->Value_Font);
int16_t Width_Yes = Display_Font_Width_String("Yes", 3, DISPLAY_DEFAULT_CHAR_SPACING);
int16_t Width_No = Display_Font_Width_String("No", 2, DISPLAY_DEFAULT_CHAR_SPACING);
int16_t Width_Diff = Width_Yes - Width_No;
int16_t X_Yes = DISPLAY_X_CENTER - Width_Yes - config->Value_Center_X_Offset;
int16_t X_No = DISPLAY_X_CENTER + config->Value_Center_X_Offset;
int16_t Center_Yes = X_Yes + (Width_Yes >> 1);
int16_t Center_No = X_No + (Width_No >> 1);
_Select_YesNo_Current_X = value ? Center_Yes : Center_No;
}
void Display_Render_Complex_Select_YesNo(Coordinates* coordinates, char* title, uint32_t title_length, bool value, const Configuration_Select_YesNo* config)
{
if(config == NULL || config->Value_Font == NULL) {
return;
}
@@ -603,10 +629,6 @@ void Display_Render_Complex_Select_YesNo(Coordinates* coordinates, char* title,
Display_Font_Print_String(Title_X, Title_Y, title, title_length, DISPLAY_DEFAULT_CHAR_SPACING, config->Title_Color);
}
if(config->Value_Font == NULL) {
return;
}
Display_Font_Set_Font(config->Value_Font);
int16_t YesNo_Y = coordinates->Y + config->Value_Y_Center - (Display_Font_Get_Font_Height() >> 1);
@@ -669,64 +691,108 @@ void Display_Render_Complex_Select_YesNo(Coordinates* coordinates, char* title,
}
}
void Display_Render_Complex_Select_List(Coordinates* coordinates, char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t selected_entry, Configuration_Select_List* config)
void Display_Render_Complex_Select_List(Coordinates* coordinates, char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t selected_entry, uint32_t initial_entry, const Configuration_Select_List* config)
{
if(config == NULL) {
return;
}
if(config->Font == NULL) {
if (config == NULL || config->Font == NULL || list_titles == NULL) {
return;
}
Display_Font_Set_Font(config->Font);
int16_t Entry_Height = Display_Font_Get_Font_Height();
int16_t Total_Height = Entry_Height * list_entry_count + config->List_Entry_Y_Gap * (list_entry_count-1);
int16_t Item_Full_Height = Entry_Height + config->List_Entry_Y_Gap;
int16_t Entry_Width = Display_Font_Width_String(&list_titles[0], list_char_length, DISPLAY_DEFAULT_CHAR_SPACING);
int16_t X_Entires = coordinates->X + DISPLAY_X_CENTER - (Entry_Width >> 1);
int16_t Y = coordinates->Y + DISPLAY_Y_CENTER - (Total_Height >> 1);
int16_t Y_Target = Y + selected_entry * (Entry_Height + config->List_Entry_Y_Gap);
for(int16_t i=0;i<list_entry_count;i++)
{
Display_Color Color = config->Color_Not_Selected;
if(i==selected_entry) {
if(_Select_List_Current_Y == Y_Target) {
Color = config->Color_Selected;
}
else {
Color = Display_Color_Interpolate_Float(config->Color_Selected, config->Color_Not_Selected, (float)abs(_Select_List_Current_Y - Y_Target) / (float)Entry_Height);
}
}
Display_Font_Print_String(X_Entires, Y, &list_titles[i*list_char_length], list_char_length, DISPLAY_DEFAULT_CHAR_SPACING, Color);
Y += (Entry_Height + config->List_Entry_Y_Gap);
}
if(coordinates->X > 0 || coordinates->Y > 0) {
return;
}
Display_Shapes_Draw_Round_Rect_Frame(X_Entires-4, _Select_List_Current_Y-4, Entry_Width+8, Entry_Height+8, 5, 1, config->Color_Selected);
// Display_Shapes_Draw_Rect_Frame(X_Entires-6, _Select_List_Current_Y-2, Entry_Width+8, Entry_Height+8, 1, config->Color_Selected);
// Calculate scroll offset for current selection
int32_t Offset_Items = Display_Render_Complex_Select_List_Calculate_Scroll_Offset(selected_entry, list_entry_count, config->Visible_Items);
_Select_List_Target_Scroll_Y = -Offset_Items * Item_Full_Height;
int Move_Direction = _NONE;
if(_Select_List_Current_Y < Y_Target) {
if(_Select_List_Target_Scroll_Y > _Select_List_Current_Scroll_Y) {
Move_Direction = _DOWN;
} else if(_Select_List_Current_Y > Y_Target) {
} else if(_Select_List_Target_Scroll_Y < _Select_List_Current_Scroll_Y) {
Move_Direction = _UP;
}
int16_t Distance = abs(Y_Target - _Select_List_Current_Y);
_Select_List_Current_Y += (((Distance >> 1) + 1) * Move_Direction);
int16_t Distance = abs(_Select_List_Target_Scroll_Y - _Select_List_Current_Scroll_Y);
_Select_List_Current_Scroll_Y += (((Distance >> 1) + 1) * Move_Direction);
int16_t X_Entries = coordinates->X + DISPLAY_X_CENTER - (Entry_Width >> 1);
int16_t Base_Y = coordinates->Y + config->Y_Top + _Select_List_Current_Scroll_Y;
int16_t List_Y_Top = config->Y_Top;
int16_t List_Y_Bottom = config->Y_Top + config->Visible_Items * Item_Full_Height;
for (int32_t i = -1; i <= config->Visible_Items; i++)
{
int32_t Item_Index = Offset_Items + i;
if (Item_Index < 0 || Item_Index >= (int32_t)list_entry_count) {
continue;
}
void Display_Render_Complex_Select_Value(Coordinates* coordinates, char* title, uint32_t title_length, int32_t value, int32_t max, int32_t min, char* format, Configuration_Select_Value* config)
// Calculate item position relative to visible area
int32_t Item_Offset_From_Base = Item_Index - Offset_Items;
int16_t Text_Y = Base_Y + Item_Index * Item_Full_Height;
bool Item_In_Visible_Range = (Text_Y >= List_Y_Top) && (Text_Y + Item_Full_Height <= List_Y_Bottom);
float Alpha = 1.0f;
if(Item_In_Visible_Range == false)
{
if(Text_Y < List_Y_Top && (List_Y_Top - Text_Y) < Item_Full_Height) {
Alpha = 1.0 - (float)(List_Y_Top - Text_Y) / (float)Item_Full_Height;
}
else if(Text_Y < List_Y_Bottom && (List_Y_Bottom - Text_Y) < Item_Full_Height) {
Alpha = (float)(List_Y_Bottom - Text_Y) / (float)Item_Full_Height;
}
else {
continue;
}
}
if (Alpha <= 0.01f) {
continue;
}
Display_Color Base_Color = (Item_Index == (int32_t)selected_entry) ? config->Color_Selected : config->Color_Not_Selected;
Display_Color Item_Color = Base_Color;
if (Alpha < 1.0f) {
uint16_t Alpha_Fixed = (uint16_t)(Alpha * 256.0f);
Item_Color = Display_Color_Interpolate_Fixpoint(DISPLAY_COLOR_BLACK, Base_Color, Alpha_Fixed);
}
// Selection box with fade
if (config->Show_Selection_Box && Item_Index == (int32_t)selected_entry)
{
Display_Color Box_Color = config->Selection_Box_Color;
if (Alpha < 1.0f) {
uint16_t Alpha_Fixed = (uint16_t)(Alpha * 256.0f);
Box_Color = Display_Color_Interpolate_Fixpoint(DISPLAY_COLOR_BLACK, Box_Color, Alpha_Fixed);
}
int16_t Selection_Y = Text_Y - config->Selection_Box_Padding - 1;
int16_t Selection_Width = MAX(Entry_Width + (config->Selection_Box_Padding * 2), config->Selection_Box_Min_Width);
int16_t Selection_Height = Entry_Height + (config->Selection_Box_Padding * 2);
Display_Color Fill_Color = Display_Color_Interpolate_Float(Box_Color, config->Color_Not_Selected, 0.9f);
Display_Shapes_Draw_Round_Rect_Filled(DISPLAY_X_CENTER - Selection_Width/2 + 1, Selection_Y + 1, Selection_Width - 2, Selection_Height - 2, 3, Fill_Color);
Display_Shapes_Draw_Round_Rect_Frame(DISPLAY_X_CENTER - Selection_Width/2, Selection_Y, Selection_Width, Selection_Height, 4, 2, Box_Color);
}
if(config->Mark_Initial_Entry && Item_Index == (int32_t)initial_entry) {
Display_Shapes_Draw_Circle_Filled(X_Entries - 15, Text_Y + Display_Font_Get_Font_Height()/2 - 1, 3, DISPLAY_COLOR_DARKGREEN);
}
// Render text
char* Item_Text = &list_titles[Item_Index * list_char_length];
Display_Font_Print_String(X_Entries, Text_Y, Item_Text, list_char_length, DISPLAY_DEFAULT_CHAR_SPACING, Item_Color);
}
}
void Display_Render_Complex_Select_Value(Coordinates* coordinates, char* title, uint32_t title_length, int32_t value, int32_t max, int32_t min, char* format, const Configuration_Select_Value* config)
{
if(config == NULL) {
return;
@@ -770,7 +836,7 @@ void Display_Render_Complex_Select_RGB(Coordinates* coordinates, Object_Select_R
return;
}
Configuration_Select_RGB* Config = rgb_selector->Config;
const Configuration_Select_RGB* Config = rgb_selector->Config;
// Calculate center position
int16_t Center_X = coordinates->X + DISPLAY_X_CENTER;
@@ -834,15 +900,15 @@ void Display_Render_Complex_Select_RGB(Coordinates* coordinates, Object_Select_R
// Component label (e.g., "RED")
if (Config->Component_Label_Font != NULL)
if (Config->Component_Font != NULL)
{
// Get component label
char* Component_Label = (char*)rgb_selector->Component_Labels[*rgb_selector->Current_Component];
Display_Font_Set_Font(Config->Component_Label_Font);
Display_Font_Set_Font(Config->Component_Font);
uint16_t Label_Width = Display_Font_Width_String(Component_Label, strlen(Component_Label), DISPLAY_DEFAULT_CHAR_SPACING);
int16_t Label_X = Center_X - (Label_Width / 2);
int16_t Label_Y = coordinates->Y + Config->Text_Y_Offset - 3;
int16_t Label_Y = coordinates->Y + Config->Component_Text_Y_Offset - Display_Font_Get_Font_Height() / 2;
Display_Font_Print_String(Label_X, Label_Y, Component_Label, strlen(Component_Label), DISPLAY_DEFAULT_CHAR_SPACING, Config->Text_Color);
}
@@ -860,13 +926,13 @@ void Display_Render_Complex_Select_RGB(Coordinates* coordinates, Object_Select_R
// Center both value and range as a group
int16_t Value_X = Center_X - (Value_Width / 2);
int16_t Value_Y = coordinates->Y + Config->Text_Y_Offset + 3 + Display_Font_Get_Font_Height();
int16_t Value_Y = coordinates->Y + Config->Value_Text_Y_Offset - Display_Font_Get_Font_Height() / 2;
Display_Font_Print_String(Value_X, Value_Y, Value_String, strlen(Value_String), DISPLAY_DEFAULT_CHAR_SPACING, Config->Text_Color);
}
}
void Display_Render_Complex_Entry_Indicator(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, Configuration_Entry_Indicator* config)
void Display_Render_Complex_Entry_Indicator(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, const Configuration_Entry_Indicator* config)
{
if(config->Type == INDICATOR_ARC) {
Display_Render_Complex_Entry_Indicator_Arc(coordinates, entry_count, entry_value, config);
@@ -1232,7 +1298,7 @@ void Display_Render_Complex_Menu_Hierarchical_Update_All_Animations(Object_Menu_
}
}
void Display_Render_Complex_Menu_Hierarchical_Update_Animation(const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, Configuration_Menu_Hierarchical* config)
void Display_Render_Complex_Menu_Hierarchical_Update_Animation(const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config)
{
// Calculate target positions
int16_t Target_Y = config->Menu_Start_Y;
@@ -1277,7 +1343,7 @@ void Display_Render_Complex_Menu_Hierarchical_Update_Animation(const Menu_List*
_Menu_Hierarchical_Scroll_Y += (((Distance_Scroll >> 2) + 1) * Move_Direction_Scroll);
}
void Display_Render_Complex_Menu_Hierarchical_Single_Menu(Coordinates* coordinates, const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, Configuration_Menu_Hierarchical* config, int16_t x_offset)
void Display_Render_Complex_Menu_Hierarchical_Single_Menu(Coordinates* coordinates, const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config, int16_t x_offset)
{
// Create offset coordinates
Coordinates Offset_Coordinates = *coordinates;
@@ -1308,7 +1374,7 @@ void Display_Render_Complex_Menu_Hierarchical_Single_Menu(Coordinates* coordinat
}
}
void Display_Render_Complex_Menu_Hierarchical_Title(Coordinates* coordinates, const char* title, Configuration_Menu_Hierarchical* config)
void Display_Render_Complex_Menu_Hierarchical_Title(Coordinates* coordinates, const char* title, const Configuration_Menu_Hierarchical* config)
{
if (title == NULL || config->Title_Font == NULL) {
return;
@@ -1331,7 +1397,7 @@ void Display_Render_Complex_Menu_Hierarchical_Title(Coordinates* coordinates, co
Display_Shapes_Draw_Line_XY(Separator_X, Separator_Y, Separator_X + Separator_Width, Separator_Y, 1, config->Border_Color);
}
void Display_Render_Complex_Menu_Hierarchical_Items(Coordinates* coordinates, const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, Configuration_Menu_Hierarchical* config)
void Display_Render_Complex_Menu_Hierarchical_Items(Coordinates* coordinates, const Menu_List* current_list, int32_t selected_item, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config)
{
if (current_list->Items == NULL) {
return;
@@ -1394,7 +1460,7 @@ void Display_Render_Complex_Menu_Hierarchical_Items(Coordinates* coordinates, co
}
}
void Display_Render_Complex_Menu_Hierarchical_Single_Item(Coordinates* coordinates, const Menu_Item* item, int32_t item_index, int32_t selected_item, int16_t item_y, Display_Color item_color, float scale_factor, Configuration_Menu_Hierarchical* config)
void Display_Render_Complex_Menu_Hierarchical_Single_Item(Coordinates* coordinates, const Menu_Item* item, int32_t item_index, int32_t selected_item, int16_t item_y, Display_Color item_color, float scale_factor, const Configuration_Menu_Hierarchical* config)
{
char Display_Text[64];
@@ -1456,7 +1522,7 @@ void Display_Render_Complex_Menu_Hierarchical_Single_Item(Coordinates* coordinat
}
}
void Display_Render_Complex_Menu_Hierarchical_Selection_Box(Coordinates* coordinates, int32_t selected_item, int32_t scroll_offset, Configuration_Menu_Hierarchical* config)
void Display_Render_Complex_Menu_Hierarchical_Selection_Box(Coordinates* coordinates, int32_t selected_item, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config)
{
if (selected_item < 0) {
return;
@@ -1485,7 +1551,7 @@ void Display_Render_Complex_Menu_Hierarchical_Selection_Box(Coordinates* coordin
Display_Shapes_Draw_Round_Rect_Filled(Box_X + 1, Box_Y + 1, Box_Width - 2, Box_Height - 2, 4, Fill_Color);
}
void Display_Render_Complex_Menu_Hierarchical_Scroll_Indicators(Coordinates* coordinates, const Menu_List* current_list, int32_t scroll_offset, Configuration_Menu_Hierarchical* config)
void Display_Render_Complex_Menu_Hierarchical_Scroll_Indicators(Coordinates* coordinates, const Menu_List* current_list, int32_t scroll_offset, const Configuration_Menu_Hierarchical* config)
{
if (current_list->Item_Count <= config->Visible_Items) {
return; // No scrolling needed
@@ -1525,6 +1591,30 @@ void Display_Render_Complex_Menu_Hierarchical_Scroll_Indicators(Coordinates* coo
}
}
int32_t Display_Render_Complex_Select_List_Calculate_Scroll_Offset(uint32_t selected_entry, uint32_t total_entries, uint16_t visible_items)
{
if (total_entries <= visible_items) {
return 0; // No scrolling needed
}
int32_t Scroll_Offset = 0;
// Keep selected item in center of visible area when possible
int32_t Center_Position = visible_items / 2;
if (selected_entry >= Center_Position) {
Scroll_Offset = selected_entry - Center_Position;
}
// Ensure we don't scroll past the end
int32_t Max_Scroll = total_entries - visible_items;
if (Scroll_Offset > Max_Scroll) {
Scroll_Offset = Max_Scroll;
}
return Scroll_Offset;
}
float Display_Render_Complex_Select_RGB_Calculate_Progress_Ring_Angle(uint8_t value, uint8_t min_value, uint8_t max_value)
{
// Convert value (0-255) to angle (0-360 degrees)
@@ -1559,7 +1649,7 @@ float Display_Render_Complex_Select_RGB_Calculate_Progress_Ring_Angle(uint8_t va
return Angle_Degrees;
}
void Display_Render_Complex_Entry_Indicator_Arc(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, Configuration_Entry_Indicator* config)
void Display_Render_Complex_Entry_Indicator_Arc(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, const Configuration_Entry_Indicator* config)
{
if(config->Type != INDICATOR_ARC) {
return;
@@ -1617,7 +1707,7 @@ void Display_Render_Complex_Entry_Indicator_Arc(Coordinates* coordinates, uint32
Display_Shapes_Draw_Arc_Frame(DISPLAY_X_CENTER, DISPLAY_Y_CENTER, config->Options.Arc.Radius, config->Options.Arc.Thickness, _Entry_Indicator_Current_Angle, _Entry_Indicator_Current_Angle+Angle_Step_Per_Entry, 10, config->Color_Selected);
}
void Display_Render_Complex_Entry_Indicator_Dot(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, Configuration_Entry_Indicator* config)
void Display_Render_Complex_Entry_Indicator_Dot(Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, const Configuration_Entry_Indicator* config)
{
if(config->Type != INDICATOR_DOT) {
return;

View File

@@ -33,14 +33,15 @@ void Display_Render_Complex_Canvas (Coordinates* coordinates, Object_Canvas*
void Display_Render_Complex_Message_Box (Coordinates* coordinates, Object_Message_Box* message_box, int16_t width, int16_t height);
void Display_Render_Complex_Menu_Select (Coordinates* coordinates, char* menu_titles, uint32_t menu_entry_count, uint32_t title_char_length, uint32_t selected_entry, Configuration_Menu_Select* config);
void Display_Render_Complex_Menu_Icon_Row_Set (uint32_t initially_selected_item, uint32_t icon_space_width);
void Display_Render_Complex_Menu_Icon_Row (Coordinates* coordinates, Icon_Row_Item* items, uint32_t item_count, uint32_t selected_item, Configuration_Menu_Icon_Row* config);
void Display_Render_Complex_Menu_Icon_Row (Coordinates* coordinates, Icon_Row_Item* items, uint32_t item_count, uint32_t selected_item, const Configuration_Menu_Icon_Row* config);
void Display_Render_Complex_Menu_Ring (Coordinates* coordinates, Object_Menu_Ring* ring_menu);
void Display_Render_Complex_Menu_Hierarchical (Coordinates* coordinates, Object_Menu_Hierarchical* menu_hierarchical);
void Display_Render_Complex_Select_YesNo (Coordinates* coordinates, char* title, uint32_t title_length, bool value, Configuration_Select_YesNo* config);
void Display_Render_Complex_Select_List (Coordinates* coordinates, char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t selected_entry, Configuration_Select_List* config);
void Display_Render_Complex_Select_Value (Coordinates* coordinates, char* title, uint32_t title_length, int32_t value, int32_t max, int32_t min, char* format, Configuration_Select_Value* config);
void Display_Render_Complex_Select_YesNo_Set (bool value, const Configuration_Select_YesNo* config);
void Display_Render_Complex_Select_YesNo (Coordinates* coordinates, char* title, uint32_t title_length, bool value, const Configuration_Select_YesNo* config);
void Display_Render_Complex_Select_List (Coordinates* coordinates, char* list_titles, uint32_t list_entry_count, uint32_t list_char_length, uint32_t selected_entry, uint32_t initial_entry, const Configuration_Select_List* config);
void Display_Render_Complex_Select_Value (Coordinates* coordinates, char* title, uint32_t title_length, int32_t value, int32_t max, int32_t min, char* format, const Configuration_Select_Value* config);
void Display_Render_Complex_Select_RGB (Coordinates* coordinates, Object_Select_RGB* rgb_selector);
void Display_Render_Complex_Entry_Indicator (Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, Configuration_Entry_Indicator* config);
void Display_Render_Complex_Entry_Indicator (Coordinates* coordinates, uint32_t entry_count, int32_t entry_value, const Configuration_Entry_Indicator* config);
#endif // DISPLAY_RENDER_COMPLEX_H

View File

@@ -68,7 +68,7 @@ void Display_Render_Simple_Text(Coordinates* coordinates_object, Object_Text* te
void Display_Render_Simple_Image(Coordinates* coordinates_object, Object_Image_Color* image)
{
if(image->Rotation_Angle == 0) {
Display_Image_Draw_Color_Alpha(coordinates_object->X, coordinates_object->Y, image->Image, image->Alpha);
Display_Image_Draw_Color_Scaled_Alpha(coordinates_object->X, coordinates_object->Y, image->Image, image->Scale, image->Alpha);
}
else {
Display_Image_Draw_Color_Rotated_Alpha(coordinates_object->X, coordinates_object->Y, image->Image, image->Rotation_Angle, image->Alpha);

View File

@@ -527,15 +527,17 @@ void Display_Shapes_Draw_Arc_Frame(int16_t center_x, int16_t center_y, int16_t r
float Angle_Step = (float)(angle_end - angle_start) / (float)steps;
for (float i = angle_start; i <= angle_end; i = i + Angle_Step)
float Angle = angle_start;
for (int i = 0; i <= steps; i++)
{
if(thickness == 1) {
Display_Shapes_Draw_Pixel_Safe(center_x + cos(i*DEG2RAD) * radius, center_y + sin(i*DEG2RAD) * radius, color);
Display_Shapes_Draw_Pixel_Safe(center_x + cos(Angle*DEG2RAD) * radius, center_y + sin(Angle*DEG2RAD) * radius, color);
}
else {
Display_Shapes_Draw_Circle_Filled(center_x + cos(i*DEG2RAD) * radius, center_y + sin(i*DEG2RAD) * radius, thickness >> 1, color);
Display_Shapes_Draw_Circle_Filled(center_x + cos(Angle*DEG2RAD) * radius, center_y + sin(Angle*DEG2RAD) * radius, thickness >> 1, color);
}
Angle += Angle_Step;
}
}

View File

@@ -140,7 +140,7 @@ bool EEPROM_Write_Data(uint section)
void EEPROM_Check_Content_Valid()
{
if(_EEPROM_Content.Device_Configuration.Idle_Screen > IDLE_SCREEN_MODE_ACTIVITY) {
if((uint32_t)_EEPROM_Content.Device_Configuration.Idle_Screen > IDLE_SCREEN_MODE_ACTIVITY) {
_EEPROM_Content.Device_Configuration.Idle_Screen = IDLE_SCREEN_BLACK;
}
@@ -148,9 +148,19 @@ void EEPROM_Check_Content_Valid()
_EEPROM_Content.Device_Configuration.Screen_Timeout = SCREEN_TIMEOUT_MAX_s;
}
// Reverse Scrolling no need, as bool is compared with equal to 0
if(_EEPROM_Content.Device_Configuration.Screen_Timeout < SCREEN_TIMEOUT_MIN_s) {
_EEPROM_Content.Device_Configuration.Screen_Timeout = SCREEN_TIMEOUT_MIN_s;
}
if(_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel > MIDI_CHANNEL_16) {
if((uint32_t)_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling > 1) {
_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling = 1;
}
if((uint32_t)_EEPROM_Content.Device_Configuration.Use_Color_Correction > 1) {
_EEPROM_Content.Device_Configuration.Use_Color_Correction = 1;
}
if((uint32_t)_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel > MIDI_CHANNEL_16) {
_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel = MIDI_CHANNEL_1;
}
@@ -161,25 +171,33 @@ void EEPROM_Check_Content_Valid()
// Note Colors no need, as full range of UINT8 is valid
if(_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Skip_Note_Off_Event > 1) {
if((uint32_t)_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Skip_Note_Off_Event > 1) {
_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Skip_Note_Off_Event = 1;
}
if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Enabled > 1) {
if((uint32_t)_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Note_Reset_Enabled > 1) {
_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Note_Reset_Enabled = 1;
}
if((uint32_t)_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Note_Reset_Timeout > 600) {
_EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Note_Reset_Timeout = 600;
}
if((uint32_t)_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Enabled > 1) {
_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Enabled = 1;
}
// Pause Light Color no need, as full range of UINT8 is valid
if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout > PAUSE_LIGHT_DELAY_MAX_s) {
if((uint32_t)_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout > PAUSE_LIGHT_DELAY_MAX_s) {
_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout = PAUSE_LIGHT_DELAY_MIN_s;
}
if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Reset_Condition > CHANNEL_AND_EVENT_MATCH) {
if((uint32_t)_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Reset_Condition > CHANNEL_AND_EVENT_MATCH) {
_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Reset_Condition = ANY_TRAFFIC;
}
if(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Fade_Speed > FADE_SPEED_MAX) {
if((uint32_t)_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Fade_Speed > FADE_SPEED_MAX) {
_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Fade_Speed = FADE_SPEED_MIN;
}
@@ -187,16 +205,16 @@ void EEPROM_Check_Content_Valid()
// Note Stack Enabled no need, as bool is compared with equal to 0
if(_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s > DURATION_MAX_s) {
_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s = DURATION_MAX_s;
if((uint32_t)_EEPROM_Content.Jam_Light_Configuration.Durations.Max > DURATION_MAX_s) {
_EEPROM_Content.Jam_Light_Configuration.Durations.Max = DURATION_MAX_s;
}
if(_EEPROM_Content.Jam_Light_Configuration.Duration_Min_s > _EEPROM_Content.Jam_Light_Configuration.Duration_Max_s || _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s < DURATION_MIN_s) {
_EEPROM_Content.Jam_Light_Configuration.Duration_Min_s = DURATION_MIN_s;
if((uint32_t)_EEPROM_Content.Jam_Light_Configuration.Durations.Min > _EEPROM_Content.Jam_Light_Configuration.Durations.Max || _EEPROM_Content.Jam_Light_Configuration.Durations.Min < DURATION_MIN_s) {
_EEPROM_Content.Jam_Light_Configuration.Durations.Min = DURATION_MIN_s;
}
if(_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s <= _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s) {
_EEPROM_Content.Jam_Light_Configuration.Duration_Max_s = DURATION_MAX_s;
if(_EEPROM_Content.Jam_Light_Configuration.Durations.Max <= _EEPROM_Content.Jam_Light_Configuration.Durations.Min) {
_EEPROM_Content.Jam_Light_Configuration.Durations.Max = DURATION_MAX_s;
}
while(_EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color < 0) {
@@ -205,25 +223,17 @@ void EEPROM_Check_Content_Valid()
_EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color %= HUE_MAX_ANGLE;
if(_EEPROM_Content.Jam_Light_Configuration.Color_Change > COLOR_CHANGE_MAX) {
if((uint32_t)_EEPROM_Content.Jam_Light_Configuration.Color_Change > COLOR_CHANGE_MAX) {
_EEPROM_Content.Jam_Light_Configuration.Color_Change = COLOR_CHANGE_MIN;
}
if(_EEPROM_Content.Jam_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) {
if((uint32_t)_EEPROM_Content.Jam_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) {
_EEPROM_Content.Jam_Light_Configuration.Fade_Speed = FADE_SPEED_MIN;
}
// Const Color no need, as full range of UINT8 is valid
if(_EEPROM_Content.Const_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) {
if((uint32_t)_EEPROM_Content.Const_Light_Configuration.Fade_Speed > FADE_SPEED_MAX) {
_EEPROM_Content.Const_Light_Configuration.Fade_Speed = FADE_SPEED_MIN;
}
if(_EEPROM_Content.Device_Configuration.Transition_Type >= 0) {
_EEPROM_Content.Device_Configuration.Transition_Type = 0;
}
if(_EEPROM_Content.Device_Configuration.Transition_Frames == 0) {
_EEPROM_Content.Device_Configuration.Transition_Frames = 16;
}
}

View File

@@ -30,12 +30,11 @@
// Datatypes
typedef struct {
uint8_t Idle_Screen;
uint Screen_Timeout;
int32_t Idle_Screen;
int32_t Screen_Timeout;
uint8_t Reverse_List_Scrolling;
uint8_t Transition_Type;
uint8_t Transition_Frames;
uint8_t Use_Color_Correction;
int32_t Current_Threshold;
} __packed Device_Configuration_s;
typedef struct

View File

@@ -0,0 +1,109 @@
#include <stdint.h>
const uint8_t _Font_DejaVu_Sans_Mono_15x25[] = {
0x00, 0x00, // Size of zero indicates fixed width font, actual length is width * height
0x0f, // Width
0x19, // Height
0x20, // First Character
0x5f, // Character Count
// Fixed width; char width table not used !!!!
// Font Data
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // !
0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // "
0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xfe, 0xc2, 0xc0, 0xc0, 0xfe, 0xde, 0xc0, 0xc0, 0x00, 0x30, 0x30, 0x30, 0xf0, 0x7f, 0x37, 0x30, 0xf0, 0xfc, 0x3f, 0x31, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // #
0x00, 0x00, 0xc0, 0xe0, 0x60, 0x30, 0x30, 0xfe, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x0c, 0x0c, 0x0c, 0xff, 0x18, 0x18, 0x38, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06, 0x06, 0x06, 0x7f, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // $
0x38, 0x7c, 0xc6, 0xc6, 0xc6, 0x7c, 0x38, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x20, 0x30, 0x18, 0x08, 0x0c, 0x04, 0xc2, 0xe3, 0x31, 0x31, 0x30, 0xe0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x06, 0x06, 0x06, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // %
0x00, 0x00, 0x00, 0x78, 0xfc, 0x8e, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfc, 0x86, 0x03, 0x03, 0x07, 0x1c, 0x38, 0x70, 0xe0, 0xc0, 0xe0, 0x7c, 0x3c, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x07, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // &
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // '
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x7c, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x1f, 0x38, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // (
0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x7c, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x38, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // )
0x00, 0x00, 0x08, 0x98, 0x90, 0xf0, 0x60, 0xfe, 0x60, 0xf0, 0x90, 0x98, 0x08, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // *
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xff, 0xff, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // +
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // -
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0x7c, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x78, 0x1e, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1c, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // /
0x00, 0x00, 0xe0, 0xf8, 0x3c, 0x0e, 0x06, 0x06, 0x06, 0x0e, 0x3c, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x06, 0x06, 0x06, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0
0x00, 0x00, 0x00, 0x0c, 0x0c, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1
0x00, 0x00, 0x0c, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x60, 0x30, 0x38, 0x0e, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 2
0x00, 0x00, 0x00, 0x0c, 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x0f, 0x0f, 0xf9, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 3
0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x1c, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x7c, 0x6e, 0x63, 0x61, 0x60, 0x60, 0x60, 0xff, 0xff, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 4
0x00, 0x00, 0x00, 0xfe, 0xfe, 0x86, 0x86, 0x86, 0x86, 0x86, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x87, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 5
0x00, 0x00, 0xc0, 0xf0, 0x3c, 0x0c, 0x8e, 0x86, 0x86, 0x86, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x86, 0x03, 0x01, 0x01, 0x01, 0x03, 0x87, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 6
0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xe6, 0xfe, 0x3e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xfc, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 7
0x00, 0x00, 0xf8, 0xfc, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf9, 0x0f, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0f, 0xf9, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 8
0x00, 0x00, 0xf0, 0xfc, 0x1c, 0x0e, 0x06, 0x06, 0x06, 0x0e, 0x1c, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x0e, 0x18, 0x18, 0x18, 0x18, 0x0c, 0xc6, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 9
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // :
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x87, 0x87, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x3f, 0x1f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ;
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xc0, 0x00, 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0xc3, 0x81, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // <
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // =
0x00, 0xc0, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0xc3, 0xc3, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x3c, 0x18, 0x00, 0x00, 0x00, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // >
0x00, 0x00, 0x00, 0x18, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x8e, 0xfc, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3e, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ?
0x00, 0x00, 0x80, 0xe0, 0x60, 0x30, 0x38, 0x18, 0x18, 0x18, 0x18, 0x38, 0x70, 0xe0, 0xc0, 0x00, 0xfe, 0xff, 0x01, 0x00, 0x00, 0xfc, 0xfe, 0x87, 0x03, 0x03, 0x03, 0x86, 0xff, 0xff, 0x00, 0x01, 0x07, 0x0f, 0x1c, 0x38, 0x30, 0x61, 0x63, 0x63, 0x63, 0x63, 0x61, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // @
0x00, 0x00, 0x00, 0x00, 0xc0, 0xfc, 0x3e, 0x3e, 0xfc, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xfe, 0x7f, 0x63, 0x60, 0x60, 0x63, 0x7f, 0xfc, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // A
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0xfc, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x0f, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // B
0x00, 0xc0, 0xf0, 0x38, 0x0c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // C
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0x38, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // D
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // E
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // F
0x00, 0xc0, 0xf0, 0x38, 0x0c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0c, 0x0c, 0xfc, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // G
0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // H
0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // I
0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // J
0x00, 0xfe, 0xfe, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x06, 0x02, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x03, 0x07, 0x0e, 0x3c, 0x70, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // K
0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // L
0x00, 0xfe, 0xfe, 0x1e, 0xf8, 0xc0, 0x00, 0x00, 0xc0, 0xf8, 0x1e, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x07, 0x1e, 0x1e, 0x07, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // M
0x00, 0xfe, 0xfe, 0x1e, 0xf8, 0xe0, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x03, 0x0f, 0x7c, 0xf0, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // N
0x00, 0xe0, 0xf8, 0x3c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x3c, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // O
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x07, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // P
0x00, 0xe0, 0xf8, 0x3c, 0x0e, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x3c, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x06, 0x06, 0x06, 0x0e, 0x1f, 0x3b, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Q
0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x0c, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0e, 0x3f, 0xf1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // R
0x00, 0xf0, 0xfc, 0x0c, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x07, 0x06, 0x06, 0x06, 0x0c, 0x1c, 0xf8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // S
0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // T
0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // U
0x00, 0x06, 0x7e, 0xf8, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf8, 0x7e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xfc, 0xc0, 0xc0, 0xfc, 0x7f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // V
0x1e, 0xfe, 0xf0, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0xf0, 0xfe, 0x1e, 0x00, 0x00, 0x0f, 0xff, 0xf8, 0xf0, 0x7f, 0x07, 0x07, 0x7f, 0xf0, 0xf8, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // W
0x00, 0x02, 0x0e, 0x1e, 0x78, 0xe0, 0x80, 0x80, 0xe0, 0x78, 0x1e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0x3d, 0x0f, 0x1f, 0x7d, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // X
0x02, 0x06, 0x1e, 0x78, 0xe0, 0xc0, 0x00, 0x00, 0xc0, 0xe0, 0x78, 0x1e, 0x0e, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Y
0x00, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x86, 0xc6, 0xf6, 0x7e, 0x1e, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0, 0x70, 0x3c, 0x1e, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Z
0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [
0x00, 0x02, 0x0e, 0x7c, 0xf0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x1e, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // "\"
0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x30, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ]
0x00, 0x80, 0xc0, 0xe0, 0x38, 0x1c, 0x0e, 0x06, 0x0e, 0x1c, 0x38, 0xe0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ^
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // _
0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x06, 0x0c, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // `
0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x30, 0x18, 0x18, 0x18, 0x18, 0x18, 0x99, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // a
0x00, 0x00, 0xfe, 0xfe, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x03, 0x03, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // b
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // c
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // d
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x9b, 0x19, 0x18, 0x18, 0x18, 0x18, 0x19, 0x1f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // e
0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xfc, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // f
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61, 0xc3, 0xc7, 0xc6, 0xc6, 0xc6, 0xc3, 0x63, 0x3f, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // g
0x00, 0x00, 0xfe, 0xfe, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // h
0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xce, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // i
0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xce, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // j
0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x38, 0x1c, 0x1e, 0x7f, 0xe3, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // k
0x00, 0x06, 0x06, 0x06, 0x06, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // l
0x00, 0x00, 0xc0, 0xc0, 0x80, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // m
0x00, 0x00, 0xc0, 0xc0, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // n
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // o
0x00, 0x00, 0xc0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x03, 0x06, 0x06, 0x06, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // p
0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x80, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x83, 0x01, 0x00, 0x00, 0x00, 0x01, 0x83, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x03, 0x03, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // q
0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // r
0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x1d, 0x18, 0x18, 0x18, 0x38, 0x30, 0x30, 0xf1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // s
0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // t
0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x06, 0x06, 0x06, 0x06, 0x03, 0x01, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // u
0x00, 0x00, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3f, 0xfc, 0xe0, 0x00, 0xe0, 0xfc, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // v
0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xf0, 0x00, 0xf0, 0x3c, 0x3c, 0xf0, 0x00, 0xf0, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x07, 0x01, 0x00, 0x00, 0x01, 0x07, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // w
0x00, 0x00, 0x40, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xc7, 0xfe, 0x3c, 0xfe, 0xc7, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x06, 0x07, 0x01, 0x00, 0x00, 0x00, 0x01, 0x07, 0x06, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // x
0x00, 0x00, 0x40, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1f, 0xfc, 0xf0, 0x80, 0xe0, 0xfc, 0x1f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0x7b, 0x3f, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // y
0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x38, 0x1c, 0x0e, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // z
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xfe, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x3c, 0xff, 0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x7f, 0x60, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // |
0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0xfe, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0xff, 0x3c, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x60, 0x60, 0x7f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // }
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // ~
};

View File

@@ -26,22 +26,186 @@ static const Menu_List _Menu_List_MIDI_Pause;
static const Menu_List _Menu_List_MIDI;
const Hierarchical_Menu _Hierarchical_Menu_MIDI;
static const Menu_Item _Menu_Items_Jam[];
static const Menu_List _Menu_List_Jam;
const Hierarchical_Menu _Hierarchical_Menu_Jam;
static const Menu_Item _Menu_Items_Const_Light[];
static const Menu_List _Menu_List_Const_Light;
const Hierarchical_Menu _Hierarchical_Menu_Const_Light;
static const Menu_Item _Menu_Items_Device[];
static const Menu_List _Menu_List_Device;
const Hierarchical_Menu _Hierarchical_Menu_Device;
// ============================================================================================
// Variables Configuration
static const Menu_Configuration_Select_Value _Select_Value_Octave = {
.Min = -2,
.Max = 8,
.Value_Display_Ratio = 1,
.Format = "Octave %+d",
.Use_Acceleration = false,
.Cycle_Selector = false
};
static const Menu_Configuration_Select_Value _Select_Value_Fade_Speed = {
.Min = 1,
.Max = UINT8_MAX,
.Format = "%u"
.Value_Display_Ratio = 1,
.Format = "%u",
.Use_Acceleration = true,
.Cycle_Selector = true
};
static const Menu_Configuration_Select_Value _Select_Value_Jam_Start_Color = {
.Min = 0,
.Max = 359,
.Value_Display_Ratio = 1,
.Format = "%u Deg",
.Use_Acceleration = true,
.Cycle_Selector = true
};
static const Menu_Configuration_Select_Value _Select_Value_Jam_Color_Change = {
.Min = COLOR_CHANGE_MIN,
.Max = COLOR_CHANGE_MAX,
.Value_Display_Ratio = 1,
.Format = "%u Deg",
.Use_Acceleration = false,
.Cycle_Selector = false
};
static const Menu_Configuration_Select_MinMax _Select_MinMax_Jam_Durations = {
.Min = DURATION_MIN_s,
.Max = DURATION_MAX_s,
.Format_Max = "Max: %03us",
.Format_Min = "Min: %03us",
.Use_Acceleration = false,
.Cycle_Selector = false
};
static const Menu_Configuration_Select_Value _Select_Value_Timeout = {
.Min = 1,
.Max = 600,
.Value_Display_Ratio = 1,
.Format = "%u Seconds",
.Use_Acceleration = true,
.Cycle_Selector = false
};
static const Menu_Configuration_Select_Value _Select_Value_Timeout_Device = {
.Min = SCREEN_TIMEOUT_MIN_s,
.Max = SCREEN_TIMEOUT_MAX_s,
.Value_Display_Ratio = 1,
.Format = "%u Seconds",
.Use_Acceleration = true,
.Cycle_Selector = false
};
static const Menu_Configuration_Select_Value _Select_Value_Current_Threshold = {
.Min = 0,
.Max = 1000,
.Value_Display_Ratio = 5,
.Format = "%u mA",
.Use_Acceleration = true,
.Cycle_Selector = false
};
static const char _Note_Names[NOTES_PER_OCTAVE][2] = {
"C ",
"C#",
"D ",
"D#",
"E ",
"F ",
"F#",
"G ",
"G#",
"A ",
"A#",
"B "
};
const Menu_Configuration_Select_List _Select_List_Note_Names = {
.Item_Names = &(_Note_Names[0][0]),
.Name_Length = 2,
.Item_Count = NOTES_PER_OCTAVE,
.Use_Acceleration = false,
.Cycle_Selector = false
};
static const char _MIDI_Channel_Names[16][10] = {
"Channel 1",
"Channel 2",
"Channel 3",
"Channel 4",
"Channel 5",
"Channel 6",
"Channel 7",
"Channel 8",
"Channel 9",
"Channel 10",
"Channel 11",
"Channel 12",
"Channel 13",
"Channel 14",
"Channel 15",
"Channel 16"
};
const Menu_Configuration_Select_List _Select_List_MIDI_Channel = {
.Item_Names = &(_MIDI_Channel_Names[0][0]),
.Name_Length = 10,
.Item_Count = 16,
.Use_Acceleration = false,
.Cycle_Selector = false
};
static const char _Pause_Light_Reset[4][21] = {
" Any Traffic ",
" Channel Match ",
" Event Match ",
"Channel & Event"
};
const Menu_Configuration_Select_List _Select_List_Pause_Light_Reset = {
.Item_Names = &(_Pause_Light_Reset[0][0]),
.Name_Length = 21,
.Item_Count = 4,
.Use_Acceleration = false,
.Cycle_Selector = false
};
static const char _Device_Idle_Screen[4][13] = {
"Black ",
"FAD Logo ",
"Current Mode ",
"Mode Activity"
};
const Menu_Configuration_Select_List _Select_List_Device_Idle_Screen = {
.Item_Names = &(_Device_Idle_Screen[0][0]),
.Name_Length = 13,
.Item_Count = 4,
.Use_Acceleration = false,
.Cycle_Selector = false
};
// ============================================================================================
// Variables Hierarchical Menu
static const Menu_Item _Menu_Items_MIDI_Config[] = {
{ "MIDI Channel" , NULL, false, &_Menu_List_MIDI_Config, NONE, "", NULL, NULL },
{ "Select Octave" , NULL, false, &_Menu_List_MIDI_Config, NONE, "", NULL, NULL },
{ "MIDI Channel" , NULL, false, &_Menu_List_MIDI_Config, LIST, "MIDI Channel" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].MIDI_Channel) , (void*)(&_Select_List_MIDI_Channel) },
{ "Select Octave" , NULL, false, &_Menu_List_MIDI_Config, VALUE, "Select Octave" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Octave) , (void*)(&_Select_Value_Octave) },
{ "Skip Note Off" , NULL, false, &_Menu_List_MIDI_Config, BOOL, "Skip Note Off" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Skip_Note_Off_Event) , NULL },
{ "Note Reset Enable" , NULL, false, &_Menu_List_MIDI_Config, BOOL, "Note Reset Enable" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Enabled) , NULL },
{ "Note Reset Timeout" , NULL, false, &_Menu_List_MIDI_Config, VALUE, "Note Reset Timeout" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Timeout) , (void*)(&_Select_Value_Timeout) },
{ "Back" , NULL, true , &_Menu_List_MIDI_Config, NONE, "", NULL, NULL }
};
@@ -55,10 +219,10 @@ static const Menu_List _Menu_List_MIDI_Config = {
static const Menu_Item _Menu_Items_MIDI_Notes[] = {
{ "Red" , NULL, false, &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL },
{ "Green" , NULL, false, &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL },
{ "Blue" , NULL, false, &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL },
{ "Default Notes" , NULL, false, &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL },
{ "Red" , NULL, false, &_Menu_List_MIDI_Notes, LIST, "Note for Red" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Red) , (void*)(&_Select_List_Note_Names) },
{ "Green" , NULL, false, &_Menu_List_MIDI_Notes, LIST, "Note for Green" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Green) , (void*)(&_Select_List_Note_Names) },
{ "Blue" , NULL, false, &_Menu_List_MIDI_Notes, LIST, "Note for Blue" , (void*)(&_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Blue) , (void*)(&_Select_List_Note_Names) },
{ "Default Notes" , NULL, false, &_Menu_List_MIDI_Notes, DEFAULT_NOTES, "Reset Color Notes", NULL, NULL },
{ "Back" , NULL, true , &_Menu_List_MIDI_Notes, NONE, "", NULL, NULL }
};
@@ -75,8 +239,8 @@ static const Menu_Item _Menu_Items_MIDI_Pause[] = {
{ "Enable" , NULL, false, &_Menu_List_MIDI_Pause, BOOL , "Enable Pause Light" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Enabled) , NULL },
{ "Color" , NULL, false, &_Menu_List_MIDI_Pause, RGB , "Pause Light Color" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Color) , NULL },
{ "Fade Speed" , NULL, false, &_Menu_List_MIDI_Pause, VALUE, "Pause Light Fade Speed" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Fade_Speed) , (void*)(&_Select_Value_Fade_Speed)},
{ "Timeout" , NULL, false, &_Menu_List_MIDI_Pause, NONE, "", NULL, NULL },
{ "Reset" , NULL, false, &_Menu_List_MIDI_Pause, NONE, "", NULL, NULL },
{ "Timeout" , NULL, false, &_Menu_List_MIDI_Pause, VALUE, "Pause Light Timeout" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Timeout) , (void*)(&_Select_Value_Timeout) },
{ "Reset" , NULL, false, &_Menu_List_MIDI_Pause, LIST , "Pause Light Reset" , (void*)(&_EEPROM_Content.Pause_Light_Configuration[0].Reset_Condition), (void*)(&_Select_List_Pause_Light_Reset) },
{ "Back" , NULL, true , &_Menu_List_MIDI_Pause, NONE , "", NULL, NULL }
};
@@ -90,10 +254,10 @@ static const Menu_List _Menu_List_MIDI_Pause = {
static const Menu_Item _Menu_Items_MIDI[] = {
{ "MIDI Config" , &_Menu_List_MIDI_Config , false, &_Menu_List_MIDI },
{ "Color Notes" , &_Menu_List_MIDI_Notes , false, &_Menu_List_MIDI },
{ "Pause Light" , &_Menu_List_MIDI_Pause , false, &_Menu_List_MIDI },
{ "Back" , NULL , true , &_Menu_List_MIDI }
{ "MIDI Config" , &_Menu_List_MIDI_Config , false, &_Menu_List_MIDI, NONE, "", NULL, NULL },
{ "Color Notes" , &_Menu_List_MIDI_Notes , false, &_Menu_List_MIDI, NONE, "", NULL, NULL },
{ "Pause Light" , &_Menu_List_MIDI_Pause , false, &_Menu_List_MIDI, NONE, "", NULL, NULL },
{ "Back" , NULL , true , &_Menu_List_MIDI, NONE, "", NULL, NULL }
};
static const Menu_List _Menu_List_MIDI = {
@@ -112,6 +276,83 @@ const Hierarchical_Menu _Hierarchical_Menu_MIDI = {
};
static const Menu_Item _Menu_Items_Jam[] = {
{ "Start Color" , NULL, false, &_Menu_List_Jam, HUE, "Hue Angle Start Color", (void*)(&_EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color), (void*)(&_Select_Value_Jam_Start_Color) },
{ "Color Change" , NULL, false, &_Menu_List_Jam, VALUE, "Max Color Change", (void*)(&_EEPROM_Content.Jam_Light_Configuration.Color_Change), (void*)(&_Select_Value_Jam_Color_Change) },
{ "Durations" , NULL, false, &_Menu_List_Jam, MINMAX, "Set Durations", (void*)(&_EEPROM_Content.Jam_Light_Configuration.Durations), (void*)(&_Select_MinMax_Jam_Durations) },
{ "Fade Speed" , NULL, false, &_Menu_List_Jam, VALUE, "Jam Fade Speed", (void*)(&_EEPROM_Content.Jam_Light_Configuration.Fade_Speed), (void*)(&_Select_Value_Fade_Speed) },
{ "Back" , NULL, true , &_Menu_List_Jam, NONE, "", NULL, NULL }
};
static const Menu_List _Menu_List_Jam = {
.Title = "Jam Mode",
.Items = _Menu_Items_Jam,
.Item_Count = sizeof(_Menu_Items_Jam) / sizeof(Menu_Item),
.Parent = NULL,
.Root = &_Hierarchical_Menu_Jam
};
const Hierarchical_Menu _Hierarchical_Menu_Jam = {
.List = &_Menu_List_Jam,
.Parent_Function = &Screen_Setup_Settings,
.Parent_Selected_Setting = 1
};
static const Menu_Item _Menu_Items_Const_Light[] = {
{ "Color" , NULL, false, &_Menu_List_Const_Light, RGB , "Constant Light Color", (void*)(&_EEPROM_Content.Const_Light_Configuration.Color), NULL },
{ "Fade Speed" , NULL, false, &_Menu_List_Const_Light, VALUE , "Constant Light Fade" , (void*)(&_EEPROM_Content.Const_Light_Configuration.Fade_Speed), (void*)(&_Select_Value_Fade_Speed) },
{ "Back" , NULL, true , &_Menu_List_Const_Light, NONE , "", NULL, NULL }
};
static const Menu_List _Menu_List_Const_Light = {
.Title = "Constant Light",
.Items = _Menu_Items_Const_Light,
.Item_Count = sizeof(_Menu_Items_Const_Light) / sizeof(Menu_Item),
.Parent = NULL,
.Root = &_Hierarchical_Menu_Const_Light
};
const Hierarchical_Menu _Hierarchical_Menu_Const_Light = {
.List = &_Menu_List_Const_Light,
.Parent_Function = &Screen_Setup_Settings,
.Parent_Selected_Setting = 2
};
static const Menu_Item _Menu_Items_Device[] = {
{ "Idle Screen " , NULL, false, &_Menu_List_Device, LIST, "Idle Screen" , (void*)(&_EEPROM_Content.Device_Configuration.Idle_Screen) , (void*)(&_Select_List_Device_Idle_Screen) },
{ "Screen Timeout" , NULL, false, &_Menu_List_Device, VALUE, "Screen Timeout" , (void*)(&_EEPROM_Content.Device_Configuration.Screen_Timeout) , (void*)(&_Select_Value_Timeout_Device) },
{ "Rev. List Scroll" , NULL, false, &_Menu_List_Device, BOOL, "Reverse Scrolling" , (void*)(&_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling) , NULL },
{ "Color Correction" , NULL, false, &_Menu_List_Device, BOOL, "Color Correction" , (void*)(&_EEPROM_Content.Device_Configuration.Use_Color_Correction) , NULL },
{ "Current Threshold" , NULL, false, &_Menu_List_Device, VALUE, "Current Threshold" , (void*)(&_EEPROM_Content.Device_Configuration.Current_Threshold) , (void*)(&_Select_Value_Current_Threshold) },
{ "Reboot Device" , NULL, false, &_Menu_List_Device, REBOOT, "", NULL, NULL },
{ "Back" , NULL, true , &_Menu_List_Device, NONE, "", NULL, NULL }
};
static const Menu_List _Menu_List_Device = {
.Title = "Device Settings",
.Items = _Menu_Items_Device,
.Item_Count = sizeof(_Menu_Items_Device) / sizeof(Menu_Item),
.Parent = NULL,
.Root = &_Hierarchical_Menu_Device
};
const Hierarchical_Menu _Hierarchical_Menu_Device = {
.List = &_Menu_List_Device,
.Parent_Function = &Screen_Setup_Settings,
.Parent_Selected_Setting = 3
};
// ============================================================================================
// Function Declarations

View File

@@ -34,15 +34,43 @@ typedef enum {
NONE,
BOOL,
RGB,
VALUE
VALUE,
LIST,
DEFAULT_NOTES,
REBOOT,
HUE,
MINMAX
} Variable_Type;
typedef struct {
int32_t Min;
int32_t Max;
char* Format;
const int32_t Min;
const int32_t Max;
const int32_t Value_Display_Ratio;
const char* Format;
const bool Use_Acceleration;
const bool Cycle_Selector;
} Menu_Configuration_Select_Value;
typedef struct {
const char* Item_Names;
const uint32_t Name_Length;
const uint32_t Item_Count;
const bool Use_Acceleration;
const bool Cycle_Selector;
} Menu_Configuration_Select_List;
typedef struct {
const int32_t Min;
const int32_t Max;
const int32_t Value_Display_Ratio;
const char* Format_Min;
const char* Format_Max;
const bool Use_Acceleration;
const bool Cycle_Selector;
} Menu_Configuration_Select_MinMax;
typedef struct Menu_Item_s {
const char* Text;

View File

@@ -10,6 +10,7 @@
// ============================================================================================
// Includes
#include "I2C_Master.h"
#include "EEPROM_M24C64.h"
// ============================================================================================
@@ -27,6 +28,7 @@
#define INA260_ENABLE_LEN_BIT 0
#define UINT8_ARR_TO_UINT16(_U8_) ((uint16_t)(_U8_[0]) << 8) | (uint16_t)(_U8_[1])
#define UINT16_SWAP_BYTES(_U16_) ((_U16_ << 8) | (_U16_ >> 8 ))
// ============================================================================================
@@ -84,10 +86,14 @@ typedef enum _INA260_AlertLatch {
// Variables
static uint16_t _INA260_BusVoltage_mV;
static uint16_t _INA260_Current_mA;
static uint16_t _INA260_Threshold;
static int32_t _Written_Current_Threshold;
// ============================================================================================
// Function Declarations
void INA260_Write_Register(uint8_t reg_address, uint16_t reg_data);
uint16_t INA260_Read_Register(uint8_t reg_address);
@@ -98,22 +104,42 @@ void INA260_Init()
{
_INA260_BusVoltage_mV = 0;
_INA260_Current_mA = 0;
_Written_Current_Threshold = -1;
uint16_t Configuration_Register_Value_Reset = (1 << INA260_CONGIG_RST_BIT);
INA260_Write_Register(INA260_REG_CONFIG, Configuration_Register_Value_Reset);
uint16_t Configuration_Register_Value =
(0 << INA260_CONGIG_RST_BIT) | // No Reset
(INA260_COUNT_1 << INA260_CONGIG_AVG0_BIT) | // Averaging Count
(INA260_TIME_8_244_ms << INA260_CONGIG_VBUSCT0_BIT) | // Bus Voltage Conversion Time
(INA260_TIME_8_244_ms << INA260_CONGIG_ISHCT0_BIT) | // Shunt Current Conversion Time
(INA260_MODE_CONTINUOUS << INA260_CONGIG_MODE1_BIT); // Operating Mode
I2CM_Packet_Transmit(INA260_I2CADDR_DEFAULT, INA260_REG_CONFIG, 1, (uint8_t*)(&Configuration_Register_Value), 2);
uint16_t Enable_Register_Value =
(1 << INA260_ENABLE_OCL_BIT) | // Over Current Limit
(0 << INA260_ENABLE_APOL_BIT) | // Alert Polarity Bit
(1 << INA260_ENABLE_LEN_BIT); // Alert Latch Enable
I2CM_Packet_Transmit(INA260_I2CADDR_DEFAULT, INA260_REG_MASK_ENABLE, 1, (uint8_t*)(&Enable_Register_Value), 2);
uint16_t Configuration_Register_Value =
(0 << INA260_CONGIG_RST_BIT) | // No Reset
(INA260_COUNT_4 << INA260_CONGIG_AVG0_BIT) | // Averaging Count
(INA260_TIME_8_244_ms << INA260_CONGIG_VBUSCT0_BIT) | // Bus Voltage Conversion Time
(INA260_TIME_8_244_ms << INA260_CONGIG_ISHCT0_BIT) | // Shunt Current Conversion Time
(INA260_MODE_CONTINUOUS << INA260_CONGIG_MODE1_BIT); // Operating Mode
sleep_ms(20);
INA260_Update_Current_Threshold();
sleep_ms(20);
INA260_Write_Register(INA260_REG_CONFIG, Configuration_Register_Value);
sleep_ms(20);
INA260_Write_Register(INA260_REG_MASK_ENABLE, Enable_Register_Value);
}
void INA260_Update_Current_Threshold()
{
if(_Written_Current_Threshold == _EEPROM_Content.Device_Configuration.Current_Threshold) {
return;
}
INA260_Write_Register(INA260_REG_ALERT_LIMIT, (uint16_t)(_EEPROM_Content.Device_Configuration.Current_Threshold * 4));
_Written_Current_Threshold = _EEPROM_Content.Device_Configuration.Current_Threshold;
}
void INA260_Read_BusVoltage()
@@ -130,6 +156,13 @@ void INA260_Read_Current()
_INA260_Current_mA = (int16_t)((INA260_Current * 1250) / 1000);
}
void INA260_Read_Threshold()
{
uint16_t INA260_Threshold = (uint16_t)INA260_Read_Register(INA260_REG_ALERT_LIMIT);
_INA260_Threshold = (uint16_t)(INA260_Threshold);
}
uint16_t INA260_Get_BusVoltage_mV()
{
return _INA260_BusVoltage_mV;
@@ -140,10 +173,21 @@ uint16_t INA260_Get_Current_mA()
return _INA260_Current_mA;
}
uint16_t INA260_Get_Threshold()
{
return _INA260_Threshold;
}
/*******************************************************************
Internal Functions
*******************************************************************/
void INA260_Write_Register(uint8_t reg_address, uint16_t reg_data)
{
uint16_t Swapped_Data = UINT16_SWAP_BYTES(reg_data);
I2CM_Packet_Transmit(INA260_I2CADDR_DEFAULT, reg_address, 1, (uint8_t*)(&Swapped_Data), 2);
}
uint16_t INA260_Read_Register(uint8_t reg_address)
{
uint8_t Receive_Data[2];

View File

@@ -20,7 +20,7 @@
#define INA260_REG_BUSVOLTAGE 0x02 ///< Bus voltage measurement register in mV
#define INA260_REG_POWER 0x03 ///< Power calculation register in mW
#define INA260_REG_MASK_ENABLE 0x06 ///< Interrupt/Alert setting and checking register
#define INA260_REG_ALERT_LIMIT 0x00 ///< Alert limit value register
#define INA260_REG_ALERT_LIMIT 0x07 ///< Alert limit value register
#define INA260_REG_MFG_UID 0xFE ///< Manufacturer ID Register
#define INA260_REG_DIE_UID 0xFF ///< Die ID and Revision Register
@@ -32,12 +32,15 @@
// ============================================================================================
// Function Declarations
void INA260_Init();
void INA260_Update_Current_Threshold();
void INA260_Read_BusVoltage();
void INA260_Read_Current();
void INA260_Read_Threshold();
uint16_t INA260_Get_BusVoltage_mV();
uint16_t INA260_Get_Current_mA();
uint16_t INA260_Get_Threshold();

View File

@@ -0,0 +1,139 @@
#include <stdint.h>
const uint16_t _Image_Check_Green_128x128[3 + 16384] = {
128, // Image Width
128, // Image Height
16, // Image Data Size
// Image Data
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

View File

@@ -0,0 +1,75 @@
#include <stdint.h>
const uint16_t _Image_Check_Green_64x64[3 + 4096] = {
64, // Image Width
64, // Image Height
16, // Image Data Size
// Image Data
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000,
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000,
0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0xad75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

View File

@@ -0,0 +1,139 @@
#include <stdint.h>
const uint16_t _Image_Failed_Red_128x128[3 + 16384] = {
128, // Image Width
128, // Image Height
16, // Image Data Size
// Image Data
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4400, 0xa908, 0xec10, 0x3019, 0x7421, 0x9629, 0xb929, 0xfb31, 0xfc31, 0x1d32, 0x1e32, 0x1e32, 0x1d32, 0xfc31, 0xfb31, 0xb929, 0x9629, 0x7421, 0x3019, 0xcc10, 0xa908, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xaa10, 0x3119, 0x9729, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x9729, 0x3119, 0xaa10, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x3019, 0xd929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xd929, 0x3019, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x5321, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x5221, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xee18, 0xda29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x3019, 0x4400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x8708, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa908, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb729, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0xb729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x8708, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0x5321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed10, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32, 0xee18, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x9621, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x7521, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb729, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9521, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9621, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9621, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed18, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32, 0x4408, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8708, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa908, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7521, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0xbe4a, 0x3e3a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e3a, 0xbe4a, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e7c, 0xdfde, 0xdfff, 0xdfff, 0x7fef, 0x7ead, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x7ead, 0x7fef, 0xdfff, 0xdfff, 0xdfde, 0x3e7c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7ead, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x1fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x1fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7ead, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xfb29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e7c, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3e7c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdb31, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdfde, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfd6, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x5321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5221, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe4a, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbe4a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e3a, 0x7fef, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7fef, 0x3e3a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8708, 0x0000, 0x0000,
0x0000, 0x0000, 0x3119, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7ead, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7ea5, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019, 0x0000, 0x0000,
0x0000, 0x0000, 0xd929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x1fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x1fe7, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000,
0x0000, 0x2300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2200, 0x0000,
0x0000, 0xaa10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910, 0x0000,
0x0000, 0x3119, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000,
0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000,
0x0000, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0000,
0x4400, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x4300,
0x8910, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808,
0xec10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xec10,
0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3fe7, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019,
0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5421,
0x9629, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629,
0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829,
0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdb31,
0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31,
0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32,
0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32,
0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32,
0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32,
0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31,
0xfb29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdb31,
0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829,
0x9621, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9621,
0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421,
0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019,
0xec10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xcc10,
0xa908, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808,
0x4300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2300,
0x0000, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0000,
0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000,
0x0000, 0x3119, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000,
0x0000, 0xaa10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910, 0x0000,
0x0000, 0x2300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x3fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fef, 0x1e53, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2200, 0x0000,
0x0000, 0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x1fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x1fe7, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x0000, 0x0000,
0x0000, 0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7ead, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7ea5, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000, 0x0000,
0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e3a, 0x7fef, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7fef, 0x3e3a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8708, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe4a, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbe4a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7e42, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5219, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdfde, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfd6, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8708, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xdb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e7c, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x5fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x5fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x3e7c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xdb31, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7ead, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x1fe7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x1fe7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x7ead, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e7c, 0xdfde, 0xdfff, 0xdfff, 0x7fef, 0x7ead, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x7ead, 0x7fef, 0xdfff, 0xdfff, 0xdfde, 0x3e7c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7e42, 0xbe4a, 0x3e3a, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3e3a, 0xbe4a, 0x7e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xed10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9629, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb729, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb729, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x9621, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x2300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xee18, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0f19, 0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0x5321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2300, 0xee18, 0xda29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb29, 0x3019, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8808, 0x5221, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x3221, 0x8808, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8708, 0x3019, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x1019, 0x8708, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xa910, 0x3019, 0x9729, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x9729, 0x3019, 0xa910, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0x8808, 0xec10, 0x3019, 0x5321, 0x9629, 0xb829, 0xdb31, 0xfc31, 0xfc31, 0x1e32, 0x1e32, 0xfc31, 0xfc31, 0xdb31, 0xb829, 0x9629, 0x5321, 0x3019, 0xec10, 0x8808, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

View File

@@ -0,0 +1,75 @@
#include <stdint.h>
const uint16_t _Image_Failed_Red_64x64[3 + 4096] = {
64, // Image Width
64, // Image Height
16, // Image Data Size
// Image Data
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xa910, 0x0f19, 0x5321, 0xb829, 0xda29, 0xfc31, 0x1d32, 0x1d32, 0xfc31, 0xda29, 0xb829, 0x7321, 0x0f19, 0xa910, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6608, 0x3019, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x3019, 0x6608, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0xed18, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0xed10, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0x0f19, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0f19, 0x2100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xcb10, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0xcc10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4400, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9729, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xa910, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0xaa10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7521, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xaa10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4400, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9621, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xcb10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xcb10, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x2200, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x2100, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xee18, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0100, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0100, 0x0000, 0x0000,
0x0000, 0x0000, 0xed18, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0xbe8c, 0xfe94, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0xfe94, 0xbe8c, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xed18, 0x0000, 0x0000,
0x0000, 0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x3fe7, 0xdfff, 0xdfff, 0x9ff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0x9ff7, 0xdfff, 0xdfff, 0x3fe7, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000,
0x0000, 0x6608, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe8c, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbe8c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6508, 0x0000,
0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe94, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xfe94, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x3019, 0x0000,
0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x9ff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x9ff7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x0000,
0x2200, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2200,
0xa910, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910,
0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19,
0x7321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321,
0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829,
0xda29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xda29,
0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31,
0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32,
0x1d32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1d32,
0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31,
0xda29, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xda29,
0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829,
0x7321, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321,
0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0e19,
0xa910, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910,
0x2200, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe6b, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x2200,
0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0x9ff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0x9ff7, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x0000,
0x0000, 0x3019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe94, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xfe94, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1019, 0x0000,
0x0000, 0x6608, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xbe8c, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0xbff7, 0xdfff, 0xdfff, 0xdfff, 0xdfff, 0xbe8c, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x6508, 0x0000,
0x0000, 0x0000, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0x3fe7, 0xdfff, 0xdfff, 0x9ff7, 0xde73, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xde73, 0x9ff7, 0xdfff, 0xdfff, 0x3fe7, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb929, 0x0000, 0x0000,
0x0000, 0x0000, 0xed10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9e42, 0xbe8c, 0xde94, 0xfe52, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfe52, 0xfe94, 0xbe8c, 0x9e42, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xed10, 0x0000, 0x0000,
0x0000, 0x0000, 0x0100, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x0100, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0f19, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xee18, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x2100, 0xfb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x0100, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0xcb10, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xaa10, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x9729, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8910, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xa910, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x7421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5221, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x5321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1019, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x0f19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8910, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfc31, 0xaa10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4300, 0x9629, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x9629, 0x4300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x8910, 0xdb31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0xcb10, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2100, 0x0e19, 0xfc31, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xfb31, 0x0e19, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0xed18, 0xb929, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0xed10, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6508, 0x3019, 0xb829, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0x1e32, 0xb829, 0x1019, 0x4508, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2200, 0xa910, 0x0e19, 0x5321, 0xb829, 0xda29, 0xfc31, 0x1d32, 0x1d32, 0xfc31, 0xda29, 0xb829, 0x5321, 0x0e19, 0xa910, 0x2200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

View File

@@ -0,0 +1,43 @@
#include <stdint.h>
const uint16_t _Image_Overcurrent_32x32[3 + 1024] = {
32, // Image Width
32, // Image Height
16, // Image Data Size
// Image Data
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0900, 0x0c00, 0x0b00, 0x0800, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1800, 0x1f00, 0x1e00, 0x1b00, 0x1c00, 0x1f00, 0x1f00, 0x1500, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x1600, 0x1f00, 0x1200, 0x0700, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1600, 0x1f00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1a00, 0x1b00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0800, 0x1d00, 0x1500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1a00, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1d00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1e00, 0x0400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0400, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1400, 0x1c00, 0x0400, 0x0000, 0x0200, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x1300, 0x1300, 0x1900, 0x1800, 0x0000, 0x0000, 0x1000, 0x1700, 0x1700, 0x1700, 0x1700, 0x1700, 0x1700, 0x1700, 0x1700, 0x1800, 0x1f00, 0x1c00, 0x0200, 0x0000, 0x1e00, 0x1600, 0x1300, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x1500, 0x1500, 0x1a00, 0x1800, 0x0000, 0x0000, 0x0c00, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1100, 0x1800, 0x1f00, 0x1000, 0x0000, 0x0000, 0x1e00, 0x1800, 0x1500, 0x1500, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1c00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1100, 0x1100, 0x0000, 0x0000, 0x0200, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0a00, 0x1e00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1a00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1700, 0x1300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0b00, 0x1e00, 0x0400, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1f00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1600, 0x1a00, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x1d00, 0x1000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x1a00, 0x1b00, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1d00, 0x1500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1600, 0x1f00, 0x1300, 0x0700, 0x0000, 0x0000, 0x0000, 0x0100, 0x0900, 0x1600, 0x1f00, 0x1100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0900, 0x1800, 0x1f00, 0x1e00, 0x1b00, 0x1c00, 0x1f00, 0x1f00, 0x1600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x0900, 0x0d00, 0x0c00, 0x0900, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

View File

@@ -11,9 +11,11 @@
#include "Hue.h"
#include "Command.h"
#include "Screens.h"
// #include "OLED_SSD1306.h"
#include "EEPROM_M24C64.h"
#include "Command_Definition.h"
#include "Display_Default_Configurations.h"
#include "pico/rand.h"
// ============================================================================================
@@ -26,19 +28,19 @@
// Variables
static volatile Mode _Current_Mode;
static volatile uint _Jam_Current_Angle;
static volatile uint _Jam_Next_Angle;
static volatile uint32_t _Jam_Current_Angle;
static volatile uint32_t _Jam_Next_Angle;
static volatile uint _Jam_Duration_Until_Next_s;
static volatile uint _Jam_Timer;
static volatile uint32_t _Jam_Duration_Until_Next_s;
static volatile uint32_t _Jam_Timer;
// ============================================================================================
// Function Declarations
void Mode_Manager_Jam_Mode_Init(void);
uint Mode_Manager_Jam_Select_Next_Angle(uint current_angle);
uint Mode_Manager_Jam_Get_Duration(void);
void Mode_Manager_Jam_Set_Color(uint angle);
uint32_t Mode_Manager_Jam_Select_Next_Angle(uint32_t current_angle);
uint32_t Mode_Manager_Jam_Get_Duration(void);
void Mode_Manager_Jam_Set_Color(uint32_t angle);
void Mode_Manager_Jam_Step(void);
@@ -72,8 +74,7 @@ void Mode_Manager_Cycle_Mode(void)
Mode_Manager_Set_Mode(_Current_Mode);
// ToDo
// Screen_Setup_0_Mode_Change(TRANSITION_NONE, _Current_Mode);
Screen_Setup_Mode_Change(TRANSITION_NONE, TRANSITION_NONE, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Current_Mode);
}
void Mode_Manager_Set_Mode(Mode mode)
@@ -174,27 +175,27 @@ void Mode_Manager_Jam_Mode_Init(void)
Mode_Manager_Jam_Set_Color(_Jam_Current_Angle);
}
uint Mode_Manager_Jam_Select_Next_Angle(uint current_angle)
uint32_t Mode_Manager_Jam_Select_Next_Angle(uint32_t current_angle)
{
uint ADC_Value = 5;//ADC_Get_Result_Oldest();
uint Angle_Step = ((ADC_Value & 0x07) + 1) * _EEPROM_Content.Jam_Light_Configuration.Color_Change;
uint32_t Random_Value = get_rand_32();
uint32_t Angle_Step = ((Random_Value & 0x07) + 1) * _EEPROM_Content.Jam_Light_Configuration.Color_Change;
return (current_angle + Angle_Step) % 360;
}
uint Mode_Manager_Jam_Get_Duration(void)
uint32_t Mode_Manager_Jam_Get_Duration(void)
{
uint Duration_Span_s = _EEPROM_Content.Jam_Light_Configuration.Duration_Max_s - _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s;
uint32_t Duration_Span_s = _EEPROM_Content.Jam_Light_Configuration.Durations.Max - _EEPROM_Content.Jam_Light_Configuration.Durations.Min;
uint ADC_Value = 5;//ADC_Get_Result_Newest();
uint Factor = ((ADC_Value & 0x07) << 4);
uint32_t Random_Value = get_rand_32();
uint32_t Factor = ((Random_Value & 0x07) << 4);
Duration_Span_s = (Duration_Span_s * Factor) / 112;
return _EEPROM_Content.Jam_Light_Configuration.Duration_Min_s + Duration_Span_s;
return _EEPROM_Content.Jam_Light_Configuration.Durations.Min + Duration_Span_s;
}
void Mode_Manager_Jam_Set_Color(uint angle)
void Mode_Manager_Jam_Set_Color(uint32_t angle)
{
LED_Data_t Color;
Color.Pixel = Hue_Get_Color_From_Angle(angle);

View File

@@ -32,6 +32,9 @@
#define DEBOUNCE_TIME_ENCODER_MS 50
#define DEBOUNCE_TIME_SWITCH_MS 300
// Separate Switch Define
#define SWITCH_GPIO 23
// ============================================================================================
// Variables
@@ -40,7 +43,10 @@ static volatile uint32_t _Debounce_Time_Switch_ms = 0;
static volatile bool _Rotation_CW_Occurred;
static volatile bool _Rotation_CCW_Occurred;
static volatile bool _Switch_Press_Occurred;
static volatile bool _Rotary_Encoder_Switch_Press_Occurred;
extern volatile uint32_t _Debounce_Time_Switch_ms;
extern volatile bool _Switch_Press_Occurred; // Other switch - not from the Rotary Encoder
static volatile uint8_t _Rotary_Encoder_Previous_NextCode = 0;
static volatile uint16_t _Rotary_Encoder_Store_State = 0;
@@ -74,6 +80,19 @@ void ISR_Rotary_Encoder(uint gpio, uint32_t events)
}
}
else if(gpio == ENCODER_SWITCH_GPIO)
{
uint32_t Current_Time_ms = to_ms_since_boot(get_absolute_time());
if(Current_Time_ms < _Debounce_Time_Switch_ms)
{
return;
}
_Rotary_Encoder_Switch_Press_Occurred = true;
_Debounce_Time_Switch_ms = Current_Time_ms + DEBOUNCE_TIME_SWITCH_MS;
}
else if(gpio == SWITCH_GPIO)
{
uint32_t Current_Time_ms = to_ms_since_boot(get_absolute_time());
@@ -96,7 +115,7 @@ void Rotary_Encoder_Init(void)
{
_Rotation_CW_Occurred = false;
_Rotation_CCW_Occurred = false;
_Switch_Press_Occurred = false;
_Rotary_Encoder_Switch_Press_Occurred = false;
gpio_init(ENCODER_PIN_A_GPIO); gpio_set_dir(ENCODER_PIN_A_GPIO, false);
@@ -128,9 +147,9 @@ bool Rotary_Encoder_Rotation_CCW_Occurred(void)
bool Rotary_Encoder_Switch_Press_Occurred(void)
{
bool Return_Value = _Switch_Press_Occurred;
bool Return_Value = _Rotary_Encoder_Switch_Press_Occurred;
_Switch_Press_Occurred = false;
_Rotary_Encoder_Switch_Press_Occurred = false;
return Return_Value;
}

View File

@@ -23,3 +23,6 @@ void (*_Screen_On_Objects_Focused)(Object_ID object_id);
void (*_Screen_On_Objects_Defocused)(Object_ID object_id);
void (*_Screen_On_Object_Select)(Object_ID object_id);
void (*_Screen_On_Object_Deselect)(Object_ID object_id);
bool _Screen_Idle_Active = false;
bool _Screen_Idle_Counter_Disable = false;

View File

@@ -15,6 +15,7 @@
#include <stdbool.h>
#include "Easings.h"
#include "Mode_Manager.h"
#include "Hierarchical_Menu.h"
#include "Command_Definition.h"
#include "Display_Objects_Datatypes.h"
@@ -37,9 +38,15 @@ extern void (*_Screen_On_Objects_Defocused)(Object_ID object_id);
extern void (*_Screen_On_Object_Select)(Object_ID object_id);
extern void (*_Screen_On_Object_Deselect)(Object_ID object_id);
extern bool _Screen_Idle_Active;
extern bool _Screen_Idle_Counter_Disable;
// ============================================================================================
// List of all Screen Setups as extern
extern void Screen_Setup_Idle(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
extern void Screen_Setup_Mode_Change(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, Mode mode);
extern void Screen_Setup_Loading();
extern void Screen_Setup_Menu_Main(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool do_menu_animation, uint32_t selected_entry);
extern void Screen_Setup_Mode(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
@@ -49,11 +56,18 @@ extern void Screen_Setup_Graph(Screen_Transition_Direction direction_out, Screen
extern void Screen_Setup_Settings(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, int32_t selected_item);
extern void Screen_Setup_Settings_Hierarchical_Menu(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* menu, const Menu_List* list, int32_t selected_item);
extern void Screen_Setup_EEPROM_Code(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
extern void Screen_Setup_EEPROM_Write(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool code_correct);
extern void Screen_Setup_Settings_About(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
extern void Screen_Setup_Select_Bool(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, uint8_t *value, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
extern void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, LED_Data_t* rgb_color, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
extern void Screen_Setup_Select_Value(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
extern void Screen_Setup_Select_List(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_List* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
extern void Screen_Setup_Default_Notes(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
extern void Screen_Setup_Settings_Reboot(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
extern void Screen_Setup_Select_Hue(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* hue_value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
extern void Screen_Setup_Select_MinMax(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, MinMax_t* value, const Menu_Configuration_Select_MinMax* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
#endif /* SCREENS_H_ */

View File

@@ -0,0 +1,286 @@
/*
* File: Common_Screen_Elements.c
*
* Created: Created: Sunday October 2025 19:57:27
* Author: Chris
*/
#include "Common_Screen_Elements.h"
// ============================================================================================
// Includes
#include "../Display_Color.h"
#include "../Display_Config.h"
#include "../Display_Shapes.h"
#include "../Display_Objects.h"
#include "../Hue.h"
#include "../EEPROM_M24C64.h"
#include "../MIDI_Note_List.h"
#include "../Command_Definition.h"
// ============================================================================================
// Defines
#define PAUSE_LIGHT_COLOR_RGB565 DISPLAY_COLOR_FROM_RGB888(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Color.R, _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Color.G, _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Color.B)
// ============================================================================================
// Variables
extern const uint8_t _Font_DejaVu_Sans_Mono_10x17[];
extern const uint8_t _Font_DejaVu_Sans_Mono_15x25[];
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_11x17[];
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_15x26[];
extern const uint16_t _Image_Forest_Pine_Midi_64x64[];
extern const uint16_t _Image_Steel_Blue_Jam_Happy_64x64[];
extern const uint16_t _Image_Stone_Blue_Light_On_64x64[];
extern volatile bool _MIDI_To_Light_Enabled;
extern Info_Last_Received_Note_t _Info_Last_Applied_Note[NUM_LED_CHANNELS];
extern uint8_t _Current_Duty_Cylces[NUM_LED_CHANNELS][NUM_LED_COLORS];
extern volatile Pause_Light_Timer_s _Pause_Light_Timer[NUM_LED_CHANNELS];
// Variables and Objects IDs for the MIDI Mode Activity
static Object_ID _Object_Midi_Text_MIDI_Enabled;
static Object_ID _Object_Midi_Text_MIDI_Last_Applied;
static Object_ID _Object_Midi_Text_Pause_Light_Enabled;
static Object_ID _Object_Midi_Text_Pause_Light_Active;
static Object_ID _Object_Midi_Text_Pause_Light_Counter;
static Object_ID _Object_Midi_Text_Pause_Light_ValueBar;
static float _Pause_Light_Timeout_s;
static uint32_t _Pause_Light_Timeout_Ticks;
static uint32_t _Pause_Light_FadeOut_Counter;
// Variables and Objects IDs for the JAM Mode Activity
static Object_ID _Object_Jam_Current_Hue_Angle;
static Object_ID _Object_Jam_Timeout_ValueBar;
static uint32_t _Jam_Hue_Angle_Now;
static uint32_t _Jam_Hue_Angle_Next;
static float _Jam_Hue_Angle_Timer_s;
static uint32_t _Jam_Hue_Angle_Timer_Ticks;
// Objects IDs for the Const Mode Activity
static Object_ID _Object_Const_Color_Circle;
static Object_ID _Object_Const_Color_Text_1, _Object_Const_Color_Text_2;
// ============================================================================================
// Function Declarations
void Common_Screen_Element_Init_Mode_Activity_Midi();
void Common_Screen_Element_Init_Mode_Activity_Jam();
void Common_Screen_Element_Init_Mode_Activity_Const();
void Common_Screen_Element_Tick_Mode_Activity_Midi();
void Common_Screen_Element_Tick_Mode_Activity_Jam();
void Common_Screen_Element_Tick_Mode_Activity_Const();
/*******************************************************************
Functions
*******************************************************************/
void Common_Screen_Element_Init_Current_Mode(Mode mode)
{
uint16_t* Image = NULL;
char Mode_Name[20];
switch (mode)
{
case MIDI: sprintf(Mode_Name, "MIDI"); Image = (uint16_t*)_Image_Forest_Pine_Midi_64x64; break;
case JAM: sprintf(Mode_Name, "Jam"); Image = (uint16_t*)_Image_Steel_Blue_Jam_Happy_64x64; break;
case CONSTANT: sprintf(Mode_Name, "Constant"); Image = (uint16_t*)_Image_Stone_Blue_Light_On_64x64; break;
}
Display_Objects_Add_Image(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 40, NOT_SELECTABLE, Image, 0, NO_STYLE, NO_ANIMATION);
char Title[30];
sprintf(Title, "Mode: %s", Mode_Name);
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_15x25, 0);
Display_Objects_Add_Text(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 65, NOT_SELECTABLE, Title, Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
}
void Common_Screen_Element_Init_Mode_Activity(Mode mode)
{
switch (mode)
{
case MIDI: Common_Screen_Element_Init_Mode_Activity_Midi(); break;
case JAM: Common_Screen_Element_Init_Mode_Activity_Jam(); break;
case CONSTANT: Common_Screen_Element_Init_Mode_Activity_Const(); break;
}
}
void Common_Screen_Element_Tick_Mode_Activity(Mode mode)
{
switch (mode)
{
case MIDI: Common_Screen_Element_Tick_Mode_Activity_Midi(); break;
case JAM: Common_Screen_Element_Tick_Mode_Activity_Jam(); break;
case CONSTANT: Common_Screen_Element_Tick_Mode_Activity_Const(); break;
}
}
/*******************************************************************
Internal Functions
*******************************************************************/
void Common_Screen_Element_Init_Mode_Activity_Midi()
{
_Pause_Light_Timeout_s = 0.0f;
_Pause_Light_Timeout_Ticks = 0;
const int16_t Text_Y_Percent_Distance = 8;
char MIDI_Settings[100];
sprintf(MIDI_Settings, "Ch %02u / Octave %+d", _EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].MIDI_Channel+1, _EEPROM_Content.Channel_MIDI_Configuration[LED_Channel_1].Octave);
Font_ID Font_Regular = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_10x17, 0);
Font_ID Font_Bold = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0);
int16_t Midi_Y_Percent = 20;
Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Midi_Y_Percent, NOT_SELECTABLE, "Midi to Light", Font_Bold, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
Midi_Y_Percent += Text_Y_Percent_Distance;
_Object_Midi_Text_MIDI_Enabled = Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Midi_Y_Percent, NOT_SELECTABLE, "", Font_Regular, DISPLAY_COLOR_BLACK, NO_STYLE, NO_ANIMATION);
Midi_Y_Percent += Text_Y_Percent_Distance;
Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Midi_Y_Percent, NOT_SELECTABLE, MIDI_Settings, Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
Midi_Y_Percent += Text_Y_Percent_Distance;
_Object_Midi_Text_MIDI_Last_Applied = Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Midi_Y_Percent, NOT_SELECTABLE, "", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
int16_t Pause_Light_Y_Percent = 57;
Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Pause_Light_Y_Percent, NOT_SELECTABLE, "Pause Light", Font_Bold, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
Pause_Light_Y_Percent += Text_Y_Percent_Distance;
_Object_Midi_Text_Pause_Light_Enabled = Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Pause_Light_Y_Percent, NOT_SELECTABLE, "", Font_Regular, DISPLAY_COLOR_BLACK, NO_STYLE, NO_ANIMATION);
Pause_Light_Y_Percent += Text_Y_Percent_Distance;
_Object_Midi_Text_Pause_Light_Active = Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Pause_Light_Y_Percent, NOT_SELECTABLE, "", Font_Regular, DISPLAY_COLOR_BLACK, NO_STYLE, NO_ANIMATION);
Pause_Light_Y_Percent += Text_Y_Percent_Distance;
_Object_Midi_Text_Pause_Light_ValueBar = Display_Objects_Add_Value_Bar_Arc(BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, &_Pause_Light_Timeout_Ticks,
(uint32_t)(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout * 1000 / TIMER_INTERVALL_LED_UPDATE_ms), 1,
(uint32_t)(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout * 1000 / TIMER_INTERVALL_LED_UPDATE_ms), 10,
PAUSE_LIGHT_COLOR_RGB565, 110, 4, ARC_FRAME_AUTO_STEPS, -90, 270, NO_STYLE, NO_ANIMATION);
_Object_Midi_Text_Pause_Light_Counter = Display_Objects_Add_Float(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Pause_Light_Y_Percent, NOT_SELECTABLE, &_Pause_Light_Timeout_s, "%04.2fs", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
}
void Common_Screen_Element_Init_Mode_Activity_Jam()
{
_Jam_Hue_Angle_Now = 0;
_Jam_Hue_Angle_Next = 0;
_Jam_Hue_Angle_Timer_s = 0.0;
_Jam_Hue_Angle_Timer_Ticks = 0;
const int16_t Text_Y_Percent_Distance = 8;
Font_ID Font_Regular = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_10x17, 0);
Font_ID Font_Bold = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0);
int16_t Text_Y_Percent = 35;
Display_Objects_Add_Text(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Text_Y_Percent, NOT_SELECTABLE, "Jam Mode", Font_Bold, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
Text_Y_Percent += Text_Y_Percent_Distance;
Display_Objects_Add_Integer(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Text_Y_Percent, NOT_SELECTABLE, (int*)&_Jam_Hue_Angle_Now, "Now: %d Deg", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
Text_Y_Percent += Text_Y_Percent_Distance;
Display_Objects_Add_Integer(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Text_Y_Percent, NOT_SELECTABLE, (int*)&_Jam_Hue_Angle_Next, "Next: %d Deg", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
Text_Y_Percent += Text_Y_Percent_Distance;
Display_Objects_Add_Float(LEFT_MIDDLE, BOTH_IN_PERCENT, 20, Text_Y_Percent, NOT_SELECTABLE, &_Jam_Hue_Angle_Timer_s, "%04.2fs", Font_Regular, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
_Object_Jam_Current_Hue_Angle = Display_Objects_Add_Value_Bar_Arc(BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, &_Jam_Hue_Angle_Now, 359, 0, 1, 400, DISPLAY_COLOR_RED, 115, 4, ARC_FRAME_AUTO_STEPS, -90, 270, NO_STYLE, NO_ANIMATION);
_Object_Jam_Timeout_ValueBar = Display_Objects_Add_Value_Bar_Arc(BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, &_Jam_Hue_Angle_Timer_Ticks, Mode_Manager_Jam_Get_Duration_Tick(), 0, 1000, 1000, DISPLAY_COLOR_LIGHTGREY, 105, 4, ARC_FRAME_AUTO_STEPS, -90, 270, NO_STYLE, NO_ANIMATION);
}
void Common_Screen_Element_Init_Mode_Activity_Const()
{
Font_ID Font = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0);
_Object_Const_Color_Circle = Display_Objects_Add_Circle_Filled(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 35, NOT_SELECTABLE, DISPLAY_COLOR_BLACK, 40, NO_STYLE, NO_ANIMATION);
_Object_Const_Color_Text_1 = Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, 68, NOT_SELECTABLE, "Constant Light", Font, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
_Object_Const_Color_Text_2 = Display_Objects_Add_Text(CENTER_TOP, BOTH_IN_PERCENT, 50, 70, NOT_SELECTABLE, "is on", Font, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
}
void Common_Screen_Element_Tick_Mode_Activity_Midi()
{
char MIDI_Last_Applied[100];
char Event[4];
char Note[3];
if(_Info_Last_Applied_Note[LED_Channel_1].Event == MIDI_EVENT_NOTE_ON) {
sprintf(Event, "On");
}
else if(_Info_Last_Applied_Note[LED_Channel_1].Event == MIDI_EVENT_NOTE_OFF) {
sprintf(Event, "Off");
} else
{
sprintf(Event, "-");
}
if(_Info_Last_Applied_Note[LED_Channel_1].Note_In_Octave != NO_NOTE) {
sprintf(Note, "%s", _MIDI_Note_List[_Info_Last_Applied_Note[LED_Channel_1].Note_In_Octave].Tone_Name);
}
else {
sprintf(Note, "-");
}
sprintf(MIDI_Last_Applied, "Note %s %s (%u)", Note, Event, _Info_Last_Applied_Note[LED_Channel_1].Velocity);
Display_Objects_Update_Text(_Object_Midi_Text_MIDI_Enabled, _MIDI_To_Light_Enabled == true ? "Enabled" : "Disabled");
Display_Objects_Update_Text(_Object_Midi_Text_MIDI_Last_Applied, MIDI_Last_Applied);
Display_Objects_Update_Text(_Object_Midi_Text_Pause_Light_Enabled, _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Enabled > 0 ? "Enabled" : "Disabled");
Display_Objects_Update_Text(_Object_Midi_Text_Pause_Light_Active, _Pause_Light_Timer[LED_Channel_1].Is_Active == true ? "On" : "Off");
Display_Objects_Update_Color(_Object_Midi_Text_MIDI_Enabled, _MIDI_To_Light_Enabled == true ? DISPLAY_COLOR_GREEN : DISPLAY_COLOR_RED);
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_Enabled, _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Enabled > 0 ? DISPLAY_COLOR_GREEN : DISPLAY_COLOR_RED);
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_Active, _Pause_Light_Timer[LED_Channel_1].Is_Active == true ? DISPLAY_COLOR_GREEN : DISPLAY_COLOR_RED);
_Pause_Light_Timeout_s = _EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout - ((float)(_Pause_Light_Timer[LED_Channel_1].Timer * TIMER_INTERVALL_LED_UPDATE_ms)) / 1000.0f;
if(_Pause_Light_Timeout_s < 0.01f) {
if(_Pause_Light_FadeOut_Counter < 60) {
_Pause_Light_FadeOut_Counter++;
}
if(_Pause_Light_FadeOut_Counter >= 20) {
// Display_Objects_Update_Color(_Object_Midi_Text_MIDI_Last_Applied, Display_Color_Interpolate_Float(DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_BLACK, (float)(_Pause_Light_FadeOut_Counter-20) / 40.0f));
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_Counter, Display_Color_Interpolate_Float(DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_BLACK, (float)(_Pause_Light_FadeOut_Counter-20) / 40.0f));
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_ValueBar, Display_Color_Interpolate_Float(PAUSE_LIGHT_COLOR_RGB565, DISPLAY_COLOR_BLACK, (float)(_Pause_Light_FadeOut_Counter-20) / 40.0f));
}
}
else {
_Pause_Light_FadeOut_Counter = 0;
// Display_Objects_Update_Color(_Object_Midi_Text_MIDI_Last_Applied, DISPLAY_COLOR_LIGHTGREY);
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_Counter, DISPLAY_COLOR_LIGHTGREY);
Display_Objects_Update_Color(_Object_Midi_Text_Pause_Light_ValueBar, PAUSE_LIGHT_COLOR_RGB565);
}
uint32_t Total_Pause_Light_Timeout_Ticks = (uint32_t)(_EEPROM_Content.Pause_Light_Configuration[LED_Channel_1].Timeout * 1000 / TIMER_INTERVALL_LED_UPDATE_ms);
_Pause_Light_Timeout_Ticks = Total_Pause_Light_Timeout_Ticks - _Pause_Light_Timer[LED_Channel_1].Timer;
}
void Common_Screen_Element_Tick_Mode_Activity_Jam()
{
LED_Data_t Hue_Color;
_Jam_Hue_Angle_Now = Mode_Manager_Jam_Get_Current_Angle();
_Jam_Hue_Angle_Next = Mode_Manager_Jam_Get_Next_Angle();
_Jam_Hue_Angle_Timer_Ticks = Mode_Manager_Jam_Get_Time_Left_Tick();
_Jam_Hue_Angle_Timer_s = (float)(_Jam_Hue_Angle_Timer_Ticks * 40) / 1000.0f;
Hue_Color.Pixel = Hue_Get_Color_From_Angle(_Jam_Hue_Angle_Now);
Display_Objects_Update_Color(_Object_Jam_Current_Hue_Angle, DISPLAY_COLOR_FROM_RGB888(Hue_Color.R, Hue_Color.G, Hue_Color.B));
Display_Objects_Update_Max_Min(_Object_Jam_Timeout_ValueBar, Mode_Manager_Jam_Get_Duration_Tick(), 0);
}
void Common_Screen_Element_Tick_Mode_Activity_Const()
{
Display_Objects_Update_Color(_Object_Const_Color_Circle, DISPLAY_COLOR_FROM_RGB888(_Current_Duty_Cylces[LED_Channel_1][R], _Current_Duty_Cylces[LED_Channel_1][G], _Current_Duty_Cylces[LED_Channel_1][B]));
}

View File

@@ -0,0 +1,34 @@
/*
* File: Common_Screen_Elements.h
* Created: Created: Sunday October 2025 19:57:22
* Author: Chris
*/
#ifndef COMMON_SCREEN_ELEMENTS_H
#define COMMON_SCREEN_ELEMENTS_H
// ============================================================================================
// Includes
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include "../Mode_Manager.h"
// ============================================================================================
// Defines
// ============================================================================================
// Datatypes
// ============================================================================================
// Function Declarations
void Common_Screen_Element_Init_Current_Mode(Mode mode);
void Common_Screen_Element_Init_Mode_Activity(Mode mode);
void Common_Screen_Element_Tick_Mode_Activity(Mode mode);
#endif // COMMON_SCREEN_ELEMENTS_H

View File

@@ -0,0 +1,171 @@
/*
* File: Screen_Default_Notes.c
*
* Created: Created: Sunday September 2025 21:09:49
* Author: Chris
*/
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../UI_Control.h"
#include "../Mode_Manager.h"
#include "../Display.h"
#include "../Display_Objects.h"
#include "../Display_Render_Complex.h"
#include "../Display_Default_Configurations.h"
// ============================================================================================
// Defines
// ============================================================================================
// Variables
static Object_ID _Object_Message_Box;
static const Hierarchical_Menu* _Return_Menu = NULL;
static const Menu_List* _Return_List = NULL;
static int32_t _Return_Selected_Item;
static char* _Title;
static uint32_t _Title_Length;
static bool _Bool_Value;
static bool _Decision_Made;
static uint32_t _Counter;
// ============================================================================================
// Function Declarations
void Screen_Setup_Default_Notes(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Tick (void);
static void Screen_Click (uint button_return_value);
static void Screen_Touch_Event (int16_t x, int16_t y);
static void Screen_Action_CW (Object_ID object_id);
static void Screen_Action_CCW (Object_ID object_id);
static void Screen_On_Object_Focused (Object_ID object_id);
static void Screen_On_Object_Defocused (Object_ID object_id);
static void Screen_On_Object_Select (Object_ID object_id);
static void Screen_On_Object_Deselect (Object_ID object_id);
/*******************************************************************
Functions
*******************************************************************/
void Screen_Setup_Default_Notes(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
{
_Title = title;
_Title_Length = title_length;
_Bool_Value = false;
Screen_Init(direction_out, direction_in, type, frame_duration);
_Return_Menu = return_menu;
_Return_List = return_list;
_Return_Selected_Item = return_selected_item;
_Decision_Made = false;
_Counter = 0;
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
_Screen_Last = Screen_Init;
_Screen_Tick = Screen_Tick;
_Screen_Click = Screen_Click;
_Screen_Touch_Event = Screen_Touch_Event;
_Screen_Action_CW = Screen_Action_CW;
_Screen_Action_CCW = Screen_Action_CCW;
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
_Screen_On_Object_Select = Screen_On_Object_Select;
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
Display_Objects_Clear();
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Display_Render_Complex_Select_YesNo_Set(_Bool_Value, &_Configuration_Default_Select_YesNo);
Display_Objects_Add_Select_YesNo(_Title, _Title_Length, &_Bool_Value, &_Configuration_Default_Select_YesNo);
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Notes Set", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
Display_Select_Object();
}
void Screen_Tick(void)
{
if(_Decision_Made) {
_Counter++;
}
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
}
}
void Screen_Click(uint button_return_value)
{
}
void Screen_Touch_Event(int16_t x, int16_t y)
{
}
void Screen_Action_CW(Object_ID object_id)
{
if(_Decision_Made) {
return;
}
_Bool_Value = !_Bool_Value;
}
void Screen_Action_CCW(Object_ID object_id)
{
Screen_Action_CW(object_id);
}
void Screen_On_Object_Focused(Object_ID object_id)
{
}
void Screen_On_Object_Defocused(Object_ID object_id)
{
}
void Screen_On_Object_Select(Object_ID object_id)
{
}
void Screen_On_Object_Deselect(Object_ID object_id)
{
if(!_Decision_Made) {
if(_Bool_Value) {
Mode_Manager_Set_Default_Color_Notes();
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
}
else {
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
}
_Decision_Made = true;
}
}
/*******************************************************************
Internal Functions
*******************************************************************/

View File

@@ -0,0 +1,218 @@
/*
* File: Screen_EEPROM_Code.c
*
* Created: Created: Monday September 2025 16:11:48
* Author: Chris
*/
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../UI_Control.h"
#include "../Display.h"
#include "../Display_Objects.h"
#include "../Display_Default_Configurations.h"
// ============================================================================================
// Defines
#define BOX_X_TARGET (DISPLAY_X_CENTER + (_Character_Select - 1) * _Character_X_Distance - 1)
// ============================================================================================
// Variables
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_11x17[];
extern const uint8_t _Font_DejaVu_Sans_Mono_20x34[];
static Object_ID _Object_Code[3];
static Object_ID _Object_Box;
static int32_t _Code[3] = { 4, 4, 12 };
static int32_t _Input[3];
static int32_t _Character_Select;
static char _Character[3][2];
static const int16_t _Character_X_Distance = 50;
static int16_t _Box_X_Current;
static int16_t _Box_X_Target;
// ============================================================================================
// Function Declarations
void Screen_Setup_EEPROM_Code(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static char HexNumber_To_ASCII (char hex_number);
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Tick (void);
static void Screen_Click (uint button_return_value);
static void Screen_Touch_Event (int16_t x, int16_t y);
static void Screen_Action_CW (Object_ID object_id);
static void Screen_Action_CCW (Object_ID object_id);
static void Screen_On_Object_Focused (Object_ID object_id);
static void Screen_On_Object_Defocused (Object_ID object_id);
static void Screen_On_Object_Select (Object_ID object_id);
static void Screen_On_Object_Deselect (Object_ID object_id);
/*******************************************************************
Functions
*******************************************************************/
void Screen_Setup_EEPROM_Code(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
_Input[0] = 0;
_Input[1] = 0;
_Input[2] = 0;
_Character_Select = 0;
_Box_X_Target = BOX_X_TARGET;
_Box_X_Current = _Box_X_Target;
Screen_Init(direction_out, direction_in, type, frame_duration);
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
_Screen_Last = Screen_Init;
_Screen_Tick = Screen_Tick;
_Screen_Click = Screen_Click;
_Screen_Touch_Event = Screen_Touch_Event;
_Screen_Action_CW = Screen_Action_CW;
_Screen_Action_CCW = Screen_Action_CCW;
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
_Screen_On_Object_Select = Screen_On_Object_Select;
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
Display_Objects_Clear();
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, DISPLAY_DEFAULT_CHAR_SPACING);
Font_ID Font_Characters = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_20x34, 0);
Display_Objects_Add_Text(CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, 45, NOT_SELECTABLE, "Enter Code", Font_Title, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION);
for(int i=0;i<3;i++) {
_Character[i][0] = HexNumber_To_ASCII(_Input[i]);
_Character[i][1] = '\0';
_Object_Code[i] = Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PIXEL_Y_IN_PERCENT, DISPLAY_X_CENTER + (i-1)*_Character_X_Distance, 50, NOT_SELECTABLE, &(_Character[i][0]), Font_Characters, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
}
_Object_Box = Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, X_IN_PIXEL_Y_IN_PERCENT, _Box_X_Current, 49, NOT_SELECTABLE, DISPLAY_COLOR_LIGHTGREY, 33, 39, 6, 2, NO_STYLE, NO_ANIMATION);
UI_Control_Acceleration_Reset();
UI_Control_Acceleration_Set_Enabled(false);
Display_Select_Object();
}
void Screen_Tick(void)
{
for(int i=0;i<3;i++) {
Display_Color Color = i == _Character_Select ? DISPLAY_COLOR_LIGHTGREY : DISPLAY_COLOR_DARKGREY;
_Character[i][0] = HexNumber_To_ASCII(_Input[i]);
Display_Objects_Update_Text(_Object_Code[i], &_Character[i][0]);
Display_Objects_Update_Color(_Object_Code[i], Color);
}
_Box_X_Target = BOX_X_TARGET;
if(_Box_X_Target > _Box_X_Current) {
int16_t Distance = abs(_Box_X_Current - _Box_X_Target);
_Box_X_Current += ((Distance >> 1) + 1);
}
Display_Objects_Update_Coordinates(_Object_Box, CENTER_MIDDLE, X_IN_PIXEL_Y_IN_PERCENT, _Box_X_Current, 49);
}
void Screen_Click(uint button_return_value)
{
}
void Screen_Touch_Event(int16_t x, int16_t y)
{
}
void Screen_Action_CW(Object_ID object_id)
{
if(_Character_Select >= (sizeof(_Input) / sizeof(int32_t))) {
return;
}
UI_Control_Selector_Inc(&_Input[_Character_Select], 0, 15, true);
}
void Screen_Action_CCW(Object_ID object_id)
{
if(_Character_Select >= (sizeof(_Input) / sizeof(int32_t))) {
return;
}
UI_Control_Selector_Dec(&_Input[_Character_Select], 0, 15, true);
}
void Screen_On_Object_Focused(Object_ID object_id)
{
}
void Screen_On_Object_Defocused(Object_ID object_id)
{
}
void Screen_On_Object_Select(Object_ID object_id)
{
}
void Screen_On_Object_Deselect(Object_ID object_id)
{
Display_Select_Object();
if(_Character_Select < (sizeof(_Input) / sizeof(int32_t))) {
_Character_Select++;
}
if(_Character_Select < (sizeof(_Input) / sizeof(int32_t))) {
return;
}
bool Code_Correct = (_Input[0] == _Code[0]) && (_Input[1] == _Code[1]) && (_Input[2] == _Code[2]);
_Input[0] = 0;
_Input[1] = 0;
_Input[2] = 0;
// Move to write screen instead directly to settings menu
Screen_Setup_EEPROM_Write(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, Code_Correct);
}
/*******************************************************************
Internal Functions
*******************************************************************/
char HexNumber_To_ASCII(char hex_number)
{
if(hex_number >=0 && hex_number <= 9)
{
return '0' + hex_number;
}
else if(hex_number >= 10 && hex_number <= 15)
{
return 'A' + hex_number - 10;
}
return '0';
}

View File

@@ -0,0 +1,296 @@
/*
* File: Screen_EEPROM_Write.c
*
* Created: Created: Monday September 2025 16:12:05
* Author: Chris
*/
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../Easings.h"
#include "../UI_Control.h"
#include "../EEPROM_M24C64.h"
#include "../Display.h"
#include "../Display_Color.h"
#include "../Display_Objects.h"
#include "../Display_Default_Configurations.h"
// ============================================================================================
// Defines
#define COLOR_DOT_ACTIVE 0xFFFF // Pure White #FFFFFF
#define COLOR_DOT_INACTIVE 0x0842 // Dark Gray #404450
#define DOT_ANIMATION_SPEED 8
// Animation timing configuration
#define TEXT_FADE_START_FRAME 70 // Start fading text earlier for overlap
#define TEXT_FADE_DURATION 30 // Longer fade for smoother transition
#define IMAGE_FADE_START_FRAME 80 // Image starts fading in
#define IMAGE_FADE_DURATION 20 // Longer fade for smoother appearance
#define ANIMATION_END_FRAME 160 // Total animation duration
// ============================================================================================
// Variables
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_15x26[];
extern const uint16_t _Image_Check_Green_64x64[];
extern const uint16_t _Image_Check_Green_128x128[];
extern const uint16_t _Image_Failed_Red_64x64[];
extern const uint16_t _Image_Failed_Red_128x128[];
static Object_ID _Object_Text_Writing;
static Object_ID _Object_Dots[3];
static Object_ID _Object_Image;
static bool _Code_Correct;
static int _Counter;
static uint32_t _EEPROM_Write_Status;
static int32_t _Dot_Animation_Phase;
static Display_Color _Text_Original_Color;
static Display_Color _Dot_Active_Original_Color;
static Display_Color _Dot_Inactive_Original_Color;
// ============================================================================================
// Function Declarations
void Screen_Setup_EEPROM_Write(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool code_correct);
static void Update_Dot_Animation(void);
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Tick (void);
static void Screen_Click (uint button_return_value);
static void Screen_Touch_Event (int16_t x, int16_t y);
static void Screen_Action_CW (Object_ID object_id);
static void Screen_Action_CCW (Object_ID object_id);
static void Screen_On_Object_Focused (Object_ID object_id);
static void Screen_On_Object_Defocused (Object_ID object_id);
static void Screen_On_Object_Select (Object_ID object_id);
static void Screen_On_Object_Deselect (Object_ID object_id);
/*******************************************************************
Functions
*******************************************************************/
void Screen_Setup_EEPROM_Write(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, bool code_correct)
{
_Code_Correct = code_correct;
Screen_Init(direction_out, direction_in, type, frame_duration);
_Counter = 0;
_Dot_Animation_Phase = 0;
if(_Code_Correct) {
EEPROM_Trigger_Update();
}
_EEPROM_Write_Status = EEPROM_STATUS_NONE;
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
// _Screen_Last = Screen_Init; // I don't want that here...
_Screen_Tick = Screen_Tick;
_Screen_Click = Screen_Click;
_Screen_Touch_Event = Screen_Touch_Event;
_Screen_Action_CW = Screen_Action_CW;
_Screen_Action_CCW = Screen_Action_CCW;
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
_Screen_On_Object_Select = Screen_On_Object_Select;
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
Display_Objects_Clear();
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
_Text_Original_Color = DISPLAY_COLOR_LIGHTGREY;
_Dot_Active_Original_Color = COLOR_DOT_ACTIVE;
_Dot_Inactive_Original_Color = COLOR_DOT_INACTIVE;
Font_ID Font_Text = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_15x26, 0);
if(_Code_Correct) {
_Object_Text_Writing = Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, "Writing EEPROM", Font_Text, _Text_Original_Color, NO_STYLE, NO_ANIMATION);
for(int i = 0; i < 3; i++) {
_Object_Dots[i] = Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50 + (i-1) * 6, 60, NOT_SELECTABLE, _Dot_Inactive_Original_Color, 4, 1, NO_STYLE, NO_ANIMATION);
}
_Object_Image = Display_Objects_Add_Image(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, _Image_Check_Green_128x128, 0, NO_STYLE, NO_ANIMATION);
Display_Objects_Update_Enabled(_Object_Image, false);
}
else {
Display_Objects_Add_Text(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, "Code Incorrect", Font_Text, _Text_Original_Color, NO_STYLE, NO_ANIMATION);
}
_Screen_Idle_Counter_Disable = true;
Display_Select_Object();
}
void Screen_Tick(void)
{
if(_Code_Correct) {
Update_Dot_Animation();
}
if(_Counter == IMAGE_FADE_START_FRAME && _Code_Correct)
{
if(_EEPROM_Write_Status == EEPROM_STATUS_NONE) {
_EEPROM_Write_Status = EEPROM_Get_Write_Status();
}
Display_Objects_Update_Enabled(_Object_Text_Writing, false);
for(int i = 0; i < 3; i++) {
Display_Objects_Update_Enabled(_Object_Dots[i], false);
}
if(_EEPROM_Write_Status == EEPROM_STATUS_WRITE_OK) {
Display_Objects_Update_Enabled(_Object_Image, true);
} else if(_EEPROM_Write_Status == EEPROM_STATUS_WRITE_FAILED) {
Display_Objects_Update_Image(_Object_Image, _Image_Failed_Red_128x128);
Display_Objects_Update_Enabled(_Object_Image, true);
}
// Display_Objects_Update_Alpha(_Object_Image, 0);
Display_Objects_Update_Scale(_Object_Image, 0);
}
// Smooth text and dots fade-out (overlapping with image fade-in)
if(_Counter >= TEXT_FADE_START_FRAME && _Counter < (TEXT_FADE_START_FRAME + TEXT_FADE_DURATION) && _Code_Correct)
{
float Fade_Progress = (float)(_Counter - TEXT_FADE_START_FRAME) / (float)TEXT_FADE_DURATION;
// Use Ease_Out_Cubic for smooth, natural fade (accelerates at start, decelerates at end)
float Eased_Progress = Ease_Out_Cubic(Fade_Progress);
// Calculate inverse progress for fade-out (1.0 -> 0.0)
float Fade_Out = 1.0f - Eased_Progress;
// Fade text to background color
Display_Color Faded_Text = Display_Color_Interpolate_Float(_Text_Original_Color, DISPLAY_COLOR_BLACK, Eased_Progress);
Display_Objects_Update_Color(_Object_Text_Writing, Faded_Text);
// Fade dots to background
Display_Color Faded_Dot_Active = Display_Color_Interpolate_Float(_Dot_Active_Original_Color, DISPLAY_COLOR_BLACK, Eased_Progress);
Display_Color Faded_Dot_Inactive = Display_Color_Interpolate_Float(_Dot_Inactive_Original_Color, DISPLAY_COLOR_BLACK, Eased_Progress);
// Apply faded colors while maintaining animation state
int Active_Dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
for(int i = 0; i < 3; i++) {
Display_Color Dot_Color = (i == Active_Dot) ? Faded_Dot_Active : Faded_Dot_Inactive;
Display_Objects_Update_Color(_Object_Dots[i], Dot_Color);
}
}
// Disable text and dots after fade-out completes
if(_Counter == (TEXT_FADE_START_FRAME + TEXT_FADE_DURATION) && _Code_Correct)
{
Display_Objects_Update_Enabled(_Object_Text_Writing, false);
for(int i = 0; i < 3; i++) {
Display_Objects_Update_Enabled(_Object_Dots[i], false);
}
}
// Smooth image fade-in with extended duration and better easing
if(_Counter >= IMAGE_FADE_START_FRAME && _Counter < (IMAGE_FADE_START_FRAME + IMAGE_FADE_DURATION) && _Code_Correct)
{
float Fade_Progress = (float)(_Counter - IMAGE_FADE_START_FRAME) / (float)IMAGE_FADE_DURATION;
// Use Ease_Out_Cubic for smooth, elegant appearance
// This creates a fast start that gradually slows down - feels very natural
float Eased_Progress = Ease_Out_Cubic(Fade_Progress);
// Convert to alpha value (0-255)
uint8_t Alpha_Value = (uint8_t)(Eased_Progress * 255.0f);
Display_Objects_Update_Scale(_Object_Image, Eased_Progress);
// Apply alpha to the appropriate image
// Display_Objects_Update_Alpha(_Object_Image, Alpha_Value);
}
// Transition to next screen after animation completes
if(_Counter >= ANIMATION_END_FRAME) {
_Screen_Idle_Counter_Disable = false;
Screen_Setup_Settings(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 4);
}
_Counter++;
}
void Screen_Click(uint button_return_value)
{
}
void Screen_Touch_Event(int16_t x, int16_t y)
{
}
void Screen_Action_CW(Object_ID object_id)
{
}
void Screen_Action_CCW(Object_ID object_id)
{
}
void Screen_On_Object_Focused(Object_ID object_id)
{
}
void Screen_On_Object_Defocused(Object_ID object_id)
{
}
void Screen_On_Object_Select(Object_ID object_id)
{
}
void Screen_On_Object_Deselect(Object_ID object_id)
{
if(_Counter >= 120) {
_Screen_Idle_Counter_Disable = false;
Screen_Setup_Settings(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 4);
}
}
/*******************************************************************
Internal Functions
*******************************************************************/
void Update_Dot_Animation(void)
{
_Dot_Animation_Phase++;
if(_Dot_Animation_Phase >= (DOT_ANIMATION_SPEED * 3)) {
_Dot_Animation_Phase = 0;
}
// Determine which dot should be active
int Active_Dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
// Update dot colors
for(int i = 0; i < 3; i++) {
Display_Color Dot_Color = (i == Active_Dot) ? _Dot_Active_Original_Color : _Dot_Inactive_Original_Color;
Display_Objects_Update_Color(_Object_Dots[i], Dot_Color);
}
}

View File

@@ -10,27 +10,37 @@
#include "../Screens.h"
#include "../UI_Control.h"
#include "../Command_Definition.h"
#include "../Display_Default_Configurations.h"
#include "../Display.h"
#include "../Display_Font.h"
#include "../Display_Objects.h"
#include "../Display_Default_Configurations.h"
#include "../INA260.h"
#include "../EEPROM_M24C64.h"
// ============================================================================================
// Defines
#define GRAPH_DATA_WDITH 200
#define COLOR_DARKGREEN DISPLAY_COLOR_FROM_RGB888(0, 100, 0)
// ============================================================================================
// Variables
extern const unsigned char _Font_DejaVu_Sans_Mono_6x12[];
extern const unsigned char _Font_DejaVu_Sans_Mono_10x17[];
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_7x15[];
extern const unsigned char _Font_DejaVu_Sans_Mono_Bold_11x17[];
static Object_ID _Object_Value_BusVoltage;
static Object_ID _Object_Value_Current;
static uint16_t _Data_BusVoltage[GRAPH_DATA_WDITH];
static uint16_t _Data_BusVoltage_Threshold_Overvoltage[GRAPH_DATA_WDITH];
static uint16_t _Data_BusVoltage_Threshold_Undervoltage[GRAPH_DATA_WDITH];
static float _Current_BusVoltage_V;
static uint16_t _Data_Current[GRAPH_DATA_WDITH];
static uint16_t _Data_Threshold_Current[GRAPH_DATA_WDITH];
static float _Actual_BusVoltage_V;
static float _Actual_Current_A;
// ============================================================================================
@@ -58,8 +68,8 @@ void Screen_Setup_Graph(Screen_Transition_Direction direction_out, Screen_Transi
for(int i=0;i<GRAPH_DATA_WDITH;i++) {
_Data_BusVoltage[i] = 0;
_Data_BusVoltage_Threshold_Overvoltage[i] = THRESHOLD_OVERVOLTAGE_mV;
_Data_BusVoltage_Threshold_Undervoltage[i] = THRESHOLD_UNDERVOLTAGE_mV;
_Data_Current[i] = 0;
_Data_Threshold_Current[i] = _EEPROM_Content.Device_Configuration.Current_Threshold * 5; // 5x, due to 4x 1.25mA
}
}
@@ -82,23 +92,59 @@ void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Di
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
char Current_Threshold[10];
Display_Font_Set_Font(_Font_DejaVu_Sans_Mono_6x12);
int16_t Font_6_1_Height = Display_Font_Get_Font_Height();
sprintf(Current_Threshold, "%.3fA", (float)(_EEPROM_Content.Device_Configuration.Current_Threshold * 5) / 1000.0f);
int16_t Current_Threshold_Label_Y = DISPLAY_Y_CENTER + 100 - _EEPROM_Content.Device_Configuration.Current_Threshold * 5 / 25;
if((Current_Threshold_Label_Y <= (149 + Font_6_1_Height)) && (Current_Threshold_Label_Y >= 149)) {
Current_Threshold_Label_Y += (Font_6_1_Height + 1);
}
else if((Current_Threshold_Label_Y <= 149) && (Current_Threshold_Label_Y >= 141)) {
Current_Threshold_Label_Y = 141;
}
Font_ID Font_6_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_6x12, 1);
Font_ID Font_10_1 = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_10x17, 1);
Font_ID Font_7_1_B = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_7x15, 1);
Font_ID Font_11_1_B = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 1);
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_BusVoltage, GRAPH_DATA_WDITH, 32000, 0, DISPLAY_COLOR_WHITE, 200, NO_STYLE, NO_ANIMATION);
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_BusVoltage_Threshold_Overvoltage, GRAPH_DATA_WDITH, 32000, 0, DISPLAY_COLOR_RED, 200, NO_STYLE, NO_ANIMATION);
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_BusVoltage_Threshold_Undervoltage, GRAPH_DATA_WDITH, 32000, 0, DISPLAY_COLOR_RED, 200, NO_STYLE, NO_ANIMATION);
// Threshold Lines / Areas
Display_Objects_Add_Rectangle_Frame(CENTER_TOP, X_IN_PERCENT_Y_IN_PIXEL, 50, 141, NOT_SELECTABLE, COLOR_DARKGREEN, GRAPH_DATA_WDITH+2, 8, 1, NO_STYLE, NO_ANIMATION);
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_Threshold_Current, GRAPH_DATA_WDITH, 5000, 0, DISPLAY_COLOR_ORANGE, 200, NO_STYLE, NO_ANIMATION);
Display_Objects_Add_Float(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, 232, NOT_SELECTABLE, &_Current_BusVoltage_V, "%2.3fV", Font_10_1, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
// Threshold Labels
Display_Objects_Add_Text(LEFT_BOTTOM, BOTH_IN_PIXEL, 19, 140, NOT_SELECTABLE, "12.5V", Font_6_1, COLOR_DARKGREEN, NO_STYLE, NO_ANIMATION);
Display_Objects_Add_Text(LEFT_TOP , BOTH_IN_PIXEL, 19, 149, NOT_SELECTABLE, "11.5V", Font_6_1, COLOR_DARKGREEN, NO_STYLE, NO_ANIMATION);
Display_Objects_Add_Text(CENTER_BOTTOM, X_IN_PERCENT_Y_IN_PIXEL, 50, Current_Threshold_Label_Y, NOT_SELECTABLE, Current_Threshold, Font_6_1, DISPLAY_COLOR_ORANGE, NO_STYLE, NO_ANIMATION);
// Data Graphs (Voltage and Current)
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_BusVoltage, GRAPH_DATA_WDITH, 32000, 0, DISPLAY_COLOR_RED, 200, NO_STYLE, NO_ANIMATION);
Display_Objects_Add_Graph(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, false, _Data_Current, GRAPH_DATA_WDITH, 5000, 0, DISPLAY_COLOR_YELLOW, 200, NO_STYLE, NO_ANIMATION);
// Data Values (Voltage and Current)
_Object_Value_BusVoltage = Display_Objects_Add_Float(RIGHT_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 48, 50, NOT_SELECTABLE, &_Actual_BusVoltage_V, "%2.1fV", Font_11_1_B, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION);
_Object_Value_Current = Display_Objects_Add_Float(LEFT_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 52, 50, NOT_SELECTABLE, &_Actual_Current_A, "%1.3fA", Font_11_1_B, DISPLAY_COLOR_YELLOW, NO_STYLE, NO_ANIMATION);
}
void Screen_Tick(void)
{
Display_Objects_Update_Coordinates(_Object_Value_BusVoltage, RIGHT_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 48, 50);
Display_Objects_Update_Coordinates(_Object_Value_Current, LEFT_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 52, 50);
for(int i=0;i<GRAPH_DATA_WDITH-1;i++) {
_Data_BusVoltage[i] = _Data_BusVoltage[i+1];
_Data_Current[i] = _Data_Current[i+1];
}
_Data_BusVoltage[GRAPH_DATA_WDITH-1] = INA260_Get_BusVoltage_mV();
_Current_BusVoltage_V = ((float)_Data_BusVoltage[GRAPH_DATA_WDITH-1]) / 1000.0f;
_Actual_BusVoltage_V = ((float)_Data_BusVoltage[GRAPH_DATA_WDITH-1]) / 1000.0f;
_Data_Current[GRAPH_DATA_WDITH-1] = INA260_Get_Current_mA();
_Actual_Current_A = ((float)_Data_Current[GRAPH_DATA_WDITH-1]) / 1000.0f;
}
void Screen_Click(uint button_return_value)

View File

@@ -0,0 +1,161 @@
/*
* File: Screen_Idle.c
*
* Created: Created: Saturday October 2025 20:32:05
* Author: Chris
*/
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../UI_Control.h"
#include "../Mode_Manager.h"
#include "../EEPROM_M24C64.h"
#include "../Display.h"
#include "../Display_Objects.h"
#include "../Display_Default_Configurations.h"
#include "Common_Screen_Elements.h"
// ============================================================================================
// Defines
// ============================================================================================
// Variables
extern const uint16_t _Image_Fad_Logo_Background_160x160[];
// ============================================================================================
// Function Declarations
void Screen_Setup_Idle(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Tick (void);
static void Screen_Click (uint button_return_value);
static void Screen_Touch_Event (int16_t x, int16_t y);
static void Screen_Action_CW (Object_ID object_id);
static void Screen_Action_CCW (Object_ID object_id);
static void Screen_On_Object_Focused (Object_ID object_id);
static void Screen_On_Object_Defocused (Object_ID object_id);
static void Screen_On_Object_Select (Object_ID object_id);
static void Screen_On_Object_Deselect (Object_ID object_id);
/*******************************************************************
Functions
*******************************************************************/
void Screen_Setup_Idle(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
Screen_Init(direction_out, direction_in, type, frame_duration);
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
// _Screen_Last = Screen_Init; // We don't want that here...
_Screen_Tick = Screen_Tick;
_Screen_Click = Screen_Click;
_Screen_Touch_Event = Screen_Touch_Event;
_Screen_Action_CW = Screen_Action_CW;
_Screen_Action_CCW = Screen_Action_CCW;
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
_Screen_On_Object_Select = Screen_On_Object_Select;
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
Display_Objects_Clear();
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
switch(_EEPROM_Content.Device_Configuration.Idle_Screen)
{
case IDLE_SCREEN_LOGO:
Display_Objects_Add_Image(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, _Image_Fad_Logo_Background_160x160, 0, NO_STYLE, NO_ANIMATION);
break;
case IDLE_SCREEN_CURRENT_MODE:
Common_Screen_Element_Init_Current_Mode(Mode_Manager_Get_Current_Mode());
break;
case IDLE_SCREEN_MODE_ACTIVITY:
Common_Screen_Element_Init_Mode_Activity(Mode_Manager_Get_Current_Mode());
break;
case IDLE_SCREEN_BLACK:
default: break;
}
_Screen_Idle_Active = true;
Display_Select_Object();
}
void Screen_Tick(void)
{
switch(_EEPROM_Content.Device_Configuration.Idle_Screen)
{
case IDLE_SCREEN_MODE_ACTIVITY:
Common_Screen_Element_Tick_Mode_Activity(Mode_Manager_Get_Current_Mode());
break;
case IDLE_SCREEN_LOGO:
case IDLE_SCREEN_CURRENT_MODE:
case IDLE_SCREEN_BLACK:
default: break;
}
}
void Screen_Click(uint button_return_value)
{
}
void Screen_Touch_Event(int16_t x, int16_t y)
{
}
void Screen_Action_CW(Object_ID object_id)
{
_Screen_Idle_Active = false;
_Screen_Last(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
}
void Screen_Action_CCW(Object_ID object_id)
{
_Screen_Idle_Active = false;
_Screen_Last(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
}
void Screen_On_Object_Focused(Object_ID object_id)
{
}
void Screen_On_Object_Defocused(Object_ID object_id)
{
}
void Screen_On_Object_Select(Object_ID object_id)
{
}
void Screen_On_Object_Deselect(Object_ID object_id)
{
_Screen_Idle_Active = false;
_Screen_Last(TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
}
/*******************************************************************
Internal Functions
*******************************************************************/

View File

@@ -297,12 +297,12 @@ static void Update_Dot_Animation(void)
}
// Determine which dot should be active
int active_dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
int Active_Dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
// Update dot colors
for(int i = 0; i < 3; i++) {
Display_Color dot_color = (i == active_dot) ? COLOR_DOT_ACTIVE : COLOR_DOT_INACTIVE;
Display_Objects_Update_Color(_Object_Dots[i], dot_color);
Display_Color Dot_Color = (i == Active_Dot) ? COLOR_DOT_ACTIVE : COLOR_DOT_INACTIVE;
Display_Objects_Update_Color(_Object_Dots[i], Dot_Color);
}
}

View File

@@ -10,10 +10,14 @@
// Includes
#include "../Screens.h"
#include "../UI_Control.h"
#include "../Display_Default_Configurations.h"
#include "../Mode_Manager.h"
#include "../Display.h"
#include "../Display_Objects.h"
#include "../Display_Default_Configurations.h"
#include "Common_Screen_Elements.h"
// ============================================================================================
// Defines
@@ -67,23 +71,15 @@ void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Di
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Display_Objects_Add_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_RED, 80, 80, 1, NO_STYLE, NO_ANIMATION);
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN, 80, 80, 10, 4, NO_STYLE, NO_ANIMATION);
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN, 100, 100, 15, 1, NO_STYLE, NO_ANIMATION);
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN, 80, 80, 5, 1, NO_STYLE, NO_ANIMATION);
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_GREEN , 80, 80, 10, 1, NO_STYLE, NO_ANIMATION);
// Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_BLUE , 60, 60, 5, 1, NO_STYLE, NO_ANIMATION);
// Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_BLUE, 40, 5, NO_STYLE, NO_ANIMATION);
Display_Objects_Add_Circle_Filled(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_BLUE, 40, NO_STYLE, NO_ANIMATION);
// Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, DISPLAY_COLOR_ORANGE, 40, 1, NO_STYLE, NO_ANIMATION);
Common_Screen_Element_Init_Mode_Activity(Mode_Manager_Get_Current_Mode());
Display_Select_Object();
}
void Screen_Tick(void)
{
Common_Screen_Element_Tick_Mode_Activity(Mode_Manager_Get_Current_Mode());
}
void Screen_Click(uint button_return_value)

View File

@@ -0,0 +1,147 @@
/*
* File: Screen_Mode_Change.c
*
* Created: Created: Saturday October 2025 21:07:48
* Author: Chris
*/
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../UI_Control.h"
#include "../Mode_Manager.h"
#include "../Display.h"
#include "../Display_Objects.h"
#include "../Display_Default_Configurations.h"
#include "Common_Screen_Elements.h"
// ============================================================================================
// Defines
// ============================================================================================
// Variables
extern const uint16_t _Image_Forest_Pine_Midi_64x64[];
extern const uint16_t _Image_Steel_Blue_Jam_Happy_64x64[];
extern const uint16_t _Image_Stone_Blue_Light_On_64x64[];
static Mode _Mode;
static uint32_t _Counter;
// ============================================================================================
// Function Declarations
void Screen_Setup_Mode_Change(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, Mode mode);
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Tick (void);
static void Screen_Click (uint button_return_value);
static void Screen_Touch_Event (int16_t x, int16_t y);
static void Screen_Action_CW (Object_ID object_id);
static void Screen_Action_CCW (Object_ID object_id);
static void Screen_On_Object_Focused (Object_ID object_id);
static void Screen_On_Object_Defocused (Object_ID object_id);
static void Screen_On_Object_Select (Object_ID object_id);
static void Screen_On_Object_Deselect (Object_ID object_id);
/*******************************************************************
Functions
*******************************************************************/
void Screen_Setup_Mode_Change(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, Mode mode)
{
_Mode = mode;
_Counter = 0;
Screen_Init(direction_out, direction_in, type, frame_duration);
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
// _Screen_Last = Screen_Init; // We don't want that here...
_Screen_Tick = Screen_Tick;
_Screen_Click = Screen_Click;
_Screen_Touch_Event = Screen_Touch_Event;
_Screen_Action_CW = Screen_Action_CW;
_Screen_Action_CCW = Screen_Action_CCW;
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
_Screen_On_Object_Select = Screen_On_Object_Select;
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
Display_Objects_Clear();
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Common_Screen_Element_Init_Current_Mode(_Mode);
}
void Screen_Tick(void)
{
const uint32_t Counter_Max = 50;
if(_Counter == Counter_Max)
{
if(_Screen_Idle_Active == true) {
Screen_Setup_Idle(TRANSITION_NONE, TRANSITION_NONE, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
} else {
_Screen_Last(TRANSITION_NONE, TRANSITION_NONE, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
}
}
_Counter++;
}
void Screen_Click(uint button_return_value)
{
}
void Screen_Touch_Event(int16_t x, int16_t y)
{
}
void Screen_Action_CW(Object_ID object_id)
{
}
void Screen_Action_CCW(Object_ID object_id)
{
}
void Screen_On_Object_Focused(Object_ID object_id)
{
}
void Screen_On_Object_Defocused(Object_ID object_id)
{
}
void Screen_On_Object_Select(Object_ID object_id)
{
}
void Screen_On_Object_Deselect(Object_ID object_id)
{
}
/*******************************************************************
Internal Functions
*******************************************************************/

View File

@@ -13,6 +13,7 @@
#include "../Display.h"
#include "../Display_Objects.h"
#include "../Display_Render_Complex.h"
#include "../Display_Default_Configurations.h"
@@ -91,6 +92,7 @@ void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Di
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Display_Render_Complex_Select_YesNo_Set(_Bool_Value, &_Configuration_Default_Select_YesNo);
Display_Objects_Add_Select_YesNo(_Title, _Title_Length, &_Bool_Value, &_Configuration_Default_Select_YesNo);
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);

View File

@@ -0,0 +1,204 @@
/*
* File: Screen_Select_Hue.c
*
* Created: Created: Friday October 2025 16:12:34
* Author: Chris
*/
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../Hue.h"
#include "../Command.h"
#include "../UI_Control.h"
#include "../Mode_Manager.h"
#include "../Display.h"
#include "../Display_Objects.h"
#include "../Display_Default_Configurations.h"
// ============================================================================================
// Defines
// ============================================================================================
// Variables
static Object_ID _Object_Message_Box;
static Object_ID _Object_Value_Bar;
static const Hierarchical_Menu* _Return_Menu = NULL;
static const Menu_List* _Return_List = NULL;
static int32_t _Return_Selected_Item;
static char* _Title;
static uint32_t _Title_Length;
static int32_t* _Value;
static int32_t _Display_Value;
static const Menu_Configuration_Select_Value* _Config;
static bool _Decision_Made;
static uint32_t _Counter;
static Mode _Current_Mode;
// ============================================================================================
// Function Declarations
void Screen_Setup_Select_Hue(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* hue_value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Tick (void);
static void Screen_Click (uint button_return_value);
static void Screen_Touch_Event (int16_t x, int16_t y);
static void Screen_Action_CW (Object_ID object_id);
static void Screen_Action_CCW (Object_ID object_id);
static void Screen_On_Object_Focused (Object_ID object_id);
static void Screen_On_Object_Defocused (Object_ID object_id);
static void Screen_On_Object_Select (Object_ID object_id);
static void Screen_On_Object_Deselect (Object_ID object_id);
/*******************************************************************
Functions
*******************************************************************/
void Screen_Setup_Select_Hue(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* hue_value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
{
_Title = title;
_Title_Length = title_length;
_Value = hue_value;
_Display_Value = *hue_value * config->Value_Display_Ratio;
_Config = config;
Screen_Init(direction_out, direction_in, type, frame_duration);
_Return_Menu = return_menu;
_Return_List = return_list;
_Return_Selected_Item = return_selected_item;
_Decision_Made = false;
_Counter = 0;
_Current_Mode = Mode_Manager_Get_Current_Mode();
Mode_Manager_Set_Mode(PREVIEW);
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
_Screen_Last = Screen_Init;
_Screen_Tick = Screen_Tick;
_Screen_Click = Screen_Click;
_Screen_Touch_Event = Screen_Touch_Event;
_Screen_Action_CW = Screen_Action_CW;
_Screen_Action_CCW = Screen_Action_CCW;
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
_Screen_On_Object_Select = Screen_On_Object_Select;
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
Display_Objects_Clear();
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Style_ID Style_Value_Var = Display_Objects_Add_Style(DISPLAY_COLOR_BLACK, DISPLAY_COLOR_LIGHTGREY, 1, 0, PADDING_1(3), STYLE_WIDTH_HEIGHT_RATIO_AUTO);
Display_Objects_Add_Select_Value(_Title, _Title_Length, &_Display_Value, _Config->Max, _Config->Min, (char*)_Config->Format, &_Configuration_Default_Select_Value);
_Object_Value_Bar = Display_Objects_Add_Value_Bar_Rect(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 63, NOT_SELECTABLE, _Value, 359, 0, LEFT_TO_RIGHT, DISPLAY_COLOR_BLACK, 200, 10, Style_Value_Var, NO_ANIMATION);
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
Display_Select_Object();
UI_Control_Acceleration_Reset();
UI_Control_Acceleration_Set_Enabled(_Config->Use_Acceleration);
}
void Screen_Tick(void)
{
LED_Data_t RGB_Value;
RGB_Value.Pixel = Hue_Get_Color_From_Angle(*_Value);
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, RGB_Value.R);
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, RGB_Value.G);
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, RGB_Value.B);
Display_Objects_Update_Color(_Object_Value_Bar, DISPLAY_COLOR_FROM_RGB888(RGB_Value.R, RGB_Value.G, RGB_Value.B));
if(_Decision_Made) {
_Counter++;
}
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
}
}
void Screen_Click(uint button_return_value)
{
}
void Screen_Touch_Event(int16_t x, int16_t y)
{
}
void Screen_Action_CW(Object_ID object_id)
{
if(_Decision_Made) {
return;
}
UI_Control_Selector_Inc(_Value, _Config->Min, _Config->Max, _Config->Cycle_Selector);
_Display_Value = *_Value * _Config->Value_Display_Ratio;
}
void Screen_Action_CCW(Object_ID object_id)
{
if(_Decision_Made) {
return;
}
UI_Control_Selector_Dec(_Value, _Config->Min, _Config->Max, _Config->Cycle_Selector);
_Display_Value = *_Value * _Config->Value_Display_Ratio;
}
void Screen_On_Object_Focused(Object_ID object_id)
{
}
void Screen_On_Object_Defocused(Object_ID object_id)
{
}
void Screen_On_Object_Select(Object_ID object_id)
{
}
void Screen_On_Object_Deselect(Object_ID object_id)
{
if(!_Decision_Made) {
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
_Decision_Made = true;
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, 0);
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, 0);
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, 0);
Mode_Manager_Set_Mode(_Current_Mode);
}
}
/*******************************************************************
Internal Functions
*******************************************************************/

View File

@@ -0,0 +1,175 @@
/*
* File: Screen_Select_List.c
*
* Created: Created: Friday September 2025 20:06:47
* Author: Chris
*/
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../UI_Control.h"
#include "../Display.h"
#include "../Display_Objects.h"
#include "../Display_Default_Configurations.h"
// ============================================================================================
// Defines
// ============================================================================================
// Variables
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_11x17[];
static Object_ID _Object_Message_Box;
static const Hierarchical_Menu* _Return_Menu = NULL;
static const Menu_List* _Return_List = NULL;
static int32_t _Return_Selected_Item;
static char* _Title;
static uint32_t _Title_Length;
static int32_t* _Value;
static const Menu_Configuration_Select_List* _Config;
static bool _Decision_Made;
static uint32_t _Counter;
// ============================================================================================
// Function Declarations
void Screen_Setup_Select_List(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_List* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Tick (void);
static void Screen_Click (uint button_return_value);
static void Screen_Touch_Event (int16_t x, int16_t y);
static void Screen_Action_CW (Object_ID object_id);
static void Screen_Action_CCW (Object_ID object_id);
static void Screen_On_Object_Focused (Object_ID object_id);
static void Screen_On_Object_Defocused (Object_ID object_id);
static void Screen_On_Object_Select (Object_ID object_id);
static void Screen_On_Object_Deselect (Object_ID object_id);
/*******************************************************************
Functions
*******************************************************************/
void Screen_Setup_Select_List(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_List* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
{
_Title = title;
_Title_Length = title_length;
_Value = value;
_Config = config;
Screen_Init(direction_out, direction_in, type, frame_duration);
_Return_Menu = return_menu;
_Return_List = return_list;
_Return_Selected_Item = return_selected_item;
_Decision_Made = false;
_Counter = 0;
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
_Screen_Last = Screen_Init;
_Screen_Tick = Screen_Tick;
_Screen_Click = Screen_Click;
_Screen_Touch_Event = Screen_Touch_Event;
_Screen_Action_CW = Screen_Action_CW;
_Screen_Action_CCW = Screen_Action_CCW;
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
_Screen_On_Object_Select = Screen_On_Object_Select;
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
Display_Objects_Clear();
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_11x17, 0);
Display_Objects_Add_Select_List((char*)_Config->Item_Names, _Config->Item_Count, _Config->Name_Length, _Value, &_Configuration_Default_Select_List);
Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, 60, NOT_SELECTABLE, _Title, Font_Title, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
Display_Select_Object();
UI_Control_Acceleration_Reset();
UI_Control_Acceleration_Set_Enabled(_Config->Use_Acceleration);
}
void Screen_Tick(void)
{
if(_Decision_Made) {
_Counter++;
}
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
}
}
void Screen_Click(uint button_return_value)
{
}
void Screen_Touch_Event(int16_t x, int16_t y)
{
}
void Screen_Action_CW(Object_ID object_id)
{
if(_Decision_Made) {
return;
}
UI_Control_Selector_Inc(_Value, 0, _Config->Item_Count-1, _Config->Cycle_Selector);
}
void Screen_Action_CCW(Object_ID object_id)
{
if(_Decision_Made) {
return;
}
UI_Control_Selector_Dec(_Value, 0, _Config->Item_Count-1, _Config->Cycle_Selector);
}
void Screen_On_Object_Focused(Object_ID object_id)
{
}
void Screen_On_Object_Defocused(Object_ID object_id)
{
}
void Screen_On_Object_Select(Object_ID object_id)
{
}
void Screen_On_Object_Deselect(Object_ID object_id)
{
if(!_Decision_Made) {
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
_Decision_Made = true;
}
}
/*******************************************************************
Internal Functions
*******************************************************************/

View File

@@ -0,0 +1,267 @@
/*
* File: Screen_Select_MinMax.c
*
* Created: Created: Friday October 2025 16:50:54
* Author: Chris
*/
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../UI_Control.h"
#include "../Display.h"
#include "../Display_Color.h"
#include "../Display_Objects.h"
#include "../Display_Default_Configurations.h"
// ============================================================================================
// Defines
#define DISPLAY_COLOR_VERYDARKGREY DISPLAY_COLOR_FROM_RGB888(64, 64, 64)
// ============================================================================================
// Variables
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_7x15[];
extern const uint8_t _Font_DejaVu_Sans_Mono_10x17[];
static Object_ID _Object_Text_Min, _Object_Text_Max;
static Object_ID _Object_Box;
static Object_ID _Object_Message_Box;
static Object_ID _Object_Value_Bar;
static const Hierarchical_Menu* _Return_Menu = NULL;
static const Menu_List* _Return_List = NULL;
static int32_t _Return_Selected_Item;
static char* _Title;
static uint32_t _Title_Length;
static MinMax_t* _Value;
static int32_t _Value_Min;
static int32_t _Value_Max;
static int32_t* _Current_Value;
static int32_t _Limit_Min;
static int32_t _Limit_Max;
static int16_t _Box_Y_Current;
static int16_t _Box_Y_Target;
static const Menu_Configuration_Select_MinMax* _Config;
static const int16_t _Y_Center_Min = DISPLAY_Y_CENTER;
static const int16_t _Y_Center_Max = DISPLAY_Y_CENTER + 40;
static bool _Decision_Made;
static uint32_t _Counter;
// ============================================================================================
// Function Declarations
void Screen_Setup_Select_MinMax(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, MinMax_t* value, const Menu_Configuration_Select_MinMax* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Tick (void);
static void Screen_Click (uint button_return_value);
static void Screen_Touch_Event (int16_t x, int16_t y);
static void Screen_Action_CW (Object_ID object_id);
static void Screen_Action_CCW (Object_ID object_id);
static void Screen_On_Object_Focused (Object_ID object_id);
static void Screen_On_Object_Defocused (Object_ID object_id);
static void Screen_On_Object_Select (Object_ID object_id);
static void Screen_On_Object_Deselect (Object_ID object_id);
/*******************************************************************
Functions
*******************************************************************/
void Screen_Setup_Select_MinMax(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, MinMax_t* value, const Menu_Configuration_Select_MinMax* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
{
_Title = title;
_Title_Length = title_length;
_Value = value;
_Value_Min = _Value->Min;
_Value_Max = _Value->Max;
_Current_Value = &_Value_Min;
_Limit_Min = config->Min;
_Limit_Max = config->Max - 1;
_Box_Y_Target = _Y_Center_Min;
_Box_Y_Current = _Box_Y_Target;
_Config = config;
Screen_Init(direction_out, direction_in, type, frame_duration);
_Return_Menu = return_menu;
_Return_List = return_list;
_Return_Selected_Item = return_selected_item;
_Decision_Made = false;
_Counter = 0;
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
_Screen_Last = Screen_Init;
_Screen_Tick = Screen_Tick;
_Screen_Click = Screen_Click;
_Screen_Touch_Event = Screen_Touch_Event;
_Screen_Action_CW = Screen_Action_CW;
_Screen_Action_CCW = Screen_Action_CCW;
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
_Screen_On_Object_Select = Screen_On_Object_Select;
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
Display_Objects_Clear();
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Font_ID Font_Title = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_7x15, DISPLAY_DEFAULT_CHAR_SPACING);
Font_ID Font_Value = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_10x17, 0);
Display_Objects_Add_Text(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, DISPLAY_Y_CENTER - 50, NOT_SELECTABLE, _Title, Font_Title, DISPLAY_COLOR_WHITE, NO_STYLE, NO_ANIMATION);
_Object_Text_Min = Display_Objects_Add_Integer(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Center_Min, NOT_SELECTABLE, (int*)(&_Value_Min), (char*)_Config->Format_Min, Font_Value, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
_Object_Text_Max = Display_Objects_Add_Integer(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, _Y_Center_Max, NOT_SELECTABLE, (int*)(&_Value_Max), (char*)_Config->Format_Max, Font_Value, DISPLAY_COLOR_DARKGREY, NO_STYLE, NO_ANIMATION);
_Object_Box = Display_Objects_Add_Rounded_Rectangle_Frame(CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, _Box_Y_Current, NOT_SELECTABLE, DISPLAY_COLOR_LIGHTGREY, 140, 30, 3, 1, NO_STYLE, NO_ANIMATION);
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
Display_Select_Object();
UI_Control_Acceleration_Reset();
UI_Control_Acceleration_Set_Enabled(_Config->Use_Acceleration);
}
void Screen_Tick(void)
{
// Update Values in actual datasctructure passed via pointer
_Value->Min = _Value_Min;
_Value->Max = _Value_Max;
// Animate the slection box to see which values in currently being edited
if(_Box_Y_Target > _Box_Y_Current) {
int16_t Distance = abs(_Box_Y_Current - _Box_Y_Target);
_Box_Y_Current += ((Distance >> 1) + 1);
}
Display_Objects_Update_Coordinates(_Object_Box, CENTER_MIDDLE, X_IN_PERCENT_Y_IN_PIXEL, 50, _Box_Y_Current);
// Adjust the colors of the text depending if the text is currently edited or not
int16_t Max_Distance = abs(_Y_Center_Max - _Y_Center_Min);
float Ratio = ((float)(_Box_Y_Current - _Y_Center_Min)) / (float)Max_Distance;
Display_Color Color_Min = Display_Color_Interpolate_Float(DISPLAY_COLOR_LIGHTGREY, DISPLAY_COLOR_VERYDARKGREY, Ratio);
Display_Color Color_Max = Display_Color_Interpolate_Float(DISPLAY_COLOR_VERYDARKGREY, DISPLAY_COLOR_LIGHTGREY, Ratio);
Display_Objects_Update_Color(_Object_Text_Min, Color_Min);
Display_Objects_Update_Color(_Object_Text_Max, Color_Max);
// Increment tick counter for message box if all values have been selected
if(_Decision_Made) {
_Counter++;
}
// Change back to the former screen (Hierarchical Menu), when the ticks are up
if(_Counter == MESSAGE_BOX_DEFAULT_TICKS) {
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
}
}
void Screen_Click(uint button_return_value)
{
}
void Screen_Touch_Event(int16_t x, int16_t y)
{
}
void Screen_Action_CW(Object_ID object_id)
{
if(_Decision_Made) {
return;
}
UI_Control_Selector_Inc(_Current_Value, _Limit_Min, _Limit_Max, _Config->Cycle_Selector);
if(_Current_Value == &_Value_Min) {
if(_Value_Min >= _Value_Max) {
_Value_Max = _Value_Min + 1;
}
}
else {
if(_Value_Max <= _Value_Min) {
_Value_Min = _Value_Max - 1;
}
}
}
void Screen_Action_CCW(Object_ID object_id)
{
if(_Decision_Made) {
return;
}
UI_Control_Selector_Dec(_Current_Value, _Limit_Min, _Limit_Max, _Config->Cycle_Selector);
if(_Current_Value == &_Value_Min) {
if(_Value_Min >= _Value_Max) {
_Value_Max = _Value_Min + 1;
}
}
else {
if(_Value_Max <= _Value_Min) {
_Value_Min = _Value_Max - 1;
}
}
}
void Screen_On_Object_Focused(Object_ID object_id)
{
}
void Screen_On_Object_Defocused(Object_ID object_id)
{
}
void Screen_On_Object_Select(Object_ID object_id)
{
}
void Screen_On_Object_Deselect(Object_ID object_id)
{
if(_Current_Value == &_Value_Min) {
_Current_Value = &_Value_Max;
_Limit_Min++;
_Limit_Max++;
_Box_Y_Target = _Y_Center_Max;
Display_Select_Object();
return;
}
if(!_Decision_Made) {
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
_Decision_Made = true;
}
}
/*******************************************************************
Internal Functions
*******************************************************************/

View File

@@ -8,7 +8,9 @@
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../Command.h"
#include "../UI_Control.h"
#include "../Mode_Manager.h"
#include "../Command_Definition.h"
#include "../Display.h"
@@ -33,6 +35,7 @@ static uint8_t* _Color;
static bool _Decision_Made;
static uint32_t _Counter;
static Mode _Current_Mode;
// ============================================================================================
@@ -68,6 +71,9 @@ void Screen_Setup_Select_RGB(Screen_Transition_Direction direction_out, Screen_T
_Decision_Made = false;
_Counter = 0;
_Current_Mode = Mode_Manager_Get_Current_Mode();
Mode_Manager_Set_Mode(PREVIEW);
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
@@ -101,6 +107,10 @@ void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Di
void Screen_Tick(void)
{
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, _RGB_Color->R);
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, _RGB_Color->G);
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, _RGB_Color->B);
if(_Decision_Made) {
_Counter++;
}
@@ -171,6 +181,12 @@ void Screen_On_Object_Deselect(Object_ID object_id)
if(!_Decision_Made) {
Display_Objects_Show_Message_Box(_Object_Message_Box, MESSAGE_BOX_DEFAULT_TICKS);
_Decision_Made = true;
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_RED , MULTICORE_NO_PARAMETER, 0);
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_GREEN, MULTICORE_NO_PARAMETER, 0);
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_DIRECT_BLUE , MULTICORE_NO_PARAMETER, 0);
Mode_Manager_Set_Mode(_Current_Mode);
}
}

View File

@@ -27,6 +27,7 @@ static int32_t _Return_Selected_Item;
static char* _Title;
static uint32_t _Title_Length;
static int32_t* _Value;
static int32_t _Display_Value;
static const Menu_Configuration_Select_Value* _Config;
static bool _Decision_Made;
@@ -54,7 +55,10 @@ static void Screen_On_Object_Deselect (Object_ID object_id);
*******************************************************************/
void Screen_Setup_Select_Value(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, char* title, uint32_t title_length, int32_t* value, const Menu_Configuration_Select_Value* config, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
{
_Title = title;
_Title_Length = title_length;
_Value = value;
_Display_Value = *value * config->Value_Display_Ratio;
_Config = config;
Screen_Init(direction_out, direction_in, type, frame_duration);
@@ -87,13 +91,13 @@ void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Di
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Display_Objects_Add_Select_Value(_Title, _Title_Length, _Value, _Config->Max, _Config->Min, _Config->Format, &_Configuration_Default_Select_Value);
Display_Objects_Add_Select_Value(_Title, _Title_Length, &_Display_Value, _Config->Max, _Config->Min, (char*)_Config->Format, &_Configuration_Default_Select_Value);
_Object_Message_Box = Display_Objects_Add_Message_Box(CENTER_MIDDLE, BOTH_IN_PERCENT, 50, 50, "Saved", MESSAGE_BOX_ICON_CIRCLE_CHECKMARK, &_Message_Box_Style_Regular);
Display_Select_Object();
UI_Control_Acceleration_Reset();
UI_Control_Acceleration_Set_Enabled(true);
UI_Control_Acceleration_Set_Enabled(_Config->Use_Acceleration);
}
void Screen_Tick(void)
@@ -123,7 +127,9 @@ void Screen_Action_CW(Object_ID object_id)
return;
}
UI_Control_Selector_Inc(_Value, _Config->Min, _Config->Max, true);
UI_Control_Selector_Inc(_Value, _Config->Min, _Config->Max, _Config->Cycle_Selector);
_Display_Value = *_Value * _Config->Value_Display_Ratio;
}
void Screen_Action_CCW(Object_ID object_id)
@@ -132,7 +138,9 @@ void Screen_Action_CCW(Object_ID object_id)
return;
}
UI_Control_Selector_Dec(_Value, _Config->Min, _Config->Max, true);
UI_Control_Selector_Dec(_Value, _Config->Min, _Config->Max, _Config->Cycle_Selector);
_Display_Value = *_Value * _Config->Value_Display_Ratio;
}
void Screen_On_Object_Focused(Object_ID object_id)

View File

@@ -59,6 +59,9 @@ static Configuration_Menu_Icon_Row _Configuration_Menu_Icon_Row = {
static int32_t _Selected_Item;
extern const Hierarchical_Menu _Hierarchical_Menu_MIDI;
extern const Hierarchical_Menu _Hierarchical_Menu_Jam;
extern const Hierarchical_Menu _Hierarchical_Menu_Const_Light;
extern const Hierarchical_Menu _Hierarchical_Menu_Device;
// ============================================================================================
@@ -165,12 +168,11 @@ void Screen_On_Object_Deselect(Object_ID object_id)
{
switch (_Selected_Item)
{
// case 0: Screen_Setup_Settings_MIDI(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, 0); break;
case 0: Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, &_Hierarchical_Menu_MIDI, _Hierarchical_Menu_MIDI.List , 0); break;
case 1: break;
case 2: break;
case 3: break;
case 4: break;
case 1: Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, &_Hierarchical_Menu_Jam, _Hierarchical_Menu_Jam.List , 0); break;
case 2: Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, &_Hierarchical_Menu_Const_Light, _Hierarchical_Menu_Const_Light.List , 0); break;
case 3: Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, &_Hierarchical_Menu_Device, _Hierarchical_Menu_Device.List , 0); break;
case 4: Screen_Setup_EEPROM_Code (TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES); break;
case 5: Screen_Setup_Settings_About (TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES); break;
case 6: Screen_Setup_Menu_Main (TRANSITION_DOWN, TRANSITION_DOWN, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, false, 1); break;
}

View File

@@ -244,14 +244,99 @@ void Handle_Item_Selection(void)
switch(Selected_Item->Type)
{
case BOOL:
Screen_Setup_Select_Bool(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, (char*)Selected_Item->Variable_Title, strlen(Selected_Item->Variable_Title), (uint8_t*)Selected_Item->Variable, _Menu, Selected_Item->Containing_List, _Selected_Item);
Screen_Setup_Select_Bool(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
(char*)Selected_Item->Variable_Title,
strlen(Selected_Item->Variable_Title),
(uint8_t*)Selected_Item->Variable,
_Menu,
Selected_Item->Containing_List,
_Selected_Item
);
break;
case RGB:
Screen_Setup_Select_RGB(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, (char*)Selected_Item->Variable_Title, strlen(Selected_Item->Variable_Title), (LED_Data_t*)Selected_Item->Variable, _Menu, Selected_Item->Containing_List, _Selected_Item);
Screen_Setup_Select_RGB(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
(char*)Selected_Item->Variable_Title,
strlen(Selected_Item->Variable_Title),
(LED_Data_t*)Selected_Item->Variable,
_Menu,
Selected_Item->Containing_List,
_Selected_Item
);
break;
case VALUE:
if(Selected_Item->Configuration == NULL) {
return;
}
Screen_Setup_Select_Value(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
(char*)Selected_Item->Variable_Title,
strlen(Selected_Item->Variable_Title),
(int32_t*)Selected_Item->Variable,
(const Menu_Configuration_Select_Value*)(Selected_Item->Configuration),
_Menu,
Selected_Item->Containing_List,
_Selected_Item
);
break;
case LIST:
if(Selected_Item->Configuration == NULL) {
return;
}
Screen_Setup_Select_List(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
(char*)Selected_Item->Variable_Title,
strlen(Selected_Item->Variable_Title),
(int32_t*)Selected_Item->Variable,
(const Menu_Configuration_Select_List*)(Selected_Item->Configuration),
_Menu,
Selected_Item->Containing_List,
_Selected_Item
);
break;
case DEFAULT_NOTES:
Screen_Setup_Default_Notes(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
(char*)Selected_Item->Variable_Title,
strlen(Selected_Item->Variable_Title),
_Menu,
Selected_Item->Containing_List,
_Selected_Item
);
break;
case REBOOT:
Screen_Setup_Settings_Reboot(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
_Menu,
Selected_Item->Containing_List,
_Selected_Item
);
break;
case HUE:
Screen_Setup_Select_Hue(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
(char*)Selected_Item->Variable_Title,
strlen(Selected_Item->Variable_Title),
(int32_t*)Selected_Item->Variable,
(const Menu_Configuration_Select_Value*)(Selected_Item->Configuration),
_Menu,
Selected_Item->Containing_List,
_Selected_Item
);
break;
case MINMAX:
Screen_Setup_Select_MinMax(TRANSITION_LEFT, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES,
(char*)Selected_Item->Variable_Title,
strlen(Selected_Item->Variable_Title),
(MinMax_t*)Selected_Item->Variable,
(const Menu_Configuration_Select_MinMax*)(Selected_Item->Configuration),
_Menu,
Selected_Item->Containing_List,
_Selected_Item
);
break;
case NONE:

View File

@@ -0,0 +1,206 @@
/*
* File: Screen_Settings_Reboot.c
*
* Created: Created: Tuesday September 2025 20:36:48
* Author: Chris
*/
// ============================================================================================
// Includes
#include "../Screens.h"
#include "../UI_Control.h"
#include "../Display.h"
#include "../Display_Objects.h"
#include "../Display_Render_Complex.h"
#include "../Display_Default_Configurations.h"
#include "hardware/watchdog.h"
// ============================================================================================
// Defines
#define COLOR_DOT_ACTIVE 0xFFFF // Pure White #FFFFFF
#define COLOR_DOT_INACTIVE 0x0842 // Dark Gray #404450
#define DOT_ANIMATION_SPEED 8
// ============================================================================================
// Variables
extern const uint8_t _Font_DejaVu_Sans_Mono_Bold_15x26[];
static Object_ID _Object_YesNo;
static Object_ID _Object_Text;
static Object_ID _Object_Dots[3];
static const Hierarchical_Menu* _Return_Menu = NULL;
static const Menu_List* _Return_List = NULL;
static int32_t _Return_Selected_Item;
static bool _Bool_Value;
static bool _Decision_Made;
static uint32_t _Counter;
static int32_t _Dot_Animation_Phase;
// ============================================================================================
// Function Declarations
void Screen_Setup_Settings_Reboot(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item);
static void Update_Dot_Animation(void);
static void Screen_Init (Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration);
static void Screen_Tick (void);
static void Screen_Click (uint button_return_value);
static void Screen_Touch_Event (int16_t x, int16_t y);
static void Screen_Action_CW (Object_ID object_id);
static void Screen_Action_CCW (Object_ID object_id);
static void Screen_On_Object_Focused (Object_ID object_id);
static void Screen_On_Object_Defocused (Object_ID object_id);
static void Screen_On_Object_Select (Object_ID object_id);
static void Screen_On_Object_Deselect (Object_ID object_id);
/*******************************************************************
Functions
*******************************************************************/
void Screen_Setup_Settings_Reboot(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration, const Hierarchical_Menu* return_menu, const Menu_List* return_list, int32_t return_selected_item)
{
_Bool_Value = false;
Screen_Init(direction_out, direction_in, type, frame_duration);
_Return_Menu = return_menu;
_Return_List = return_list;
_Return_Selected_Item = return_selected_item;
_Counter = 0;
_Dot_Animation_Phase = 0;
_Decision_Made = false;
}
void Screen_Init(Screen_Transition_Direction direction_out, Screen_Transition_Direction direction_in, Easing type, uint32_t frame_duration)
{
_Screen_Last = Screen_Init;
_Screen_Tick = Screen_Tick;
_Screen_Click = Screen_Click;
_Screen_Touch_Event = Screen_Touch_Event;
_Screen_Action_CW = Screen_Action_CW;
_Screen_Action_CCW = Screen_Action_CCW;
_Screen_On_Objects_Focused = Screen_On_Object_Focused;
_Screen_On_Objects_Defocused = Screen_On_Object_Defocused;
_Screen_On_Object_Select = Screen_On_Object_Select;
_Screen_On_Object_Deselect = Screen_On_Object_Deselect;
Display_Objects_Clear();
Display_Screen_Transition_Start(direction_out, direction_in, type, frame_duration);
//////////////////////////////
// Add Display Objects here //
//////////////////////////////
Font_ID Font_Text = Display_Objects_Add_Font(_Font_DejaVu_Sans_Mono_Bold_15x26, 0);
Display_Render_Complex_Select_YesNo_Set(_Bool_Value, &_Configuration_Default_Select_YesNo);
_Object_YesNo = Display_Objects_Add_Select_YesNo("Reboot Device", 13, &_Bool_Value, &_Configuration_Default_Select_YesNo);
_Object_Text = Display_Objects_Add_Text(CENTER_BOTTOM, BOTH_IN_PERCENT, 50, 50, NOT_SELECTABLE, "Rebooting", Font_Text, DISPLAY_COLOR_LIGHTGREY, NO_STYLE, NO_ANIMATION);
Display_Objects_Update_Enabled(_Object_Text, false);
for(int i = 0; i < 3; i++) {
_Object_Dots[i] = Display_Objects_Add_Circle_Frame(CENTER_MIDDLE, BOTH_IN_PERCENT, 50 + (i-1) * 6, 60, NOT_SELECTABLE, COLOR_DOT_INACTIVE, 4, 1, NO_STYLE, NO_ANIMATION);
Display_Objects_Update_Enabled(_Object_Dots[i], false);
}
Display_Select_Object();
}
void Screen_Tick(void)
{
if(_Decision_Made && _Bool_Value) {
Update_Dot_Animation();
}
}
void Screen_Click(uint button_return_value)
{
}
void Screen_Touch_Event(int16_t x, int16_t y)
{
}
void Screen_Action_CW(Object_ID object_id)
{
if(_Decision_Made) {
return;
}
_Bool_Value = !_Bool_Value;
}
void Screen_Action_CCW(Object_ID object_id)
{
Screen_Action_CW(object_id);
}
void Screen_On_Object_Focused(Object_ID object_id)
{
}
void Screen_On_Object_Defocused(Object_ID object_id)
{
}
void Screen_On_Object_Select(Object_ID object_id)
{
}
void Screen_On_Object_Deselect(Object_ID object_id)
{
if(!_Decision_Made) {
_Decision_Made = true;
if(_Bool_Value == false) {
Screen_Setup_Settings_Hierarchical_Menu(TRANSITION_DOWN, TRANSITION_RIGHT, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES, _Return_Menu, _Return_List, _Return_Selected_Item);
return;
}
Display_Objects_Update_Enabled(_Object_YesNo, false);
Display_Objects_Update_Enabled(_Object_Text, true);
for(int i = 0; i < 3; i++) {
Display_Objects_Update_Enabled(_Object_Dots[i], true);
}
watchdog_reboot(0, 0, 5000);
}
}
/*******************************************************************
Internal Functions
*******************************************************************/
void Update_Dot_Animation(void)
{
_Dot_Animation_Phase++;
if(_Dot_Animation_Phase >= (DOT_ANIMATION_SPEED * 3)) {
_Dot_Animation_Phase = 0;
}
// Determine which dot should be active
int Active_Dot = _Dot_Animation_Phase / DOT_ANIMATION_SPEED;
// Update dot colors
for(int i = 0; i < 3; i++) {
Display_Color Dot_Color = (i == Active_Dot) ? COLOR_DOT_ACTIVE : COLOR_DOT_INACTIVE;
Display_Objects_Update_Color(_Object_Dots[i], Dot_Color);
}
}

232
Firmware/Serial_Command.c Normal file
View File

@@ -0,0 +1,232 @@
/*
* File: Serial_Command.c
*
* Created: Created: Sunday October 2025 09:41:07
* Author: Chris
*/
#include "Serial_Command.h"
// ============================================================================================
// Includes
#include "Convert.h"
#include "USB_Serial.h"
#include "Mode_Manager.h"
#include "EEPROM_M24C64.h"
// ============================================================================================
// Variables
static struct {
uint8_t Data[30];
uint32_t Count;
} _Command_Buffer;
static uint32_t _Configuration_Write_Counter;
extern int32_t _Event_Received_Counter[NUM_LED_CHANNELS][NUM_LED_COLORS][2];
// ============================================================================================
// Function Declarations
void Serial_Command_Parse_Command();
void Serial_Command_Send_Configuration_Text(void);
void Serial_Command_Send_Configuration_Hex(void);
void Serial_Command_Return_Ping(void);
void Serial_Command_Write_Configuration_Byte(void);
void Serial_Command_Save_To_EEPROM(void);
/*******************************************************************
Functions
*******************************************************************/
void Serial_Command_Init()
{
_Command_Buffer.Count = 0;
_Configuration_Write_Counter = 0;
}
void Serial_Command_Check_For_Input()
{
while(USB_Serial_Available())
{
uint8_t USB_Data = USB_Serial_Get_Byte();
if(USB_Data == USB_SERIAL_TERMINATOR)
{
Serial_Command_Parse_Command();
}
else
{
_Command_Buffer.Data[_Command_Buffer.Count++] = USB_Data;
}
}
}
/*******************************************************************
Internal Functions
*******************************************************************/
void Serial_Command_Parse_Command(void)
{
uint32_t Index, ID, X, Y, Color;
switch (_Command_Buffer.Data[0])
{
case 'T': Serial_Command_Send_Configuration_Text(); break;
case 'X': Serial_Command_Send_Configuration_Hex(); break;
case 'P': Serial_Command_Return_Ping(); break;
case 'R': _Configuration_Write_Counter = 0; break;
case 'W': Serial_Command_Write_Configuration_Byte(); break;
// case 'S': Serial_Save_To_EEPROM(); break;
case 'd': Serial_Command_Send_Configuration_Text(); break;
case 'a':
for(Color=0;Color < NUM_LED_COLORS; Color++)
{
USB_Serial_Send_Int_Dec(_Event_Received_Counter[LED_Channel_1][Color][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF], 6);
USB_SERIAL_SEND_STRING(";");
USB_Serial_Send_Int_Dec(_Event_Received_Counter[LED_Channel_1][Color][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF], 6);
USB_SERIAL_SEND_TERMINATOR();
_Event_Received_Counter[LED_Channel_1][Color][MIDI_EVENT_NOTE_ON - MIDI_EVENT_NOTE_OFF] = 0;
_Event_Received_Counter[LED_Channel_1][Color][MIDI_EVENT_NOTE_OFF - MIDI_EVENT_NOTE_OFF] = 0;
}
break;
default:
USB_SERIAL_SEND_STRING("Unknown Command: ");
USB_Serial_Put_Char(_Command_Buffer.Data[0]);
USB_SERIAL_SEND_STRING(" (");
USB_Serial_Send_Int_Hex(_Command_Buffer.Data[0], 2, true);
USB_SERIAL_SEND_STRING(")");
USB_SERIAL_SEND_TERMINATOR();
break;
}
_Command_Buffer.Count = 0;
}
void Serial_Command_Send_Configuration_Text(void)
{
USB_SERIAL_SEND_STRING("Channel MIDI Configuration"); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" MIDI_Channel: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].MIDI_Channel, 2); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Octave: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Octave, 1); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Note Color Red: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Red, 2); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Note Color Green: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Green, 2); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Note Color Blue: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Color_Blue, 2); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Skip Note Off Event: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Skip_Note_Off_Event, 1); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Note Reset Enabled: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Enabled, 1); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Note Reset Timeout: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Channel_MIDI_Configuration[0].Note_Reset_Timeout, 3); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING("Pause Light Configuration"); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Enabled: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Enabled, 1); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Color: RGB(");
USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Color.R, 3); USB_SERIAL_SEND_STRING(", ");
USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Color.G, 3); USB_SERIAL_SEND_STRING(", ");
USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Color.B, 3); USB_SERIAL_SEND_STRING(")");
USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Timeout: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Timeout, 8); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Reset: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Reset_Condition, 1); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Fade Speed: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Pause_Light_Configuration[0].Fade_Speed, 3); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING("Jam Light Configuration"); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Duration Min: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Durations.Min, 5); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Duration Max: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Durations.Max, 5); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Hue Angle Start: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Hue_Angle_Start_Color, 3); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Color Change: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Color_Change, 3); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Fade Speed: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Jam_Light_Configuration.Fade_Speed, 3); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING("Const Light Configuration"); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Color: RGB(");
USB_Serial_Send_Int_Dec(_EEPROM_Content.Const_Light_Configuration.Color.R, 3); USB_SERIAL_SEND_STRING(", ");
USB_Serial_Send_Int_Dec(_EEPROM_Content.Const_Light_Configuration.Color.G, 3); USB_SERIAL_SEND_STRING(", ");
USB_Serial_Send_Int_Dec(_EEPROM_Content.Const_Light_Configuration.Color.B, 3); USB_SERIAL_SEND_STRING(")");
USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Fade Speed: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Const_Light_Configuration.Fade_Speed, 3); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING("Device Configuration"); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Idle Screen: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Idle_Screen, 1); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Screen Timeout: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Screen_Timeout, 8); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Rev. Scrolling: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling, 1); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Use Color Corr.: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Use_Color_Correction, 1); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING(" Current Threshold: "); USB_Serial_Send_Int_Dec(_EEPROM_Content.Device_Configuration.Current_Threshold, 8); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_TERMINATOR();
}
void Serial_Command_Send_Configuration_Hex(void)
{
for(int i=0;i<EEPROM_Get_Content_Size();i++)
{
USB_Serial_Send_Int_Hex(*(((uint8_t*)&_EEPROM_Content) + i), 2, false);
}
USB_SERIAL_SEND_TERMINATOR();
}
void Serial_Command_Return_Ping(void)
{
if(_Command_Buffer.Count == 2) {
USB_Serial_Put_Char(_Command_Buffer.Data[1]);
USB_SERIAL_SEND_TERMINATOR();
}
}
void Serial_Command_Write_Configuration_Byte(void)
{
if(_Command_Buffer.Count != 3) {
USB_Serial_Put_Char(SERIAL_NACK);
USB_SERIAL_SEND_TERMINATOR();
return;
}
if(_Configuration_Write_Counter >= EEPROM_Get_Content_Size()) {
USB_Serial_Put_Char(SERIAL_NACK);
USB_SERIAL_SEND_TERMINATOR();
return;
}
uint8_t Configuration_Data_Byte = (uint8_t)Convert_CharArray_To_Number(&_Command_Buffer.Data[1], 2);
*(((uint8_t*)&_EEPROM_Content) + _Configuration_Write_Counter) = Configuration_Data_Byte;
_Configuration_Write_Counter++;
USB_Serial_Put_Char(SERIAL_ACK);
USB_SERIAL_SEND_TERMINATOR();
}
void Serial_Command_Save_To_EEPROM(void)
{
EEPROM_Trigger_Update();
USB_Serial_Put_Char(SERIAL_ACK);
USB_SERIAL_SEND_TERMINATOR();
}
void Display_Start_Buffer_Readout(void)
{
// cancel_repeating_timer(&_Timer);
// // Send header
// USB_SERIAL_SEND_STRING("IMGBUF");
// USB_Serial_Send_Int_Dec(DISPLAY_WIDTH, 4);
// USB_Serial_Put_Char(',');
// USB_Serial_Send_Int_Dec(DISPLAY_HEIGHT, 4);
// USB_Serial_Put_Char(',');
// USB_Serial_Send_Int_Dec(16, 2);
// USB_SERIAL_SEND_TERMINATOR();
// uint32_t Pixel_Count = DISPLAY_WIDTH * DISPLAY_HEIGHT;
// for(uint32_t i = 0; i < Pixel_Count; i++)
// {
// Display_Color Pixel = Display_Get_Pixel(i);
// USB_Serial_Send_Int_Hex(Pixel, 4, false);
// }
// sleep_ms(100);
// USB_SERIAL_SEND_TERMINATOR();
// add_repeating_timer_ms(40, ISR_Repeating_Timer, NULL, &_Timer);
}

30
Firmware/Serial_Command.h Normal file
View File

@@ -0,0 +1,30 @@
/*
* File: Serial_Command.h
* Created: Created: Sunday October 2025 09:41:12
* Author: Chris
*/
#ifndef SERIAL_COMMAND_H
#define SERIAL_COMMAND_H
// ============================================================================================
// Includes
// ============================================================================================
// Defines
#define SERIAL_ACK 'O'
#define SERIAL_NACK 'N'
// ============================================================================================
// Datatypes
// ============================================================================================
// Function Declarations
void Serial_Command_Init();
void Serial_Command_Check_For_Input();
#endif // SERIAL_COMMAND_H

View File

@@ -6,6 +6,8 @@
*/
#include "UI_Control.h"
#include "EEPROM_M24C64.h"
#include <string.h>
@@ -83,8 +85,7 @@ void UI_Control_Selector_Inc(int32_t* selector, int32_t minimum, int32_t maximum
// Apply increment with bounds checking
for (uint8_t i = 0; i < Increment; i++)
{
// if(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling == 0) {
if(true) {
if(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling == 0) {
SELECTOR_INC(selector, _Acceleration_Instance.config->Base_Step, minimum, maximum, circle_around);
} else {
SELECTOR_DEC(selector, _Acceleration_Instance.config->Base_Step, minimum, maximum, circle_around);
@@ -106,8 +107,7 @@ void UI_Control_Selector_Dec(int32_t* selector, int32_t minimum, int32_t maximum
// Apply decrement with bounds checking
for (uint8_t i = 0; i < Decrement; i++)
{
// if(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling == 0) {
if(true) {
if(_EEPROM_Content.Device_Configuration.Reverse_List_Scrolling == 0) {
SELECTOR_DEC(selector, _Acceleration_Instance.config->Base_Step, minimum, maximum, circle_around);
} else {
SELECTOR_INC(selector, _Acceleration_Instance.config->Base_Step, minimum, maximum, circle_around);

View File

@@ -1 +1 @@
426
840

View File

@@ -22,15 +22,17 @@
#include "INA260.h"
#include "Switch.h"
#include "Screens.h"
#include "EEPROM_M24C64.h"
#include "Rotary_Encoder.h"
#include "Display.h"
#include "Display_SPI.h"
#include "Display_Image.h"
#include "Screens.h"
#include "Display_Default_Configurations.h"
#include "USB_Serial.h"
#include "Serial_Command.h"
// ============================================================================================
@@ -64,11 +66,20 @@ extern uint16_t _Image_Power_Critical_32x32[];
extern uint16_t _Image_Power_Overvoltage_32x32[];
extern uint16_t _Image_Power_Undervoltage_32x32[];
extern uint16_t _Image_Power_Unplugged_32x32[];
extern uint16_t _Image_Overcurrent_32x32[];
static uint32_t _Idle_Counter;
// ============================================================================================
// Function Declarations
void Check_For_Serial_Input(void);
void Parse_Command(void);
void Serial_Send_Configuration_Text(void);
void Serial_Send_Configuration_Hex(void);
void Serial_Return_Ping(void);
void Serial_Write_Configuration_Byte(void);
void Serial_Save_To_EEPROM(void);
void Display_Start_Buffer_Readout(void);
@@ -97,6 +108,9 @@ int main(void)
TRIGGER_CONFIG;
TRIGGER_OFF;
// Serial Command =============================================
Serial_Command_Init();
// USB Serial =================================================
USB_Serial_Init();
@@ -120,8 +134,8 @@ int main(void)
// Display =================================================
Display_Init(DISPLAY_COLOR_BLACK, true, false);
// Screen_Setup_Loading();
Screen_Setup_Menu_Main(TRANSITION_NONE, TRANSITION_NONE, LINEAR, 0, false, 3);
Screen_Setup_Loading();
// Screen_Setup_Menu_Main(TRANSITION_NONE, TRANSITION_NONE, LINEAR, 0, false, 3);
// Rotary Encoder =============================================
Rotary_Encoder_Init();
@@ -135,6 +149,7 @@ int main(void)
// Repeating Timer =============================================
add_repeating_timer_ms(40, ISR_Repeating_Timer, NULL, &_Timer);
_Idle_Counter = 0;
while (1)
{
@@ -150,9 +165,29 @@ int main(void)
UI_Control_Acceleration_Update(CURRENT_TIME_ms);
INA260_Update_Current_Threshold();
INA260_Read_BusVoltage();
INA260_Read_Current();
Command_Issue_Set_Request(MULTICORE_COMMAND_SET_INA260_BUSVOLTAGE, 0, INA260_Get_BusVoltage_mV());
if(_EEPROM_Content.Device_Configuration.Screen_Timeout > 0)
{
if(_Idle_Counter >= _EEPROM_Content.Device_Configuration.Screen_Timeout * (1000 / 40))
{
if(_Screen_Idle_Active != true)
{
Screen_Setup_Idle(TRANSITION_UP, TRANSITION_UP, SCREEN_TRANSITION_DEFAULT_EASING, SCREEN_TRANSITION_DEFAULT_FRAMES);
}
}
else if(_Screen_Idle_Counter_Disable == false)
{
_Idle_Counter++;
}
else if(_Screen_Idle_Counter_Disable == true)
{
_Idle_Counter = 0;
}
}
}
// Add functions here to execute during the DMA Transfer
@@ -164,6 +199,9 @@ int main(void)
if(Display_Send_Buffer_Completed())
{
TRIGGER_ON;
Mode_Manager_Tick();
EEPROM_Tick();
Command_Issue_Get_Request(MULTICORE_COMMAND_GET_LED_POWER_ERROR, 0);
Display_Render_Objects();
LED_Power_Error Error = Command_Get_Request_Response_By_Command_Only(MULTICORE_COMMAND_GET_LED_POWER_ERROR, 100);
@@ -176,6 +214,7 @@ int main(void)
case BUS_UNDERVOLTAGE: Image = _Image_Power_Undervoltage_32x32; break;
case BUS_OVERVOLTAGE: Image = _Image_Power_Overvoltage_32x32; break;
case BUS_VOLTAGE_MEASUREMENT: Image = _Image_Power_Critical_32x32; break;
case OVERCURRENT: Image = _Image_Overcurrent_32x32; break;
}
if(Image != NULL && Display_Screen_Transition_Ongoing() == false) {
@@ -185,84 +224,31 @@ int main(void)
}
else
{
Check_For_Serial_Input();
Serial_Command_Check_For_Input();
if(Rotary_Encoder_Rotation_CW_Occurred()) {
_Idle_Counter = 0;
Display_Action_CW();
}
if(Rotary_Encoder_Rotation_CCW_Occurred()) {
_Idle_Counter = 0;
Display_Action_CCW();
}
if(Rotary_Encoder_Switch_Press_Occurred()) {
_Idle_Counter = 0;
Display_Action_SW();
}
if(Switch_Press_Occurred()) {
if(_Screen_Idle_Active == false) {
_Idle_Counter = 0;
}
Mode_Manager_Cycle_Mode();
}
}
}
}
void Check_For_Serial_Input(void)
{
int Analog_Data = -1;
int i;
while(USB_Serial_Available())
{
uint8_t USB_Data = USB_Serial_Get_Byte();
switch(USB_Data)
{
case 'a':
USB_SERIAL_SEND_STRING("SPI Baudrate: ");
USB_Serial_Send_Int_Dec(Display_SPI_Get_Baudrate(), 10);
USB_SERIAL_SEND_TERMINATOR();
break;
case 'b': // New command for buffer readout
Display_Start_Buffer_Readout();
break;
case 'c':
Command_Issue_Get_Request(MULTICORE_COMMAND_GET_ANALOG_VOLTAGE, 0);
Analog_Data = Command_Get_Request_Response_By_Command_Only(MULTICORE_COMMAND_GET_ANALOG_VOLTAGE, 100);
USB_SERIAL_SEND_STRING("Analog: "); USB_Serial_Send_Int_Dec(Analog_Data, 5); USB_SERIAL_SEND_STRING("mV"); USB_SERIAL_SEND_TERMINATOR();
USB_SERIAL_SEND_STRING("INA260: "); USB_Serial_Send_Int_Dec(INA260_Get_BusVoltage_mV(), 5); USB_SERIAL_SEND_STRING("mV"); USB_SERIAL_SEND_TERMINATOR();
break;
default:
USB_SERIAL_SEND_STRING("Unknown Command: ");
USB_Serial_Put_Char(USB_Data);
USB_SERIAL_SEND_STRING(" (");
USB_Serial_Send_Int_Hex(USB_Data, 2, true);
USB_SERIAL_SEND_STRING(")");
USB_SERIAL_SEND_TERMINATOR();
break;
}
}
}
void Display_Start_Buffer_Readout(void)
{
cancel_repeating_timer(&_Timer);
// Send header
USB_SERIAL_SEND_STRING("IMGBUF");
USB_Serial_Send_Int_Dec(DISPLAY_WIDTH, 4);
USB_Serial_Put_Char(',');
USB_Serial_Send_Int_Dec(DISPLAY_HEIGHT, 4);
USB_Serial_Put_Char(',');
USB_Serial_Send_Int_Dec(16, 2);
USB_SERIAL_SEND_TERMINATOR();
uint32_t Pixel_Count = DISPLAY_WIDTH * DISPLAY_HEIGHT;
for(uint32_t i = 0; i < Pixel_Count; i++)
{
Display_Color Pixel = Display_Get_Pixel(i);
USB_Serial_Send_Int_Hex(Pixel, 4, false);
}
sleep_ms(100);
USB_SERIAL_SEND_TERMINATOR();
add_repeating_timer_ms(40, ISR_Repeating_Timer, NULL, &_Timer);
}

View File

@@ -0,0 +1,452 @@
#!/usr/bin/env python3
"""
MIDI Test Validator
Compares MIDI events from USB MIDI device with firmware event counters
"""
import serial
import time
import rtmidi
import random
# Serial port configuration - adjust COM port as needed
FIRMWARE_PORT = "COM9" # Firmware USB serial port
BAUD_RATE = 115200
# MIDI device name to look for
MIDI_DEVICE_NAME = "Midilink" # Will search for devices containing this string
# MIDI Octave to filter (0-10, or None for all octaves)
MIDI_OCTAVE = 1 # Only count notes in octave 4 (middle C is C4)
# MIDI Channel (0-15, where 0 = channel 1)
MIDI_CHANNEL = 0
# Test data generation settings
TEST_NUM_EVENTS = 200000 # Total number of Note ON events to generate
TEST_MIN_DELAY_MS = 5 # Minimum delay between events (ms)
TEST_MAX_DELAY_MS = 30 # Maximum delay between events (ms)
TEST_MAX_OVERLAPPING = 300 # Maximum number of overlapping notes
# Debug output
DEBUG_ENABLED = False # Set to False to disable debug output
# MIDI definitions
MIDI_NOTE_ON = 0x90
MIDI_NOTE_OFF = 0x80
class MidiEventCounter:
def __init__(self):
self.red_on = 0
self.red_off = 0
self.green_on = 0
self.green_off = 0
self.blue_on = 0
self.blue_off = 0
def add_event(self, note, velocity, is_note_on, debug=False):
# Calculate octave (MIDI note 0-127, octave = note // 12, where C4 = MIDI note 60)
# MIDI octaves: C-1=0-11, C0=12-23, C1=24-35, C2=36-47, C3=48-59, C4=60-71, etc.
octave = note // 12 - 1 # Adjust so C4 = octave 4
note_in_octave = note % 12
if debug:
note_names = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
note_name = f"{note_names[note_in_octave]}{octave}"
print(f"[DEBUG] Note {note} = {note_name} (Octave: {octave}, Note in octave: {note_in_octave})")
# Check if octave matches (if MIDI_OCTAVE is set)
if MIDI_OCTAVE is not None and octave != MIDI_OCTAVE:
if debug:
print(f"[DEBUG] -> Ignoring: Wrong octave (expected {MIDI_OCTAVE}, got {octave})")
return
# Determine color based on note (adjust to your config)
# Assuming C=Red, D=Green, E=Blue
color_mapped = None
if note_in_octave in [0, 1]: # C, C# = Red
if is_note_on:
self.red_on += 1
else:
self.red_off += 1
color_mapped = "RED"
elif note_in_octave in [2, 3]: # D, D# = Green
if is_note_on:
self.green_on += 1
else:
self.green_off += 1
color_mapped = "GREEN"
elif note_in_octave in [4, 5]: # E, F = Blue
if is_note_on:
self.blue_on += 1
else:
self.blue_off += 1
color_mapped = "BLUE"
else:
color_mapped = "NONE (ignored)"
if debug:
event_type = "ON " if is_note_on else "OFF"
print(f"[DEBUG] Mapped Note {note} -> {color_mapped} {event_type}")
def print_summary(self):
print("\nMIDI Device Event Counts:")
print(f" Red - ON: {self.red_on:6d}, OFF: {self.red_off:6d}")
print(f" Green - ON: {self.green_on:6d}, OFF: {self.green_off:6d}")
print(f" Blue - ON: {self.blue_on:6d}, OFF: {self.blue_off:6d}")
def midi_callback(message, data):
"""Callback for MIDI input - called when MIDI messages are received"""
event_counter = data
midi_message = message[0]
if len(midi_message) >= 3:
status = midi_message[0]
note = midi_message[1]
velocity = midi_message[2]
# Check for Note On or Note Off
if (status & 0xF0) == MIDI_NOTE_ON or (status & 0xF0) == MIDI_NOTE_OFF:
channel = status & 0x0F
is_note_on = ((status & 0xF0) == MIDI_NOTE_ON and velocity > 0)
event_type = "Note ON" if is_note_on else "Note OFF"
if DEBUG_ENABLED:
print(f"[MIDI] {event_type}, Channel: {channel}, Note: {note}, Velocity: {velocity}")
event_counter.add_event(note, velocity, is_note_on, debug=DEBUG_ENABLED)
def find_midi_device(device_name):
"""Find MIDI input device by name"""
midiin = rtmidi.MidiIn()
ports = midiin.get_ports()
print(f"\nAvailable MIDI Input devices:")
for i, port in enumerate(ports):
print(f" [{i}] {port}")
# Search for device containing the name
for i, port in enumerate(ports):
if device_name.lower() in port.lower():
print(f"\n✓ Found '{device_name}' input at port {i}: {port}")
return i
print(f"\n✗ Could not find MIDI input device containing '{device_name}'")
return None
def find_midi_output_device(device_name):
"""Find MIDI output device by name"""
midiout = rtmidi.MidiOut()
ports = midiout.get_ports()
print(f"\nAvailable MIDI Output devices:")
for i, port in enumerate(ports):
print(f" [{i}] {port}")
# Search for device containing the name
for i, port in enumerate(ports):
if device_name.lower() in port.lower():
print(f"\n✓ Found '{device_name}' output at port {i}: {port}")
return i
print(f"\n✗ Could not find MIDI output device containing '{device_name}'")
return None
def generate_test_data(midiout):
"""Generate random MIDI test data with overlapping notes"""
# Notes to use: C, C#, D, D#, E, F (Red, Green, Blue colors with alternates)
# Calculate MIDI note numbers for the configured octave
base_note = (MIDI_OCTAVE + 1) * 12 # Base note for the octave
notes = {
'C': base_note + 0, # Red
'C#': base_note + 1, # Red alternate
'D': base_note + 2, # Green
'D#': base_note + 3, # Green alternate
'E': base_note + 4, # Blue
'F': base_note + 5 # Blue alternate
}
note_names = list(notes.keys())
note_values = list(notes.values())
print(f"\nGenerating {TEST_NUM_EVENTS} random MIDI events...")
print(f"Octave: {MIDI_OCTAVE}, Channel: {MIDI_CHANNEL + 1}")
print(f"Using notes: {', '.join([f'{name}({notes[name]})' for name in note_names])}")
print("="*50 + "\n")
active_notes = [] # Track currently active (on but not yet off) notes
event_queue = [] # Queue of all events to send
# Generate NOTE ON events
for i in range(TEST_NUM_EVENTS):
note_idx = random.randint(0, len(note_values) - 1)
note = note_values[note_idx]
velocity = random.randint(64, 127) # Random velocity
event_queue.append({
'type': 'on',
'note': note,
'note_name': note_names[note_idx],
'velocity': velocity
})
active_notes.append(note)
# Randomly send some NOTE OFF events if we have overlapping notes
while len(active_notes) >= TEST_MAX_OVERLAPPING:
off_note = active_notes.pop(0)
off_note_name = note_names[note_values.index(off_note)]
event_queue.append({
'type': 'off',
'note': off_note,
'note_name': off_note_name,
'velocity': 0
})
# Random chance to send an OFF event even if under max
if len(active_notes) > 0 and random.random() < 0.4:
off_note = active_notes.pop(random.randint(0, len(active_notes) - 1))
off_note_name = note_names[note_values.index(off_note)]
event_queue.append({
'type': 'off',
'note': off_note,
'note_name': off_note_name,
'velocity': 0
})
# Send remaining NOTE OFF events
while len(active_notes) > 0:
off_note = active_notes.pop(0)
off_note_name = note_names[note_values.index(off_note)]
event_queue.append({
'type': 'off',
'note': off_note,
'note_name': off_note_name,
'velocity': 0
})
# Send all events with random delays
total_events = len(event_queue)
for idx, event in enumerate(event_queue):
if event['type'] == 'on':
message = [MIDI_NOTE_ON | MIDI_CHANNEL, event['note'], event['velocity']]
if DEBUG_ENABLED:
print(f"→ Note ON: {event['note_name']:3s} (MIDI {event['note']:3d}), Velocity: {event['velocity']:3d}")
else:
message = [MIDI_NOTE_OFF | MIDI_CHANNEL, event['note'], event['velocity']]
if DEBUG_ENABLED:
print(f"← Note OFF: {event['note_name']:3s} (MIDI {event['note']:3d})")
midiout.send_message(message)
# Show progress bar (only if debug is disabled to avoid cluttering output)
if not DEBUG_ENABLED:
progress = (idx + 1) / total_events
bar_length = 40
filled_length = int(bar_length * progress)
bar = '' * filled_length + '' * (bar_length - filled_length)
print(f'\rProgress: [{bar}] {idx + 1}/{total_events} events ({progress*100:.1f}%)', end='', flush=True)
# Random delay before next event
delay_ms = random.randint(TEST_MIN_DELAY_MS, TEST_MAX_DELAY_MS)
time.sleep(delay_ms / 1000.0)
if not DEBUG_ENABLED:
print() # New line after progress bar
print("\n" + "="*50)
print("✓ Test data generation complete")
print("="*50)
def read_firmware_counters(ser_fw):
"""Send 'a' command and read firmware event counters"""
# Clear input buffer
ser_fw.reset_input_buffer()
# Send command
ser_fw.write(b'a\r')
time.sleep(0.2)
# Read all available data
response = ser_fw.read(ser_fw.in_waiting).decode('ascii')
# Split by \r to get individual lines
lines = response.split('\r')
counters = {}
colors = ['red', 'green', 'blue']
line_idx = 0
for color in colors:
if line_idx < len(lines):
line = lines[line_idx].strip()
if ';' in line:
parts = line.split(';')
on_count = int(parts[0].strip())
off_count = int(parts[1].strip())
counters[color] = {'on': on_count, 'off': off_count}
else:
print(f"Warning: Could not parse line for {color}: {line}")
counters[color] = {'on': 0, 'off': 0}
line_idx += 1
else:
print(f"Warning: No data for {color}")
counters[color] = {'on': 0, 'off': 0}
return counters
def compare_results(midi_counts, firmware_counts):
"""Compare MIDI device and firmware event counts"""
print("\nFirmware Event Counts:")
print(f" Red - ON: {firmware_counts['red']['on']:6d}, OFF: {firmware_counts['red']['off']:6d}")
print(f" Green - ON: {firmware_counts['green']['on']:6d}, OFF: {firmware_counts['green']['off']:6d}")
print(f" Blue - ON: {firmware_counts['blue']['on']:6d}, OFF: {firmware_counts['blue']['off']:6d}")
print("\n" + "="*50)
print("COMPARISON RESULTS:")
print("="*50)
all_match = True
# Compare Red
if midi_counts.red_on == firmware_counts['red']['on'] and \
midi_counts.red_off == firmware_counts['red']['off']:
print("Red: PASS ✓")
else:
print(f"Red: FAIL ✗ (MIDI: {midi_counts.red_on}/{midi_counts.red_off}, "
f"Firmware: {firmware_counts['red']['on']}/{firmware_counts['red']['off']})")
all_match = False
# Compare Green
if midi_counts.green_on == firmware_counts['green']['on'] and \
midi_counts.green_off == firmware_counts['green']['off']:
print("Green: PASS ✓")
else:
print(f"Green: FAIL ✗ (MIDI: {midi_counts.green_on}/{midi_counts.green_off}, "
f"Firmware: {firmware_counts['green']['on']}/{firmware_counts['green']['off']})")
all_match = False
# Compare Blue
if midi_counts.blue_on == firmware_counts['blue']['on'] and \
midi_counts.blue_off == firmware_counts['blue']['off']:
print("Blue: PASS ✓")
else:
print(f"Blue: FAIL ✗ (MIDI: {midi_counts.blue_on}/{midi_counts.blue_off}, "
f"Firmware: {firmware_counts['blue']['on']}/{firmware_counts['blue']['off']})")
all_match = False
print("="*50)
if all_match:
print("✓ ALL TESTS PASSED")
else:
print("✗ SOME TESTS FAILED")
return all_match
def main():
print("MIDI Test Validator")
print("="*50)
print("\nSelect mode:")
print(" 1. Manual mode (record MIDI events manually)")
print(" 2. Auto-test mode (send random test data)")
mode = input("\nEnter mode (1 or 2): ").strip()
auto_test = (mode == '2')
# Find and open MIDI input device
midi_in_port = find_midi_device(MIDI_DEVICE_NAME)
if midi_in_port is None:
print("\nPlease check:")
print(" 1. MIDI device is connected")
print(" 2. MIDI_DEVICE_NAME variable matches your device")
return
midiin = rtmidi.MidiIn()
event_counter = MidiEventCounter()
# Set callback and open input port
midiin.set_callback(midi_callback, data=event_counter)
midiin.open_port(midi_in_port)
print(f"✓ Opened MIDI input port")
# Find and open MIDI output device (for auto-test mode)
midiout = None
if auto_test:
midi_out_port = find_midi_output_device(MIDI_DEVICE_NAME)
if midi_out_port is None:
print("\nCould not find MIDI output device for auto-test mode")
midiin.close_port()
return
midiout = rtmidi.MidiOut()
midiout.open_port(midi_out_port)
print(f"✓ Opened MIDI output port")
# Open firmware serial port
try:
ser_firmware = serial.Serial(FIRMWARE_PORT, BAUD_RATE, timeout=1)
print(f"✓ Connected to firmware on {FIRMWARE_PORT}")
except serial.SerialException as e:
print(f"Error opening serial port: {e}")
midiin.close_port()
if midiout:
midiout.close_port()
return
# Clear firmware counters at startup
print("\nClearing firmware counters...")
read_firmware_counters(ser_firmware) # This reads and resets the counters
print("✓ Firmware counters cleared")
if MIDI_OCTAVE is not None:
print(f"\nConfiguration: Filtering for MIDI Octave {MIDI_OCTAVE} only")
else:
print(f"\nConfiguration: Accepting all MIDI octaves")
print(f"Debug output: {'ENABLED' if DEBUG_ENABLED else 'DISABLED'}")
if auto_test:
# Auto-test mode: send test data
print("\n" + "="*50)
print("AUTO-TEST MODE")
print("="*50)
time.sleep(0.5) # Small delay to ensure everything is ready
generate_test_data(midiout)
# Give some time for last events to be processed
time.sleep(0.5)
else:
# Manual mode: wait for user input
print("\n" + "="*50)
print("MANUAL MODE - Recording MIDI events...")
print("Press ENTER to stop recording and compare results")
print("="*50 + "\n")
try:
input() # Wait for user to press enter
except KeyboardInterrupt:
print("\n\nStopped by user (Ctrl+C)")
# Display results
event_counter.print_summary()
# Read firmware counters
print("\nReading firmware counters...")
firmware_counts = read_firmware_counters(ser_firmware)
# Compare results
compare_results(event_counter, firmware_counts)
# Close ports
midiin.close_port()
if midiout:
midiout.close_port()
ser_firmware.close()
print("\nPorts closed.")
if __name__ == "__main__":
main()