BIG update

This commit is contained in:
PoliEcho 2025-09-20 18:09:58 +02:00
parent a841de6bd1
commit 4e6396459a
23 changed files with 1641 additions and 1370 deletions

2
.gitignore vendored
View File

@ -8,3 +8,5 @@ relay/target
relay/.vscode relay/.vscode
sm.py sm.py
zones.csv zones.csv
alarm_sound.wav
alarm_sound.h

View File

@ -36,7 +36,11 @@ add_executable(smart_alarm smart_alarm.cpp
net_utils.cpp timezones.cpp net_utils.cpp timezones.cpp
display.cpp display.cpp
${GC9A01_SOURCES} ${GC9A01_SOURCES}
control.cpp) control.cpp
sound.cpp
ui.cpp
fonts/Font5x7FixedMono.c
)
pico_set_program_name(smart_alarm "smart_alarm") pico_set_program_name(smart_alarm "smart_alarm")
pico_set_program_version(smart_alarm "0.2") pico_set_program_version(smart_alarm "0.2")
@ -66,6 +70,7 @@ target_link_libraries(smart_alarm
hardware_rtc hardware_rtc
hardware_adc hardware_adc
hardware_pwm hardware_pwm
pico_multicore
) )
target_compile_definitions(smart_alarm PRIVATE target_compile_definitions(smart_alarm PRIVATE

111
GC9A01/VGA1_16x32.c Normal file
View File

@ -0,0 +1,111 @@
#include <stdint.h>
#include "gfxfont.h"
const uint8_t VGA1_16x32Bitmaps[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x7f, 0xfe, 0x7f, 0xfe, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x7f, 0xfe, 0x7f, 0xfe, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x0f, 0xf0, 0x0f, 0xf0, 0x39, 0x9c, 0x39, 0x9c, 0x71, 0x8e, 0x71, 0x8e, 0x71, 0x80, 0x71, 0x80, 0x39, 0x80, 0x39, 0x80, 0x0f, 0xf0, 0x0f, 0xf0, 0x01, 0x9c, 0x01, 0x9c, 0x01, 0x8e, 0x01, 0x8e, 0x71, 0x8e, 0x71, 0x8e, 0x39, 0x9c, 0x39, 0x9c, 0x0f, 0xf0, 0x0f, 0xf0, 0x01, 0x80, 0x01, 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, 0x1e, 0x1c, 0x1e, 0x1c, 0x1e, 0x38, 0x1e, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x3c, 0x0e, 0x3c, 0x1c, 0x3c, 0x1c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x07, 0xc0, 0x1c, 0x70, 0x1c, 0x70, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x70, 0x1c, 0x70, 0x07, 0xc0, 0x07, 0xc0, 0x0f, 0xce, 0x0f, 0xce, 0x38, 0xfc, 0x38, 0xfc, 0x70, 0x78, 0x70, 0x78, 0x70, 0x78, 0x70, 0x78, 0x38, 0xfc, 0x38, 0xfc, 0x0f, 0xce, 0x0f, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 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, 0x0e, 0x38, 0x0e, 0x38, 0x03, 0xe0, 0x03, 0xe0, 0x3f, 0xfe, 0x3f, 0xfe, 0x03, 0xe0, 0x03, 0xe0, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x3f, 0xfe, 0x3f, 0xfe, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 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, 0x3f, 0xfe, 0x3f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x07, 0xe0, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x3c, 0x38, 0x3c, 0x38, 0x7c, 0x38, 0x7c, 0x38, 0xdc, 0x38, 0xdc, 0x39, 0x9c, 0x39, 0x9c, 0x3b, 0x1c, 0x3b, 0x1c, 0x3e, 0x1c, 0x3e, 0x1c, 0x3c, 0x1c, 0x3c, 0x1c, 0x1c, 0x38, 0x1c, 0x38, 0x07, 0xe0, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x70, 0x01, 0xc0, 0x01, 0xc0, 0x07, 0x00, 0x07, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x01, 0xf0, 0x01, 0xf0, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x01, 0xf0, 0x03, 0xf0, 0x03, 0xf0, 0x07, 0x70, 0x07, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x38, 0x70, 0x38, 0x70, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x3f, 0xf8, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x0e, 0x1c, 0x0e, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 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, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x07, 0xe0, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x70, 0x0e, 0x70, 0x0e, 0x71, 0xfe, 0x71, 0xfe, 0x73, 0x8e, 0x73, 0x8e, 0x73, 0x8e, 0x73, 0x8e, 0x73, 0x8e, 0x73, 0x8e, 0x71, 0xfc, 0x71, 0xfc, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0f, 0xfc, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xfc, 0x3f, 0xfc, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xe0, 0x3f, 0xe0, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xe0, 0x3f, 0xe0, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x3e, 0x38, 0x3e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x3f, 0xfe, 0x3f, 0xfe, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x03, 0xe0, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0xe0, 0x1c, 0xe0, 0x1d, 0xc0, 0x1d, 0xc0, 0x1f, 0x80, 0x1f, 0x80, 0x1f, 0x80, 0x1f, 0x80, 0x1d, 0xc0, 0x1d, 0xc0, 0x1c, 0xe0, 0x1c, 0xe0, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1e, 0x78, 0x1e, 0x7c, 0x3e, 0x7c, 0x3e, 0x7e, 0x7e, 0x7e, 0x7e, 0x77, 0xee, 0x77, 0xee, 0x73, 0xce, 0x73, 0xce, 0x71, 0x8e, 0x71, 0x8e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x3c, 0x0e, 0x3c, 0x0e, 0x3e, 0x0e, 0x3e, 0x0e, 0x3f, 0x0e, 0x3f, 0x0e, 0x3b, 0x8e, 0x3b, 0x8e, 0x39, 0xce, 0x39, 0xce, 0x38, 0xee, 0x38, 0xee, 0x38, 0x7e, 0x38, 0x7e, 0x38, 0x3e, 0x38, 0x3e, 0x38, 0x1e, 0x38, 0x1e, 0x38, 0x0e, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0xee, 0x38, 0xee, 0x1c, 0x7c, 0x1c, 0x7c, 0x07, 0xf8, 0x07, 0xf8, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0xe0, 0x38, 0xe0, 0x38, 0x70, 0x38, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x71, 0x8e, 0x71, 0x8e, 0x73, 0xce, 0x73, 0xce, 0x77, 0xee, 0x77, 0xee, 0x3e, 0x7c, 0x3e, 0x7c, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x07, 0x70, 0x07, 0x70, 0x03, 0xe0, 0x03, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x0e, 0x00, 0x0e, 0x0f, 0xfe, 0x0f, 0xfe, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x0f, 0xfe, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x3f, 0xf8, 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x07, 0xfe, 0x07, 0xfe, 0x1c, 0x0e, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x0f, 0xfe, 0x0f, 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, 0x0f, 0xf8, 0x0f, 0xf8, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x3f, 0xfe, 0x3f, 0xfe, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0f, 0xfc, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x0f, 0xf0, 0x0f, 0xf0, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 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, 0x0f, 0xf8, 0x0f, 0xf8, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x0f, 0xfe, 0x0f, 0xfe, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x1f, 0xf8, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3b, 0xf8, 0x3b, 0xf8, 0x3c, 0x0e, 0x3c, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x0f, 0x80, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0xe0, 0x0e, 0xe0, 0x0f, 0xc0, 0x0f, 0xc0, 0x0e, 0xe0, 0x0e, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x78, 0x3e, 0x78, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x3f, 0xe0, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x07, 0xfe, 0x1c, 0x0e, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x0e, 0x1c, 0x0e, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x0f, 0xfc, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x1f, 0xf8, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x1f, 0xfc, 0x1f, 0xfc, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x0f, 0xfc, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x01, 0x80, 0x01, 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, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x39, 0xce, 0x39, 0xce, 0x3b, 0xee, 0x3b, 0xee, 0x1f, 0x7c, 0x1f, 0x7c, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x07, 0x70, 0x07, 0x70, 0x03, 0xe0, 0x03, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x70, 0x01, 0xc0, 0x01, 0xc0, 0x07, 0x00, 0x07, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x1e, 0x00, 0x1e, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x78, 0x00, 0x78, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x1f, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9e, 0x07, 0x9e, 0x3c, 0xf0, 0x3c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x07, 0x70, 0x07, 0x70, 0x1c, 0x1c, 0x1c, 0x1c, 0x70, 0x07, 0x70, 0x07, 0x70, 0x07, 0x70, 0x07, 0x7f, 0xff, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const GFXglyph VGA1_16x32Glyphs[] = {
{ 0, 16, 32, 0, 0, 0 } // 0x41 'A'
};
const GFXfont VGA1_16x32 = {
(uint8_t *)VGA1_16x32Bitmaps,
(GFXglyph *)VGA1_16x32Glyphs,
0x20, 0x7f, 42
};

View File

@ -1,111 +1,3 @@
#include <cstdint>
#include "gfxfont.h" #include "gfxfont.h"
const uint8_t VGA1_16x32Bitmaps[] = { #pragma once
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, extern const GFXfont VGA1_16x32;
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x7f, 0xfe, 0x7f, 0xfe, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x7f, 0xfe, 0x7f, 0xfe, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x0f, 0xf0, 0x0f, 0xf0, 0x39, 0x9c, 0x39, 0x9c, 0x71, 0x8e, 0x71, 0x8e, 0x71, 0x80, 0x71, 0x80, 0x39, 0x80, 0x39, 0x80, 0x0f, 0xf0, 0x0f, 0xf0, 0x01, 0x9c, 0x01, 0x9c, 0x01, 0x8e, 0x01, 0x8e, 0x71, 0x8e, 0x71, 0x8e, 0x39, 0x9c, 0x39, 0x9c, 0x0f, 0xf0, 0x0f, 0xf0, 0x01, 0x80, 0x01, 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, 0x1e, 0x1c, 0x1e, 0x1c, 0x1e, 0x38, 0x1e, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x3c, 0x0e, 0x3c, 0x1c, 0x3c, 0x1c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x07, 0xc0, 0x1c, 0x70, 0x1c, 0x70, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x70, 0x1c, 0x70, 0x07, 0xc0, 0x07, 0xc0, 0x0f, 0xce, 0x0f, 0xce, 0x38, 0xfc, 0x38, 0xfc, 0x70, 0x78, 0x70, 0x78, 0x70, 0x78, 0x70, 0x78, 0x38, 0xfc, 0x38, 0xfc, 0x0f, 0xce, 0x0f, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 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, 0x0e, 0x38, 0x0e, 0x38, 0x03, 0xe0, 0x03, 0xe0, 0x3f, 0xfe, 0x3f, 0xfe, 0x03, 0xe0, 0x03, 0xe0, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x3f, 0xfe, 0x3f, 0xfe, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 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, 0x3f, 0xfe, 0x3f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x07, 0xe0, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x3c, 0x38, 0x3c, 0x38, 0x7c, 0x38, 0x7c, 0x38, 0xdc, 0x38, 0xdc, 0x39, 0x9c, 0x39, 0x9c, 0x3b, 0x1c, 0x3b, 0x1c, 0x3e, 0x1c, 0x3e, 0x1c, 0x3c, 0x1c, 0x3c, 0x1c, 0x1c, 0x38, 0x1c, 0x38, 0x07, 0xe0, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x70, 0x01, 0xc0, 0x01, 0xc0, 0x07, 0x00, 0x07, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x01, 0xf0, 0x01, 0xf0, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x01, 0xf0, 0x03, 0xf0, 0x03, 0xf0, 0x07, 0x70, 0x07, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x70, 0x1c, 0x70, 0x38, 0x70, 0x38, 0x70, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf8, 0x3f, 0xf8, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x0e, 0x1c, 0x0e, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 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, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x07, 0xe0, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x70, 0x0e, 0x70, 0x0e, 0x71, 0xfe, 0x71, 0xfe, 0x73, 0x8e, 0x73, 0x8e, 0x73, 0x8e, 0x73, 0x8e, 0x73, 0x8e, 0x73, 0x8e, 0x71, 0xfc, 0x71, 0xfc, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0f, 0xfc, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xfc, 0x3f, 0xfc, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xe0, 0x3f, 0xe0, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xe0, 0x3f, 0xe0, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x3e, 0x38, 0x3e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x3f, 0xfe, 0x3f, 0xfe, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x03, 0xe0, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0xe0, 0x1c, 0xe0, 0x1d, 0xc0, 0x1d, 0xc0, 0x1f, 0x80, 0x1f, 0x80, 0x1f, 0x80, 0x1f, 0x80, 0x1d, 0xc0, 0x1d, 0xc0, 0x1c, 0xe0, 0x1c, 0xe0, 0x1c, 0x70, 0x1c, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x1c, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1e, 0x78, 0x1e, 0x7c, 0x3e, 0x7c, 0x3e, 0x7e, 0x7e, 0x7e, 0x7e, 0x77, 0xee, 0x77, 0xee, 0x73, 0xce, 0x73, 0xce, 0x71, 0x8e, 0x71, 0x8e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x3c, 0x0e, 0x3c, 0x0e, 0x3e, 0x0e, 0x3e, 0x0e, 0x3f, 0x0e, 0x3f, 0x0e, 0x3b, 0x8e, 0x3b, 0x8e, 0x39, 0xce, 0x39, 0xce, 0x38, 0xee, 0x38, 0xee, 0x38, 0x7e, 0x38, 0x7e, 0x38, 0x3e, 0x38, 0x3e, 0x38, 0x1e, 0x38, 0x1e, 0x38, 0x0e, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0xee, 0x38, 0xee, 0x1c, 0x7c, 0x1c, 0x7c, 0x07, 0xf8, 0x07, 0xf8, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0xe0, 0x38, 0xe0, 0x38, 0x70, 0x38, 0x70, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x71, 0x8e, 0x71, 0x8e, 0x73, 0xce, 0x73, 0xce, 0x77, 0xee, 0x77, 0xee, 0x3e, 0x7c, 0x3e, 0x7c, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x07, 0x70, 0x07, 0x70, 0x03, 0xe0, 0x03, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xe0, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x0e, 0x00, 0x0e, 0x0f, 0xfe, 0x0f, 0xfe, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x0f, 0xfe, 0x0f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x3f, 0xf8, 0x3f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x07, 0xfe, 0x07, 0xfe, 0x1c, 0x0e, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x0f, 0xfe, 0x0f, 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, 0x0f, 0xf8, 0x0f, 0xf8, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x3f, 0xfe, 0x3f, 0xfe, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0f, 0xfc, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x0f, 0xf0, 0x0f, 0xf0, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 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, 0x0f, 0xf8, 0x0f, 0xf8, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x0f, 0xfe, 0x0f, 0xfe, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x1f, 0xf8, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3b, 0xf8, 0x3b, 0xf8, 0x3c, 0x0e, 0x3c, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xe0, 0x00, 0xe0, 0x0f, 0x80, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0xe0, 0x0e, 0xe0, 0x0f, 0xc0, 0x0f, 0xc0, 0x0e, 0xe0, 0x0e, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x78, 0x3e, 0x78, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x39, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xe0, 0x3f, 0xe0, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1c, 0x1c, 0x1c, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xfe, 0x07, 0xfe, 0x1c, 0x0e, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x0e, 0x1c, 0x0e, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x0f, 0xfc, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x1f, 0xf8, 0x1f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x1f, 0xfc, 0x1f, 0xfc, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x0f, 0xfc, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x0e, 0x70, 0x0e, 0x38, 0x1c, 0x38, 0x1c, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x01, 0x80, 0x01, 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, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x38, 0x0e, 0x39, 0xce, 0x39, 0xce, 0x3b, 0xee, 0x3b, 0xee, 0x1f, 0x7c, 0x1f, 0x7c, 0x0e, 0x38, 0x0e, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0x1c, 0x38, 0x0e, 0x70, 0x0e, 0x70, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x0e, 0x38, 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x0e, 0x38, 0x0e, 0x38, 0x07, 0x70, 0x07, 0x70, 0x03, 0xe0, 0x03, 0xe0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x70, 0x00, 0x70, 0x01, 0xc0, 0x01, 0xc0, 0x07, 0x00, 0x07, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0xf8, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x1e, 0x00, 0x1e, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0xf8, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x1f, 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x00, 0x78, 0x00, 0x78, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x01, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x1f, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9e, 0x07, 0x9e, 0x3c, 0xf0, 0x3c, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x01, 0xc0, 0x07, 0x70, 0x07, 0x70, 0x1c, 0x1c, 0x1c, 0x1c, 0x70, 0x07, 0x70, 0x07, 0x70, 0x07, 0x70, 0x07, 0x7f, 0xff, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const GFXglyph VGA1_16x32Glyphs[] = {
{ 0, 16, 32, 0, 0, 0 } // 0x41 'A'
};
const GFXfont VGA1_16x32 = {
(uint8_t *)VGA1_16x32Bitmaps,
(GFXglyph *)VGA1_16x32Glyphs,
0x20, 0x7f, 42
};

View File

@ -1,108 +0,0 @@
const uint8_t VGA1b_16x32Bitmaps[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1c, 0x38, 0x1c, 0x38, 0x0c, 0x30, 0x0c, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x7f, 0xfe, 0x7f, 0xfe, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x7f, 0xfe, 0x7f, 0xfe, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x1e, 0x78, 0x1e, 0x78, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x07, 0xe0, 0x07, 0xe0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1e, 0x78, 0x1e, 0x78, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x78, 0x3c, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0x80, 0x07, 0x80, 0x0f, 0x00, 0x0f, 0x00, 0x1e, 0x3c, 0x1e, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xc0, 0x07, 0xc0, 0x1e, 0xf0, 0x1e, 0xf0, 0x3c, 0x78, 0x3c, 0x78, 0x1e, 0xf0, 0x1e, 0xf0, 0x07, 0xc0, 0x07, 0xc0, 0x0f, 0x9e, 0x0f, 0x9e, 0x3f, 0xfc, 0x3f, 0xfc, 0x78, 0xf8, 0x78, 0xf8, 0x78, 0x78, 0x78, 0x78, 0x3c, 0xfc, 0x3c, 0xfc, 0x0f, 0x9e, 0x0f, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0x80, 0x07, 0x80, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xc0, 0x03, 0xc0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x0f, 0xf0, 0x0f, 0xf0, 0x7f, 0xfe, 0x7f, 0xfe, 0x0f, 0xf0, 0x0f, 0xf0, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x7f, 0xfe, 0x7f, 0xfe, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, 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, 0x7f, 0xfe, 0x7f, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0x80, 0x07, 0x80, 0x0f, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x07, 0xe0, 0x1e, 0x78, 0x1e, 0x78, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x7c, 0x3c, 0x7c, 0x3c, 0xfc, 0x3c, 0xfc, 0x3d, 0xbc, 0x3d, 0xbc, 0x3f, 0x3c, 0x3f, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1e, 0x78, 0x1e, 0x78, 0x07, 0xe0, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0xc0, 0x0f, 0xc0, 0x3f, 0xc0, 0x3f, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x0f, 0xe0, 0x3c, 0x78, 0x3c, 0x78, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x3c, 0x03, 0xf0, 0x03, 0xf0, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x3c, 0x3c, 0x3c, 0x3c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0x01, 0xf0, 0x03, 0xf0, 0x03, 0xf0, 0x07, 0xf0, 0x07, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x1e, 0xf0, 0x1e, 0xf0, 0x3c, 0xf0, 0x3c, 0xf0, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x3f, 0xfe, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x3c, 0x3c, 0x3c, 0x3c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1e, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x07, 0xf0, 0x07, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0x80, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0x80, 0x07, 0x80, 0x0f, 0x00, 0x0f, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xc0, 0x03, 0xc0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xc0, 0x03, 0xc0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0x80, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x07, 0xe0, 0x1e, 0x78, 0x1e, 0x78, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x78, 0x00, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x0f, 0xfc, 0x3c, 0x1e, 0x3c, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x79, 0xfe, 0x79, 0xfe, 0x7b, 0x8e, 0x7b, 0x8e, 0x7b, 0x8e, 0x7b, 0x8e, 0x7b, 0x8e, 0x7b, 0x8e, 0x79, 0xfc, 0x79, 0xfc, 0x78, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x0f, 0xfc, 0x0f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0f, 0xf0, 0x0f, 0xf0, 0x1e, 0x78, 0x1e, 0x78, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3f, 0xfc, 0x3f, 0xfc, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x1f, 0xf0, 0x1f, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x7f, 0xf0, 0x7f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xfe, 0x1e, 0x0e, 0x1e, 0x0e, 0x1e, 0x06, 0x1e, 0x06, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x60, 0x1e, 0x60, 0x1f, 0xe0, 0x1f, 0xe0, 0x1e, 0x60, 0x1e, 0x60, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x06, 0x1e, 0x06, 0x1e, 0x0e, 0x1e, 0x0e, 0x7f, 0xfe, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xfe, 0x1e, 0x0e, 0x1e, 0x0e, 0x1e, 0x06, 0x1e, 0x06, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x60, 0x1e, 0x60, 0x1f, 0xe0, 0x1f, 0xe0, 0x1e, 0x60, 0x1e, 0x60, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x7f, 0x80, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x3e, 0x1e, 0x3e, 0x07, 0xf6, 0x07, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3f, 0xfe, 0x3f, 0xfe, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfe, 0x03, 0xfe, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x1f, 0xf0, 0x1f, 0xf0, 0x07, 0xc0, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x3c, 0x7e, 0x3c, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0xf0, 0x1e, 0xf0, 0x1f, 0xe0, 0x1f, 0xe0, 0x1f, 0xc0, 0x1f, 0xc0, 0x1f, 0xc0, 0x1f, 0xc0, 0x1f, 0xe0, 0x1f, 0xe0, 0x1e, 0xf0, 0x1e, 0xf0, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x3c, 0x1e, 0x3c, 0x7e, 0x1e, 0x7e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x80, 0x7f, 0x80, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x06, 0x1e, 0x06, 0x1e, 0x0e, 0x1e, 0x0e, 0x7f, 0xfe, 0x7f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1e, 0x78, 0x1e, 0x7c, 0x3e, 0x7c, 0x3e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7f, 0xfe, 0x7f, 0xfe, 0x7b, 0xde, 0x7b, 0xde, 0x79, 0x9e, 0x79, 0x9e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3e, 0x1e, 0x3e, 0x1e, 0x3f, 0x1e, 0x3f, 0x1e, 0x3f, 0x9e, 0x3f, 0x9e, 0x3d, 0xde, 0x3d, 0xde, 0x3c, 0xfe, 0x3c, 0xfe, 0x3c, 0x7e, 0x3c, 0x7e, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x1f, 0xf0, 0x1f, 0xf0, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x7f, 0x80, 0x7f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3d, 0xde, 0x3d, 0xde, 0x3c, 0xfe, 0x3c, 0xfe, 0x1e, 0x7c, 0x1e, 0x7c, 0x07, 0xf8, 0x07, 0xf8, 0x00, 0x1c, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf0, 0x7f, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x1f, 0xf0, 0x1f, 0xf0, 0x1f, 0xe0, 0x1f, 0xe0, 0x1e, 0xf0, 0x1e, 0xf0, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x3c, 0x1e, 0x3c, 0x7e, 0x1e, 0x7e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x3c, 0x3c, 0x3c, 0x3c, 0x78, 0x1e, 0x78, 0x1e, 0x3c, 0x00, 0x3c, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x3c, 0x00, 0x3c, 0x78, 0x1e, 0x78, 0x1e, 0x3c, 0x3c, 0x3c, 0x3c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xfe, 0x73, 0xce, 0x73, 0xce, 0x63, 0xc6, 0x63, 0xc6, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1e, 0x78, 0x1e, 0x78, 0x0f, 0xf0, 0x0f, 0xf0, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x79, 0x9e, 0x79, 0x9e, 0x7b, 0xde, 0x7b, 0xde, 0x7f, 0xfe, 0x7f, 0xfe, 0x3e, 0x7c, 0x3e, 0x7c, 0x1c, 0x38, 0x1c, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1e, 0x78, 0x1e, 0x78, 0x0f, 0xf0, 0x0f, 0xf0, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0f, 0xf0, 0x0f, 0xf0, 0x1e, 0x78, 0x1e, 0x78, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1e, 0x78, 0x1e, 0x78, 0x0f, 0xf0, 0x0f, 0xf0, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x38, 0x3c, 0x38, 0x3c, 0x30, 0x78, 0x30, 0x78, 0x00, 0xf0, 0x00, 0xf0, 0x01, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0x80, 0x07, 0x80, 0x0f, 0x00, 0x0f, 0x00, 0x1e, 0x0c, 0x1e, 0x0c, 0x3c, 0x1c, 0x3c, 0x1c, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xc0, 0x03, 0xc0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0f, 0xf0, 0x0f, 0xf0, 0x1e, 0x78, 0x1e, 0x78, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0x7f, 0xff, 0x00, 0x00, 0x00, 0x00,
0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x0f, 0xe0, 0x00, 0x78, 0x00, 0x78, 0x0f, 0xf8, 0x0f, 0xf8, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x0f, 0x9e, 0x0f, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x3c, 0xf8, 0x3c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x1e, 0x3c, 0x1e, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x01, 0xf8, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x07, 0xf8, 0x07, 0xf8, 0x1e, 0x78, 0x1e, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x0f, 0x9e, 0x0f, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3f, 0xfe, 0x3f, 0xfe, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x1e, 0x3c, 0x1e, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x03, 0xf0, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x0c, 0x0f, 0x0c, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x3f, 0xf0, 0x3f, 0xf0, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x3f, 0xc0, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x9e, 0x0f, 0x9e, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x78, 0x00, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x0f, 0xe0, 0x0f, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x78, 0x0f, 0x78, 0x0f, 0x9e, 0x0f, 0x9e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x3f, 0x1e, 0x3f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x03, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x1e, 0x78, 0x1e, 0x78, 0x07, 0xe0, 0x07, 0xe0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x78, 0x0f, 0x78, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0x78, 0x0f, 0x78, 0x0f, 0x3c, 0x0f, 0x3c, 0x3f, 0x1e, 0x3f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf0, 0x03, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0xfc, 0x03, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x7c, 0x7e, 0x7c, 0x7f, 0xfe, 0x7f, 0xfe, 0x7b, 0xde, 0x7b, 0xde, 0x7b, 0xde, 0x7b, 0xde, 0x7b, 0xde, 0x7b, 0xde, 0x7b, 0xde, 0x7b, 0xde, 0x7b, 0xde, 0x7b, 0xde, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xf8, 0x3c, 0xf8, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xf0, 0x07, 0xf0, 0x1e, 0x3c, 0x1e, 0x3c, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x3c, 0x1e, 0x3c, 0x07, 0xf0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0xf0, 0x3c, 0xf0, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x1e, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x3f, 0xc0, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x9e, 0x07, 0x9e, 0x1e, 0x78, 0x1e, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x07, 0xf8, 0x07, 0xf8, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0xfe, 0x00, 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, 0x3c, 0xf8, 0x3c, 0xf8, 0x0f, 0x9e, 0x0f, 0x9e, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x0f, 0x00, 0x3f, 0xc0, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x00, 0x3c, 0x00, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x1e, 0x00, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x0f, 0xf8, 0x0f, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x7f, 0xf8, 0x7f, 0xf8, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x9e, 0x07, 0x9e, 0x01, 0xf8, 0x01, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x3c, 0x78, 0x0f, 0x9e, 0x0f, 0x9e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x1e, 0x78, 0x1e, 0x78, 0x07, 0xe0, 0x07, 0xe0, 0x01, 0x80, 0x01, 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, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x78, 0x1e, 0x79, 0x9e, 0x79, 0x9e, 0x7b, 0xde, 0x7b, 0xde, 0x3f, 0xfc, 0x3f, 0xfc, 0x1e, 0x78, 0x1e, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x0e, 0x70, 0x0e, 0x70, 0x07, 0xe0, 0x07, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0xe0, 0x07, 0xe0, 0x0e, 0x70, 0x0e, 0x70, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x3c, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x07, 0xfe, 0x07, 0xfe, 0x00, 0x1e, 0x00, 0x1e, 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfc, 0x3f, 0xfc, 0x3c, 0x3c, 0x3c, 0x3c, 0x00, 0xf0, 0x00, 0xf0, 0x03, 0xc0, 0x03, 0xc0, 0x0f, 0x00, 0x0f, 0x00, 0x3c, 0x3c, 0x3c, 0x3c, 0x3f, 0xfc, 0x3f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0xfc, 0x01, 0xe0, 0x01, 0xe0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x3f, 0x80, 0x3f, 0x80, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x01, 0xe0, 0x01, 0xe0, 0x00, 0xfc, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x01, 0xfc, 0x01, 0xfc, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x03, 0xc0, 0x07, 0x80, 0x07, 0x80, 0x3f, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x9e, 0x0f, 0x9e, 0x3c, 0xf8, 0x3c, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0xc0, 0x03, 0xf0, 0x03, 0xf0, 0x0f, 0x3c, 0x0f, 0x3c, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3c, 0x0f, 0x3f, 0xff, 0x3f, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
const GFXglyph VGA1b_16x32Glyphs[] = {
{ 0, 16, 32, 0, 0, 0 } // 0x41 'A'
};
const GFXfont VGA1b_16x32 = {
(uint8_t *)VGA1b_16x32Bitmaps,
(GFXglyph *)VGA1b_16x32Glyphs,
0x20, 0x7f, 42
};

View File

@ -700,7 +700,7 @@ STATIC mp_obj_t gc9a01_GC9A01_pbitmap(size_t n_args, const mp_obj_t *args) {
} }
*/ */
void gc9a01_text(gc9a01_GC9A01_obj_t *self, GFXfont *font, char *str, uint16_t x0, uint16_t y0, uint16_t fg_color, uint16_t bg_color) { void gc9a01_text(gc9a01_GC9A01_obj_t *self,const GFXfont *font, char *str, uint16_t x0, uint16_t y0, uint16_t fg_color, uint16_t bg_color) {
// const uint8_t width = font->glyph->width; // const uint8_t width = font->glyph->width;
// const uint8_t height = font->glyph->height; // const uint8_t height = font->glyph->height;
const uint8_t width = 16; const uint8_t width = 16;
@ -758,7 +758,7 @@ void gc9a01_text(gc9a01_GC9A01_obj_t *self, GFXfont *font, char *str, uint16_t x
} }
} }
void gc9a01_text_gfx_transparent(gc9a01_GC9A01_obj_t *self, GFXfont *font, const char *str, uint16_t x0, uint16_t y0, uint16_t color) { void gc9a01_text_gfx_transparent(gc9a01_GC9A01_obj_t *self, const GFXfont *font, const char *str, uint16_t x0, uint16_t y0, uint16_t color) {
if (!str || !*str) return; if (!str || !*str) return;
// First pass: calculate string dimensions // First pass: calculate string dimensions
@ -867,7 +867,7 @@ void gc9a01_text_gfx_transparent(gc9a01_GC9A01_obj_t *self, GFXfont *font, const
} }
void gc9a01_text_gfx_buffered(gc9a01_GC9A01_obj_t *self, GFXfont *font, const char *str, uint16_t x0, uint16_t y0, uint16_t fg_color, uint16_t bg_color) { void gc9a01_text_gfx_buffered(gc9a01_GC9A01_obj_t *self, const GFXfont *font, const char *str, uint16_t x0, uint16_t y0, uint16_t fg_color, uint16_t bg_color) {
if (!str || !*str) return; if (!str || !*str) return;
// First pass: calculate string dimensions // First pass: calculate string dimensions

View File

@ -1,7 +1,7 @@
// https://raw.githubusercontent.com/russhughes/gc9a01_mpy/main/src/gc9a01.h // https://raw.githubusercontent.com/russhughes/gc9a01_mpy/main/src/gc9a01.h
#ifndef __GC9A01_H__ #ifndef GC9A01_H_
#define __GC9A01_H__ #define GC9A01_H_
#include <sys/types.h> #include <sys/types.h>
#ifdef __cplusplus #ifdef __cplusplus
@ -67,7 +67,7 @@ extern "C" {
#define WHITE 0xFFFF #define WHITE 0xFFFF
#endif /* __GC9A01_H__ */
#include "hardware/spi.h" #include "hardware/spi.h"
#include "gfxfont.h" #include "gfxfont.h"
@ -100,11 +100,13 @@ void gc9a01_fill_rect(gc9a01_GC9A01_obj_t *self, uint16_t x, uint16_t y, uint16_
void gc9a01_set_rotation(gc9a01_GC9A01_obj_t *self); void gc9a01_set_rotation(gc9a01_GC9A01_obj_t *self);
void gc9a01_hline(gc9a01_GC9A01_obj_t *self, uint16_t x, uint16_t y, uint16_t w, uint16_t color); void gc9a01_hline(gc9a01_GC9A01_obj_t *self, uint16_t x, uint16_t y, uint16_t w, uint16_t color);
void gc9a01_vline(gc9a01_GC9A01_obj_t *self, uint16_t x, uint16_t y, uint16_t w, uint16_t color); void gc9a01_vline(gc9a01_GC9A01_obj_t *self, uint16_t x, uint16_t y, uint16_t w, uint16_t color);
void gc9a01_text(gc9a01_GC9A01_obj_t *self, GFXfont *font, char *str, uint16_t x0, uint16_t y0, uint16_t fg_color, uint16_t bg_color); void gc9a01_text(gc9a01_GC9A01_obj_t *self, const GFXfont *font, char *str, uint16_t x0, uint16_t y0, uint16_t fg_color, uint16_t bg_color);
void gc9a01_text_gfx_transparent(gc9a01_GC9A01_obj_t *self, GFXfont *font, const char *str, uint16_t x0, uint16_t y0, uint16_t color); void gc9a01_text_gfx_transparent(gc9a01_GC9A01_obj_t *self, const GFXfont *font, const char *str, uint16_t x0, uint16_t y0, uint16_t color);
void gc9a01_text_gfx_buffered(gc9a01_GC9A01_obj_t *self, GFXfont *font, const char *str, uint16_t x0, uint16_t y0, uint16_t fg_color, uint16_t bg_color); void gc9a01_text_gfx_buffered(gc9a01_GC9A01_obj_t *self, const GFXfont *font, const char *str, uint16_t x0, uint16_t y0, uint16_t fg_color, uint16_t bg_color);
uint8_t gc9a01_get_color(uint8_t bpp); uint8_t gc9a01_get_color(uint8_t bpp);
uint16_t color565(uint8_t r, uint8_t g, uint8_t b); uint16_t color565(uint8_t r, uint8_t g, uint8_t b);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif /* __cplusplus */ #endif /* __cplusplus */
#endif /* __GC9A01_H__ */

View File

@ -3,12 +3,10 @@
#include "hardware/adc.h" #include "hardware/adc.h"
uint8_t get_knob_percentage() { uint8_t get_knob_percentage() {
adc_select_input(0); // Select ADC channel 0 adc_select_input(0); // Select ADC channel 0
uint16_t raw = adc_read(); uint16_t raw = adc_read();
// Convert to percentage (0 to 100%) // Convert to percentage (0 to 100%)
uint8_t percentage = (raw * 100) / 4095; return (raw * 100) / 4095;
return percentage;
} }

View File

@ -1,4 +1,7 @@
#include "display.h" #include "display.h"
#include <array>
#include "GC9A01/VGA1_16x32.h" #include "GC9A01/VGA1_16x32.h"
#include "gc9a01.h" #include "gc9a01.h"
#include "hardware/gpio.h" #include "hardware/gpio.h"
@ -8,6 +11,7 @@
#include "spi.h" #include "spi.h"
#include <cmath> #include <cmath>
#include <stdio.h> #include <stdio.h>
#include "Font5x7FixedMono.h" #include "Font5x7FixedMono.h"
#include "hardware/rtc.h" #include "hardware/rtc.h"
@ -79,6 +83,35 @@ void draw_ui_circle(uint16_t color)
} }
} }
std::array<uint16_t,2> get_ui_circle_vertical_pos(uint16_t x, uint16_t center_x, uint16_t center_y, uint16_t radius)
{
// Ctalculate horizontal distance from point to center
uint16_t dx = x - center_x;
uint16_t dx_squared = dx * dx;
uint16_t radius_squared = radius * radius;
// Check if point's x-coordinate is within circle bounds
if (dx_squared >= radius_squared) {
return {0,0}; // Outside circle - no vertical space
}
// Calculate vertical distance from center to circle edge at this x
float vertical_offset = sqrt(radius_squared - dx_squared);
// Find y-coordinates where vertical line intersects circle
uint16_t y_top = center_y - (uint16_t)vertical_offset;
uint16_t y_bottom = center_y + (uint16_t)vertical_offset;
std::array<uint16_t,2> positions ={y_top,y_bottom};
return positions;
}
void clear_display() {
gc9a01_fill(&display, BLACK);
}
void display_start() { void display_start() {
char buf[10]; char buf[10];
@ -86,7 +119,7 @@ void display_start() {
gc9a01_init(&display); gc9a01_init(&display);
sleep_ms(100); sleep_ms(100);
gc9a01_fill(&display, BLACK); clear_display();
draw_ui_circle(MAGENTA); draw_ui_circle(MAGENTA);
@ -97,22 +130,22 @@ void display_start() {
void print_time(const bool force_refresh) { void print_time(const bool force_refresh) {
datetime_t t; datetime_t t;
if (rtc_get_datetime(&t)) { if (rtc_get_datetime(&t)) {
GFXfont font = VGA1_16x32; const GFXfont* font = &VGA1_16x32;
char buf[11]; char buf[11];
sprintf(buf,"%02d:%02d:%02d", t.hour, t.min, t.sec); sprintf(buf,"%02d:%02d:%02d", t.hour, t.min, t.sec);
gc9a01_text(&display,&font,buf,120-((16*8)/2),120-16,WHITE, BLACK); gc9a01_text(&display,font,buf,120-((16*8)/2),120-16,WHITE, BLACK);
static uint8_t last_day = UINT8_MAX; static uint8_t last_day = UINT8_MAX;
if (last_day != t.day || force_refresh) { if (last_day != t.day || force_refresh) {
font = Font5x7FixedMono; font = &Font5x7FixedMono;
sprintf(buf,"%02d.%02d.%04d",t.day,t.month,t.year); sprintf(buf,"%02d.%02d.%04d",t.day,t.month,t.year);
gc9a01_text_gfx_buffered(&display,&font,buf,120-((6*10)/2),((120-16)+32)+7,WHITE,BLACK); gc9a01_text_gfx_buffered(&display,font,buf,120-((6*10)/2),((120-16)+32)+7,WHITE,BLACK);
last_day = t.day; last_day = t.day;
} }
} else { } else {
const char* rtc_fail= "NO SYNC!"; const char* rtc_fail= "NO SYNC!";
GFXfont font = Font5x7FixedMono; const GFXfont* font = &Font5x7FixedMono;
gc9a01_text_gfx_buffered(&display,&font,rtc_fail,120-((5*8)/2),120-((7*1)/2),RED,BLACK); gc9a01_text_gfx_buffered(&display,font,rtc_fail,120-((5*8)/2),120-((7*1)/2),RED,BLACK);
} }
} }

View File

@ -1,5 +1,17 @@
#ifndef SMART_ALARM_DISPLAY_H #ifndef SMART_ALARM_DISPLAY_H
#define SMART_ALARM_DISPLAY_H #define SMART_ALARM_DISPLAY_H
#include <array>
#include <cstdint>
#include "gc9a01.h"
void display_start(); void display_start();
void print_time(bool force_refresh = false); void print_time(bool force_refresh = false);
void clear_display();
void draw_ui_circle(uint16_t color);
std::array<uint16_t,2> get_ui_circle_vertical_pos(uint16_t x, uint16_t center_x = 120, uint16_t center_y = 120, uint16_t radius = 119);
extern gc9a01_GC9A01_obj_t display;
#define MAX_X 240
#define MAX_Y 240
#endif //SMART_ALARM_DISPLAY_H #endif //SMART_ALARM_DISPLAY_H

146
fonts/Font5x7FixedMono.c Normal file
View File

@ -0,0 +1,146 @@
/**
** fixed monospaced font 5x7
*
*
* Author Rob Jennings
*/
#include <stdint.h>
#include "gfxfont.h"
const uint8_t FixedMono5x7Bitmaps[] = {
0xFA, 0xB4, 0x52, 0xBE, 0xAF, 0xA9, 0x40, 0x23, 0xE8, 0xE2, 0xF8, 0x80,
0xC6, 0x44, 0x44, 0x4C, 0x60, 0x64, 0xA8, 0x8A, 0xC9, 0xA0, 0xD8, 0x00,
0x6A, 0xA4, 0x00, 0x95, 0x58, 0x00, 0x25, 0x5D, 0xF7, 0x54, 0x80, 0x21,
0x3E, 0x42, 0x00, 0xD0, 0xF8, 0x00, 0xF0, 0x08, 0x88, 0x88, 0x00, 0x74,
0x67, 0x5C, 0xC5, 0xC0, 0x59, 0x24, 0xB8, 0x00, 0x74, 0x42, 0x22, 0x23,
0xE0, 0xF8, 0x88, 0x20, 0xC5, 0xC0, 0x11, 0x95, 0x2F, 0x88, 0x40, 0xFC,
0x21, 0xE0, 0xC5, 0xC0, 0x32, 0x21, 0xE8, 0xC5, 0xC0, 0xF8, 0x44, 0x44,
0x21, 0x00, 0x74, 0x62, 0xE8, 0xC5, 0xC0, 0x74, 0x62, 0xF0, 0x89, 0x80,
0xF3, 0xC0, 0xF3, 0x60, 0x12, 0x48, 0x42, 0x10, 0xF8, 0x3E, 0x00, 0x84,
0x21, 0x24, 0x80, 0x74, 0x42, 0x22, 0x00, 0x80, 0x74, 0x6B, 0x7B, 0xC1,
0xC0, 0x22, 0xA3, 0xF8, 0xC6, 0x20, 0xF4, 0x63, 0xE8, 0xC7, 0xC0, 0x74,
0x61, 0x08, 0x45, 0xC0, 0xE4, 0xA3, 0x18, 0xCB, 0x80, 0xFC, 0x21, 0xE8,
0x43, 0xE0, 0xFC, 0x21, 0xE8, 0x42, 0x00, 0x74, 0x61, 0x38, 0xC5, 0xC0,
0x8C, 0x63, 0xF8, 0xC6, 0x20, 0xE9, 0x24, 0xB8, 0x00, 0x38, 0x41, 0x04,
0x12, 0x46, 0x00, 0x8C, 0xA9, 0x8A, 0x4A, 0x20, 0x84, 0x21, 0x08, 0x43,
0xE0, 0x8E, 0xEB, 0x18, 0xC6, 0x20, 0x8C, 0x73, 0x59, 0xC6, 0x20, 0x74,
0x63, 0x18, 0xC5, 0xC0, 0xF4, 0x63, 0xE8, 0x42, 0x00, 0x74, 0x63, 0x1A,
0xC9, 0xA0, 0xF4, 0x63, 0xEA, 0x4A, 0x20, 0x7C, 0x20, 0xE0, 0x87, 0xC0,
0xF9, 0x08, 0x42, 0x10, 0x80, 0x8C, 0x63, 0x18, 0xC5, 0xC0, 0x8C, 0x63,
0x18, 0xA8, 0x80, 0x8C, 0x63, 0x1A, 0xEE, 0x20, 0x8C, 0x54, 0x45, 0x46,
0x20, 0x8C, 0x54, 0x42, 0x10, 0x80, 0xF8, 0x44, 0x44, 0x43, 0xE0, 0xF2,
0x49, 0x38, 0x00, 0x82, 0x08, 0x20, 0x80, 0xE4, 0x92, 0x78, 0x00, 0x22,
0xA2, 0x00, 0xF8, 0x88, 0x80, 0x70, 0x5F, 0x17, 0x80, 0x84, 0x3D, 0x18,
0xC7, 0xC0, 0x7C, 0x21, 0x07, 0x80, 0x08, 0x5F, 0x18, 0xC5, 0xE0, 0x74,
0x7F, 0x07, 0x00, 0x25, 0x4E, 0x44, 0x40, 0x7C, 0x5E, 0x17, 0x00, 0x84,
0x3D, 0x18, 0xC6, 0x20, 0xBE, 0x10, 0x11, 0x19, 0x60, 0x88, 0x9A, 0xCA,
0x90, 0xFE, 0x00, 0xDD, 0x6B, 0x18, 0x80, 0xB6, 0x63, 0x18, 0x80, 0x74,
0x63, 0x17, 0x00, 0xF4, 0x7D, 0x08, 0x00, 0x7C, 0x5E, 0x10, 0x80, 0xB6,
0x61, 0x08, 0x00, 0x7C, 0x1C, 0x1F, 0x00, 0x21, 0x3E, 0x42, 0x14, 0x40,
0x8C, 0x63, 0x17, 0x00, 0x8C, 0x62, 0xA2, 0x00, 0x8C, 0x6B, 0x55, 0x00,
0x8A, 0x88, 0xA8, 0x80, 0x8C, 0x5E, 0x17, 0x00, 0xF8, 0x88, 0x8F, 0x80,
0x29, 0x44, 0x88, 0x00, 0xFE, 0x00, 0xA2, 0x14, 0xA0, 0x00, 0xED, 0xC0
};
const GFXglyph FixedMono5x7Glyphs[] = {
{ 0, 0, 1, 6, 0, 0 } // ' '
,{ 0, 1, 7, 6, 2, -7 } // '!'
,{ 1, 3, 2, 6, 1, -7 } // '"'
,{ 2, 5, 7, 6, 0, -7 } // '#'
,{ 7, 5, 7, 6, 0, -7 } // '$'
,{ 12, 5, 7, 6, 0, -7 } // '%'
,{ 17, 5, 7, 6, 0, -7 } // '&'
,{ 22, 2, 3, 6, 1, -7 } // '''
,{ 24, 2, 7, 6, 2, -7 } // '('
,{ 27, 2, 7, 6, 1, -7 } // ')'
,{ 30, 5, 7, 6, 0, -7 } // '*'
,{ 35, 5, 5, 6, 0, -6 } // '+'
,{ 39, 2, 2, 6, 1, -2 } // ','
,{ 40, 5, 1, 6, 0, -4 } // '-'
,{ 42, 2, 2, 6, 1, -2 } // '.'
,{ 43, 5, 5, 6, 0, -6 } // '/'
,{ 47, 5, 7, 6, 0, -7 } // '0'
,{ 52, 3, 7, 6, 1, -7 } // '1'
,{ 56, 5, 7, 6, 0, -7 } // '2'
,{ 61, 5, 7, 6, 0, -7 } // '3'
,{ 66, 5, 7, 6, 0, -7 } // '4'
,{ 71, 5, 7, 6, 0, -7 } // '5'
,{ 76, 5, 7, 6, 0, -7 } // '6'
,{ 81, 5, 7, 6, 0, -7 } // '7'
,{ 86, 5, 7, 6, 0, -7 } // '8'
,{ 91, 5, 7, 6, 0, -7 } // '9'
,{ 96, 2, 5, 6, 1, -6 } // ':'
,{ 98, 2, 6, 6, 1, -6 } // ';'
,{ 100, 4, 7, 6, 0, -7 } // '<'
,{ 104, 5, 3, 6, 0, -5 } // '='
,{ 107, 4, 7, 6, 1, -7 } // '>'
,{ 111, 5, 7, 6, 0, -7 } // '?'
,{ 116, 5, 7, 6, 0, -7 } // '@'
,{ 121, 5, 7, 6, 0, -7 } // 'A'
,{ 126, 5, 7, 6, 0, -7 } // 'B'
,{ 131, 5, 7, 6, 0, -7 } // 'C'
,{ 136, 5, 7, 6, 0, -7 } // 'D'
,{ 141, 5, 7, 6, 0, -7 } // 'E'
,{ 146, 5, 7, 6, 0, -7 } // 'F'
,{ 151, 5, 7, 6, 0, -7 } // 'G'
,{ 156, 5, 7, 6, 0, -7 } // 'H'
,{ 161, 3, 7, 6, 1, -7 } // 'I'
,{ 165, 6, 7, 6, 0, -7 } // 'J'
,{ 171, 5, 7, 6, 0, -7 } // 'K'
,{ 176, 5, 7, 6, 0, -7 } // 'L'
,{ 181, 5, 7, 6, 0, -7 } // 'M'
,{ 186, 5, 7, 6, 0, -7 } // 'N'
,{ 191, 5, 7, 6, 0, -7 } // 'O'
,{ 196, 5, 7, 6, 0, -7 } // 'P'
,{ 201, 5, 7, 6, 0, -7 } // 'Q'
,{ 206, 5, 7, 6, 0, -7 } // 'R'
,{ 211, 5, 7, 6, 0, -7 } // 'S'
,{ 216, 5, 7, 6, 0, -7 } // 'T'
,{ 221, 5, 7, 6, 0, -7 } // 'U'
,{ 226, 5, 7, 6, 0, -7 } // 'V'
,{ 231, 5, 7, 6, 0, -7 } // 'W'
,{ 236, 5, 7, 6, 0, -7 } // 'X'
,{ 241, 5, 7, 6, 0, -7 } // 'Y'
,{ 246, 5, 7, 6, 0, -7 } // 'Z'
,{ 251, 3, 7, 6, 1, -7 } // '['
,{ 255, 5, 5, 6, 0, -6 } // '\'
,{ 259, 3, 7, 6, 1, -7 } // ']'
,{ 263, 5, 3, 6, 0, -7 } // '^'
,{ 266, 5, 1, 6, 0, -1 } // '_'
,{ 267, 3, 3, 6, 1, -7 } // '`'
,{ 269, 5, 5, 6, 0, -5 } // 'a'
,{ 273, 5, 7, 6, 0, -7 } // 'b'
,{ 278, 5, 5, 6, 0, -5 } // 'c'
,{ 282, 5, 7, 6, 0, -7 } // 'd'
,{ 287, 5, 5, 6, 0, -5 } // 'e'
,{ 291, 4, 7, 6, 0, -7 } // 'f'
,{ 295, 5, 5, 6, 0, -5 } // 'g'
,{ 299, 5, 7, 6, 0, -7 } // 'h'
,{ 304, 1, 7, 6, 2, -7 } // 'i'
,{ 305, 4, 7, 6, 0, -7 } // 'j'
,{ 309, 4, 7, 6, 0, -7 } // 'k'
,{ 313, 1, 7, 6, 2, -7 } // 'l'
,{ 315, 5, 5, 6, 0, -5 } // 'm'
,{ 319, 5, 5, 6, 0, -5 } // 'n'
,{ 323, 5, 5, 6, 0, -5 } // 'o'
,{ 327, 5, 5, 6, 0, -5 } // 'p'
,{ 331, 5, 5, 6, 0, -5 } // 'q'
,{ 335, 5, 5, 6, 0, -5 } // 'r'
,{ 339, 5, 5, 6, 0, -5 } // 's'
,{ 343, 5, 7, 6, 0, -7 } // 't'
,{ 348, 5, 5, 6, 0, -5 } // 'u'
,{ 352, 5, 5, 6, 0, -5 } // 'v'
,{ 356, 5, 5, 6, 0, -5 } // 'w'
,{ 360, 5, 5, 6, 0, -5 } // 'x'
,{ 364, 5, 5, 6, 0, -5 } // 'y'
,{ 368, 5, 5, 6, 0, -5 } // 'z'
,{ 372, 3, 7, 6, 1, -7 } // '{'
,{ 376, 1, 7, 6, 2, -7 } // '|'
,{ 378, 3, 7, 6, 1, -7 } // '}'
,{ 382, 5, 2, 6, 0, -4 } // '~'
};
const GFXfont Font5x7FixedMono = {
(uint8_t *)FixedMono5x7Bitmaps,
(GFXglyph *)FixedMono5x7Glyphs,
0x20, 0x7E, 7};

View File

@ -4,141 +4,6 @@
* *
* Author Rob Jennings * Author Rob Jennings
*/ */
#pragma once
#include "gfxfont.h" #include "gfxfont.h"
const uint8_t FixedMono5x7Bitmaps[] = { extern const GFXfont Font5x7FixedMono;
0xFA, 0xB4, 0x52, 0xBE, 0xAF, 0xA9, 0x40, 0x23, 0xE8, 0xE2, 0xF8, 0x80,
0xC6, 0x44, 0x44, 0x4C, 0x60, 0x64, 0xA8, 0x8A, 0xC9, 0xA0, 0xD8, 0x00,
0x6A, 0xA4, 0x00, 0x95, 0x58, 0x00, 0x25, 0x5D, 0xF7, 0x54, 0x80, 0x21,
0x3E, 0x42, 0x00, 0xD0, 0xF8, 0x00, 0xF0, 0x08, 0x88, 0x88, 0x00, 0x74,
0x67, 0x5C, 0xC5, 0xC0, 0x59, 0x24, 0xB8, 0x00, 0x74, 0x42, 0x22, 0x23,
0xE0, 0xF8, 0x88, 0x20, 0xC5, 0xC0, 0x11, 0x95, 0x2F, 0x88, 0x40, 0xFC,
0x21, 0xE0, 0xC5, 0xC0, 0x32, 0x21, 0xE8, 0xC5, 0xC0, 0xF8, 0x44, 0x44,
0x21, 0x00, 0x74, 0x62, 0xE8, 0xC5, 0xC0, 0x74, 0x62, 0xF0, 0x89, 0x80,
0xF3, 0xC0, 0xF3, 0x60, 0x12, 0x48, 0x42, 0x10, 0xF8, 0x3E, 0x00, 0x84,
0x21, 0x24, 0x80, 0x74, 0x42, 0x22, 0x00, 0x80, 0x74, 0x6B, 0x7B, 0xC1,
0xC0, 0x22, 0xA3, 0xF8, 0xC6, 0x20, 0xF4, 0x63, 0xE8, 0xC7, 0xC0, 0x74,
0x61, 0x08, 0x45, 0xC0, 0xE4, 0xA3, 0x18, 0xCB, 0x80, 0xFC, 0x21, 0xE8,
0x43, 0xE0, 0xFC, 0x21, 0xE8, 0x42, 0x00, 0x74, 0x61, 0x38, 0xC5, 0xC0,
0x8C, 0x63, 0xF8, 0xC6, 0x20, 0xE9, 0x24, 0xB8, 0x00, 0x38, 0x41, 0x04,
0x12, 0x46, 0x00, 0x8C, 0xA9, 0x8A, 0x4A, 0x20, 0x84, 0x21, 0x08, 0x43,
0xE0, 0x8E, 0xEB, 0x18, 0xC6, 0x20, 0x8C, 0x73, 0x59, 0xC6, 0x20, 0x74,
0x63, 0x18, 0xC5, 0xC0, 0xF4, 0x63, 0xE8, 0x42, 0x00, 0x74, 0x63, 0x1A,
0xC9, 0xA0, 0xF4, 0x63, 0xEA, 0x4A, 0x20, 0x7C, 0x20, 0xE0, 0x87, 0xC0,
0xF9, 0x08, 0x42, 0x10, 0x80, 0x8C, 0x63, 0x18, 0xC5, 0xC0, 0x8C, 0x63,
0x18, 0xA8, 0x80, 0x8C, 0x63, 0x1A, 0xEE, 0x20, 0x8C, 0x54, 0x45, 0x46,
0x20, 0x8C, 0x54, 0x42, 0x10, 0x80, 0xF8, 0x44, 0x44, 0x43, 0xE0, 0xF2,
0x49, 0x38, 0x00, 0x82, 0x08, 0x20, 0x80, 0xE4, 0x92, 0x78, 0x00, 0x22,
0xA2, 0x00, 0xF8, 0x88, 0x80, 0x70, 0x5F, 0x17, 0x80, 0x84, 0x3D, 0x18,
0xC7, 0xC0, 0x7C, 0x21, 0x07, 0x80, 0x08, 0x5F, 0x18, 0xC5, 0xE0, 0x74,
0x7F, 0x07, 0x00, 0x25, 0x4E, 0x44, 0x40, 0x7C, 0x5E, 0x17, 0x00, 0x84,
0x3D, 0x18, 0xC6, 0x20, 0xBE, 0x10, 0x11, 0x19, 0x60, 0x88, 0x9A, 0xCA,
0x90, 0xFE, 0x00, 0xDD, 0x6B, 0x18, 0x80, 0xB6, 0x63, 0x18, 0x80, 0x74,
0x63, 0x17, 0x00, 0xF4, 0x7D, 0x08, 0x00, 0x7C, 0x5E, 0x10, 0x80, 0xB6,
0x61, 0x08, 0x00, 0x7C, 0x1C, 0x1F, 0x00, 0x21, 0x3E, 0x42, 0x14, 0x40,
0x8C, 0x63, 0x17, 0x00, 0x8C, 0x62, 0xA2, 0x00, 0x8C, 0x6B, 0x55, 0x00,
0x8A, 0x88, 0xA8, 0x80, 0x8C, 0x5E, 0x17, 0x00, 0xF8, 0x88, 0x8F, 0x80,
0x29, 0x44, 0x88, 0x00, 0xFE, 0x00, 0xA2, 0x14, 0xA0, 0x00, 0xED, 0xC0
};
const GFXglyph FixedMono5x7Glyphs[] = {
{ 0, 0, 1, 6, 0, 0 } // ' '
,{ 0, 1, 7, 6, 2, -7 } // '!'
,{ 1, 3, 2, 6, 1, -7 } // '"'
,{ 2, 5, 7, 6, 0, -7 } // '#'
,{ 7, 5, 7, 6, 0, -7 } // '$'
,{ 12, 5, 7, 6, 0, -7 } // '%'
,{ 17, 5, 7, 6, 0, -7 } // '&'
,{ 22, 2, 3, 6, 1, -7 } // '''
,{ 24, 2, 7, 6, 2, -7 } // '('
,{ 27, 2, 7, 6, 1, -7 } // ')'
,{ 30, 5, 7, 6, 0, -7 } // '*'
,{ 35, 5, 5, 6, 0, -6 } // '+'
,{ 39, 2, 2, 6, 1, -2 } // ','
,{ 40, 5, 1, 6, 0, -4 } // '-'
,{ 42, 2, 2, 6, 1, -2 } // '.'
,{ 43, 5, 5, 6, 0, -6 } // '/'
,{ 47, 5, 7, 6, 0, -7 } // '0'
,{ 52, 3, 7, 6, 1, -7 } // '1'
,{ 56, 5, 7, 6, 0, -7 } // '2'
,{ 61, 5, 7, 6, 0, -7 } // '3'
,{ 66, 5, 7, 6, 0, -7 } // '4'
,{ 71, 5, 7, 6, 0, -7 } // '5'
,{ 76, 5, 7, 6, 0, -7 } // '6'
,{ 81, 5, 7, 6, 0, -7 } // '7'
,{ 86, 5, 7, 6, 0, -7 } // '8'
,{ 91, 5, 7, 6, 0, -7 } // '9'
,{ 96, 2, 5, 6, 1, -6 } // ':'
,{ 98, 2, 6, 6, 1, -6 } // ';'
,{ 100, 4, 7, 6, 0, -7 } // '<'
,{ 104, 5, 3, 6, 0, -5 } // '='
,{ 107, 4, 7, 6, 1, -7 } // '>'
,{ 111, 5, 7, 6, 0, -7 } // '?'
,{ 116, 5, 7, 6, 0, -7 } // '@'
,{ 121, 5, 7, 6, 0, -7 } // 'A'
,{ 126, 5, 7, 6, 0, -7 } // 'B'
,{ 131, 5, 7, 6, 0, -7 } // 'C'
,{ 136, 5, 7, 6, 0, -7 } // 'D'
,{ 141, 5, 7, 6, 0, -7 } // 'E'
,{ 146, 5, 7, 6, 0, -7 } // 'F'
,{ 151, 5, 7, 6, 0, -7 } // 'G'
,{ 156, 5, 7, 6, 0, -7 } // 'H'
,{ 161, 3, 7, 6, 1, -7 } // 'I'
,{ 165, 6, 7, 6, 0, -7 } // 'J'
,{ 171, 5, 7, 6, 0, -7 } // 'K'
,{ 176, 5, 7, 6, 0, -7 } // 'L'
,{ 181, 5, 7, 6, 0, -7 } // 'M'
,{ 186, 5, 7, 6, 0, -7 } // 'N'
,{ 191, 5, 7, 6, 0, -7 } // 'O'
,{ 196, 5, 7, 6, 0, -7 } // 'P'
,{ 201, 5, 7, 6, 0, -7 } // 'Q'
,{ 206, 5, 7, 6, 0, -7 } // 'R'
,{ 211, 5, 7, 6, 0, -7 } // 'S'
,{ 216, 5, 7, 6, 0, -7 } // 'T'
,{ 221, 5, 7, 6, 0, -7 } // 'U'
,{ 226, 5, 7, 6, 0, -7 } // 'V'
,{ 231, 5, 7, 6, 0, -7 } // 'W'
,{ 236, 5, 7, 6, 0, -7 } // 'X'
,{ 241, 5, 7, 6, 0, -7 } // 'Y'
,{ 246, 5, 7, 6, 0, -7 } // 'Z'
,{ 251, 3, 7, 6, 1, -7 } // '['
,{ 255, 5, 5, 6, 0, -6 } // '\'
,{ 259, 3, 7, 6, 1, -7 } // ']'
,{ 263, 5, 3, 6, 0, -7 } // '^'
,{ 266, 5, 1, 6, 0, -1 } // '_'
,{ 267, 3, 3, 6, 1, -7 } // '`'
,{ 269, 5, 5, 6, 0, -5 } // 'a'
,{ 273, 5, 7, 6, 0, -7 } // 'b'
,{ 278, 5, 5, 6, 0, -5 } // 'c'
,{ 282, 5, 7, 6, 0, -7 } // 'd'
,{ 287, 5, 5, 6, 0, -5 } // 'e'
,{ 291, 4, 7, 6, 0, -7 } // 'f'
,{ 295, 5, 5, 6, 0, -5 } // 'g'
,{ 299, 5, 7, 6, 0, -7 } // 'h'
,{ 304, 1, 7, 6, 2, -7 } // 'i'
,{ 305, 4, 7, 6, 0, -7 } // 'j'
,{ 309, 4, 7, 6, 0, -7 } // 'k'
,{ 313, 1, 7, 6, 2, -7 } // 'l'
,{ 315, 5, 5, 6, 0, -5 } // 'm'
,{ 319, 5, 5, 6, 0, -5 } // 'n'
,{ 323, 5, 5, 6, 0, -5 } // 'o'
,{ 327, 5, 5, 6, 0, -5 } // 'p'
,{ 331, 5, 5, 6, 0, -5 } // 'q'
,{ 335, 5, 5, 6, 0, -5 } // 'r'
,{ 339, 5, 5, 6, 0, -5 } // 's'
,{ 343, 5, 7, 6, 0, -7 } // 't'
,{ 348, 5, 5, 6, 0, -5 } // 'u'
,{ 352, 5, 5, 6, 0, -5 } // 'v'
,{ 356, 5, 5, 6, 0, -5 } // 'w'
,{ 360, 5, 5, 6, 0, -5 } // 'x'
,{ 364, 5, 5, 6, 0, -5 } // 'y'
,{ 368, 5, 5, 6, 0, -5 } // 'z'
,{ 372, 3, 7, 6, 1, -7 } // '{'
,{ 376, 1, 7, 6, 2, -7 } // '|'
,{ 378, 3, 7, 6, 1, -7 } // '}'
,{ 382, 5, 2, 6, 0, -4 } // '~'
};
const GFXfont Font5x7FixedMono = {
(uint8_t *)FixedMono5x7Bitmaps,
(GFXglyph *)FixedMono5x7Glyphs,
0x20, 0x7E, 7};

4
macros.h Normal file
View File

@ -0,0 +1,4 @@
#ifndef SMART_ALARM_MACROS_H
#define SMART_ALARM_MACROS_H
#define ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0]))
#endif //SMART_ALARM_MACROS_H

8
multicore_events.h Normal file
View File

@ -0,0 +1,8 @@
#ifndef SMART_ALARM_MULTICORE_EVENTS_H
#define SMART_ALARM_MULTICORE_EVENTS_H
enum multicore_event_t {
PRIMARY_BUTTON_PRESSED,
SECONDARY_BUTTON_PRESSED,
KNOB_CHANGE
};
#endif //SMART_ALARM_MULTICORE_EVENTS_H

7
pins.h
View File

@ -2,3 +2,10 @@
#define KNOB_PW_PIN 22 #define KNOB_PW_PIN 22
#define KNOB_SIG_PIN 26 #define KNOB_SIG_PIN 26
#define SPEAKER_PIN 11
#define BUTTON_PRIMARY_PW 9
#define BUTTON_PRIMARY_IN 8
#define BUTTON_SECONDARY_PW 7
#define BUTTON_SECONDARY_IN 6

View File

@ -1,4 +1,6 @@
#include "hardware/adc.h"
#include "hardware/clocks.h" #include "hardware/clocks.h"
#include "hardware/pwm.h"
#include "hardware/rtc.h" #include "hardware/rtc.h"
#include "hardware/spi.h" #include "hardware/spi.h"
#include "lwip/apps/sntp.h" #include "lwip/apps/sntp.h"
@ -11,79 +13,75 @@
#include <lwip/arch.h> #include <lwip/arch.h>
#include <pico/stdio.h> #include <pico/stdio.h>
#include <stdio.h> #include <stdio.h>
#include "hardware/pwm.h"
#include "hardware/adc.h"
#include "control.h"
#include "display.h"
#include "lwip/dns.h" #include "lwip/dns.h"
#include "lwip/tcp.h" #include "lwip/tcp.h"
#include "macros.h"
#include "multicore_events.h"
#include "net_utils.h" #include "net_utils.h"
#include "timezones.h" #include "pico/multicore.h"
#include "spi.h"
#include "display.h"
#include "pins.h" #include "pins.h"
#include "control.h" #include "sound.h"
#include "spi.h"
#include "timezones.h"
#include "ui.h"
#define NTP_DELTA 2208988800UL #define NTP_DELTA 2208988800UL
volatile u16_t timezone_index = 353; volatile u16_t timezone_index;
extern "C" void sync_system_time(unsigned int sec, unsigned int usec) { extern "C" void sync_system_time(unsigned int sec, unsigned int usec) {
if (sec == 0) { if (sec == 0) {
printf("SNTP: Invalid timestamp received\n"); printf("SNTP: Invalid timestamp received\n");
return; return;
} }
printf("SNTP callback received: %lu\n", (unsigned long)sec); printf("SNTP callback received: %lu\n", (unsigned long)sec);
// Convert NTP timestamp to Unix timestamp // Convert NTP timestamp to Unix timestamp
time_t unix_time = (time_t)(sec - NTP_DELTA); time_t unix_time = (time_t)(sec - NTP_DELTA);
struct tm *time_info = gmtime(&unix_time);
if (time_info == NULL) {
printf("SNTP: Invalid timestamp %lu\n", (unsigned long)sec);
return;
}
struct tm *time_info = gmtime(&unix_time); printf("Got SNTP response: %02d/%02d/%04d %02d:%02d:%02d\n",
if (time_info == NULL) { time_info->tm_mday, time_info->tm_mon + 1, time_info->tm_year + 1900,
printf("SNTP: Invalid timestamp %lu\n", (unsigned long)sec); time_info->tm_hour, time_info->tm_min, time_info->tm_sec);
return;
}
printf("Got SNTP response: %02d/%02d/%04d %02d:%02d:%02d\n", datetime_t dt = {.year = static_cast<int16_t>(time_info->tm_year + 1900),
time_info->tm_mday, time_info->tm_mon + 1, time_info->tm_year + 1900, .month = static_cast<int8_t>(time_info->tm_mon + 1),
time_info->tm_hour, time_info->tm_min, time_info->tm_sec); .day = static_cast<int8_t>(time_info->tm_mday),
.dotw = static_cast<int8_t>(time_info->tm_wday),
datetime_t dt = { .hour = static_cast<int8_t>(time_info->tm_hour),
.year = static_cast<int16_t>(time_info->tm_year + 1900), .min = static_cast<int8_t>(time_info->tm_min),
.month = static_cast<int8_t>(time_info->tm_mon + 1), .sec = static_cast<int8_t>(time_info->tm_sec)};
.day = static_cast<int8_t>(time_info->tm_mday),
.dotw = static_cast<int8_t>(time_info->tm_wday),
.hour = static_cast<int8_t>(time_info->tm_hour),
.min = static_cast<int8_t>(time_info->tm_min),
.sec = static_cast<int8_t>(time_info->tm_sec)
};
timezone_offset(timezone_index, dt); timezone_offset(timezone_index, dt);
// Set RTC // Set RTC
if (rtc_set_datetime(&dt)) { if (rtc_set_datetime(&dt)) {
printf("SNTP: Time synchronized to %04d-%02d-%02d %02d:%02d:%02d %s\n", printf("SNTP: Time synchronized to %04d-%02d-%02d %02d:%02d:%02d %s\n",
dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec, dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec, "Local");
"Local"); } else {
} else { printf("SNTP: Failed to set RTC\n");
printf("SNTP: Failed to set RTC\n"); }
}
// Sanity checks // Sanity checks
if (dt.year < 2020 || dt.year > 2100 || dt.month < 1 || dt.month > 12 || if (dt.year < 2020 || dt.year > 2100 || dt.month < 1 || dt.month > 12 ||
dt.day < 1 || dt.day > 31 || dt.hour > 23 || dt.min > 59 || dt.sec > 59) { dt.day < 1 || dt.day > 31 || dt.hour > 23 || dt.min > 59 || dt.sec > 59) {
printf("SNTP: Invalid date/time components\n"); printf("SNTP: Invalid date/time components\n");
return; return;
} }
// Set RTC with error handling // Set RTC with error handling
if (rtc_set_datetime(&dt)) { if (rtc_set_datetime(&dt)) {
printf("SNTP: Time synchronized to %04d-%02d-%02d %02d:%02d:%02d %s\n", printf("SNTP: Time synchronized to %04d-%02d-%02d %02d:%02d:%02d %s\n",
dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec, dt.year, dt.month, dt.day, dt.hour, dt.min, dt.sec, "Local");
"Local");
} else { } else {
printf("SNTP: Failed to set RTC\n"); printf("SNTP: Failed to set RTC\n");
} }
@ -97,15 +95,28 @@ int main() {
rtc_init(); rtc_init();
gpio_init(KNOB_PW_PIN); gpio_init(KNOB_PW_PIN);
gpio_set_dir(KNOB_PW_PIN, GPIO_OUT); gpio_set_dir(KNOB_PW_PIN, GPIO_OUT);
gpio_put(KNOB_PW_PIN,1); gpio_put(KNOB_PW_PIN, 1);
gpio_init(BUTTON_PRIMARY_PW);
gpio_init(BUTTON_SECONDARY_PW);
gpio_init(BUTTON_PRIMARY_IN);
gpio_init(BUTTON_SECONDARY_IN);
gpio_set_dir(BUTTON_PRIMARY_PW, GPIO_OUT);
gpio_set_dir(BUTTON_SECONDARY_PW, GPIO_OUT);
gpio_put(BUTTON_PRIMARY_PW, 1);
gpio_put(BUTTON_SECONDARY_PW, 1);
gpio_set_dir(BUTTON_PRIMARY_IN, GPIO_IN);
gpio_init(BUTTON_PRIMARY_IN);
adc_init(); adc_init();
adc_gpio_init(KNOB_SIG_PIN); adc_gpio_init(KNOB_SIG_PIN);
adc_select_input(0); adc_select_input(0);
// PWM for PC speeker setup_pwm_audio();
gpio_set_function(11, GPIO_FUNC_PWM);
timezone_index = 353; // todo load from flash
// sign of life // sign of life
cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, true); cyw43_arch_gpio_put(CYW43_WL_GPIO_LED_PIN, true);
@ -149,28 +160,43 @@ int main() {
printf("SNTP initialized, waiting for time sync...\n"); printf("SNTP initialized, waiting for time sync...\n");
uint slice_num = pwm_gpio_to_slice_num(11); uint8_t page_selected = 1;
// Generate a 1kHz tone
// 125MHz / 125 = 1MHz PWM clock
pwm_set_clkdiv(slice_num, 125.0f);
// 1MHz / 1000 = 1kHz audio frequency
pwm_set_wrap(slice_num, 1000);
// 50% duty cycle for square wave
pwm_set_chan_level(slice_num, PWM_CHAN_B, 500);
// Enable PWM
pwm_set_enabled(slice_num, true);
multicore_launch_core1(page_functions[page_selected]);
uint8_t knob_position = get_knob_percentage();
while (true) { while (true) {
print_time(); if (gpio_get(BUTTON_SECONDARY_IN)) {
printf("knob: %d\n",get_knob_percentage()); while (gpio_get(BUTTON_SECONDARY_IN)) {
pwm_set_wrap(slice_num, 10*get_knob_percentage()); tight_loop_contents();
} // await until button is released
sleep_ms(500); if (!secondary_button_override) {
page_selected =
page_selected + 1 >= page_functions.size() ? 0 : page_selected + 1;
multicore_reset_core1();
clear_display();
multicore_launch_core1(page_functions[page_selected]);
} else {
multicore_fifo_push_timeout_us(SECONDARY_BUTTON_PRESSED, 10);
}
}
if (gpio_get(BUTTON_PRIMARY_IN)) {
while (gpio_get(BUTTON_PRIMARY_IN)) {
tight_loop_contents();
}
multicore_fifo_push_timeout_us(PRIMARY_BUTTON_PRESSED, 10);
}
{
uint8_t knob_now = get_knob_percentage();
if (knob_now != knob_position) {
knob_position = knob_now;
multicore_fifo_push_timeout_us(KNOB_CHANGE, 10);
}
}
sleep_ms(10);
} }
cyw43_arch_lwip_end(); cyw43_arch_lwip_end();
return 0; return 0;

74
sound.cpp Normal file
View File

@ -0,0 +1,74 @@
#include "sound.h"
#include "pico/stdlib.h"
#include "hardware/pwm.h"
#include "hardware/dma.h"
#include "hardware/irq.h"
#include "hardware/clocks.h"
#include "alarm_sound.h"
#include "pins.h"
#define SAMPLE_RATE 22050 // 22.05kHz
#define PWM_WRAP 255 // 8-bit resolution
volatile float volume_multiplier = 4.0f; // todo load from flash
static uint32_t audio_pos = 0;
static bool audio_playing = false;
// Timer callback for audio playback
bool audio_timer_callback(repeating_timer_t *rt) {
if (!audio_playing || audio_pos >= alarm_sound_wav_len) {
audio_playing = false;
return false; // Stop timer
}
// Get the original audio sample
uint8_t sample = alarm_sound_wav[audio_pos++];
// Apply volume amplification
// Convert to float, center around 0, apply multiplier, then center back around 128
float amplified = ((float)sample - 128.0f) * volume_multiplier + 128.0f;
// Clamp the result to valid 8-bit range (0-255)
if (amplified < 0.0f) amplified = 0.0f;
else if (amplified > 255.0f) amplified = 255.0f;
// Set PWM duty cycle with amplified sample
pwm_set_gpio_level(SPEAKER_PIN, (uint8_t)amplified);
return true; // Continue timer
}
void setup_pwm_audio() {
// Set up PWM for audio output
gpio_set_function(SPEAKER_PIN, GPIO_FUNC_PWM);
uint slice_num = pwm_gpio_to_slice_num(SPEAKER_PIN);
// Configure PWM for 8-bit resolution
pwm_config config = pwm_get_default_config();
// Calculate clock divider for desired PWM frequency
// PWM frequency should be much higher than audio sample rate
// Target: ~250kHz PWM frequency for good audio quality
float clock_div = (float)clock_get_hz(clk_sys) / (PWM_WRAP + 1) / 250000.0f;
pwm_config_set_clkdiv(&config, clock_div);
pwm_config_set_wrap(&config, PWM_WRAP);
pwm_init(slice_num, &config, true);
pwm_set_gpio_level(SPEAKER_PIN, 128); // Set to middle level (silence)
}
void play_audio() {
audio_pos = 0;
audio_playing = true;
// Set up timer for sample rate (22.05kHz)
static repeating_timer_t timer;
int32_t delay_us = -1000000 / SAMPLE_RATE; // Negative for precise timing
add_repeating_timer_us(delay_us, audio_timer_callback, NULL, &timer);
}
void stop_audio() {
audio_playing = false;
pwm_set_gpio_level(SPEAKER_PIN, 128); // Return to silence level
}

10
sound.h Normal file
View File

@ -0,0 +1,10 @@
#ifndef SMART_ALARM_SOUND_H
#define SMART_ALARM_SOUND_H
void setup_pwm_audio();
void play_audio();
void stop_audio();
extern volatile float volume_multiplier;
#endif //SMART_ALARM_SOUND_H

2
spi.h
View File

@ -12,7 +12,7 @@
#define PIN_DC 16 #define PIN_DC 16
#define PIN_RST 20 #define PIN_RST 20
#define SPI_CLOCK_HZ 12000000 #define SPI_CLOCK_HZ 40000000
// #define SPI_CLOCK_HZ 1000 // #define SPI_CLOCK_HZ 1000
#define MEMORY_WRITE 0x2C #define MEMORY_WRITE 0x2C

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,8 @@ typedef struct {
bool has_dst; // 1 if timezone uses DST, 0 otherwise bool has_dst; // 1 if timezone uses DST, 0 otherwise
u8_t reserved; // Padding for alignment u8_t reserved; // Padding for alignment
} timezone_t; } timezone_t;
extern const timezone_t timezones[]; extern const timezone_t timezones[461];
void timezone_offset(u16_t timezone_index, datetime_t &dt); void timezone_offset(u16_t timezone_index, datetime_t &dt);
extern volatile u16_t timezone_index;
#endif //SMART_ALARM_TIMEZONES_H #endif //SMART_ALARM_TIMEZONES_H

177
ui.cpp Normal file
View File

@ -0,0 +1,177 @@
#include <array>
#include <bits/locale_classes.h>
#include <cmath>
#include <cstring>
#include <ctime>
#include "Font5x7FixedMono.h"
#include "alarm_sound.h"
#include "control.h"
#include "display.h"
#include "gc9a01.h"
#include "macros.h"
#include "lwip/arch.h"
#include "multicore_events.h"
#include "pico/multicore.h"
#include "pico/time.h"
#include "sound.h"
#include "timezones.h"
bool secondary_button_override = false;
struct configuration {
char* text;
void (*set_text)(const configuration* self);
void (*update)(configuration* self,bool hard);
uint32_t local_conf; // can be used as diferent data types
uint8_t additional_data;
bool override_secondary_button;
};
void timezone_set_text(const configuration* self) {sprintf(self->text, "TIMEZONE: %s", timezones[self->local_conf].zone_name);}
void timezone_update(configuration* self,bool hard) {
uint16_t selected_option = get_knob_percentage();
self->additional_data %= std::size(timezones)/100;
selected_option+= self->additional_data*100;
self->local_conf = selected_option >= std::size(timezones) ? std::size(timezones)-1 : selected_option;
if (hard) {
timezone_index = self->local_conf;
// todo store to flash
}
}
void volume_set_text(const configuration* self) {sprintf(self->text, "VOLUME: %0.1f", *(float*)&self->local_conf);}
void volume_update(configuration* self,bool hard)
{
*(float*)&self->local_conf = static_cast<float>(get_knob_percentage())/10.0f;
if (hard) {
volume_multiplier = *(float*)&self->local_conf;
// todo store to flash
}
}
void config_page() {
char volume_str[17];
char timezone_str[41];
std::array<configuration, 2> options = {{{timezone_str,&timezone_set_text,&timezone_update,timezone_index, 0,true}, {volume_str,&volume_set_text,&volume_update,*(uint32_t*)&volume_multiplier, 0, false}}};
const GFXfont *font = &Font5x7FixedMono;
draw_ui_circle(RED);
multicore_fifo_drain();
uint8_t selected_option;
bool configuring = false;
while (true) {
for (uint8_t i = 0; i < ARRAY_LENGTH(options); i++) {
options[i].set_text(&options[i]);
}
if (!configuring)
{
selected_option = std::min(
static_cast<uint8_t>((get_knob_percentage() / 100.0f) * options.size()),
static_cast<uint8_t>(options.size() - 1));
}
// Find the actual maximum text width that will be rendered
uint16_t max_text_width_pixels = 0;
for (uint8_t i = 0; i < options.size(); i++) {
uint16_t text_width = strlen(options[i].text) * 5;
if (text_width > max_text_width_pixels) {
max_text_width_pixels = text_width;
}
}
// Add proper padding to ensure text doesn't touch cyan lines
const uint8_t horizontal_padding = 15; // Increased padding
const uint8_t half_boundary_width = (max_text_width_pixels + (2 * horizontal_padding)) / 2;
constexpr uint8_t center_pos = (MAX_X / 2);
// Calculate cyan line positions with proper spacing
uint16_t left_cyan_x = center_pos - half_boundary_width;
uint16_t right_cyan_x = center_pos + half_boundary_width;
// Get vertical boundaries
std::array<uint16_t, 2> circle_y_pos = get_ui_circle_vertical_pos(right_cyan_x);
uint16_t y_offset = circle_y_pos[0] + 2;
// right
gc9a01_vline(&display, right_cyan_x, y_offset,
(circle_y_pos[1] - 1) - y_offset, CYAN);
// left
gc9a01_vline(&display, left_cyan_x, y_offset,
(circle_y_pos[1] - 1) - y_offset, CYAN);
const uint8_t half_y_font = static_cast<uint8_t>(
roundf(static_cast<float>(7) / static_cast<float>(2)));
y_offset += 20;
// Render text with proper horizontal centering
for (uint8_t i = 0; i < options.size(); i++) {
uint16_t text_width_pixels = strlen(options[i].text) * 5;
// Center each text line horizontally within the cyan boundaries
uint16_t x_pos = (center_pos - (text_width_pixels / 2));
// Ensure text stays within cyan line boundaries
if (x_pos < left_cyan_x + horizontal_padding) {
x_pos = left_cyan_x + horizontal_padding;
} else if (x_pos + text_width_pixels > right_cyan_x - horizontal_padding) {
x_pos = right_cyan_x - horizontal_padding - text_width_pixels;
}
gc9a01_text_gfx_buffered(&display, font, options[i].text, x_pos-10 /*MAGIC IDK WHY*/, y_offset, i == selected_option ? configuring ? RED : GREEN : WHITE, BLACK);
y_offset += half_y_font;
// Draw separator line within cyan boundaries
gc9a01_hline(&display, left_cyan_x + 2, y_offset,
(right_cyan_x - left_cyan_x) - 4, WHITE);
y_offset += half_y_font * 2;
}
switch (static_cast<multicore_event_t>(multicore_fifo_pop_blocking())) {
case PRIMARY_BUTTON_PRESSED:
if (configuring) {
options[selected_option].update(&options[selected_option], true);
secondary_button_override = false;
} else {
if (options[selected_option].override_secondary_button) {
secondary_button_override = true;
}
gc9a01_fill_rect(&display,left_cyan_x,circle_y_pos[0]+1,right_cyan_x-left_cyan_x,(circle_y_pos[1]-circle_y_pos[0])-2,BLACK);
options[selected_option].update(&options[selected_option], false);
}
configuring = !configuring;
break;
case SECONDARY_BUTTON_PRESSED:
options[selected_option].additional_data++;
gc9a01_fill_rect(&display,left_cyan_x,circle_y_pos[0]+1,right_cyan_x-left_cyan_x,(circle_y_pos[1]-circle_y_pos[0])-2,BLACK);
options[selected_option].update(&options[selected_option], false);
break;
case KNOB_CHANGE:
if (configuring) {
gc9a01_fill_rect(&display,left_cyan_x,circle_y_pos[0]+1,right_cyan_x-left_cyan_x,(circle_y_pos[1]-circle_y_pos[0])-2,BLACK);
options[selected_option].update(&options[selected_option], false);
}
break;
}
multicore_fifo_drain(); // prevent event stucking
}
}
void time_page() {
draw_ui_circle(MAGENTA);
print_time(true);
while (true) {
multicore_fifo_drain();
sleep_ms(500);
print_time();
}
}
void alarm_set_page() { draw_ui_circle(BLUE); }
std::array<void (*)(), 3> page_functions = {config_page, time_page,
alarm_set_page};

6
ui.h Normal file
View File

@ -0,0 +1,6 @@
#ifndef SMART_ALARM_UI_H
#define SMART_ALARM_UI_H
#include <array>
extern std::array<void(*)(), 3> page_functions;
extern bool secondary_button_override;
#endif //SMART_ALARM_UI_H