A39项目文件整理+驱动部分UI数据接收合并

This commit is contained in:
Li Jie 2024-03-18 15:43:11 +08:00
parent c0b6bd173d
commit 9eaa17a098
922 changed files with 216187 additions and 1586845 deletions

Binary file not shown.

View File

@ -1,122 +0,0 @@
2023.11.06
30xx flash 8Mb 和16Mb
303x flash 为8Mb
2023.11.03
增加滚动条显示
2023.10.30
FreqChip_Download V1.3.7.12
优化界面显示
2023.10.26
FrDownloadSdk V1.2.7.2
修改8000 解保护ram 数组
FreqChip_Download V1.3.7.11
修改FR303X和FR30XX界面
2023.10.18
FreqChip_Download V1.3.7.10
增加英语界面
2023.10.16
FreqChip_Download V1.3.7.9
调整界面, 修改有些电脑显示不全的问题
2023.10.08
FreqChip_Download V1.3.7.8
FrDownloadSdk V1.2.7.1
升级波特率460800
增加直接烧录指定文件的方法
增加双击label, 取消文件选择
2023.09.25
FreqChip_Download V1.3.7.7
3090 擦除前512byte
2023.09.22
FreqChip_Download V1.3.7.6
3090增加指定文件烧录
2023.09.04
FreqChip_Download V1.3.7.5
修改ota size异常
2023.09.04
FreqChip_Download V1.3.7.4
修改509X crc校验失败
2023.09.04
FreqChip_Download V1.3.7.3
修改烧录失败时, 发送重启指令
增加擦除ota大小选项, 支持8010H和8000
2023.08.07
FrDownloadSdk V1.2.6.1
1.修改boot超时时间
2023.08.04
FrDownloadSdk V1.2.6.0
1.修改CRC超时时间, 根据文件大小自动调整
2023.07.3
FrDownloadSdk V1.2.5.1
1.修改5090校验地址0x08000000
2023.06.20
FrDownloadSdk V1.2.5.0
1.增加5090烧录
2.去掉1010 前8K的处理
FreqChip_Download V1.3.7.0
增加5090烧录
2023.06.07
FrDownloadSdk V1.2.4.0
增加芯片重启接口
2023.05.22
FrDownloadSdk V1.2.3.0
增加数据倒序写入flash接口.
增加101X烧录
FreqChip_Download V1.3.6.4
修改烧录工具倒序写mac到flash
增加101X烧录,优化crc校验
2023.05.12
FrDownloadSdk V1.2.2.0
新增1010烧录
FreqChip_Download V1.3.6
新增1010烧录
2023.04.26
FrDownloadSdk V1.2.1.10
修改兼容8012HB 解保护。
修改重启指令只发一次延时10ms 返回。
2023.04.13
FreqChip_Download V1.3.5.1
修改点击擦除时, 擦除大小不足的问题
2023.04.12
FreqChip_Download V1.3.5
修改全擦flash时擦除大小不足的问题
2023.04.11
FrDownloadSdk V1.2.1.4
兼容8000CRC校验
2023.04.10
FreqChip_Download V1.3.4
FrDownloadSdk V1.2.1.3
兼容只读文件
增加8010H 8000 2000 CRC校验 校验超时时间为20秒。
2023.03.21
1.升级2000 解保护补丁
2.增加8010T CRC校验

View File

@ -1,16 +0,0 @@
[CONFIG]
Chip_Type=509X
Flash_Select=2MB
enlishToolStripMenuItem=False
Special_Enable=True
uart_port=COM3
Baud_Rate=921600
509X_Bin_Path=E:\MXC-A36\MXC-Screen_display\SW-FR-ÏÔʾOK+BT_GPIO\examples\turnkey\lvgl_Dashboard_8080\MDK-ARM\output\boot_load_burn.bin
Auto_Burn=True
Auto_Reset=True
Flash_Allerase=True
Designate_file=E:\MXC-A36\MXC-Screen_display\SW-FR-ÏÔʾOK+BT_GPIO\examples\turnkey\lvgl_Dashboard_8080\MDK-ARM\output\Project_mp_burn.bin
Designate_file_addr=0x72000
special_file1=E:\MXC-A36\MXC-Screen_display\SW-FR-ÏÔʾOK+BT_GPIO\examples\turnkey\lvgl_Dashboard_8080\Resource\img.hex
special_file1_addr=0x13a000
special_file2=

View File

@ -14,6 +14,9 @@
#define FDB_KEY_TOTAL_MILEAGE 0x00030002 //add by hsp 2024.03.04
#define FDB_KEY_TRIP_MILEAGE 0x00030003 //add by hsp 2024.03.04
#define FDB_KEY_UNIT_MODE 0x00030004 //add by hsp 2024.03.04
#define FDB_KEY_SP_CNT 0x00030005 //add by hsp 2024.03.04
#define FDB_KEY_RUN_TIME 0x00030006
int flashdb_init(void);

View File

@ -1,181 +0,0 @@
/*
* FreeRTOS V202112.00
* Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* http://www.FreeRTOS.org
* http://aws.amazon.com/freertos
*
* 1 tab == 4 spaces!
*/
/******************************************************************************
See http://www.freertos.org/a00110.html for an explanation of the
definitions contained in this file.
******************************************************************************/
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#include "app_config.h"
/*-----------------------------------------------------------
* Application specific definitions.
*
* These definitions should be adjusted for your particular hardware and
* application requirements.
*
* THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
* FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
* http://www.freertos.org/a00110.html
*----------------------------------------------------------*/
extern uint32_t SystemCoreClock;
/* Cortex M33 port configuration. */
#define configENABLE_MPU 0
#define configENABLE_FPU 1
#define configENABLE_TRUSTZONE 0
/* Constants related to the behaviour or the scheduler. */
#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
#define configUSE_PREEMPTION 1
#define configUSE_TIME_SLICING 1
#define configMAX_PRIORITIES ( FREERTOS_MAX_PRIORITY )
#define configIDLE_SHOULD_YIELD 1
#define configUSE_16_BIT_TICKS 0 /* Only for 8 and 16-bit hardware. */
/* Constants that describe the hardware and memory usage. */
#define configCPU_CLOCK_HZ SystemCoreClock
#define configMINIMAL_STACK_SIZE ( ( uint16_t ) 128 )
#define configMINIMAL_SECURE_STACK_SIZE ( 1024 )
#define configMAX_TASK_NAME_LEN ( 12 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 0x10000 ) )//( ( size_t ) ( 0x19400 ) )//( ( size_t ) ( 0x19000 ) )
#define configTICK_RATE_HZ ( ( TickType_t ) 1000 )
/* Constants that build features in or out. */
#define configUSE_MUTEXES 1
#define configUSE_TICKLESS_IDLE 1
#define configUSE_APPLICATION_TASK_TAG 0
#define configUSE_NEWLIB_REENTRANT 0
#define configUSE_CO_ROUTINES 0
#define configUSE_COUNTING_SEMAPHORES 1
#define configUSE_RECURSIVE_MUTEXES 1
#define configUSE_QUEUE_SETS 1
#define configUSE_TASK_NOTIFICATIONS 1
#define configUSE_TRACE_FACILITY 1
/* Constants that define which hook (callback) functions should be used. */
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 1
#define configUSE_MALLOC_FAILED_HOOK 0
/* Constants provided for debugging and optimisation assistance. */
#define configCHECK_FOR_STACK_OVERFLOW 2
#define configASSERT( x ) if( ( x ) == 0 ) { taskDISABLE_INTERRUPTS(); for( ;; ); }
#define configQUEUE_REGISTRY_SIZE 0
/* Software timer definitions. */
#define configUSE_TIMERS 1
#define configTIMER_TASK_PRIORITY ( 3 )
#define configTIMER_QUEUE_LENGTH 15
#define configTIMER_TASK_STACK_DEPTH ( configMINIMAL_STACK_SIZE )
/* Set the following definitions to 1 to include the API function, or zero
* to exclude the API function. NOTE: Setting an INCLUDE_ parameter to 0 is
* only necessary if the linker does not automatically remove functions that are
* not referenced anyway. */
#define INCLUDE_vTaskPrioritySet 1
#define INCLUDE_uxTaskPriorityGet 1
#define INCLUDE_vTaskDelete 1
#define INCLUDE_vTaskCleanUpResources 0
#define INCLUDE_vTaskSuspend 1
#define INCLUDE_vTaskDelayUntil 1
#define INCLUDE_vTaskDelay 1
#define INCLUDE_xTaskAbortDelay 1
#define INCLUDE_uxTaskGetStackHighWaterMark 0
#define INCLUDE_xTaskGetIdleTaskHandle 0
#define INCLUDE_xTaskGetHandle 1
#define INCLUDE_eTaskGetState 1
#define INCLUDE_xTaskResumeFromISR 0
#define INCLUDE_xTaskGetCurrentTaskHandle 1
#define INCLUDE_xTaskGetSchedulerState 0
#define INCLUDE_xSemaphoreGetMutexHolder 1
#define INCLUDE_xTimerPendFunctionCall 1
/* This demo makes use of one or more example stats formatting functions. These
* format the raw data provided by the uxTaskGetSystemState() function in to
* human readable ASCII form. See the notes in the implementation of vTaskList()
* within FreeRTOS/Source/tasks.c for limitations. */
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
/* Dimensions a buffer that can be used by the FreeRTOS+CLI command interpreter.
* See the FreeRTOS+CLI documentation for more information:
* http://www.FreeRTOS.org/FreeRTOS-Plus/FreeRTOS_Plus_CLI/ */
#define configCOMMAND_INT_MAX_OUTPUT_SIZE 2048
/* Interrupt priority configuration follows...................... */
/* Use the system definition, if there is one. */
#ifdef __NVIC_PRIO_BITS
#define configPRIO_BITS __NVIC_PRIO_BITS
#else
#define configPRIO_BITS 3 /* 8 priority levels. */
#endif
/* The lowest interrupt priority that can be used in a call to a "set priority"
* function. */
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 0x07
/* The highest interrupt priority that can be used by any interrupt service
* routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT
* CALL INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A
* HIGHER PRIORITY THAN THIS! (higher priorities are lower numeric values). */
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 1
/* Interrupt priorities used by the kernel port layer itself. These are generic
* to all Cortex-M ports, and do not rely on any particular library functions. */
#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << ( 8 - configPRIO_BITS ) )
/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
* See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << ( 8 - configPRIO_BITS ) )
#if ENABLE_RTOS_MONITOR == 1
/* Constants related to the generation of run time stats. */
#define configGENERATE_RUN_TIME_STATS 1
#define configUSE_TRACE_FACILITY 1
#define configUSE_STATS_FORMATTING_FUNCTIONS 1
#define portCONFIGURE_TIMER_FOR_RUN_TIME_STATS()
extern volatile unsigned int CPU_RunTime;
#define portGET_RUN_TIME_COUNTER_VALUE() CPU_RunTime
#define traceINCREASE_TICK_COUNT(x) do { \
void lv_tick_inc(uint32_t tick_period); \
lv_tick_inc(x); \
CPU_RunTime += x; \
} while (0)
#else
#define traceINCREASE_TICK_COUNT(x) lv_tick_inc(x)
#endif /* ENABLE_RTOS_MONITOR == 1 */
/* Enable static allocation. */
#define configSUPPORT_STATIC_ALLOCATION 0
#endif /* FREERTOS_CONFIG_H */

View File

@ -1,312 +0,0 @@
#ifndef _APP_CONFIG_H
#define _APP_CONFIG_H
// <<< Use Configuration Wizard in Context Menu >>>
/* ========================================================== */
/* ========= System configuration ========= */
/* ========================================================== */
// <h> System Configuration
#define BOARD_EVB_FR5090 1
#define BOARD_EVB_FR3092E 2
#define BOARD_EVB_FR3092E_CM 3
#define BOARD_EVB_FR3092E_RGB 4
// <o> BOARD_SEL
// <i> board EVB selection, default: BOARD_EVB_FR5090
// <1=> BOARD_EVB_FR5090
// <2=> BOARD_EVB_FR3092E
// <3=> BOARD_EVB_FR3092E_CM
#define BOARD_SEL 4
// <o> ENABLE_PSRAM
// <i> check to enable psram or not, default: No
// <0=> NO
// <1=> YES
#define ENABLE_PSRAM 0
// <o> DSP_ROM_CODE_XIP
// <i> check to choose DSP rom code running in iROM or XIP-Flash, default: iROM
// <0=> NO
// <1=> YES
#define DSP_ROM_CODE_XIP 0
#define DSP_CODE_LOAD_MODE_SDCARD 1
#define DSP_CODE_LOAD_MODE_XIP_RO 2
#define DSP_CODE_LOAD_MODE_FIX_ADDRESS 3
// <o> DSP_CODE_LOAD_MODE
// <i> choose dsp code load mode: 1. from sd card; 2. compiled into XIP bin file; 3. from fixed address in XIP flash
// <1=> DSP_CODE_LOAD_MODE_SDCARD
// <2=> DSP_CODE_LOAD_MODE_XIP_RO
// <3=> DSP_CODE_LOAD_MODE_FIX_ADDRESS
#define DSP_CODE_LOAD_MODE 2
// <o> DSP_CODE_FIX_ADDRESS
// <i> used to define where to fetch dsp code, this defination is valid when DSP_CODE_LOAD_MODE is DSP_CODE_LOAD_MODE_FIX_ADDRESS
#define DSP_CODE_FIX_ADDRESS 0x001C0000
#define CONTROLLER_CODE_LOAD_MODE_SDCARD 1
#define CONTROLLER_CODE_LOAD_MODE_XIP_RO 2
#define CONTROLLER_CODE_LOAD_MODE_FIX_ADDRESS 3
// <o> CONTROLLER_CODE_LOAD_MODE
// <i> choose dsp code load mode: 1. from sd card; 2. compiled into XIP bin file; 3. from fixed address in XIP flash
// <1=> CONTROLLER_CODE_LOAD_MODE_SDCARD
// <2=> CONTROLLER_CODE_LOAD_MODE_XIP_RO
// <3=> CONTROLLER_CODE_LOAD_MODE_FIX_ADDRESS
#define CONTROLLER_CODE_LOAD_MODE 2
// <o> CONTROLLER_CODE_INC_SENSOR_HUB
// <i> when CONTROLLER_CODE_LOAD_MODE is CONTROLLER_CODE_LOAD_MODE_XIP_RO, choose which firmware is commpiled into XIP bin file.
// <0=> NO
// <1=> YES
#define CONTROLLER_CODE_INC_SENSOR_HUB 0
// <o> CONTROLLER_CODE_FIX_ADDRESS
// <i> used to define where to fetch controller code, this defination is valid when CONTROLLER_CODE_LOAD_MODE is CONTROLLER_CODE_LOAD_MODE_FIX_ADDRESS
#define CONTROLLER_CODE_FIX_ADDRESS 0x001AC000
// </h>
/* ========================================================== */
/* ========= FreeRTOS configuration ========= */
/* ========================================================== */
// <h> FreeRTOS Configuration
// <o> ENABLE_RTOS_MONITOR
// <i> check to enable or disable RTOS monitor, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define ENABLE_RTOS_MONITOR 1
// <o> FREERTOS_MAX_PRIORITY
// <i> used to define priority of monitor task
// <1-10:1>
#define FREERTOS_MAX_PRIORITY 10
// <o> MONITOR_TASK_PRIORITY
// <i> used to define priority of monitor task, should not be larger than FREERTOS_MAX_PRIORITY
#define MONITOR_TASK_PRIORITY 1
#if MONITOR_TASK_PRIORITY > FREERTOS_MAX_PRIORITY
#error "MONITOR_TASK_PRIORITY should not be larger than FREERTOS_MAX_PRIORITY"
#endif
// <o> APP_TASK_PRIORITY
// <i> used to define priority of app task, should not be larger than FREERTOS_MAX_PRIORITY
#define APP_TASK_PRIORITY 2
#if APP_TASK_PRIORITY > FREERTOS_MAX_PRIORITY
#error "APP_TASK_PRIORITY should not be larger than FREERTOS_MAX_PRIORITY"
#endif
// <o> GUI_TASK_PRIORITY
// <i> used to define priority of gui task, should not be larger than FREERTOS_MAX_PRIORITY
#define GUI_TASK_PRIORITY 3
#if GUI_TASK_PRIORITY > FREERTOS_MAX_PRIORITY
#error "GUI_TASK_PRIORITY should not be larger than FREERTOS_MAX_PRIORITY"
#endif
// <o> SYNC_TASK_PRIORITY
// <i> used to define priority of sync task, should not be larger than FREERTOS_MAX_PRIORITY
#define SYNC_TASK_PRIORITY 3
#if SYNC_TASK_PRIORITY > FREERTOS_MAX_PRIORITY
#error "SYNC_TASK_PRIORITY should not be larger than FREERTOS_MAX_PRIORITY"
#endif
// <o> HOST_TASK_PRIORITY
// <i> used to define priority of host task, should not be larger than FREERTOS_MAX_PRIORITY
#define HOST_TASK_PRIORITY 5
#if HOST_TASK_PRIORITY > FREERTOS_MAX_PRIORITY
#error "HOST_TASK_PRIORITY should not be larger than FREERTOS_MAX_PRIORITY"
#endif
// <o> RPMSG_TASK_PRIORITY
// <i> used to define priority of rpmsg task, should not be larger than FREERTOS_MAX_PRIORITY
#define RPMSG_TASK_PRIORITY 6
#if RPMSG_TASK_PRIORITY > FREERTOS_MAX_PRIORITY
#error "RPMSG_TASK_PRIORITY should not be larger than FREERTOS_MAX_PRIORITY"
#endif
// <o> AUDIO_SCENE_TASK_PRIORITY
// <i> used to define priority of rpmsg task, should not be larger than FREERTOS_MAX_PRIORITY
#define AUDIO_SCENE_TASK_PRIORITY 6
#if AUDIO_SCENE_TASK_PRIORITY > FREERTOS_MAX_PRIORITY
#error "AUDIO_SCENE_TASK_PRIORITY should not be larger than FREERTOS_MAX_PRIORITY"
#endif
// <o> MONITOR_TASK_STACK_SIZE
// <i> used to define priority of monitor task
#define MONITOR_TASK_STACK_SIZE 128
// <o> APP_TASK_STACK_SIZE
// <i> used to define priority of APP task
#define APP_TASK_STACK_SIZE 2048 //256
// <o> GUI_TASK_STACK_SIZE
// <i> used to define priority of LVGL task
#define GUI_TASK_STACK_SIZE 2048
// <o> SYNC_TASK_STACK_SIZE
// <i> used to define priority of LVGL-SYNC task
#define SYNC_TASK_STACK_SIZE 2048
// <o> HOST_TASK_STACK_SIZE
// <i> used to define priority of btdm-host task
#define HOST_TASK_STACK_SIZE 2048
// <o> RPMSG_TASK_STACK_SIZE
// <i> used to define priority of RPMSG task
#define RPMSG_TASK_STACK_SIZE 2048
// <o> AUDIO_SCENE_TASK_STACK_SIZE
// <i> used to define priority of audio scene task
#define AUDIO_SCENE_TASK_STACK_SIZE 1024
// </h>
/* ========================================================== */
/* ========= DSP configuration ========= */
/* ========================================================== */
// <h> DSP Configuration
// <o> ENABLE_DSP
// <i> check to enable or disable DSP, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define ENABLE_DSP 1
// </h>
/* ========================================================== */
/* ========= BTDM configuration ========= */
/* ========================================================== */
// <h> BTDM STACK Configuration
// <o> BTDM_STACK_ENABLE
// <i> check to enable or disable bluetooth, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE 0
// <o> BTDM_STACK_HCI_BAUDRATE
// <i> check to enable or disable bluetooth, default: DISABLE
// <1500000=> 1500000
// <921600=> 921600
// <460800=> 460800
// <115200=> 115200
#define BTDM_STACK_HCI_BAUDRATE 1500000
// <o> BTDM_STACK_ENABLE_BT
// <i> check to enable or disable classic bluetooth, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE_BT 0
// <o> BTDM_STACK_ENABLE_HF
// <i> check to enable or disable hand free, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE_HF 0
// <o> BTDM_STACK_ENABLE_AG
// <i> check to enable or disable audio-gate, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE_AG 0
// <o> BTDM_STACK_ENABLE_A2DP_SRC
// <i> check to enable or disable a2dp srouce, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE_A2DP_SRC 0
// <o> BTDM_STACK_ENABLE_A2DP_SNK
// <i> check to enable or disable a2dp sink, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE_A2DP_SNK 0
// <o> BTDM_STACK_ENABLE_AVRCP
// <i> check to enable or disable avrcp, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE_AVRCP 0
// <o> BTDM_STACK_ENABLE_AAC
// <i> check to enable or disable aac codec, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE_AAC 0
// <o> BTDM_STACK_ENABLE_PBAP
// <i> check to enable or disable pbap, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE_PBAP 0
// <o> BTDM_STACK_ENABLE_SPP
// <i> check to enable or disable spp, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BTDM_STACK_ENABLE_SPP 0
// <o> BLE_PROFILE_ENABLE_HID
// <i> check to enable or disable hid profile, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BLE_PROFILE_HID 0
// <o> BLE_PROFILE_ENABLE_ANCS
// <i> check to enable or disable ANCS profile, default: DISABLE
// <0=> DISABLE
// <1=> ENABLE
#define BLE_PROFILE_ENABLE_ANCS 0
#if BTDM_STACK_ENABLE == 0
#if ((BTDM_STACK_ENABLE_BT == 1) \
|| (BLE_PROFILE_ENABLE_HID == 1) \
|| (BLE_PROFILE_ENABLE_ANCS == 1))
#error "BTDM_STACK_ENABLE should be set"
#endif
#endif
#if BTDM_STACK_ENABLE_BT == 0
#if ((BTDM_STACK_ENABLE_HF == 1) \
|| (BTDM_STACK_ENABLE_AG == 1) \
|| (BTDM_STACK_ENABLE_A2DP_SRC == 1) \
|| (BTDM_STACK_ENABLE_A2DP_SNK == 1) \
|| (BTDM_STACK_ENABLE_AVRCP == 1) \
|| (BTDM_STACK_ENABLE_AAC == 1))
#error "BTDM_STACK_ENABLE_BT should be set"
#endif
#endif
// </h>
/* ========================================================== */
/* ========= BTDM Address configuration ========= */
/* ========================================================== */
// <h> BTDM Address configuration
// <o> BT_ADDR_RANDOM_ENABLE
// <i> check to enable or disable random bt addr, default: ENABLE
// <0=> DISABLE
// <1=> ENABLE
#define BT_ADDR_RANDOM_ENABLE 1
// <o> BLE_ADDR_RANDOM_ENABLE
// <i> check to enable or disable random ble static addr, default: ENABLE
// <0=> DISABLE
// <1=> ENABLE
#define BLE_ADDR_RANDOM_ENABLE 1
// </h>
// <<< end of configuration section >>>
#endif // _APP_CONFIG_H

View File

@ -1,77 +0,0 @@
/*
* This file is part of the EasyLogger Library.
*
* Copyright (c) 2015-2016, Armink, <armink.ztl@gmail.com>
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* 'Software'), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Function: It is the configure head file for this library.
* Created on: 2015-07-30
*/
#ifndef _ELOG_CFG_H_
#define _ELOG_CFG_H_
/*---------------------------------------------------------------------------*/
/* enable log output. */
#define ELOG_OUTPUT_ENABLE
/* setting static output log level. range: from ELOG_LVL_ASSERT to ELOG_LVL_VERBOSE */
#define ELOG_OUTPUT_LVL ELOG_LVL_VERBOSE
/* enable assert check */
#define ELOG_ASSERT_ENABLE
/* buffer size for every line's log */
#define ELOG_LINE_BUF_SIZE 512
/* output line number max length */
#define ELOG_LINE_NUM_MAX_LEN 5
/* output filter's tag max length */
#define ELOG_FILTER_TAG_MAX_LEN 20
/* output filter's keyword max length */
#define ELOG_FILTER_KW_MAX_LEN 30
/* output filter's tag level max num */
#define ELOG_FILTER_TAG_LVL_MAX_NUM 5
/* output newline sign */
#define ELOG_NEWLINE_SIGN "\r\n"
/*---------------------------------------------------------------------------*/
/* enable log color */
#define ELOG_COLOR_ENABLE
/* change the some level logs to not default color if you want */
#define ELOG_COLOR_ASSERT (F_MAGENTA B_NULL S_NORMAL)
#define ELOG_COLOR_ERROR (F_RED B_NULL S_NORMAL)
#define ELOG_COLOR_WARN (F_YELLOW B_NULL S_NORMAL)
#define ELOG_COLOR_INFO (F_CYAN B_NULL S_NORMAL)
#define ELOG_COLOR_DEBUG (F_GREEN B_NULL S_NORMAL)
#define ELOG_COLOR_VERBOSE (F_BLUE B_NULL S_NORMAL)
/*---------------------------------------------------------------------------*/
/* enable asynchronous output mode */
//#define ELOG_ASYNC_OUTPUT_ENABLE
/* the highest output level for async mode, other level will sync output */
#define ELOG_ASYNC_OUTPUT_LVL ELOG_LVL_DEBUG
/* buffer size for asynchronous output mode */
#define ELOG_ASYNC_OUTPUT_BUF_SIZE (ELOG_LINE_BUF_SIZE * 10)
/* each asynchronous output's log which must end with newline sign */
#define ELOG_ASYNC_LINE_OUTPUT
/* asynchronous output mode using POSIX pthread implementation */
///#define ELOG_ASYNC_OUTPUT_USING_PTHREAD
/*---------------------------------------------------------------------------*/
/* enable buffered output mode */
//#define ELOG_BUF_OUTPUT_ENABLE
/* buffer size for buffered output mode */
#define ELOG_BUF_OUTPUT_BUF_SIZE (ELOG_LINE_BUF_SIZE * 10)
#endif /* _ELOG_CFG_H_ */

View File

@ -1,40 +0,0 @@
/*
* Copyright (c) 2006-2018, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
* Change Logs:
* Date Author Notes
* 2018-05-17 armink the first version
*/
#ifndef _FAL_CFG_H_
#define _FAL_CFG_H_
#include "app_config.h"
#define FAL_DEBUG 1
#define FAL_PART_HAS_TABLE_CFG
#define FAL_USING_SFUD_PORT
#define NOR_FLASH_DEV_NAME "norflash0"
/* ===================== Flash device Configuration ========================= */
extern const struct fal_flash_dev onchip_flash;
//extern struct fal_flash_dev nor_flash0;
/* flash device table */
#define FAL_FLASH_DEV_TABLE \
{ \
&onchip_flash, \
}
/* ====================== Partition Configuration ========================== */
#ifdef FAL_PART_HAS_TABLE_CFG
/* partition table */
#define FAL_PART_TABLE \
{ \
{FAL_PART_MAGIC_WORD, "FlashEnv", "flashdb_onchip", CONTROLLER_CODE_FIX_ADDRESS - 12*1024, 12*1024, 0}, \
}
#endif /* FAL_PART_HAS_TABLE_CFG */
#endif /* _FAL_CFG_H_ */

View File

@ -1,786 +0,0 @@
/**
* @file lv_conf.h
* Configuration file for v8.3.0
*/
/*
* Copy this file as `lv_conf.h`
* 1. simply next to the `lvgl` folder
* 2. or any other places and
* - define `LV_CONF_INCLUDE_SIMPLE`
* - add the path as include path
*/
/* clang-format off */
#if 1 /*Set it to "1" to enable content*/
#ifndef LV_CONF_H
#define LV_CONF_H
#include <stdint.h>
/*====================
CUSTOM SETTINGS
*====================*/
#define LVGL_AUTO_CREATE_PAGE
#define FAST_SCR_BUFFER
#ifdef FAST_SCR_BUFFER
#define BUFFER_HOR_RES_MAX (480)
#define DECODE_LINE_NUMBER (56)
#define DECODE_BUFFER_SIZE (BUFFER_HOR_RES_MAX*DECODE_LINE_NUMBER*2)
//extern uint32_t fast_scr[];
extern uint32_t display_framebuffer_block[];
#define fast_scr display_framebuffer_block
#include "fr30xx.h"
extern void extern_flash_read(uint8_t *Buffer, uint32_t flash_Address, uint32_t Length);
#define internal_flash_read(x, y, z) flash_read(QSPI0, x, y, z)
#endif
/*====================
COLOR SETTINGS
*====================*/
/*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
#define LV_COLOR_DEPTH 16
/*Swap the 2 bytes of RGB565 color. Useful if the display has an 8-bit interface (e.g. SPI)*/
#define LV_COLOR_16_SWAP 0
/*Enable features to draw on transparent background.
*It's required if opa, and transform_* style properties are used.
*Can be also used if the UI is above another layer, e.g. an OSD menu or video player.*/
#define LV_COLOR_SCREEN_TRANSP 0
/* Adjust color mix functions rounding. GPUs might calculate color mix (blending) differently.
* 0: round down, 64: round up from x.75, 128: round up from half, 192: round up from x.25, 254: round up */
#define LV_COLOR_MIX_ROUND_OFS 0
/*Images pixels with this color will not be drawn if they are chroma keyed)*/
#define LV_COLOR_CHROMA_KEY lv_color_hex(0x000000) /*pure green*/
/*=========================
MEMORY SETTINGS
*=========================*/
/*1: use custom malloc/free, 0: use the built-in `lv_mem_alloc()` and `lv_mem_free()`*/
#define LV_MEM_CUSTOM 1
#if LV_MEM_CUSTOM == 0
/*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/
#define LV_MEM_SIZE (48U * 1024U) /*[bytes]*/
/*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/
#define LV_MEM_ADR 0 /*0: unused*/
/*Instead of an address give a memory allocator that will be called to get a memory pool for LVGL. E.g. my_malloc*/
#if LV_MEM_ADR == 0
#undef LV_MEM_POOL_INCLUDE
#undef LV_MEM_POOL_ALLOC
#endif
#else /*LV_MEM_CUSTOM*/
// #define LV_MEM_CUSTOM_INCLUDE <stdlib.h> /*Header for the dynamic memory function*/
// #define LV_MEM_CUSTOM_ALLOC malloc
// #define LV_MEM_CUSTOM_FREE free
// #define LV_MEM_CUSTOM_REALLOC realloc
#define LV_MEM_CUSTOM_INCLUDE "FreeRTOS.h" /*Header for the dynamic memory function*/
void * pvPortRealloc ( void *pv, uint32_t xNewSize );
#define LV_MEM_CUSTOM_ALLOC pvPortMalloc
#define LV_MEM_CUSTOM_FREE vPortFree
#define LV_MEM_CUSTOM_REALLOC pvPortRealloc
#endif /*LV_MEM_CUSTOM*/
/*Number of the intermediate memory buffer used during rendering and other internal processing mechanisms.
*You will see an error log message if there wasn't enough buffers. */
#define LV_MEM_BUF_MAX_NUM 16
/*Use the standard `memcpy` and `memset` instead of LVGL's own functions. (Might or might not be faster).*/
#define LV_MEMCPY_MEMSET_STD 0
/*====================
HAL SETTINGS
*====================*/
/*Default display refresh period. LVG will redraw changed areas with this period time*/
#define LV_DISP_DEF_REFR_PERIOD 15 /*[ms]*/
/*Input device read period in milliseconds*/
#define LV_INDEV_DEF_READ_PERIOD 15 /*[ms]*/
/*Use a custom tick source that tells the elapsed time in milliseconds.
*It removes the need to manually update the tick with `lv_tick_inc()`)*/
#define LV_TICK_CUSTOM 0
#if LV_TICK_CUSTOM
#define LV_TICK_CUSTOM_INCLUDE "Arduino.h" /*Header for the system time function*/
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/
#endif /*LV_TICK_CUSTOM*/
/*Default Dot Per Inch. Used to initialize default sizes such as widgets sized, style paddings.
*(Not so important, you can adjust it to modify default sizes and spaces)*/
#define LV_DPI_DEF 130 /*[px/inch]*/
/*=======================
* FEATURE CONFIGURATION
*=======================*/
/*-------------
* Drawing
*-----------*/
/*Enable complex draw engine.
*Required to draw shadow, gradient, rounded corners, circles, arc, skew lines, image transformations or any masks*/
#define LV_DRAW_COMPLEX 1
#if LV_DRAW_COMPLEX != 0
/*Allow buffering some shadow calculation.
*LV_SHADOW_CACHE_SIZE is the max. shadow size to buffer, where shadow size is `shadow_width + radius`
*Caching has LV_SHADOW_CACHE_SIZE^2 RAM cost*/
#define LV_SHADOW_CACHE_SIZE 0
/* Set number of maximally cached circle data.
* The circumference of 1/4 circle are saved for anti-aliasing
* radius * 4 bytes are used per circle (the most often used radiuses are saved)
* 0: to disable caching */
#define LV_CIRCLE_CACHE_SIZE 4
#endif /*LV_DRAW_COMPLEX*/
/**
* "Simple layers" are used when a widget has `style_opa < 255` to buffer the widget into a layer
* and blend it as an image with the given opacity.
* Note that `bg_opa`, `text_opa` etc don't require buffering into layer)
* The widget can be buffered in smaller chunks to avoid using large buffers.
*
* - LV_LAYER_SIMPLE_BUF_SIZE: [bytes] the optimal target buffer size. LVGL will try to allocate it
* - LV_LAYER_SIMPLE_FALLBACK_BUF_SIZE: [bytes] used if `LV_LAYER_SIMPLE_BUF_SIZE` couldn't be allocated.
*
* Both buffer sizes are in bytes.
* "Transformed layers" (where transform_angle/zoom properties are used) use larger buffers
* and can't be drawn in chunks. So these settings affects only widgets with opacity.
*/
#define LV_LAYER_SIMPLE_BUF_SIZE (24 * 1024)
#define LV_LAYER_SIMPLE_FALLBACK_BUF_SIZE (3 * 1024)
/*Default image cache size. Image caching keeps the images opened.
*If only the built-in image formats are used there is no real advantage of caching. (I.e. if no new image decoder is added)
*With complex image decoders (e.g. PNG or JPG) caching can save the continuous open/decode of images.
*However the opened images might consume additional RAM.
*0: to disable caching*/
#define LV_IMG_CACHE_DEF_SIZE 0
/*Number of stops allowed per gradient. Increase this to allow more stops.
*This adds (sizeof(lv_color_t) + 1) bytes per additional stop*/
#define LV_GRADIENT_MAX_STOPS 2
/*Default gradient buffer size.
*When LVGL calculates the gradient "maps" it can save them into a cache to avoid calculating them again.
*LV_GRAD_CACHE_DEF_SIZE sets the size of this cache in bytes.
*If the cache is too small the map will be allocated only while it's required for the drawing.
*0 mean no caching.*/
#define LV_GRAD_CACHE_DEF_SIZE 0
/*Allow dithering the gradients (to achieve visual smooth color gradients on limited color depth display)
*LV_DITHER_GRADIENT implies allocating one or two more lines of the object's rendering surface
*The increase in memory consumption is (32 bits * object width) plus 24 bits * object width if using error diffusion */
#define LV_DITHER_GRADIENT 0
#if LV_DITHER_GRADIENT
/*Add support for error diffusion dithering.
*Error diffusion dithering gets a much better visual result, but implies more CPU consumption and memory when drawing.
*The increase in memory consumption is (24 bits * object's width)*/
#define LV_DITHER_ERROR_DIFFUSION 0
#endif
/*Maximum buffer size to allocate for rotation.
*Only used if software rotation is enabled in the display driver.*/
#define LV_DISP_ROT_MAX_BUF (10*1024)
/*-------------
* GPU
*-----------*/
/*Use Arm's 2D acceleration library Arm-2D */
#define LV_USE_GPU_ARM2D 0
/*Use STM32's DMA2D (aka Chrom Art) GPU*/
#define LV_USE_GPU_STM32_DMA2D 0
#if LV_USE_GPU_STM32_DMA2D
/*Must be defined to include path of CMSIS header of target processor
e.g. "stm32f769xx.h" or "stm32f429xx.h"*/
#define LV_GPU_DMA2D_CMSIS_INCLUDE
#endif
/*Use SWM341's DMA2D GPU*/
#define LV_USE_GPU_SWM341_DMA2D 0
#if LV_USE_GPU_SWM341_DMA2D
#define LV_GPU_SWM341_DMA2D_INCLUDE "SWM341.h"
#endif
/*Use NXP's PXP GPU iMX RTxxx platforms*/
#define LV_USE_GPU_NXP_PXP 0
#if LV_USE_GPU_NXP_PXP
/*1: Add default bare metal and FreeRTOS interrupt handling routines for PXP (lv_gpu_nxp_pxp_osa.c)
* and call lv_gpu_nxp_pxp_init() automatically during lv_init(). Note that symbol SDK_OS_FREE_RTOS
* has to be defined in order to use FreeRTOS OSA, otherwise bare-metal implementation is selected.
*0: lv_gpu_nxp_pxp_init() has to be called manually before lv_init()
*/
#define LV_USE_GPU_NXP_PXP_AUTO_INIT 0
#endif
/*Use NXP's VG-Lite GPU iMX RTxxx platforms*/
#define LV_USE_GPU_NXP_VG_LITE 0
/*Use SDL renderer API*/
#define LV_USE_GPU_SDL 0
#if LV_USE_GPU_SDL
#define LV_GPU_SDL_INCLUDE_PATH <SDL2/SDL.h>
/*Texture cache size, 8MB by default*/
#define LV_GPU_SDL_LRU_SIZE (1024 * 1024 * 8)
/*Custom blend mode for mask drawing, disable if you need to link with older SDL2 lib*/
#define LV_GPU_SDL_CUSTOM_BLEND_MODE (SDL_VERSION_ATLEAST(2, 0, 6))
#endif
/*-------------
* Logging
*-----------*/
/*Enable the log module*/
#define LV_USE_LOG 0
#if LV_USE_LOG
/*How important log should be added:
*LV_LOG_LEVEL_TRACE A lot of logs to give detailed information
*LV_LOG_LEVEL_INFO Log important events
*LV_LOG_LEVEL_WARN Log if something unwanted happened but didn't cause a problem
*LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail
*LV_LOG_LEVEL_USER Only logs added by the user
*LV_LOG_LEVEL_NONE Do not log anything*/
#define LV_LOG_LEVEL LV_LOG_LEVEL_WARN
/*1: Print the log with 'printf';
*0: User need to register a callback with `lv_log_register_print_cb()`*/
#define LV_LOG_PRINTF 0
/*Enable/disable LV_LOG_TRACE in modules that produces a huge number of logs*/
#define LV_LOG_TRACE_MEM 1
#define LV_LOG_TRACE_TIMER 1
#define LV_LOG_TRACE_INDEV 1
#define LV_LOG_TRACE_DISP_REFR 1
#define LV_LOG_TRACE_EVENT 1
#define LV_LOG_TRACE_OBJ_CREATE 1
#define LV_LOG_TRACE_LAYOUT 1
#define LV_LOG_TRACE_ANIM 1
#endif /*LV_USE_LOG*/
/*-------------
* Asserts
*-----------*/
/*Enable asserts if an operation is failed or an invalid data is found.
*If LV_USE_LOG is enabled an error message will be printed on failure*/
#define LV_USE_ASSERT_NULL 1 /*Check if the parameter is NULL. (Very fast, recommended)*/
#define LV_USE_ASSERT_MALLOC 1 /*Checks is the memory is successfully allocated or no. (Very fast, recommended)*/
#define LV_USE_ASSERT_STYLE 0 /*Check if the styles are properly initialized. (Very fast, recommended)*/
#define LV_USE_ASSERT_MEM_INTEGRITY 0 /*Check the integrity of `lv_mem` after critical operations. (Slow)*/
#define LV_USE_ASSERT_OBJ 0 /*Check the object's type and existence (e.g. not deleted). (Slow)*/
/*Add a custom handler when assert happens e.g. to restart the MCU*/
#define LV_ASSERT_HANDLER_INCLUDE <stdint.h>
#define LV_ASSERT_HANDLER while(1); /*Halt by default*/
/*-------------
* Others
*-----------*/
/*1: Show CPU usage and FPS count*/
#define LV_USE_PERF_MONITOR 0
#if LV_USE_PERF_MONITOR
#define LV_USE_PERF_MONITOR_POS LV_ALIGN_CENTER
#endif
/*1: Show the used memory and the memory fragmentation
* Requires LV_MEM_CUSTOM = 0*/
#define LV_USE_MEM_MONITOR 0
#if LV_USE_MEM_MONITOR
#define LV_USE_MEM_MONITOR_POS LV_ALIGN_BOTTOM_LEFT
#endif
/*1: Draw random colored rectangles over the redrawn areas*/
#define LV_USE_REFR_DEBUG 0
/*Change the built in (v)snprintf functions*/
#define LV_SPRINTF_CUSTOM 1
#if LV_SPRINTF_CUSTOM
#define LV_SPRINTF_INCLUDE <stdio.h>
#define lv_snprintf snprintf
#define lv_vsnprintf vsnprintf
#else /*LV_SPRINTF_CUSTOM*/
#define LV_SPRINTF_USE_FLOAT 0
#endif /*LV_SPRINTF_CUSTOM*/
#define LV_USE_USER_DATA 1
/*Garbage Collector settings
*Used if lvgl is bound to higher level language and the memory is managed by that language*/
#define LV_ENABLE_GC 0
#if LV_ENABLE_GC != 0
#define LV_GC_INCLUDE "gc.h" /*Include Garbage Collector related things*/
#endif /*LV_ENABLE_GC*/
/*=====================
* COMPILER SETTINGS
*====================*/
/*For big endian systems set to 1*/
#define LV_BIG_ENDIAN_SYSTEM 0
/*Define a custom attribute to `lv_tick_inc` function*/
#define LV_ATTRIBUTE_TICK_INC
/*Define a custom attribute to `lv_timer_handler` function*/
#define LV_ATTRIBUTE_TIMER_HANDLER
/*Define a custom attribute to `lv_disp_flush_ready` function*/
#define LV_ATTRIBUTE_FLUSH_READY
/*Required alignment size for buffers*/
#define LV_ATTRIBUTE_MEM_ALIGN_SIZE 1
/*Will be added where memories needs to be aligned (with -Os data might not be aligned to boundary by default).
* E.g. __attribute__((aligned(4)))*/
#define LV_ATTRIBUTE_MEM_ALIGN
/*Attribute to mark large constant arrays for example font's bitmaps*/
#define LV_ATTRIBUTE_LARGE_CONST
/*Compiler prefix for a big array declaration in RAM*/
#define LV_ATTRIBUTE_LARGE_RAM_ARRAY
/*Place performance critical functions into a faster memory (e.g RAM)*/
#define LV_ATTRIBUTE_FAST_MEM __attribute__((section("ram_code")))
#define LV_IMG_FAST_MEM __attribute__((section("ram_code")))
/*Prefix variables that are used in GPU accelerated operations, often these need to be placed in RAM sections that are DMA accessible*/
#define LV_ATTRIBUTE_DMA
/*Export integer constant to binding. This macro is used with constants in the form of LV_<CONST> that
*should also appear on LVGL binding API such as Micropython.*/
#define LV_EXPORT_CONST_INT(int_value) struct _silence_gcc_warning /*The default value just prevents GCC warning*/
/*Extend the default -32k..32k coordinate range to -4M..4M by using int32_t for coordinates instead of int16_t*/
#define LV_USE_LARGE_COORD 0
/*==================
* FONT USAGE
*===================*/
/*Montserrat fonts with ASCII range and some symbols using bpp = 4
*https://fonts.google.com/specimen/Montserrat*/
#define LV_FONT_MONTSERRAT_8 0
#define LV_FONT_MONTSERRAT_10 0
#define LV_FONT_MONTSERRAT_12 1
#define LV_FONT_MONTSERRAT_14 1
#define LV_FONT_MONTSERRAT_16 1
#define LV_FONT_MONTSERRAT_18 0
#define LV_FONT_MONTSERRAT_20 0
#define LV_FONT_MONTSERRAT_22 0
#define LV_FONT_MONTSERRAT_24 0
#define LV_FONT_MONTSERRAT_26 0
#define LV_FONT_MONTSERRAT_28 1
#define LV_FONT_MONTSERRAT_30 0
#define LV_FONT_MONTSERRAT_32 0
#define LV_FONT_MONTSERRAT_34 0
#define LV_FONT_MONTSERRAT_36 0
#define LV_FONT_MONTSERRAT_38 0
#define LV_FONT_MONTSERRAT_40 0
#define LV_FONT_MONTSERRAT_42 0
#define LV_FONT_MONTSERRAT_44 0
#define LV_FONT_MONTSERRAT_46 0
#define LV_FONT_MONTSERRAT_48 0
/*Demonstrate special features*/
#define LV_FONT_MONTSERRAT_12_SUBPX 0
#define LV_FONT_MONTSERRAT_28_COMPRESSED 0 /*bpp = 3*/
#define LV_FONT_DEJAVU_16_PERSIAN_HEBREW 0 /*Hebrew, Arabic, Persian letters and all their forms*/
#define LV_FONT_SIMSUN_16_CJK 0 /*1000 most common CJK radicals*/
/*Pixel perfect monospace fonts*/
#define LV_FONT_UNSCII_8 0
#define LV_FONT_UNSCII_16 0
/*Optionally declare custom fonts here.
*You can use these fonts as default font too and they will be available globally.
*E.g. #define LV_FONT_CUSTOM_DECLARE LV_FONT_DECLARE(my_font_1) LV_FONT_DECLARE(my_font_2)*/
#define LV_FONT_CUSTOM_DECLARE
/*Always set a default font*/
#define LV_FONT_DEFAULT &lv_font_montserrat_14
/*Enable handling large font and/or fonts with a lot of characters.
*The limit depends on the font size, font face and bpp.
*Compiler error will be triggered if a font needs it.*/
#define LV_FONT_FMT_TXT_LARGE 1
/*Enables/disables support for compressed fonts.*/
#define LV_USE_FONT_COMPRESSED 0
/*Enable subpixel rendering*/
#define LV_USE_FONT_SUBPX 0
#if LV_USE_FONT_SUBPX
/*Set the pixel order of the display. Physical order of RGB channels. Doesn't matter with "normal" fonts.*/
#define LV_FONT_SUBPX_BGR 0 /*0: RGB; 1:BGR order*/
#endif
/*Enable drawing placeholders when glyph dsc is not found*/
#define LV_USE_FONT_PLACEHOLDER 1
/*=================
* TEXT SETTINGS
*=================*/
/**
* Select a character encoding for strings.
* Your IDE or editor should have the same character encoding
* - LV_TXT_ENC_UTF8
* - LV_TXT_ENC_ASCII
*/
#define LV_TXT_ENC LV_TXT_ENC_UTF8
/*Can break (wrap) texts on these chars*/
#define LV_TXT_BREAK_CHARS " ,.;:-_"
/*If a word is at least this long, will break wherever "prettiest"
*To disable, set to a value <= 0*/
#define LV_TXT_LINE_BREAK_LONG_LEN 0
/*Minimum number of characters in a long word to put on a line before a break.
*Depends on LV_TXT_LINE_BREAK_LONG_LEN.*/
#define LV_TXT_LINE_BREAK_LONG_PRE_MIN_LEN 3
/*Minimum number of characters in a long word to put on a line after a break.
*Depends on LV_TXT_LINE_BREAK_LONG_LEN.*/
#define LV_TXT_LINE_BREAK_LONG_POST_MIN_LEN 3
/*The control character to use for signalling text recoloring.*/
#define LV_TXT_COLOR_CMD "#"
/*Support bidirectional texts. Allows mixing Left-to-Right and Right-to-Left texts.
*The direction will be processed according to the Unicode Bidirectional Algorithm:
*https://www.w3.org/International/articles/inline-bidi-markup/uba-basics*/
#define LV_USE_BIDI 1
#if LV_USE_BIDI
/*Set the default direction. Supported values:
*`LV_BASE_DIR_LTR` Left-to-Right
*`LV_BASE_DIR_RTL` Right-to-Left
*`LV_BASE_DIR_AUTO` detect texts base direction*/
#define LV_BIDI_BASE_DIR_DEF LV_BASE_DIR_AUTO
#endif
/*Enable Arabic/Persian processing
*In these languages characters should be replaced with an other form based on their position in the text*/
#define LV_USE_ARABIC_PERSIAN_CHARS 1
/*==================
* WIDGET USAGE
*================*/
/*Documentation of the widgets: https://docs.lvgl.io/latest/en/html/widgets/index.html*/
#define LV_USE_ARC 1
#define LV_USE_BAR 1
#define LV_USE_BTN 1
#define LV_USE_BTNMATRIX 1
#define LV_USE_CANVAS 1
#define LV_USE_CHECKBOX 1
#define LV_USE_DROPDOWN 1 /*Requires: lv_label*/
#define LV_USE_IMG 1 /*Requires: lv_label*/
#define LV_USE_LABEL 1
#if LV_USE_LABEL
#define LV_LABEL_TEXT_SELECTION 1 /*Enable selecting text of the label*/
#define LV_LABEL_LONG_TXT_HINT 1 /*Store some extra info in labels to speed up drawing of very long texts*/
#endif
#define LV_USE_LINE 1
#define LV_USE_ROLLER 1 /*Requires: lv_label*/
#if LV_USE_ROLLER
#define LV_ROLLER_INF_PAGES 7 /*Number of extra "pages" when the roller is infinite*/
#endif
#define LV_USE_SLIDER 1 /*Requires: lv_bar*/
#define LV_USE_SWITCH 1
#define LV_USE_TEXTAREA 1 /*Requires: lv_label*/
#if LV_USE_TEXTAREA != 0
#define LV_TEXTAREA_DEF_PWD_SHOW_TIME 1500 /*ms*/
#endif
#define LV_USE_TABLE 1
/*==================
* EXTRA COMPONENTS
*==================*/
/*-----------
* Widgets
*----------*/
#define LV_USE_ANIMIMG 1
#define LV_USE_CALENDAR 1
#if LV_USE_CALENDAR
#define LV_CALENDAR_WEEK_STARTS_MONDAY 0
#if LV_CALENDAR_WEEK_STARTS_MONDAY
#define LV_CALENDAR_DEFAULT_DAY_NAMES {"Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"}
#else
#define LV_CALENDAR_DEFAULT_DAY_NAMES {"Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"}
#endif
#define LV_CALENDAR_DEFAULT_MONTH_NAMES {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
#define LV_USE_CALENDAR_HEADER_ARROW 1
#define LV_USE_CALENDAR_HEADER_DROPDOWN 1
#endif /*LV_USE_CALENDAR*/
#define LV_USE_CHART 1
#define LV_USE_COLORWHEEL 1
#define LV_USE_IMGBTN 1
#define LV_USE_KEYBOARD 1
#define LV_USE_LED 1
#define LV_USE_LIST 1
#define LV_USE_MENU 1
#define LV_USE_METER 1
#define LV_USE_MSGBOX 1
#define LV_USE_SPAN 1
#if LV_USE_SPAN
/*A line text can contain maximum num of span descriptor */
#define LV_SPAN_SNIPPET_STACK_SIZE 64
#endif
#define LV_USE_SPINBOX 1
#define LV_USE_SPINNER 1
#define LV_USE_TABVIEW 1
#define LV_USE_TILEVIEW 1
#define LV_USE_WIN 1
/*-----------
* Themes
*----------*/
/*A simple, impressive and very complete theme*/
#define LV_USE_THEME_DEFAULT 1
#if LV_USE_THEME_DEFAULT
/*0: Light mode; 1: Dark mode*/
#define LV_THEME_DEFAULT_DARK 0
/*1: Enable grow on press*/
#define LV_THEME_DEFAULT_GROW 1
/*Default transition time in [ms]*/
#define LV_THEME_DEFAULT_TRANSITION_TIME 80
#endif /*LV_USE_THEME_DEFAULT*/
/*A very simple theme that is a good starting point for a custom theme*/
#define LV_USE_THEME_BASIC 1
/*A theme designed for monochrome displays*/
#define LV_USE_THEME_MONO 1
/*-----------
* Layouts
*----------*/
/*A layout similar to Flexbox in CSS.*/
#define LV_USE_FLEX 1
/*A layout similar to Grid in CSS.*/
#define LV_USE_GRID 1
/*---------------------
* 3rd party libraries
*--------------------*/
/*File system interfaces for common APIs */
/*API for fopen, fread, etc*/
#define LV_USE_FS_STDIO 0
#if LV_USE_FS_STDIO
#define LV_FS_STDIO_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_STDIO_PATH "" /*Set the working directory. File/directory paths will be appended to it.*/
#define LV_FS_STDIO_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
/*API for open, read, etc*/
#define LV_USE_FS_POSIX 0
#if LV_USE_FS_POSIX
#define LV_FS_POSIX_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_POSIX_PATH "" /*Set the working directory. File/directory paths will be appended to it.*/
#define LV_FS_POSIX_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
/*API for CreateFile, ReadFile, etc*/
#define LV_USE_FS_WIN32 0
#if LV_USE_FS_WIN32
#define LV_FS_WIN32_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_WIN32_PATH "" /*Set the working directory. File/directory paths will be appended to it.*/
#define LV_FS_WIN32_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
/*API for FATFS (needs to be added separately). Uses f_open, f_read, etc*/
#define LV_USE_FS_FATFS 0
#if LV_USE_FS_FATFS
#define LV_FS_FATFS_LETTER '\0' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/
#define LV_FS_FATFS_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif
/*PNG decoder library*/
#define LV_USE_PNG 0
/*BMP decoder library*/
#define LV_USE_BMP 0
/* JPG + split JPG decoder library.
* Split JPG is a custom format optimized for embedded systems. */
#define LV_USE_SJPG 0
/*GIF decoder library*/
#define LV_USE_GIF 1
/*QR code library*/
#define LV_USE_QRCODE 1
/*FreeType library*/
#define LV_USE_FREETYPE 0
#if LV_USE_FREETYPE
/*Memory used by FreeType to cache characters [bytes] (-1: no caching)*/
#define LV_FREETYPE_CACHE_SIZE (16 * 1024)
#if LV_FREETYPE_CACHE_SIZE >= 0
/* 1: bitmap cache use the sbit cache, 0:bitmap cache use the image cache. */
/* sbit cache:it is much more memory efficient for small bitmaps(font size < 256) */
/* if font size >= 256, must be configured as image cache */
#define LV_FREETYPE_SBIT_CACHE 0
/* Maximum number of opened FT_Face/FT_Size objects managed by this cache instance. */
/* (0:use system defaults) */
#define LV_FREETYPE_CACHE_FT_FACES 0
#define LV_FREETYPE_CACHE_FT_SIZES 0
#endif
#endif
/*Rlottie library*/
#define LV_USE_RLOTTIE 0
/*FFmpeg library for image decoding and playing videos
*Supports all major image formats so do not enable other image decoder with it*/
#define LV_USE_FFMPEG 0
#if LV_USE_FFMPEG
/*Dump input information to stderr*/
#define LV_FFMPEG_DUMP_FORMAT 0
#endif
/*-----------
* Others
*----------*/
/*1: Enable API to take snapshot for object*/
#define LV_USE_SNAPSHOT 0
/*1: Enable Monkey test*/
#define LV_USE_MONKEY 0
/*1: Enable grid navigation*/
#define LV_USE_GRIDNAV 0
/*1: Enable lv_obj fragment*/
#define LV_USE_FRAGMENT 0
/*1: Support using images as font in label or span widgets */
#define LV_USE_IMGFONT 0
/*1: Enable a published subscriber based messaging system */
#define LV_USE_MSG 0
/*1: Enable Pinyin input method*/
/*Requires: lv_keyboard*/
#define LV_USE_IME_PINYIN 0
#if LV_USE_IME_PINYIN
/*1: Use default thesaurus*/
/*If you do not use the default thesaurus, be sure to use `lv_ime_pinyin` after setting the thesauruss*/
#define LV_IME_PINYIN_USE_DEFAULT_DICT 1
/*Set the maximum number of candidate panels that can be displayed*/
/*This needs to be adjusted according to the size of the screen*/
#define LV_IME_PINYIN_CAND_TEXT_NUM 6
/*Use 9 key input(k9)*/
#define LV_IME_PINYIN_USE_K9_MODE 1
#if LV_IME_PINYIN_USE_K9_MODE == 1
#define LV_IME_PINYIN_K9_CAND_TEXT_NUM 3
#endif // LV_IME_PINYIN_USE_K9_MODE
#endif
/*==================
* EXAMPLES
*==================*/
/*Enable the examples to be built with the library*/
#define LV_BUILD_EXAMPLES 1
/*===================
* DEMO USAGE
====================*/
/*Show some widget. It might be required to increase `LV_MEM_SIZE` */
#define LV_USE_DEMO_WIDGETS 1
#if LV_USE_DEMO_WIDGETS
#define LV_DEMO_WIDGETS_SLIDESHOW 1
#endif
/*Demonstrate the usage of encoder and keyboard*/
#define LV_USE_DEMO_KEYPAD_AND_ENCODER 0
/*Benchmark your system*/
#define LV_USE_DEMO_BENCHMARK 1
#if LV_USE_DEMO_BENCHMARK
/*Use RGB565A8 images with 16 bit color depth instead of ARGB8565*/
#define LV_DEMO_BENCHMARK_RGB565A8 0
#endif
/*Stress test for LVGL*/
#define LV_USE_DEMO_STRESS 1
/*Music player demo*/
#define LV_USE_DEMO_MUSIC 1
#if LV_USE_DEMO_MUSIC
#define LV_DEMO_MUSIC_SQUARE 1
#define LV_DEMO_MUSIC_LANDSCAPE 1
#define LV_DEMO_MUSIC_ROUND 1
#define LV_DEMO_MUSIC_LARGE 0
#define LV_DEMO_MUSIC_AUTO_PLAY 1
#endif
/*--END OF LV_CONF_H--*/
#endif /*LV_CONF_H*/
#endif /*End of "Content enable"*/

View File

@ -1,86 +0,0 @@
/*
* Copyright (c) 2014, Mentor Graphics Corporation
* Copyright (c) 2015 Xilinx, Inc.
* Copyright (c) 2016 Freescale Semiconductor, Inc.
* Copyright 2016-2021 NXP
* All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef RPMSG_CONFIG_H_
#define RPMSG_CONFIG_H_
/*!
* @addtogroup config
* @{
* @file
*/
//! @name Configuration options
//@{
//! @def RL_MS_PER_INTERVAL
//!
//! Delay in milliseconds used in non-blocking API functions for polling.
//! The default value is 1.
#define RL_MS_PER_INTERVAL (1)
//! @def RL_BUFFER_PAYLOAD_SIZE
//!
//! Size of the buffer payload, it must be equal to (240, 496, 1008, ...)
//! [2^n - 16]. Ensure the same value is defined on both sides of rpmsg
//! communication. The default value is 496U.
#define RL_BUFFER_PAYLOAD_SIZE (240U)
//! @def RL_BUFFER_COUNT
//!
//! Number of the buffers, it must be power of two (2, 4, ...).
//! The default value is 2U.
//! Note this value defines the buffer count for one direction of the rpmsg
//! communication only, i.e. if the default value of 2 is used
//! in rpmsg_config.h files for the master and the remote side, 4 buffers
//! in total are created in the shared memory.
#define RL_BUFFER_COUNT (2U)
//! @def RL_API_HAS_ZEROCOPY
//!
//! Zero-copy API functions enabled/disabled.
//! The default value is 1 (enabled).
#define RL_API_HAS_ZEROCOPY (1)
//! @def RL_USE_STATIC_API
//!
//! Static API functions (no dynamic allocation) enabled/disabled.
//! The default value is 0 (static API disabled).
#define RL_USE_STATIC_API (0)
//! @def RL_CLEAR_USED_BUFFERS
//!
//! Clearing used buffers before returning back to the pool of free buffers
//! enabled/disabled.
//! The default value is 0 (disabled).
#define RL_CLEAR_USED_BUFFERS (0)
//! @def RL_USE_MCMGR_IPC_ISR_HANDLER
//!
//! When enabled IPC interrupts are managed by the Multicore Manager (IPC
//! interrupts router), when disabled RPMsg-Lite manages IPC interrupts
//! by itself.
//! The default value is 0 (no MCMGR IPC ISR handler used).
#define RL_USE_MCMGR_IPC_ISR_HANDLER (0)
//! @def RL_USE_ENVIRONMENT_CONTEXT
//!
//! When enabled the environment layer uses its own context.
//! Added for QNX port mainly, but can be used if required.
//! The default value is 0 (no context, saves some RAM).
#define RL_USE_ENVIRONMENT_CONTEXT (0)
//! @def RL_DEBUG_CHECK_BUFFERS
//!
//! Do not use in RPMsg-Lite to Linux configuration
#define RL_DEBUG_CHECK_BUFFERS (0)
//@}
#endif /* RPMSG_CONFIG_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -1,24 +0,0 @@
/*
* Auto generated Run-Time-Environment Configuration File
* *** Do not modify ! ***
*
* Project: 'Project'
* Target: 'Project'
*/
#ifndef RTE_COMPONENTS_H
#define RTE_COMPONENTS_H
/*
* Define the Device Header File:
*/
#define CMSIS_device_header "ARMCM33_DSP_FP.h"
/* Keil.ARM Compiler::Compiler:I/O:STDERR:Breakpoint:1.2.0 */
#define RTE_Compiler_IO_STDERR /* Compiler I/O: STDERR */
#define RTE_Compiler_IO_STDERR_BKPT /* Compiler I/O: STDERR Breakpoint */
#endif /* RTE_COMPONENTS_H */

View File

@ -1,26 +0,0 @@
import os
import shutil
def delete_files_in_current_directory(folder_name):
try:
current_directory = os.path.dirname(os.path.abspath(__file__))
folder_to_delete = os.path.join(current_directory, folder_name)
if os.path.exists(folder_to_delete):
files = os.listdir(folder_to_delete)
for file_name in files:
file_path = os.path.join(folder_to_delete, file_name)
if os.path.isfile(file_path):
os.remove(file_path)
print(f"Deleted: {file_path}")
print(f"All files in {folder_name} have been deleted.")
else:
print(f"Folder {folder_name} does not exist in {current_directory}.")
except Exception as e:
print(f"Error: {e}")
folder_name_to_delete = "Objects"
delete_files_in_current_directory(folder_name_to_delete)
folder_name_to_delete = "Listings"
delete_files_in_current_directory(folder_name_to_delete)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,37 +0,0 @@
import os
import struct
import zlib
import sys
def fill_header(f_in_file,
f_out_file):
code_length = os.path.getsize(f_in_file)
f_out_create = open(f_out_file, 'wb')
f_out_create.close()
f_out = open(f_out_file, 'r+b')
f_in = open(f_in_file, 'rb')
array = f_in.read(code_length)
f_out.write(array)
f_out.seek(0x150)
f_out.write(struct.pack('I', code_length))
f_out.seek(0)
arrayout = f_out.read(code_length)
image_crc = zlib.crc32(arrayout)
f_out.seek(code_length)
#f_out.write(struct.pack('I',image_crc))
f_out.write(struct.pack('B', image_crc&0xff))
f_out.write(struct.pack('B', (image_crc&0xff00)>>8))
f_out.write(struct.pack('B', (image_crc&0xff0000)>>16))
f_out.write(struct.pack('B', (image_crc&0xff000000)>>24))
if 'BAT_RUN' in os.environ:
fill_header(".\output\Project.bin", ".\output\Project_mp_burn.bin")
else:
fill_header("Project.bin", "Project_mp_burn.bin")
# if sys.argv[0].endswith('.bat'):
# fill_header(".\output\Project.bin", ".\output\Project_burn.bin")
# else:
# fill_header("Project.bin", "Project_burn.bin")

View File

@ -1,11 +0,0 @@
@echo off
if exist Project_burn.bin (
del Project_burn.bin
)
@echo off
set BAT_RUN=1
python .\output\app_post_process.py

View File

@ -1,806 +0,0 @@
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include "fr30xx.h"
#include "co_util.h"
#include "bt_types.h"
#include "me_api.h"
#include "hfg_api.h"
#include "gatt_api.h"
#include "app_at.h"
#include "app_task.h"
#include "app_ble.h"
#include "app_bt.h"
#include "app_audio.h"
#include "app_hw.h"
#include "btdm_mem.h"
#include "fdb_app.h"
#include "heap.h"
#include "app_ble.h"
#include "user_bt.h"
#include "user_ipc_st.h"
#include "dsp_mem.h"
#define AT_RECV_MAX_LEN 32
static uint8_t app_at_recv_char;
static uint8_t at_recv_buffer[AT_RECV_MAX_LEN];
static uint8_t at_recv_index = 0;
static uint8_t at_recv_state = 0;
void btdm_host_send_vendor_cmd(uint8_t type, uint8_t length, void *data);
void btdm_host_vendor_cmd_cmp_evt(uint8_t status, uint8_t len, uint8_t const *param)
{
printf("status: 0x%02x.\r\n", status);
for (uint32_t i=0; i<len; i++) {
printf("%02x ", param[i]);
}
printf("\r\n");
}
void btdm_host_recv_vendor_evt(uint8_t len, uint8_t *param)
{
if (param[1] == 0x10) {
float acc[3];
memcpy((void *)&acc[0], &param[3], sizeof(float) * 3);
printf("%0.6f, \t%0.6f, \t%0.6f\r\n", acc[0], acc[1], acc[2]);
return;
}
//gsensor event:
// if (param[1] == 0x0A) {
// _gsensor_evt *evt = (_gsensor_evt *)&param[3];
// printf("EVENT: %d step:%d calorie:%d sleep:%d action:%d \n",evt->evt_id,evt->step,evt->calorie,evt->sleep,evt->action);
// }
// printf("EVENT: ");
// for (uint32_t i=0; i<len; i++) {
// printf("%02x ", param[i]);
// }
// printf("\r\n");
// if ((param[1] | (param[2]<<8)) == 0x000c)
{
// extern void fr_system_host_recv_vendor(uint8_t *recv_data,uint8_t len);
// fr_system_host_recv_vendor(param,len);
}
}
__RAM_CODE static void app_at_recv_cmd_A(uint8_t sub_cmd, uint8_t *data)
{
switch(sub_cmd)
{
case 'A':
{
uint8_t addr = ascii_strn2val((const char *)&data[0], 16, 2);
btdm_host_send_vendor_cmd(0x00, 1, &addr);
}
printf("OK\r\n");
break;
case 'B':
{
uint8_t buffer[2];
buffer[0] = ascii_strn2val((const char *)&data[0], 16, 2);
buffer[1] = ascii_strn2val((const char *)&data[3], 16, 2);
btdm_host_send_vendor_cmd(0x01, 2, (void *)&buffer[0]);
}
printf("OK\r\n");
break;
// case 'C':
// {
// uint32_t addr = ascii_strn2val((const char *)&data[0], 16, 8);
// btdm_host_send_vendor_cmd(0x02, 4, (void *)&addr);
// }
// printf("OK\r\n");
// break;
// case 'D':
// {
// uint32_t buffer[2];
// buffer[0] = ascii_strn2val((const char *)&data[0], 16, 8);
// buffer[1] = ascii_strn2val((const char *)&data[9], 16, 8);
// btdm_host_send_vendor_cmd(0x03, 8, (void *)&buffer[0]);
// }
// printf("OK\r\n");
// break;
case 'C':
{
btdm_host_send_vendor_cmd(0x15, 0, NULL);
}
printf("OK\r\n");
break;
case 'D':
// {
// uint8_t mode = ascii_strn2val((const char *)&data[0], 16, 2);
// btdm_host_send_vendor_cmd(0x14, 1, &mode);
// }
btdm_host_send_vendor_cmd(0x17, 0, NULL);
printf("OK\r\n");
break;
case 'E':
{
uint8_t sleep_dur[2];
sleep_dur[0] = ascii_strn2val((const char *)&data[0], 16, 2);
sleep_dur[1] = ascii_strn2val((const char *)&data[3], 16, 2);
btdm_host_send_vendor_cmd(0x16, 2, &sleep_dur);
}
break;
case 'F':
{
static uint8_t hour = 0;
static uint8_t minute = 0;
static uint8_t second = 0;
static uint16_t mini_second = 0;
uint8_t gsensor_cmd[] = {0x00, 0xe7, 0x07, 0x09, 0x12, 0x14, 0x36, 0x10, 0x20, 0x00, 0x2c, 0x01};
mini_second += 200;
if (mini_second >= 1000) {
mini_second = 0;
second++;
if (second >= 60) {
second = 0;
minute++;
if (minute >= 60) {
minute = 0;
hour++;
}
}
}
gsensor_cmd[5] = hour;
gsensor_cmd[6] = minute;
gsensor_cmd[7] = second;
gsensor_cmd[8] = mini_second;
gsensor_cmd[9] = mini_second >> 8;
btdm_host_send_vendor_cmd(0x12, sizeof(gsensor_cmd), gsensor_cmd);
}
break;
case 'G':
printf("hello world!\r\n");
break;
case 'H':
printf("VAL: 0x%08x.\r\n", *(volatile uint32_t *)ascii_strn2val((const char *)&data[0], 16, 8));
break;
case 'I':
*(volatile uint32_t *)ascii_strn2val((const char *)&data[0], 16, 8) = ascii_strn2val((const char *)&data[9], 16, 8);
printf("OK\r\n");
break;
case 'J':
printf("OOL VAL: 0x%02x.\r\n", ool_read(ascii_strn2val((const char *)&data[0], 16, 2)));
break;
case 'K':
ool_write(ascii_strn2val((const char *)&data[0], 16, 2), ascii_strn2val((const char *)&data[3], 16, 2));
printf("OK\r\n");
break;
case 'L':
printf("VAL: 0x%02x.\r\n", *(volatile uint8_t *)(ascii_strn2val((const char *)&data[0], 16, 8)));
break;
case 'M':
*(volatile uint8_t *)(ascii_strn2val((const char *)&data[0], 16, 8)) = ascii_strn2val((const char *)&data[9], 16, 2);
printf("OK\r\n");
break;
// case 'P':
// co_printf("VAL: 0x%02x.\r\n", *(uint8_t *)(MODEM_BASE + ascii_strn2val((const char *)&data[0], 16, 2)));
// break;
// case 'Q':
// *(uint8_t *)(MODEM_BASE + ascii_strn2val((const char *)&data[0], 16, 2)) = ascii_strn2val((const char *)&data[3], 16, 2);
// co_printf("OK\r\n");
// break;
// case 'S':
// co_printf("VAL: 0x%02x.\r\n", frspim_rd(FR_SPI_RF_COB_CHAN, ascii_strn2val((const char *)&data[0], 16, 2), 1));
// break;
// case 'T':
// frspim_wr(FR_SPI_RF_COB_CHAN, ascii_strn2val((const char *)&data[0], 16, 2), 1, ascii_strn2val((const char *)&data[3], 16, 2));
// co_printf("OK\r\n");
// break;
case 'U':
{
uint32_t *ptr = (uint32_t *)(ascii_strn2val((const char *)&data[0], 16, 8) & (~3));
uint8_t count = ascii_strn2val((const char *)&data[9], 16, 2);
uint32_t *start = (uint32_t *)((uint32_t)ptr & (~0x0f));
for(uint8_t i=0; i<count;) {
if(((uint32_t)start & 0x0c) == 0) {
printf("0x%08x: ", (uint32_t)start);
}
if(start < ptr) {
printf(" ");
}
else {
i++;
printf("%08x", *start);
}
if(((uint32_t)start & 0x0c) == 0x0c) {
printf("\r\n");
}
else {
printf(" ");
}
start++;
}
}
break;
case 'V':
flash_erase(QSPI0, ascii_strn2val((const char *)&data[0], 16, 8), ascii_strn2val((const char *)&data[9], 16, 8));
break;
case 'W':
{
uint32_t curr_free, min_free;
dsp_mem_get_usage(&curr_free, &min_free);
printf("DSP MEM: %d, %d\r\n", curr_free, min_free);
}
break;
case 'X':
{
void system_reset(void);
system_reset();
}
break;
case 'Y':
heap_dump_used_mem(ascii_strn2val((const char *)&data[0], 16, 2));
break;
case 'Z':
printf("MEM usage\r\n \
\tHEAP_TYPE_SRAM_BLOCK: %d, %d\r\n \
\tHEAP_TYPE_DRAM_BLOCK: %d, %d\r\n \
\tHEAP_TYPE_BTDM_BLOCK: %d, %d\r\n \
\tTOTAL USAGE: %d\r\n", \
heap_get_mem_usage(HEAP_TYPE_SRAM_BLOCK), heap_get_mem_usage_single(HEAP_TYPE_SRAM_BLOCK), \
heap_get_mem_usage(HEAP_TYPE_DRAM_BLOCK), heap_get_mem_usage_single(HEAP_TYPE_DRAM_BLOCK), \
heap_get_mem_usage(HEAP_TYPE_BTDM_BLOCK), heap_get_mem_usage_single(HEAP_TYPE_BTDM_BLOCK), \
heap_get_max_mem_usage());
break;
default:
break;
}
}
static void user_hci_callback(const BtEvent *event)
{
printf("event type = %d\r\n",event->eType);
if(event->eType == BTEVENT_COMMAND_COMPLETE){
btdm_free(event->p.meToken);
}
}
__RAM_CODE static void app_at_recv_cmd_B(uint8_t sub_cmd, uint8_t *data)
{
struct gap_ble_addr peer_addr;
BD_ADDR addr;
HfgResponse *rsp;
BtStatus status;
MeCommandToken *token;
uint16_t page_timeout = 0x400;
switch(sub_cmd) {
case 'A':
// AT#BA00
//app_ble_advertising_start(ascii_strn2val((const char *)&data[0], 16, 2));
break;
case 'B':
// AT#BB01
//app_ble_advertising_stop(ascii_strn2val((const char *)&data[0], 16, 2));
break;
case 'C':
app_ble_scan_start();
break;
case 'D':
app_ble_scan_stop();
break;
case 'E':
// AT#BE0123456789ab_01
peer_addr.addr.addr[5] = ascii_strn2val((const char *)&data[0], 16, 2);
peer_addr.addr.addr[4] = ascii_strn2val((const char *)&data[2], 16, 2);
peer_addr.addr.addr[3] = ascii_strn2val((const char *)&data[4], 16, 2);
peer_addr.addr.addr[2] = ascii_strn2val((const char *)&data[6], 16, 2);
peer_addr.addr.addr[1] = ascii_strn2val((const char *)&data[8], 16, 2);
peer_addr.addr.addr[0] = ascii_strn2val((const char *)&data[10], 16, 2);
peer_addr.addr_type = ascii_strn2val((const char *)&data[13], 16, 2);
app_ble_conn_start(&peer_addr);
break;
case 'F':
app_ble_conn_stop();
break;
#if BTDM_STACK_ENABLE_BT == 1
case 'H':
ME_Inquiry(BT_IAC_GIAC, 5, 5);
break;
case 'I':
ME_CancelInquiry();
break;
case 'J':
{
BtStatus status;
addr.A[0] = ascii_strn2val((const char*)&data[0],16,2);
addr.A[1] = ascii_strn2val((const char*)&data[2],16,2);
addr.A[2] = ascii_strn2val((const char*)&data[4],16,2);
addr.A[3] = ascii_strn2val((const char*)&data[6],16,2);
addr.A[4] = ascii_strn2val((const char*)&data[8],16,2);
addr.A[5] = ascii_strn2val((const char*)&data[10],16,2);
status = HFG_CreateServiceLink(&hfg_channel[0], &addr);
if (status == BT_STATUS_PENDING) {
printf("Opening Channel...\r\n");
} else {
printf("Could not open channel, status: %d\r\n", status);
}
}
break;
case 'K':
status = BT_STATUS_NO_RESOURCES;
rsp = (HfgResponse *)btdm_malloc(sizeof(HfgResponse));
if(rsp != NULL){
status = HFG_CreateCodecConnection(&hfg_channel[0], 1, rsp);
}
if(status != BT_STATUS_PENDING){
btdm_free((void *)rsp);
}
printf("status = %d\r\n",status);
break;
case 'L':
flashdb_del(FDB_KEY_BT_LINKKEY);
break;
case 'M':
token = btdm_malloc(sizeof(MeCommandToken));
token->p.general.in.hciCommand = 0x0c18;//HCC_WRITE_PAGE_TIMEOUT;
token->p.general.in.parmLen = 2;
token->p.general.in.parms = (uint8_t *)&page_timeout;
token->callback = user_hci_callback; //token is freed at this callback
status = ME_SendHciCommandAsync(token);
printf("status = %d\r\n",status);
break;
case 'N':
{
addr.A[0] = ascii_strn2val((const char*)&data[0],16,2);
addr.A[1] = ascii_strn2val((const char*)&data[2],16,2);
addr.A[2] = ascii_strn2val((const char*)&data[4],16,2);
addr.A[3] = ascii_strn2val((const char*)&data[6],16,2);
addr.A[4] = ascii_strn2val((const char*)&data[8],16,2);
addr.A[5] = ascii_strn2val((const char*)&data[10],16,2);
user_bt_env.connect_times = 3;
status = bt_connect(&addr);
printf("status = %d\r\n",status);
}
break;
#endif
case 'O':
// {
// uint8_t battery_level[15] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
// struct gatt_send_event ntf[6];
// uint8_t i=0;
// for(i=0;i<6;i++){
// ntf[i].conidx = 0;
// ntf[i].svc_id = svc_id;
// ntf[i].att_idx = 2;
// ntf[i].data_len = 15;
// ntf[i].p_data = &battery_level[0];
// gatt_notification(&ntf[i]);
// }
// }
break;
case 'P':
addr.A[0] = ascii_strn2val((const char*)&data[0],16,2);
addr.A[1] = ascii_strn2val((const char*)&data[2],16,2);
addr.A[2] = ascii_strn2val((const char*)&data[4],16,2);
addr.A[3] = ascii_strn2val((const char*)&data[6],16,2);
addr.A[4] = ascii_strn2val((const char*)&data[8],16,2);
addr.A[5] = ascii_strn2val((const char*)&data[10],16,2);
bt_disconnect(&addr,false);
break;
case 'Q':
addr.A[0] = ascii_strn2val((const char*)&data[0],16,2);
addr.A[1] = ascii_strn2val((const char*)&data[2],16,2);
addr.A[2] = ascii_strn2val((const char*)&data[4],16,2);
addr.A[3] = ascii_strn2val((const char*)&data[6],16,2);
addr.A[4] = ascii_strn2val((const char*)&data[8],16,2);
addr.A[5] = ascii_strn2val((const char*)&data[10],16,2);
bt_disconnect(&addr,true);
break;
case 'R':
// ME_SetLocalDeviceName((const uint8_t *)"FR30xx_m", sizeof("FR30xx_m"));
//app_btdm_init();
break;
case 'S':
{
BtAccessModeInfo access_mode_nc = {
.inqInterval = 0x800,
.inqWindow = 0x12,
.pageInterval = 0x800,
.pageWindow = 0x12,
};
status = ME_SetAccessibleModeNC(BAM_GENERAL_ACCESSIBLE, &access_mode_nc);
printf("status = %d\r\n",status);
}
break;
case 'T':
{
status = ME_SetAccessibleModeNC(BAM_NOT_ACCESSIBLE, NULL);
printf("status = %d\r\n",status);
}
break;
}
printf("OK\r\n");
}
#include "user_bt_pbap.h"
uint8_t voltage_str[] = "AT+IPHONEACCEV=1,1,6";
uint8_t cmps_str[] = "AT+CPMS=?";
//bt hf&pbap related cmd
static void app_at_recv_cmd_C(uint8_t sub_cmd, uint8_t *data)
{
printf("%s \r\n", __func__);
BtStatus status;
uint8_t state;
BD_ADDR addr;
switch(sub_cmd) {
case 'A':
status = bt_answer_call(user_bt_env.last_active_index);
printf("status = %d\r\n",status);
break;
case 'B':
status = bt_hang_up(user_bt_env.last_active_index);
printf("status = %d\r\n",status);
break;
case 'C':
status = bt_redial(user_bt_env.last_active_index);
printf("status = %d\r\n",status);
break;
case 'D':
{
//uint8_t number[] = "15907515643";
status = bt_dial_number(user_bt_env.last_active_index,&data[1],data[0]);
printf("status = %d\r\n",status);
}
break;
case 'E':
status = bt_list_current_calls(user_bt_env.last_active_index);
printf("status = %d\r\n",status);
break;
case 'F':
status = bt_transfer_sco(user_bt_env.last_active_index);
printf("status = %d\r\n",status);
break;
case 'G':
{
uint8_t dtmf = data[0];
status = bt_send_dtmf(user_bt_env.last_active_index,dtmf);
printf("status = %d\r\n",status);
}
break;
case 'H':
{
//vol---[0x00,0x0f]
uint8_t vol = ascii_strn2val((const char*)&data[0],16,2);
status = bt_report_spk_volume(user_bt_env.last_active_index,vol);
printf("status = %d\r\n",status);
}
break;
case 'I':
{
status = bt_send_hf_cmd(user_bt_env.last_active_index,voltage_str);
printf("status = %d\r\n",status);
}
break;
case 'J':
{
uint8_t enabled = ascii_strn2val((const char*)&data[0],16,2);
status = bt_enable_voice_recognition(user_bt_env.last_active_index, enabled);
printf("status = %d\r\n",status);
}
break;
case 'K':
printf("voice recog enabled : %d\r\n",bt_is_voice_rec_active(user_bt_env.last_active_index));
break;
case 'L':
//BD_ADDR addr;
//user_bt_env.dev[0].remote_bd;
#if BTDM_STACK_ENABLE_PBAP
state = user_bt_get_state(user_bt_env.last_active_index);
if(state >=BT_STATE_CONNECTED)
{
memcpy(&addr.A[0], &user_bt_env.dev[user_bt_env.last_active_index].remote_bd, 6);
//printf("%x%x%x%x%x%x\r\n",addr.A[0],addr.A[1],addr.A[2],addr.A[3],addr.A[4],addr.A[5]);
}
else {
addr.A[0] = ascii_strn2val((const char*)&data[0],16,2);
addr.A[1] = ascii_strn2val((const char*)&data[2],16,2);
addr.A[2] = ascii_strn2val((const char*)&data[4],16,2);
addr.A[3] = ascii_strn2val((const char*)&data[6],16,2);
addr.A[4] = ascii_strn2val((const char*)&data[8],16,2);
addr.A[5] = ascii_strn2val((const char*)&data[10],16,2);
}
status = PBAP_ClientConnect(&pbap_client[0],&addr);
printf("status = %d\r\n",status);
#endif
break;
case 'M':
#if BTDM_STACK_ENABLE_PBAP
status = PBAP_ClientDisconnect(&pbap_client[0]);
printf("status = %d\r\n",status);
#endif
break;
case 'N':
{
#if BTDM_STACK_ENABLE_PBAP
uint8_t pbName[64];
PbapPullPbParms parms;
memcpy(pbName,PB_LOCAL_MCH_NAME,sizeof(PB_LOCAL_MCH_NAME));
parms.pbName = pbName;
memset(parms.filter.byte,0,PBAP_FILTER_SIZE);
parms.filter.byte[0] = 0x84;
parms.listStartOffset = 0;
parms.maxListCount = 100; //0---search missed call and total pb size
parms.format= VCARD_FORMAT_30;
status = PBAP_PullPhonebook(&pbap_client[0], &parms);
printf("status = %d\r\n",status);
#endif
}
break;
case 'O':
{
#if BTDM_STACK_ENABLE_PBAP
PbapPullVcardListingParms parms;
uint8_t search_val[12]; //= "13262651013";
memcpy(search_val,&data[0],11);
uint8_t folder[] = "telecom/pb";
parms.folderName = folder;
parms.order = VCARD_SORT_ORDER_INDEXED;
parms.listStartOffset = 0x00;
parms.maxListCount = 4;
parms.searchAttribute = VCARD_SEARCH_ATTRIB_NUMBER;
parms.searchValue = (const char *)search_val;
status = PBAP_PullVcardListing(&pbap_client[0], &parms);
printf("status = %d\r\n",status);
#endif
}
break;
case 'P':
{
#if BTDM_STACK_ENABLE_PBAP
uint8_t pbName[64];
PbapPullPbParms parms;
memcpy(pbName,PB_LOCAL_STORE_NAME,sizeof(PB_LOCAL_STORE_NAME));
parms.pbName = pbName;
memset(parms.filter.byte,0,PBAP_FILTER_SIZE);
parms.filter.byte[0] = 0x07;//0x84;
parms.listStartOffset = 0;
parms.maxListCount = 20; //0---search missed call and total pb size
parms.format= VCARD_FORMAT_30;
status = PBAP_PullPhonebook(&pbap_client[0], &parms);
printf("status = %d\r\n",status);
#endif
}
break;
case 'R':
{
user_connect_pbap_client();
}
break;
case 'T':
{
user_pull_phonebook(0,0,25);
}
break;
case 'X':
{
uint8_t mute_str[] = "AT+CMUT=1";
status = bt_send_hf_cmd(user_bt_env.last_active_index,mute_str);
printf("status = %d\r\n",status);
}
break;
case 'Y':
{
flash_wr_test();
}
break;
case 'Q':
{
user_del_pbap_info();
}
break;
default:
break;
}
printf("OK\r\n");
}
extern uint8_t flush_flags;
///bt media related cmd
static void app_at_recv_cmd_E(uint8_t sub_cmd, uint8_t *data)
{
BD_ADDR addr;
BtStatus status;
switch(sub_cmd) {
case 'A':
status = AVRCP_SetPanelKey(user_bt_env.dev[user_bt_env.last_active_index].rcp_chan, AVRCP_POP_PLAY, TRUE);
printf("status = %d\r\n",status);
break;
case 'B':
status = AVRCP_SetPanelKey(user_bt_env.dev[user_bt_env.last_active_index].rcp_chan, AVRCP_POP_PAUSE, TRUE);
printf("status = %d\r\n",status);
break;
case 'C':
status = AVRCP_SetPanelKey(user_bt_env.dev[user_bt_env.last_active_index].rcp_chan, AVRCP_POP_FORWARD, TRUE);
printf("status = %d\r\n",status);
break;
case 'D':
{
status = AVRCP_SetPanelKey(user_bt_env.dev[user_bt_env.last_active_index].rcp_chan, AVRCP_POP_BACKWARD, TRUE);
printf("status = %d\r\n",status);
}
break;
case 'E':
{
printf("vol %d\r\n",data[0]);
uint8_t vol = data[0];//ascii_strn2val((const char*)&data[0],16,2);
status = bt_set_media_volume(user_bt_env.last_active_index,vol);
printf("status = %d %d\r\n",status,vol);
}
break;
case 'F':
{
status = bt_get_media_info(user_bt_env.last_active_index,0x41);
printf("status = %d\r\n",status);
}
break;
case 'G':
{
status = bt_get_playstatus(user_bt_env.last_active_index);
printf("status = %d\r\n",status);
}
break;
case 'H':
#if BTDM_STACK_ENABLE_SPP
addr.A[0] = ascii_strn2val((const char*)&data[0],16,2);
addr.A[1] = ascii_strn2val((const char*)&data[2],16,2);
addr.A[2] = ascii_strn2val((const char*)&data[4],16,2);
addr.A[3] = ascii_strn2val((const char*)&data[6],16,2);
addr.A[4] = ascii_strn2val((const char*)&data[8],16,2);
addr.A[5] = ascii_strn2val((const char*)&data[10],16,2);
status = spp_connect(&spp_dev[0],&addr);
printf("status = %d\r\n",status);
#endif
break;
case 'I':
#if BTDM_STACK_ENABLE_SPP
status = spp_disconnect(&spp_dev[0]);
printf("status = %d\r\n",status);
#endif
break;
case 'J':
{
#if BTDM_STACK_ENABLE_SPP
uint8_t test_data[] = {'1','2','3','4'};
status = spp_send(&spp_dev[0],test_data,sizeof(test_data));
printf("status = %d\r\n",status);
#endif
}
break;
case 'Q':
{
flush_flags=1;
}
break;
default:
break;
}
printf("OK\r\n");
}
__RAM_CODE static void app_at_recv_cmd_D(uint8_t sub_cmd, uint8_t *data)
{
switch(sub_cmd) {
case 'A':
flash_erase(QSPI0, ascii_strn2val((const char*)&data[0],16,8), 0x1000);
break;
default:
break;
}
printf("OK\r\n");
}
__RAM_CODE void app_at_cmd_recv_handler(uint8_t *data, uint16_t length)
{
switch(data[0])
{
case 'A':
app_at_recv_cmd_A(data[1], &data[2]);
break;
case 'B':
app_at_recv_cmd_B(data[1], &data[2]);
break;
case 'C':
app_at_recv_cmd_C(data[1], &data[2]);
break;
case 'D':
app_at_recv_cmd_D(data[1], &data[2]);
break;
case 'E':
app_at_recv_cmd_E(data[1], &data[2]);
break;
default:
break;
}
}
static void app_at_recv_c(uint8_t c)
{
switch(at_recv_state)
{
case 0:
if(c == 'A')
{
at_recv_state++;
}
break;
case 1:
if(c == 'T')
at_recv_state++;
else
at_recv_state = 0;
break;
case 2:
if(c == '#')
at_recv_state++;
else
at_recv_state = 0;
break;
case 3:
at_recv_buffer[at_recv_index++] = c;
if((c == '\n')
||(at_recv_index >= AT_RECV_MAX_LEN))
{
struct app_task_event *event;
event = app_task_event_alloc(APP_TASK_EVENT_AT_CMD, at_recv_index, false);
if(event) {
memcpy(event->param, at_recv_buffer, at_recv_index);
app_task_event_post(event, false);
}
at_recv_state = 0;
at_recv_index = 0;
}
break;
}
}
void app_at_rx_done(struct __UART_HandleTypeDef *handle)
{
app_at_recv_c(app_at_recv_char);
if (handle) {
uart_receive_IT(handle, &app_at_recv_char, 1);
}
}
void app_at_init(void)
{
hw_log_init(false);
uart_receive_IT(&uart_log_handle, &app_at_recv_char, 1);
}
void uart3_irq(void)
{
uart_IRQHandler(&uart_log_handle);
}
int fputc(int c, FILE *fp)
{
uart_transmit(&uart_log_handle, (void *)&c, 1);
return c;
}
void uart_transmit_byte(uint8_t *p,uint32_t len)
{
uart_transmit(&uart_log_handle, (void *)p, len);
}

View File

@ -1,10 +0,0 @@
#ifndef _APP_AT_H
#define _APP_AT_H
#include <stdint.h>
void app_at_cmd_recv_handler(uint8_t *data, uint16_t length);
void app_at_init(void);
#endif // _APP_AT_H

View File

@ -1,140 +0,0 @@
#include <assert.h>
#include "app_config.h"
#include "app_audio.h"
#include "dram_mem.h"
#include "audio_scene.h"
#include "co_list.h"
#include "fr_device_pa.h"
#define APP_AUDIO_DATA_READY_THD 6
#define APP_AUDIO_DATA_BUFFER_MAX 12
enum app_audio_mode_t {
APP_AUDIO_MODE_IDLE,
APP_AUDIO_MODE_A2DP_SINK,
APP_AUDIO_MODE_A2DP_SOURCE,
APP_AUDIO_MODE_SCO,
APP_AUDIO_MODE_TONE,
APP_AUDIO_MODE_VOICE_RECOGNIZE,
};
static enum app_audio_mode_t audio_mode = APP_AUDIO_MODE_IDLE;
static uint32_t audio_data_counter = 0;
static audio_scene_t *audio_scene;
static void app_audio_stop(void)
{
switch(audio_mode) {
case APP_AUDIO_MODE_A2DP_SINK:
app_audio_a2dp_sink_stop();
break;
case APP_AUDIO_MODE_SCO:
app_audio_sco_stop();
break;
default:
break;
}
}
void app_audio_a2dp_sink_start(audio_type_t audio_type, uint32_t sample_rate)
{
audio_scene_param_a2dp_sink_t param;
if (audio_mode == APP_AUDIO_MODE_A2DP_SINK) {
return;
}
if (audio_mode != APP_AUDIO_MODE_IDLE) {
app_audio_stop();
}
param.sample_rate = sample_rate;
param.channels = 2;
param.audio_type = audio_type;
param.hw_type = AUDIO_HW_TYPE_CODEC;
param.hw_base_addr = I2S0_BASE;
assert(audio_mode == APP_AUDIO_MODE_IDLE);
audio_scene = audio_scene_create(AUDIO_SCENE_TYPE_A2DP_SINK, &param);
assert(audio_scene != NULL);
audio_mode = APP_AUDIO_MODE_A2DP_SINK;
}
void app_audio_a2dp_sink_stop(void)
{
if (audio_mode == APP_AUDIO_MODE_A2DP_SINK) {
audio_scene_destroy(audio_scene);
audio_mode = APP_AUDIO_MODE_IDLE;
device_pa_disable();
}
}
void app_audio_a2dp_sink_play(uint8_t *buffer, uint32_t length)
{
if (audio_mode == APP_AUDIO_MODE_A2DP_SINK) {
if (audio_scene_dac_is_ready(audio_scene)) {
device_pa_enable();
}
audio_scene_recv_raw_data(audio_scene, true, buffer, length);
}
}
void app_audio_sco_start(audio_type_t audio_type,audio_sence_report_encoded_frame report_enc_cb, void *report_enc_arg)
{
audio_scene_param_sco_t param;
if (audio_mode == APP_AUDIO_MODE_SCO) {
return;
}
if (audio_mode != APP_AUDIO_MODE_IDLE) {
app_audio_stop();
}
if (audio_type == AUDIO_TYPE_MSBC) {
printf("SCO: msbc.\r\n");
param.sample_rate = 16000;
}
else {
printf("SCO: cvsd.\r\n");
param.sample_rate = 8000;
}
param.audio_type = audio_type;
param.hw_type = AUDIO_HW_TYPE_CODEC;
param.hw_base_addr = I2S0_BASE;
param.report_enc_cb = report_enc_cb;
param.report_enc_arg = report_enc_arg;
assert(audio_mode == APP_AUDIO_MODE_IDLE);
audio_scene = audio_scene_create(AUDIO_SCENE_TYPE_SCO, &param);
audio_mode = APP_AUDIO_MODE_SCO;
assert(audio_scene != NULL);
}
void app_audio_sco_stop(void)
{
if (audio_mode == APP_AUDIO_MODE_SCO) {
audio_scene_destroy(audio_scene);
audio_mode = APP_AUDIO_MODE_IDLE;
device_pa_disable();
}
}
void app_audio_sco_recv(bool valid, uint8_t audio_type, uint8_t *buffer, uint32_t length)
{
if (audio_mode == APP_AUDIO_MODE_SCO) {
if (audio_scene_dac_is_ready(audio_scene)) {
device_pa_enable();
}
if (audio_type == AUDIO_TYPE_MSBC) {
audio_scene_recv_raw_data(audio_scene, valid, buffer+2, length-3);
}
else {
audio_scene_recv_raw_data(audio_scene, valid, buffer, length);
}
}
}

View File

@ -1,21 +0,0 @@
#ifndef _APP_AUDIO_H
#define _APP_AUDIO_H
#include <stdint.h>
#include <stdbool.h>
#include "audio_common.h"
#include "audio_scene.h"
void app_audio_a2dp_sink_start(audio_type_t audio_type, uint32_t sample_rate);
void app_audio_a2dp_sink_stop(void);
void app_audio_a2dp_sink_play(uint8_t *buffer, uint32_t length);
void app_audio_sco_start(audio_type_t audio_type, audio_sence_report_encoded_frame report_enc_cb, void *report_enc_arg);
void app_audio_sco_stop(void);
void app_audio_sco_recv(bool valid, uint8_t audio_type, uint8_t *buffer, uint32_t length);
void app_audio_voice_recognize_start(void);
void app_audio_voice_recognize_stop(void);
#endif // _APP_AUDIO_H

View File

@ -1,378 +0,0 @@
#include <string.h>
#include "co_log.h"
#include "gap_api.h"
#include "gatt_api.h"
#include "fdb_app.h"
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"
#include "portable.h"
#include "btdm_mem.h"
#include "ANCS_AMS_client.h"
#include "AMS_client.h"
#include "driver_gpio.h"
#include "hid_service.h"
#include "simple_gatt_service.h"
#include "ota_service.h"
#define APP_BLE_ADV_CHN_MAX 2
static void app_ble_start_advertising(uint8_t adv_chn);
char local_device_name[] = "Smart Watch";
static adv_handle adv[APP_BLE_ADV_CHN_MAX];
static uint16_t mtu_connected[8];
extern const uint8_t ble_static_addr[];
uint8_t slave_link_conidx;
/*
* Advertising data, max size is 28 bytes
*/
static uint8_t adv_data[] = {
#if 0
/* gatt service information */
0x03, //length of this AD
GAP_ADVTYPE_16BIT_MORE, //16bit service uuid AD type
//0xff, 0xf0, //value.service uuid:0xFFF0
LO_UINT16(0XFF72),
HI_UINT16(0XFF72),
#endif
/* local device name information */
0x0C, //length of this AD
GAP_ADVTYPE_LOCAL_NAME_COMPLETE, //complete name AD type
'S','m','a','r','t',' ','W','a','t','c','h', //value.local device name
0x09, // addr mac
GAP_ADVTYPE_MANUFACTURER_SPECIFIC,
LO_UINT16(0x1671),
HI_UINT16(0x1671),
0xc2,0x12,0x12,0x12,0x00,0x13,
0x03, // length of this data
GAP_ADVTYPE_APPEARANCE,
LO_UINT16(0x03c0),
HI_UINT16(0x03c0),
#if 0
// appearance
0x03, // length of this data
GAP_ADVTYPE_APPEARANCE,
LO_UINT16(GAP_APPEARE_HID_KEYBOARD),
HI_UINT16(GAP_APPEARE_HID_KEYBOARD),
#endif
};
/*
* Advertising scan response data, max size is 31 bytes
*/
static uint8_t adv_scan_rsp_data[] = {
#if 1
0x03, // length of this data
GAP_ADVTYPE_16BIT_COMPLETE,
LO_UINT16(HID_SERV_UUID),
HI_UINT16(HID_SERV_UUID),
#endif
#if 0
// Tx power level <20><><EFBFBD><EFBFBD><E4B9A6>
0x02, // length of this data
GAP_ADVTYPE_POWER_LEVEL,
0, // 0dBm
#endif
};
uint8_t service_id;
extern uint8_t slave_link_conidx;
uint16_t app_ble_get_mtu(uint8_t conidx)
{
return mtu_connected[conidx];
}
void app_ble_set_mtu(uint8_t conidx, uint16_t mtu)
{
mtu_connected[conidx] = mtu;
}
static uint16_t gap_callback(struct gap_event *event)
{
printf("gap_callback: type = %d\r\n", event->type);
switch(event->type) {
case GATT_EVT_PROFILE_ADDED:
{
printf("gap_callback: GATT_EVT_PROFILE_ADDED: 0x%02X\r\n", event->param.profile_added_status);
/* service profile has been added successfully, then the advertising can be started */
app_ble_start_advertising(0);
}
break;
case GAP_EVT_ADV_SET_PARAM:
printf("adv param set: 0x%02X\r\n", event->param.adv_set_param.status);
break;
case GAP_EVT_ADV_SET_ADV_DATA:
printf("adv data set: 0x%02X\r\n", event->param.adv_set_adv_data.status);
break;
case GAP_EVT_ADV_SET_SCAN_RSP:
printf("adv scan rsp data set: 0x%02X\r\n", event->param.adv_set_scan_rsp.status);
break;
case GAP_EVT_ADV_START:
printf("adv start :0x%02X\r\n", event->param.adv_start.status);
break;
case GAP_EVT_ADV_END:
printf("adv end: 0x%02X\r\n", event->param.adv_end.status);
break;
case GAP_EVT_SLAVE_CONNECT:
{
//gap_get_link_version(event->param.connect.conidx);
//gap_get_link_rssi(event->param.connect.conidx);
//gap_get_link_features(event->param.connect.conidx);
printf("slave connect[%d], connect num: %d\r\n", event->param.connect.conidx, gap_get_connect_num());
slave_link_conidx = event->param.connect.conidx;
//gatt_mtu_exchange_req(hid_svc_id, event->param.connect.conidx, 247);
//gap_security_req(event->param.connect.conidx);
#if BLE_PROFILE_ENABLE_ANCS
gatt_discovery_all_peer_svc(ANCS_AMS_client_id,event->param.connect.conidx);
#endif
}
break;
case GAP_EVT_DISCONNECT:
{
printf("gap_callback: GAP_EVT_DISCONNECT, conidx:%d, reason:0x%02X\r\n", event->param.disconnect.conidx,
event->param.disconnect.reason);
app_ble_start_advertising(0);
}
break;
case GATT_EVT_MTU:
printf("gap_callback: conidx: %d, GATT_EVT_MTU: %d\r\n", event->param.mtu_ind.conidx, event->param.mtu_ind.mtu);
app_ble_set_mtu(event->param.mtu_ind.conidx, event->param.mtu_ind.mtu);
//gap_security_req(event->param.connect.conidx);
break;
case GAP_EVT_SMP_ENCRYPT_SUCCESS:
printf("gap_callback: conidx: %d, GAP_EVT_SMP_ENCRYPT_SUCCESS \r\n", event->param.mtu_ind.conidx);
break;
case GAP_EVT_SMP_BOND_SUCCESS:
printf("gap_callback: conidx: %d, GAP_EVT_SMP_BOND_SUCCESS \r\n", event->param.mtu_ind.conidx);
#if BLE_PROFILE_ENABLE_ANCS
ancs_enable_src_notify(event->param.connect.conidx);
#endif
#if (BLE_PROFILE_ENABLE_HID)
hid_service_enable(event->param.connect.conidx);
#endif
#if 0
struct gap_link_param_update_req req;
req.conidx = event->param.connect.conidx;
req.intv_max = 12;
req.intv_min = 12;
req.latency = 30;
req.time_out = 140;
gap_param_update_req(&req);
#endif
//gap_conn_param_update((uint8_t)arg, 24, 24, 33, 500);
break;
case GAP_EVT_NAME_REQ:
{
gap_name_req_rsp(event->param.name_req.conidx,
event->param.name_req.token,
sizeof(local_device_name),
(uint8_t *)local_device_name);
}
break;
case GAP_EVT_APPEARANCE_REQ:
{
gap_appearance_req_rsp(event->param.appearance_req.conidx,
event->param.appearance_req.token,
GAP_APPEARE_HID_KEYBOARD);
}
break;
case GAP_EVT_LINK_PARAM_REQ:
{
struct gap_link_param_update_rsp rsp;
rsp.accept = true;
rsp.conidx = event->param.link_param_update_req.conidx;
rsp.ce_len_max = 2;
rsp.ce_len_min = 2;
gap_param_update_rsp(&rsp);
}
break;
case GAP_EVT_LINK_PARAM_UPDATE:
{
printf("conn param update,conidx:%d, con_int:%d, latency:%d, timeout%d\r\n", event->param.link_param_update.conidx,
event->param.link_param_update.con_interval,
event->param.link_param_update.con_latency,
event->param.link_param_update.sup_to);
//gap_security_req(event->param.connect.conidx);
}
break;
case GAP_EVT_LINK_RSSI:
printf("gap_callback: conidx: %d, GAP_EVT_LINK_RSSI: %d\r\n", event->param.gap_link_rssi.conidx, event->param.gap_link_rssi.link_rssi);
break;
case GAP_EVT_PHY_IND:
printf("gap_callback: conidx: %d, GAP_EVT_PHY_IND: %d\r\n", event->param.gap_phy_ind.conidx, event->param.gap_phy_ind.tx_phy);
break;
case GAP_EVT_PHY_REJECT:
printf("gap_callback: conidx: %d, GAP_EVT_PHY_REJECT, status: %d\r\n", event->param.gap_phy_update_reject.conidx, event->param.gap_phy_update_reject.status);
break;
case GAP_EVT_LINK_VER:
printf("gap_callback: conidx: %d, GAP_EVT_LINK_VER\r\n", event->param.gap_link_ver.conidx);
break;
case GAP_EVT_LINK_FEATURE:
printf("gap_callback: conidx: %d, GAP_EVT_LINK_FEATURE:%d\r\n", event->param.gap_link_feature.conidx, event->param.gap_link_feature.features[0]);
break;
default:
break;
}
return 0;
}
void app_ble_start_advertising(uint8_t adv_chn)
{
if (adv_chn < APP_BLE_ADV_CHN_MAX) {
if (adv[adv_chn] == NULL) {
struct gap_adv_param adv_param;
adv_param.adv_mode = GAP_ADV_MODE_UNDIRECT;
adv_param.disc_mode = GAP_ADV_DISC_MODE_GEN_DISC;
adv_param.filt_policy = GAP_ADV_FILTER_SCAN_ANY_CON_ANY;
adv_param.adv_chnl_map = GAP_ADV_CHAN_ALL;
adv_param.phy_mode = GAP_PHY_TYPE_LE_1M;
adv_param.own_addr_type = GAP_ADDR_TYPE_STATIC; // GAPM_GEN_RSLV_ADDR GAPM_STATIC_ADDR
adv_param.adv_intv_min = 1600;
adv_param.adv_intv_max = 1600;
adv[adv_chn] = gap_adv_create();
gap_adv_set_param(adv[adv_chn], &adv_param);
adv_data[17] = ble_static_addr[5];
adv_data[18] = ble_static_addr[4];
adv_data[19] = ble_static_addr[3];
adv_data[20] = ble_static_addr[2];
adv_data[21] = ble_static_addr[1];
adv_data[22] = ble_static_addr[0];
gap_adv_set_adv_data(adv[adv_chn], adv_data, sizeof(adv_data));
gap_adv_set_scan_rsp(adv[adv_chn], adv_scan_rsp_data, sizeof(adv_scan_rsp_data));
}
gap_adv_start(adv[adv_chn], 0, 0);
}
}
void app_ble_init(void)
{
printf("app_ble_init\r\n");
// gap_set_dev_appearance(GAP_APPEARE_HID_KEYBOARD);
/* set GAP event callback*/
gap_set_cb_func(gap_callback);
/* set security param */
struct gap_security_param smp_param;
smp_param.mitm = true;
smp_param.secure_connection = false;
smp_param.bond = true;
smp_param.oob_used = GAP_OOB_AUTH_DATA_NOT_PRESENT;
smp_param.io_cap = GAP_IO_CAP_NO_INPUT_NO_OUTPUT;
smp_param.rsp_mode = ENABLE_AUTO_RSP;
gap_security_param_init(&smp_param);
/* add service profile, The GAP callback event is GATT_EVT_PROFILE_ADDED*/
//app_ble_add_service();
ota_gatt_add_service();
sp_gatt_add_service();
#if BLE_PROFILE_ENABLE_ANCS
ANCS_AMS_gatt_add_client();
#endif
#if BLE_PROFILE_ENABLE_HID
hid_gatt_add_service();
#endif
}
void app_ble_scan_start(void)
{
struct gap_scan_param param;
param.scan_type = GAP_SCAN_TYPE_GEN_DISC;
param.own_addr_type = GAP_ADDR_TYPE_STATIC;
param.phy_mode = GAP_PHY_TYPE_LE_1M;
param.dup_filt_pol = true;
param.scan_intv = 32;
param.scan_window = 20;
param.duration = 0;
gap_scan_start(&param);
}
void app_ble_scan_stop(void)
{
gap_scan_stop();
}
void app_ble_conn_start(struct gap_ble_addr *addr)
{
struct gap_conn_param conn_param;
conn_param.peer_addr.addr_type = addr->addr_type;
conn_param.peer_addr.addr.addr[0] = addr->addr.addr[0];
conn_param.peer_addr.addr.addr[1] = addr->addr.addr[1];
conn_param.peer_addr.addr.addr[2] = addr->addr.addr[2];
conn_param.peer_addr.addr.addr[3] = addr->addr.addr[3];
conn_param.peer_addr.addr.addr[4] = addr->addr.addr[4];
conn_param.peer_addr.addr.addr[5] = addr->addr.addr[5];
conn_param.own_addr_type = GAP_ADDR_TYPE_STATIC;
conn_param.phy_mode = GAP_PHY_TYPE_LE_1M;
conn_param.scan_intv = 32;
conn_param.scan_window = 32;
conn_param.conn_intv_min = 24;
conn_param.conn_intv_max = 24;
conn_param.supervision_to = 500;
conn_param.slave_latency = 0;
conn_param.ce_len_max = 2;
conn_param.ce_len_min = 2;
gap_conn_start(&conn_param);
}
void app_ble_conn_stop(void)
{
gap_conn_stop();
}

View File

@ -1,19 +0,0 @@
#ifndef _APP_BLE_H
#define _APP_BLE_H
#include <stdint.h>
#include "gap_api.h"
void app_ble_init(void);
void app_ble_advertising_start(uint8_t adv_chn);
void app_ble_advertising_stop(uint8_t adv_chn);
void app_ble_scan_start(void);
void app_ble_scan_stop(void);
void app_ble_conn_start(struct gap_ble_addr *addr);
void app_ble_conn_stop(void);
#endif // _APP_BLE_H

File diff suppressed because it is too large Load Diff

View File

@ -1,32 +0,0 @@
#ifndef _APP_BT_H
#define _APP_BT_H
#include "app_btdm.h"
#include "hf_api.h"
#include "me_api.h"
#include "a2dp_api.h"
#include "hfg_api.h"
#include "avrcp_api.h"
#include "hid_api.h"
#include "spp_api.h"
#include "pbap_api.h"
extern HfChannel *hf_channel;
extern HfgChannel *hfg_channel;
extern A2dpStream *Stream;
extern AvrcpChannel *rcpCtChannel;
extern AvrcpChannel *rcpTgChannel;
extern PbapClientSession *pbap_client;
extern SppDev *spp_dev;
uint8_t bt_get_free_hf_channel(void);
uint8_t bt_get_free_hfg_channel(void);
uint8_t bt_get_free_a2dp_stream(void);
uint8_t bt_get_free_avrcp_channel(void);
void app_bt_send_sco_data(void *channel, uint8_t seq, uint8_t *data, uint16_t length);
void app_bt_init(app_btdm_callback_t cb);
#endif // _APP_BT_H

View File

@ -1,240 +0,0 @@
#include "app_config.h"
#include "app_task.h"
#include "app_btdm.h"
#include "app_audio.h"
#include "app_ble.h"
#include "app_bt.h"
#include "user_bt.h"
#include "fr_device_pmu_io.h"
#include "fr_device_pmu_io.h"
#include "co_list.h"
#include "controller.h"
#include "host.h"
#include "btdm_mem.h"
#include "fdb_app.h"
#define SCO_DATA_BUFFER_COUNT 4
typedef int32_t app_btdm_ret_t;
struct sco_data_t {
struct co_list_hdr hdr;
void *arg;
uint16_t length;
uint8_t data[];
};
uint8_t bt_addr[] = {0x12, 0x00, 0x12, 0x12, 0x12, 0x12};
uint8_t ble_public_addr[] = {0x13, 0x00, 0x88, 0x12, 0x12, 0x12};
uint8_t ble_static_addr[] = {0x13, 0x66, 0x88, 0x12, 0x12, 0xc2};
static uint8_t sco_data_buffering = 0;
static struct co_list sco_data_list;
static void encoded_sco_frame_cb(void *arg, uint8_t *data, uint16_t length)
{
static uint16_t seq = 0;
if (sco_data_buffering) {
struct sco_data_t *sco_data;
sco_data = (void *)btdm_malloc(sizeof(struct sco_data_t) + length);
sco_data->arg = arg;
sco_data->length = length;
memcpy((void *)&sco_data->data[0], data, length);
co_list_push_back(&sco_data_list, &sco_data->hdr);
sco_data_buffering--;
if (sco_data_buffering == 0) {
sco_data = (void *)co_list_pop_front(&sco_data_list);
while (sco_data) {
//fputc('D', NULL);
app_bt_send_sco_data(sco_data->arg, seq++, sco_data->data, sco_data->length);
btdm_free((void *)sco_data);
sco_data = (void *)co_list_pop_front(&sco_data_list);
}
}
}
else {
//fputc('D', NULL);
app_bt_send_sco_data(arg, seq++, data, length);
}
}
static void btdm_callback(struct app_btdm_event_t *event)
{
switch(event->event) {
case APP_BTDM_EVT_A2DP_STREAM_STARTED:
if (event->param.a2dp_codec.codec_type == APP_BTDM_CODEC_SBC) {
app_audio_a2dp_sink_start(AUDIO_TYPE_SBC, event->param.a2dp_codec.sample_rate);
}
else if (event->param.a2dp_codec.codec_type == APP_BTDM_CODEC_AAC) {
app_audio_a2dp_sink_start(AUDIO_TYPE_AAC, event->param.a2dp_codec.sample_rate);
}
system_prevent_sleep_set(SYSTEM_PREVENT_SLEEP_A2DP_ONGOING);
break;
case APP_BTDM_EVT_A2DP_STREAM_STOPPED:
app_audio_a2dp_sink_stop();
system_prevent_sleep_clear(SYSTEM_PREVENT_SLEEP_A2DP_ONGOING);
break;
case APP_BTDM_EVT_A2DP_STREAM_DATA:
app_audio_a2dp_sink_play(event->param.a2dp_data.buffer, event->param.a2dp_data.length);
break;
case APP_BTDM_EVT_SCO_CREATED:
sco_data_buffering = SCO_DATA_BUFFER_COUNT;
{
struct sco_data_t *sco_data;
sco_data = (void *)co_list_pop_front(&sco_data_list);
while (sco_data) {
btdm_free((void *)sco_data);
sco_data = (void *)co_list_pop_front(&sco_data_list);
}
}
if (event->param.sco_codec.codec_type == APP_BTDM_CODEC_mSBC) {
app_audio_sco_start(AUDIO_TYPE_MSBC, encoded_sco_frame_cb, event->param.sco_codec.hf_channel);
}
else {
app_audio_sco_start(AUDIO_TYPE_PCM, encoded_sco_frame_cb, event->param.sco_codec.hf_channel);
}
system_prevent_sleep_set(SYSTEM_PREVENT_SLEEP_SCO_ONGOING);
break;
case APP_BTDM_EVT_SCO_REMOVED:
app_audio_sco_stop();
system_prevent_sleep_clear(SYSTEM_PREVENT_SLEEP_SCO_ONGOING);
break;
case APP_BTDM_EVT_SCO_DATA:
{
uint8_t audio_codec_type;
if (event->param.sco_data.codec_type == APP_BTDM_CODEC_mSBC) {
audio_codec_type = AUDIO_TYPE_MSBC;
}
else {
audio_codec_type = AUDIO_TYPE_PCM;
}
app_audio_sco_recv(event->param.sco_data.valid, audio_codec_type, event->param.sco_data.buffer, event->param.sco_data.length);
}
break;
default:
break;
}
}
void app_btdm_start(void)
{
app_ble_init();
#if BTDM_STACK_ENABLE_BT == 1
app_bt_init(btdm_callback);
user_bt_init();
#endif
}
void host_ready_cb(void)
{
struct app_task_event *event;
/* notify application BTDM stack is ready. */
event = app_task_event_alloc(APP_TASK_EVENT_HOST_INITED, 0, true);
app_task_event_post(event, false);
}
void app_btdm_init(void)
{
/*get bt addr*/
#if BT_ADDR_RANDOM_ENABLE | BLE_ADDR_RANDOM_ENABLE
uint8_t rand_num[4];
if(flashdb_get(FDB_KEY_USER_RANDOM_SEED, (void *)&rand_num[0], 4) != 0){
#if BT_ADDR_RANDOM_ENABLE
memcpy((void *)&bt_addr[0],rand_num,4);
#endif
#if BLE_ADDR_RANDOM_ENABLE
memcpy((void *)&ble_static_addr[0],rand_num,4);
#endif
}
#endif
/* prepare for BTDM stack */
#if CONTROLLER_CODE_LOAD_MODE == CONTROLLER_CODE_LOAD_MODE_XIP_RO
#if CONTROLLER_CODE_INC_SENSOR_HUB
extern uint8_t CONTROLLER_CODE_SPLIT_OTA_BASE;
uint32_t controller_code_base_addr = (uint32_t)&CONTROLLER_CODE_SPLIT_OTA_BASE;
#else
extern uint8_t CONTROLLER_CODE_OTA_BASE;
uint32_t controller_code_base_addr = (uint32_t)&CONTROLLER_CODE_OTA_BASE;
#endif
controller_start(BTDM_STACK_HCI_BAUDRATE, ble_public_addr, bt_addr, controller_code_base_addr);
#elif CONTROLLER_CODE_LOAD_MODE == CONTROLLER_CODE_LOAD_MODE_FIX_ADDRESS
controller_start(BTDM_STACK_HCI_BAUDRATE, ble_public_addr, bt_addr, CONTROLLER_CODE_FIX_ADDRESS | FLASH_DAC_BASE);
#else
#error "choose correct CONTROLLER_CODE_LOAD_MODE"
#endif
#if BTDM_STACK_ENABLE_BT == 1
host_btdm_start(BTDM_STACK_HCI_BAUDRATE, HOST_TASK_STACK_SIZE, HOST_TASK_PRIORITY, ble_static_addr);
#else
host_ble_start(BTDM_STACK_HCI_BAUDRATE, HOST_TASK_STACK_SIZE, HOST_TASK_PRIORITY, ble_static_addr);
#endif
/* init MCU->BT pin, configure PMU_PIN_8 output BBG_EN signal */
ool_write(PMU_REG_DIAG_CTRL, 0x82);
ool_write(PMU_REG_PIN_IOMUX_H, 0x03);
/* disable PMU pin input as default setting */
ool_write16(PMU_REG_PIN_INPUT_EN, (PMU_IO_INTTERUPT_DEFAULT<<2) | 0x0002);
/* PP1 is connected to ARST of 1010, this pin is low in sleep mode */
ool_write16(PMU_REG_PIN_PULL_EN, 0x3ffd);
ool_write16(PMU_REG_PIN_PULL_SEL, 0x3fff);
/* init BT->MCU pin, system should not enter sleep mode when this pin is low level */
system_prevent_sleep_set(SYSTEM_PREVENT_SLEEP_TYPE_HCI_RX);
pmu_gpio_int_init(PMU_PIN_9, PMU_GPIO_PULL_UP, 0);
pmu_enable_isr(PMU_GPIO_PMU_INT_MSK_BIT);
NVIC_SetPriority(PMU_IRQn, 4);
NVIC_EnableIRQ(PMU_IRQn);
}
app_btdm_ret_t app_btdm_ble_adv_start(uint16_t dur)
{
return -1;
}
app_btdm_ret_t app_btdm_ble_adv_stop(void)
{
return -1;
}
app_btdm_ret_t app_btdm_ble_disconnect(void)
{
return -1;
}
app_btdm_ret_t app_btdm_bt_access_mode_set(uint8_t mode)
{
return -1;
}
app_btdm_ret_t app_btdm_bt_scan_start(uint16_t dur)
{
return -1;
}
app_btdm_ret_t app_btdm_bt_scan_stop(void)
{
return -1;
}
app_btdm_ret_t app_btdm_bt_connect(uint8_t *peer_addr)
{
return -1;
}
app_btdm_ret_t app_btdm_bt_disconnect(void)
{
return -1;
}
app_btdm_ret_t app_btdm_bt_profile_enable(uint16_t profiles)
{
return -1;
}
const uint8_t *app_get_bt_addr(void)
{
return bt_addr;
}

View File

@ -1,67 +0,0 @@
#ifndef _APP_BTDM_H
#define _APP_BTDM_H
#include <stdint.h>
#include <stdbool.h>
enum {
APP_BTDM_EVT_BLE_CONNECTED,
APP_BTDM_EVT_BLE_DISCONNECTED,
APP_BTDM_EVT_BT_CONNECTED,
APP_BTDM_EVT_BT_DISCONNECTED,
APP_BTDM_EVT_HF_INCOMING,
APP_BTDM_EVT_HF_CALL_ACTIVE,
APP_BTDM_EVT_HF_CALL_REMOVE,
APP_BTDM_EVT_A2DP_STREAM_STARTED,
APP_BTDM_EVT_A2DP_STREAM_STOPPED,
APP_BTDM_EVT_A2DP_STREAM_DATA,
APP_BTDM_EVT_AVRCP_VOL_CHANGE,
APP_BTDM_EVT_AVRCP_NEXT,
APP_BTDM_EVT_AVRCP_PREV,
APP_BTDM_EVT_AVRCP_PAUSE,
APP_BTDM_EVT_AVRCP_FAST_FORWARD,
APP_BTDM_EVT_AVRCP_FAST_BACKWARD,
APP_BTDM_EVT_SCO_CREATED,
APP_BTDM_EVT_SCO_REMOVED,
APP_BTDM_EVT_SCO_DATA,
};
enum {
APP_BTDM_CODEC_SBC,
APP_BTDM_CODEC_AAC,
APP_BTDM_CODEC_mSBC,
APP_BTDM_CODEC_PCM,
APP_BTDM_CODEC_UNKNOWN,
};
struct app_btdm_event_t {
uint8_t event;
union {
struct {
uint8_t *buffer;
uint32_t length;
} a2dp_data;
struct {
uint8_t codec_type;
uint32_t sample_rate;
} a2dp_codec;
struct {
bool valid;
uint8_t codec_type;
uint8_t *buffer;
uint32_t length;
} sco_data;
struct {
void *hf_channel;
uint8_t codec_type;
} sco_codec;
} param;
};
typedef void (*app_btdm_callback_t)(struct app_btdm_event_t *e);
void app_btdm_start(void);
void app_btdm_init(void);
const uint8_t *app_get_bt_addr(void);
#endif // _APP_BTDM_H

View File

@ -1,983 +0,0 @@
/*
* 1. AT command and log: UART3
* 2. HCI interface: UART0, GPIO_PMU, handled by host.c.
* 3. Display: DMA1, SPIx8_0, GPIO (for cs)
* 4. Touchpad: I2C3
* 5. PSRAM: OSPI
* 6. external Flash: DMA0, SPIx8_1
* 7. DSP: IPC, RPMSG
* 8. DSP XIP Flash: QSPI1
* 9. Sensors: handled by 1010
* 10. System clock, XIP Flash: handled by sleep procedure
*/
#include "fr30xx.h"
#include "driver_display.h"
#include "driver_touchpad.h"
#include "driver_psram.h"
#include "IC_W25Qxx.h"
#include "app_config.h"
#include "app_hw.h"
struct hw_gpio_state_t {
uint16_t PortA_PullEN;
uint16_t PortB_PullEN;
uint16_t PortC_PullEN;
uint16_t PortD_PullEN;
uint16_t PortA_PullSelect;
uint16_t PortB_PullSelect;
uint16_t PortC_PullSelect;
uint16_t PortD_PullSelect;
uint32_t PortA_PullResCfg;
uint32_t PortB_PullResCfg;
uint32_t PortC_PullResCfg;
uint32_t PortD_PullResCfg;
uint32_t PortA_DriveCfg;
uint32_t PortB_DriveCfg;
uint32_t PortC_DriveCfg;
uint32_t PortD_DriveCfg;
uint32_t PortA_L_FuncMux;
uint32_t PortA_H_FuncMux;
uint32_t PortB_L_FuncMux;
uint32_t PortB_H_FuncMux;
uint32_t PortC_L_FuncMux;
uint32_t PortC_H_FuncMux;
uint32_t PortD_L_FuncMux;
uint32_t PortD_H_FuncMux;
uint32_t QSPI_PullSelect;
uint32_t QSPI_PullEN;
uint32_t OSPI_PullSelect;
uint32_t OSPI_PullEN;
uint16_t GPIOA_OutputEN;
uint16_t GPIOA_OUT_DATA;
uint16_t GPIOA_EXTI_EN;
uint16_t GPIOA_EXTI_INT_EN;
uint32_t GPIOA_EXTI_TYPE;
uint16_t GPIOB_OutputEN;
uint16_t GPIOB_OUT_DATA;
uint16_t GPIOB_EXTI_EN;
uint16_t GPIOB_EXTI_INT_EN;
uint32_t GPIOB_EXTI_TYPE;
uint16_t GPIOC_OutputEN;
uint16_t GPIOC_OUT_DATA;
uint16_t GPIOC_EXTI_EN;
uint16_t GPIOC_EXTI_INT_EN;
uint32_t GPIOC_EXTI_TYPE;
uint16_t GPIOD_OutputEN;
uint16_t GPIOD_OUT_DATA;
uint16_t GPIOD_EXTI_EN;
uint16_t GPIOD_EXTI_INT_EN;
uint32_t GPIOD_EXTI_TYPE;
};
static struct hw_gpio_state_t gpio_state;
UART_HandleTypeDef uart_log_handle;
DMA_HandleTypeDef dma_display_handle;
SPI_HandleTypeDef spi_display_handle;
I2C_HandleTypeDef i2c_touchpad_handle;
SPI_HandleTypeDef spi_flash_handle;
DMA_HandleTypeDef dma_flash_handle;
void app_at_rx_done(struct __UART_HandleTypeDef *handle);
void display_cs_set(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_5, GPIO_PIN_SET);
}
void display_cs_clear(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_5, GPIO_PIN_CLEAR);
}
#if BOARD_SEL == BOARD_EVB_FR5090
void display_reset_set(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
}
void display_reset_clear(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_14, GPIO_PIN_CLEAR);
}
void display_vci_set(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET);
}
void display_vci_clear(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_13, GPIO_PIN_CLEAR);
}
bool display_te_status(void)
{
return 1;
}
#elif BOARD_SEL == BOARD_EVB_FR3092E
void display_reset_set(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);
}
void display_reset_clear(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_6, GPIO_PIN_CLEAR);
}
void display_vci_set(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);
}
void display_vci_clear(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_15, GPIO_PIN_CLEAR);
}
bool display_te_status(void)
{
return gpio_read_pin(GPIOC, GPIO_PIN_7);
}
#elif BOARD_SEL == BOARD_EVB_FR3092E_CM
void display_reset_set(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
}
void display_reset_clear(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_14, GPIO_PIN_CLEAR);
}
void display_vci_set(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET);
}
void display_vci_clear(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_13, GPIO_PIN_CLEAR);
}
bool display_te_status(void)
{
return gpio_read_pin(GPIOB, GPIO_PIN_15);
}
#elif BOARD_SEL == BOARD_EVB_FR3092E
void display_reset_set(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_6, GPIO_PIN_SET);
}
void display_reset_clear(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_6, GPIO_PIN_CLEAR);
}
void display_vci_set(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);
}
void display_vci_clear(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_15, GPIO_PIN_CLEAR);
}
bool display_te_status(void)
{
return gpio_read_pin(GPIOC, GPIO_PIN_7);
}
#elif BOARD_SEL == BOARD_EVB_FR3092E_RGB
void display_reset_set(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
}
void display_reset_clear(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_14, GPIO_PIN_CLEAR);
}
void display_vci_set(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_13, GPIO_PIN_SET);
}
void display_vci_clear(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_13, GPIO_PIN_CLEAR);
}
bool display_te_status(void)
{
return gpio_read_pin(GPIOB, GPIO_PIN_15);
}
#else
#error "choose correct board"
#endif
void display_delay_ms(uint32_t counter)
{
system_delay_us(counter * 1000);
}
#if BOARD_SEL == BOARD_EVB_FR5090
void touchpad_reset_set(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);
}
void touchpad_reset_clear(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_15, GPIO_PIN_CLEAR);
}
#elif BOARD_SEL == BOARD_EVB_FR3092E
#if 1 //DISPLAY_TYPE_ICNA3310
void touchpad_reset_set(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_15, GPIO_PIN_SET);
}
void touchpad_reset_clear(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_15, GPIO_PIN_CLEAR);
}
#else
void touchpad_reset_set(void)
{
gpio_write_pin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
}
void touchpad_reset_clear(void)
{
gpio_write_pin(GPIOA, GPIO_PIN_6, GPIO_PIN_CLEAR);
}
#endif
#elif BOARD_SEL == BOARD_EVB_FR3092E_CM
void touchpad_reset_set(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_15, GPIO_PIN_SET);
}
void touchpad_reset_clear(void)
{
gpio_write_pin(GPIOC, GPIO_PIN_15, GPIO_PIN_CLEAR);
}
#elif BOARD_SEL == BOARD_EVB_FR3092E_RGB
void touchpad_reset_set(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
}
void touchpad_reset_clear(void)
{
gpio_write_pin(GPIOB, GPIO_PIN_10, GPIO_PIN_CLEAR);
}
#else
#error "choose correct board"
#endif
void touchpad_delay_ms(uint32_t counter)
{
system_delay_us(counter * 1000);
}
__RAM_CODE void hw_log_init(bool wake_up)
{
if (wake_up == false) {
GPIO_InitTypeDef gpio_config;
/* ========================================================== */
/* ========= Uart LOG configuration ========= */
/* ========================================================== */
/* configure PB4 and PB5 to UART3 function */
gpio_config.Pin = GPIO_PIN_4 | GPIO_PIN_5;
gpio_config.Mode = GPIO_MODE_AF_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_1;
gpio_init(GPIOB, &gpio_config);
__SYSTEM_UART3_CLK_ENABLE();
/* UART3: used for Log and AT command */
uart_log_handle.UARTx = UART3;
uart_log_handle.Init.BaudRate = 921600;
uart_log_handle.Init.DataLength = UART_DATA_LENGTH_8BIT;
uart_log_handle.Init.StopBits = UART_STOPBITS_1;
uart_log_handle.Init.Parity = UART_PARITY_NONE;
uart_log_handle.Init.FIFO_Mode = UART_FIFO_ENABLE;
uart_log_handle.TxCpltCallback = NULL;
uart_log_handle.RxCpltCallback = app_at_rx_done;
uart_init(&uart_log_handle);
NVIC_EnableIRQ(UART3_IRQn);
}
else {
__SYSTEM_UART3_CLK_ENABLE();
uart_init(&uart_log_handle);
__UART_INT_RX_ENABLE(uart_log_handle.UARTx);
NVIC_EnableIRQ(UART3_IRQn);
}
}
__RAM_CODE void hw_display_init(bool wake_up)
{
if (wake_up == false) {
GPIO_InitTypeDef gpio_config;
/* ========================================================== */
/* ========= Display interface configuration ========= */
/* ========================================================== */
/* config DMA1 for display */
__SYSTEM_DMA1_CLK_ENABLE();
dma_display_handle.DMAx = DMA1;
dma_display_handle.Channel = DMA_Channel0;
dma_display_handle.Init.Data_Flow = DMA_M2P_DMAC;
dma_display_handle.Init.Request_ID = 2;
system_dmac_request_id_config(SPIMX8_0_TX, DMA1_REQUEST_ID_2);
dma_display_handle.Init.Source_Master_Sel = DMA_AHB_MASTER_3;
dma_display_handle.Init.Desination_Master_Sel = DMA_AHB_MASTER_2;
dma_display_handle.Init.Source_Inc = DMA_ADDR_INC_INC;
dma_display_handle.Init.Desination_Inc = DMA_ADDR_INC_NO_CHANGE;
dma_display_handle.Init.Source_Width = DMA_TRANSFER_WIDTH_32;
dma_display_handle.Init.Desination_Width = DMA_TRANSFER_WIDTH_32;
dma_display_handle.Init.Source_Burst_Len = DMA_BURST_LEN_4;
dma_display_handle.Init.Desination_Burst_Len = DMA_BURST_LEN_4;
dma_init(&dma_display_handle);
NVIC_EnableIRQ(DMA1_IRQn);
__SYSTEM_GPIOB_CLK_ENABLE();
__SYSTEM_GPIOC_CLK_ENABLE();
/* configure C0, C1, C2, C3, C4 to SPIx8_0 function */
gpio_config.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4;
gpio_config.Mode = GPIO_MODE_AF_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_5;
gpio_init(GPIOC, &gpio_config);
/* configure C5 to CS function */
gpio_config.Pin = GPIO_PIN_5;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOC, &gpio_config);
#if BOARD_SEL == BOARD_EVB_FR5090
/* configure B13, PB14 to VCCI function, RESET function */
gpio_config.Pin = GPIO_PIN_13 | GPIO_PIN_14;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOB, &gpio_config);
#elif BOARD_SEL == BOARD_EVB_FR3092E
/* configure PC15, PC6 to VCCI function, RESET function n*/
gpio_config.Pin = GPIO_PIN_6 | GPIO_PIN_15;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOC, &gpio_config);
/* configure GPIO_PC7 to TE functio(interrupt pin) */
gpio_config.Pin = GPIO_PIN_7;
gpio_config.Mode = GPIO_MODE_INPUT;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_config.Pull = GPIO_PULLDOWN;
gpio_init(GPIOC, &gpio_config);
#elif BOARD_SEL == BOARD_EVB_FR3092E_CM
/* configure B13, PB14 to VCCI function, RESET function */
gpio_config.Pin = GPIO_PIN_13 | GPIO_PIN_14;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOB, &gpio_config);
/* configure GPIO_PB15 to TE functio(interrupt pin) */
gpio_config.Pin = GPIO_PIN_15;
gpio_config.Mode = GPIO_MODE_INPUT;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_config.Pull = GPIO_PULLDOWN;
gpio_init(GPIOB, &gpio_config);
#elif BOARD_SEL == BOARD_EVB_FR3092E_RGB
/* configure PC15, PC6 to VCCI function, RESET function n*/
gpio_config.Pin = GPIO_PIN_6 | GPIO_PIN_15;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOC, &gpio_config);
/* configure GPIO_PC7 to TE functio(interrupt pin) */
gpio_config.Pin = GPIO_PIN_7;
gpio_config.Mode = GPIO_MODE_INPUT;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_config.Pull = GPIO_PULLDOWN;
gpio_init(GPIOC, &gpio_config);
#else
#error "choose correct board"
#endif
__SYSTEM_SPI_MASTER0_X8_CLK_ENABLE();
spi_display_handle.SPIx = SPIMX8_0;
spi_display_handle.Init.Work_Mode = SPI_WORK_MODE_0;
spi_display_handle.Init.Frame_Size = SPI_FRAME_SIZE_8BIT;
#if BOARD_SEL == BOARD_EVB_FR5090
spi_display_handle.Init.BaudRate_Prescaler = 2;
#elif BOARD_SEL == BOARD_EVB_FR3092E
spi_display_handle.Init.BaudRate_Prescaler = 4;
#elif BOARD_SEL == BOARD_EVB_FR3092E_CM
spi_display_handle.Init.BaudRate_Prescaler = 4;
#elif BOARD_SEL == BOARD_EVB_FR3092E_RGB
spi_display_handle.Init.BaudRate_Prescaler = 4;
#else
#error "choose correct board"
#endif
spi_display_handle.Init.TxFIFOEmpty_Threshold = 20;
spi_display_handle.Init.RxFIFOFull_Threshold = 0;
spi_master_init(&spi_display_handle);
display_cs_set();
display_init();
}
else {
__SYSTEM_DMA1_CLK_ENABLE();
system_dmac_request_id_config(SPIMX8_0_TX, DMA1_REQUEST_ID_2);
dma_init(&dma_display_handle);
NVIC_EnableIRQ(DMA1_IRQn);
__SYSTEM_GPIOB_CLK_ENABLE();
__SYSTEM_GPIOC_CLK_ENABLE();
__SYSTEM_SPI_MASTER0_X8_CLK_ENABLE();
spi_display_handle.Init.Frame_Size = SPI_FRAME_SIZE_8BIT;
spi_master_init(&spi_display_handle);
}
}
__RAM_CODE void hw_touchpad_init(bool wake_up)
{
if (wake_up == false) {
GPIO_InitTypeDef gpio_config;
/* ========================================================== */
/* ========= TP configuration ========= */
/* ========================================================== */
__SYSTEM_GPIOC_CLK_ENABLE();
#if BOARD_SEL == BOARD_EVB_FR5090
/* configure GPIO_PC6 and GPIO_PC7 to I2C3 mode */
gpio_config.Pin = GPIO_PIN_6|GPIO_PIN_7;
gpio_config.Mode = GPIO_MODE_AF_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_3;
gpio_init(GPIOC, &gpio_config);
/* configure GPIO_PC15 to reset pin */
gpio_config.Pin = GPIO_PIN_15;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOC, &gpio_config);
/* configure GPIO_PC14 to interrupt pin */
gpio_config.Pin = GPIO_PIN_14;
gpio_config.Mode = GPIO_MODE_EXTI_IT_FALLING;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_config.Pull = GPIO_PULLUP;
gpio_init(GPIOC, &gpio_config);
#elif BOARD_SEL == BOARD_EVB_FR3092E
#if 1 //DISPLAY_TYPE_ICNA3310
/* configure GPIO_PB12 and GPIO_PB13 to I2C2 mode */
gpio_config.Pin = GPIO_PIN_12|GPIO_PIN_13;
gpio_config.Mode = GPIO_MODE_AF_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_3;
gpio_init(GPIOB, &gpio_config);
/* configure GPIO_PB15 to reset pin */
gpio_config.Pin = GPIO_PIN_15;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOB, &gpio_config);
/* configure GPIO_PB14 to interrupt pin */
gpio_config.Pin = GPIO_PIN_14;
gpio_config.Mode = GPIO_MODE_EXTI_IT_FALLING;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_config.Pull = GPIO_PULLUP;
gpio_init(GPIOB, &gpio_config);
exti_interrupt_enable(GPIOB,EXTI_LINE_14);
exti_clear_LineStatus(GPIOB,EXTI_LINE_14);
NVIC_EnableIRQ(GPIOB_IRQn);
#else
/* configure GPIO_PA4 and GPIO_PA5 to I2C2 mode */
gpio_config.Pin = GPIO_PIN_4|GPIO_PIN_5;
gpio_config.Mode = GPIO_MODE_AF_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_3;
gpio_init(GPIOA, &gpio_config);
__SYSTEM_GPIOA_CLK_ENABLE();
/* configure GPIO_PA6 to reset pin */
gpio_config.Pin = GPIO_PIN_6;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOA, &gpio_config);
__SYSTEM_GPIOB_CLK_ENABLE();
/* configure GPIO_PB14 to interrupt pin */
gpio_config.Pin = GPIO_PIN_14;
gpio_config.Mode = GPIO_MODE_EXTI_IT_FALLING;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_config.Pull = GPIO_PULLUP;
gpio_init(GPIOB, &gpio_config);
#endif
#elif BOARD_SEL == BOARD_EVB_FR3092E_CM
/* configure GPIO_PC6 and GPIO_PC7 to I2C3 mode */
gpio_config.Pin = GPIO_PIN_6|GPIO_PIN_7;
gpio_config.Mode = GPIO_MODE_AF_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_3;
gpio_init(GPIOC, &gpio_config);
/* configure GPIO_PC15 to reset pin */
gpio_config.Pin = GPIO_PIN_15;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOC, &gpio_config);
/* configure GPIO_PC14 to interrupt pin */
gpio_config.Pin = GPIO_PIN_14;
gpio_config.Mode = GPIO_MODE_EXTI_IT_FALLING;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_config.Pull = GPIO_PULLUP;
gpio_init(GPIOC, &gpio_config);
#elif BOARD_SEL == BOARD_EVB_FR3092E_RGB
__SYSTEM_GPIOA_CLK_ENABLE();
__SYSTEM_GPIOB_CLK_ENABLE();
gpio_config.Pin = GPIO_PIN_4|GPIO_PIN_5;
gpio_config.Mode = GPIO_MODE_AF_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_3;
gpio_init(GPIOA, &gpio_config);
gpio_config.Pin = GPIO_PIN_10;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOB, &gpio_config);
gpio_write_pin(GPIOB, GPIO_PIN_10, GPIO_PIN_SET);
// gpio_config.Pin = GPIO_PIN_1; //vci
// gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
// gpio_config.Alternate = GPIO_FUNCTION_0;
// gpio_init(GPIOB, &gpio_config);
// gpio_write_pin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
/* configure GPIO_PA4 to reset pin */
// gpio_config.Pin = GPIO_PIN_4;
// gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
// gpio_config.Alternate = GPIO_FUNCTION_0;
// gpio_init(GPIOA, &gpio_config);
/* configure GPIO_PA5 to interrupt pin */
gpio_config.Pin = GPIO_PIN_11;
gpio_config.Mode = GPIO_MODE_EXTI_IT_FALLING;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_config.Pull = GPIO_PULLUP;
gpio_init(GPIOB, &gpio_config);
#if 0
exti_interrupt_enable(GPIOB,EXTI_LINE_11);
exti_clear_LineStatus(GPIOB,EXTI_LINE_11);
NVIC_EnableIRQ(GPIOB_IRQn);
#endif
#else
#error "choose correct board"
#endif
/* I2C Init */
#if BOARD_SEL == BOARD_EVB_FR5090
__SYSTEM_I2C3_CLK_ENABLE();
i2c_touchpad_handle.I2Cx = I2C3;
i2c_touchpad_handle.Init.I2C_Mode = I2C_MODE_MASTER_7BIT;
i2c_touchpad_handle.Init.SCL_HCNT = 220;
i2c_touchpad_handle.Init.SCL_LCNT = 230;
#elif BOARD_SEL == BOARD_EVB_FR3092E
__SYSTEM_I2C2_CLK_ENABLE();
i2c_touchpad_handle.I2Cx = I2C2;
i2c_touchpad_handle.Init.I2C_Mode = I2C_MODE_MASTER_7BIT;
i2c_touchpad_handle.Init.SCL_HCNT = 220;
i2c_touchpad_handle.Init.SCL_LCNT = 230;
#elif BOARD_SEL == BOARD_EVB_FR3092E_CM
__SYSTEM_I2C3_CLK_ENABLE();
i2c_touchpad_handle.I2Cx = I2C3;
i2c_touchpad_handle.Init.I2C_Mode = I2C_MODE_MASTER_7BIT;
i2c_touchpad_handle.Init.SCL_HCNT = 90;
i2c_touchpad_handle.Init.SCL_LCNT = 90;
#elif BOARD_SEL == BOARD_EVB_FR3092E_RGB
__SYSTEM_I2C2_CLK_ENABLE();
i2c_touchpad_handle.I2Cx = I2C2;
i2c_touchpad_handle.Init.I2C_Mode = I2C_MODE_MASTER_7BIT;
i2c_touchpad_handle.Init.SCL_HCNT = 420;
i2c_touchpad_handle.Init.SCL_LCNT = 430;
#else
#error "choose correct board"
#endif
__TOUCHPAD_RESET_SET();
touchpad_init();
i2c_init(&i2c_touchpad_handle);
}
else {
__SYSTEM_GPIOC_CLK_ENABLE();
#if BOARD_SEL == BOARD_EVB_FR3092E
__SYSTEM_I2C2_CLK_ENABLE();
#elif BOARD_SEL == BOARD_EVB_FR3092E_RGB
__SYSTEM_I2C1_CLK_ENABLE();
__SYSTEM_GPIOB_CLK_ENABLE();
#else
__SYSTEM_I2C3_CLK_ENABLE();
#endif
i2c_init(&i2c_touchpad_handle);
}
}
__RAM_CODE void hw_psram_init(bool wake_up)
{
uint32_t reg_value;
__SYSTEM_OSPI_CLK_SELECT_AUPLL();
__SYSTEM_OSPI_CLK_ENABLE();
__SYSTEM_AHBC_CLK_ENABLE();
__CACHE_FLUSH(CACHE);
__CACHE_WR_MODE_SET(CACHE, CACHE_WR_WRITE_THROUGH);
__CACHE_ADDR_RANGEx_BANK_SET(CACHE, 0, 0 >> 16);
__CACHE_ADDR_RANGEx_MASK_SET(CACHE, 0, 0x001F);
__CACHE_ADDR_RANGEx_POL_SET(CACHE, 0, CACHE_POL_CACHABLE);
__CACHE_ADDR_RANGEx_ENABLE(CACHE, 0);
__CACHE_ENABLE(CACHE);
if (wake_up == false) {
/* setup PSRAM OSPI RESET pin */
SYSTEM->OspiPadConfig.OSPI_FuncMux |= 0x00300000;
SYSTEM->OspiOutEN &= (~(1<<10));
SYSTEM->OspiData |= (1<<10);
system_delay_us(200); // tPU > 150us
SYSTEM->OspiData &= (~(1<<10));
system_delay_us(10); // tRP > 1us
SYSTEM->OspiData |= (1<<10);
system_delay_us(600); // tDPDp > 500us
system_delay_us(300); // tHSPU > 1ms, from power up to fully access
}
/* configure OSPI pad to OSPI 4-line mode function */
reg_value = SYSTEM->OspiPadConfig.OSPI_FuncMux;
reg_value &= 0xfcf00ffc;
reg_value |= 0x01055001;
SYSTEM->OspiPadConfig.OSPI_FuncMux = reg_value;
psram_init(wake_up == false);
}
__RAM_CODE void hw_external_flash_init(bool wake_up)
{
if (wake_up == false) {
GPIO_InitTypeDef gpio_config;
/* ========================================================== */
/* ========= External Flash interface configuration ======== */
/* ========================================================== */
/* config GPIO for external flash */
gpio_config.Pin = GPIO_PIN_8 | GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13;
gpio_config.Mode = GPIO_MODE_AF_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_7;
gpio_init(GPIOC, &gpio_config);
/* CS of external flash is controllerd by software */
__SYSTEM_GPIOC_CLK_ENABLE();
gpio_config.Pin = GPIO_PIN_9;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Pull = GPIO_PULLUP;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOC, &gpio_config);
/* config DMA0 for external flash */
__SYSTEM_DMA0_CLK_ENABLE();
dma_flash_handle.DMAx = DMA0;
dma_flash_handle.Channel = DMA_Channel0;
dma_flash_handle.Init.Data_Flow = DMA_P2M_DMAC;
dma_flash_handle.Init.Request_ID = 2;
system_dmac_request_id_config(SPIMX8_1_RX, DMA0_REQUEST_ID_2);
dma_flash_handle.Init.Source_Master_Sel = DMA_AHB_MASTER_1;
dma_flash_handle.Init.Desination_Master_Sel = DMA_AHB_MASTER_4;
dma_flash_handle.Init.Source_Inc = DMA_ADDR_INC_NO_CHANGE;
dma_flash_handle.Init.Desination_Inc = DMA_ADDR_INC_INC;
dma_flash_handle.Init.Source_Width = DMA_TRANSFER_WIDTH_32;
dma_flash_handle.Init.Desination_Width = DMA_TRANSFER_WIDTH_32;
dma_flash_handle.Init.Source_Burst_Len = DMA_BURST_LEN_4;
dma_flash_handle.Init.Desination_Burst_Len = DMA_BURST_LEN_4;
dma_init(&dma_flash_handle);
/* Initial SPIx8_1 for extern flash */
__SYSTEM_SPI_MASTER1_X8_CLK_ENABLE();
spi_flash_handle.SPIx = SPIMX8_1;
spi_flash_handle.Init.Work_Mode = SPI_WORK_MODE_3;
spi_flash_handle.Init.Frame_Size = SPI_FRAME_SIZE_8BIT;
spi_flash_handle.Init.BaudRate_Prescaler = 2;
spi_flash_handle.Init.TxFIFOEmpty_Threshold = 20;
spi_flash_handle.Init.RxFIFOFull_Threshold = 4;
spi_master_init(&spi_flash_handle);
__SPI_RX_SAMPLE_DLY(spi_flash_handle.SPIx, 2);
__SPI_CS_Release();
IC_W25Qxx_QuadConfig(true);
NVIC_EnableIRQ(DMA0_IRQn);
NVIC_EnableIRQ(SPIMX8_1_IRQn);
}
else {
__SYSTEM_GPIOC_CLK_ENABLE();
__SYSTEM_DMA0_CLK_ENABLE();
system_dmac_request_id_config(SPIMX8_1_RX, DMA0_REQUEST_ID_2);
dma_init(&dma_flash_handle);
__SYSTEM_SPI_MASTER1_X8_CLK_ENABLE();
spi_master_init(&spi_flash_handle);
__SPI_RX_SAMPLE_DLY(spi_flash_handle.SPIx, 2);
NVIC_EnableIRQ(DMA0_IRQn);
NVIC_EnableIRQ(SPIMX8_1_IRQn);
}
}
__RAM_CODE void hw_dsp_xip_flash_init(bool wake_up)
{
uint32_t reg_value;
/* init QSPI1 for DSP XIP flash */
__SYSTEM_QSPI1_CLK_SELECT_AUPLL();
__SYSTEM_QSPI1_CLK_ENABLE();
/* configure OSPI pad to DSP XIP flash function */
reg_value = SYSTEM->OspiPadConfig.OSPI_FuncMux;
reg_value &= 0xc3fff033;
reg_value |= 0x14000544;
SYSTEM->OspiPadConfig.OSPI_FuncMux = reg_value;
/* power on DSP flash */
ool_write(0xfc, ool_read(0xfc) | 0x01);
/* configure DSP XIP controller */
flash_enable_quad(QSPI1);
flash_init_controller(QSPI1, FLASH_RD_TYPE_QUAD_FAST, FLASH_WR_TYPE_SINGLE);
flash_set_baudrate(QSPI1, QSPI_BAUDRATE_DIV_4);
}
__RAM_CODE void hw_dsp_restore(void)
{
}
__RAM_CODE __attribute__((noinline)) static void rise_qspi_clock(void)
{
__SYSTEM_QSPI0_CLK_SELECT_AUPLL();
__QSPI_DELAY_CS_START_SET(QSPI0, 4);
__QSPI_DELAY_CS_END_SET(QSPI0, 4);
__QSPI_DELAY_CS_DESSERT_SET(QSPI0, 8);
__QSPI_READ_CAPTURE_DELAY_SET(QSPI0, 3); // FLASH_ID_PUYA_P25Q32: 4 when div is 2
// FLASH_ID_XMC_XM25LU32: 3 when div is 2
// FLASH_ID_GIANTEC_GT25Q16A: 1 when div is 4
// FLASH_ID_GIANTEC_GT25Q16A: 4 when div is 2
system_delay_us(1000);
}
__RAM_CODE void hw_xip_flash_init(bool wake_up)
{
// init internal flash
__SYSTEM_PFC_CLK_ENABLE();
__SYSTEM_QSPI0_CLK_ENABLE();
__SYSTEM_APB_CLK_ENABLE();
__SYSTEM_APB1_CLK_ENABLE();
system_cache_enable(true);
flash_enable_quad(QSPI0);
SYSTEM->QspiPadConfig.QSPI_FuncMux = 0x00000500;
flash_init_controller(QSPI0, FLASH_RD_TYPE_QUAD_FAST, FLASH_WR_TYPE_SINGLE);
if (wake_up == false) {
flash_set_IO_DRV(QSPI0, 3);
}
flash_set_baudrate(QSPI0, QSPI_BAUDRATE_DIV_2);
rise_qspi_clock();
}
__RAM_CODE void hw_gpio_save(void)
{
gpio_state.PortA_PullEN = SYSTEM->PortA_PullEN;
gpio_state.PortB_PullEN = SYSTEM->PortB_PullEN;
gpio_state.PortC_PullEN = SYSTEM->PortC_PullEN;
gpio_state.PortD_PullEN = SYSTEM->PortD_PullEN;
gpio_state.PortA_PullSelect = SYSTEM->PortA_PullSelect;
gpio_state.PortB_PullSelect = SYSTEM->PortB_PullSelect;
gpio_state.PortC_PullSelect = SYSTEM->PortC_PullSelect;
gpio_state.PortD_PullSelect = SYSTEM->PortD_PullSelect;
gpio_state.PortA_PullResCfg = SYSTEM->PortA_PullResCfg;
gpio_state.PortB_PullResCfg = SYSTEM->PortB_PullResCfg;
gpio_state.PortC_PullResCfg = SYSTEM->PortC_PullResCfg;
gpio_state.PortD_PullResCfg = SYSTEM->PortD_PullResCfg;
gpio_state.PortA_DriveCfg = SYSTEM->PortA_DriveCfg;
gpio_state.PortB_DriveCfg = SYSTEM->PortB_DriveCfg;
gpio_state.PortC_DriveCfg = SYSTEM->PortC_DriveCfg;
gpio_state.PortD_DriveCfg = SYSTEM->PortD_DriveCfg;
gpio_state.PortA_L_FuncMux = SYSTEM->PortA_L_FuncMux;
gpio_state.PortA_H_FuncMux = SYSTEM->PortA_H_FuncMux;
gpio_state.PortB_L_FuncMux = SYSTEM->PortB_L_FuncMux;
gpio_state.PortB_H_FuncMux = SYSTEM->PortB_H_FuncMux;
gpio_state.PortC_L_FuncMux = SYSTEM->PortC_L_FuncMux;
gpio_state.PortC_H_FuncMux = SYSTEM->PortC_H_FuncMux;
gpio_state.PortD_L_FuncMux = SYSTEM->PortD_L_FuncMux;
gpio_state.PortD_H_FuncMux = SYSTEM->PortD_H_FuncMux;
gpio_state.QSPI_PullSelect = SYSTEM->QspiPadConfig.QSPI_PullSelect;
gpio_state.QSPI_PullEN = SYSTEM->QspiPadConfig.QSPI_PullEN;
gpio_state.OSPI_PullSelect = SYSTEM->OspiPadConfig.OSPI_PullSelect;
gpio_state.OSPI_PullEN = SYSTEM->OspiPadConfig.OSPI_PullEN;
__SYSTEM_GPIOA_CLK_ENABLE();
__SYSTEM_GPIOB_CLK_ENABLE();
__SYSTEM_GPIOC_CLK_ENABLE();
__SYSTEM_GPIOD_CLK_ENABLE();
gpio_state.GPIOA_OutputEN = GPIOA->GPIO_OutputEN;
gpio_state.GPIOA_OUT_DATA = GPIOA->GPIO_OUT_DATA;
gpio_state.GPIOA_EXTI_EN = GPIOA->EXTI_EN;
gpio_state.GPIOA_EXTI_INT_EN= GPIOA->EXTI_INT_EN;
gpio_state.GPIOA_EXTI_TYPE = GPIOA->EXTI_TYPE;
gpio_state.GPIOB_OutputEN = GPIOB->GPIO_OutputEN;
gpio_state.GPIOB_OUT_DATA = GPIOB->GPIO_OUT_DATA;
gpio_state.GPIOB_EXTI_EN = GPIOB->EXTI_EN;
gpio_state.GPIOB_EXTI_INT_EN= GPIOB->EXTI_INT_EN;
gpio_state.GPIOB_EXTI_TYPE = GPIOB->EXTI_TYPE;
gpio_state.GPIOC_OutputEN = GPIOC->GPIO_OutputEN;
gpio_state.GPIOC_OUT_DATA = GPIOC->GPIO_OUT_DATA;
gpio_state.GPIOC_EXTI_EN = GPIOC->EXTI_EN;
gpio_state.GPIOC_EXTI_INT_EN= GPIOC->EXTI_INT_EN;
gpio_state.GPIOC_EXTI_TYPE = GPIOC->EXTI_TYPE;
gpio_state.GPIOD_OutputEN = GPIOD->GPIO_OutputEN;
gpio_state.GPIOD_OUT_DATA = GPIOD->GPIO_OUT_DATA;
gpio_state.GPIOD_EXTI_EN = GPIOD->EXTI_EN;
gpio_state.GPIOD_EXTI_INT_EN= GPIOD->EXTI_INT_EN;
gpio_state.GPIOD_EXTI_TYPE = GPIOD->EXTI_TYPE;
}
__RAM_CODE void hw_gpio_restore(void)
{
SYSTEM->PortA_PullEN = gpio_state.PortA_PullEN;
SYSTEM->PortB_PullEN = gpio_state.PortB_PullEN;
SYSTEM->PortC_PullEN = gpio_state.PortC_PullEN;
SYSTEM->PortD_PullEN = gpio_state.PortD_PullEN;
SYSTEM->PortA_PullSelect = gpio_state.PortA_PullSelect;
SYSTEM->PortB_PullSelect = gpio_state.PortB_PullSelect;
SYSTEM->PortC_PullSelect = gpio_state.PortC_PullSelect;
SYSTEM->PortD_PullSelect = gpio_state.PortD_PullSelect;
SYSTEM->PortA_PullResCfg = gpio_state.PortA_PullResCfg;
SYSTEM->PortB_PullResCfg = gpio_state.PortB_PullResCfg;
SYSTEM->PortC_PullResCfg = gpio_state.PortC_PullResCfg;
SYSTEM->PortD_PullResCfg = gpio_state.PortD_PullResCfg;
SYSTEM->PortA_DriveCfg = gpio_state.PortA_DriveCfg;
SYSTEM->PortB_DriveCfg = gpio_state.PortB_DriveCfg;
SYSTEM->PortC_DriveCfg = gpio_state.PortC_DriveCfg;
SYSTEM->PortD_DriveCfg = gpio_state.PortD_DriveCfg;
SYSTEM->PortA_L_FuncMux = gpio_state.PortA_L_FuncMux;
SYSTEM->PortA_H_FuncMux = gpio_state.PortA_H_FuncMux;
SYSTEM->PortB_L_FuncMux = gpio_state.PortB_L_FuncMux;
SYSTEM->PortB_H_FuncMux = gpio_state.PortB_H_FuncMux;
SYSTEM->PortC_L_FuncMux = gpio_state.PortC_L_FuncMux;
SYSTEM->PortC_H_FuncMux = gpio_state.PortC_H_FuncMux;
SYSTEM->PortD_L_FuncMux = gpio_state.PortD_L_FuncMux;
SYSTEM->PortD_H_FuncMux = gpio_state.PortD_H_FuncMux;
SYSTEM->QspiPadConfig.QSPI_PullSelect = gpio_state.QSPI_PullSelect;
SYSTEM->QspiPadConfig.QSPI_PullEN = gpio_state.QSPI_PullEN;
SYSTEM->OspiPadConfig.OSPI_PullSelect = gpio_state.OSPI_PullSelect;
SYSTEM->OspiPadConfig.OSPI_PullEN = gpio_state.OSPI_PullEN;
__SYSTEM_GPIOA_CLK_ENABLE();
__SYSTEM_GPIOB_CLK_ENABLE();
__SYSTEM_GPIOC_CLK_ENABLE();
__SYSTEM_GPIOD_CLK_ENABLE();
GPIOA->GPIO_OutputEN = gpio_state.GPIOA_OutputEN;
GPIOA->GPIO_OUT_DATA = gpio_state.GPIOA_OUT_DATA;
GPIOA->EXTI_EN = gpio_state.GPIOA_EXTI_EN;
GPIOA->EXTI_INT_EN = gpio_state.GPIOA_EXTI_INT_EN;
GPIOA->EXTI_TYPE = gpio_state.GPIOA_EXTI_TYPE;
GPIOB->GPIO_OutputEN = gpio_state.GPIOB_OutputEN;
GPIOB->GPIO_OUT_DATA = gpio_state.GPIOB_OUT_DATA;
GPIOB->EXTI_EN = gpio_state.GPIOB_EXTI_EN;
GPIOB->EXTI_INT_EN = gpio_state.GPIOB_EXTI_INT_EN;
GPIOB->EXTI_TYPE = gpio_state.GPIOB_EXTI_TYPE;
GPIOC->GPIO_OutputEN = gpio_state.GPIOC_OutputEN;
GPIOC->GPIO_OUT_DATA = gpio_state.GPIOC_OUT_DATA;
GPIOC->EXTI_EN = gpio_state.GPIOC_EXTI_EN;
GPIOC->EXTI_INT_EN = gpio_state.GPIOC_EXTI_INT_EN;
GPIOC->EXTI_TYPE = gpio_state.GPIOC_EXTI_TYPE;
GPIOD->GPIO_OutputEN = gpio_state.GPIOD_OutputEN;
GPIOD->GPIO_OUT_DATA = gpio_state.GPIOD_OUT_DATA;
GPIOD->EXTI_EN = gpio_state.GPIOD_EXTI_EN;
GPIOD->EXTI_INT_EN = gpio_state.GPIOD_EXTI_INT_EN;
GPIOD->EXTI_TYPE = gpio_state.GPIOD_EXTI_TYPE;
}
__RAM_CODE void hw_clock_init(void)
{
System_ClkConfig_t sys_clk_cfg;
sys_clk_cfg.AUPLL_CFG.PLL_N = 8;
sys_clk_cfg.AUPLL_CFG.PLL_M = 0;
sys_clk_cfg.AUPLL_CFG.PowerEn = 1;
sys_clk_cfg.SPLL_CFG.PLL_N = 8;
sys_clk_cfg.SPLL_CFG.PLL_M = 0;
sys_clk_cfg.SPLL_CFG.PowerEn = 1;
sys_clk_cfg.MCU_Clock_Source = MCU_CLK_SEL_SPLL_CLK;
sys_clk_cfg.SOC_DIV = 1;
sys_clk_cfg.MCU_DIV = 1;
sys_clk_cfg.APB0_DIV = 1;
sys_clk_cfg.APB1_DIV = 1;
sys_clk_cfg.APB2_DIV = 1;
sys_clk_cfg.APB3_DIV = 1;
System_AUPLL_config(&sys_clk_cfg.AUPLL_CFG, 1000);
System_SPLL_config(&sys_clk_cfg.SPLL_CFG, 1000);
System_MCU_clock_Config(&sys_clk_cfg);
__SYSTEM_SPI_MASTER0_X8_CLK_SELECT_AUPLL();
__SYSTEM_SPI_MASTER1_X8_CLK_SELECT_AUPLL();
__SYSTEM_I2C_CLK_SELECT_SPLL();
__SYSTEM_BLEND_CLK_SELECT_SPLL();
__SYSTEM_UART_CLK_SELECT_SPLL();
}

View File

@ -1,28 +0,0 @@
#ifndef __APP_HW_H__
#define __APP_HW_H__
#include "fr30xx.h"
extern UART_HandleTypeDef uart_log_handle;
extern DMA_HandleTypeDef dma_display_handle;
extern SPI_HandleTypeDef spi_display_handle;
extern I2C_HandleTypeDef i2c_touchpad_handle;
extern SPI_HandleTypeDef spi_flash_handle;
extern DMA_HandleTypeDef dma_flash_handle;
void hw_log_init(bool wake_up);
void hw_display_init(bool wake_up);
void hw_touchpad_init(bool wake_up);
void hw_psram_init(bool wake_up);
void hw_external_flash_init(bool wake_up);
void hw_xip_flash_init(bool wake_up);
void hw_dsp_xip_flash_init(bool wake_up);
void hw_clock_init(void);
void hw_gpio_save(void);
void hw_gpio_restore(void);
void hw_dsp_restore(void);
#endif // __APP_HW_H__

View File

@ -1,38 +0,0 @@
#include <stdio.h>
#include "co_log.h"
#include <stdarg.h>
#include "FreeRTOS.h"
#include "semphr.h"
static SemaphoreHandle_t printMutex;
void init_printf_mutex(void)
{
printMutex = xSemaphoreCreateMutex();
if (printMutex == NULL) {
}
}
//线程安全打印接口
void thread_safe_printf(const char *format, ...)
{
va_list args;
va_start(args, format);
if(xPortIsInsideInterrupt()) {
if (xSemaphoreTakeFromISR(printMutex, NULL)) {
vprintf(format, args);
xSemaphoreGiveFromISR(printMutex, NULL);
}
}else
{
if (xSemaphoreTake(printMutex, portMAX_DELAY)) {
vprintf(format, args);
xSemaphoreGive(printMutex);
}
}
va_end(args);
}

View File

@ -1,12 +0,0 @@
#ifndef _APP_LOG_H
#define _APP_LOG_H
void init_printf_mutex(void);
void thread_safe_printf(const char *format, ...) ;
#define app_printf thread_safe_printf
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,67 +0,0 @@
#ifndef _APP_LVGL_H
#define _APP_LVGL_H
#include "stdint.h"
#include "stdbool.h"
/* Maximal horizontal and vertical resolution to support by the library.*/
#define LV_HOR_RES_MAX (480)
#define LV_VER_RES_MAX (480)
//#define DISPLAY_TYPE_GC9C01
//#define DISPLAY_TYPE_JD9854
//#define DISPLAY_TYPE_SH8601A
//#define DISPLAY_TYPE_ICNA3310
//#define DISPLAY_TYPE_SH8601Z
//#define DISPLAY_TYPE_NV3047_RGB //272x480 rgb
#define DISPLAY_TYPE_ST7701_RGB //480x480 rgb
//#define DISPLAY_TYPE_NV3041A //272x480 8080
typedef struct
{
uint16_t msg_type;
uint16_t param_len;
uint8_t param[32 - 4];
}gui_task_msg_t;
typedef enum
{
BUTTON_KEY_EVT = 0,
ENCODE_KEY_EVT,
BUTTON_KEY1_EVT,
BUTTON_KEY2_EVT,
MESSAGE_IN_EVT,
PHONE_CALL_IN_EVT,
PHONE_CALL_OK_EVT,
PHONE_CALL_REJECT_EVT,
MUSIC_CONTROL_EVT,
POWER_CHARGE_IN_EVT,
POWER_CHARGE_OUT_EVT,
SCREENSAVER_IN_EVT,
}user_msg_type_t;
typedef void (*ipc_tx_callback)(uint8_t chn);
void app_lvgl_init(void);
void lv_disp_draw_buf_sw(bool sw);
int gui_task_msg_send(uint16_t msg_type,
void *header,
uint16_t header_length,
uint8_t *payload,
uint16_t payload_length,
ipc_tx_callback callback);
void gui_task_queue_callback(gui_task_msg_t * event);
bool gui_task_suspend_state(void);
void gui_task_suspend(void);
bool gui_task_resume(void);
void * gui_task_handle_is_active(void);
#endif // _APP_LVGL_H

View File

@ -1,143 +0,0 @@
#include "fr30xx.h"
/* FreeRTOS kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "rpmsg.h"
#include "rpmsg_lite.h"
#include "rpmsg_queue.h"
#include "rpmsg_ns.h"
#include "dsp.h"
#include "app_config.h"
#include "app_task.h"
#include "app_rpmsg.h"
/* Remote rpmsg instance */
static struct rpmsg_lite_instance *remote_rpmsg;
static TaskHandle_t rpmsg_task_handle;
static void rpmsg_recv(struct rpmsg_lite_instance *rpmsg, struct rpmsg_msg_t *msg)
{
// printf("rpmsg_recv: msg_type = %d.\r\n", msg->msg_type);
switch (msg->msg_type) {
case RPMSG_MSG_TYPE_SYNC_INVOKE:
if (msg->p.sync_func.func_id == RPMSG_SYNC_FUNC_SUM) {
uint32_t address = (uint32_t)msg->p.sync_func.param;
struct rpmsg_sync_msg_sum_t *param = msg->p.sync_func.param;
if (address >= DSP_DRAM_BASE_ADDR) {
address = DSP_DRAM_2_MCU_SRAM(address);
}
param = (void *)address;
rpmsg_send_sync_ret(rpmsg, 0, param->x + param->y);
}
else {
rpmsg_send_sync_ret(rpmsg, 0xffffffff, 0);
}
break;
case RPMSG_MSG_TYPE_ASYNC_MSG:
break;
default:
break;
}
}
static void rpmsg_task(void *arg)
{
struct app_task_event *event;
struct rpmsg_msg_t *msg;
uint32_t msg_len;
uint32_t src_addr;
uint32_t length;
dsp_prepare();
#if DSP_CODE_LOAD_MODE == DSP_CODE_LOAD_MODE_SDCARD
if (dsp_load_code_from_fs("4:\\dsp\\demos.bin") == false) {
#elif DSP_CODE_LOAD_MODE == DSP_CODE_LOAD_MODE_XIP_RO
#if DSP_ROM_CODE_XIP == 1
extern uint8_t DSP_CODE_FLASH_BASE, DSP_CODE_FLASH_END;
src_addr = (uint32_t)&DSP_CODE_FLASH_BASE;
length = (uint32_t)&DSP_CODE_FLASH_END - (uint32_t)&DSP_CODE_FLASH_BASE;
#else
extern uint8_t DSP_CODE_ROM_BASE, DSP_CODE_ROM_END;
src_addr = (uint32_t)&DSP_CODE_ROM_BASE;
length = (uint32_t)&DSP_CODE_ROM_END - (uint32_t)&DSP_CODE_ROM_BASE;
#endif
if (dsp_load_code_from_internal_flash(src_addr, length) == false) {
#elif DSP_CODE_LOAD_MODE == DSP_CODE_LOAD_MODE_FIX_ADDRESS
src_addr = (uint32_t)((DSP_CODE_FIX_ADDRESS + 0x10) | FLASH_DAC_BASE);
length = *(volatile uint32_t *)((DSP_CODE_FIX_ADDRESS + 0x08) | FLASH_DAC_BASE);
if (dsp_load_code_from_internal_flash(src_addr, length) == false) {
#else
#error "choose correct DSP code load mode"
{
#endif
printf("DSP image load failed.\r\n");
while(1);
}
printf("DSP is released.\r\n");
#if DSP_ROM_CODE_XIP == 0
__SYSTEM_LIBRARY_ROM_CLK_ENABLE();
#endif
remote_rpmsg = rpmsg_remote_init(rpmsg_recv);
dsp_run(0x78400660);
system_prevent_sleep_set(SYSTEM_PREVENT_SLEEP_TYPE_DSP);
rpmsg_wait_master_ready(remote_rpmsg);
system_prevent_sleep_clear(SYSTEM_PREVENT_SLEEP_TYPE_DSP);
printf("DSP is ready.\r\n");
/* notice APP that rpmsg is ready. */
event = app_task_event_alloc(APP_TASK_EVENT_RPMSG_INITED, 0, true);
app_task_event_post(event, false);
while (1) {
src_addr = rpmsg_recv_msg(remote_rpmsg, &msg, &msg_len);
rpmsg_recv(remote_rpmsg, msg);
rpmsg_lite_release_rx_buffer(remote_rpmsg, msg);
}
}
void app_rpmsg_init(void)
{
/* create rpmsg task. */
xTaskCreate(rpmsg_task, "RPMSG_TASK", RPMSG_TASK_STACK_SIZE, NULL, RPMSG_TASK_PRIORITY, &rpmsg_task_handle);
}
void app_rpmsg_recover(void)
{
dsp_prepare();
uint32_t src_addr;
uint32_t length;
#if DSP_CODE_LOAD_MODE == DSP_CODE_LOAD_MODE_XIP_RO
#if DSP_ROM_CODE_XIP == 1
extern uint8_t DSP_CODE_FLASH_BASE, DSP_CODE_FLASH_END;
src_addr = (uint32_t)&DSP_CODE_FLASH_BASE;
length = (uint32_t)&DSP_CODE_FLASH_END - (uint32_t)&DSP_CODE_FLASH_BASE;
#else
extern uint8_t DSP_CODE_ROM_BASE, DSP_CODE_ROM_END;
src_addr = (uint32_t)&DSP_CODE_ROM_BASE;
length = (uint32_t)&DSP_CODE_ROM_END - (uint32_t)&DSP_CODE_ROM_BASE;
#endif
dsp_load_rw_from_internal_flash(src_addr, length);
#elif DSP_CODE_LOAD_MODE == DSP_CODE_LOAD_MODE_FIX_ADDRESS
src_addr = (uint32_t)((DSP_CODE_FIX_ADDRESS + 0x10) | FLASH_DAC_BASE);
length = *(volatile uint32_t *)((DSP_CODE_FIX_ADDRESS + 0x08) | FLASH_DAC_BASE);
dsp_load_rw_from_internal_flash(src_addr, length);
#else
#error "choose correct DSP code load mode"
#endif
#if DSP_ROM_CODE_XIP == 0
__SYSTEM_LIBRARY_ROM_CLK_ENABLE();
#endif
dsp_run(0x78400660);
rpmsg_remote_recover();
}

View File

@ -1,7 +0,0 @@
#ifndef _APP_RPMSG_H
#define _APP_RPMSG_H
void app_rpmsg_init(void);
void app_rpmsg_recover(void);
#endif // _APP_RPMSG_H

View File

@ -1,178 +0,0 @@
#include "FreeRTOS.h"
#include "task.h"
#include "app_config.h"
#include "app_at.h"
#include "app_task.h"
#include "app_bt.h"
#include "app_ble.h"
#include "app_btdm.h"
#include "app_lvgl.h"
#include "app_rpmsg.h"
#include "fr_device_charge.h"
#include "fr_device_pmu_io.h"
#include "fr_device_button.h"
#include "fr_device_pa.h"
#include "fr_device_encode.h"
#include "fr_device_vbat.h"
static struct co_list event_list;
static TaskHandle_t app_task_handle;
void hci_controller_read(void);
void hci_host_read(void);
static void app_task_event_handler(void)
{
struct app_task_event *event = NULL;
vTaskSuspendAll();
event = (struct app_task_event *)co_list_pop_front(&event_list);
xTaskResumeAll();
//printf("%s %x\r\n",__func__, (uint32_t)&event);
if(event) {
switch(event->event_type) {
case APP_TASK_EVENT_AT_CMD:
app_at_cmd_recv_handler(event->param, event->param_len);
break;
case APP_TASK_EVENT_RPMSG_INITED:
#if BTDM_STACK_ENABLE == 1
app_btdm_init();
break;
#endif
case APP_TASK_EVENT_HOST_INITED:
app_lvgl_init();
// break;
#if BTDM_STACK_ENABLE == 1
case APP_TASK_EVENT_LVGL_INITED:
app_btdm_start();
#endif
break;
case APP_TASK_EVENT_BTN_TOGGLE:
{
button_toggle_handler(*(uint32_t *)event->param);
}
break;
case APP_TASK_EVENT_BTN_OUTPUT:
{
button_event_handler(event->param);
}
break;
case APP_TASK_EVENT_ENCODE_TOGGLE:
{
encode_event_handle(*(uint32_t *)event->param);
}
break;
case APP_TASK_EVENT_ADC_VBAT_DETECT:
{
adc_vbat_event_handle();
}
break;
case APP_TASK_EVENT_CHARGE_OUTPUT:
{
charge_event_handle(*(uint8_t *)event->param);
}
break;
default:
break;
}
vPortFree((void *)event);
}
}
void app_task_event_post(struct app_task_event *event, bool high)
{
uint32_t old_basepri;
if(xPortIsInsideInterrupt()) {
old_basepri = taskENTER_CRITICAL_FROM_ISR();
if(high) {
co_list_push_front(&event_list, &event->hdr);
}
else {
co_list_push_back(&event_list, &event->hdr);
}
taskEXIT_CRITICAL_FROM_ISR(old_basepri);
vTaskNotifyGiveFromISR(app_task_handle, NULL);
}
else {
taskENTER_CRITICAL();
if(high) {
co_list_push_front(&event_list, &event->hdr);
}
else {
co_list_push_back(&event_list, &event->hdr);
}
taskEXIT_CRITICAL();
xTaskNotifyGive(app_task_handle);
}
}
struct app_task_event *app_task_event_alloc(uint8_t event_type, uint32_t param_len, bool block)
{
struct app_task_event *event = NULL;
while(event == NULL) {
event = pvPortMalloc(sizeof(struct app_task_event) + param_len);
if (event == NULL) {
if (block) {
vTaskDelay(10);
}
else {
return NULL;
}
}
}
event->event_type = event_type;
event->param_len = param_len;
return event;
}
static void app_task(void *arg)
{
struct app_task_event *event;
printf("app_task\r\n");
#if ENABLE_DSP == 1
app_rpmsg_init();
#else
event = app_task_event_alloc(APP_TASK_EVENT_RPMSG_INITED, 0, true);
app_task_event_post(event, false);
#endif
device_pa_init();
device_charge_init();
#if BOARD_SEL == BOARD_EVB_FR5090
button_init(BUTTON_PIN_NUM|SOS_KEY_PIN_NUM|KEY1_PIN_NUM);
#elif BOARD_SEL == BOARD_EVB_FR3092E
button_init(BUTTON_PIN_NUM|SOS_KEY_PIN_NUM);
#elif BOARD_SEL == BOARD_EVB_FR3092E_CM
button_init(BUTTON_PIN_NUM|SOS_KEY_PIN_NUM|KEY1_PIN_NUM);
#elif BOARD_SEL == BOARD_EVB_FR3092E_RGB
// button_init(BUTTON_PIN_NUM|SOS_KEY_PIN_NUM);
#else
#error "choose correct board"
#endif
device_pmu_io_init();
while(1) {
ulTaskNotifyTake(pdFALSE, portMAX_DELAY);
app_task_event_handler();
}
}
void app_task_init(void)
{
xTaskCreate(app_task, "app", APP_TASK_STACK_SIZE, NULL, APP_TASK_PRIORITY, &app_task_handle);
}

View File

@ -1,34 +0,0 @@
#ifndef _APP_TASK_H
#define _APP_TASK_H
#include <stdint.h>
#include <stdbool.h>
#include "co_list.h"
#define APP_TASK_EVENT_AT_CMD 0x00
#define APP_TASK_EVENT_RPMSG_INITED 0x01
#define APP_TASK_EVENT_HOST_INITED 0x02
#define APP_TASK_EVENT_LVGL_INITED 0x03
#define APP_TASK_EVENT_BTN_OUTPUT 0x04
#define APP_TASK_EVENT_BTN_TOGGLE 0x05
#define APP_TASK_EVENT_ENCODE_TOGGLE 0x06
#define APP_TASK_EVENT_ADC_VBAT_DETECT 0x07
#define APP_TASK_EVENT_CHARGE_OUTPUT 0x08
struct app_task_event {
struct co_list_hdr hdr;
uint8_t event_type;
uint16_t param_len;
uint8_t param[];
};
void app_task_event_post(struct app_task_event *event, bool high);
struct app_task_event *app_task_event_alloc(uint8_t event_type, uint32_t param_len, bool block);
void app_task_init(void);
#endif // _APP_TASK_H

View File

@ -1,451 +0,0 @@
/*-----------------------------------------------------------------------*/
/* Low level disk I/O module SKELETON for FatFs (C)ChaN, 2019 */
/*-----------------------------------------------------------------------*/
/* If a working storage control module is available, it should be */
/* attached to the FatFs via a glue function rather than modifying it. */
/* This is an example of glue functions to attach various exsisting */
/* storage control modules to the FatFs module with a defined API. */
/*-----------------------------------------------------------------------*/
#include <string.h>
#include "fr30xx.h"
#include "ff.h" /* Obtains integer types */
#include "diskio.h" /* Declarations of disk functions */
/* Definitions of physical drive number for each drive */
#define DEV_RAM 0 /* Example: Map Ramdisk to physical drive 0 */
#define DEV_MMC 1 /* Example: Map MMC to physical drive 1 */
#define DEV_SPI_FLASH 2 /* Example: Map SPI Flash to physical drive 2 */
#define DEV_NAND_FLASH 3 /* Example: Map Nand Flash to physical drive 3 */
#define DEV_SD_CARD 4 /* Example: Map SD Card to physical drive 4 */
#define RAM_SECTOR_SIZE 512
#define RAM_SECTOR_COUNT (16*48)
#define RAM_BLOCK_SIZE 4096
#define RAM_DISK_SIZE (RAM_SECTOR_SIZE * RAM_SECTOR_COUNT)
#define SD_CARD_SECTOR_SIZE 512
#define SD_CARD_BLOCK_SIZE 4096
#define SPI_FLASH_SECTOR_SIZE 512
#define SPI_FLASH_BLOCK_SIZE 4096
#define SPI_FLASH_SECTOR_COUNT (2*1024*4)
__ALIGNED(4) static uint8_t ram_disk_space[RAM_DISK_SIZE];
static uint8_t spi_flash_poll[4096];
extern SD_HandleTypeDef sdio_handle;
static DSTATUS RAM_disk_status(void)
{
return RES_OK;
}
static DSTATUS MMC_disk_status(void)
{
return RES_OK;
}
static DSTATUS SPI_flash_status(void)
{
return RES_OK;
}
static DSTATUS SD_Card_status(void)
{
return RES_OK;
}
static DSTATUS RAM_disk_initialize(void)
{
// memset(ram_disk_space, 0, RAM_DISK_SIZE);
return RES_OK;
}
static DSTATUS MMC_disk_initialize(void)
{
return RES_ERROR;
}
static DSTATUS SPI_flash_initialize(void)
{
return RES_OK;
}
static DSTATUS SD_Card_initialize(void)
{
// uint32_t EER;
//
// EER = SDCard_Init(&SDIO);
// if (EER != INT_NO_ERR) {
// return RES_ERROR;
// }
// EER = SDCard_BusWidth_Select(&SDIO, SDIO_BUS_WIDTH_4BIT);
// if (EER != INT_NO_ERR) {
// return RES_ERROR;
// }
return RES_OK;
}
static DSTATUS RAM_disk_read(BYTE *buff, LBA_t sector, UINT count)
{
return RES_ERROR;
}
static DSTATUS SPI_flash_read(BYTE *buff, LBA_t sector, UINT count)
{
return RES_ERROR;
}
static DSTATUS MMC_disk_read(BYTE *buff, LBA_t sector, UINT count)
{
return RES_ERROR;
}
static DSTATUS SD_Card_read(BYTE *buff, LBA_t sector, UINT count)
{
SDCard_ReadBolcks(&sdio_handle, (uint32_t *)buff, sector, count);
return RES_OK;
}
static DSTATUS RAM_disk_write(const BYTE *buff, LBA_t sector, UINT count)
{
return RES_ERROR;
}
static DSTATUS MMC_disk_write(const BYTE *buff, LBA_t sector, UINT count)
{
return RES_ERROR;
}
static DSTATUS SPI_flash_write(const BYTE *buff, LBA_t sector, UINT count)
{
return RES_ERROR;
}
static DSTATUS SD_Card_write(const BYTE *buff, LBA_t sector, UINT count)
{
SDCard_WriteBolcks(&sdio_handle, (uint32_t *)buff, sector, count);
return RES_OK;
}
/*-----------------------------------------------------------------------*/
/* Get Drive Status */
/*-----------------------------------------------------------------------*/
DSTATUS disk_status (
BYTE pdrv /* Physical drive nmuber to identify the drive */
)
{
DSTATUS stat;
switch (pdrv) {
case DEV_RAM :
stat = RAM_disk_status();
// translate the reslut code here
return stat;
case DEV_MMC :
stat = MMC_disk_status();
// translate the reslut code here
return stat;
case DEV_SPI_FLASH :
stat = SPI_flash_status();
// translate the reslut code here
return stat;
case DEV_SD_CARD :
stat = SD_Card_status();
// translate the reslut code here
return stat;
}
return STA_NOINIT;
}
/*-----------------------------------------------------------------------*/
/* Inidialize a Drive */
/*-----------------------------------------------------------------------*/
DSTATUS disk_initialize (
BYTE pdrv /* Physical drive nmuber to identify the drive */
)
{
DSTATUS stat;
switch (pdrv) {
case DEV_RAM :
stat = RAM_disk_initialize();
// translate the reslut code here
return stat;
case DEV_MMC :
stat = MMC_disk_initialize();
// translate the reslut code here
return stat;
case DEV_SPI_FLASH :
stat = SPI_flash_initialize();
// translate the reslut code here
return stat;
case DEV_SD_CARD :
stat = SD_Card_initialize();
// translate the reslut code here
return stat;
}
return STA_NOINIT;
}
/*-----------------------------------------------------------------------*/
/* Read Sector(s) */
/*-----------------------------------------------------------------------*/
DRESULT disk_read (
BYTE pdrv, /* Physical drive nmuber to identify the drive */
BYTE *buff, /* Data buffer to store read data */
LBA_t sector, /* Start sector in LBA */
UINT count /* Number of sectors to read */
)
{
DRESULT res;
switch (pdrv) {
case DEV_RAM :
// translate the arguments here
res = RAM_disk_read(buff, sector, count);
// translate the reslut code here
return res;
case DEV_MMC :
// translate the arguments here
res = MMC_disk_read(buff, sector, count);
// translate the reslut code here
return res;
case DEV_SPI_FLASH :
// translate the arguments here
res = SPI_flash_read(buff, sector, count);
// translate the reslut code here
return res;
case DEV_SD_CARD :
// translate the arguments here
res = SD_Card_read(buff, sector, count);
// translate the reslut code here
return res;
}
return RES_PARERR;
}
/*-----------------------------------------------------------------------*/
/* Write Sector(s) */
/*-----------------------------------------------------------------------*/
#if FF_FS_READONLY == 0
DRESULT disk_write (
BYTE pdrv, /* Physical drive nmuber to identify the drive */
const BYTE *buff, /* Data to be written */
LBA_t sector, /* Start sector in LBA */
UINT count /* Number of sectors to write */
)
{
DRESULT res;
switch (pdrv) {
case DEV_RAM :
// translate the arguments here
res = RAM_disk_write(buff, sector, count);
// translate the reslut code here
return res;
case DEV_MMC :
// translate the arguments here
res = MMC_disk_write(buff, sector, count);
// translate the reslut code here
return res;
case DEV_SPI_FLASH :
// translate the arguments here
res = SPI_flash_write(buff, sector, count);
// translate the reslut code here
return res;
case DEV_SD_CARD :
// translate the arguments here
res = SD_Card_write(buff, sector, count);
// translate the reslut code here
return res;
}
return RES_PARERR;
}
#endif
/*-----------------------------------------------------------------------*/
/* Miscellaneous Functions */
/*-----------------------------------------------------------------------*/
DRESULT disk_ioctl (
BYTE pdrv, /* Physical drive nmuber (0..) */
BYTE cmd, /* Control code */
void *buff /* Buffer to send/receive control data */
)
{
DRESULT res = RES_PARERR;
switch (pdrv) {
case DEV_RAM :
// Process of the command for the RAM drive
switch(cmd)
{
case CTRL_SYNC:
res = RES_OK;
break;
case GET_SECTOR_SIZE:
*(WORD*)buff = RAM_SECTOR_SIZE;
res = RES_OK;
break;
case GET_BLOCK_SIZE:
*(WORD*)buff = RAM_BLOCK_SIZE;
res = RES_OK;
break;
case GET_SECTOR_COUNT:
*(DWORD*)buff = RAM_SECTOR_COUNT;
res = RES_OK;
break;
case CTRL_TRIM:
res = RES_OK;
break;
default:
res = RES_PARERR;
break;
}
return res;
case DEV_MMC :
// Process of the command for the MMC/SD card
return res;
case DEV_SPI_FLASH :
// Process of the command for the MMC/SD card
switch(cmd)
{
case CTRL_SYNC:
res = RES_OK;
break;
case GET_SECTOR_SIZE:
*(WORD*)buff = SPI_FLASH_SECTOR_SIZE;
res = RES_OK;
break;
case GET_BLOCK_SIZE:
*(WORD*)buff = SPI_FLASH_BLOCK_SIZE;
res = RES_OK;
break;
case GET_SECTOR_COUNT:
*(DWORD*)buff = SPI_FLASH_SECTOR_COUNT;
res = RES_OK;
break;
case CTRL_TRIM:
res = RES_OK;
break;
default:
res = RES_PARERR;
break;
}
return res;
case DEV_SD_CARD :
// Process of the command for the RAM drive
switch(cmd)
{
case CTRL_SYNC:
res = RES_OK;
break;
case GET_SECTOR_SIZE:
*(WORD*)buff = SD_CARD_SECTOR_SIZE;
res = RES_OK;
break;
case GET_BLOCK_SIZE:
*(WORD*)buff = SD_CARD_BLOCK_SIZE;
res = RES_OK;
break;
case GET_SECTOR_COUNT:
*(DWORD*)buff = SDCard_Get_Block_count(&sdio_handle);
res = RES_OK;
break;
case CTRL_TRIM:
res = RES_OK;
break;
default:
res = RES_PARERR;
break;
}
return res;
}
return RES_PARERR;
}

View File

@ -1,28 +0,0 @@
#include <string.h>
#include <stdint.h>
#include <stdbool.h>
#include "heap.h"
#include "dram_mem.h"
#define configTOTAL_DRAM_HEAP_SIZE ( ( 12 * 1024 ) )
static bool is_mem_poll_inited = false;
__attribute__((section("dram_section"))) static uint32_t ucHeap[ (configTOTAL_DRAM_HEAP_SIZE >> 2) + 0x10];
void * dram_malloc( uint32_t xWantedSize )
{
if (is_mem_poll_inited == false) {
is_mem_poll_inited = true;
heap_mem_init(HEAP_TYPE_DRAM_BLOCK, (void *)ucHeap, configTOTAL_DRAM_HEAP_SIZE);
}
return heap_mem_alloc(HEAP_TYPE_DRAM_BLOCK, xWantedSize);
}
void dram_free( void * pv )
{
heap_mem_free(pv);
}

View File

@ -1,9 +0,0 @@
#ifndef __BTDM_MEM_H__
#define __BTDM_MEM_H__
#include <stdint.h>
void * dram_malloc( uint32_t xWantedSize );
void dram_free( void * pv );
#endif // __BTDM_MEM_H__

View File

@ -1,191 +0,0 @@
/*
* This file is part of the EasyLogger Library.
*
* Copyright (c) 2015, Armink, <armink.ztl@gmail.com>
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* 'Software'), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Function: Portable interface for each platform.
* Created on: 2015-04-28
*/
#include <elog.h>
#include "fr30xx.h"
extern UART_HandleTypeDef uart_log_handle;
#ifdef ELOG_ASYNC_OUTPUT_ENABLE
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
static SemaphoreHandle_t xSemaphore_lock;
static SemaphoreHandle_t xSemaphore_notice;
#else
static uint32_t prim;
#endif
/**
* EasyLogger port initialize
*
* @return result
*/
ElogErrCode elog_port_init(void) {
ElogErrCode result = ELOG_NO_ERR;
/* add your code here */
#ifdef ELOG_ASYNC_OUTPUT_ENABLE
xSemaphore_lock = xSemaphoreCreateBinary();
xSemaphore_notice = xSemaphoreCreateBinary();
xSemaphoreGive(xSemaphore_lock);
xSemaphoreGive(xSemaphore_notice);
#endif
return result;
}
/**
* output log port interface
*
* @param log output of log
* @param size log size
*/
void elog_port_output(const char *log, size_t size) {
/* add your code here */
uart_transmit(&uart_log_handle, (uint8_t *)log, size);
}
/**
* output lock
*/
void elog_port_output_lock(void) {
/* add your code here */
#ifdef ELOG_ASYNC_OUTPUT_ENABLE
xSemaphoreTake(xSemaphore_lock, portMAX_DELAY);
#else
prim = __get_PRIMASK();
__disable_irq();
#endif
}
/**
* output unlock
*/
void elog_port_output_unlock(void) {
/* add your code here */
#ifdef ELOG_ASYNC_OUTPUT_ENABLE
xSemaphoreGive(xSemaphore_lock);
#else
if(!prim)
{
__enable_irq();
}
#endif
}
/**
* get current time interface
*
* @return current time
*/
const char *elog_port_get_time(void) {
/* add your code here */
return "2023/2/2";
}
/**
* get current process name interface
*
* @return current process name
*/
const char *elog_port_get_p_info(void) {
/* add your code here */
return "";
}
/**
* get current thread name interface
*
* @return current thread name
*/
const char *elog_port_get_t_info(void) {
/* add your code here */
#ifdef ELOG_ASYNC_OUTPUT_ENABLE
return "";
#else
return "";
#endif
}
#ifdef ELOG_ASYNC_OUTPUT_ENABLE
void elog_async_output_notice(void)
{
xSemaphoreGive(xSemaphore_notice);
}
void async_output_task(void *arg)
{
size_t get_log_size = 0;
static char poll_get_buf[ELOG_LINE_BUF_SIZE - 4];
while(true)
{
/* waiting log */
xSemaphoreTake(xSemaphore_notice, portMAX_DELAY);
/* polling gets and outputs the log */
while(true)
{
#ifdef ELOG_ASYNC_LINE_OUTPUT
get_log_size = elog_async_get_line_log(poll_get_buf, sizeof(poll_get_buf));
#else
get_log_size = elog_async_get_log(poll_get_buf, sizeof(poll_get_buf));
#endif
if (get_log_size)
{
elog_port_output_lock();
elog_port_output(poll_get_buf, get_log_size);
elog_port_output_unlock();
}
else
{
break;
}
}
}
}
#endif

View File

@ -1,101 +0,0 @@
#include "user_bt_a2dp.h"
#include "lvgl.h"
#include "FreeRTOS.h"
#include "app_lvgl.h"
#include "app_bt.h"
#include "user_bt.h"
#define BT_MUSIC_LOG printf
user_bt_media_t bt_media;
void user_bt_music_control(bt_enum_music_t control)
{
BtStatus status;
switch(control)
{
case BT_ENUM_MUSIC_PLAY:
status = AVRCP_SetPanelKey(user_bt_env.dev[user_bt_env.last_active_index].rcp_chan, AVRCP_POP_PLAY, TRUE);
break;
case BT_ENUM_MUSIC_PAUSE:
status = AVRCP_SetPanelKey(user_bt_env.dev[user_bt_env.last_active_index].rcp_chan, AVRCP_POP_PAUSE, TRUE);
break;
case BT_ENUM_MUSIC_PREVIOUS:
status = AVRCP_SetPanelKey(user_bt_env.dev[user_bt_env.last_active_index].rcp_chan, AVRCP_POP_FORWARD, TRUE);
break;
case BT_ENUM_MUSIC_NEXT:
status = AVRCP_SetPanelKey(user_bt_env.dev[user_bt_env.last_active_index].rcp_chan, AVRCP_POP_BACKWARD, TRUE);
break;
default:
break;
}
BT_MUSIC_LOG("%s %d\r\n",__func__, status);
}
void user_bt_sync_music_volume(uint8_t vol)
{
uint8_t buf[3];
printf("%s %d %d\r\n", __func__, vol,__LINE__);
buf[0] = 'E';
buf[1] = 'E';
buf[2] = vol * 127/ 100;
printf("%s %d %d\r\n", __func__, __LINE__,buf[2]);
app_at_cmd_recv_handler(buf,NULL);
}
void user_bt_set_music_playstatus(bool status)
{
bt_media.play_status = status;
}
bool user_bt_get_music_playstatus(void)
{
return bt_media.play_status;
}
uint8_t user_bt_get_music_vol(void)
{
return bt_media.vol;
}
void user_bt_set_music_vol(uint8_t vol)
{
bt_media.vol = vol;
}
uint8_t *user_bt_get_music_songname(void)
{
return &bt_media.song[0];
}
void user_bt_song_lyric_notify(void)
{
gui_task_msg_send(MUSIC_CONTROL_EVT,NULL,0,NULL,0,NULL);
}
void user_bt_get_media_info(void)
{
BtStatus status;
status = bt_get_media_info(user_bt_env.last_active_index,0x41);
BT_MUSIC_LOG("%s %d\r\n",__func__, status);
}

View File

@ -1,47 +0,0 @@
#ifndef __USER_BT_A2DP_H
#define __USER_BT_A2DP_H
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#include "app_at.h"
typedef enum{
BT_ENUM_MUSIC_PLAY,
BT_ENUM_MUSIC_PAUSE,
BT_ENUM_MUSIC_PREVIOUS,
BT_ENUM_MUSIC_NEXT,
//BT_ENUM_MUSIC_VOLUME_INC,
//BT_ENUM_MUSIC_VOLUME_DEC,
}bt_enum_music_t;
typedef struct
{
bool play_status;
uint8_t vol;
uint16_t playlen;
uint16_t playpos;
uint8_t song[100];
}user_bt_media_t;
extern user_bt_media_t bt_media;
extern void user_bt_music_control(uint8_t control);
extern void user_bt_sync_music_volume(uint8_t vol);
extern void user_bt_set_music_playstatus(bool status);
extern bool user_bt_get_music_playstatus(void);
extern uint8_t user_bt_get_music_vol(void);
extern void user_bt_set_music_vol(uint8_t vol);
extern uint8_t *user_bt_get_music_songname(void);
extern void user_bt_song_lyric_notify(void);
extern void user_bt_get_media_info(void);
#endif /* __USER_BT_A2DP_H */

View File

@ -1,197 +0,0 @@
#include "user_bt_call.h"
#include "FreeRTOS.h"
#include "user_bt_common.h"
#include "app_lvgl.h"
#include "task.h"
#include "timers.h"
#include "app_bt.h"
#include "user_bt.h"
#define BT_CALL_LOG printf
#define BT_LOG_ENABLE 1
#if BT_LOG_ENABLE
#define BT_LOG printf
#else
#define BT_LOG
#endif
call_info_t bt_call;
//bool call_flag = 0;
uint8_t call_incoming = 0; //呼入呼出状态
bool call_complete = 0; //接通状态
xTimerHandle user_bt_call_timer;
//0呼出1接通2静音3通话结束
//4拨出失败5来电显示
uint8_t call_mode;
void user_set_call_mode(uint8_t mode)
{
call_mode = mode;
}
uint8_t user_get_call_mode(void)
{
return call_mode;
}
void bt_hf_call_outgoing(uint8_t *number, uint8_t len)
{
BtStatus status;
status = bt_dial_number(user_bt_env.last_active_index,&number[1],number[0]);
BT_CALL_LOG("%s %d \r\n", __func__,status);
}
void bt_hf_call_hangup(void)
{
BtStatus status;
status = bt_hang_up(user_bt_env.last_active_index);
BT_CALL_LOG("%s %d \r\n", __func__,status);
}
void bt_hf_call_answer(void)
{
BtStatus status;
status = bt_answer_call(user_bt_env.last_active_index);
BT_CALL_LOG("%s %d \r\n", __func__,status);
}
void user_bt_hf_mic_mute(bool mute)
{
if(mute)
{
__CODEC_SET_ADC_VOLUME(0);
}else {
__CODEC_SET_ADC_VOLUME(0x8000);
}
}
void user_bt_hfcall_handle(uint8_t hf_call)
{
if(hf_call == 0) //挂断
{
if(call_complete)
{
call_complete = 0;
gui_task_msg_send(PHONE_CALL_REJECT_EVT,NULL,0,NULL,0,NULL);
}
}
else if(hf_call == 1) //接通
{
user_set_call_mode(HF_ENUM_CALL_CONNECTING);
call_incoming = 0;
call_complete = 1; //接通状态
gui_task_msg_send(PHONE_CALL_OK_EVT,NULL,0,NULL,0,NULL);
}
}
void user_bt_callsetup_handle(uint8_t hf_callsetup)
{
if(hf_callsetup == 0)
{
if(call_incoming == 1 || call_incoming == 2) //
{
call_incoming = 0;
gui_task_msg_send(PHONE_CALL_REJECT_EVT,NULL,0,NULL,0,NULL);
}
}
else if(hf_callsetup == 1) /* incoming call */
{
call_incoming = 1; //来电状态置1
user_set_call_mode(5);
}
else if(hf_callsetup == 2) /* outgoing call */
{
call_incoming = 2; //呼出状态
user_set_call_mode(0);
}
}
void user_bt_set_calling_num(const char *num, uint8_t len)
{
bt_call.number_len = len;
memset(&bt_call.call_namber[0], 0, sizeof(bt_call.call_namber));
memcpy(&bt_call.call_namber[0], num, len);
if(call_incoming)
{
gui_task_msg_send(PHONE_CALL_IN_EVT,NULL,0,NULL,0,NULL);
}
}
void user_bt_get_calling_info(call_info_t * call)
{
#if 1
call->number_len = bt_call.number_len;
memset(call->call_namber,0,32);
memcpy(call->call_namber,bt_call.call_namber,call->number_len);
//call->name_len = call_context[call->number_len] + 1;
//memset(call->call_name,0,128);
//memcpy(call->call_name, call_context+call->number_len+1, call->name_len);
#else
if(call_context[0] > 0)
{
call->number_len = call_context[0];
memset(call->call_namber,0,32);
memcpy(call->call_namber,call_context+1,call->number_len);
call->name_len = call_context[call->number_len] + 1;
memset(call->call_name,0,128);
memcpy(call->call_name, call_context+call->number_len+1, call->name_len);
}
#endif
}
static void user_bt_timer_call_handler( TimerHandle_t xTimer)
{
BT_LOG("%s \r\n",__func__);
}
void user_bt_timer_call_init(void)
{
user_bt_call_timer = xTimerCreate("user_bt_call_timer", 100 , pdFALSE, NULL, user_bt_timer_call_handler);
//xTimerStart(user_bt_call_timer,0);
}
void user_bt_hf_set_volume(uint8_t lev)
{
if(lev == 0){
user_bt_set_local_volume(BT_VOL_HFP, 1);
}else{
user_bt_set_local_volume(BT_VOL_HFP, lev);
}
BT_LOG("%s %d \r\n", __func__, lev);
}

View File

@ -1,53 +0,0 @@
#ifndef __USER_BT_CALL_H
#define __USER_BT_CALL_H
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#include "driver_codec.h"
#include "app_at.h"
#include "fr_watch.h"
typedef struct
{
uint8_t num_len;
uint8_t num[15];
}user_bt_call_t;
//0呼出1接通2静音3通话结束
//4拨出失败5来电显示
typedef enum
{
HF_ENUM_OUTGOING = 0,
HF_ENUM_CALL_CONNECTING = 1,
HF_ENUM_INCOMING = 5,
}call_enum_state_t;
//mic mute
enum{
ENUM_MIC_CLOSE,
ENUM_MIC_OPEN,
};
extern void bt_hf_call_outgoing(uint8_t *number, uint8_t len);
extern void bt_hf_call_hangup(void);
extern void bt_hf_call_answer(void);
extern void user_bt_set_calling_num(const char *num, uint8_t len);
extern void user_set_call_mode(uint8_t mode);
extern uint8_t user_get_call_mode(void);
extern void user_bt_get_calling_info(call_info_t * call);
extern void user_bt_callsetup_handle(uint8_t hf_callsetup);
extern void user_bt_hfcall_handle(uint8_t hf_call);
extern void user_bt_hf_mic_mute(bool mute);
extern void user_bt_timer_call_init(void);
extern void user_bt_hf_mic_mute(bool mute);
extern void user_bt_hf_set_volume(uint8_t lev);
#endif /* __USER_BT_CALL_H */

View File

@ -1,222 +0,0 @@
#include "user_bt_common.h"
#include "lvgl.h"
#include "FreeRTOS.h"
#define BT_COMM_ENABLE 1
#if BT_COMM_ENABLE
#define BT_COMM_LOG printf
#else
#define BT_COMM_LOG
#endif
user_bt_vol_t user_bt_volum;
bool system_bt_module = 0; //0:close 1:start
/*
change phone volume to local spk vol
*/
bool user_bt_set_local_volume(enum bt_volume_type_t type,uint16_t vol)
{
uint16_t avrcp_vol,hf_vol;
if((type >= BT_VOL_MAX)||(vol > 0xFFFF)){
return false;
}
if(type == BT_VOL_HFP){
if(user_bt_env.dev[user_bt_env.last_active_index].conFlags&LINK_STATUS_SCO_CONNECTED){
if(vol == 0){
hf_vol = 0;
}
else{
hf_vol = 0 + (USER_BT_HF_VOLUME_MAX*vol)/15;
}
BT_COMM_LOG("%s %d %d \r\n",__func__,vol,hf_vol);
codec_Set_DAC_Volume(hf_vol);
}
}
else if(type == BT_VOL_MEDIA){
if(user_bt_env.dev[user_bt_env.last_active_index].conFlags&LINK_STATUS_MEDIA_PLAYING){
if(vol >= USER_BT_VOLUM_MAX){
avrcp_vol = 127;
}
else{
avrcp_vol = (USER_BT_VOLUM_MAX*vol)/127;
}
BT_COMM_LOG("%s %d %d \r\n",__func__,vol,avrcp_vol);
codec_Set_DAC_Volume(avrcp_vol);
}else{
}
}
else if(type == BT_VOL_TONE){
}
return true;
}
/*
local change volume send to phone
*/
bool user_bt_set_spk_volume(enum bt_volume_type_t type,uint16_t vol)
{
uint16_t avrcp_vol,hf_vol;
if((type >= BT_VOL_MAX)||(vol > 0xFFFF)){
return false;
}
if(type == BT_VOL_HFP){
if(user_bt_env.dev[user_bt_env.last_active_index].conFlags&LINK_STATUS_SCO_CONNECTED){
if(vol == 0){
hf_vol = + (USER_BT_HF_VOLUME_MAX * 1)/15;
vol = 1;
}
else{
hf_vol = 0 + (USER_BT_HF_VOLUME_MAX*vol)/15;
}
BT_COMM_LOG("%s %d %d \r\n",__func__,vol,hf_vol);
bt_report_spk_volume(user_bt_env.last_active_index,vol);
codec_Set_DAC_Volume(hf_vol);
}
}
else if(type == BT_VOL_MEDIA){
if(user_bt_env.dev[user_bt_env.last_active_index].conFlags&LINK_STATUS_MEDIA_PLAYING){
if(vol == 0x3f){
avrcp_vol = USER_BT_VOLUM_MAX;
}
else{
avrcp_vol = (USER_BT_VOLUM_MAX*vol)/127;
}
bt_set_media_volume(user_bt_env.last_active_index, vol);
codec_Set_DAC_Volume(avrcp_vol);
}else{
}
}
else if(type == BT_VOL_TONE){
}
return true;
}
user_bt_vol_t *user_bt_get_volume(void)
{
return (user_bt_vol_t *)&user_bt_volum.vol;
}
uint8_t user_bt_volume_lev_convert(enum bt_volume_type_t type,uint8_t lev)
{
uint8_t vol;
if(type == BT_VOL_MEDIA)
{
vol = (lev * 127 / 100);
}
else if(type == BT_VOL_HFP)
{
vol = (lev * 15 / 100);
}
printf("%s %d \r\n", __func__,vol);
return vol;
}
uint8_t *user_bt_get_local_name(void)
{
extern uint8_t default_name[];
return default_name;
}
uint8_t *user_bt_get_mac(void)
{
extern uint8_t bt_addr[];
return bt_addr;
}
char *user_ble_get_local_name(void)
{
extern char local_device_name[];
return local_device_name;
}
uint8_t *user_ble_get_mac(void)
{
extern uint8_t ble_static_addr[];
return ble_static_addr;
}
/*
bt module enable/disable api
system_bt_module param
0:close
1:start
*/
void user_bt_set_module(bool sat)
{
system_bt_module = sat;
}
bool user_bt_get_module(void)
{
return system_bt_module;
}
void user_bt_disconnect(void)
{
BtStatus status;
status = bt_disconnect(&user_bt_env.dev[0].remote_bd, true); //强制断开bt
BT_COMM_LOG("%s %d %d\r\n", __func__,__LINE__,status);
}
void user_bt_off(void)
{
BtStatus status;
status = bt_disconnect(&user_bt_env.dev[0].remote_bd, true); //强制断开bt
BT_COMM_LOG("%s %d %d\r\n", __func__,__LINE__,status);
status = bt_exit_pairing();
user_bt_set_module(false);
BT_COMM_LOG("%s %d %d\r\n", __func__,__LINE__,status);
}
void user_bt_on(void)
{
BtStatus status;
BtAccessModeInfo access_mode_nc = {
.inqInterval = 0x800,
.inqWindow = 0x12,
.pageInterval = 0x800,
.pageWindow = 0x12,
};
status = bt_enter_pairing(BAM_GENERAL_ACCESSIBLE, &access_mode_nc);
user_bt_env.connect_times = 3;
BT_COMM_LOG("bt reconnect addr %x %x %x %x %x %x \r\n",user_bt_env.last_dev_addr.A[0],
user_bt_env.last_dev_addr.A[1],
user_bt_env.last_dev_addr.A[2],
user_bt_env.last_dev_addr.A[3],
user_bt_env.last_dev_addr.A[4],
user_bt_env.last_dev_addr.A[5]);
status = bt_connect(&user_bt_env.last_dev_addr);
user_bt_set_module(true);
BT_COMM_LOG("status = %d\r\n",status);
}

View File

@ -1,48 +0,0 @@
#ifndef __USER_BT_COMMON_H
#define __USER_BT_COMMON_H
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#include "driver_codec.h"
#include "app_at.h"
#include "user_bt.h"
#define USER_BT_VOLUM_MAX (0x1000)
#define USER_BT_HF_VOLUME_MAX (0x2000)
#define USER_BT_NAME "freq_bt"
typedef struct
{
uint8_t vol;
uint8_t lev;
}user_bt_vol_t;
enum bt_volume_type_t{
BT_VOL_HFP, //设置通话音量
BT_VOL_MEDIA, //设置媒体音量
BT_VOL_TONE, //设置提示音量
BT_VOL_MAX,
};
extern void user_bt_set_volume(uint8_t vol);
extern uint8_t user_bt_volume_lev_convert(enum bt_volume_type_t type,uint8_t lev);
extern uint8_t *user_bt_get_local_name(void);
extern uint8_t *user_bt_get_mac(void);
extern char *user_ble_get_local_name(void);
extern uint8_t *user_ble_get_mac(void);
extern bool user_bt_set_spk_volume(enum bt_volume_type_t type,uint16_t vol);
extern bool user_bt_set_local_volume(enum bt_volume_type_t type,uint16_t vol);
extern void user_bt_disconnect(void);
extern void user_bt_off(void);
extern void user_bt_on(void);
extern void user_bt_set_module(bool sat);
extern bool user_bt_get_module(void);
#endif /* __USER_BT_COMMON_H */

View File

@ -1,36 +0,0 @@
#include "user_bt_voice_recognition.h"
#include "user_bt.h"
#include "app_bt.h"
#define BT_VOICE_LOG printf
bool voice_active = 0;
void user_bt_voice_start_active(bool type)
{
BtStatus status;
if(type)
{
//memcpy(event->param, (void *)"CJ01", sizeof("CJ01"));
status = bt_enable_voice_recognition(user_bt_env.last_active_index, true);
}else {
//memcpy(event->param, (void *)"CJ00", sizeof("CJ01"));
status = bt_enable_voice_recognition(user_bt_env.last_active_index, false);
}
BT_VOICE_LOG("status = %d\r\n",status);
}
bool user_bt_get_voice_active(void)
{
return voice_active;
}
void user_bt_set_voice_active(bool active)
{
voice_active = active;
}

View File

@ -1,22 +0,0 @@
#ifndef __USER_BT_VOICE_RECONGNITION_H
#define __USER_BT_VOICE_RECONGNITION_H
#include <stdint.h>
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#include "driver_codec.h"
#include "app_at.h"
#include "fr_watch.h"
#include "FreeRTOS.h"
#include "app_lvgl.h"
#include "task.h"
#include "timers.h"
#include "app_task.h"
extern bool voice_active;
extern void user_bt_voice_start_active(bool type);
extern bool user_bt_get_voice_active(void);
extern void user_bt_set_voice_active(bool active);
#endif /* __USER_BT_VOICE_RECONGNITION_H */

View File

@ -1,547 +0,0 @@
#include <stdint.h>
#include <stddef.h>
#include "driver_gpio.h"
#include "fr30xx.h"
#include "app_task.h"
#include "fr_device_pmu_io.h"
#include "fr_device_button.h"
#include "app_lvgl.h"
/* FreeRTOS kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"
#define BUTTON_IDX_MAX 1
#define BUTTON_SHORT_DURING 0x08 // x10ms
#define BUTTON_LONG_DURING 0x14 // x100ms
#define BUTTON_LONG_LONG_DURING 0x28 // x100ms
#define BUTTON_MULTI_INTERVAL 0x14 // x10ms
#define BUTTON_LONG_PRESSING_INTERVAL 0x1e // x10ms
uint8_t current_state = BUTTON_WORKING_STATE_IDLE;
uint16_t button_task_id;
xTimerHandle button_anti_shake_timer;
xTimerHandle button_pressing_timer;
xTimerHandle button_state_timer;
/* which io is enabled for button function */
uint32_t button_io_mask = 0;
uint32_t curr_button_before_anti_shake = 0;
uint32_t current_pressed_button = 0;
uint32_t last_saved_button = 0;
uint32_t button_to_be_send = 0; //for multi click
uint8_t pressed_cnt = 0; //for multi click
void button_toggle_detected(uint32_t curr_button)
{
if(button_io_mask != 0) {
curr_button_before_anti_shake = curr_button & button_io_mask;
if(xPortIsInsideInterrupt())
xTimerStartFromISR( button_anti_shake_timer, NULL );
else
xTimerStart(button_anti_shake_timer, 0);
}
}
void button_int_isr(uint32_t changed_button)
{
uint32_t curr_button;
curr_button = current_pressed_button ^ changed_button;
struct app_task_event *event;
event = app_task_event_alloc(APP_TASK_EVENT_BTN_TOGGLE, sizeof(uint32_t), false);
if(event)
{
memcpy(event->param, (void *)&curr_button, sizeof(uint32_t));
event->param_len = sizeof(uint32_t);
app_task_event_post(event, false);
}
}
void button_send_event(uint8_t event, uint32_t button, uint8_t cnt)
{
struct button_msg_t msg;
msg.button_index = button;
msg.button_type = event;
msg.button_cnt = cnt;
struct app_task_event *toggle_event;
toggle_event = app_task_event_alloc(APP_TASK_EVENT_BTN_OUTPUT, sizeof(msg), false);
if(toggle_event)
{
memcpy(toggle_event->param, (void *)&msg, sizeof(msg));
toggle_event->param_len = sizeof(msg);
app_task_event_post(toggle_event, false);
}
pressed_cnt = 0;
}
static void button_idle(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_SINGLE_PRESSED)
{
current_state = BUTTON_WORKING_STATE_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
button_send_event(BUTTON_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_COMB_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
}
}
static void button_just_pressed(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_RELEASED)
{
current_state = BUTTON_WORKING_STATE_IDLE;
xTimerStop(button_state_timer,0);
button_send_event(BUTTON_RELEASED, last_saved_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_COMB_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_TIME_OUT)
{
current_state = BUTTON_WORKING_STATE_PRESSED;
xTimerChangePeriod(button_state_timer, (BUTTON_LONG_DURING*10-BUTTON_SHORT_DURING)*10,0);
xTimerStart(button_state_timer,0);
}
}
static void button_pressed(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_RELEASED)
{
if(0/*__jump_table.button_disable_multi_click*/ & last_saved_button)
{
current_state = BUTTON_WORKING_STATE_IDLE;
button_send_event(BUTTON_SHORT_PRESSED, last_saved_button, 0);
}
else
{
//TBD<42><44><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
current_state = BUTTON_WORKING_STATE_WAIT_MULTI;
button_to_be_send = last_saved_button;
pressed_cnt++;
xTimerChangePeriod(button_state_timer,BUTTON_MULTI_INTERVAL*10,0);
xTimerStart(button_state_timer,0);
}
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_COMB_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_TIME_OUT)
{
current_state = BUTTON_WORKING_STATE_LONG_PRESSED;
xTimerChangePeriod(button_state_timer, ((BUTTON_LONG_LONG_DURING-BUTTON_LONG_DURING)*10)*10,0);
xTimerStart(button_state_timer,0);
xTimerChangePeriod(button_pressing_timer, BUTTON_LONG_PRESSING_INTERVAL*10,0);
xTimerStart(button_pressing_timer,0);
button_send_event(BUTTON_LONG_PRESSED, current_pressed_button, pressed_cnt);
}
}
static void button_wait_multi(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_SINGLE_PRESSED)
{
if(current_pressed_button != button_to_be_send)
{
if(pressed_cnt > 1)
{
button_send_event(BUTTON_MULTI_PRESSED, button_to_be_send, pressed_cnt);
}
else
{
button_send_event(BUTTON_SHORT_PRESSED, button_to_be_send, pressed_cnt);
}
button_send_event(BUTTON_PRESSED, current_pressed_button, pressed_cnt);
}
current_state = BUTTON_WORKING_STATE_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_COMB_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
button_send_event(BUTTON_SHORT_PRESSED, button_to_be_send, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_TIME_OUT)
{
current_state = BUTTON_WORKING_STATE_IDLE;
if(pressed_cnt > 1)
{
button_send_event(BUTTON_MULTI_PRESSED, button_to_be_send, pressed_cnt);
}
else
{
button_send_event(BUTTON_SHORT_PRESSED, button_to_be_send, pressed_cnt);
}
}
}
static void button_long_pressed(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_RELEASED)
{
current_state = BUTTON_WORKING_STATE_IDLE;
xTimerStop(button_state_timer,0);
xTimerStop(button_pressing_timer,0);
button_send_event(BUTTON_LONG_RELEASED, last_saved_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_COMB_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
xTimerStop(button_pressing_timer,0);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
button_send_event(BUTTON_LONG_RELEASED, last_saved_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_TIME_OUT)
{
current_state = BUTTON_WORKING_STATE_LONG_LONG_PRESSED;
button_send_event(BUTTON_LONG_LONG_PRESSED, current_pressed_button, pressed_cnt);
}
}
static void button_long_long_pressed(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_RELEASED)
{
xTimerStop(button_pressing_timer,0);
current_state = BUTTON_WORKING_STATE_IDLE;
button_send_event(BUTTON_LONG_LONG_RELEASED, last_saved_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_COMB_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
xTimerStop(button_pressing_timer,0);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
button_send_event(BUTTON_LONG_LONG_RELEASED, last_saved_button, pressed_cnt);
}
}
static void button_comb_just_pressed(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_RELEASED)
{
current_state = BUTTON_WORKING_STATE_IDLE;
xTimerStop(button_state_timer,0);
button_send_event(BUTTON_COMB_RELEASED, last_saved_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_SINGLE_PRESSED)
{
current_state = BUTTON_WORKING_STATE_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
button_send_event(BUTTON_COMB_RELEASED, last_saved_button, pressed_cnt);
button_send_event(BUTTON_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_TIME_OUT)
{
current_state = BUTTON_WORKING_STATE_COMB_PRESSED;
xTimerChangePeriod(button_state_timer, (BUTTON_LONG_DURING*10-BUTTON_SHORT_DURING)*10,0);
xTimerStart(button_state_timer,0);
}
}
static void button_comb_pressed(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_RELEASED)
{
current_state = BUTTON_WORKING_STATE_IDLE;
xTimerStop(button_state_timer,0);
button_send_event(BUTTON_COMB_SHORT_PRESSED, last_saved_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_SINGLE_PRESSED)
{
current_state = BUTTON_WORKING_STATE_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
button_send_event(BUTTON_COMB_SHORT_PRESSED, last_saved_button, pressed_cnt);
button_send_event(BUTTON_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_COMB_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
button_send_event(BUTTON_COMB_SHORT_PRESSED, last_saved_button, pressed_cnt);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_TIME_OUT)
{
current_state = BUTTON_WORKING_STATE_COMB_LONG_PRESSED;
xTimerChangePeriod(button_state_timer, ((BUTTON_LONG_LONG_DURING-BUTTON_LONG_DURING)*10)*10,0);
xTimerStart(button_state_timer,0);
xTimerChangePeriod(button_pressing_timer, BUTTON_LONG_PRESSING_INTERVAL*10,0);
xTimerStart(button_pressing_timer,0);
button_send_event(BUTTON_COMB_LONG_PRESSED, current_pressed_button, pressed_cnt);
}
}
static void button_comb_long_pressed(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_RELEASED)
{
current_state = BUTTON_WORKING_STATE_IDLE;
xTimerStop(button_state_timer,0);
xTimerStop(button_pressing_timer,0);
button_send_event(BUTTON_COMB_LONG_RELEASED, last_saved_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_SINGLE_PRESSED)
{
current_state = BUTTON_WORKING_STATE_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
xTimerStop(button_pressing_timer,0);
button_send_event(BUTTON_COMB_LONG_RELEASED, last_saved_button, pressed_cnt);
button_send_event(BUTTON_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_COMB_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
xTimerStop(button_pressing_timer,0);
button_send_event(BUTTON_COMB_LONG_RELEASED, last_saved_button, pressed_cnt);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_TIME_OUT)
{
current_state = BUTTON_WORKING_STATE_COMB_LONG_LONG_PRESSED;
button_send_event(BUTTON_COMB_LONG_LONG_PRESSED, current_pressed_button, pressed_cnt);
}
}
static void button_comb_long_long_pressed(uint8_t event)
{
if(event == BUTTON_WORKING_EVENT_RELEASED)
{
current_state = BUTTON_WORKING_STATE_IDLE;
xTimerStop(button_pressing_timer,0);
button_send_event(BUTTON_COMB_LONG_LONG_RELEASED, last_saved_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_SINGLE_PRESSED)
{
current_state = BUTTON_WORKING_STATE_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
xTimerStop(button_pressing_timer,0);
button_send_event(BUTTON_COMB_LONG_LONG_RELEASED, last_saved_button, pressed_cnt);
button_send_event(BUTTON_PRESSED, current_pressed_button, pressed_cnt);
}
else if(event == BUTTON_WORKING_EVENT_COMB_PRESSED)
{
current_state = BUTTON_WORKING_STATE_COMB_JUST_PRESSED;
xTimerChangePeriod(button_state_timer, BUTTON_SHORT_DURING*10,0);
xTimerStart(button_state_timer,0);
xTimerStop(button_pressing_timer,0);
button_send_event(BUTTON_COMB_LONG_LONG_RELEASED, last_saved_button, pressed_cnt);
button_send_event(BUTTON_COMB_PRESSED, current_pressed_button, pressed_cnt);
}
}
void (*const button_statemachines[BUTTON_WORKING_STATE_MAX])(uint8_t) =
{
button_idle,
button_just_pressed,
button_pressed,
button_wait_multi,
button_long_pressed,
button_long_long_pressed,
button_comb_just_pressed,
button_comb_pressed,
button_comb_long_pressed,
button_comb_long_long_pressed,
};
//one or more button is released or pressed
int button_toggle_handler(uint32_t curr_button)
{
enum button_working_event_t event;
current_pressed_button = curr_button;
if(last_saved_button != current_pressed_button)
{
if(current_pressed_button == 0)
{
event = BUTTON_WORKING_EVENT_RELEASED;
}
else
{
if((current_pressed_button & (current_pressed_button-1)) == 0)
{
event = BUTTON_WORKING_EVENT_SINGLE_PRESSED;
}
else
{
event = BUTTON_WORKING_EVENT_COMB_PRESSED;
}
}
button_statemachines[current_state](event);
last_saved_button = current_pressed_button;
}
return 0;
}
static void button_timeout_handler( TimerHandle_t xTimer)
{
button_statemachines[current_state](BUTTON_WORKING_EVENT_TIME_OUT);
}
static void button_pressing_timeout_handler( TimerHandle_t xTimer )
{
enum button_type_t event;
if((current_pressed_button & (current_pressed_button - 1)) == 0)
{
event = BUTTON_LONG_PRESSING;
}
else
{
event = BUTTON_COMB_LONG_PRESSING;
}
button_send_event(event, current_pressed_button, pressed_cnt);
xTimerChangePeriod(button_pressing_timer, BUTTON_LONG_PRESSING_INTERVAL*10,0);
xTimerStart(button_pressing_timer,0);
}
static void button_anti_shake_timeout_handler( TimerHandle_t xTimer )
{
uint32_t curr_button;
curr_button = ool_read16(PMU_REG_PIN_DATA);
curr_button &= button_io_mask;
if(curr_button == curr_button_before_anti_shake)
{
curr_button ^= button_io_mask;
struct app_task_event *event;
event = app_task_event_alloc(APP_TASK_EVENT_BTN_TOGGLE, sizeof(uint32_t), false);
if(event)
{
memcpy(event->param, (void *)&curr_button, sizeof(uint32_t));
event->param_len = sizeof(uint32_t);
app_task_event_post(event, false);
}
}
}
void button_event_handler(void * param)
{
struct button_msg_t *button_msg;
const char *button_type_str[] = {
"BUTTON_PRESSED",
"BUTTON_RELEASED",
"BUTTON_SHORT_PRESSED",
"BUTTON_MULTI_PRESSED",
"BUTTON_LONG_PRESSED",
"BUTTON_LONG_PRESSING",
"BUTTON_LONG_RELEASED",
"BUTTON_LONG_LONG_PRESSED",
"BUTTON_LONG_LONG_RELEASED",
"BUTTON_COMB_PRESSED",
"BUTTON_COMB_RELEASED",
"BUTTON_COMB_SHORT_PRESSED",
"BUTTON_COMB_LONG_PRESSED",
"BUTTON_COMB_LONG_PRESSING",
"BUTTON_COMB_LONG_RELEASED",
"BUTTON_COMB_LONG_LONG_PRESSED",
"BUTTON_COMB_LONG_LONG_RELEASED",
};
button_msg = (struct button_msg_t *)param;
printf("KEY 0x%08x, TYPE %s. %d\r\n", button_msg->button_index, button_type_str[button_msg->button_type],button_msg->button_type);
if(button_msg->button_type == BUTTON_SHORT_PRESSED) //short button
{
if(button_msg->button_index == BUTTON_PIN_NUM)
{
if(!gui_task_resume())
gui_task_msg_send(BUTTON_KEY_EVT,NULL,0,NULL,0,NULL);
}
else if(button_msg->button_index == SOS_KEY_PIN_NUM)
{
// if(!gui_task_resume())
// {
// gui_task_msg_send(BUTTON_KEY2_EVT,NULL,0,NULL,0,NULL);
// }
}
else if(button_msg->button_index == KEY1_PIN_NUM)
{
if(!gui_task_resume())
{
gui_task_msg_send(BUTTON_KEY1_EVT,NULL,0,NULL,0,NULL);
}
}
}
else if(button_msg->button_type == BUTTON_LONG_PRESSED)//long
{
if(button_msg->button_index == BUTTON_PIN_NUM)
{
}
else if(button_msg->button_index == SOS_KEY_PIN_NUM)
{
}
}
}
void button_init(uint32_t enable_io)
{
button_io_mask = enable_io;
button_anti_shake_timer = xTimerCreate("button_anti_shake_timer", 10, pdFALSE, NULL, button_anti_shake_timeout_handler);
button_pressing_timer = xTimerCreate("button_pressing_timer", BUTTON_LONG_PRESSING_INTERVAL * 10, pdFALSE, NULL, button_pressing_timeout_handler);
button_state_timer = xTimerCreate("button_state_timer", 10 , pdFALSE, NULL, button_timeout_handler);
}

View File

@ -1,81 +0,0 @@
#ifndef _BUTTON_H
#define _BUTTON_H
#include <stdint.h>
enum button_event_t
{
BUTTON_TOGGLE,
BUTTON_PRESSED_EVENT,
BUTTON_TIMER_TO_TIMER,
BUTTON_PRESSING_TO_TIMER,
BUTTON_ANTI_SHAKE_TO_TIMER,
};
enum button_type_t
{
BUTTON_PRESSED,
BUTTON_RELEASED,
BUTTON_SHORT_PRESSED,
BUTTON_MULTI_PRESSED,
BUTTON_LONG_PRESSED,
BUTTON_LONG_PRESSING,
BUTTON_LONG_RELEASED,
BUTTON_LONG_LONG_PRESSED,
BUTTON_LONG_LONG_RELEASED,
BUTTON_COMB_PRESSED,
BUTTON_COMB_RELEASED,
BUTTON_COMB_SHORT_PRESSED,
BUTTON_COMB_LONG_PRESSED,
BUTTON_COMB_LONG_PRESSING,
BUTTON_COMB_LONG_RELEASED,
BUTTON_COMB_LONG_LONG_PRESSED,
BUTTON_COMB_LONG_LONG_RELEASED,
};
enum button_working_state_t
{
BUTTON_WORKING_STATE_IDLE,
BUTTON_WORKING_STATE_JUST_PRESSED,
BUTTON_WORKING_STATE_PRESSED,
BUTTON_WORKING_STATE_WAIT_MULTI,
BUTTON_WORKING_STATE_LONG_PRESSED,
BUTTON_WORKING_STATE_LONG_LONG_PRESSED,
BUTTON_WORKING_STATE_COMB_JUST_PRESSED,
BUTTON_WORKING_STATE_COMB_PRESSED,
BUTTON_WORKING_STATE_COMB_LONG_PRESSED,
BUTTON_WORKING_STATE_COMB_LONG_LONG_PRESSED,
BUTTON_WORKING_STATE_MAX,
};
enum button_working_event_t
{
BUTTON_WORKING_EVENT_RELEASED,
BUTTON_WORKING_EVENT_SINGLE_PRESSED,
BUTTON_WORKING_EVENT_COMB_PRESSED,
BUTTON_WORKING_EVENT_TIME_OUT,
};
struct button_toggle_param_t
{
uint32_t curr_button;
uint32_t timestamp;
};
struct button_msg_t
{
uint32_t button_index;
uint8_t button_type;
uint8_t button_cnt; // only for multi click
};
void button_toggle_detected(uint32_t curr_button);
void button_int_isr(uint32_t changed_button);
void button_init(uint32_t enable_io);
int button_toggle_handler(uint32_t curr_button);
void button_event_handler(void *param);
#endif //_BUTTON_H

View File

@ -1,188 +0,0 @@
#include "fr_device_charge.h"
#include "app_lvgl.h"
static uint8_t charge_status = CHARGING_IDLE;
/************************************************************************************
* @fn charge init
*
* @brief charge init
*/
void device_charge_init(void)
{
uint32_t timeout_count = 10;
/* enable charge function, and set charge current & voltage. */
pmu_charge_enable(PMU_CHG_CUR_88mA, PMU_CHG_END_VOL_4_1);
#if 1
while(timeout_count)
{
/* Check that the charger is connected */
if (read_analog_status() & PMU_CHG_ACOK_STATUS_BIT)
{ /* filter */
//system_delay_us(100);
if (read_analog_status() & PMU_CHG_ACOK_STATUS_BIT)
{ /* The charger is connected. Check out action */
pmu_charge_monitor_en(PMU_CHARGING_OUT);
/* Check that the battery is full */
pmu_battery_full_monitor_en(PMU_BATTERY_FULL);
printf("charge config 1 \r\n");
charge_status = CHARGING_IN;
charge_vbat_toggle_detected(charge_status);
break;
}
}
else
{ /* filter */
//system_delay_us(100);
if ((read_analog_status() & PMU_CHG_ACOK_STATUS_BIT) == 0)
{ /* The charger not connected. Check in action */
pmu_charge_monitor_en(PMU_CHARGING_IN);
printf("charge config 2 \r\n");
charge_status = CHARGING_IDLE;
charge_vbat_toggle_detected(charge_status);
break;
}
}
timeout_count--;
if (timeout_count == 0)
printf("ACOK status timeout");
}
NVIC_EnableIRQ(PMU_IRQn);
#endif
//while(1);
}
void PMU_Charge_Monitor_IRQHandler(void)
{
if (read_analog_status() & PMU_CHG_ACOK_STATUS_BIT)
{
//printf("charge in...\r\n");
/* The charger is connected. Check out action */
pmu_charge_monitor_en(PMU_CHARGING_OUT);
/* Check that the battery is full */
pmu_battery_full_monitor_en(PMU_BATTERY_FULL);
charge_status = CHARGING_IN;
}
else
{
//printf("charge out...\r\n");
/* The charger not connected. Check in action */
pmu_charge_monitor_en(PMU_CHARGING_IN);
charge_status = CHARGING_OUT;
}
charge_vbat_toggle_detected(charge_status);
}
void PMU_Battery_Full_IRQHandler(void)
{
if (read_analog_status() & PMU_BATFULL_STATUS_BIT)
{
//printf("full...\r\n");
/* The battery is full. Check that the battery not full */
pmu_battery_full_monitor_en(PMU_BATTERY_NOT_FULL);
charge_status = CHARGING_FULL;
}
else
{
//printf("not full\r\n");
/* The battery not full. Check that the battery is full */
pmu_battery_full_monitor_en(PMU_BATTERY_FULL);
charge_status = CHARGING_NOT_FULL;
}
charge_vbat_toggle_detected(charge_status);
}
/*
send vbat charge status
*/
void charge_vbat_toggle_detected(uint8_t sat)
{
struct app_task_event *event;
event = app_task_event_alloc(APP_TASK_EVENT_CHARGE_OUTPUT, sizeof(uint8_t), false);
if(event)
{
memcpy(event->param, (void *)&sat, sizeof(uint8_t));
event->param_len = sizeof(uint8_t);
app_task_event_post(event, false);
}
}
void charge_event_handle(uint8_t param)
{
printf("%s param=%d \r\n",__func__,param);
switch(param)
{
case CHARGING_IDLE:
printf("---> CHARGING_IDLE \r\n");
break;
case CHARGING_IN:
printf("---> CHARGING_IN \r\n");
if(gui_task_handle_is_active() == NULL)
return;
gui_task_resume();
gui_task_msg_send(POWER_CHARGE_IN_EVT,NULL,0,NULL,0,NULL);
break;
case CHARGING_OUT:
printf("---> CHARGING_OUT \r\n");
if(gui_task_handle_is_active() == NULL)
return;
gui_task_resume();
gui_task_msg_send(POWER_CHARGE_OUT_EVT,NULL,0,NULL,0,NULL);
break;
case CHARGING_FULL:
printf("---> CHARGING_FULL \r\n");
break;
case CHARGING_NOT_FULL:
printf("---> CHARGING_NOT_FULL \r\n");
break;
}
}
uint8_t get_charge_status(void)
{
return charge_status;
}

View File

@ -1,33 +0,0 @@
#ifndef __FR_DEVICE_CHARGE__
#define __FR_DEVICE_CHARGE__
#ifdef __cplusplus
extern "C" {
#endif
#include "fr30xx.h"
#include "app_task.h"
#define read_analog_status() ool_read(PMU_REG_ANA_STATUS)
typedef enum
{
CHARGING_IDLE = 0,
CHARGING_IN,
CHARGING_OUT,
CHARGING_FULL,
CHARGING_NOT_FULL,
}enum_charge_type_t;
extern void device_charge_init(void);
extern void charge_vbat_toggle_detected(uint8_t sat);
extern void charge_event_handle(uint8_t param);
extern uint8_t get_charge_status(void);
#ifdef __cplusplus
}
#endif
#endif /* __FR_DEVICE_CHARGE__ */

View File

@ -1,264 +0,0 @@
#include <stdint.h>
#include <stddef.h>
#include "driver_gpio.h"
#include "fr30xx.h"
#include "app_task.h"
#include "fr_device_pmu_io.h"
#include "fr_device_encode.h"
#include "app_lvgl.h"
/* FreeRTOS kernel includes. */
#include "FreeRTOS.h"
#include "task.h"
#include "timers.h"
extern uint8_t key_code;
#define ENCODE_FILO_LEN 16
static uint8_t encode_bit_status = 0;
static uint8_t encode_bit_code = 0;
encode_type_t encode_table_filo[ENCODE_FILO_LEN];
uint8_t encode_table_key[ENCODE_FILO_LEN];
uint8_t key_release_flag = 0;
const uint8_t encode_table_value[8][5] =
{
{0x01, 0x00, 0x02, 0x03, 0x01},
{0x02, 0x03, 0x01, 0x00, 0x01},
{0x03, 0x01, 0x00, 0x02, 0x01},
{0x00, 0x02, 0x03, 0x01, 0x01},
{0x02, 0x00, 0x01, 0x03, 0x02},
{0x01, 0x03, 0x02, 0x00, 0x02},
{0x03, 0x02, 0x00, 0x01, 0x02},
{0x00, 0x01, 0x03, 0x02, 0x02},
};
uint32_t encode_last_time;
static uint32_t get_encode_basetime(void)
{
uint32_t cur_base_time = portGET_RUN_TIME_COUNTER_VALUE();
uint32_t diff;
if(cur_base_time >= encode_last_time)
diff = cur_base_time - encode_last_time;
else
diff = (((uint32_t)0xFFFFFFFF) - encode_last_time) + cur_base_time + 1;
encode_last_time = cur_base_time;
return diff;
}
uint32_t encode_release_last_time;
static uint32_t get_encode_release_basetime(void)
{
uint32_t cur_base_time = portGET_RUN_TIME_COUNTER_VALUE();
uint32_t diff;
if(cur_base_time >= encode_release_last_time)
diff = cur_base_time - encode_release_last_time;
else
diff = (((uint32_t)0xFFFFFFFF) - encode_release_last_time) + cur_base_time + 1;
return diff;
}
void clear_encode_fifo(void)
{
encode_last_time = portGET_RUN_TIME_COUNTER_VALUE();
memset(encode_table_filo,0,ENCODE_FILO_LEN*2);
}
void encode_push_key(uint8_t key_value)
{
uint8_t i;
uint32_t time;
time = get_encode_basetime();
if(time <= 3)
{
time += encode_table_filo[0].time;
if(time > 0xff)
time = 0xff;
encode_table_filo[0].time = time;
encode_table_filo[0].keyvalue = key_value;
// printf("fiter");
}
else
{
for(i = ENCODE_FILO_LEN - 1; i > 0; i -- )
{
encode_table_filo[i] = encode_table_filo[i - 1];
}
encode_table_filo[0].keyvalue = key_value;
if(time > 255)
{
encode_table_filo[0].time = 0xff;
// printf("\n");
// printf("\n");
// printf("\n");
// printf("\n");
// printf("\n");
// printf("\n");
}
else
encode_table_filo[0].time = time;
}
// printf("keyvlue:");
// for(i = 0; i < 15; i ++ )
// {
// printf("%d/", encode_table_filo[i].keyvalue);
// printf("%d ", encode_table_filo[i].time);
// }
// printf("\n");
}
uint8_t get_encode_start(void)
{
uint8_t i = 0;
while(i < ENCODE_FILO_LEN)
{
if(encode_table_filo[i].time == 0xff)
{
i ++;
break;
}
i ++;
}
return i;
}
void encode_event_handle(uint8_t key_value)
{
uint8_t len;
uint8_t start;
uint8_t i,j;
// if (get_charte_state())
// return;
// if (system_enter_music_flag)
// return;
//printf("value %d\n", key_value);
start = get_encode_start();
len = start;
for(i = 0; i < len; i++)
{
encode_table_key[i] = encode_table_filo[start - 1].keyvalue;
start --;
}
if(len > 4)
{
j = 0;
while(j < (len-4))
{
i = 0;
while(i < 8)
{
if(memcmp(&encode_table_value[i][0],encode_table_key+j,4) == 0)
{
//if(!key_release_flag)
{
//os_timer_stop(&encode_release_timer);
encode_bit_code = encode_table_value[i][4];
//printf("code %d \n",encode_bit_code);
key_release_flag = 1;
if(!gui_task_resume())
{
encode_release_last_time = portGET_RUN_TIME_COUNTER_VALUE();
encode_bit_code |= 0x80;
gui_task_msg_send(ENCODE_KEY_EVT,(void *)&encode_bit_code,1,NULL,0,NULL);
}
return;
}
}
i ++;
}
j++;
}
}
else if((len >= 2) && (len <= 4))
{
i = 0;
while(i < 8)
{
if(memcmp(&encode_table_value[i][0],encode_table_key,len) == 0)
{
//if(!key_release_flag)
{
//os_timer_stop(&encode_release_timer);
encode_bit_code = encode_table_value[i][4];
//printf("code %d \n",encode_bit_code);
key_release_flag = 1;
if(!gui_task_resume())
{
encode_release_last_time = portGET_RUN_TIME_COUNTER_VALUE();
encode_bit_code |= 0x80;
gui_task_msg_send(ENCODE_KEY_EVT,(void *)&encode_bit_code,1,NULL,0,NULL);
}
return;
}
}
i ++;
}
}
}
bool encode_key_release(void)
{
if(get_encode_release_basetime() > 10)
{
key_code = 0;
return true;
}
return false;
}
void encode_toggle_detected(uint8_t curr_encode)
{
//printf("encode %d \n",curr_encode);
if(encode_bit_status != curr_encode)
{
encode_bit_status = curr_encode;
encode_push_key(curr_encode);
struct app_task_event *event;
event = app_task_event_alloc(APP_TASK_EVENT_ENCODE_TOGGLE, sizeof(uint8_t), false);
if(event)
{
memcpy(event->param, (void *)&curr_encode, sizeof(uint8_t));
event->param_len = sizeof(uint8_t);
app_task_event_post(event, false);
}
}
}

View File

@ -1,21 +0,0 @@
#ifndef __FR_DEVICE_ENCODE_H__
#define __FR_DEVICE_ENCODE_H__
#include <stdint.h>
typedef struct
{
uint8_t keyvalue;
uint8_t time; //1 ms as unit
}encode_type_t;
bool encode_key_release(void);
void encode_toggle_detected(uint8_t curr_encode);
void encode_event_handle(uint8_t key_value);
#endif //__FR_DEVICE_ENCODE_H__

View File

@ -1,38 +0,0 @@
#include "fr_device_pa.h"
bool pa_enable_flag = false;
void device_pa_init(void)
{
GPIO_InitTypeDef gpio_config;
__SYSTEM_GPIOA_CLK_ENABLE();
gpio_config.Pin = GPIO_PIN_6;
gpio_config.Mode = GPIO_MODE_OUTPUT_PP;
gpio_config.Pull = GPIO_PULLDOWN;
gpio_config.Alternate = GPIO_FUNCTION_0;
gpio_init(GPIOA, &gpio_config);
pa_enable_flag = false;
gpio_write_pin(GPIOA, GPIO_PIN_6, GPIO_PIN_CLEAR); //defaultoutput low
}
void device_pa_enable(void)
{
if(pa_enable_flag == false){
printf("PA enable\r\n");
pa_enable_flag = true;
gpio_write_pin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET); //output high
}
}
void device_pa_disable(void)
{
if(pa_enable_flag == true){
printf("PA disable\r\n");
pa_enable_flag = false;
gpio_write_pin(GPIOA, GPIO_PIN_6, GPIO_PIN_CLEAR); //output low
}
}

View File

@ -1,21 +0,0 @@
#ifndef __FR_DEVICE_PA__
#define __FR_DEVICE_PA__
#ifdef __cplusplus
extern "C" {
#endif
#include "fr30xx.h"
#include "app_task.h"
extern void device_pa_init(void);
extern void device_pa_enable(void);
extern void device_pa_disable(void);
#ifdef __cplusplus
}
#endif
#endif /* __FR_DEVICE_PA__ */

View File

@ -1,118 +0,0 @@
/*********************
* INCLUDES
*********************/
#include "driver_gpio.h"
#include "fr30xx.h"
#include "app_lvgl.h"
#include "fr_device_pmu_io.h"
#include "fr_device_button.h"
#include "fr_device_encode.h"
/*********************
* DEFINES
*********************/
#define BUTTON_DEBUG(fmt,arg...) printf("[BUTTON]"fmt,##arg)
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
/**********************
* VARIABLES
**********************/
/**********************
* MACROS
**********************/
/**********************
* EXTERN FUNCTIONS
**********************/
/**********************
* FUNCTIONS
**********************/
void device_pmu_io_init(void)
{
pmu_gpio_int_init(BUTTON_PIN_NUM, PMU_GPIO_PULL_UP, 1);
pmu_gpio_int_init(SOS_KEY_PIN_NUM, PMU_GPIO_PULL_UP, 1);
pmu_gpio_int_init(KEY1_PIN_NUM, PMU_GPIO_PULL_UP, 1);
pmu_gpio_int_init(ENCONDED_A_PIN_NUM, PMU_GPIO_PULL_UP, 1);
pmu_gpio_int_init(ENCONDED_B_PIN_NUM, PMU_GPIO_PULL_UP, 1);
pmu_enable_isr(PMU_GPIO_PMU_INT_MSK_BIT);
NVIC_SetPriority(PMU_IRQn, 4);
NVIC_EnableIRQ(PMU_IRQn);
}
void PMU_GPIO_PMU_IRQHandler(void)
{
uint16_t data = ool_read16(PMU_REG_PIN_DATA);
uint16_t result = ool_read16(PMU_REG_PIN_XOR_RESULT);
/* update last value with latest data */
ool_write16(PMU_REG_PIN_LAST_V, data);
/* clear last XOR result */
ool_write16(PMU_REG_PIN_XOR_CLR, result);
// printf("PMU IO: 0x%04x, 0x%04x\r\n", data, result);
if (data & PMU_PIN_9) {
system_prevent_sleep_clear(SYSTEM_PREVENT_SLEEP_TYPE_HCI_RX);
}
else {
system_prevent_sleep_set(SYSTEM_PREVENT_SLEEP_TYPE_HCI_RX);
}
if (result & (ENCONDED_A_PIN_NUM | ENCONDED_B_PIN_NUM)) {
uint8_t encode_bit_status;
if (!(data & ENCONDED_A_PIN_NUM))
{
encode_bit_status |= 0x02;
}
else
{
encode_bit_status &= 0xFD;
}
if (!(data & ENCONDED_B_PIN_NUM))
{
encode_bit_status |= 0x01;
}
else
{
encode_bit_status &= 0xFE;
}
encode_toggle_detected(encode_bit_status);
}
if (result & (BUTTON_PIN_NUM | SOS_KEY_PIN_NUM | KEY1_PIN_NUM)) {
button_toggle_detected(data);
}
}

View File

@ -1,108 +0,0 @@
#ifndef __FR_DEVICE_PMU_IO_H__
#define __FR_DEVICE_PMU_IO_H__
#ifdef __cplusplus
extern "C" {
#endif
/*********************
* INCLUDES
*********************/
#include "app_config.h"
/*********************
* DEFINES
*********************/
#if BOARD_SEL == BOARD_EVB_FR5090
#define BUTTON_PIN_NUM PMU_PIN_7
#define SOS_KEY_PIN_NUM PMU_PIN_5
#define KEY1_PIN_NUM PMU_PIN_4
#define ENCONDED_A_PIN_NUM PMU_PIN_2
#define ENCONDED_B_PIN_NUM PMU_PIN_3
#define PMU_IO_INTTERUPT_DEFAULT (BUTTON_PIN_NUM|SOS_KEY_PIN_NUM|KEY1_PIN_NUM|ENCONDED_A_PIN_NUM|ENCONDED_B_PIN_NUM)
#elif BOARD_SEL == BOARD_EVB_FR3092E
#define BUTTON_PIN_NUM PMU_PIN_7
#define SOS_KEY_PIN_NUM PMU_PIN_5
#define KEY1_PIN_NUM PMU_PIN_4
#define ENCONDED_A_PIN_NUM PMU_PIN_2
#define ENCONDED_B_PIN_NUM PMU_PIN_3
#define PMU_IO_INTTERUPT_DEFAULT (BUTTON_PIN_NUM|SOS_KEY_PIN_NUM|ENCONDED_A_PIN_NUM|ENCONDED_B_PIN_NUM)
#elif BOARD_SEL == BOARD_EVB_FR3092E_CM
#define BUTTON_PIN_NUM PMU_PIN_4
#define SOS_KEY_PIN_NUM PMU_PIN_5
#define KEY1_PIN_NUM PMU_PIN_3
#define ENCONDED_A_PIN_NUM PMU_PIN_7
#define ENCONDED_B_PIN_NUM PMU_PIN_6
#define PMU_IO_INTTERUPT_DEFAULT (BUTTON_PIN_NUM|SOS_KEY_PIN_NUM|KEY1_PIN_NUM|ENCONDED_A_PIN_NUM|ENCONDED_B_PIN_NUM)
#elif BOARD_SEL == BOARD_EVB_FR3092E_RGB
#define BUTTON_PIN_NUM PMU_PIN_7
#define SOS_KEY_PIN_NUM PMU_PIN_5
#define KEY1_PIN_NUM PMU_PIN_4
#define ENCONDED_A_PIN_NUM PMU_PIN_2
#define ENCONDED_B_PIN_NUM PMU_PIN_3
#define PMU_IO_INTTERUPT_DEFAULT (BUTTON_PIN_NUM|SOS_KEY_PIN_NUM|ENCONDED_A_PIN_NUM|ENCONDED_B_PIN_NUM)
#else
#error "choose correct board"
#endif
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
/**********************
* VARIABLES
**********************/
/**********************
* MACROS
**********************/
//default Time zone
/**********************
* EXTERN FUNCTIONS
**********************/
void device_pmu_io_init(void);
/**********************
* FUNCTIONS
**********************/
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif

View File

@ -1,396 +0,0 @@
/**
* @file fr_device_rtc.c
*
* @author tangzheng
*/
/*********************
* INCLUDES
*********************/
/* Standard includes. */
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "fr30xx.h"
#include "FreeRTOS.h"
#include "lvgl.h"
#include "fr_device_rtc.h"
#include "fr_watch.h"
/*********************
* DEFINES
*********************/
#define RTC_DEBUG(fmt,arg...) printf("[RTC]"fmt,##arg)
/**********************
* TYPEDEFS
**********************/
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
#define BLE_BASETIMECNT_MASK ((uint32_t)0xFFFFFFFF) //((uint32_t)0x4FFFFFF)
uint32_t system_rtc_tick = 0;
uint32_t last_ke_time;
/**********************
* VARIABLES
**********************/
const unsigned char g_day_per_mon[MONTH_PER_YEAR] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
time_rtc_t rtc_time = {
.ucYear = 2023,
.ucMonth = 10,
.ucDate = 1,
.ucHour = 12,
.ucMinute = 0,
.ucSecond = 0,
};
time_zone_t gSysTimeZone = {
.h = 8,
.m = 0,
};
static uint32_t sys_utc_time;
/**********************
* MACROS
**********************/
/**********************
* EXTERN FUNCTIONS
**********************/
/**********************
* FUNCTIONS
**********************/
unsigned char applib_dt_is_leap_year(unsigned short year)
{
if((year % 400) == 0)
{
return 1;
}
else if((year % 100) == 0)
{
return 0;
}
else if((year % 4) == 0)
{
return 1;
}
else
{
return 0;
}
}
unsigned char applib_dt_last_day_of_mon(unsigned char month, unsigned short year)
{
if((month == 0) || (month > 12))
{
return g_day_per_mon[1] + applib_dt_is_leap_year(year);
}
if(month != 2)
{
return g_day_per_mon[month - 1];
}
else
{
return g_day_per_mon[1] + applib_dt_is_leap_year(year);
}
}
unsigned int CalcWeekday(time_rtc_t time)
{
char century_code, year_code, month_code, day_code;
int week = 0;
century_code = year_code = month_code = day_code = 0;
if(time.ucMonth == 1 || time.ucMonth == 2)
{
century_code = (time.ucYear - 1) / 100;
year_code = (time.ucYear - 1) % 100;
month_code = time.ucMonth + 12;
day_code = time.ucDate;
}
else
{
century_code = time.ucYear / 100;
year_code = time.ucYear % 100;
month_code = time.ucMonth;
day_code = time.ucDate;
}
week = year_code + year_code / 4 + century_code / 4 - 2 * century_code + 26 * (month_code + 1) / 10 + day_code - 1;
week = week > 0 ? (week % 7) : ((week % 7) + 7);
return week;
}
unsigned int utc_time_to_sec(time_rtc_t* currTime)
{
unsigned short i;
unsigned int no_of_days = 0;
int utc_time;
if(currTime->ucYear < UTC_BASE_YEAR)
{
return 0;
}
/* year */
for(i = UTC_BASE_YEAR; i < currTime->ucYear; i++)
{
no_of_days += (DAY_PER_YEAR + applib_dt_is_leap_year(i));
}
/* month */
for(i = 1; i < currTime->ucMonth; i++)
{
no_of_days += applib_dt_last_day_of_mon((unsigned char) i, currTime->ucYear);
}
/* day */
no_of_days += (currTime->ucDate - 1);
#if 0
/* sec */
//utc_time = (unsigned int) no_of_days * SEC_PER_DAY + (unsigned int)(currTime->ucHour * SEC_PER_HOUR +
// currTime->ucMinute * SEC_PER_MIN + currTime->ucSecond);
utc_time = (unsigned int) no_of_days * SEC_PER_DAY + (unsigned int)((currTime->ucHour-8) * SEC_PER_HOUR +
currTime->ucMinute * SEC_PER_MIN + currTime->ucSecond);
#else
utc_time = (unsigned int) no_of_days * SEC_PER_DAY + (unsigned int)(currTime->ucHour * SEC_PER_HOUR +
currTime->ucMinute * SEC_PER_MIN + currTime->ucSecond);
utc_time -= (gSysTimeZone.h * 3600 + gSysTimeZone.m * 60);
#endif
return utc_time;
}
void utc_sec_to_time(unsigned int utc_sec, time_rtc_t* result)
{
int sec, day;
unsigned short y;
unsigned char m;
unsigned short d;
//unsigned char dst;
#if 0
if(daylightSaving)
{
utc_sec += SEC_PER_HOUR;
}
#endif
utc_sec = utc_sec + gSysTimeZone.h * 3600 + gSysTimeZone.m * 60;
/* hour, min, sec */
/* hour */
sec = utc_sec % SEC_PER_DAY;
result->ucHour = sec / SEC_PER_HOUR;
/* min */
sec %= SEC_PER_HOUR;
result->ucMinute = sec / SEC_PER_MIN;
/* sec */
result->ucSecond = sec % SEC_PER_MIN;
/* year, month, day */
/* year */
/* year */
day = utc_sec / SEC_PER_DAY;
for(y = UTC_BASE_YEAR; day > 0; y++)
{
d = (DAY_PER_YEAR + applib_dt_is_leap_year(y));
if(day >= d)
{
day -= d;
}
else
{
break;
}
}
result->ucYear = y;
for(m = 1; m < MONTH_PER_YEAR; m++)
{
d = applib_dt_last_day_of_mon(m, y);
if(day >= d)
{
day -= d;
}
else
{
break;
}
}
result->ucMonth = m;
result->ucDate = (unsigned char)(day + 1);
//result->DayIndex = applib_dt_dayindex(result->ncYear, result->ucMonth, result->ucDate);
}
unsigned char system_time_set_time_zone(time_zone_t set)
{
if(gSysTimeZone.h == set.h && gSysTimeZone.m == set.m)
{
return 0;
}
gSysTimeZone = set;
return 1;
}
void system_time_set(time_rtc_t set)
{
rtc_time = set;
}
time_rtc_t *system_time_get(void)
{
return &rtc_time;
}
time_zone_t *system_time_get_timeZone(void)
{
return &gSysTimeZone;
}
//date & time
bool CalcDoYear(uint16_t ucYear)
{
if((ucYear % 400 == 0)
||((ucYear % 4 == 0) && (ucYear % 100 != 0)))
{
return 1; //run nian
}
return 0;
}
uint8_t CalcMaxDate(time_rtc_t time)
{
uint8_t dates;
switch(time.ucMonth)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
dates = 31;
break;
case 2:
if(CalcDoYear(time.ucYear))
dates = 29; //run nian
else
dates = 28;
break;
case 4:
case 6:
case 9:
case 11:
dates = 30;
break;
}
return dates;
}
uint32_t system_get_curr_time(void)
{
return portGET_RUN_TIME_COUNTER_VALUE();
//return system_rtc_tick;
}
static uint32_t get_sys_ke_basetime(void)
{
uint32_t cur_base_time = system_get_curr_time();
uint32_t diff;
if(cur_base_time >= last_ke_time)
diff = cur_base_time - last_ke_time;
else
diff = (BLE_BASETIMECNT_MASK - last_ke_time) + cur_base_time + 1;
return diff;
}
void dev_rtc_time_init(void)
{
sys_utc_time = utc_time_to_sec(&rtc_time);
last_ke_time = system_get_curr_time();
}
unsigned int get_sys_utc_time(void)
{
return sys_utc_time;
}
void fr_system_update_utc_time(time_rtc_t *cur_time)
{
sys_utc_time = utc_time_to_sec(cur_time);
}
void rtc_running(void)
{
uint32_t diff = get_sys_ke_basetime();
if( diff > 1000 )
{
uint32_t temp_time_value=0;
temp_time_value = diff / 1000;
last_ke_time += temp_time_value*1000;
//if( last_ke_time > BLE_BASETIMECNT_MASK)
// last_ke_time -= (BLE_BASETIMECNT_MASK+1);
sys_utc_time += temp_time_value;
utc_sec_to_time(sys_utc_time,&sync_cm3_data.time);
}
}

View File

@ -1,83 +0,0 @@
/**
* @file fr_device_rtc.h
*
* @author tangzheng
*/
#ifndef __FR_DEVICE_RTC_H__
#define __FR_DEVICE_RTC_H__
#ifdef __cplusplus
extern "C" {
#endif
/*********************
* INCLUDES
*********************/
/*********************
* DEFINES
*********************/
/**********************
* TYPEDEFS
**********************/
typedef struct {
signed char h;
signed char m;
}time_zone_t;
/**********************
* STATIC PROTOTYPES
**********************/
/**********************
* STATIC VARIABLES
**********************/
/**********************
* VARIABLES
**********************/
/**********************
* MACROS
**********************/
#define UTC_BASE_YEAR 1970
#define MONTH_PER_YEAR 12
#define DAY_PER_YEAR 365
#define SEC_PER_DAY 86400
#define SEC_PER_HOUR 3600
#define SEC_PER_MIN 60
//default Time zone
#define DEFAULT_TIME_ZONE {8, 00}
/**********************
* EXTERN FUNCTIONS
**********************/
extern void rtc_running(void);
extern void dev_rtc_time_init(void);
extern unsigned int get_sys_utc_time(void);
/**********************
* FUNCTIONS
**********************/
#ifdef __cplusplus
} /*extern "C"*/
#endif
#endif

View File

@ -1,386 +0,0 @@
#include "fr_device_vbat.h"
#include "fr_device_charge.h"
#include "fr_watch.h"
uint16_t CH_Data[10];
uint8_t Bat_voltage = 0;
bool bat_filo_init_flag = false;
/************************************************************************************
* @fn adc vbat start
*
* @brief adc vbat start
*/
void device_vbat_init(enum_ADC_Demo_t fe_demo)
{
adc_InitConfig_t ADC_Config;
__SYSTEM_ADC_CLK_ENABLE();
pmu_adc_power_ctrl(true);
pmu_vbe_power_ctrl(true);
switch(0)
{
case ADC_SOFTWARE_TRIGGER_MODE:
{
ADC_Config.ADC_Reference = ADC_REF_IOLDO;
ADC_Config.ADC_TriggerMode = ADC_SOFTWARE_TRIGGER;
#if 0
adc_set_channel_maping(0, ADC_CHANNEL_MAP_PMU_P4);
adc_set_channel_maping(1, ADC_CHANNEL_MAP_PMU_P5);
adc_set_channel_maping(2, ADC_CHANNEL_MAP_PMU_P6);
adc_set_channel_maping(3, ADC_CHANNEL_MAP_PMU_P7);
adc_set_channel_maping(4, ADC_CHANNEL_MAP_VABT);
adc_set_channel_maping(5, ADC_CHANNEL_MAP_VBE);
#else
adc_set_channel_maping(4, ADC_CHANNEL_MAP_VBAT);
#endif
adc_init(ADC_Config);
adc_soft_trigger_convert(4);
while(!adc_get_channel_valid_status(4));
uint16_t adc_result = adc_get_channel_data(4);
uint16_t vbat_vol = adc_result * 4 * 3300 / 1023;
//init filo
if(!bat_filo_init_flag)
{
battery_value_fifo_init(vbat_vol);
bat_filo_init_flag = true;
}
//transform to precentage
//Bat_voltage = transform_battery(vbat_vol);
Bat_voltage = battery_value_fifo_inc(transform_battery(vbat_vol));
sync_cm3_data.battery.battery_value = Bat_voltage;
printf("adc %d vol %d prec %d \r\n",adc_result,vbat_vol,Bat_voltage);
}
break;
#if 0
case ADC_HARDWARE_TRIGGER_LOOP_MODE:
{
ADC_Config.ADC_Reference = ADC_REF_IOLDO;
ADC_Config.ADC_TriggerMode = ADC_HARDWARE_TRIGGER;
ADC_Config.HardTriggerConfig.ADC_Channel_Max = 6;
ADC_Config.HardTriggerConfig.ADC_Convert_Mode = ADC_LOOP_MODE;
adc_init(ADC_Config);
adc_set_channel_maping(0, ADC_CHANNEL_MAP_PMU_P4);
adc_set_channel_maping(1, ADC_CHANNEL_MAP_PMU_P5);
adc_set_channel_maping(2, ADC_CHANNEL_MAP_PMU_P6);
adc_set_channel_maping(3, ADC_CHANNEL_MAP_PMU_P7);
adc_set_channel_maping(4, ADC_CHANNEL_MAP_VABT);
adc_set_channel_maping(5, ADC_CHANNEL_MAP_VBE);
adc_convert_start();
while(1)
{
for (int i = 0; i < 6; i++)
{
if (adc_get_channel_valid_status(i))
{
CH_Data[i] = adc_get_channel_data(i);
printf("Channel:%d, DATA:%d\r\n", i, CH_Data[i]);
}
}
}
}break;
case ADC_HARDWARE_TRIGGER_IT_MODE:
{
ADC_Config.ADC_Reference = ADC_REF_IOLDO;
ADC_Config.ADC_TriggerMode = ADC_HARDWARE_TRIGGER;
ADC_Config.HardTriggerConfig.ADC_Channel_Max = 6;
ADC_Config.HardTriggerConfig.ADC_Convert_Mode = ADC_LOOP_MODE;
adc_init(ADC_Config);
adc_set_channel_maping(0, ADC_CHANNEL_MAP_PMU_P4);
adc_set_channel_maping(1, ADC_CHANNEL_MAP_PMU_P5);
adc_set_channel_maping(2, ADC_CHANNEL_MAP_PMU_P6);
adc_set_channel_maping(3, ADC_CHANNEL_MAP_PMU_P7);
adc_set_channel_maping(4, ADC_CHANNEL_MAP_VABT);
adc_set_channel_maping(5, ADC_CHANNEL_MAP_VBE);
adc_convert_start_IT();
NVIC_EnableIRQ(ADC_IRQn);
while(1);
}break;
#endif
}
}
/*
get vbat voltage
*/
uint16_t device_get_vbat(void)
{
return Bat_voltage;
}
/*
adc vbat event handle
*/
void adc_vbat_event_handle(void)
{
device_vbat_init(ADC_SOFTWARE_TRIGGER_MODE);
}
/*
adc vbat start detect
*/
void adc_vbat_start_detect(void)
{
struct app_task_event *event;
event = app_task_event_alloc(APP_TASK_EVENT_ADC_VBAT_DETECT, 0, false);
if(event)
{
//memcpy(event->param, (void *)&curr_button, sizeof(uint32_t));
//event->param_len = sizeof(uint32_t);
app_task_event_post(event, false);
}
}
/*
adc isr
*/
void adc_irq(void)
{
for (int i = 0; i < 6; i++)
{
if (adc_get_channel_valid_status(i))
{
//printf("int channel: %d, DATA:%d\r\n", i, adc_get_channel_data(i));
}
}
}
const uint16_t g_battery_table[] =
{
//0-10 //3405
3405,
3410,
3415,
3420,
3425,
3430,
3435,
3440,
3446,
3452,
//10-20 //3458
3458,
3464,
3470,
3476,
3482,
3488,
3494,
3500,
3506,
3512,
//20-30 //3519
3516,
3520,
3524,
3528,
3532,
3536,
3540,
3544,
3548,
3552,
//30-40 //3555
3556,
3560,
3564,
3568,
3572,
3576,
3579,
3582,
3585,
3588,
//40-50 //3590
3591,
3594,
3597,
3602,
3605,
3608,
3611,
3614,
3617,
3620,
// 3800 --> 50% //3623
//50-60
3623,
3627,
3631,
3635,
3639,
3643,
3647,
3652,
3657,
3662,
// 3844
//60-70 //3667
3667,
3673,
3679,
3685,
3691,
3697,
3703,
3710,
3717,
3724,
// 3920
//70-80 //3731
3731,
3739,
3747,
3755,
3763,
3771,
3779,
3787,
3795,
3803,
//3980
//80-90 //3812
3811,
3819,
3827,
3835,
3843,
3851,
3859,
3867,
3875,
3883,
//4040
//90-100 //3830
3900,
3915,
3930,
3945,
3960,
3975,
3990,
4005,
4020,
4050,
};
uint8_t transform_battery(uint16_t battery_value)
{
uint8_t i = 100;
while(i > 0)
{
if(battery_value >= g_battery_table[i - 1])
{
break;
}
i --;
}
return i;
}
#define BATTERY_FIFO_MAX 20
uint8_t battery_detect_fifo[BATTERY_FIFO_MAX];
void battery_value_fifo_init(uint16_t value)
{
uint8_t voltage = transform_battery(value);
for(uint8_t i = 0; i < BATTERY_FIFO_MAX; i ++ )
{
battery_detect_fifo[i] = voltage;
}
Bat_voltage = voltage;
}
uint8_t battery_value_fifo_inc(uint8_t value)
{
for(uint8_t i = 0; i < (BATTERY_FIFO_MAX - 1); i ++ )
{
battery_detect_fifo[(BATTERY_FIFO_MAX - 1) - i] = battery_detect_fifo[(BATTERY_FIFO_MAX - 2) - i];
}
battery_detect_fifo[0] = value;
uint32_t battery_total = 0;
for(uint8_t i = 0; i < BATTERY_FIFO_MAX; i ++ )
{
battery_total += battery_detect_fifo[i];
}
uint8_t averages = battery_total / BATTERY_FIFO_MAX;
if(get_charge_status() == CHARGING_IN)
{
return averages;
}
else
{
if(averages > Bat_voltage)
{
return Bat_voltage;
}
else
{
return averages;
}
}
}

View File

@ -1,32 +0,0 @@
#ifndef __FR_DEVICE_BATTERY__
#define __FR_DEVICE_BATTERY__
#ifdef __cplusplus
extern "C" {
#endif
#include "fr30xx.h"
#include "app_task.h"
/* ADC demo select */
typedef enum
{
ADC_SOFTWARE_TRIGGER_MODE,
ADC_HARDWARE_TRIGGER_LOOP_MODE,
ADC_HARDWARE_TRIGGER_IT_MODE,
}enum_ADC_Demo_t;
/* Exported functions --------------------------------------------------------*/
extern void device_vbat_init(enum_ADC_Demo_t fe_demo);
extern void adc_vbat_event_handle(void);
extern void adc_vbat_start_detect(void);
extern uint8_t transform_battery(uint16_t battery_value);
extern uint8_t battery_value_fifo_inc(uint8_t value);
extern void battery_value_fifo_init(uint16_t value);
#ifdef __cplusplus
}
#endif
#endif /* __FR_DEVICE_BATTERY__ */

View File

@ -1,514 +0,0 @@
/**
*********************************************************************************************************
* @file lfs_port.c
* @brief
* @details
* @author tang zheng
* @date 2022-08-27
* @version v0.1
* *********************************************************************************************************
*/
#include "fr30xx.h"
#include "lfs_port.h"
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"
#define ACCESS_EXTERN_FLASH_WIDTH_32BITS 1
lfs_t lfs;
QueueHandle_t lfs_semaphore;
volatile bool lfs_flash_read_dma_int = true;
void lfs_flash_read_callback(void)
{
lfs_flash_read_dma_int = false;
}
static int lfs_custom_flash_read(const struct lfs_config *c, lfs_block_t block,
lfs_off_t off, void *buffer, lfs_size_t size)
{
#ifdef LFS_EXT_FLASH
//IC_W25Qxx_Read_Data((uint8_t *)buffer, LFS_FLASH_START_ADRRESS+(block * c->block_size), size);
//IC_W25Qxx_Read_Dual_Output((uint8_t *)buffer, LFS_FLASH_START_ADRRESS+(block * c->block_size), size);
#if ACCESS_EXTERN_FLASH_WIDTH_32BITS == 0
IC_W25Qxx_Read_Quad_Output((uint8_t *)buffer, LFS_FLASH_START_ADRRESS+(block * c->block_size), size);
#else
assert((size & 0x03) == 0);
assert(((uint32_t)buffer & 0x03) == 0);
__SPI_DISABLE(spi_flash_handle.SPIx);
__SPI_DATA_FRAME_SIZE(spi_flash_handle.SPIx, SPI_FRAME_SIZE_32BIT);
__SPI_RX_ENDIAN_SET(spi_flash_handle.SPIx, TX_RX_Endian_1234);
IC_W25Qxx_Read_Quad_Output((uint8_t *)buffer, LFS_FLASH_START_ADRRESS+(block * c->block_size), size>>2);
__SPI_DISABLE(spi_flash_handle.SPIx);
__SPI_DATA_FRAME_SIZE(spi_flash_handle.SPIx, SPI_FRAME_SIZE_8BIT);
__SPI_RX_ENDIAN_SET(spi_flash_handle.SPIx, TX_RX_Endian_4321);
#endif
#if 0
//printf("E ................\r\n");
lfs_flash_read_dma_int = true;
IC_W25Qxx_Set_Read_Callback(lfs_flash_read_callback);
//IC_W25Qxx_Read_Dual_Output_DMA((uint8_t *)buffer, LFS_FLASH_START_ADRRESS+(block * c->block_size), size);
IC_W25Qxx_Read_Quad_Output_DMA((uint8_t *)buffer, LFS_FLASH_START_ADRRESS+(block * c->block_size), size);
while(lfs_flash_read_dma_int)
{
vTaskDelay(1);
printf("f w \r\n");
}
#endif
#if 0
lfs_flash_read_dma_int = true;
IC_W25Qxx_Set_Read_Callback(lfs_flash_read_callback);
//IC_W25Qxx_Read_Data_IT
//IC_W25Qxx_Read_Dual_Output_IT
//IC_W25Qxx_Read_Quad_Output_IT
IC_W25Qxx_Read_Quad_Output_IT((uint8_t *)buffer, LFS_FLASH_START_ADRRESS+(block * c->block_size), size);
while(lfs_flash_read_dma_int)
{
//vTaskDelay(1);
printf("f w \r\n");
}
#endif
#else
flash_read(LFS_FLASH_START_ADRRESS+(block * c->block_size)+off,size,(uint8_t *)buffer);
#endif
return 0;
}
static int lfs_custom_flash_write(const struct lfs_config *c, lfs_block_t block,
lfs_off_t off, const void *buffer, lfs_size_t size)
{
#ifdef LFS_EXT_FLASH
//IC_W25Qxx_PageProgram((uint8_t *)buffer, LFS_FLASH_START_ADRRESS+(block * c->block_size), size);
IC_W25Qxx_PageProgram_Quad((uint8_t *)buffer, LFS_FLASH_START_ADRRESS+(block * c->block_size), size);
#else
flash_write(LFS_FLASH_START_ADRRESS+(block * c->block_size)+off,size,(uint8_t *)buffer);
#endif
return 0;
}
static int lfs_custom_flash_erase(const struct lfs_config *c, lfs_block_t block)
{
#ifdef LFS_EXT_FLASH
IC_W25Qxx_EraseSector(LFS_FLASH_START_ADRRESS+(block * c->block_size));
#else
flash_erase(LFS_FLASH_START_ADRRESS+(block * c->block_size), HAL_FLASH_BLOCK_4K);
#endif
return 0;
}
static int lfs_custom_flash_sync(const struct lfs_config *c)
{
return 0;
}
int32_t lfs_free_size(void)
{
int16_t block;
block=LFS_FLASH_SIZE/HAL_FLASH_BLOCK_4K-lfs_fs_size(&lfs);
if(block >= 0)
{
return block*HAL_FLASH_BLOCK_4K;
}
else
{
return -1;
}
}
int lfs_port_lock(const struct lfs_config *c)
{
uint32_t time_out_counter = 0;
while(xSemaphoreTake( lfs_semaphore, 0 ) != pdPASS)
{
vTaskDelay(1);
time_out_counter ++;
if(time_out_counter >= 1000)
return -1;
}
return 0;
// if( xSemaphoreTake( lfs_semaphore, 0 ) != pdPASS )
// {
// return -1;
// }
// else
// {
// return 0;
// }
}
int lfs_port_unlock(const struct lfs_config *c)
{
if( xSemaphoreGive( lfs_semaphore ) != pdPASS )
{
return -1;
}
else
{
return 0;
}
}
int extern_flash_lock(void)
{
if( xSemaphoreTake( lfs_semaphore, 0 ) != pdPASS )
{
return -1;
}
else
{
return 0;
}
}
int extern_flash_unlock(void)
{
if( xSemaphoreGive( lfs_semaphore ) != pdPASS )
{
return -1;
}
else
{
return 0;
}
}
void extern_flash_read(uint8_t *Buffer, uint32_t flash_Address, uint32_t Length)
{
while(extern_flash_lock())
{
vTaskDelay(1);
}
//IC_W25Qxx_Read_Quad_Output(Buffer, (flash_Address & 0x3fffffff), Length);
// while (Length) {
// uint32_t read_length;
// read_length = Length > 64 ? 64 : Length;
// IC_W25Qxx_Read_Quad_Output(Buffer, (flash_Address & 0x3fffffff), read_length);
// Buffer += read_length;
// flash_Address += read_length;
// Length -= read_length;
// }
//DMA
#if ACCESS_EXTERN_FLASH_WIDTH_32BITS == 0
lfs_flash_read_dma_int = true;
IC_W25Qxx_Set_Read_Callback(lfs_flash_read_callback);
IC_W25Qxx_Read_Quad_Output_DMA(Buffer, (flash_Address & 0x3fffffff), Length);
while(lfs_flash_read_dma_int)
{
vTaskDelay(1);
}
#else
__SPI_DISABLE(spi_flash_handle.SPIx);
__SPI_DATA_FRAME_SIZE(spi_flash_handle.SPIx, SPI_FRAME_SIZE_32BIT);
__SPI_RX_ENDIAN_SET(spi_flash_handle.SPIx, TX_RX_Endian_1234);
while (Length) {
#define MAX_READ_FRAME_SIZE (64*4*1)
uint32_t single_length;
if (Length >= MAX_READ_FRAME_SIZE) {
single_length = MAX_READ_FRAME_SIZE;
lfs_flash_read_dma_int = true;
IC_W25Qxx_Set_Read_Callback(lfs_flash_read_callback);
IC_W25Qxx_Read_Quad_Output_DMA(Buffer, (flash_Address & 0x3fffffff), single_length>>2);
while(lfs_flash_read_dma_int)
{
// vTaskDelay(1);
}
}
else {
single_length = Length & (~0x03);
if (single_length) {
lfs_flash_read_dma_int = true;
IC_W25Qxx_Set_Read_Callback(lfs_flash_read_callback);
IC_W25Qxx_Read_Quad_Output_DMA(Buffer, (flash_Address & 0x3fffffff), single_length>>2);
while(lfs_flash_read_dma_int)
{
// vTaskDelay(1);
}
Buffer += single_length;
flash_Address += single_length;
Length -= single_length;
}
single_length = Length;
if (single_length) {
uint32_t value;
IC_W25Qxx_Read_Quad_Output((void *)&value, (flash_Address & 0x3fffffff), sizeof(uint32_t)>>2);
memcpy(Buffer, (void *)&value, single_length);
}
break;
}
Buffer += single_length;
flash_Address += single_length;
Length -= single_length;
}
__SPI_DISABLE(spi_flash_handle.SPIx);
__SPI_DATA_FRAME_SIZE(spi_flash_handle.SPIx, SPI_FRAME_SIZE_8BIT);
__SPI_RX_ENDIAN_SET(spi_flash_handle.SPIx, TX_RX_Endian_4321);
#endif
extern_flash_unlock();
}
#if 0
void extern_flash_write(uint8_t *Buffer, uint32_t flash_Address, uint32_t Length)
{
while(extern_flash_lock())
{
vTaskDelay(1);
}
//IC_W25Qxx_PageProgram_Quad((uint8_t *)Buffer, (flash_Address & 0x3fffffff), Length);
IC_W25Qxx_PageProgram((uint8_t *)Buffer, (flash_Address & 0x3fffffff), Length);
extern_flash_unlock();
}
#endif
void extern_flash_write(uint8_t *Buffer, uint32_t flash_Address, uint32_t Length)
{
while(extern_flash_lock())
{
vTaskDelay(1);
}
uint32_t Page_aligned=0;
Page_aligned=256-(flash_Address%256);
if(Length<=Page_aligned)
Page_aligned=Length;
while(1)
{
IC_W25Qxx_PageProgram(Buffer,flash_Address,Page_aligned);
if(Length==Page_aligned)
{
break;
}
else
{
Buffer+=Page_aligned;
flash_Address+=Page_aligned;
Length-=Page_aligned;
if(Length>256)
Page_aligned=256;
else
Page_aligned=Length;
}
vTaskDelay(1);
};
extern_flash_unlock();
}
void extern_flash_erase(uint32_t flash_Address)
{
while(extern_flash_lock())
{
vTaskDelay(1);
}
IC_W25Qxx_EraseSector(flash_Address & 0x3fffffff);
extern_flash_unlock();
}
void extern_flash_erase_ex(uint32_t flash_Address,uint32_t len)
{
while(extern_flash_lock())
{
vTaskDelay(1);
}
for (uint32_t i = 0; i < len; i += 4096)
{
IC_W25Qxx_EraseSector((flash_Address+i) & 0x3fffffff);
vTaskDelay(1);
}
extern_flash_unlock();
}
// configuration of the filesystem is provided by this struct
static const struct lfs_config cfg = {
// block device operations
.read = lfs_custom_flash_read,
.prog = lfs_custom_flash_write,
.erase = lfs_custom_flash_erase,
.sync = lfs_custom_flash_sync,
//thread safe
.lock = lfs_port_lock,
.unlock = lfs_port_unlock,
#if 1
// block device configuration
.read_size = 256,
.prog_size = 256,
.block_size = HAL_FLASH_BLOCK_4K,
.block_count = LFS_FLASH_SIZE/HAL_FLASH_BLOCK_4K, //1M
.block_cycles = 100,
.cache_size = 256,
.lookahead_size = 128,
#endif
#if 0
.read_size = 16,
.prog_size = 16,
.block_size = HAL_FLASH_BLOCK_4K,
.block_count = LFS_FLASH_SIZE/HAL_FLASH_BLOCK_4K, //100K
.cache_size = 16,
.lookahead_size = 16,
.block_cycles = 500,
#endif
};
static int lfs_port_traverse_cb(void *data, lfs_block_t block)
{
return 0;
}
void lfs_custom_init(void)
{
//create semaphroe for littlefs lock
lfs_semaphore = xQueueGenericCreate(( UBaseType_t ) 1,
semSEMAPHORE_QUEUE_ITEM_LENGTH,
queueQUEUE_TYPE_BINARY_SEMAPHORE);
xSemaphoreGive( lfs_semaphore );
int err = lfs_mount(&lfs, &cfg);
// reformat if we can't mount the filesystem
// this should only happen on the first boot
if (err)
{
lfs_format(&lfs, &cfg);
err = lfs_mount(&lfs, &cfg);
printf("lfs mount result:%d\r\n", err);
}
if(lfs_fs_traverse(&lfs, lfs_port_traverse_cb, NULL))
{
printf("lfs traverse fail \r\n");
lfs_format(&lfs, &cfg);
err = lfs_mount(&lfs, &cfg);
}
//printf("lfs fs size %d Byte %d\r\n",lfs_free_size(),lfs_fs_size(&lfs)*4096);
// lfs_larger_test();
}
void lfs_custom_format(void)
{
lfs_format(&lfs, &cfg);
}
void lfs_custom_test(void)
{
lfs_file_t file;
// read current count
uint32_t boot_count = 0;
lfs_file_open(&lfs, &file, "boot_count", LFS_O_RDWR | LFS_O_CREAT);
lfs_file_read(&lfs, &file, &boot_count, sizeof(boot_count));
printf("boot_count %d\r\n",boot_count);
// update boot count
boot_count += 1;
lfs_file_rewind(&lfs, &file);
lfs_file_write(&lfs, &file, &boot_count, sizeof(boot_count));
//printf("lfs fs size %d Byte %d\r\n",lfs_free_size(),lfs_fs_size(&lfs)*4096);
// remember the storage is not updated until the file is closed successfully
lfs_file_close(&lfs, &file);
}
void lfs_custom_test_write_file(void)
{
lfs_file_t file;
// read current count
uint8_t str[] = "abcdefj12321321asdfkjlfalsjdfksajflqwpojdkfjqpwjklsdflq;wfqwefqweqw";
lfs_file_open(&lfs, &file, "img", LFS_O_RDWR | LFS_O_CREAT);
lfs_file_write(&lfs, &file, str, sizeof(str));
//printf("lfs fs size %d Byte %d\r\n",lfs_free_size(),lfs_fs_size(&lfs)*4096);
// remember the storage is not updated until the file is closed successfully
lfs_file_close(&lfs, &file);
}
uint8_t testbuff[256];
void lfs_custom_test_read_file(void)
{
lfs_file_t file;
lfs_file_open(&lfs, &file, "img", LFS_O_RDONLY);
lfs_file_read(&lfs, &file, testbuff, 256);
printf("file: %s\r\n",testbuff);
//printf("lfs fs size %d Byte %d\r\n",lfs_free_size(),lfs_fs_size(&lfs)*4096);
// remember the storage is not updated until the file is closed successfully
lfs_file_close(&lfs, &file);
}

View File

@ -1,53 +0,0 @@
/**
*********************************************************************************************************
* @file lfs_port.h
* @brief
* @details
* @author tang zheng
* @date 2022-08-27
* @version v0.1
* *********************************************************************************************************
*/
#include "lfs.h"
#define LFS_EXT_FLASH 1
#ifdef LFS_EXT_FLASH
#include "IC_W25Qxx.h"
#define LFS_FLASH_START_ADRRESS 0xFC0000 //#define LFS_FLASH_START_ADRRESS 0xF80000
#define LFS_FLASH_SIZE 0x040000
#define HAL_FLASH_BLOCK_4K 0x1000
#else
#define FR5090_BUS_START_ADDRESS 0x08000000
#define LFS_FLASH_START_ADRRESS FR5090_BUS_START_ADDRESS + 0x40000
#define LFS_FLASH_SIZE 0x20000
#define HAL_FLASH_BLOCK_4K 0x1000
#endif
extern lfs_t lfs;
void lfs_custom_init(void);
int32_t lfs_free_size(void);
void lfs_custom_test(void);
void lfs_custom_test_write_file(void);
void lfs_custom_test_read_file(void);
void extern_flash_read(uint8_t *Buffer, uint32_t flash_Address, uint32_t Length);
void extern_flash_write(uint8_t *Buffer, uint32_t flash_Address, uint32_t Length);
void extern_flash_erase(uint32_t flash_Address);
void extern_flash_erase_ex(uint32_t flash_Address,uint32_t len);

View File

@ -1,139 +0,0 @@
/*******************************************************************************
* Size: 128 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_128px.c --bpp 4 --size 128 -r 0x30-0x39 -r 0x2d-0x2f -r 0x3a -r 0x25 -r 0x47 -r 0x4F
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_128PX
#define NUMBER_HARMONYOS_BPP4_128PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_128PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
static const uint16_t unicode_list_0[] = {
0x0, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe,
0xf, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x22,
0x2a
};
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 37, .range_length = 43, .glyph_id_start = 1,
.unicode_list = unicode_list_0, .glyph_id_ofs_list = NULL, .list_length = 17, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Pair left and right glyphs for kerning*/
static const uint8_t kern_pair_glyph_ids[] =
{
4, 2,
4, 3,
4, 4,
4, 16,
4, 17,
16, 2,
16, 3,
17, 3,
17, 4
};
/* Kerning between the respective left and right glyphs
* 4.4 format which needs to scaled with `kern_scale`*/
static const int8_t kern_pair_values[] =
{
-37, -119, -77, -31, -31, 1, 15, -36,
-30
};
/*Collect the kern pair's data in one place*/
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
{
.glyph_ids = kern_pair_glyph_ids,
.values = kern_pair_values,
.pair_cnt = 9,
.glyph_ids_size = 0
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_128px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_128px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_pairs,
.kern_scale = 39,
.cmap_num = 1,
.bpp = 4,
.kern_classes = 0,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_128px = {
#else
lv_font_t Number_HarmonyOS_bpp4_128px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 98, /*The maximum line height required by the font*/
.base_line = 2, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -10,
.underline_thickness = 6,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_128PX*/

View File

@ -1,996 +0,0 @@
/*******************************************************************************
* Size: 12 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_12px.c --bpp 4 --size 12 -r 0x20-0x7f
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_12PX
#define NUMBER_HARMONYOS_BPP4_12PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_12PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
/* U+0020 " " */
/* U+0021 "!" */
0x2f, 0x12, 0xf0, 0x1f, 0x1, 0xf0, 0x1f, 0x0,
0xf0, 0xe, 0x0, 0x20, 0x1a, 0x2, 0xe1,
/* U+0022 "\"" */
0x25, 0x16, 0x5b, 0x3d, 0x5b, 0x3d, 0x4b, 0x3c,
/* U+0023 "#" */
0x0, 0x1f, 0x2, 0xf0, 0x0, 0x4d, 0x5, 0xc0,
0x0, 0x7a, 0x8, 0xa0, 0xf, 0xff, 0xff, 0xfc,
0x3, 0xe6, 0x3f, 0x52, 0x3, 0xe0, 0x4e, 0x0,
0xdf, 0xff, 0xff, 0xf0, 0x2b, 0x93, 0xc8, 0x30,
0xd, 0x40, 0xe3, 0x0, 0xf, 0x11, 0xf0, 0x0,
/* U+0024 "$" */
0x0, 0x7, 0x10, 0x0, 0x0, 0xf2, 0x0, 0x2,
0xaf, 0xb3, 0x1, 0xec, 0xfd, 0xf1, 0x5e, 0xf,
0x2b, 0x35, 0xf1, 0xf2, 0x0, 0xc, 0xef, 0x30,
0x0, 0x7, 0xff, 0x80, 0x0, 0xf, 0x7f, 0x66,
0x70, 0xf2, 0xb8, 0x5f, 0x5f, 0x5e, 0x50, 0x8f,
0xff, 0xa0, 0x0, 0x1f, 0x30, 0x0, 0x0, 0xf2,
0x0,
/* U+0025 "%" */
0x1c, 0xf6, 0x0, 0x8c, 0x0, 0x9a, 0x4f, 0x11,
0xf4, 0x0, 0xb5, 0xd, 0x38, 0xb0, 0x0, 0xa8,
0x1f, 0x3f, 0x30, 0x0, 0x2e, 0xf8, 0x9b, 0x0,
0x0, 0x0, 0x12, 0xf2, 0x0, 0x0, 0x0, 0xa,
0xa1, 0xbe, 0x80, 0x0, 0x2f, 0x29, 0xb3, 0xe4,
0x0, 0xb9, 0x9, 0xa1, 0xd4, 0x3, 0xf1, 0x1,
0xce, 0x90,
/* U+0026 "&" */
0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xef, 0x70,
0x0, 0x3, 0xf6, 0x6f, 0x30, 0x0, 0x5f, 0x0,
0xf4, 0x0, 0x1, 0xf9, 0xcb, 0x0, 0x0, 0x1c,
0xfa, 0x4, 0x90, 0xd, 0xb8, 0xe2, 0x8b, 0x6,
0xf0, 0xa, 0xdd, 0x60, 0x7e, 0x0, 0xd, 0xf1,
0x3, 0xf7, 0x25, 0xff, 0x90, 0x6, 0xdf, 0xd5,
0x3f, 0x60,
/* U+0027 "'" */
0x25, 0x5b, 0x5b, 0x4b,
/* U+0028 "(" */
0x0, 0x3, 0x0, 0x9, 0x90, 0x3, 0xf1, 0x0,
0xa9, 0x0, 0xe, 0x50, 0x1, 0xf2, 0x0, 0x3f,
0x10, 0x2, 0xf1, 0x0, 0x1f, 0x30, 0x0, 0xd6,
0x0, 0x9, 0xb0, 0x0, 0x2f, 0x20, 0x0, 0x7b,
0x0,
/* U+0029 ")" */
0x21, 0x0, 0x5d, 0x0, 0xc, 0x70, 0x5, 0xe0,
0x1, 0xf3, 0x0, 0xe5, 0x0, 0xd7, 0x0, 0xd6,
0x0, 0xe5, 0x1, 0xf2, 0x6, 0xd0, 0xd, 0x60,
0x7b, 0x0,
/* U+002A "*" */
0x0, 0xd1, 0x6, 0xcd, 0x9a, 0x9, 0xfc, 0x6,
0xcd, 0xaa, 0x0, 0xd1, 0x10, 0x0, 0x0,
/* U+002B "+" */
0x0, 0x5, 0x0, 0x0, 0x1, 0xf0, 0x0, 0x0,
0x1f, 0x0, 0x6, 0xff, 0xff, 0xf6, 0x13, 0x4f,
0x33, 0x10, 0x1, 0xf0, 0x0, 0x0, 0x1f, 0x0,
0x0,
/* U+002C "," */
0xa, 0x21, 0xe6, 0x8, 0x43, 0x90, 0x0, 0x0,
/* U+002D "-" */
0x4f, 0xff, 0xf2, 0x2, 0x22, 0x20,
/* U+002E "." */
0x1a, 0x2, 0xe1,
/* U+002F "/" */
0x0, 0xb, 0x80, 0x1, 0xf2, 0x0, 0x5d, 0x0,
0xb, 0x80, 0x0, 0xf2, 0x0, 0x5d, 0x0, 0xa,
0x80, 0x0, 0xf3, 0x0, 0x5d, 0x0, 0xa, 0x80,
0x0,
/* U+0030 "0" */
0x2, 0xcf, 0xc1, 0x0, 0xcc, 0x5d, 0xb0, 0x2f,
0x30, 0x4f, 0x25, 0xf0, 0x0, 0xf5, 0x6f, 0x0,
0xf, 0x66, 0xf0, 0x0, 0xf6, 0x5f, 0x0, 0xf,
0x52, 0xf3, 0x4, 0xf2, 0xc, 0xc5, 0xdc, 0x0,
0x2c, 0xfc, 0x10,
/* U+0031 "1" */
0x3, 0xdb, 0x7f, 0xeb, 0xb4, 0x9b, 0x0, 0x9b,
0x0, 0x9b, 0x0, 0x9b, 0x0, 0x9b, 0x0, 0x9b,
0x0, 0x9b, 0x0, 0x9b,
/* U+0032 "2" */
0x3, 0xcf, 0xc2, 0x1, 0xea, 0x5d, 0xc0, 0x2b,
0x0, 0x5f, 0x0, 0x0, 0x6, 0xf0, 0x0, 0x0,
0xda, 0x0, 0x0, 0x8f, 0x20, 0x0, 0x5f, 0x50,
0x0, 0x2f, 0x80, 0x0, 0x1d, 0xd4, 0x44, 0x16,
0xff, 0xff, 0xf5,
/* U+0033 "3" */
0x4, 0xdf, 0xc2, 0x1, 0xf9, 0x5d, 0xc0, 0x17,
0x0, 0x6f, 0x0, 0x0, 0x1c, 0xc0, 0x0, 0x7f,
0xf3, 0x0, 0x1, 0x4c, 0xe0, 0x0, 0x0, 0x2f,
0x42, 0x90, 0x2, 0xf4, 0x2f, 0x94, 0xbe, 0x0,
0x4d, 0xfc, 0x30,
/* U+0034 "4" */
0x0, 0x9, 0xc0, 0x0, 0x1, 0xf5, 0x0, 0x0,
0x7e, 0x0, 0x0, 0xe, 0x70, 0x0, 0x5, 0xf1,
0x97, 0x0, 0xc9, 0xb, 0x90, 0x3f, 0x20, 0xb9,
0x8, 0xff, 0xff, 0xfc, 0x13, 0x33, 0xca, 0x20,
0x0, 0xb, 0x90,
/* U+0035 "5" */
0x7, 0xff, 0xfe, 0x0, 0x9b, 0x33, 0x30, 0xa,
0x90, 0x0, 0x0, 0xc7, 0x0, 0x0, 0xe, 0xef,
0xd3, 0x0, 0xe8, 0x4b, 0xe0, 0x0, 0x0, 0x2f,
0x30, 0x30, 0x2, 0xf3, 0xf, 0x94, 0xce, 0x0,
0x4d, 0xfc, 0x20,
/* U+0036 "6" */
0x0, 0x8, 0xd0, 0x0, 0x2, 0xf5, 0x0, 0x0,
0xad, 0x0, 0x0, 0x3f, 0x50, 0x0, 0xb, 0xff,
0xe5, 0x2, 0xfa, 0x49, 0xf2, 0x4f, 0x10, 0xf,
0x64, 0xf1, 0x0, 0xf6, 0xe, 0xb5, 0xaf, 0x10,
0x2c, 0xfd, 0x40,
/* U+0037 "7" */
0x5f, 0xff, 0xff, 0x41, 0x33, 0x37, 0xf1, 0x0,
0x0, 0xab, 0x0, 0x0, 0xf, 0x50, 0x0, 0x5,
0xf0, 0x0, 0x0, 0xba, 0x0, 0x0, 0x1f, 0x40,
0x0, 0x7, 0xe0, 0x0, 0x0, 0xc9, 0x0, 0x0,
0x2f, 0x40, 0x0,
/* U+0038 "8" */
0x3, 0xcf, 0xc2, 0x0, 0xeb, 0x4b, 0xd0, 0x1f,
0x30, 0x3f, 0x0, 0xe9, 0x19, 0xd0, 0x4, 0xff,
0xf4, 0x1, 0xea, 0x4a, 0xe0, 0x5f, 0x0, 0xf,
0x56, 0xf0, 0x0, 0xf5, 0x2f, 0xa4, 0xaf, 0x10,
0x4d, 0xfd, 0x40,
/* U+0039 "9" */
0x4, 0xdf, 0xc2, 0x1, 0xfa, 0x5c, 0xd0, 0x6f,
0x0, 0x2f, 0x37, 0xe0, 0x1, 0xf4, 0x3f, 0x71,
0x9f, 0x10, 0x8f, 0xff, 0xb0, 0x0, 0x16, 0xf2,
0x0, 0x0, 0xca, 0x0, 0x0, 0x5f, 0x10, 0x0,
0xd, 0x80, 0x0,
/* U+003A ":" */
0x1e, 0x30, 0xa2, 0x0, 0x0, 0x0, 0x0, 0x0,
0xa1, 0x1e, 0x30,
/* U+003B ";" */
0xd, 0x40, 0x93, 0x0, 0x0, 0x0, 0x0, 0x0,
0xa3, 0xe, 0x80, 0x75, 0x2a, 0x0, 0x0,
/* U+003C "<" */
0x0, 0x0, 0x29, 0x50, 0x3, 0xaf, 0xb2, 0x2c,
0xfa, 0x30, 0x5, 0xfc, 0x30, 0x0, 0x3, 0xaf,
0xb4, 0x0, 0x0, 0x29, 0xf5, 0x0, 0x0, 0x1,
0x20,
/* U+003D "=" */
0x6f, 0xff, 0xff, 0x61, 0x33, 0x33, 0x31, 0x0,
0x0, 0x0, 0x6, 0xff, 0xff, 0xf6, 0x13, 0x33,
0x33, 0x10,
/* U+003E ">" */
0x59, 0x20, 0x0, 0x2, 0xcf, 0xa3, 0x0, 0x0,
0x3a, 0xfb, 0x20, 0x0, 0x3c, 0xf5, 0x4, 0xbf,
0xa3, 0x6, 0xf9, 0x20, 0x0, 0x21, 0x0, 0x0,
0x0,
/* U+003F "?" */
0x1, 0xbf, 0xe5, 0x0, 0xcc, 0x5a, 0xf2, 0x6,
0x10, 0x2f, 0x30, 0x0, 0x9, 0xd0, 0x0, 0x8,
0xd1, 0x0, 0x1, 0xf2, 0x0, 0x0, 0x1f, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0x10, 0x0,
0x1, 0xe3, 0x0,
/* U+0040 "@" */
0x0, 0x4, 0xbd, 0xec, 0x60, 0x0, 0x0, 0x8e,
0x73, 0x36, 0xdb, 0x0, 0x6, 0xd1, 0x0, 0x0,
0xc, 0x80, 0xe, 0x30, 0x9f, 0xc9, 0x82, 0xe0,
0x3d, 0x6, 0xe4, 0x6f, 0x80, 0xd3, 0x5a, 0xb,
0x80, 0xb, 0x80, 0xb5, 0x6a, 0xb, 0x70, 0xa,
0x80, 0xc4, 0x4c, 0x7, 0xc1, 0x2e, 0xa1, 0xf1,
0xf, 0x20, 0xbf, 0xe5, 0xef, 0x80, 0x8, 0xb0,
0x1, 0x0, 0x1, 0x0, 0x0, 0xcc, 0x40, 0x4,
0x70, 0x0, 0x0, 0x8, 0xef, 0xfe, 0x70, 0x0,
0x0, 0x0, 0x1, 0x10, 0x0, 0x0,
/* U+0041 "A" */
0x0, 0xb, 0xc0, 0x0, 0x0, 0x0, 0xff, 0x10,
0x0, 0x0, 0x5c, 0xc7, 0x0, 0x0, 0xb, 0x77,
0xd0, 0x0, 0x1, 0xf2, 0x2f, 0x20, 0x0, 0x6d,
0x0, 0xc8, 0x0, 0xb, 0xff, 0xff, 0xd0, 0x1,
0xf5, 0x33, 0x4f, 0x30, 0x6d, 0x0, 0x0, 0xc9,
0xc, 0x80, 0x0, 0x7, 0xe0,
/* U+0042 "B" */
0xff, 0xfe, 0xa1, 0xf, 0x73, 0x5d, 0xb0, 0xf4,
0x0, 0x6f, 0xf, 0x40, 0x1c, 0xc0, 0xff, 0xff,
0xf4, 0xf, 0x62, 0x3a, 0xf2, 0xf4, 0x0, 0xf,
0x6f, 0x40, 0x0, 0xf6, 0xf7, 0x34, 0xaf, 0x2f,
0xff, 0xfc, 0x40,
/* U+0043 "C" */
0x0, 0x4c, 0xfd, 0x60, 0x5, 0xf9, 0x58, 0xf5,
0xe, 0x90, 0x0, 0x63, 0x4f, 0x20, 0x0, 0x0,
0x6f, 0x0, 0x0, 0x0, 0x6f, 0x0, 0x0, 0x0,
0x4f, 0x20, 0x0, 0x0, 0xe, 0x90, 0x0, 0x62,
0x5, 0xf9, 0x58, 0xf5, 0x0, 0x4c, 0xfd, 0x60,
/* U+0044 "D" */
0xff, 0xfe, 0x81, 0x0, 0xf7, 0x46, 0xed, 0x0,
0xf4, 0x0, 0x1e, 0x80, 0xf4, 0x0, 0x7, 0xe0,
0xf4, 0x0, 0x5, 0xf0, 0xf4, 0x0, 0x5, 0xf0,
0xf4, 0x0, 0x7, 0xe0, 0xf4, 0x0, 0x1e, 0x80,
0xf7, 0x46, 0xed, 0x0, 0xff, 0xfe, 0x91, 0x0,
/* U+0045 "E" */
0xff, 0xff, 0xf8, 0xf7, 0x44, 0x42, 0xf4, 0x0,
0x0, 0xf5, 0x0, 0x0, 0xff, 0xff, 0xf1, 0xf7,
0x33, 0x30, 0xf4, 0x0, 0x0, 0xf4, 0x0, 0x0,
0xf7, 0x44, 0x42, 0xff, 0xff, 0xfa,
/* U+0046 "F" */
0xff, 0xff, 0xf8, 0xf7, 0x44, 0x42, 0xf4, 0x0,
0x0, 0xf4, 0x0, 0x0, 0xf5, 0x0, 0x0, 0xff,
0xff, 0xf1, 0xf7, 0x33, 0x30, 0xf4, 0x0, 0x0,
0xf4, 0x0, 0x0, 0xf4, 0x0, 0x0,
/* U+0047 "G" */
0x0, 0x3c, 0xfe, 0x80, 0x4, 0xfa, 0x57, 0xf9,
0xe, 0x90, 0x0, 0x44, 0x3f, 0x20, 0x0, 0x0,
0x6f, 0x0, 0x0, 0x0, 0x6f, 0x0, 0x2f, 0xff,
0x3f, 0x20, 0x3, 0x7f, 0xe, 0xa0, 0x0, 0x5f,
0x4, 0xfb, 0x55, 0xcd, 0x0, 0x3b, 0xfe, 0xa1,
/* U+0048 "H" */
0xf4, 0x0, 0x3, 0xf0, 0xf4, 0x0, 0x3, 0xf0,
0xf4, 0x0, 0x3, 0xf0, 0xf5, 0x0, 0x4, 0xf0,
0xff, 0xff, 0xff, 0xf0, 0xf7, 0x33, 0x36, 0xf0,
0xf4, 0x0, 0x3, 0xf0, 0xf4, 0x0, 0x3, 0xf0,
0xf4, 0x0, 0x3, 0xf0, 0xf4, 0x0, 0x3, 0xf0,
/* U+0049 "I" */
0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
0xf4, 0xf4,
/* U+004A "J" */
0x0, 0x7, 0xd0, 0x0, 0x7d, 0x0, 0x7, 0xd0,
0x0, 0x7d, 0x0, 0x7, 0xd0, 0x0, 0x7d, 0x0,
0x7, 0xd2, 0x0, 0x8b, 0xda, 0x5e, 0x73, 0xdf,
0xa0,
/* U+004B "K" */
0xf4, 0x0, 0x1e, 0x90, 0xf4, 0x0, 0xcc, 0x0,
0xf4, 0xa, 0xd1, 0x0, 0xf4, 0x6f, 0x20, 0x0,
0xf8, 0xfc, 0x0, 0x0, 0xff, 0xaf, 0x60, 0x0,
0xfa, 0x9, 0xe1, 0x0, 0xf4, 0x0, 0xeb, 0x0,
0xf4, 0x0, 0x4f, 0x50, 0xf4, 0x0, 0xa, 0xe1,
/* U+004C "L" */
0xf4, 0x0, 0x0, 0xf4, 0x0, 0x0, 0xf4, 0x0,
0x0, 0xf4, 0x0, 0x0, 0xf4, 0x0, 0x0, 0xf4,
0x0, 0x0, 0xf4, 0x0, 0x0, 0xf4, 0x0, 0x0,
0xf7, 0x44, 0x42, 0xff, 0xff, 0xf8,
/* U+004D "M" */
0xf5, 0x0, 0x0, 0xd, 0x6f, 0xe0, 0x0, 0x6,
0xf6, 0xff, 0x70, 0x0, 0xef, 0x6f, 0x9f, 0x10,
0x8c, 0xd6, 0xf3, 0xc9, 0x1f, 0x3d, 0x6f, 0x33,
0xfb, 0xa0, 0xd6, 0xf3, 0xa, 0xf1, 0xd, 0x6f,
0x30, 0x14, 0x0, 0xd6, 0xf3, 0x0, 0x0, 0xd,
0x6f, 0x30, 0x0, 0x0, 0xd6,
/* U+004E "N" */
0xf6, 0x0, 0x4, 0xff, 0xe1, 0x0, 0x4f, 0xfe,
0xa0, 0x4, 0xff, 0x6f, 0x40, 0x4f, 0xf3, 0x9d,
0x4, 0xff, 0x30, 0xe8, 0x4f, 0xf3, 0x5, 0xf6,
0xff, 0x30, 0xa, 0xff, 0xf3, 0x0, 0x1f, 0xff,
0x30, 0x0, 0x6f,
/* U+004F "O" */
0x0, 0x4c, 0xfd, 0x70, 0x0, 0x5f, 0x95, 0x7f,
0x90, 0xe, 0x90, 0x0, 0x5f, 0x24, 0xf2, 0x0,
0x0, 0xe7, 0x6f, 0x0, 0x0, 0xb, 0x96, 0xf0,
0x0, 0x0, 0xb9, 0x4f, 0x20, 0x0, 0xe, 0x70,
0xe9, 0x0, 0x5, 0xf2, 0x5, 0xf9, 0x57, 0xf8,
0x0, 0x5, 0xcf, 0xd7, 0x0,
/* U+0050 "P" */
0xff, 0xfe, 0x80, 0xf, 0x73, 0x6f, 0x90, 0xf4,
0x0, 0x7e, 0xf, 0x40, 0x6, 0xf0, 0xf4, 0x3,
0xdb, 0xf, 0xff, 0xfc, 0x10, 0xf7, 0x31, 0x0,
0xf, 0x40, 0x0, 0x0, 0xf4, 0x0, 0x0, 0xf,
0x40, 0x0, 0x0,
/* U+0051 "Q" */
0x0, 0x4c, 0xfd, 0x70, 0x0, 0x5, 0xf9, 0x57,
0xf8, 0x0, 0xe, 0x90, 0x0, 0x5f, 0x20, 0x4f,
0x20, 0x0, 0xe, 0x70, 0x6f, 0x0, 0x0, 0xb,
0x90, 0x6f, 0x0, 0x0, 0xb, 0x90, 0x4f, 0x20,
0x0, 0xe, 0x70, 0xe, 0x90, 0x0, 0x5f, 0x20,
0x5, 0xf9, 0x57, 0xf9, 0x0, 0x0, 0x5c, 0xff,
0xd0, 0x0, 0x0, 0x0, 0x3, 0xeb, 0x0, 0x0,
0x0, 0x0, 0x2d, 0xc1,
/* U+0052 "R" */
0xff, 0xfe, 0x80, 0xf, 0x73, 0x6f, 0x90, 0xf4,
0x0, 0x7e, 0xf, 0x40, 0x6, 0xf0, 0xf4, 0x3,
0xdb, 0xf, 0xff, 0xfc, 0x10, 0xf7, 0x3d, 0x90,
0xf, 0x40, 0x4f, 0x40, 0xf4, 0x0, 0xad, 0xf,
0x40, 0x1, 0xe8,
/* U+0053 "S" */
0x5, 0xdf, 0xd6, 0x2, 0xf9, 0x48, 0xf4, 0x6f,
0x0, 0x6, 0x15, 0xf6, 0x0, 0x0, 0x9, 0xfe,
0x81, 0x0, 0x2, 0x8e, 0xe2, 0x0, 0x0, 0x1e,
0x98, 0x80, 0x0, 0xc9, 0x5f, 0x95, 0x7f, 0x50,
0x5d, 0xfd, 0x60,
/* U+0054 "T" */
0xef, 0xff, 0xff, 0xd3, 0x46, 0xf5, 0x43, 0x0,
0x2f, 0x20, 0x0, 0x2, 0xf2, 0x0, 0x0, 0x2f,
0x20, 0x0, 0x2, 0xf2, 0x0, 0x0, 0x2f, 0x20,
0x0, 0x2, 0xf2, 0x0, 0x0, 0x2f, 0x20, 0x0,
0x2, 0xf2, 0x0,
/* U+0055 "U" */
0x1f, 0x30, 0x0, 0x5f, 0x1f, 0x30, 0x0, 0x5f,
0x1f, 0x30, 0x0, 0x5f, 0x1f, 0x30, 0x0, 0x5f,
0x1f, 0x30, 0x0, 0x5f, 0x1f, 0x30, 0x0, 0x5f,
0xf, 0x40, 0x0, 0x6e, 0xd, 0x90, 0x0, 0xbb,
0x6, 0xf8, 0x59, 0xf4, 0x0, 0x6d, 0xfd, 0x50,
/* U+0056 "V" */
0xcb, 0x0, 0x0, 0x7d, 0x6, 0xf0, 0x0, 0xc,
0x80, 0x1f, 0x50, 0x1, 0xf3, 0x0, 0xba, 0x0,
0x6d, 0x0, 0x5, 0xf0, 0xb, 0x80, 0x0, 0xf,
0x50, 0xf3, 0x0, 0x0, 0xaa, 0x5d, 0x0, 0x0,
0x4, 0xfb, 0x80, 0x0, 0x0, 0xe, 0xf3, 0x0,
0x0, 0x0, 0x9d, 0x0, 0x0,
/* U+0057 "W" */
0xc9, 0x0, 0xb, 0x90, 0x0, 0xb8, 0x7d, 0x0,
0xf, 0xd0, 0x0, 0xf4, 0x3f, 0x10, 0x3f, 0xf2,
0x3, 0xf0, 0xe, 0x60, 0x7a, 0xd6, 0x7, 0xb0,
0xa, 0xa0, 0xb6, 0x9a, 0xb, 0x70, 0x5, 0xe0,
0xf2, 0x4f, 0xf, 0x20, 0x1, 0xf7, 0xd0, 0xf,
0x7e, 0x0, 0x0, 0xce, 0x90, 0xb, 0xea, 0x0,
0x0, 0x8f, 0x50, 0x7, 0xf5, 0x0, 0x0, 0x3f,
0x10, 0x3, 0xf1, 0x0,
/* U+0058 "X" */
0x7f, 0x20, 0x0, 0xd9, 0xd, 0xb0, 0x8, 0xe0,
0x3, 0xf5, 0x2f, 0x50, 0x0, 0x9e, 0xcb, 0x0,
0x0, 0xe, 0xf1, 0x0, 0x0, 0x1f, 0xf2, 0x0,
0x0, 0xac, 0xbc, 0x0, 0x4, 0xf2, 0x2f, 0x60,
0xe, 0x80, 0x8, 0xf1, 0x8e, 0x0, 0x0, 0xda,
/* U+0059 "Y" */
0xad, 0x0, 0x2, 0xf4, 0x2f, 0x60, 0x9, 0xc0,
0x9, 0xe0, 0x2f, 0x40, 0x1, 0xf8, 0xac, 0x0,
0x0, 0x7f, 0xf3, 0x0, 0x0, 0xe, 0xb0, 0x0,
0x0, 0xc, 0x80, 0x0, 0x0, 0xc, 0x80, 0x0,
0x0, 0xc, 0x80, 0x0, 0x0, 0xc, 0x80, 0x0,
/* U+005A "Z" */
0x5f, 0xff, 0xff, 0x81, 0x44, 0x49, 0xf2, 0x0,
0x0, 0xe8, 0x0, 0x0, 0x7e, 0x10, 0x0, 0x1f,
0x60, 0x0, 0x9, 0xd0, 0x0, 0x2, 0xf4, 0x0,
0x0, 0xbb, 0x0, 0x0, 0x4f, 0x74, 0x44, 0x3b,
0xff, 0xff, 0xfb,
/* U+005B "[" */
0x0, 0x0, 0xff, 0xf0, 0xf6, 0x30, 0xf3, 0x0,
0xf3, 0x0, 0xf3, 0x0, 0xf3, 0x0, 0xf3, 0x0,
0xf3, 0x0, 0xf3, 0x0, 0xf3, 0x0, 0xf4, 0x0,
0xff, 0xf0, 0x33, 0x30,
/* U+005C "\\" */
0xa8, 0x0, 0x5, 0xd0, 0x0, 0xf, 0x30, 0x0,
0xa8, 0x0, 0x5, 0xd0, 0x0, 0xf, 0x20, 0x0,
0xb8, 0x0, 0x5, 0xd0, 0x0, 0x1f, 0x20, 0x0,
0xb8,
/* U+005D "]" */
0x0, 0x0, 0xcf, 0xf4, 0x23, 0xf4, 0x0, 0xf4,
0x0, 0xf4, 0x0, 0xf4, 0x0, 0xf4, 0x0, 0xf4,
0x0, 0xf4, 0x0, 0xf4, 0x0, 0xf4, 0x0, 0xf4,
0xcf, 0xf4, 0x23, 0x30,
/* U+005E "^" */
0x0, 0xdb, 0x0, 0x3, 0xff, 0x10, 0xa, 0x9a,
0x80, 0x1f, 0x24, 0xe0, 0x7c, 0x0, 0xd5,
/* U+005F "_" */
0xff, 0xff, 0xf3, 0x22, 0x22, 0x20,
/* U+0060 "`" */
0xe, 0x40, 0x4, 0xc0,
/* U+0061 "a" */
0x4, 0xdf, 0xa1, 0xe, 0x73, 0xd9, 0x1, 0x0,
0x7c, 0x6, 0xcd, 0xdd, 0x4f, 0x42, 0x8d, 0x5e,
0x10, 0xbd, 0x9, 0xed, 0x9d,
/* U+0062 "b" */
0x2f, 0x10, 0x0, 0x2, 0xf1, 0x0, 0x0, 0x2f,
0x10, 0x0, 0x2, 0xf6, 0xee, 0x70, 0x2f, 0xd5,
0x7f, 0x52, 0xf4, 0x0, 0x9b, 0x2f, 0x20, 0x7,
0xd2, 0xf4, 0x0, 0x9b, 0x2f, 0xd4, 0x6f, 0x52,
0xf5, 0xee, 0x80,
/* U+0063 "c" */
0x2, 0xcf, 0xc2, 0xe, 0xa4, 0xa8, 0x5f, 0x0,
0x0, 0x7d, 0x0, 0x0, 0x5f, 0x0, 0x0, 0xe,
0xa4, 0xa8, 0x3, 0xcf, 0xc2,
/* U+0064 "d" */
0x0, 0x0, 0xb, 0x70, 0x0, 0x0, 0xb7, 0x0,
0x0, 0xb, 0x70, 0x3d, 0xf9, 0xb7, 0x1e, 0xa4,
0xaf, 0x75, 0xf0, 0x0, 0xe7, 0x7d, 0x0, 0xc,
0x75, 0xe0, 0x0, 0xe7, 0x1e, 0x81, 0x8f, 0x70,
0x3d, 0xfa, 0xa7,
/* U+0065 "e" */
0x3, 0xcf, 0xc2, 0x0, 0xea, 0x3b, 0xc0, 0x5f,
0x0, 0x2f, 0x27, 0xfe, 0xee, 0xf3, 0x5e, 0x11,
0x11, 0x0, 0xe9, 0x37, 0xa0, 0x3, 0xcf, 0xd4,
0x0,
/* U+0066 "f" */
0x0, 0x0, 0x0, 0x1c, 0xf7, 0x9, 0xc4, 0x20,
0xb8, 0x0, 0xdf, 0xff, 0x22, 0xc9, 0x20, 0xb,
0x80, 0x0, 0xb8, 0x0, 0xb, 0x80, 0x0, 0xb8,
0x0, 0xb, 0x80, 0x0,
/* U+0067 "g" */
0x3, 0xdf, 0x9a, 0x71, 0xea, 0x4a, 0xf7, 0x5f,
0x0, 0xe, 0x77, 0xd0, 0x0, 0xc7, 0x5e, 0x0,
0xe, 0x71, 0xea, 0x49, 0xf7, 0x3, 0xdf, 0x9c,
0x70, 0x10, 0x0, 0xe5, 0x1f, 0x74, 0x9f, 0x10,
0x5d, 0xfc, 0x30,
/* U+0068 "h" */
0x2f, 0x10, 0x0, 0x2, 0xf1, 0x0, 0x0, 0x2f,
0x10, 0x0, 0x2, 0xf7, 0xee, 0x50, 0x2f, 0xd5,
0x9f, 0x12, 0xf3, 0x0, 0xf3, 0x2f, 0x10, 0xf,
0x42, 0xf1, 0x0, 0xf4, 0x2f, 0x10, 0xf, 0x42,
0xf1, 0x0, 0xf4,
/* U+0069 "i" */
0x2e, 0x21, 0xa1, 0x0, 0x2, 0xf1, 0x2f, 0x12,
0xf1, 0x2f, 0x12, 0xf1, 0x2f, 0x12, 0xf1,
/* U+006A "j" */
0x0, 0x2e, 0x10, 0x1, 0xa0, 0x0, 0x0, 0x0,
0x2, 0xf1, 0x0, 0x2f, 0x10, 0x2, 0xf1, 0x0,
0x2f, 0x10, 0x2, 0xf1, 0x0, 0x2f, 0x10, 0x2,
0xf1, 0x0, 0x2f, 0x10, 0x59, 0xe0, 0x4e, 0xe4,
0x0,
/* U+006B "k" */
0x2f, 0x10, 0x0, 0x2, 0xf1, 0x0, 0x0, 0x2f,
0x10, 0x0, 0x2, 0xf1, 0x9, 0xd0, 0x2f, 0x15,
0xe2, 0x2, 0xf4, 0xf4, 0x0, 0x2f, 0xef, 0x50,
0x2, 0xfa, 0x8e, 0x10, 0x2f, 0x20, 0xd9, 0x2,
0xf1, 0x4, 0xf3,
/* U+006C "l" */
0x2f, 0x12, 0xf1, 0x2f, 0x12, 0xf1, 0x2f, 0x12,
0xf1, 0x2f, 0x12, 0xf1, 0x2f, 0x12, 0xf1,
/* U+006D "m" */
0x2f, 0x7f, 0xd3, 0xaf, 0xa0, 0x2f, 0xa2, 0xcf,
0x63, 0xf5, 0x2f, 0x20, 0x7e, 0x0, 0xb8, 0x2f,
0x10, 0x6d, 0x0, 0xa8, 0x2f, 0x10, 0x6d, 0x0,
0xa8, 0x2f, 0x10, 0x6d, 0x0, 0xa8, 0x2f, 0x10,
0x6d, 0x0, 0xa8,
/* U+006E "n" */
0x2f, 0x6e, 0xe5, 0x2, 0xfb, 0x27, 0xf1, 0x2f,
0x30, 0xf, 0x32, 0xf1, 0x0, 0xf4, 0x2f, 0x10,
0xf, 0x42, 0xf1, 0x0, 0xf4, 0x2f, 0x10, 0xf,
0x40,
/* U+006F "o" */
0x2, 0xbf, 0xc3, 0x0, 0xeb, 0x49, 0xf1, 0x5f,
0x0, 0xe, 0x77, 0xd0, 0x0, 0xb9, 0x5f, 0x0,
0xd, 0x70, 0xea, 0x49, 0xf1, 0x2, 0xcf, 0xc3,
0x0,
/* U+0070 "p" */
0x2f, 0x6e, 0xe7, 0x2, 0xfc, 0x24, 0xf5, 0x2f,
0x40, 0x9, 0xb2, 0xf2, 0x0, 0x7d, 0x2f, 0x40,
0x9, 0xb2, 0xfd, 0x56, 0xf5, 0x2f, 0x6e, 0xe8,
0x2, 0xf1, 0x0, 0x0, 0x2f, 0x10, 0x0, 0x2,
0xf1, 0x0, 0x0,
/* U+0071 "q" */
0x3, 0xdf, 0x9a, 0x71, 0xea, 0x4a, 0xf7, 0x5f,
0x0, 0xe, 0x77, 0xd0, 0x0, 0xc7, 0x5f, 0x0,
0xe, 0x71, 0xea, 0x4a, 0xf7, 0x3, 0xdf, 0x9c,
0x70, 0x0, 0x0, 0xb7, 0x0, 0x0, 0xb, 0x70,
0x0, 0x0, 0xb7,
/* U+0072 "r" */
0x2f, 0x7f, 0x82, 0xfb, 0x21, 0x2f, 0x30, 0x2,
0xf1, 0x0, 0x2f, 0x10, 0x2, 0xf1, 0x0, 0x2f,
0x10, 0x0,
/* U+0073 "s" */
0x8, 0xee, 0x60, 0x5e, 0x46, 0xd0, 0x6f, 0x40,
0x0, 0x8, 0xee, 0x60, 0x0, 0x6, 0xf1, 0x8b,
0x36, 0xf1, 0x1b, 0xfe, 0x60,
/* U+0074 "t" */
0xd, 0x60, 0x0, 0xd6, 0x0, 0xef, 0xff, 0x32,
0xd7, 0x20, 0xd, 0x60, 0x0, 0xd6, 0x0, 0xd,
0x60, 0x0, 0xbb, 0x41, 0x3, 0xdf, 0x50,
/* U+0075 "u" */
0x3f, 0x0, 0x1f, 0x33, 0xf0, 0x1, 0xf3, 0x3f,
0x0, 0x1f, 0x33, 0xf0, 0x1, 0xf3, 0x2f, 0x10,
0x2f, 0x30, 0xf8, 0x2b, 0xf3, 0x5, 0xee, 0x7f,
0x30,
/* U+0076 "v" */
0xba, 0x0, 0x2f, 0x15, 0xf0, 0x7, 0xb0, 0xe,
0x50, 0xd5, 0x0, 0x9b, 0x2f, 0x0, 0x3, 0xf8,
0xa0, 0x0, 0xd, 0xf4, 0x0, 0x0, 0x7e, 0x0,
0x0,
/* U+0077 "w" */
0xb8, 0x0, 0xd7, 0x0, 0xe4, 0x6d, 0x1, 0xfc,
0x2, 0xe0, 0x1f, 0x26, 0xcf, 0x17, 0xa0, 0xc,
0x7a, 0x5c, 0x5c, 0x40, 0x6, 0xce, 0x17, 0xbf,
0x0, 0x1, 0xfb, 0x2, 0xfa, 0x0, 0x0, 0xc6,
0x0, 0xc5, 0x0,
/* U+0078 "x" */
0x9d, 0x0, 0xab, 0x0, 0xe8, 0x5f, 0x10, 0x4,
0xfe, 0x60, 0x0, 0xc, 0xe0, 0x0, 0x4, 0xfe,
0x60, 0x0, 0xd7, 0x6f, 0x10, 0x9d, 0x0, 0xbb,
0x0,
/* U+0079 "y" */
0xca, 0x0, 0x1f, 0x25, 0xf0, 0x7, 0xc0, 0xf,
0x50, 0xc6, 0x0, 0x9b, 0x1f, 0x10, 0x3, 0xf8,
0xb0, 0x0, 0xd, 0xf5, 0x0, 0x0, 0x7f, 0x0,
0x0, 0x9, 0x90, 0x0, 0x45, 0xf3, 0x0, 0xb,
0xf8, 0x0, 0x0,
/* U+007A "z" */
0x6f, 0xff, 0xf2, 0x1, 0x1b, 0xb0, 0x0, 0x4f,
0x20, 0x0, 0xe7, 0x0, 0x8, 0xd0, 0x0, 0x2f,
0x62, 0x20, 0x9f, 0xff, 0xf5,
/* U+007B "{" */
0x0, 0x0, 0x0, 0x8, 0xf5, 0x2, 0xf7, 0x10,
0x3f, 0x0, 0x4, 0xf0, 0x0, 0x4f, 0x0, 0x1a,
0xd0, 0x9, 0xf4, 0x0, 0x3b, 0xc0, 0x0, 0x4f,
0x0, 0x4, 0xf0, 0x0, 0x3f, 0x30, 0x0, 0xcf,
0x50, 0x0, 0x21,
/* U+007C "|" */
0x12, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c,
0x6c, 0x6c, 0x6c, 0x6c, 0x6c,
/* U+007D "}" */
0x0, 0x0, 0xb, 0xd3, 0x0, 0x2c, 0xb0, 0x0,
0x7d, 0x0, 0x6, 0xd0, 0x0, 0x6e, 0x0, 0x3,
0xf5, 0x0, 0xb, 0xf2, 0x3, 0xf7, 0x0, 0x6e,
0x0, 0x6, 0xd0, 0x0, 0x9c, 0x0, 0xcf, 0x60,
0x2, 0x10, 0x0,
/* U+007E "~" */
0x0, 0x0, 0x0, 0x0, 0xaf, 0x91, 0xe3, 0x3e,
0x1b, 0xfc, 0x1, 0x20, 0x2, 0x0
};
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
{.bitmap_index = 0, .adv_w = 52, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 0, .adv_w = 47, .box_w = 3, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 15, .adv_w = 72, .box_w = 4, .box_h = 4, .ofs_x = 0, .ofs_y = 7},
{.bitmap_index = 23, .adv_w = 127, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 63, .adv_w = 111, .box_w = 7, .box_h = 14, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 112, .adv_w = 153, .box_w = 10, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 162, .adv_w = 138, .box_w = 9, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 212, .adv_w = 39, .box_w = 2, .box_h = 4, .ofs_x = 0, .ofs_y = 7},
{.bitmap_index = 216, .adv_w = 69, .box_w = 5, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 249, .adv_w = 69, .box_w = 4, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 275, .adv_w = 84, .box_w = 5, .box_h = 6, .ofs_x = 0, .ofs_y = 4},
{.bitmap_index = 290, .adv_w = 111, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 2},
{.bitmap_index = 315, .adv_w = 49, .box_w = 3, .box_h = 5, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 323, .adv_w = 94, .box_w = 6, .box_h = 2, .ofs_x = 0, .ofs_y = 3},
{.bitmap_index = 329, .adv_w = 46, .box_w = 3, .box_h = 2, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 332, .adv_w = 77, .box_w = 5, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 357, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 392, .adv_w = 111, .box_w = 4, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 412, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 447, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 482, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 517, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 552, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 587, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 622, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 657, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 692, .adv_w = 51, .box_w = 3, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 703, .adv_w = 53, .box_w = 3, .box_h = 10, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 718, .adv_w = 111, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 743, .adv_w = 111, .box_w = 7, .box_h = 5, .ofs_x = 0, .ofs_y = 2},
{.bitmap_index = 761, .adv_w = 111, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 1},
{.bitmap_index = 786, .adv_w = 86, .box_w = 7, .box_h = 10, .ofs_x = -1, .ofs_y = 0},
{.bitmap_index = 821, .adv_w = 188, .box_w = 12, .box_h = 13, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 899, .adv_w = 131, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 944, .adv_w = 127, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 979, .adv_w = 127, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1019, .adv_w = 139, .box_w = 8, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1059, .adv_w = 115, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1089, .adv_w = 109, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1119, .adv_w = 136, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1159, .adv_w = 145, .box_w = 8, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1199, .adv_w = 53, .box_w = 2, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1209, .adv_w = 92, .box_w = 5, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1234, .adv_w = 134, .box_w = 8, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1274, .adv_w = 110, .box_w = 6, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1304, .adv_w = 167, .box_w = 9, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1349, .adv_w = 143, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1384, .adv_w = 148, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1429, .adv_w = 117, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1464, .adv_w = 148, .box_w = 10, .box_h = 12, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 1524, .adv_w = 126, .box_w = 7, .box_h = 10, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 1559, .adv_w = 111, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1594, .adv_w = 112, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1629, .adv_w = 142, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1669, .adv_w = 130, .box_w = 9, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1714, .adv_w = 188, .box_w = 12, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1774, .adv_w = 130, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1814, .adv_w = 122, .box_w = 8, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1854, .adv_w = 112, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1889, .adv_w = 68, .box_w = 4, .box_h = 14, .ofs_x = 1, .ofs_y = -2},
{.bitmap_index = 1917, .adv_w = 77, .box_w = 5, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 1942, .adv_w = 68, .box_w = 4, .box_h = 14, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 1970, .adv_w = 94, .box_w = 6, .box_h = 5, .ofs_x = 0, .ofs_y = 5},
{.bitmap_index = 1985, .adv_w = 84, .box_w = 6, .box_h = 2, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 1991, .adv_w = 61, .box_w = 4, .box_h = 2, .ofs_x = 0, .ofs_y = 8},
{.bitmap_index = 1995, .adv_w = 106, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2016, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2051, .adv_w = 95, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2072, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2107, .adv_w = 106, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2132, .adv_w = 69, .box_w = 5, .box_h = 11, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2160, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 2195, .adv_w = 113, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2230, .adv_w = 48, .box_w = 3, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2245, .adv_w = 48, .box_w = 5, .box_h = 13, .ofs_x = -2, .ofs_y = -3},
{.bitmap_index = 2278, .adv_w = 104, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2313, .adv_w = 48, .box_w = 3, .box_h = 10, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2328, .adv_w = 165, .box_w = 10, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2363, .adv_w = 113, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2388, .adv_w = 114, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2413, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 2448, .adv_w = 118, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 2483, .adv_w = 75, .box_w = 5, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2501, .adv_w = 88, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2522, .adv_w = 74, .box_w = 5, .box_h = 9, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2545, .adv_w = 113, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2570, .adv_w = 102, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2595, .adv_w = 152, .box_w = 10, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2630, .adv_w = 98, .box_w = 7, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2655, .adv_w = 103, .box_w = 7, .box_h = 10, .ofs_x = 0, .ofs_y = -3},
{.bitmap_index = 2690, .adv_w = 92, .box_w = 6, .box_h = 7, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 2711, .adv_w = 74, .box_w = 5, .box_h = 14, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 2746, .adv_w = 38, .box_w = 2, .box_h = 13, .ofs_x = 0, .ofs_y = -1},
{.bitmap_index = 2759, .adv_w = 74, .box_w = 5, .box_h = 14, .ofs_x = 0, .ofs_y = -2},
{.bitmap_index = 2794, .adv_w = 111, .box_w = 7, .box_h = 4, .ofs_x = 0, .ofs_y = 3}
};
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 32, .range_length = 95, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Map glyph_ids to kern left classes*/
static const uint8_t kern_left_class_mapping[] =
{
0, 0, 0, 1, 0, 0, 0, 0,
1, 2, 3, 0, 4, 0, 4, 0,
5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4,
6, 7, 8, 9, 10, 7, 11, 12,
13, 14, 14, 15, 16, 17, 14, 14,
7, 18, 0, 19, 20, 21, 15, 5,
22, 23, 24, 25, 2, 8, 3, 0,
0, 0, 26, 27, 28, 29, 30, 31,
32, 26, 0, 33, 34, 29, 26, 26,
27, 27, 0, 35, 36, 37, 32, 38,
38, 39, 38, 40, 2, 0, 3, 4
};
/*Map glyph_ids to kern right classes*/
static const uint8_t kern_right_class_mapping[] =
{
0, 1, 0, 2, 0, 0, 0, 0,
2, 0, 3, 0, 4, 5, 4, 5,
6, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0,
7, 8, 6, 9, 8, 9, 9, 9,
8, 9, 9, 10, 9, 9, 9, 9,
8, 9, 8, 9, 11, 12, 13, 14,
15, 16, 17, 18, 0, 14, 3, 0,
5, 0, 19, 20, 21, 21, 21, 22,
21, 20, 0, 23, 20, 20, 24, 24,
21, 0, 21, 24, 25, 26, 27, 28,
28, 29, 30, 31, 0, 0, 3, 4
};
/*Kern values between classes*/
static const int8_t kern_class_values[] =
{
0, 0, 0, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 4, 0, 4, 4,
2, 0, 3, 0, 0, 13, 0, 0,
3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -10, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -8, 3, 4, -8,
-27, -18, 4, -7, 0, -23, -2, 4,
0, 0, 0, 0, 0, 0, -15, 0,
-14, -5, 0, -9, -11, -1, -9, -9,
-11, -9, -10, 0, 0, 0, -6, -19,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -4, 0, 0, -8, -7,
0, 0, 0, -7, 0, -6, 0, -7,
-4, -7, -11, -4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, -8, -22, 0, -12, 5, 0, -13,
-7, 0, 0, 0, -16, -3, -18, -13,
0, -21, 4, 0, 0, -2, 0, 0,
0, 0, 0, 0, -8, 0, -8, 0,
0, -2, 0, 0, 0, -3, 0, 0,
0, 3, 0, -7, 0, -9, -3, 0,
-11, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
2, 0, -6, 4, 0, 6, -3, 0,
0, 0, 1, 0, -1, 0, 0, -1,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -4, 0, -4, 0, 0, 0,
0, 0, 2, 0, 2, -2, 0, 2,
0, 0, 0, -2, 0, 0, -2, 0,
-2, 0, -2, -3, 0, 0, -2, -2,
-2, -4, -2, -4, 0, -2, 5, 0,
1, -25, -11, 8, -1, 0, -27, 0,
4, 0, 0, 0, 0, 0, 0, -8,
0, -5, -2, 0, -3, 0, -2, 0,
-4, -7, -4, -5, 0, 0, 0, 0,
3, 0, 2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -6, -3,
0, 0, 0, -6, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, -8, 0, 0, -21, 3, 0, -1,
-11, -3, 0, -3, 0, -5, 0, 0,
0, 0, 0, -6, 0, -7, -8, 0,
-3, -3, -8, -8, -13, -7, -13, 0,
-10, -20, 0, -17, 5, 0, -14, -9,
0, 3, -2, -25, -8, -28, -21, 0,
-34, 0, -1, 0, -4, -4, 0, 0,
0, -5, -5, -18, 0, -18, 0, -2,
2, 0, 2, -28, -16, 3, 0, 0,
-31, 0, 0, 0, -1, -1, -5, 0,
-6, -6, 0, -6, 0, 0, 0, 0,
0, 0, 2, 0, 2, 0, 0, -2,
0, -2, 7, 0, -1, -2, 0, 0,
1, -2, -2, -5, -3, 0, -9, 0,
0, 0, -2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 2, 0, 0, 0, 4,
0, 0, -3, 0, 0, -4, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -6, 6, 0, -15,
-22, -16, 7, -6, 0, -27, 0, 4,
0, 4, 4, 0, 0, 0, -23, 0,
-21, -9, 0, -18, -21, -6, -17, -20,
-21, -20, -17, -2, 3, 0, -5, -15,
-13, 0, -4, 0, -14, 0, 4, 0,
0, 0, 0, 0, 0, -15, 0, -12,
-3, 0, -8, -9, 0, -7, -4, -6,
-4, -7, 0, 0, 4, -18, 2, 0,
2, -7, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -5, 0, -7, 0,
0, -3, -3, -6, -6, -12, 0, -12,
0, -6, 3, 4, -14, -26, -21, 2,
-11, 0, -26, -5, 0, 0, 0, 0,
0, 0, 0, -22, 0, -21, -10, 0,
-16, -18, -7, -15, -14, -13, -14, -15,
0, 0, 2, -9, 4, 0, 2, -5,
0, 0, -2, 0, 0, 0, 0, 0,
0, 0, -1, 0, -3, 0, 0, 0,
0, 0, 0, -6, 0, -6, 0, 0,
-8, 0, 0, 0, 0, -6, 0, 0,
0, 0, -17, 0, -14, -13, -2, -19,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -2, 0, -2, 0, 0, -10,
0, -2, -6, 0, -8, 0, 0, 0,
0, -21, 0, -14, -12, -7, -21, 0,
-2, 0, 0, -2, 0, 0, 0, -1,
0, -4, -5, -4, -4, 0, 1, 0,
3, 5, 0, -2, 0, 0, 0, 0,
-15, 0, -10, -7, 3, -15, 0, 0,
0, -1, 2, 0, 0, 0, 4, 0,
0, 1, 0, 3, 0, 0, 3, 0,
0, 0, 2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, 0, 3, -1,
0, -5, 0, 0, 0, 0, -14, 0,
-12, -9, -3, -18, 0, 0, 0, 0,
0, 0, 0, 2, 0, 0, 0, -1,
0, 0, 0, 9, 0, -1, -15, 0,
9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -5, 0, -5, 0,
0, 0, 0, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -5,
0, 0, 0, 0, -18, 0, -9, -8,
0, -16, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0, 0, -4,
0, 0, -5, 5, 0, -9, 0, 0,
0, 0, -18, 0, -12, -11, 0, -16,
0, -6, 0, -4, 0, 0, 0, -2,
0, -2, 0, 0, 0, 0, 0, 5,
0, 2, -21, -9, -6, 0, 0, -23,
0, 0, 0, -8, 0, -10, -14, 0,
-8, 0, -6, 0, 0, 0, -1, 6,
0, 0, 0, 0, 0, 0, -6, 0,
0, 0, 0, -6, 0, 0, 0, 0,
-19, 0, -14, -10, -1, -20, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0,
-2, 0, -2, 2, 0, -1, 2, 0,
5, 0, -5, 0, 0, 0, 0, -13,
0, -9, 0, 0, -13, 0, 0, 0,
-2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -17,
-8, -5, 0, 0, -15, 0, -20, 0,
-9, -4, -12, -14, 0, -4, 0, -4,
0, 0, 0, -2, 0, 0, 0, 0,
0, 0, 0, 0, 0, -4, 2, 0,
-8, 0, 0, 0, 0, -21, 0, -11,
-6, 0, -13, 0, -3, 0, -5, 0,
0, 0, 0, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, -6,
0, 0, 0, 0, -19, 0, -11, -6,
0, -14, 0, -3, 0, -4, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
/*Collect the kern class' data in one place*/
static const lv_font_fmt_txt_kern_classes_t kern_classes =
{
.class_pair_values = kern_class_values,
.left_class_mapping = kern_left_class_mapping,
.right_class_mapping = kern_right_class_mapping,
.left_class_cnt = 40,
.right_class_cnt = 31,
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = glyph_bitmap,
.glyph_dsc = glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_classes,
.kern_scale = 16,
.cmap_num = 1,
.bpp = 4,
.kern_classes = 1,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_12px = {
#else
lv_font_t Number_HarmonyOS_bpp4_12px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 15, /*The maximum line height required by the font*/
.base_line = 3, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -1,
.underline_thickness = 1,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_12PX*/

View File

@ -1,309 +0,0 @@
/*******************************************************************************
* Size: 12 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_12px.c --bpp 4 --size 12 -r 0x20-0x7f
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_12PX
#define NUMBER_HARMONYOS_BPP4_12PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_12PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 32, .range_length = 95, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Map glyph_ids to kern left classes*/
static const uint8_t kern_left_class_mapping[] =
{
0, 0, 0, 1, 0, 0, 0, 0,
1, 2, 3, 0, 4, 0, 4, 0,
5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4,
6, 7, 8, 9, 10, 7, 11, 12,
13, 14, 14, 15, 16, 17, 14, 14,
7, 18, 0, 19, 20, 21, 15, 5,
22, 23, 24, 25, 2, 8, 3, 0,
0, 0, 26, 27, 28, 29, 30, 31,
32, 26, 0, 33, 34, 29, 26, 26,
27, 27, 0, 35, 36, 37, 32, 38,
38, 39, 38, 40, 2, 0, 3, 4
};
/*Map glyph_ids to kern right classes*/
static const uint8_t kern_right_class_mapping[] =
{
0, 1, 0, 2, 0, 0, 0, 0,
2, 0, 3, 0, 4, 5, 4, 5,
6, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0,
7, 8, 6, 9, 8, 9, 9, 9,
8, 9, 9, 10, 9, 9, 9, 9,
8, 9, 8, 9, 11, 12, 13, 14,
15, 16, 17, 18, 0, 14, 3, 0,
5, 0, 19, 20, 21, 21, 21, 22,
21, 20, 0, 23, 20, 20, 24, 24,
21, 0, 21, 24, 25, 26, 27, 28,
28, 29, 30, 31, 0, 0, 3, 4
};
/*Kern values between classes*/
static const int8_t kern_class_values[] =
{
0, 0, 0, 0, 0, 0, 3, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 4, 0, 4, 4,
2, 0, 3, 0, 0, 13, 0, 0,
3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -10, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -8, 3, 4, -8,
-27, -18, 4, -7, 0, -23, -2, 4,
0, 0, 0, 0, 0, 0, -15, 0,
-14, -5, 0, -9, -11, -1, -9, -9,
-11, -9, -10, 0, 0, 0, -6, -19,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -4, 0, 0, -8, -7,
0, 0, 0, -7, 0, -6, 0, -7,
-4, -7, -11, -4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, -8, -22, 0, -12, 5, 0, -13,
-7, 0, 0, 0, -16, -3, -18, -13,
0, -21, 4, 0, 0, -2, 0, 0,
0, 0, 0, 0, -8, 0, -8, 0,
0, -2, 0, 0, 0, -3, 0, 0,
0, 3, 0, -7, 0, -9, -3, 0,
-11, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
2, 0, -6, 4, 0, 6, -3, 0,
0, 0, 1, 0, -1, 0, 0, -1,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -4, 0, -4, 0, 0, 0,
0, 0, 2, 0, 2, -2, 0, 2,
0, 0, 0, -2, 0, 0, -2, 0,
-2, 0, -2, -3, 0, 0, -2, -2,
-2, -4, -2, -4, 0, -2, 5, 0,
1, -25, -11, 8, -1, 0, -27, 0,
4, 0, 0, 0, 0, 0, 0, -8,
0, -5, -2, 0, -3, 0, -2, 0,
-4, -7, -4, -5, 0, 0, 0, 0,
3, 0, 2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -6, -3,
0, 0, 0, -6, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, -8, 0, 0, -21, 3, 0, -1,
-11, -3, 0, -3, 0, -5, 0, 0,
0, 0, 0, -6, 0, -7, -8, 0,
-3, -3, -8, -8, -13, -7, -13, 0,
-10, -20, 0, -17, 5, 0, -14, -9,
0, 3, -2, -25, -8, -28, -21, 0,
-34, 0, -1, 0, -4, -4, 0, 0,
0, -5, -5, -18, 0, -18, 0, -2,
2, 0, 2, -28, -16, 3, 0, 0,
-31, 0, 0, 0, -1, -1, -5, 0,
-6, -6, 0, -6, 0, 0, 0, 0,
0, 0, 2, 0, 2, 0, 0, -2,
0, -2, 7, 0, -1, -2, 0, 0,
1, -2, -2, -5, -3, 0, -9, 0,
0, 0, -2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 2, 0, 0, 0, 4,
0, 0, -3, 0, 0, -4, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -6, 6, 0, -15,
-22, -16, 7, -6, 0, -27, 0, 4,
0, 4, 4, 0, 0, 0, -23, 0,
-21, -9, 0, -18, -21, -6, -17, -20,
-21, -20, -17, -2, 3, 0, -5, -15,
-13, 0, -4, 0, -14, 0, 4, 0,
0, 0, 0, 0, 0, -15, 0, -12,
-3, 0, -8, -9, 0, -7, -4, -6,
-4, -7, 0, 0, 4, -18, 2, 0,
2, -7, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -5, 0, -7, 0,
0, -3, -3, -6, -6, -12, 0, -12,
0, -6, 3, 4, -14, -26, -21, 2,
-11, 0, -26, -5, 0, 0, 0, 0,
0, 0, 0, -22, 0, -21, -10, 0,
-16, -18, -7, -15, -14, -13, -14, -15,
0, 0, 2, -9, 4, 0, 2, -5,
0, 0, -2, 0, 0, 0, 0, 0,
0, 0, -1, 0, -3, 0, 0, 0,
0, 0, 0, -6, 0, -6, 0, 0,
-8, 0, 0, 0, 0, -6, 0, 0,
0, 0, -17, 0, -14, -13, -2, -19,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -2, 0, -2, 0, 0, -10,
0, -2, -6, 0, -8, 0, 0, 0,
0, -21, 0, -14, -12, -7, -21, 0,
-2, 0, 0, -2, 0, 0, 0, -1,
0, -4, -5, -4, -4, 0, 1, 0,
3, 5, 0, -2, 0, 0, 0, 0,
-15, 0, -10, -7, 3, -15, 0, 0,
0, -1, 2, 0, 0, 0, 4, 0,
0, 1, 0, 3, 0, 0, 3, 0,
0, 0, 2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, 0, 3, -1,
0, -5, 0, 0, 0, 0, -14, 0,
-12, -9, -3, -18, 0, 0, 0, 0,
0, 0, 0, 2, 0, 0, 0, -1,
0, 0, 0, 9, 0, -1, -15, 0,
9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -5, 0, -5, 0,
0, 0, 0, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -5,
0, 0, 0, 0, -18, 0, -9, -8,
0, -16, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 8, 0,
0, 0, 0, 0, 0, 0, 0, -4,
0, 0, -5, 5, 0, -9, 0, 0,
0, 0, -18, 0, -12, -11, 0, -16,
0, -6, 0, -4, 0, 0, 0, -2,
0, -2, 0, 0, 0, 0, 0, 5,
0, 2, -21, -9, -6, 0, 0, -23,
0, 0, 0, -8, 0, -10, -14, 0,
-8, 0, -6, 0, 0, 0, -1, 6,
0, 0, 0, 0, 0, 0, -6, 0,
0, 0, 0, -6, 0, 0, 0, 0,
-19, 0, -14, -10, -1, -20, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0,
-2, 0, -2, 2, 0, -1, 2, 0,
5, 0, -5, 0, 0, 0, 0, -13,
0, -9, 0, 0, -13, 0, 0, 0,
-2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -17,
-8, -5, 0, 0, -15, 0, -20, 0,
-9, -4, -12, -14, 0, -4, 0, -4,
0, 0, 0, -2, 0, 0, 0, 0,
0, 0, 0, 0, 0, -4, 2, 0,
-8, 0, 0, 0, 0, -21, 0, -11,
-6, 0, -13, 0, -3, 0, -5, 0,
0, 0, 0, 2, 0, 0, 0, 0,
0, 0, 0, 0, 0, 2, 0, -6,
0, 0, 0, 0, -19, 0, -11, -6,
0, -14, 0, -3, 0, -4, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
/*Collect the kern class' data in one place*/
static const lv_font_fmt_txt_kern_classes_t kern_classes =
{
.class_pair_values = kern_class_values,
.left_class_mapping = kern_left_class_mapping,
.right_class_mapping = kern_right_class_mapping,
.left_class_cnt = 40,
.right_class_cnt = 31,
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_12px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_12px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_classes,
.kern_scale = 16,
.cmap_num = 1,
.bpp = 4,
.kern_classes = 1,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_12px = {
#else
lv_font_t Number_HarmonyOS_bpp4_12px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 15, /*The maximum line height required by the font*/
.base_line = 3, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -1,
.underline_thickness = 1,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_12PX*/

View File

@ -1,309 +0,0 @@
/*******************************************************************************
* Size: 16 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_16px.c --bpp 4 --size 16 -r 0x20-0x7f
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_16PX
#define NUMBER_HARMONYOS_BPP4_16PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_16PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 32, .range_length = 95, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Map glyph_ids to kern left classes*/
static const uint8_t kern_left_class_mapping[] =
{
0, 0, 0, 1, 0, 0, 0, 0,
1, 2, 3, 0, 4, 0, 4, 0,
5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4,
6, 7, 8, 9, 10, 7, 11, 12,
13, 14, 14, 15, 16, 17, 14, 14,
7, 18, 0, 19, 20, 21, 15, 5,
22, 23, 24, 25, 2, 8, 3, 0,
0, 0, 26, 27, 28, 29, 30, 31,
32, 26, 0, 33, 34, 29, 26, 26,
27, 27, 0, 35, 36, 37, 32, 38,
38, 39, 38, 40, 2, 0, 3, 4
};
/*Map glyph_ids to kern right classes*/
static const uint8_t kern_right_class_mapping[] =
{
0, 1, 0, 2, 0, 0, 0, 0,
2, 0, 3, 0, 4, 5, 4, 5,
6, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 4, 0, 0,
7, 8, 6, 9, 8, 9, 9, 9,
8, 9, 9, 10, 9, 9, 9, 9,
8, 9, 8, 9, 11, 12, 13, 14,
15, 16, 17, 18, 0, 14, 3, 0,
5, 0, 19, 20, 21, 21, 21, 22,
21, 20, 0, 23, 20, 20, 24, 24,
21, 0, 21, 24, 25, 26, 27, 28,
28, 29, 30, 31, 0, 0, 3, 4
};
/*Kern values between classes*/
static const int8_t kern_class_values[] =
{
0, 0, 0, 0, 0, 0, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 5, 0, 5, 5,
3, 0, 4, 0, 0, 18, 0, 0,
5, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -14, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -10, 5, 5, -11,
-36, -24, 6, -9, 0, -31, -3, 5,
0, 0, 0, 0, 0, 0, -19, 0,
-19, -6, 0, -12, -15, -2, -12, -12,
-14, -12, -14, 0, 0, 0, -8, -26,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -6, 0, 0, -11, -9,
0, 0, 0, -9, 0, -8, 0, -9,
-5, -9, -14, -6, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, -10, -30, 0, -16, 7, 0, -17,
-9, 0, 0, 0, -22, -4, -24, -18,
0, -28, 5, 0, 0, -3, 0, 0,
0, 0, 0, 0, -11, 0, -11, 0,
0, -3, 0, 0, 0, -4, 0, 0,
0, 4, 0, -9, 0, -12, -4, 0,
-15, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
3, 0, -8, 6, 0, 8, -4, 0,
0, 0, 1, 0, -1, 0, 0, -1,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -6, 0, -6, 0, 0, 0,
0, 0, 3, 0, 3, -3, 0, 3,
0, 0, 0, -3, 0, 0, -3, 0,
-3, 0, -3, -4, 0, 0, -2, -3,
-2, -5, -2, -5, 0, -3, 7, 0,
2, -34, -15, 10, -1, 0, -36, 0,
6, 0, 0, 0, 0, 0, 0, -10,
0, -7, -2, 0, -5, 0, -3, 0,
-6, -9, -6, -6, 0, 0, 0, 0,
5, 0, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -8, -4,
0, 0, 0, -8, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, -10, 0, 0, -28, 5, 0, -2,
-15, -4, 0, -4, 0, -7, 0, 0,
0, 0, 0, -7, 0, -9, -10, 0,
-4, -4, -10, -11, -17, -9, -17, 0,
-13, -26, 0, -23, 7, 0, -18, -12,
0, 4, -2, -34, -11, -38, -28, 0,
-46, 0, -2, 0, -5, -5, 0, -1,
0, -7, -7, -24, 0, -24, 0, -3,
3, 0, 3, -37, -21, 4, 0, 0,
-41, 0, 0, 0, -1, -1, -6, 0,
-8, -8, 0, -8, 0, 0, 0, 0,
0, 0, 3, 0, 3, 0, 0, -3,
0, -2, 10, 0, -1, -3, 0, 0,
2, -3, -3, -7, -5, 0, -13, 0,
0, 0, -3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 2, 0, 0, 0, 6,
0, 0, -4, 0, 0, -6, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -8, 8, 0, -20,
-29, -22, 9, -8, 0, -36, 0, 6,
0, 5, 5, 0, 0, 0, -30, 0,
-28, -12, 0, -24, -28, -8, -23, -27,
-27, -27, -22, -3, 5, 0, -6, -20,
-18, 0, -5, 0, -19, -1, 5, 0,
0, 0, 0, 0, 0, -20, 0, -16,
-4, 0, -11, -12, 0, -9, -6, -8,
-6, -9, 0, 0, 5, -24, 3, 0,
3, -9, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -6, 0, -9, 0,
0, -4, -5, -8, -8, -16, 0, -16,
0, -8, 4, 5, -18, -35, -28, 2,
-14, 0, -35, -6, 0, 0, 0, 0,
0, 0, 0, -29, 0, -27, -13, 0,
-22, -24, -9, -20, -19, -18, -19, -20,
0, 0, 3, -12, 5, 0, 3, -7,
0, 0, -3, 0, 0, 0, 0, 0,
0, 0, -1, 0, -4, 0, 0, 0,
0, 0, 0, -8, 0, -8, 0, 0,
-10, 0, -1, 0, 0, -8, 0, 0,
0, 0, -22, 0, -19, -17, -2, -26,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -3, 0, -3, 0, 0, -13,
0, -3, -8, 0, -10, 0, 0, 0,
0, -28, 0, -19, -16, -9, -27, 0,
-3, 0, 0, -2, 0, 0, 0, -1,
0, -5, -6, -5, -6, 0, 1, 0,
5, 6, 0, -3, 0, 0, 0, 0,
-20, 0, -13, -9, 5, -20, 0, 1,
0, -1, 3, 0, 0, 0, 6, 0,
0, 2, 0, 4, 0, 0, 4, 0,
0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, 0, 4, -1,
0, -6, 0, 0, 0, 0, -18, 0,
-17, -13, -4, -24, 0, 0, 0, 0,
0, 0, 0, 3, 0, 0, -1, -2,
-1, 0, 0, 12, 0, -2, -20, 0,
12, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -7, 0, -6, 1,
0, 0, 0, 4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -7,
0, 0, 0, 0, -24, 0, -12, -11,
0, -22, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 11, 0,
0, 0, 0, 0, 0, 0, 0, -6,
0, 0, -7, 6, 0, -12, 0, 0,
0, 0, -24, 0, -16, -14, 0, -22,
0, -7, 0, -6, 0, 0, 0, -3,
0, -2, 0, 0, 0, 0, 0, 6,
0, 2, -28, -12, -7, 0, 0, -30,
0, 0, 0, -11, 0, -13, -19, 0,
-11, 0, -8, 0, 0, 0, -2, 7,
0, 0, 0, 0, 0, 0, -7, 0,
0, 0, 0, -8, 0, 0, 0, 0,
-26, 0, -18, -13, -1, -27, 0, 0,
0, 0, 0, 0, 0, 2, 0, 0,
-2, 0, -2, 3, 0, -2, 3, -1,
7, 0, -6, 0, 0, 0, 0, -18,
0, -12, 0, -1, -17, 0, 0, 0,
-2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -23,
-11, -7, 0, 0, -20, 0, -27, 0,
-12, -6, -16, -19, 0, -5, 0, -5,
0, 0, 0, -3, 0, 0, 0, 0,
0, 0, 0, 0, 0, -5, 2, 0,
-10, 0, 0, 0, 0, -27, 0, -14,
-8, 0, -18, 0, -4, 0, -6, 0,
0, 0, 0, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 3, 0, -8,
0, 0, 0, 0, -25, 0, -14, -8,
0, -19, 0, -4, 0, -6, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0
};
/*Collect the kern class' data in one place*/
static const lv_font_fmt_txt_kern_classes_t kern_classes =
{
.class_pair_values = kern_class_values,
.left_class_mapping = kern_left_class_mapping,
.right_class_mapping = kern_right_class_mapping,
.left_class_cnt = 40,
.right_class_cnt = 31,
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_16px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_16px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_classes,
.kern_scale = 16,
.cmap_num = 1,
.bpp = 4,
.kern_classes = 1,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_16px = {
#else
lv_font_t Number_HarmonyOS_bpp4_16px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 19, /*The maximum line height required by the font*/
.base_line = 4, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -1,
.underline_thickness = 1,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_16PX*/

View File

@ -1,128 +0,0 @@
/*******************************************************************************
* Size: 180 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_180px.c --bpp 4 --size 180 -r 0x30-0x39 -r 0x2d-0x2f -r 0x3a
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_180PX
#define NUMBER_HARMONYOS_BPP4_180PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_180PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 45, .range_length = 14, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Pair left and right glyphs for kerning*/
static const uint8_t kern_pair_glyph_ids[] =
{
3, 1,
3, 2,
3, 3
};
/* Kerning between the respective left and right glyphs
* 4.4 format which needs to scaled with `kern_scale`*/
static const int8_t kern_pair_values[] =
{
-37, -119, -77
};
/*Collect the kern pair's data in one place*/
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
{
.glyph_ids = kern_pair_glyph_ids,
.values = kern_pair_values,
.pair_cnt = 3,
.glyph_ids_size = 0
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_180px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_180px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_pairs,
.kern_scale = 55,
.cmap_num = 1,
.bpp = 4,
.kern_classes = 0,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_180px = {
#else
lv_font_t Number_HarmonyOS_bpp4_180px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 137, /*The maximum line height required by the font*/
.base_line = 2, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -13,
.underline_thickness = 9,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_180PX*/

View File

@ -1,315 +0,0 @@
/*******************************************************************************
* Size: 20 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_20px.c --bpp 4 --size 20 -r 0x00-0x7f
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_20PX
#define NUMBER_HARMONYOS_BPP4_20PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_20PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 0, .range_length = 1, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 32, .range_length = 95, .glyph_id_start = 2,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Map glyph_ids to kern left classes*/
static const uint8_t kern_left_class_mapping[] =
{
0, 0, 0, 0, 1, 0, 0, 0,
0, 1, 2, 3, 0, 4, 0, 4,
0, 5, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
4, 6, 7, 8, 9, 10, 7, 11,
12, 13, 14, 14, 15, 16, 17, 14,
14, 7, 18, 0, 19, 20, 21, 15,
5, 22, 23, 24, 25, 2, 8, 3,
0, 0, 0, 26, 27, 28, 29, 30,
31, 32, 26, 0, 33, 34, 29, 26,
26, 27, 27, 0, 35, 36, 37, 32,
38, 38, 39, 38, 40, 2, 0, 3,
4
};
/*Map glyph_ids to kern right classes*/
static const uint8_t kern_right_class_mapping[] =
{
0, 0, 1, 0, 2, 0, 0, 0,
0, 2, 0, 3, 0, 4, 5, 4,
5, 6, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 4, 0,
0, 7, 8, 6, 9, 8, 9, 9,
9, 8, 9, 9, 10, 9, 9, 9,
9, 8, 9, 8, 9, 11, 12, 13,
14, 15, 16, 17, 18, 0, 14, 3,
0, 5, 0, 19, 20, 21, 21, 21,
22, 21, 20, 0, 23, 20, 20, 24,
24, 21, 0, 21, 24, 25, 26, 27,
28, 28, 29, 30, 31, 0, 0, 3,
4
};
/*Kern values between classes*/
static const int8_t kern_class_values[] =
{
0, 0, 0, 0, 0, 0, 5, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 6, 0, 6, 6,
3, 0, 4, 0, 0, 22, 0, 0,
6, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -17, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -13, 6, 6, -14,
-45, -29, 7, -12, 0, -39, -3, 6,
0, 0, 0, 0, 0, 0, -24, 0,
-24, -8, 0, -15, -19, -2, -15, -14,
-18, -14, -17, 0, 0, 0, -11, -32,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -7, 0, 0, -14, -12,
0, 0, 0, -12, 0, -10, 0, -12,
-6, -11, -18, -7, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, -13, -37, 0, -20, 8, 0, -22,
-12, 0, 0, 0, -27, -5, -29, -22,
0, -36, 7, 0, 0, -4, 0, 0,
0, 0, 0, 0, -14, 0, -14, 0,
0, -4, 0, 0, 0, -5, 0, 0,
0, 4, 0, -11, 0, -14, -5, 0,
-18, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
3, 0, -10, 7, 0, 11, -5, 0,
0, 0, 2, 0, -1, 0, 0, -1,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -7, 0, -7, 0, 0, 0,
0, 0, 3, 0, 4, -3, 0, 4,
0, 0, 0, -4, 0, 0, -4, 0,
-3, 0, -4, -4, 0, 0, -3, -3,
-3, -7, -3, -7, 0, -3, 8, 0,
2, -42, -19, 13, -2, 0, -44, 0,
7, 0, 0, 0, 0, 0, 0, -13,
0, -9, -3, 0, -6, 0, -4, 0,
-7, -12, -7, -8, 0, 0, 0, 0,
6, 0, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 2, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, -10, -5,
0, 0, 0, -10, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, -13, 0, 0, -35, 6, 0, -2,
-19, -5, 0, -5, 0, -8, 0, 0,
0, 0, 0, -9, 0, -11, -13, 0,
-5, -5, -13, -13, -21, -11, -21, 0,
-16, -33, 0, -29, 8, 0, -23, -15,
0, 5, -3, -42, -14, -47, -35, 0,
-57, 0, -2, 0, -6, -6, 0, -1,
0, -9, -8, -30, 0, -30, 0, -3,
3, 0, 4, -46, -26, 5, 0, 0,
-51, 0, 0, 0, -1, -2, -8, 0,
-10, -11, 0, -10, 0, 0, 0, 0,
0, 0, 4, 0, 4, 0, 0, -4,
0, -3, 12, 0, -1, -3, 0, 0,
2, -4, -4, -9, -6, 0, -16, 0,
0, 0, -4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 3, 0, 0, 0, 7,
0, 0, -5, 0, 0, -7, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -10, 10, 0, -26,
-36, -27, 12, -10, 0, -45, 0, 7,
0, 6, 6, 0, 0, 0, -38, 0,
-36, -14, 0, -29, -36, -11, -28, -34,
-34, -34, -28, -3, 6, 0, -8, -25,
-22, 0, -6, 0, -23, -1, 6, 0,
0, 0, 0, 0, 0, -25, 0, -20,
-5, 0, -14, -15, 0, -11, -7, -11,
-7, -11, 0, 0, 6, -29, 3, 0,
4, -11, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -8, 0, -11, 0,
0, -5, -6, -10, -10, -20, 0, -20,
0, -10, 4, 6, -23, -44, -36, 3,
-18, 0, -44, -8, 0, 0, 0, 0,
0, 0, 0, -36, 0, -34, -16, 0,
-27, -30, -11, -25, -24, -22, -24, -25,
0, 0, 3, -15, 6, 0, 3, -9,
0, 0, -3, 0, 0, 0, 0, 0,
0, 0, -2, 0, -5, 0, 0, 0,
0, 0, 0, -11, 0, -11, 0, 0,
-13, 0, -1, 0, 0, -10, 0, 0,
0, 0, -28, 0, -24, -21, -3, -32,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -4, 0, -4, 0, 0, -16,
0, -3, -10, 0, -13, 0, 0, 0,
0, -36, 0, -24, -20, -11, -34, 0,
-3, 0, 0, -3, 0, 0, 0, -2,
0, -7, -8, -7, -7, 0, 1, 0,
6, 8, 0, -4, 0, 0, 0, 0,
-25, 0, -17, -11, 6, -25, 0, 1,
0, -1, 4, 0, 0, 0, 7, 0,
0, 2, 0, 4, 0, 0, 4, 0,
0, 0, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -2, 0, 5, -1,
0, -8, 0, 0, 0, 0, -23, 0,
-21, -16, -4, -29, 0, 0, 0, 0,
0, 0, 0, 4, 0, 0, -1, -2,
-1, 0, 0, 15, 0, -2, -25, 0,
14, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -9, 0, -8, 1,
0, 0, 0, 4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -9,
0, 0, 0, 0, -29, 0, -15, -14,
0, -27, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 13, 0,
0, 0, 0, 0, 0, 0, 0, -7,
0, 0, -9, 8, 0, -15, 0, 0,
0, 0, -29, 0, -20, -18, 0, -27,
0, -9, 0, -7, 0, 0, 0, -4,
0, -3, 0, 0, 0, 0, 0, 8,
0, 3, -35, -15, -9, 0, 0, -38,
0, 0, 0, -14, 0, -16, -24, 0,
-13, 0, -11, 0, 0, 0, -2, 9,
0, 0, 0, 0, 0, 0, -9, 0,
0, 0, 0, -10, 0, 0, 0, 0,
-32, 0, -23, -16, -1, -34, 0, 0,
0, 0, 0, 0, 0, 3, 0, 0,
-3, 0, -3, 4, 0, -2, 3, -1,
9, 0, -8, 0, 0, 0, 0, -22,
0, -15, 0, -1, -22, 0, 0, 0,
-3, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -29,
-14, -9, 0, 0, -26, 0, -34, 0,
-14, -7, -20, -24, 0, -6, 0, -7,
0, 0, 0, -3, 0, 0, 0, 0,
0, 0, 0, 0, 0, -6, 3, 0,
-13, 0, 0, 0, 0, -34, 0, -18,
-11, 0, -22, 0, -5, 0, -8, 0,
0, 0, 0, 4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 3, 0, -10,
0, 0, 0, 0, -31, 0, -18, -10,
0, -24, 0, -5, 0, -7, 0, 0,
0, 1, 0, 0, 0, 0, 0, 0
};
/*Collect the kern class' data in one place*/
static const lv_font_fmt_txt_kern_classes_t kern_classes =
{
.class_pair_values = kern_class_values,
.left_class_mapping = kern_left_class_mapping,
.right_class_mapping = kern_right_class_mapping,
.left_class_cnt = 40,
.right_class_cnt = 31,
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_20px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_20px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_classes,
.kern_scale = 16,
.cmap_num = 2,
.bpp = 4,
.kern_classes = 1,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_20px = {
#else
lv_font_t Number_HarmonyOS_bpp4_20px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 23, /*The maximum line height required by the font*/
.base_line = 5, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -1,
.underline_thickness = 1,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_20PX*/

View File

@ -1,295 +0,0 @@
/*******************************************************************************
* Size: 36 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font D:\code\lv_font_conv\lv_font_convert_tools\HarmonyOS_Sans_SC_Medium.ttf -o D:\code\lv_font_conv\lv_font_convert_tools\Number_HarmonyOS_bpp4_36px.c --bpp 4 --size 36 --symbols ¡æ¨H%:-GOQWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm/.+ -r 0x25-0x3A
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_36PX
#define NUMBER_HARMONYOS_BPP4_36PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_36PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
static const uint16_t unicode_list_3[] = {
0x0, 0x6
};
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 37, .range_length = 22, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 65, .range_length = 26, .glyph_id_start = 23,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 97, .range_length = 26, .glyph_id_start = 49,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 8451, .range_length = 7, .glyph_id_start = 75,
.unicode_list = unicode_list_3, .glyph_id_ofs_list = NULL, .list_length = 2, .type = LV_FONT_FMT_TXT_CMAP_SPARSE_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Map glyph_ids to kern left classes*/
static const uint8_t kern_left_class_mapping[] =
{
0, 0, 0, 0, 1, 2, 0, 0,
0, 0, 0, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 4,
5, 6, 7, 8, 9, 10, 0, 0,
11, 12, 13, 0, 0, 7, 14, 0,
15, 16, 17, 11, 3, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28,
22, 0, 29, 30, 25, 22, 22, 23,
23, 0, 31, 32, 33, 28, 34, 34,
35, 34, 36, 6, 9
};
/*Map glyph_ids to kern right classes*/
static const uint8_t kern_right_class_mapping[] =
{
0, 0, 0, 1, 0, 2, 0, 3,
4, 3, 4, 5, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 5,
6, 7, 6, 6, 6, 7, 6, 6,
8, 6, 6, 6, 6, 7, 6, 7,
6, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 19, 19, 20, 19,
18, 0, 21, 18, 18, 22, 22, 19,
0, 19, 22, 23, 24, 25, 26, 26,
27, 28, 29, 0, 0
};
/*Kern values between classes*/
static const int8_t kern_class_values[] =
{
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 12, 0, 12, 12, 6,
0, 8, 0, 0, 40, 0, 0, 10,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 14, 0, 0, 0, 0, 0, 0,
0, 0, 10, 12, -25, -82, -53, 0,
-21, -70, -6, 11, 0, 0, 0, 0,
0, 0, -44, 0, -43, -14, 0, -28,
-34, -4, -28, -26, -32, -26, -31, -67,
0, -36, 15, 0, 0, -21, 0, 0,
-48, -9, -53, -40, 0, -64, 12, 0,
0, -6, 0, 0, 0, 0, 0, 0,
-25, 0, -25, 0, -7, 0, 0, 0,
-9, 0, 0, 8, 0, -20, 0, -26,
-9, 0, -33, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 6, 0, -18, 13, 0, 0, -9,
0, 0, 3, 0, -2, 0, 0, -2,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -13, 0, -13, 0, -13, 0,
0, -25, -21, 0, 0, -21, 0, -18,
0, -21, -12, -20, -32, -13, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 6, 0,
0, -6, 6, 0, 0, 0, -6, 0,
0, -7, 0, -6, 0, -6, -8, 0,
0, -5, -6, -5, -12, -5, -12, 0,
15, 0, 3, -75, -33, 0, -3, -80,
0, 13, 0, 0, 0, 0, 0, 0,
-23, 0, -16, -5, 0, -10, 0, -7,
0, -13, -21, -13, -14, 0, 0, 1,
10, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -17, -9, 0,
0, -17, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, -63, 10, 0, -9, -33, 0, -9,
0, -15, 0, 0, 0, 0, 0, -17,
0, -20, -24, 0, -9, -9, -24, -24,
-39, -20, -39, 0, -59, 0, -52, 15,
0, 0, -28, 10, -5, -75, -25, -85,
-63, 0, -103, 0, -4, 0, -12, -11,
0, -1, 1, -16, -15, -55, 0, -55,
0, 6, 0, 7, -83, -47, 0, 0,
-92, 0, 0, 0, -2, -3, -14, 0,
-17, -19, 0, -17, 0, 0, 0, 0,
0, 0, 6, 0, 6, 0, -6, 0,
-5, 22, 0, 0, -6, 0, 4, -7,
-7, -16, -10, 0, -28, 0, 0, 0,
-7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 13, 0, 0, -9, 0,
0, -13, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
17, 0, -46, -66, -48, 0, -18, -81,
0, 13, 0, 11, 12, 0, 0, 0,
-69, 0, -64, -26, 0, -53, -64, -19,
-51, -61, -62, -61, -50, 10, 0, -14,
-44, -40, 0, -12, -42, -1, 12, 0,
0, 0, 0, 0, 0, -44, 0, -36,
-9, 0, -25, -26, 0, -20, -13, -19,
-13, -20, 0, 12, -53, 6, 0, 0,
-20, 0, 0, 0, 0, 0, 0, 0,
0, 0, -14, 0, -20, 0, 0, -10,
-10, -18, -18, -35, 0, -35, 0, 8,
12, -41, -79, -64, 0, -32, -79, -14,
0, 0, 0, 0, 0, 0, 0, -65,
0, -62, -29, 0, -49, -54, -20, -45,
-43, -40, -43, -44, 0, 6, -26, 12,
0, 0, -16, 0, -6, 0, 0, 0,
0, 0, 0, 0, -3, 0, -9, 0,
0, 0, 0, 0, 0, -19, 0, -19,
0, -24, 0, -1, 0, 0, 0, 0,
0, 0, -50, 0, -43, -38, -5, -58,
0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, -7, 0, -7, 0, -29, 0,
-6, -18, 0, 0, 0, 0, 0, -64,
0, -43, -36, -20, -62, 0, -6, 0,
0, -5, 0, 0, 0, -3, 0, -12,
-14, -12, -13, 2, 0, 10, 14, 0,
0, 0, 0, 0, -45, 0, -30, -20,
10, -44, 0, 1, 0, -2, 7, 0,
0, 0, 13, 0, 0, 4, 0, 8,
0, 8, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, -3, 0, 9,
-2, 0, 0, 0, 0, 0, -41, 0,
-37, -28, -8, -53, 0, 0, 0, 0,
0, 0, 0, 6, 0, 0, -1, -4,
-1, 0, 27, 0, -4, -44, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -16, 0, -14, 1, 0, 0,
0, 8, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
-53, 0, -28, -25, 0, -49, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0,
24, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -16, 14, 0, 0, 0,
0, 0, -53, 0, -35, -32, 0, -49,
0, -17, 0, -13, 0, 0, 0, -6,
0, -5, 0, 0, 0, 0, 14, 0,
5, -62, -27, 0, 0, -68, 0, 0,
0, -25, 0, -29, -43, 0, -24, 0,
-19, 0, 0, 0, -3, 17, 0, 0,
0, 0, 0, -17, 0, 0, 0, 0,
0, 0, 0, 0, -58, 0, -41, -29,
-2, -60, 0, 0, 0, 0, 0, 0,
0, 5, 0, 0, -5, 0, -5, 7,
-4, 6, -1, 16, 0, 0, 0, 0,
0, -40, 0, -27, 0, -1, -39, 0,
0, 0, -5, 0, 0, 0, 0, 0,
0, -1, 0, 0, 0, 0, 0, 0,
-52, -25, 0, 0, -46, 0, -61, 0,
-26, -13, -35, -43, 0, -11, 0, -12,
0, 0, 0, -6, 0, 0, 0, 0,
0, -1, 0, 0, -12, 5, 0, 0,
0, 0, 0, -62, 0, -32, -19, 0,
-40, 0, -9, 0, -14, 0, 0, 0,
0, 7, 0, 0, 0, 0, 0, 0,
0, 0, 6, 0, 0, 0, 0, 0,
-56, 0, -32, -18, 0, -43, 0, -9,
0, -13, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0
};
/*Collect the kern class' data in one place*/
static const lv_font_fmt_txt_kern_classes_t kern_classes =
{
.class_pair_values = kern_class_values,
.left_class_mapping = kern_left_class_mapping,
.right_class_mapping = kern_right_class_mapping,
.left_class_cnt = 36,
.right_class_cnt = 29,
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_36px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_36px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_classes,
.kern_scale = 16,
.cmap_num = 4,
.bpp = 4,
.kern_classes = 1,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_36px = {
#else
lv_font_t Number_HarmonyOS_bpp4_36px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 39, /*The maximum line height required by the font*/
.base_line = 8, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -3,
.underline_thickness = 2,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_36PX*/

View File

@ -1,751 +0,0 @@
/*******************************************************************************
* Size: 44 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_44px.c --bpp 4 --size 44 -r 0x30-0x39 -r 0x2d-0x2f -r 0x3a -r 0x25
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_44PX
#define NUMBER_HARMONYOS_BPP4_44PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_44PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
static LV_ATTRIBUTE_LARGE_CONST const uint8_t glyph_bitmap[] = {
/* U+0025 "%" */
0x0, 0x0, 0x0, 0x46, 0x75, 0x20, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x8, 0xff, 0xff, 0xff, 0xb2,
0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xff,
0x40, 0x0, 0x0, 0x0, 0x1d, 0xff, 0xff, 0xff,
0xff, 0xf5, 0x0, 0x0, 0x0, 0x0, 0x2, 0xff,
0xff, 0xa0, 0x0, 0x0, 0x0, 0xc, 0xff, 0xff,
0xff, 0xff, 0xff, 0xf3, 0x0, 0x0, 0x0, 0x0,
0xbf, 0xff, 0xf1, 0x0, 0x0, 0x0, 0x6, 0xff,
0xff, 0x92, 0x26, 0xef, 0xff, 0xc0, 0x0, 0x0,
0x0, 0x4f, 0xff, 0xf7, 0x0, 0x0, 0x0, 0x0,
0xcf, 0xff, 0x80, 0x0, 0x2, 0xff, 0xff, 0x20,
0x0, 0x0, 0xd, 0xff, 0xfd, 0x0, 0x0, 0x0,
0x0, 0xf, 0xff, 0xf0, 0x0, 0x0, 0xa, 0xff,
0xf6, 0x0, 0x0, 0x7, 0xff, 0xff, 0x40, 0x0,
0x0, 0x0, 0x1, 0xff, 0xfe, 0x0, 0x0, 0x0,
0x7f, 0xff, 0x70, 0x0, 0x2, 0xff, 0xff, 0xa0,
0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xf0, 0x0,
0x0, 0x8, 0xff, 0xf7, 0x0, 0x0, 0xbf, 0xff,
0xf1, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff,
0x40, 0x0, 0x0, 0xdf, 0xff, 0x40, 0x0, 0x4f,
0xff, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9,
0xff, 0xfd, 0x20, 0x0, 0x9f, 0xff, 0xe0, 0x0,
0xd, 0xff, 0xfd, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x2f, 0xff, 0xff, 0xcb, 0xef, 0xff, 0xf8,
0x0, 0x7, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x6f, 0xff, 0xff, 0xff, 0xff,
0xfc, 0x0, 0x2, 0xff, 0xff, 0xa0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xff, 0xff,
0xff, 0xfa, 0x0, 0x0, 0xbf, 0xff, 0xf1, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x17,
0xce, 0xfd, 0xa4, 0x0, 0x0, 0x4f, 0xff, 0xf7,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd, 0xff,
0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8,
0xff, 0xff, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x2, 0xff, 0xff, 0xa0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0xbf, 0xff, 0xf1, 0x0, 0x0, 0x37,
0x99, 0x72, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x4f, 0xff, 0xf7, 0x0, 0x3,
0xdf, 0xff, 0xff, 0xfc, 0x20, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xd, 0xff, 0xfd, 0x0,
0x5, 0xff, 0xff, 0xff, 0xff, 0xff, 0x40, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0xff, 0xff,
0x40, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe,
0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xff,
0xff, 0xa0, 0x0, 0xbf, 0xff, 0xe5, 0x1, 0x6f,
0xff, 0xf9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xbf, 0xff, 0xf1, 0x0, 0x1f, 0xff, 0xf4, 0x0,
0x0, 0x5f, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x4f, 0xff, 0xf7, 0x0, 0x4, 0xff, 0xfc,
0x0, 0x0, 0x0, 0xef, 0xff, 0x20, 0x0, 0x0,
0x0, 0x0, 0xd, 0xff, 0xfd, 0x0, 0x0, 0x6f,
0xff, 0x90, 0x0, 0x0, 0xb, 0xff, 0xf4, 0x0,
0x0, 0x0, 0x0, 0x8, 0xff, 0xff, 0x30, 0x0,
0x5, 0xff, 0xfb, 0x0, 0x0, 0x0, 0xdf, 0xff,
0x30, 0x0, 0x0, 0x0, 0x2, 0xff, 0xff, 0xa0,
0x0, 0x0, 0x3f, 0xff, 0xf1, 0x0, 0x0, 0x2f,
0xff, 0xf1, 0x0, 0x0, 0x0, 0x0, 0xbf, 0xff,
0xf1, 0x0, 0x0, 0x0, 0xdf, 0xff, 0xb0, 0x0,
0x1c, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x4f,
0xff, 0xf7, 0x0, 0x0, 0x0, 0x6, 0xff, 0xff,
0xea, 0xbf, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0,
0xd, 0xff, 0xfd, 0x0, 0x0, 0x0, 0x0, 0xa,
0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x0, 0x0,
0x0, 0x8, 0xff, 0xff, 0x30, 0x0, 0x0, 0x0,
0x0, 0x9, 0xff, 0xff, 0xff, 0xff, 0x70, 0x0,
0x0, 0x0, 0x2, 0xff, 0xff, 0xa0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x3, 0x9d, 0xfe, 0xd8, 0x20,
0x0, 0x0,
/* U+002D "-" */
0x3b, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
0x95, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfd, 0x5f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xd5, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfd,
/* U+002E "." */
0x2, 0xab, 0x70, 0x1, 0xef, 0xff, 0xa0, 0x6f,
0xff, 0xff, 0x17, 0xff, 0xff, 0xf1, 0x2f, 0xff,
0xfc, 0x0, 0x4d, 0xfa, 0x10,
/* U+002F "/" */
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f, 0xff,
0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xef,
0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4,
0xff, 0xff, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0,
0xa, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0xf, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x6f, 0xff, 0xf1, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xcf, 0xff, 0xa0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x2, 0xff, 0xff, 0x40, 0x0,
0x0, 0x0, 0x0, 0x0, 0x8, 0xff, 0xfe, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xff, 0xf8,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f, 0xff,
0xf2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xaf,
0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1,
0xff, 0xff, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0,
0x6, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0xc, 0xff, 0xfa, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x2f, 0xff, 0xf4, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x8f, 0xff, 0xe0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xef, 0xff, 0x80, 0x0,
0x0, 0x0, 0x0, 0x0, 0x4, 0xff, 0xff, 0x20,
0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0xff, 0xfc,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xff,
0xf6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6f,
0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xdf, 0xff, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x3, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0, 0x0,
0x0, 0x9, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0xe, 0xff, 0xf8, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x5f, 0xff, 0xf2, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xbf, 0xff, 0xc0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0x60,
0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xff,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xd, 0xff,
0xfa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f,
0xff, 0xf4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
/* U+0030 "0" */
0x0, 0x0, 0x0, 0x0, 0x46, 0x77, 0x52, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x9f, 0xff,
0xff, 0xff, 0xd5, 0x0, 0x0, 0x0, 0x0, 0x0,
0x4e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xb0, 0x0,
0x0, 0x0, 0x4, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfc, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff,
0xfe, 0xcd, 0xff, 0xff, 0xff, 0xa0, 0x0, 0x0,
0xaf, 0xff, 0xff, 0x60, 0x0, 0x2a, 0xff, 0xff,
0xf3, 0x0, 0x2, 0xff, 0xff, 0xf4, 0x0, 0x0,
0x0, 0xbf, 0xff, 0xfb, 0x0, 0x9, 0xff, 0xff,
0x90, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0x20,
0xe, 0xff, 0xff, 0x20, 0x0, 0x0, 0x0, 0xa,
0xff, 0xff, 0x70, 0x3f, 0xff, 0xfd, 0x0, 0x0,
0x0, 0x0, 0x4, 0xff, 0xff, 0xc0, 0x6f, 0xff,
0xf9, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff,
0xf0, 0x8f, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0,
0x0, 0xef, 0xff, 0xf2, 0xbf, 0xff, 0xf4, 0x0,
0x0, 0x0, 0x0, 0x0, 0xcf, 0xff, 0xf4, 0xdf,
0xff, 0xf2, 0x0, 0x0, 0x0, 0x0, 0x0, 0xaf,
0xff, 0xf6, 0xdf, 0xff, 0xf1, 0x0, 0x0, 0x0,
0x0, 0x0, 0x9f, 0xff, 0xf7, 0xef, 0xff, 0xf1,
0x0, 0x0, 0x0, 0x0, 0x0, 0x8f, 0xff, 0xf7,
0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x8f, 0xff, 0xf8, 0xff, 0xff, 0xf1, 0x0, 0x0,
0x0, 0x0, 0x0, 0x8f, 0xff, 0xf8, 0xef, 0xff,
0xf1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9f, 0xff,
0xf7, 0xdf, 0xff, 0xf2, 0x0, 0x0, 0x0, 0x0,
0x0, 0x9f, 0xff, 0xf6, 0xcf, 0xff, 0xf3, 0x0,
0x0, 0x0, 0x0, 0x0, 0xbf, 0xff, 0xf5, 0xaf,
0xff, 0xf5, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcf,
0xff, 0xf3, 0x7f, 0xff, 0xf7, 0x0, 0x0, 0x0,
0x0, 0x0, 0xff, 0xff, 0xf0, 0x5f, 0xff, 0xfb,
0x0, 0x0, 0x0, 0x0, 0x2, 0xff, 0xff, 0xe0,
0x1f, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x6,
0xff, 0xff, 0x90, 0xb, 0xff, 0xff, 0x50, 0x0,
0x0, 0x0, 0xc, 0xff, 0xff, 0x40, 0x6, 0xff,
0xff, 0xd0, 0x0, 0x0, 0x0, 0x5f, 0xff, 0xff,
0x0, 0x0, 0xef, 0xff, 0xfa, 0x0, 0x0, 0x3,
0xef, 0xff, 0xf7, 0x0, 0x0, 0x6f, 0xff, 0xff,
0xd6, 0x45, 0x9f, 0xff, 0xff, 0xe0, 0x0, 0x0,
0xb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x40, 0x0, 0x0, 0x0, 0xcf, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x8,
0xff, 0xff, 0xff, 0xff, 0xfd, 0x30, 0x0, 0x0,
0x0, 0x0, 0x0, 0x17, 0xce, 0xff, 0xda, 0x50,
0x0, 0x0, 0x0,
/* U+0031 "1" */
0x0, 0x0, 0x0, 0x0, 0x4d, 0xff, 0xf6, 0x0,
0x0, 0x0, 0x2b, 0xff, 0xff, 0xf6, 0x0, 0x0,
0x19, 0xff, 0xff, 0xff, 0xf6, 0x0, 0x7, 0xef,
0xff, 0xff, 0xff, 0xf6, 0x4, 0xdf, 0xff, 0xff,
0xff, 0xff, 0xf6, 0xaf, 0xff, 0xff, 0xfe, 0xcf,
0xff, 0xf6, 0xdf, 0xff, 0xff, 0x91, 0x6f, 0xff,
0xf6, 0xdf, 0xff, 0xb2, 0x0, 0x6f, 0xff, 0xf6,
0xdf, 0xd4, 0x0, 0x0, 0x6f, 0xff, 0xf6, 0xb6,
0x0, 0x0, 0x0, 0x6f, 0xff, 0xf6, 0x0, 0x0,
0x0, 0x0, 0x6f, 0xff, 0xf6, 0x0, 0x0, 0x0,
0x0, 0x6f, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0,
0x6f, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x6f,
0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xff,
0xf6, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xff, 0xf6,
0x0, 0x0, 0x0, 0x0, 0x6f, 0xff, 0xf6, 0x0,
0x0, 0x0, 0x0, 0x6f, 0xff, 0xf6, 0x0, 0x0,
0x0, 0x0, 0x6f, 0xff, 0xf6, 0x0, 0x0, 0x0,
0x0, 0x6f, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0,
0x6f, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x6f,
0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xff,
0xf6, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xff, 0xf6,
0x0, 0x0, 0x0, 0x0, 0x6f, 0xff, 0xf6, 0x0,
0x0, 0x0, 0x0, 0x6f, 0xff, 0xf6, 0x0, 0x0,
0x0, 0x0, 0x6f, 0xff, 0xf6, 0x0, 0x0, 0x0,
0x0, 0x6f, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0,
0x6f, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x6f,
0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xff,
0xf6, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xff, 0xf6,
/* U+0032 "2" */
0x0, 0x0, 0x0, 0x0, 0x46, 0x77, 0x52, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xaf, 0xff,
0xff, 0xff, 0xd6, 0x0, 0x0, 0x0, 0x0, 0x0,
0xaf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd2, 0x0,
0x0, 0x0, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xfe, 0x20, 0x0, 0x0, 0xdf, 0xff, 0xff,
0xfd, 0xce, 0xff, 0xff, 0xff, 0xc0, 0x0, 0x9,
0xff, 0xff, 0xf8, 0x10, 0x0, 0x3c, 0xff, 0xff,
0xf6, 0x0, 0x1f, 0xff, 0xff, 0x40, 0x0, 0x0,
0x0, 0xcf, 0xff, 0xfc, 0x0, 0x7f, 0xff, 0xf6,
0x0, 0x0, 0x0, 0x0, 0x3f, 0xff, 0xff, 0x10,
0x4d, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0xe,
0xff, 0xff, 0x30, 0x0, 0x6e, 0x50, 0x0, 0x0,
0x0, 0x0, 0xb, 0xff, 0xff, 0x40, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0xff, 0xff,
0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xd, 0xff, 0xff, 0x20, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x2f, 0xff, 0xff, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9f, 0xff,
0xfa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x3, 0xff, 0xff, 0xf3, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x1d, 0xff, 0xff, 0xb0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbf, 0xff,
0xff, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x9, 0xff, 0xff, 0xf5, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x7f, 0xff, 0xff, 0x90, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0xff, 0xff,
0xfb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x4f, 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x3, 0xff, 0xff, 0xfd, 0x10, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x2e, 0xff, 0xff,
0xe2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1,
0xdf, 0xff, 0xff, 0x30, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0xc, 0xff, 0xff, 0xf4, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xbf, 0xff, 0xff,
0x50, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa,
0xff, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x8f, 0xff, 0xff, 0x80, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x6, 0xff, 0xff, 0xfa,
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x10, 0x5f,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf4, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf4, 0xcf, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf4,
0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf4,
/* U+0033 "3" */
0x0, 0x0, 0x0, 0x0, 0x15, 0x67, 0x75, 0x20,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6, 0xdf,
0xff, 0xff, 0xff, 0xd6, 0x0, 0x0, 0x0, 0x0,
0x0, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x20, 0x0, 0x0, 0x0, 0x4f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xfe, 0x10, 0x0, 0x0, 0x2f,
0xff, 0xff, 0xfe, 0xcb, 0xdf, 0xff, 0xff, 0xfd,
0x0, 0x0, 0xb, 0xff, 0xff, 0xe5, 0x0, 0x0,
0x2c, 0xff, 0xff, 0xf5, 0x0, 0x3, 0xff, 0xff,
0xd1, 0x0, 0x0, 0x0, 0xc, 0xff, 0xff, 0xb0,
0x0, 0x7f, 0xff, 0xf2, 0x0, 0x0, 0x0, 0x0,
0x4f, 0xff, 0xfe, 0x0, 0x0, 0x4d, 0xf8, 0x0,
0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xf0, 0x0,
0x0, 0x6, 0x20, 0x0, 0x0, 0x0, 0x0, 0xf,
0xff, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x3, 0xff, 0xff, 0xd0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xaf, 0xff,
0xf9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x7f, 0xff, 0xff, 0x20, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x25, 0xcf, 0xff, 0xff, 0x80,
0x0, 0x0, 0x0, 0x0, 0x0, 0xcf, 0xff, 0xff,
0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0,
0xc, 0xff, 0xff, 0xff, 0xfe, 0x30, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xcf, 0xff, 0xff, 0xff,
0xfe, 0x60, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
0xff, 0xff, 0xff, 0xff, 0xff, 0xa0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x1, 0x23, 0x59, 0xff, 0xff,
0xff, 0x90, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x1, 0xaf, 0xff, 0xff, 0x30, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbf, 0xff,
0xfa, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x2, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xff, 0xff,
0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0xdf, 0xff, 0xf2, 0x0, 0x8, 0xe0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xe, 0xff, 0xff, 0x20,
0x6e, 0xff, 0x70, 0x0, 0x0, 0x0, 0x0, 0x3,
0xff, 0xff, 0xf0, 0xd, 0xff, 0xff, 0x40, 0x0,
0x0, 0x0, 0x0, 0xbf, 0xff, 0xfc, 0x0, 0x7f,
0xff, 0xff, 0x60, 0x0, 0x0, 0x0, 0x9f, 0xff,
0xff, 0x60, 0x0, 0xdf, 0xff, 0xff, 0xd7, 0x32,
0x37, 0xdf, 0xff, 0xff, 0xd0, 0x0, 0x2, 0xef,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe2,
0x0, 0x0, 0x2, 0xdf, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xe3, 0x0, 0x0, 0x0, 0x0, 0x7e,
0xff, 0xff, 0xff, 0xff, 0xff, 0x91, 0x0, 0x0,
0x0, 0x0, 0x0, 0x5, 0xad, 0xef, 0xfd, 0xa6,
0x10, 0x0, 0x0, 0x0,
/* U+0034 "4" */
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdf, 0xff,
0xf2, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x7, 0xff, 0xff, 0x90, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xff, 0xff,
0x10, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x8f, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xe1,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x9, 0xff, 0xff, 0x70, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x2f, 0xff, 0xfe, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xaf, 0xff, 0xf5, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xd0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xc,
0xff, 0xff, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x4f, 0xff, 0xfb, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xdf,
0xff, 0xf3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x6, 0xff, 0xff, 0xa0, 0x0, 0x13,
0x33, 0x31, 0x0, 0x0, 0x0, 0x0, 0xe, 0xff,
0xff, 0x20, 0x0, 0x4f, 0xff, 0xf6, 0x0, 0x0,
0x0, 0x0, 0x7f, 0xff, 0xf9, 0x0, 0x0, 0x4f,
0xff, 0xf6, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff,
0xf1, 0x0, 0x0, 0x4f, 0xff, 0xf6, 0x0, 0x0,
0x0, 0x8, 0xff, 0xff, 0x70, 0x0, 0x0, 0x4f,
0xff, 0xf6, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xfe,
0x0, 0x0, 0x0, 0x4f, 0xff, 0xf6, 0x0, 0x0,
0x0, 0xaf, 0xff, 0xf6, 0x0, 0x0, 0x0, 0x4f,
0xff, 0xf6, 0x0, 0x0, 0x3, 0xff, 0xff, 0xd0,
0x0, 0x0, 0x0, 0x4f, 0xff, 0xf6, 0x0, 0x0,
0xb, 0xff, 0xff, 0x50, 0x0, 0x0, 0x0, 0x4f,
0xff, 0xf6, 0x0, 0x0, 0x3f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x6f, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x6f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x4f, 0xff, 0xf6, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f,
0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x4f, 0xff, 0xf6, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f,
0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x4f, 0xff, 0xf6, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f,
0xff, 0xf6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x4f, 0xff, 0xf6, 0x0, 0x0,
/* U+0035 "5" */
0x0, 0x3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xf9, 0x0, 0x0, 0x5, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xf9, 0x0, 0x0, 0x7,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9,
0x0, 0x0, 0x9, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf9, 0x0, 0x0, 0xb, 0xff, 0xfd,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xd, 0xff, 0xfb, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xf, 0xff, 0xf8, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2f, 0xff,
0xf6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x4f, 0xff, 0xf4, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x6f, 0xff, 0xf1, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8f,
0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0xaf, 0xff, 0xd4, 0x9d, 0xff, 0xeb,
0x71, 0x0, 0x0, 0x0, 0x0, 0xcf, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0,
0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc,
0x10, 0x0, 0x0, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x0, 0x2, 0xff, 0xff,
0xfd, 0x74, 0x24, 0x8f, 0xff, 0xff, 0xf8, 0x0,
0x4, 0xff, 0xff, 0x80, 0x0, 0x0, 0x1, 0xdf,
0xff, 0xff, 0x10, 0x0, 0x4c, 0xf8, 0x0, 0x0,
0x0, 0x0, 0x1f, 0xff, 0xff, 0x70, 0x0, 0x0,
0x30, 0x0, 0x0, 0x0, 0x0, 0x8, 0xff, 0xff,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x3, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xff, 0xff, 0xf0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff,
0xff, 0xf1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x40,
0x0, 0x0, 0x0, 0x0, 0x2, 0xff, 0xff, 0xe0,
0x0, 0x3c, 0xf3, 0x0, 0x0, 0x0, 0x0, 0x7,
0xff, 0xff, 0xa0, 0x9, 0xff, 0xfc, 0x0, 0x0,
0x0, 0x0, 0x1e, 0xff, 0xff, 0x50, 0xa, 0xff,
0xff, 0xa0, 0x0, 0x0, 0x1, 0xcf, 0xff, 0xfe,
0x0, 0x3, 0xff, 0xff, 0xfd, 0x73, 0x24, 0x8e,
0xff, 0xff, 0xf5, 0x0, 0x0, 0x8f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0x90, 0x0, 0x0,
0x9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8,
0x0, 0x0, 0x0, 0x0, 0x5d, 0xff, 0xff, 0xff,
0xff, 0xfd, 0x40, 0x0, 0x0, 0x0, 0x0, 0x0,
0x5a, 0xdf, 0xff, 0xd9, 0x40, 0x0, 0x0, 0x0,
/* U+0036 "6" */
0x0, 0x0, 0x0, 0x0, 0x0, 0xa, 0xff, 0xff,
0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x4f, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xef, 0xff, 0xf4, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x9, 0xff, 0xff,
0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x3f, 0xff, 0xff, 0x10, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xcf, 0xff, 0xf6, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff, 0xff,
0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x2f, 0xff, 0xff, 0x20, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xbf, 0xff, 0xf8, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0xff, 0xff,
0xd0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x1e, 0xff, 0xff, 0x30, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x9f, 0xff, 0xf8, 0x1, 0x10,
0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff,
0xfd, 0xff, 0xff, 0xc7, 0x10, 0x0, 0x0, 0x0,
0xd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf6,
0x0, 0x0, 0x0, 0x6f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xa0, 0x0, 0x0, 0xef, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf9, 0x0,
0x7, 0xff, 0xff, 0xff, 0x83, 0x0, 0x27, 0xff,
0xff, 0xff, 0x40, 0xe, 0xff, 0xff, 0xe2, 0x0,
0x0, 0x0, 0x2d, 0xff, 0xff, 0xd0, 0x3f, 0xff,
0xff, 0x30, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff,
0xf4, 0x7f, 0xff, 0xfb, 0x0, 0x0, 0x0, 0x0,
0x0, 0xaf, 0xff, 0xf8, 0x9f, 0xff, 0xf7, 0x0,
0x0, 0x0, 0x0, 0x0, 0x6f, 0xff, 0xfb, 0xaf,
0xff, 0xf5, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f,
0xff, 0xfc, 0x9f, 0xff, 0xf5, 0x0, 0x0, 0x0,
0x0, 0x0, 0x4f, 0xff, 0xfc, 0x8f, 0xff, 0xf7,
0x0, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xff, 0xfa,
0x4f, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0,
0xcf, 0xff, 0xf7, 0xf, 0xff, 0xff, 0x50, 0x0,
0x0, 0x0, 0x4, 0xff, 0xff, 0xf2, 0x8, 0xff,
0xff, 0xf4, 0x0, 0x0, 0x0, 0x4f, 0xff, 0xff,
0xa0, 0x1, 0xef, 0xff, 0xff, 0xb5, 0x33, 0x5a,
0xff, 0xff, 0xff, 0x20, 0x0, 0x3f, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x0, 0x0,
0x3, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x50, 0x0, 0x0, 0x0, 0x1a, 0xff, 0xff, 0xff,
0xff, 0xff, 0xb2, 0x0, 0x0, 0x0, 0x0, 0x0,
0x27, 0xbe, 0xff, 0xec, 0x82, 0x0, 0x0, 0x0,
/* U+0037 "7" */
0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xf0, 0x9f, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x9f, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf0, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xc0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x8, 0xff, 0xff, 0x50, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe, 0xff,
0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x5f, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xcf, 0xff, 0xf2, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2, 0xff,
0xff, 0xc0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x9, 0xff, 0xff, 0x50, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xfe, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6f,
0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0xdf, 0xff, 0xf2, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x4, 0xff, 0xff, 0xb0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xa,
0xff, 0xff, 0x50, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x1f, 0xff, 0xfe, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xf8,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xef, 0xff, 0xf2, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x5, 0xff, 0xff, 0xb0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0xb, 0xff, 0xff,
0x40, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x2f, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x9f, 0xff, 0xf8, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xff, 0xff,
0xf1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x6, 0xff, 0xff, 0xb0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xc, 0xff, 0xff, 0x40, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xff,
0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0xaf, 0xff, 0xf7, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xf1, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0xff,
0xff, 0xa0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0xd, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x4f, 0xff, 0xfd, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xbf,
0xff, 0xf7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
/* U+0038 "8" */
0x0, 0x0, 0x0, 0x1, 0x46, 0x77, 0x63, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xbf, 0xff,
0xff, 0xff, 0xe9, 0x10, 0x0, 0x0, 0x0, 0x0,
0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0x0,
0x0, 0x0, 0xb, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0x60, 0x0, 0x0, 0x9f, 0xff, 0xff,
0xea, 0x88, 0xbf, 0xff, 0xff, 0xf2, 0x0, 0x3,
0xff, 0xff, 0xf9, 0x0, 0x0, 0x2, 0xdf, 0xff,
0xfa, 0x0, 0x9, 0xff, 0xff, 0xa0, 0x0, 0x0,
0x0, 0x1f, 0xff, 0xff, 0x0, 0xc, 0xff, 0xff,
0x30, 0x0, 0x0, 0x0, 0x9, 0xff, 0xff, 0x30,
0xd, 0xff, 0xff, 0x10, 0x0, 0x0, 0x0, 0x6,
0xff, 0xff, 0x40, 0xc, 0xff, 0xff, 0x20, 0x0,
0x0, 0x0, 0x7, 0xff, 0xff, 0x30, 0x9, 0xff,
0xff, 0x60, 0x0, 0x0, 0x0, 0xc, 0xff, 0xff,
0x0, 0x3, 0xff, 0xff, 0xe2, 0x0, 0x0, 0x0,
0x7f, 0xff, 0xfa, 0x0, 0x0, 0x9f, 0xff, 0xfe,
0x72, 0x0, 0x3a, 0xff, 0xff, 0xe2, 0x0, 0x0,
0xa, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x30, 0x0, 0x0, 0x0, 0x6e, 0xff, 0xff, 0xff,
0xff, 0xff, 0xc2, 0x0, 0x0, 0x0, 0x0, 0x8f,
0xff, 0xff, 0xff, 0xff, 0xff, 0xd4, 0x0, 0x0,
0x0, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0x80, 0x0, 0x1, 0xdf, 0xff, 0xff, 0x94,
0x23, 0x5b, 0xff, 0xff, 0xf7, 0x0, 0xa, 0xff,
0xff, 0xd1, 0x0, 0x0, 0x0, 0x5f, 0xff, 0xff,
0x30, 0x3f, 0xff, 0xfe, 0x10, 0x0, 0x0, 0x0,
0x6, 0xff, 0xff, 0xb0, 0x8f, 0xff, 0xf8, 0x0,
0x0, 0x0, 0x0, 0x0, 0xef, 0xff, 0xf1, 0xcf,
0xff, 0xf3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x9f,
0xff, 0xf5, 0xef, 0xff, 0xf1, 0x0, 0x0, 0x0,
0x0, 0x0, 0x7f, 0xff, 0xf7, 0xff, 0xff, 0xf1,
0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xff, 0xf7,
0xef, 0xff, 0xf3, 0x0, 0x0, 0x0, 0x0, 0x0,
0x9f, 0xff, 0xf6, 0xbf, 0xff, 0xf7, 0x0, 0x0,
0x0, 0x0, 0x0, 0xdf, 0xff, 0xf4, 0x7f, 0xff,
0xfe, 0x10, 0x0, 0x0, 0x0, 0x6, 0xff, 0xff,
0xf0, 0x1f, 0xff, 0xff, 0xc1, 0x0, 0x0, 0x0,
0x4f, 0xff, 0xff, 0x90, 0x8, 0xff, 0xff, 0xff,
0x84, 0x23, 0x5b, 0xff, 0xff, 0xfe, 0x10, 0x0,
0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xf5, 0x0, 0x0, 0xb, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x50, 0x0, 0x0, 0x0, 0x6e,
0xff, 0xff, 0xff, 0xff, 0xff, 0xb2, 0x0, 0x0,
0x0, 0x0, 0x0, 0x49, 0xce, 0xff, 0xeb, 0x82,
0x0, 0x0, 0x0,
/* U+0039 "9" */
0x0, 0x0, 0x0, 0x0, 0x14, 0x67, 0x75, 0x20,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5, 0xcf,
0xff, 0xff, 0xff, 0xd6, 0x0, 0x0, 0x0, 0x0,
0x0, 0x2c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd,
0x30, 0x0, 0x0, 0x0, 0x3e, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x40, 0x0, 0x0, 0x1e,
0xff, 0xff, 0xff, 0xcb, 0xcf, 0xff, 0xff, 0xff,
0x30, 0x0, 0xb, 0xff, 0xff, 0xf8, 0x10, 0x0,
0x7, 0xff, 0xff, 0xfd, 0x0, 0x4, 0xff, 0xff,
0xf6, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff, 0xf5,
0x0, 0xaf, 0xff, 0xfa, 0x0, 0x0, 0x0, 0x0,
0x8, 0xff, 0xff, 0xb0, 0xe, 0xff, 0xff, 0x30,
0x0, 0x0, 0x0, 0x0, 0x1f, 0xff, 0xff, 0x1,
0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0,
0xdf, 0xff, 0xf2, 0x2f, 0xff, 0xfe, 0x0, 0x0,
0x0, 0x0, 0x0, 0xb, 0xff, 0xff, 0x32, 0xff,
0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xcf,
0xff, 0xf3, 0x1f, 0xff, 0xff, 0x0, 0x0, 0x0,
0x0, 0x0, 0xe, 0xff, 0xff, 0x20, 0xef, 0xff,
0xf5, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xff,
0xf0, 0xa, 0xff, 0xff, 0xd0, 0x0, 0x0, 0x0,
0x0, 0xbf, 0xff, 0xfb, 0x0, 0x4f, 0xff, 0xff,
0xa0, 0x0, 0x0, 0x0, 0x8f, 0xff, 0xff, 0x60,
0x0, 0xbf, 0xff, 0xff, 0xd5, 0x10, 0x14, 0xbf,
0xff, 0xff, 0xe0, 0x0, 0x1, 0xef, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xf6, 0x0, 0x0,
0x3, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xfd, 0x0, 0x0, 0x0, 0x1, 0xbf, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x40, 0x0, 0x0, 0x0,
0x0, 0x39, 0xef, 0xff, 0xfe, 0xff, 0xff, 0xa0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x11,
0xef, 0xff, 0xf1, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xaf, 0xff, 0xf7, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4f, 0xff,
0xfd, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0xd, 0xff, 0xff, 0x30, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x8, 0xff, 0xff, 0x90,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2,
0xff, 0xff, 0xe1, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xcf, 0xff, 0xf5, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x6f, 0xff,
0xfb, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x1f, 0xff, 0xff, 0x20, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0xb, 0xff, 0xff, 0x80,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5,
0xff, 0xff, 0xd0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0xef, 0xff, 0xf4, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0,
/* U+003A ":" */
0x0, 0x26, 0x50, 0x0, 0x4f, 0xff, 0xd1, 0xd,
0xff, 0xff, 0x80, 0xff, 0xff, 0xfa, 0xc, 0xff,
0xff, 0x70, 0x2e, 0xff, 0xb0, 0x0, 0x3, 0x20,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x5, 0xa9, 0x20, 0x7,
0xff, 0xff, 0x20, 0xef, 0xff, 0xf9, 0xf, 0xff,
0xff, 0xa0, 0xaf, 0xff, 0xf5, 0x0, 0xae, 0xd6,
0x0
};
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
static const lv_font_fmt_txt_glyph_dsc_t glyph_dsc[] = {
{.bitmap_index = 0, .adv_w = 0, .box_w = 0, .box_h = 0, .ofs_x = 0, .ofs_y = 0} /* id = 0 reserved */,
{.bitmap_index = 0, .adv_w = 562, .box_w = 35, .box_h = 33, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 578, .adv_w = 344, .box_w = 17, .box_h = 4, .ofs_x = 2, .ofs_y = 11},
{.bitmap_index = 612, .adv_w = 170, .box_w = 7, .box_h = 6, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 633, .adv_w = 284, .box_w = 18, .box_h = 32, .ofs_x = 0, .ofs_y = 0},
{.bitmap_index = 921, .adv_w = 408, .box_w = 22, .box_h = 33, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 1284, .adv_w = 408, .box_w = 14, .box_h = 32, .ofs_x = 4, .ofs_y = 0},
{.bitmap_index = 1508, .adv_w = 408, .box_w = 22, .box_h = 33, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 1871, .adv_w = 408, .box_w = 23, .box_h = 33, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 2251, .adv_w = 408, .box_w = 24, .box_h = 32, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 2635, .adv_w = 408, .box_w = 22, .box_h = 32, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 2987, .adv_w = 408, .box_w = 22, .box_h = 32, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 3339, .adv_w = 408, .box_w = 22, .box_h = 32, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 3691, .adv_w = 408, .box_w = 22, .box_h = 33, .ofs_x = 2, .ofs_y = 0},
{.bitmap_index = 4054, .adv_w = 408, .box_w = 23, .box_h = 33, .ofs_x = 1, .ofs_y = 0},
{.bitmap_index = 4434, .adv_w = 187, .box_w = 7, .box_h = 23, .ofs_x = 2, .ofs_y = 0}
};
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 37, .range_length = 1, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 45, .range_length = 14, .glyph_id_start = 2,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Pair left and right glyphs for kerning*/
static const uint8_t kern_pair_glyph_ids[] =
{
4, 2,
4, 3,
4, 4
};
/* Kerning between the respective left and right glyphs
* 4.4 format which needs to scaled with `kern_scale`*/
static const int8_t kern_pair_values[] =
{
-31, -100, -65
};
/*Collect the kern pair's data in one place*/
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
{
.glyph_ids = kern_pair_glyph_ids,
.values = kern_pair_values,
.pair_cnt = 3,
.glyph_ids_size = 0
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = glyph_bitmap,
.glyph_dsc = glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_pairs,
.kern_scale = 16,
.cmap_num = 2,
.bpp = 4,
.kern_classes = 0,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_44px = {
#else
lv_font_t Number_HarmonyOS_bpp4_44px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 33, /*The maximum line height required by the font*/
.base_line = 0, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -3,
.underline_thickness = 2,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_44PX*/

View File

@ -1,132 +0,0 @@
/*******************************************************************************
* Size: 44 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_44px.c --bpp 4 --size 44 -r 0x30-0x39 -r 0x2d-0x2f -r 0x3a -r 0x25
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_44PX
#define NUMBER_HARMONYOS_BPP4_44PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_44PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 37, .range_length = 1, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 45, .range_length = 14, .glyph_id_start = 2,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Pair left and right glyphs for kerning*/
static const uint8_t kern_pair_glyph_ids[] =
{
4, 2,
4, 3,
4, 4
};
/* Kerning between the respective left and right glyphs
* 4.4 format which needs to scaled with `kern_scale`*/
static const int8_t kern_pair_values[] =
{
-31, -100, -65
};
/*Collect the kern pair's data in one place*/
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
{
.glyph_ids = kern_pair_glyph_ids,
.values = kern_pair_values,
.pair_cnt = 3,
.glyph_ids_size = 0
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_44px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_44px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_pairs,
.kern_scale = 16,
.cmap_num = 2,
.bpp = 4,
.kern_classes = 0,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_44px = {
#else
lv_font_t Number_HarmonyOS_bpp4_44px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 33, /*The maximum line height required by the font*/
.base_line = 0, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -3,
.underline_thickness = 2,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_44PX*/

View File

@ -1,132 +0,0 @@
/*******************************************************************************
* Size: 46 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_46px.c --bpp 4 --size 46 -r 0x30-0x39 -r 0x2d-0x2f -r 0x25 -r 0x3a
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_46PX
#define NUMBER_HARMONYOS_BPP4_46PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_46PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 37, .range_length = 1, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 45, .range_length = 14, .glyph_id_start = 2,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Pair left and right glyphs for kerning*/
static const uint8_t kern_pair_glyph_ids[] =
{
4, 2,
4, 3,
4, 4
};
/* Kerning between the respective left and right glyphs
* 4.4 format which needs to scaled with `kern_scale`*/
static const int8_t kern_pair_values[] =
{
-32, -105, -68
};
/*Collect the kern pair's data in one place*/
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
{
.glyph_ids = kern_pair_glyph_ids,
.values = kern_pair_values,
.pair_cnt = 3,
.glyph_ids_size = 0
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_46px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_46px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_pairs,
.kern_scale = 16,
.cmap_num = 2,
.bpp = 4,
.kern_classes = 0,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_46px = {
#else
lv_font_t Number_HarmonyOS_bpp4_46px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 36, /*The maximum line height required by the font*/
.base_line = 1, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -3,
.underline_thickness = 2,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_46PX*/

View File

@ -1,132 +0,0 @@
/*******************************************************************************
* Size: 50 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_50px.c --bpp 4 --size 50 -r 0x30-0x39 -r 0x2d-0x2f -r 0x25 -r 0x3a
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_50PX
#define NUMBER_HARMONYOS_BPP4_50PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_50PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 37, .range_length = 1, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 45, .range_length = 14, .glyph_id_start = 2,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Pair left and right glyphs for kerning*/
static const uint8_t kern_pair_glyph_ids[] =
{
4, 2,
4, 3,
4, 4
};
/* Kerning between the respective left and right glyphs
* 4.4 format which needs to scaled with `kern_scale`*/
static const int8_t kern_pair_values[] =
{
-35, -114, -74
};
/*Collect the kern pair's data in one place*/
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
{
.glyph_ids = kern_pair_glyph_ids,
.values = kern_pair_values,
.pair_cnt = 3,
.glyph_ids_size = 0
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_50px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_50px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_pairs,
.kern_scale = 16,
.cmap_num = 2,
.bpp = 4,
.kern_classes = 0,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_50px = {
#else
lv_font_t Number_HarmonyOS_bpp4_50px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 39, /*The maximum line height required by the font*/
.base_line = 1, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -4,
.underline_thickness = 3,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_50PX*/

View File

@ -1,132 +0,0 @@
/*******************************************************************************
* Size: 62 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_62px.c --bpp 4 --size 62 -r 0x30-0x39 -r 0x2d-0x2f -r 0x3a -r 0x25
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_62PX
#define NUMBER_HARMONYOS_BPP4_62PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_62PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 37, .range_length = 1, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 45, .range_length = 14, .glyph_id_start = 2,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Pair left and right glyphs for kerning*/
static const uint8_t kern_pair_glyph_ids[] =
{
4, 2,
4, 3,
4, 4
};
/* Kerning between the respective left and right glyphs
* 4.4 format which needs to scaled with `kern_scale`*/
static const int8_t kern_pair_values[] =
{
-37, -119, -77
};
/*Collect the kern pair's data in one place*/
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
{
.glyph_ids = kern_pair_glyph_ids,
.values = kern_pair_values,
.pair_cnt = 3,
.glyph_ids_size = 0
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_62px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_62px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_pairs,
.kern_scale = 19,
.cmap_num = 2,
.bpp = 4,
.kern_classes = 0,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_62px = {
#else
lv_font_t Number_HarmonyOS_bpp4_62px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 47, /*The maximum line height required by the font*/
.base_line = 1, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -5,
.underline_thickness = 3,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_62PX*/

View File

@ -1,132 +0,0 @@
/*******************************************************************************
* Size: 80 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_80px.c --bpp 4 --size 80 -r 0x30-0x39 -r 0x2d-0x2f -r 0x25 -r 0x3a
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_80PX
#define NUMBER_HARMONYOS_BPP4_80PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_80PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 37, .range_length = 1, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 45, .range_length = 14, .glyph_id_start = 2,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Pair left and right glyphs for kerning*/
static const uint8_t kern_pair_glyph_ids[] =
{
4, 2,
4, 3,
4, 4
};
/* Kerning between the respective left and right glyphs
* 4.4 format which needs to scaled with `kern_scale`*/
static const int8_t kern_pair_values[] =
{
-36, -116, -75
};
/*Collect the kern pair's data in one place*/
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
{
.glyph_ids = kern_pair_glyph_ids,
.values = kern_pair_values,
.pair_cnt = 3,
.glyph_ids_size = 0
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_80px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_80px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_pairs,
.kern_scale = 25,
.cmap_num = 2,
.bpp = 4,
.kern_classes = 0,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_80px = {
#else
lv_font_t Number_HarmonyOS_bpp4_80px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 62, /*The maximum line height required by the font*/
.base_line = 1, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -6,
.underline_thickness = 4,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_80PX*/

View File

@ -1,132 +0,0 @@
/*******************************************************************************
* Size: 92 px
* Bpp: 4
* Opts: --no-compress --format lvgl --font HarmonyOS_Sans_SC_Medium.ttf -o Number_HarmonyOS_bpp4_92px.c --bpp 4 --size 92 -r 0x30-0x39 -r 0x2d-0x2f -r 0x3a -r 0x25
******************************************************************************/
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef NUMBER_HARMONYOS_BPP4_92PX
#define NUMBER_HARMONYOS_BPP4_92PX 1
#endif
#if NUMBER_HARMONYOS_BPP4_92PX
/*-----------------
* BITMAPS
*----------------*/
/*Store the image of the glyphs*/
#include "bin_font.h"
/*---------------------
* GLYPH DESCRIPTION
*--------------------*/
/*---------------------
* CHARACTER MAPPING
*--------------------*/
/*Collect the unicode lists and glyph_id offsets*/
static const lv_font_fmt_txt_cmap_t cmaps[] =
{
{
.range_start = 37, .range_length = 1, .glyph_id_start = 1,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
},
{
.range_start = 45, .range_length = 14, .glyph_id_start = 2,
.unicode_list = NULL, .glyph_id_ofs_list = NULL, .list_length = 0, .type = LV_FONT_FMT_TXT_CMAP_FORMAT0_TINY
}
};
/*-----------------
* KERNING
*----------------*/
/*Pair left and right glyphs for kerning*/
static const uint8_t kern_pair_glyph_ids[] =
{
4, 2,
4, 3,
4, 4
};
/* Kerning between the respective left and right glyphs
* 4.4 format which needs to scaled with `kern_scale`*/
static const int8_t kern_pair_values[] =
{
-37, -119, -77
};
/*Collect the kern pair's data in one place*/
static const lv_font_fmt_txt_kern_pair_t kern_pairs =
{
.glyph_ids = kern_pair_glyph_ids,
.values = kern_pair_values,
.pair_cnt = 3,
.glyph_ids_size = 0
};
/*--------------------
* ALL CUSTOM DATA
*--------------------*/
#if LVGL_VERSION_MAJOR >= 8
/*Store all the custom data of the font*/
static lv_font_fmt_txt_glyph_cache_t cache;
static const lv_font_fmt_txt_dsc_t font_dsc = {
#else
static lv_font_fmt_txt_dsc_t font_dsc = {
#endif
.glyph_bitmap = Number_HarmonyOS_bpp4_92px_glyph_bitmap,
.glyph_dsc = Number_HarmonyOS_bpp4_92px_glyph_dsc,
.cmaps = cmaps,
.kern_dsc = &kern_pairs,
.kern_scale = 28,
.cmap_num = 2,
.bpp = 4,
.kern_classes = 0,
.bitmap_format = 0,
#if LVGL_VERSION_MAJOR >= 8
.cache = &cache
#endif
};
/*-----------------
* PUBLIC FONT
*----------------*/
/*Initialize a public general font descriptor*/
#if LVGL_VERSION_MAJOR >= 8
const lv_font_t Number_HarmonyOS_bpp4_92px = {
#else
lv_font_t Number_HarmonyOS_bpp4_92px = {
#endif
.get_glyph_dsc = lv_font_get_glyph_dsc_fmt_txt, /*Function pointer to get glyph's data*/
.get_glyph_bitmap = lv_font_get_bitmap_fmt_txt, /*Function pointer to get glyph's bitmap*/
.line_height = 70, /*The maximum line height required by the font*/
.base_line = 1, /*Baseline measured from the bottom of the line*/
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
.subpx = LV_FONT_SUBPX_NONE,
#endif
#if LV_VERSION_CHECK(7, 4, 0) || LVGL_VERSION_MAJOR >= 8
.underline_position = -7,
.underline_thickness = 5,
#endif
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
};
#endif /*#if NUMBER_HARMONYOS_BPP4_92PX*/

File diff suppressed because one or more lines are too long

View File

@ -1,282 +0,0 @@
#if 1
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif
#ifndef LV_ATTRIBUTE_IMG_BATT_FULL_GREN
#define LV_ATTRIBUTE_IMG_BATT_FULL_GREN
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_BATT_FULL_GREN uint8_t batt_full_gren_map[] = {
#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
/*Pixel format: Alpha 8 bit, Red: 3 bit, Green: 3 bit, Blue: 2 bit*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x24, 0x44, 0x24, 0x51, 0x25, 0x42, 0x25, 0x44, 0x25, 0x44, 0x25, 0x44, 0x25, 0x42, 0x24, 0x5d, 0x24, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x24, 0x61, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x40, 0x24, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0a, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0x02, 0xdb, 0x60, 0xff, 0x71, 0xff, 0x66, 0xff, 0x63, 0xff, 0x63, 0xff, 0x63, 0xff, 0x63, 0xff, 0x63, 0xfb, 0x77, 0x8e, 0x87, 0xb2, 0x61, 0xfb, 0x61, 0xdb, 0x61, 0xdb, 0x61, 0xfb, 0x61, 0xd7, 0x61, 0x8e, 0x6c, 0x92, 0x81, 0xff, 0x67, 0xff, 0x63, 0xff, 0x63, 0xff, 0x63, 0xff, 0x64, 0xff, 0x64, 0xff, 0x67, 0xd7, 0x71, 0xb7, 0x40, 0x00, 0x00,
0xff, 0x02, 0xff, 0xba, 0xff, 0xff, 0xdf, 0xff, 0xdf, 0xf4, 0xdf, 0xec, 0xdf, 0xeb, 0xdf, 0xec, 0xdf, 0xec, 0xdf, 0xec, 0xdf, 0xe5, 0xff, 0xdf, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe1, 0xdf, 0xeb, 0xdf, 0xec, 0xdf, 0xec, 0xdf, 0xec, 0xdf, 0xec, 0xdf, 0xef, 0xbf, 0xf3, 0xdf, 0xfa, 0xfb, 0xf0, 0xff, 0x6f,
0xff, 0x72, 0x9a, 0xff, 0x31, 0xf7, 0x15, 0xfc, 0x15, 0xfc, 0x19, 0xfb, 0x19, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x9e, 0xfb, 0x9f, 0xfb, 0x9e, 0xfb, 0x9e, 0xfb, 0xbf, 0xfb, 0x7e, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfb, 0x1d, 0xfc, 0x1d, 0xf7, 0x3d, 0xf9, 0x9a, 0xe0,
0xbb, 0xde, 0x0c, 0xff, 0x10, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x9e, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x7e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf7,
0x31, 0xf6, 0x10, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf4,
0x11, 0xf2, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf0, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf1, 0x11, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x11, 0xf2, 0x10, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xf2,
0x55, 0xf1, 0x0c, 0xff, 0x15, 0xff, 0x15, 0xff, 0x19, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x3d, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x9e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xfe,
0xff, 0xbb, 0x31, 0xff, 0x10, 0xff, 0x14, 0xff, 0x18, 0xff, 0x19, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x9e, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0x9f, 0xff, 0xbf, 0xff, 0x7e, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x1d, 0xff, 0x59, 0xd9,
0xff, 0x3e, 0xdb, 0xff, 0x76, 0xfe, 0x76, 0xe7, 0x56, 0xd9, 0x56, 0xcb, 0x7a, 0xc6, 0x7a, 0xc8, 0x7a, 0xc8, 0x5a, 0xc8, 0x7a, 0xc8, 0x9a, 0xc8, 0xbb, 0xc8, 0x9a, 0xc8, 0x9a, 0xc8, 0xbb, 0xc8, 0x9a, 0xc8, 0x5a, 0xc8, 0x5a, 0xc8, 0x7a, 0xc8, 0x7a, 0xc8, 0x7a, 0xc8, 0x7a, 0xc8, 0x7a, 0xc7, 0x7a, 0xc9, 0x5a, 0xcd, 0x5a, 0xd2, 0x59, 0xd3, 0x55, 0xeb, 0xb7, 0xa9,
0x00, 0x00, 0xff, 0x6e, 0xff, 0xcc, 0xfb, 0xbe, 0xfb, 0xa7, 0xfb, 0x99, 0xfb, 0x95, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x96, 0xfb, 0x97, 0xf7, 0x9b, 0xf7, 0xa1, 0xd7, 0xb1, 0xd7, 0xa7, 0xff, 0x36,
#endif
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP == 0
/*Pixel format: Alpha 8 bit, Red: 5 bit, Green: 6 bit, Blue: 5 bit*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xe4, 0x20, 0x44, 0x04, 0x21, 0x51, 0x04, 0x21, 0x42, 0x04, 0x21, 0x44, 0x04, 0x21, 0x44, 0x04, 0x21, 0x44, 0x04, 0x21, 0x42, 0xe4, 0x20, 0x5d, 0xe4, 0x20, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x18, 0x20, 0xc3, 0x18, 0x61, 0x41, 0x08, 0x1f, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x1a, 0x61, 0x08, 0x40, 0xe3, 0x18, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x31, 0x0a, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x18, 0xce, 0x60, 0xdd, 0xee, 0x71, 0x7f, 0xff, 0x66, 0x3e, 0xff, 0x63, 0x1e, 0xff, 0x63, 0x1e, 0xff, 0x63, 0xfe, 0xfe, 0x63, 0xff, 0xff, 0x63, 0x1a, 0xde, 0x77, 0x2e, 0x73, 0x87, 0x72, 0x9c, 0x61, 0x3a, 0xd6, 0x61, 0xd9, 0xcd, 0x61, 0xd8, 0xcd, 0x61, 0x1a, 0xd6, 0x61, 0x98, 0xcd, 0x61, 0x70, 0x8b, 0x6c, 0x91, 0x8b, 0x81, 0xfe, 0xfe, 0x67, 0xdf, 0xff, 0x63, 0xdd, 0xf6, 0x63, 0xfe, 0xfe, 0x63, 0xfe, 0xfe, 0x64, 0xfe, 0xf6, 0x64, 0x3f, 0xff, 0x67, 0x17, 0xbd, 0x71, 0x35, 0xad, 0x40, 0x00, 0x00, 0x00,
0xff, 0xff, 0x02, 0xff, 0xff, 0xba, 0x5d, 0xef, 0xff, 0xb8, 0xc6, 0xff, 0xb8, 0xbe, 0xf4, 0xd8, 0xc6, 0xec, 0xf9, 0xbe, 0xeb, 0xf8, 0xc6, 0xec, 0xf8, 0xc6, 0xec, 0xf8, 0xbe, 0xec, 0x9b, 0xd7, 0xe5, 0xff, 0xf7, 0xdf, 0xff, 0xf7, 0xec, 0xdd, 0xef, 0xec, 0xdd, 0xef, 0xec, 0xde, 0xef, 0xec, 0xdd, 0xe7, 0xec, 0xfc, 0xdf, 0xec, 0xfe, 0xe7, 0xe8, 0xfd, 0xe7, 0xe1, 0x7a, 0xcf, 0xeb, 0xf8, 0xbe, 0xec, 0x19, 0xc7, 0xec, 0x19, 0xc7, 0xec, 0xf8, 0xc6, 0xec, 0xd8, 0xbe, 0xef, 0xb7, 0xb6, 0xf3, 0xf8, 0xbe, 0xfa, 0x5a, 0xde, 0xf0, 0xdf, 0xfe, 0x6f,
0xff, 0xff, 0x72, 0x91, 0x7d, 0xff, 0x85, 0x1c, 0xf7, 0xc4, 0x04, 0xfc, 0x66, 0x05, 0xfc, 0xe6, 0x05, 0xfb, 0x87, 0x06, 0xfb, 0xe7, 0x06, 0xfb, 0x48, 0x0f, 0xfb, 0x87, 0x07, 0xfb, 0x89, 0x17, 0xfb, 0xd4, 0x87, 0xfb, 0xd5, 0x8f, 0xfb, 0xd4, 0x87, 0xfb, 0xd4, 0x87, 0xfb, 0xd5, 0x97, 0xfb, 0xb2, 0x6f, 0xfb, 0x87, 0x07, 0xfb, 0x88, 0x07, 0xfb, 0x88, 0x0f, 0xfb, 0x88, 0x0f, 0xfb, 0x88, 0x0f, 0xfb, 0x88, 0x0f, 0xfb, 0x88, 0x0f, 0xfb, 0x88, 0x0f, 0xfb, 0x88, 0x07, 0xfb, 0x88, 0x07, 0xfc, 0xa8, 0x07, 0xf7, 0x09, 0x27, 0xf9, 0x13, 0x8e, 0xe0,
0x14, 0x9e, 0xde, 0x20, 0x03, 0xff, 0x42, 0x04, 0xff, 0x05, 0x05, 0xff, 0x86, 0x05, 0xff, 0x06, 0x06, 0xff, 0x87, 0x06, 0xff, 0x07, 0x07, 0xff, 0x68, 0x07, 0xff, 0xa7, 0x07, 0xff, 0xc9, 0x0f, 0xff, 0xf4, 0x87, 0xff, 0xf5, 0x97, 0xff, 0xf4, 0x8f, 0xff, 0xf4, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xf2, 0x6f, 0xff, 0xa7, 0x07, 0xff, 0xa8, 0x07, 0xff, 0xa8, 0x07, 0xff, 0xa8, 0x07, 0xff, 0xa8, 0x07, 0xff, 0xa8, 0x07, 0xff, 0xa8, 0x07, 0xff, 0xa8, 0x07, 0xff, 0xa8, 0x07, 0xff, 0xa8, 0x07, 0xff, 0xc8, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xa7, 0x07, 0xf7,
0x26, 0x14, 0xf6, 0xa2, 0x03, 0xff, 0xa6, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x17, 0xff, 0xa8, 0x0f, 0xf4,
0x04, 0x04, 0xf2, 0x05, 0x04, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf0, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x25, 0x0c, 0xf1, 0x04, 0x04, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0x04, 0x0c, 0xf2, 0xe4, 0x03, 0xff, 0x85, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xf2,
0xcc, 0x4c, 0xf1, 0x60, 0x03, 0xff, 0xa6, 0x0c, 0xff, 0x06, 0x0d, 0xff, 0x87, 0x0d, 0xff, 0x07, 0x0e, 0xff, 0x88, 0x0e, 0xff, 0x08, 0x0f, 0xff, 0x69, 0x0f, 0xff, 0xa8, 0x07, 0xff, 0xaa, 0x17, 0xff, 0xd4, 0x87, 0xff, 0xd5, 0x97, 0xff, 0xd5, 0x8f, 0xff, 0xd5, 0x8f, 0xff, 0xf6, 0x9f, 0xff, 0xd2, 0x77, 0xff, 0xa8, 0x0f, 0xff, 0xa8, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x0f, 0xff, 0xa9, 0x17, 0xff, 0xc9, 0x0f, 0xff, 0xe8, 0x07, 0xfe,
0x1c, 0xe7, 0xbb, 0x05, 0x14, 0xff, 0x00, 0x04, 0xff, 0xe3, 0x04, 0xff, 0xa4, 0x05, 0xff, 0x44, 0x06, 0xff, 0xc5, 0x06, 0xff, 0x46, 0x07, 0xff, 0xc6, 0x07, 0xff, 0xe5, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xf4, 0x7f, 0xff, 0xf5, 0x8f, 0xff, 0xf4, 0x87, 0xff, 0xf4, 0x87, 0xff, 0xf6, 0x97, 0xff, 0xf2, 0x6f, 0xff, 0xe6, 0x07, 0xff, 0xe6, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xe7, 0x07, 0xff, 0xe6, 0x07, 0xff, 0x4b, 0x36, 0xd9,
0xff, 0xff, 0x3e, 0x79, 0xc6, 0xff, 0x2f, 0x75, 0xfe, 0x2d, 0x5d, 0xe7, 0x2d, 0x55, 0xd9, 0x4d, 0x55, 0xcb, 0xad, 0x55, 0xc6, 0xee, 0x55, 0xc8, 0x2e, 0x56, 0xc8, 0x2d, 0x4e, 0xc8, 0x2e, 0x5e, 0xc8, 0x53, 0x96, 0xc8, 0x54, 0x9e, 0xc8, 0x54, 0x96, 0xc8, 0x54, 0x96, 0xc8, 0x54, 0x9e, 0xc8, 0x53, 0x86, 0xc8, 0x2e, 0x56, 0xc8, 0x2e, 0x56, 0xc8, 0x2e, 0x56, 0xc8, 0x2e, 0x56, 0xc8, 0x2e, 0x56, 0xc8, 0x2e, 0x56, 0xc8, 0x2e, 0x56, 0xc7, 0x2e, 0x56, 0xc9, 0x0d, 0x4e, 0xcd, 0xcc, 0x45, 0xd2, 0xcc, 0x45, 0xd3, 0xaa, 0x44, 0xeb, 0xb5, 0xac, 0xa9,
0x00, 0x00, 0x00, 0xdf, 0xff, 0x6e, 0xde, 0xf6, 0xcc, 0x7c, 0xee, 0xbe, 0x1b, 0xe6, 0xa7, 0xfb, 0xe5, 0x99, 0xfb, 0xe5, 0x95, 0xfb, 0xe5, 0x96, 0xdb, 0xe5, 0x96, 0xdb, 0xe5, 0x96, 0xdb, 0xe5, 0x96, 0xb9, 0xcd, 0x96, 0xb8, 0xcd, 0x96, 0xb9, 0xcd, 0x96, 0xb9, 0xcd, 0x96, 0xb8, 0xcd, 0x96, 0xb9, 0xd5, 0x96, 0xdb, 0xe5, 0x96, 0xdb, 0xe5, 0x96, 0xdb, 0xe5, 0x96, 0xdb, 0xe5, 0x96, 0xdb, 0xe5, 0x96, 0xdb, 0xe5, 0x96, 0xdb, 0xe5, 0x96, 0xbb, 0xe5, 0x97, 0x9a, 0xdd, 0x9b, 0x59, 0xdd, 0xa1, 0xd7, 0xc4, 0xb1, 0xf7, 0xc4, 0xa7, 0xbf, 0xff, 0x36,
#endif
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP != 0
/*Pixel format: Alpha 8 bit, Red: 5 bit, Green: 6 bit, Blue: 5 bit BUT the 2 color bytes are swapped*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0xe4, 0x44, 0x21, 0x04, 0x51, 0x21, 0x04, 0x42, 0x21, 0x04, 0x44, 0x21, 0x04, 0x44, 0x21, 0x04, 0x44, 0x21, 0x04, 0x42, 0x20, 0xe4, 0x5d, 0x20, 0xe4, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc2, 0x20, 0x18, 0xc3, 0x61, 0x08, 0x41, 0x1f, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x1a, 0x08, 0x61, 0x40, 0x18, 0xe3, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xa6, 0x0a, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0xce, 0x18, 0x60, 0xee, 0xdd, 0x71, 0xff, 0x7f, 0x66, 0xff, 0x3e, 0x63, 0xff, 0x1e, 0x63, 0xff, 0x1e, 0x63, 0xfe, 0xfe, 0x63, 0xff, 0xff, 0x63, 0xde, 0x1a, 0x77, 0x73, 0x2e, 0x87, 0x9c, 0x72, 0x61, 0xd6, 0x3a, 0x61, 0xcd, 0xd9, 0x61, 0xcd, 0xd8, 0x61, 0xd6, 0x1a, 0x61, 0xcd, 0x98, 0x61, 0x8b, 0x70, 0x6c, 0x8b, 0x91, 0x81, 0xfe, 0xfe, 0x67, 0xff, 0xdf, 0x63, 0xf6, 0xdd, 0x63, 0xfe, 0xfe, 0x63, 0xfe, 0xfe, 0x64, 0xf6, 0xfe, 0x64, 0xff, 0x3f, 0x67, 0xbd, 0x17, 0x71, 0xad, 0x35, 0x40, 0x00, 0x00, 0x00,
0xff, 0xff, 0x02, 0xff, 0xff, 0xba, 0xef, 0x5d, 0xff, 0xc6, 0xb8, 0xff, 0xbe, 0xb8, 0xf4, 0xc6, 0xd8, 0xec, 0xbe, 0xf9, 0xeb, 0xc6, 0xf8, 0xec, 0xc6, 0xf8, 0xec, 0xbe, 0xf8, 0xec, 0xd7, 0x9b, 0xe5, 0xf7, 0xff, 0xdf, 0xf7, 0xff, 0xec, 0xef, 0xdd, 0xec, 0xef, 0xdd, 0xec, 0xef, 0xde, 0xec, 0xe7, 0xdd, 0xec, 0xdf, 0xfc, 0xec, 0xe7, 0xfe, 0xe8, 0xe7, 0xfd, 0xe1, 0xcf, 0x7a, 0xeb, 0xbe, 0xf8, 0xec, 0xc7, 0x19, 0xec, 0xc7, 0x19, 0xec, 0xc6, 0xf8, 0xec, 0xbe, 0xd8, 0xef, 0xb6, 0xb7, 0xf3, 0xbe, 0xf8, 0xfa, 0xde, 0x5a, 0xf0, 0xfe, 0xdf, 0x6f,
0xff, 0xff, 0x72, 0x7d, 0x91, 0xff, 0x1c, 0x85, 0xf7, 0x04, 0xc4, 0xfc, 0x05, 0x66, 0xfc, 0x05, 0xe6, 0xfb, 0x06, 0x87, 0xfb, 0x06, 0xe7, 0xfb, 0x0f, 0x48, 0xfb, 0x07, 0x87, 0xfb, 0x17, 0x89, 0xfb, 0x87, 0xd4, 0xfb, 0x8f, 0xd5, 0xfb, 0x87, 0xd4, 0xfb, 0x87, 0xd4, 0xfb, 0x97, 0xd5, 0xfb, 0x6f, 0xb2, 0xfb, 0x07, 0x87, 0xfb, 0x07, 0x88, 0xfb, 0x0f, 0x88, 0xfb, 0x0f, 0x88, 0xfb, 0x0f, 0x88, 0xfb, 0x0f, 0x88, 0xfb, 0x0f, 0x88, 0xfb, 0x0f, 0x88, 0xfb, 0x07, 0x88, 0xfb, 0x07, 0x88, 0xfc, 0x07, 0xa8, 0xf7, 0x27, 0x09, 0xf9, 0x8e, 0x13, 0xe0,
0x9e, 0x14, 0xde, 0x03, 0x20, 0xff, 0x04, 0x42, 0xff, 0x05, 0x05, 0xff, 0x05, 0x86, 0xff, 0x06, 0x06, 0xff, 0x06, 0x87, 0xff, 0x07, 0x07, 0xff, 0x07, 0x68, 0xff, 0x07, 0xa7, 0xff, 0x0f, 0xc9, 0xff, 0x87, 0xf4, 0xff, 0x97, 0xf5, 0xff, 0x8f, 0xf4, 0xff, 0x8f, 0xf4, 0xff, 0x9f, 0xf6, 0xff, 0x6f, 0xf2, 0xff, 0x07, 0xa7, 0xff, 0x07, 0xa8, 0xff, 0x07, 0xa8, 0xff, 0x07, 0xa8, 0xff, 0x07, 0xa8, 0xff, 0x07, 0xa8, 0xff, 0x07, 0xa8, 0xff, 0x07, 0xa8, 0xff, 0x07, 0xa8, 0xff, 0x07, 0xa8, 0xff, 0x07, 0xc8, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xa7, 0xf7,
0x14, 0x26, 0xf6, 0x03, 0xa2, 0xff, 0x0c, 0xa6, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x17, 0xa9, 0xff, 0x0f, 0xa8, 0xf4,
0x04, 0x04, 0xf2, 0x04, 0x05, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf0, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x25, 0xf1, 0x04, 0x04, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x0c, 0x04, 0xf2, 0x03, 0xe4, 0xff, 0x0c, 0x85, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xf2,
0x4c, 0xcc, 0xf1, 0x03, 0x60, 0xff, 0x0c, 0xa6, 0xff, 0x0d, 0x06, 0xff, 0x0d, 0x87, 0xff, 0x0e, 0x07, 0xff, 0x0e, 0x88, 0xff, 0x0f, 0x08, 0xff, 0x0f, 0x69, 0xff, 0x07, 0xa8, 0xff, 0x17, 0xaa, 0xff, 0x87, 0xd4, 0xff, 0x97, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x8f, 0xd5, 0xff, 0x9f, 0xf6, 0xff, 0x77, 0xd2, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa8, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x0f, 0xa9, 0xff, 0x17, 0xa9, 0xff, 0x0f, 0xc9, 0xff, 0x07, 0xe8, 0xfe,
0xe7, 0x1c, 0xbb, 0x14, 0x05, 0xff, 0x04, 0x00, 0xff, 0x04, 0xe3, 0xff, 0x05, 0xa4, 0xff, 0x06, 0x44, 0xff, 0x06, 0xc5, 0xff, 0x07, 0x46, 0xff, 0x07, 0xc6, 0xff, 0x07, 0xe5, 0xff, 0x07, 0xe7, 0xff, 0x7f, 0xf4, 0xff, 0x8f, 0xf5, 0xff, 0x87, 0xf4, 0xff, 0x87, 0xf4, 0xff, 0x97, 0xf6, 0xff, 0x6f, 0xf2, 0xff, 0x07, 0xe6, 0xff, 0x07, 0xe6, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xe7, 0xff, 0x07, 0xe6, 0xff, 0x36, 0x4b, 0xd9,
0xff, 0xff, 0x3e, 0xc6, 0x79, 0xff, 0x75, 0x2f, 0xfe, 0x5d, 0x2d, 0xe7, 0x55, 0x2d, 0xd9, 0x55, 0x4d, 0xcb, 0x55, 0xad, 0xc6, 0x55, 0xee, 0xc8, 0x56, 0x2e, 0xc8, 0x4e, 0x2d, 0xc8, 0x5e, 0x2e, 0xc8, 0x96, 0x53, 0xc8, 0x9e, 0x54, 0xc8, 0x96, 0x54, 0xc8, 0x96, 0x54, 0xc8, 0x9e, 0x54, 0xc8, 0x86, 0x53, 0xc8, 0x56, 0x2e, 0xc8, 0x56, 0x2e, 0xc8, 0x56, 0x2e, 0xc8, 0x56, 0x2e, 0xc8, 0x56, 0x2e, 0xc8, 0x56, 0x2e, 0xc8, 0x56, 0x2e, 0xc7, 0x56, 0x2e, 0xc9, 0x4e, 0x0d, 0xcd, 0x45, 0xcc, 0xd2, 0x45, 0xcc, 0xd3, 0x44, 0xaa, 0xeb, 0xac, 0xb5, 0xa9,
0x00, 0x00, 0x00, 0xff, 0xdf, 0x6e, 0xf6, 0xde, 0xcc, 0xee, 0x7c, 0xbe, 0xe6, 0x1b, 0xa7, 0xe5, 0xfb, 0x99, 0xe5, 0xfb, 0x95, 0xe5, 0xfb, 0x96, 0xe5, 0xdb, 0x96, 0xe5, 0xdb, 0x96, 0xe5, 0xdb, 0x96, 0xcd, 0xb9, 0x96, 0xcd, 0xb8, 0x96, 0xcd, 0xb9, 0x96, 0xcd, 0xb9, 0x96, 0xcd, 0xb8, 0x96, 0xd5, 0xb9, 0x96, 0xe5, 0xdb, 0x96, 0xe5, 0xdb, 0x96, 0xe5, 0xdb, 0x96, 0xe5, 0xdb, 0x96, 0xe5, 0xdb, 0x96, 0xe5, 0xdb, 0x96, 0xe5, 0xdb, 0x96, 0xe5, 0xbb, 0x97, 0xdd, 0x9a, 0x9b, 0xdd, 0x59, 0xa1, 0xc4, 0xd7, 0xb1, 0xc4, 0xf7, 0xa7, 0xff, 0xbf, 0x36,
#endif
#if LV_COLOR_DEPTH == 32
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x1e, 0x1e, 0x1e, 0x44, 0x1f, 0x1f, 0x1f, 0x51, 0x22, 0x22, 0x22, 0x42, 0x21, 0x21, 0x21, 0x44, 0x21, 0x21, 0x21, 0x44, 0x21, 0x21, 0x21, 0x44, 0x22, 0x22, 0x22, 0x42, 0x1e, 0x1e, 0x1e, 0x5d, 0x1e, 0x1e, 0x1e, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x17, 0x17, 0x20, 0x1a, 0x1a, 0x1a, 0x61, 0x08, 0x08, 0x08, 0x1f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1a, 0x0b, 0x0b, 0x0b, 0x40, 0x1c, 0x1c, 0x1c, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x0a, 0x00, 0x00, 0x00, 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, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0xc4, 0xbf, 0xc7, 0x60, 0xe8, 0xda, 0xec, 0x71, 0xfa, 0xeb, 0xff, 0x66, 0xf2, 0xe5, 0xf9, 0x63, 0xf2, 0xe2, 0xf9, 0x63, 0xf2, 0xe0, 0xf7, 0x63, 0xf2, 0xdd, 0xf7, 0x63, 0xff, 0xff, 0xff, 0x63, 0xd2, 0xc0, 0xd8, 0x77, 0x71, 0x66, 0x73, 0x87, 0x93, 0x8b, 0x95, 0x61, 0xcd, 0xc5, 0xd2, 0x61, 0xc5, 0xba, 0xc7, 0x61, 0xc2, 0xb8, 0xc5, 0x61, 0xcd, 0xc2, 0xd2, 0x61, 0xc2, 0xb0, 0xca, 0x61, 0x81, 0x6e, 0x88, 0x6c, 0x86, 0x72, 0x8c, 0x81, 0xf0, 0xde, 0xf7, 0x67, 0xff, 0xf7, 0xff, 0x63, 0xec, 0xda, 0xf4, 0x63, 0xf2, 0xdd, 0xf7, 0x63, 0xf2, 0xdd, 0xf7, 0x64, 0xef, 0xdb, 0xf4, 0x64, 0xfa, 0xe6, 0xff, 0x67, 0xb6, 0xa2, 0xbb, 0x71, 0xab, 0xa3, 0xab, 0x40, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0x02, 0xff, 0xfd, 0xff, 0xba, 0xea, 0xea, 0xea, 0xff, 0xc3, 0xd6, 0xc0, 0xff, 0xc2, 0xd5, 0xbb, 0xf4, 0xc3, 0xd8, 0xbd, 0xec, 0xc5, 0xdb, 0xbc, 0xeb, 0xc4, 0xdd, 0xbd, 0xec, 0xc4, 0xdd, 0xbd, 0xec, 0xc2, 0xdc, 0xb7, 0xec, 0xd9, 0xf1, 0xd0, 0xe5, 0xf9, 0xfe, 0xf3, 0xdf, 0xf8, 0xff, 0xf4, 0xec, 0xea, 0xf8, 0xe6, 0xec, 0xeb, 0xf9, 0xe8, 0xec, 0xed, 0xf9, 0xea, 0xec, 0xe8, 0xf8, 0xe1, 0xec, 0xe1, 0xfc, 0xd9, 0xec, 0xed, 0xff, 0xe3, 0xe8, 0xea, 0xff, 0xe1, 0xe1, 0xd2, 0xeb, 0xc8, 0xeb, 0xc1, 0xdb, 0xb8, 0xec, 0xc5, 0xdf, 0xbd, 0xec, 0xc5, 0xdf, 0xbd, 0xec, 0xc4, 0xde, 0xbd, 0xec, 0xc2, 0xda, 0xb7, 0xef, 0xb7, 0xd5, 0xaf, 0xf3, 0xc0, 0xdb, 0xb9, 0xfa, 0xd4, 0xc7, 0xd8, 0xf0, 0xf5, 0xda, 0xff, 0x6f,
0xff, 0xff, 0xff, 0x72, 0x8a, 0xb1, 0x79, 0xff, 0x2c, 0x8f, 0x18, 0xf7, 0x22, 0x99, 0x00, 0xfc, 0x2d, 0xae, 0x01, 0xfc, 0x32, 0xbe, 0x03, 0xfb, 0x37, 0xcf, 0x03, 0xfb, 0x3c, 0xde, 0x04, 0xfb, 0x40, 0xea, 0x05, 0xfb, 0x39, 0xf1, 0x00, 0xfb, 0x49, 0xf2, 0x0d, 0xfb, 0x9d, 0xf8, 0x7d, 0xfb, 0xa6, 0xf7, 0x8c, 0xfb, 0x9f, 0xf7, 0x82, 0xfb, 0x9f, 0xf7, 0x82, 0xfb, 0xac, 0xf8, 0x93, 0xfb, 0x8e, 0xf6, 0x6a, 0xfb, 0x3c, 0xf1, 0x00, 0xfb, 0x3d, 0xf1, 0x00, 0xfb, 0x43, 0xf1, 0x05, 0xfb, 0x42, 0xf1, 0x05, 0xfb, 0x42, 0xf1, 0x05, 0xfb, 0x42, 0xf1, 0x05, 0xfb, 0x42, 0xf1, 0x05, 0xfb, 0x42, 0xf1, 0x05, 0xfb, 0x42, 0xf0, 0x04, 0xfb, 0x3f, 0xf1, 0x02, 0xfc, 0x3d, 0xf3, 0x02, 0xf7, 0x4b, 0xe1, 0x1e, 0xf9, 0x98, 0xc1, 0x8a, 0xe0,
0xa3, 0xbf, 0x98, 0xde, 0x00, 0x66, 0x00, 0xff, 0x12, 0x87, 0x00, 0xff, 0x2a, 0xa0, 0x00, 0xff, 0x2d, 0xb0, 0x00, 0xff, 0x31, 0xc1, 0x00, 0xff, 0x36, 0xd2, 0x00, 0xff, 0x3c, 0xe1, 0x01, 0xff, 0x3f, 0xee, 0x02, 0xff, 0x39, 0xf6, 0x00, 0xff, 0x47, 0xf7, 0x0a, 0xff, 0x9f, 0xfc, 0x7f, 0xff, 0xaa, 0xfc, 0x8e, 0xff, 0xa3, 0xfc, 0x85, 0xff, 0xa3, 0xfc, 0x85, 0xff, 0xb0, 0xfd, 0x95, 0xff, 0x90, 0xfb, 0x6c, 0xff, 0x3c, 0xf6, 0x00, 0xff, 0x3d, 0xf6, 0x00, 0xff, 0x41, 0xf6, 0x02, 0xff, 0x41, 0xf6, 0x02, 0xff, 0x41, 0xf6, 0x02, 0xff, 0x41, 0xf6, 0x02, 0xff, 0x41, 0xf6, 0x02, 0xff, 0x41, 0xf6, 0x02, 0xff, 0x41, 0xf6, 0x02, 0xff, 0x42, 0xf6, 0x03, 0xff, 0x43, 0xf7, 0x03, 0xff, 0x36, 0xff, 0x00, 0xff, 0x3c, 0xf6, 0x00, 0xf7,
0x30, 0x83, 0x13, 0xf6, 0x0f, 0x76, 0x00, 0xff, 0x2d, 0x93, 0x08, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x4a, 0xf3, 0x0e, 0xff, 0x43, 0xf5, 0x05, 0xf4,
0x23, 0x81, 0x03, 0xf2, 0x26, 0x80, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe1, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe1, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2c, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe1, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2c, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe1, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe1, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe1, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb1, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x2b, 0x85, 0x0c, 0xf0, 0x22, 0x7e, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x28, 0x84, 0x08, 0xf1, 0x24, 0x7f, 0x02, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe1, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0b, 0xf2,
0x24, 0x80, 0x05, 0xf2, 0x1f, 0x7e, 0x01, 0xff, 0x2b, 0x92, 0x07, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x47, 0xf4, 0x0a, 0xf2,
0x5e, 0x99, 0x49, 0xf1, 0x00, 0x6d, 0x00, 0xff, 0x2d, 0x93, 0x06, 0xff, 0x30, 0xa1, 0x08, 0xff, 0x35, 0xb2, 0x09, 0xff, 0x39, 0xc2, 0x0a, 0xff, 0x3e, 0xd2, 0x0a, 0xff, 0x43, 0xe0, 0x0b, 0xff, 0x46, 0xed, 0x0c, 0xff, 0x40, 0xf4, 0x02, 0xff, 0x4e, 0xf5, 0x14, 0xff, 0xa1, 0xfa, 0x83, 0xff, 0xac, 0xfa, 0x91, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xa5, 0xfa, 0x88, 0xff, 0xb1, 0xfb, 0x98, 0xff, 0x93, 0xf9, 0x71, 0xff, 0x43, 0xf4, 0x06, 0xff, 0x44, 0xf4, 0x07, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf4, 0x0c, 0xff, 0x48, 0xf3, 0x0d, 0xff, 0x49, 0xf7, 0x0c, 0xff, 0x3f, 0xff, 0x00, 0xfe,
0xe2, 0xe2, 0xdf, 0xbb, 0x27, 0x7f, 0x12, 0xff, 0x00, 0x80, 0x00, 0xff, 0x15, 0x9c, 0x00, 0xff, 0x1f, 0xb3, 0x00, 0xff, 0x24, 0xc7, 0x00, 0xff, 0x29, 0xd9, 0x00, 0xff, 0x2f, 0xea, 0x00, 0xff, 0x33, 0xf9, 0x00, 0xff, 0x2c, 0xff, 0x00, 0xff, 0x3c, 0xff, 0x00, 0xff, 0x9f, 0xff, 0x7b, 0xff, 0xac, 0xff, 0x8c, 0xff, 0xa4, 0xff, 0x81, 0xff, 0xa4, 0xff, 0x81, 0xff, 0xb2, 0xff, 0x94, 0xff, 0x8e, 0xff, 0x66, 0xff, 0x2f, 0xff, 0x00, 0xff, 0x30, 0xff, 0x00, 0xff, 0x35, 0xff, 0x00, 0xff, 0x35, 0xff, 0x00, 0xff, 0x35, 0xff, 0x00, 0xff, 0x35, 0xff, 0x00, 0xff, 0x35, 0xff, 0x00, 0xff, 0x35, 0xff, 0x00, 0xff, 0x37, 0xff, 0x00, 0xff, 0x39, 0xff, 0x00, 0xff, 0x39, 0xff, 0x00, 0xff, 0x34, 0xff, 0x00, 0xff, 0x59, 0xca, 0x31, 0xd9,
0xff, 0xff, 0xff, 0x3e, 0xc8, 0xcb, 0xc3, 0xff, 0x75, 0xa4, 0x6f, 0xfe, 0x66, 0xa3, 0x57, 0xe7, 0x66, 0xa4, 0x4f, 0xd9, 0x65, 0xa9, 0x4d, 0xcb, 0x6a, 0xb5, 0x51, 0xc6, 0x6d, 0xbc, 0x51, 0xc8, 0x6e, 0xc3, 0x51, 0xc8, 0x6c, 0xc5, 0x4c, 0xc8, 0x72, 0xc6, 0x55, 0xc8, 0x9c, 0xc9, 0x8d, 0xc8, 0xa1, 0xc9, 0x95, 0xc8, 0x9f, 0xc9, 0x90, 0xc8, 0x9f, 0xc9, 0x90, 0xc8, 0xa4, 0xc9, 0x97, 0xc8, 0x96, 0xc9, 0x84, 0xc8, 0x6d, 0xc5, 0x4f, 0xc8, 0x6d, 0xc5, 0x50, 0xc8, 0x70, 0xc5, 0x51, 0xc8, 0x70, 0xc5, 0x51, 0xc8, 0x70, 0xc5, 0x51, 0xc8, 0x70, 0xc5, 0x51, 0xc8, 0x70, 0xc6, 0x53, 0xc7, 0x6e, 0xc4, 0x51, 0xc9, 0x68, 0xbf, 0x4a, 0xcd, 0x62, 0xb9, 0x44, 0xd2, 0x5e, 0xb7, 0x3d, 0xd3, 0x54, 0x93, 0x41, 0xeb, 0xa5, 0x93, 0xac, 0xa9,
0x00, 0x00, 0x00, 0x00, 0xff, 0xf8, 0xff, 0x6e, 0xed, 0xd9, 0xf1, 0xcc, 0xe4, 0xce, 0xea, 0xbe, 0xda, 0xc1, 0xe1, 0xa7, 0xd5, 0xbc, 0xdf, 0x99, 0xd9, 0xbc, 0xe3, 0x95, 0xd7, 0xbb, 0xe3, 0x96, 0xd6, 0xb7, 0xe2, 0x96, 0xd7, 0xb7, 0xe3, 0x96, 0xd6, 0xb7, 0xe0, 0x96, 0xc5, 0xb5, 0xcc, 0x96, 0xc3, 0xb5, 0xc8, 0x96, 0xc5, 0xb5, 0xca, 0x96, 0xc5, 0xb5, 0xca, 0x96, 0xc3, 0xb5, 0xc8, 0x96, 0xc8, 0xb5, 0xcf, 0x96, 0xd7, 0xb7, 0xe3, 0x96, 0xd7, 0xb7, 0xe3, 0x96, 0xd6, 0xb7, 0xe2, 0x96, 0xd6, 0xb7, 0xe2, 0x96, 0xd6, 0xb7, 0xe2, 0x96, 0xd6, 0xb7, 0xe2, 0x96, 0xd7, 0xb7, 0xe3, 0x96, 0xd6, 0xb6, 0xe0, 0x97, 0xcf, 0xb0, 0xda, 0x9b, 0xca, 0xa9, 0xd5, 0xa1, 0xb8, 0x97, 0xc3, 0xb1, 0xb8, 0x9b, 0xc1, 0xa7, 0xfa, 0xf5, 0xfa, 0x36,
#endif
};
const lv_img_dsc_t batt_full_gren = {
.header.always_zero = 0,
.header.w = 30,
.header.h = 62,
.data_size = 1860 * LV_IMG_PX_SIZE_ALPHA_BYTE,
.header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA,
.data = batt_full_gren_map,
};

View File

@ -1,282 +0,0 @@
#if 1
#include "lvgl.h"
#else
#include "lvgl/lvgl.h"
#endif
#ifndef LV_ATTRIBUTE_MEM_ALIGN
#define LV_ATTRIBUTE_MEM_ALIGN
#endif
#ifndef LV_ATTRIBUTE_IMG_BATT_FULL_YELLOW
#define LV_ATTRIBUTE_IMG_BATT_FULL_YELLOW
#endif
const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_BATT_FULL_YELLOW uint8_t batt_full_yellow_map[] = {
#if LV_COLOR_DEPTH == 1 || LV_COLOR_DEPTH == 8
/*Pixel format: Alpha 8 bit, Red: 3 bit, Green: 3 bit, Blue: 2 bit*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x24, 0x44, 0x24, 0x51, 0x25, 0x42, 0x25, 0x44, 0x25, 0x44, 0x25, 0x44, 0x25, 0x42, 0x24, 0x5d, 0x24, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x20, 0x24, 0x61, 0x00, 0x1f, 0x00, 0x1d, 0x00, 0x21, 0x00, 0x21, 0x00, 0x21, 0x00, 0x1a, 0x00, 0x40, 0x24, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x0a, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xff, 0x02, 0xdb, 0x60, 0xff, 0x71, 0xff, 0x66, 0xff, 0x63, 0xff, 0x63, 0xff, 0x63, 0xff, 0x63, 0xff, 0x63, 0xdb, 0x77, 0x6e, 0x87, 0x92, 0x61, 0xdb, 0x61, 0xdb, 0x61, 0xdb, 0x61, 0xdb, 0x61, 0xbb, 0x61, 0x72, 0x6c, 0x92, 0x81, 0xff, 0x67, 0xff, 0x63, 0xff, 0x63, 0xff, 0x63, 0xff, 0x64, 0xff, 0x64, 0xff, 0x67, 0xb7, 0x71, 0xb7, 0x40, 0x00, 0x00,
0xff, 0x02, 0xff, 0xba, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xf4, 0xff, 0xec, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe5, 0xff, 0xdf, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xe8, 0xff, 0xe1, 0xff, 0xeb, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xec, 0xff, 0xef, 0xfb, 0xf3, 0xff, 0xfa, 0xdb, 0xf0, 0xff, 0x6f,
0xff, 0x72, 0xd6, 0xff, 0x90, 0xf7, 0xb0, 0xfc, 0xb0, 0xfc, 0xd4, 0xfb, 0xd4, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xfe, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfb, 0xf8, 0xfc, 0xf8, 0xf7, 0xf8, 0xf9, 0xda, 0xe0,
0xda, 0xde, 0x68, 0xff, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf7,
0x8c, 0xf6, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf4,
0x8c, 0xf2, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf0, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf1, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0x8c, 0xf2, 0x8c, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xf2,
0xb1, 0xf1, 0x68, 0xff, 0xb0, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xfe,
0xff, 0xbb, 0x8c, 0xff, 0x8c, 0xff, 0xb0, 0xff, 0xd0, 0xff, 0xd4, 0xff, 0xf4, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xfe, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xf8, 0xff, 0xfc, 0xff, 0xf8, 0xff, 0xd5, 0xd9,
0xff, 0x3e, 0xdb, 0xff, 0xb6, 0xfe, 0xb5, 0xe7, 0xb5, 0xd9, 0xb5, 0xcb, 0xd5, 0xc6, 0xd5, 0xc8, 0xd5, 0xc8, 0xd5, 0xc8, 0xd5, 0xc8, 0xda, 0xc8, 0xda, 0xc8, 0xda, 0xc8, 0xda, 0xc8, 0xda, 0xc8, 0xda, 0xc8, 0xd5, 0xc8, 0xd5, 0xc8, 0xd5, 0xc8, 0xd5, 0xc8, 0xd5, 0xc8, 0xd5, 0xc8, 0xd5, 0xc7, 0xd5, 0xc9, 0xd5, 0xcd, 0xd5, 0xd2, 0xd5, 0xd3, 0xb1, 0xeb, 0xb7, 0xa9,
0x00, 0x00, 0xff, 0x6e, 0xff, 0xcc, 0xdf, 0xbe, 0xdb, 0xa7, 0xdb, 0x99, 0xdb, 0x95, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x96, 0xdb, 0x97, 0xbb, 0x9b, 0xbb, 0xa1, 0xb7, 0xb1, 0xb7, 0xa7, 0xff, 0x36,
#endif
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP == 0
/*Pixel format: Alpha 8 bit, Red: 5 bit, Green: 6 bit, Blue: 5 bit*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xe4, 0x20, 0x44, 0x04, 0x21, 0x51, 0x04, 0x21, 0x42, 0x04, 0x21, 0x44, 0x04, 0x21, 0x44, 0x04, 0x21, 0x44, 0x04, 0x21, 0x42, 0xe4, 0x20, 0x5d, 0xe4, 0x20, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc2, 0x18, 0x20, 0xc3, 0x18, 0x61, 0x41, 0x08, 0x1f, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x1a, 0x61, 0x08, 0x40, 0xe3, 0x18, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x31, 0x0a, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0x19, 0xc6, 0x60, 0x1d, 0xdf, 0x71, 0x9f, 0xef, 0x66, 0x5f, 0xef, 0x63, 0x5f, 0xe7, 0x63, 0x3f, 0xe7, 0x63, 0x1f, 0xe7, 0x63, 0xff, 0xff, 0x63, 0x3b, 0xc6, 0x77, 0x4e, 0x6b, 0x87, 0x73, 0x8c, 0x61, 0x5a, 0xce, 0x61, 0xf9, 0xbd, 0x61, 0xf9, 0xbd, 0x61, 0x3a, 0xc6, 0x61, 0x99, 0xb5, 0x61, 0xb1, 0x73, 0x6c, 0xd1, 0x73, 0x81, 0x3f, 0xe7, 0x67, 0xff, 0xff, 0x63, 0x1e, 0xdf, 0x63, 0x1f, 0xe7, 0x63, 0x1f, 0xe7, 0x64, 0x1e, 0xdf, 0x64, 0x7f, 0xef, 0x67, 0x38, 0xa5, 0x71, 0x35, 0xa5, 0x40, 0x00, 0x00, 0x00,
0xff, 0xff, 0x02, 0xff, 0xff, 0xba, 0x5d, 0xef, 0xff, 0x98, 0xde, 0xff, 0x97, 0xde, 0xf4, 0x98, 0xde, 0xec, 0xb7, 0xde, 0xeb, 0xd8, 0xe6, 0xec, 0xd8, 0xe6, 0xec, 0xb7, 0xde, 0xec, 0x5a, 0xf7, 0xe5, 0xfe, 0xff, 0xdf, 0xfe, 0xff, 0xec, 0xbd, 0xff, 0xec, 0xbd, 0xff, 0xec, 0xdd, 0xff, 0xec, 0xbc, 0xff, 0xec, 0xbb, 0xff, 0xec, 0xfc, 0xff, 0xe8, 0xfc, 0xff, 0xe1, 0x39, 0xef, 0xeb, 0xb7, 0xde, 0xec, 0xd8, 0xe6, 0xec, 0xd8, 0xe6, 0xec, 0xd8, 0xe6, 0xec, 0xb7, 0xde, 0xef, 0x76, 0xde, 0xf3, 0xb7, 0xde, 0xfa, 0x5b, 0xce, 0xf0, 0x1f, 0xdf, 0x6f,
0xff, 0xff, 0x72, 0x2f, 0xb5, 0xff, 0xa3, 0x93, 0xf7, 0xc0, 0x9b, 0xfc, 0x40, 0xb4, 0xfc, 0xc0, 0xc4, 0xfb, 0x20, 0xd5, 0xfb, 0x80, 0xe5, 0xfb, 0xe1, 0xed, 0xfb, 0x00, 0xf6, 0xfb, 0x22, 0xf6, 0xfb, 0x10, 0xff, 0xfb, 0x11, 0xff, 0xfb, 0x10, 0xff, 0xfb, 0x10, 0xff, 0xfb, 0x32, 0xff, 0xfb, 0xed, 0xfe, 0xfb, 0x00, 0xf6, 0xfb, 0x00, 0xf6, 0xfb, 0x21, 0xf6, 0xfb, 0x21, 0xf6, 0xfb, 0x21, 0xf6, 0xfb, 0x21, 0xf6, 0xfb, 0x21, 0xf6, 0xfb, 0x21, 0xf6, 0xfb, 0x00, 0xf6, 0xfb, 0x00, 0xf6, 0xfc, 0x20, 0xf6, 0xf7, 0xc4, 0xe5, 0xf9, 0xb1, 0xc5, 0xe0,
0xd3, 0xc5, 0xde, 0x20, 0x6a, 0xff, 0x40, 0x8b, 0xff, 0x00, 0xa4, 0xff, 0x60, 0xb4, 0xff, 0xc0, 0xc4, 0xff, 0x40, 0xd5, 0xff, 0xa0, 0xe5, 0xff, 0x00, 0xf6, 0xff, 0x20, 0xfe, 0xff, 0x41, 0xfe, 0xff, 0x30, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0x0d, 0xff, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x20, 0xfe, 0xff, 0x40, 0xfe, 0xff, 0x20, 0xfe, 0xf7,
0x62, 0x83, 0xf6, 0xe0, 0x7a, 0xff, 0xc1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x22, 0xf6, 0xff, 0x21, 0xfe, 0xf4,
0x40, 0x83, 0xf2, 0x40, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x61, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x61, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x61, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x61, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x61, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x61, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x61, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf0, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x61, 0x8b, 0xf1, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x41, 0x83, 0xf2, 0x20, 0x83, 0xff, 0xa1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xf2,
0x49, 0x9c, 0xf1, 0x60, 0x72, 0xff, 0xc1, 0x93, 0xff, 0x21, 0xa4, 0xff, 0x81, 0xb4, 0xff, 0xe1, 0xc4, 0xff, 0x41, 0xd5, 0xff, 0xa1, 0xe5, 0xff, 0x01, 0xf6, 0xff, 0x20, 0xf6, 0xff, 0x42, 0xfe, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0xee, 0xfe, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x21, 0xf6, 0xff, 0x22, 0xf6, 0xff, 0x41, 0xfe, 0xff, 0x60, 0xfe, 0xfe,
0x1c, 0xe7, 0xbb, 0x42, 0x83, 0xff, 0xe0, 0x82, 0xff, 0xc0, 0x9b, 0xff, 0x60, 0xb4, 0xff, 0xe0, 0xcc, 0xff, 0x40, 0xdd, 0xff, 0xc0, 0xed, 0xff, 0x20, 0xfe, 0xff, 0x40, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x6f, 0xff, 0xff, 0x91, 0xff, 0xff, 0x70, 0xff, 0xff, 0x70, 0xff, 0xff, 0x92, 0xff, 0xff, 0x4d, 0xff, 0xff, 0x40, 0xfe, 0xff, 0x40, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x80, 0xfe, 0xff, 0x60, 0xfe, 0xff, 0x66, 0xcd, 0xd9,
0xff, 0xff, 0x3e, 0x58, 0xce, 0xff, 0xce, 0xa4, 0xfe, 0x8b, 0xa4, 0xe7, 0x8a, 0xa4, 0xd9, 0xca, 0xac, 0xcb, 0x0a, 0xbd, 0xc6, 0x4a, 0xbd, 0xc8, 0x6a, 0xc5, 0xc8, 0x69, 0xcd, 0xc8, 0x8b, 0xcd, 0xc8, 0xf2, 0xcd, 0xc8, 0x13, 0xce, 0xc8, 0xf2, 0xcd, 0xc8, 0xf2, 0xcd, 0xc8, 0x13, 0xce, 0xc8, 0xf0, 0xcd, 0xc8, 0x6a, 0xcd, 0xc8, 0x6a, 0xcd, 0xc8, 0x6a, 0xcd, 0xc8, 0x6a, 0xcd, 0xc8, 0x6a, 0xcd, 0xc8, 0x6a, 0xcd, 0xc8, 0x8a, 0xcd, 0xc7, 0x6a, 0xc5, 0xc9, 0x49, 0xc5, 0xcd, 0x08, 0xbd, 0xd2, 0x08, 0xbd, 0xd3, 0x28, 0x94, 0xeb, 0xd5, 0x94, 0xa9,
0x00, 0x00, 0x00, 0xdf, 0xff, 0x6e, 0xfe, 0xde, 0xcc, 0xbd, 0xd6, 0xbe, 0x5c, 0xc6, 0xa7, 0x3c, 0xbe, 0x99, 0x3c, 0xbe, 0x95, 0x1c, 0xbe, 0x96, 0x1c, 0xbe, 0x96, 0x1c, 0xbe, 0x96, 0xfc, 0xbd, 0x96, 0xd9, 0xbd, 0x96, 0xd9, 0xbd, 0x96, 0xd9, 0xbd, 0x96, 0xd9, 0xbd, 0x96, 0xd9, 0xbd, 0x96, 0xfa, 0xbd, 0x96, 0x1c, 0xbe, 0x96, 0x1c, 0xbe, 0x96, 0xfc, 0xbd, 0x96, 0xfc, 0xbd, 0x96, 0xfc, 0xbd, 0x96, 0xfc, 0xbd, 0x96, 0x1c, 0xbe, 0x96, 0xfc, 0xb5, 0x97, 0xdb, 0xb5, 0x9b, 0x9b, 0xad, 0xa1, 0xf8, 0x9c, 0xb1, 0x38, 0x9d, 0xa7, 0xbf, 0xff, 0x36,
#endif
#if LV_COLOR_DEPTH == 16 && LV_COLOR_16_SWAP != 0
/*Pixel format: Alpha 8 bit, Red: 5 bit, Green: 6 bit, Blue: 5 bit BUT the 2 color bytes are swapped*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x20, 0xe4, 0x44, 0x21, 0x04, 0x51, 0x21, 0x04, 0x42, 0x21, 0x04, 0x44, 0x21, 0x04, 0x44, 0x21, 0x04, 0x44, 0x21, 0x04, 0x42, 0x20, 0xe4, 0x5d, 0x20, 0xe4, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xc2, 0x20, 0x18, 0xc3, 0x61, 0x08, 0x41, 0x1f, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x21, 0x00, 0x00, 0x1a, 0x08, 0x61, 0x40, 0x18, 0xe3, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0xa6, 0x0a, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0xc6, 0x19, 0x60, 0xdf, 0x1d, 0x71, 0xef, 0x9f, 0x66, 0xef, 0x5f, 0x63, 0xe7, 0x5f, 0x63, 0xe7, 0x3f, 0x63, 0xe7, 0x1f, 0x63, 0xff, 0xff, 0x63, 0xc6, 0x3b, 0x77, 0x6b, 0x4e, 0x87, 0x8c, 0x73, 0x61, 0xce, 0x5a, 0x61, 0xbd, 0xf9, 0x61, 0xbd, 0xf9, 0x61, 0xc6, 0x3a, 0x61, 0xb5, 0x99, 0x61, 0x73, 0xb1, 0x6c, 0x73, 0xd1, 0x81, 0xe7, 0x3f, 0x67, 0xff, 0xff, 0x63, 0xdf, 0x1e, 0x63, 0xe7, 0x1f, 0x63, 0xe7, 0x1f, 0x64, 0xdf, 0x1e, 0x64, 0xef, 0x7f, 0x67, 0xa5, 0x38, 0x71, 0xa5, 0x35, 0x40, 0x00, 0x00, 0x00,
0xff, 0xff, 0x02, 0xff, 0xff, 0xba, 0xef, 0x5d, 0xff, 0xde, 0x98, 0xff, 0xde, 0x97, 0xf4, 0xde, 0x98, 0xec, 0xde, 0xb7, 0xeb, 0xe6, 0xd8, 0xec, 0xe6, 0xd8, 0xec, 0xde, 0xb7, 0xec, 0xf7, 0x5a, 0xe5, 0xff, 0xfe, 0xdf, 0xff, 0xfe, 0xec, 0xff, 0xbd, 0xec, 0xff, 0xbd, 0xec, 0xff, 0xdd, 0xec, 0xff, 0xbc, 0xec, 0xff, 0xbb, 0xec, 0xff, 0xfc, 0xe8, 0xff, 0xfc, 0xe1, 0xef, 0x39, 0xeb, 0xde, 0xb7, 0xec, 0xe6, 0xd8, 0xec, 0xe6, 0xd8, 0xec, 0xe6, 0xd8, 0xec, 0xde, 0xb7, 0xef, 0xde, 0x76, 0xf3, 0xde, 0xb7, 0xfa, 0xce, 0x5b, 0xf0, 0xdf, 0x1f, 0x6f,
0xff, 0xff, 0x72, 0xb5, 0x2f, 0xff, 0x93, 0xa3, 0xf7, 0x9b, 0xc0, 0xfc, 0xb4, 0x40, 0xfc, 0xc4, 0xc0, 0xfb, 0xd5, 0x20, 0xfb, 0xe5, 0x80, 0xfb, 0xed, 0xe1, 0xfb, 0xf6, 0x00, 0xfb, 0xf6, 0x22, 0xfb, 0xff, 0x10, 0xfb, 0xff, 0x11, 0xfb, 0xff, 0x10, 0xfb, 0xff, 0x10, 0xfb, 0xff, 0x32, 0xfb, 0xfe, 0xed, 0xfb, 0xf6, 0x00, 0xfb, 0xf6, 0x00, 0xfb, 0xf6, 0x21, 0xfb, 0xf6, 0x21, 0xfb, 0xf6, 0x21, 0xfb, 0xf6, 0x21, 0xfb, 0xf6, 0x21, 0xfb, 0xf6, 0x21, 0xfb, 0xf6, 0x00, 0xfb, 0xf6, 0x00, 0xfc, 0xf6, 0x20, 0xf7, 0xe5, 0xc4, 0xf9, 0xc5, 0xb1, 0xe0,
0xc5, 0xd3, 0xde, 0x6a, 0x20, 0xff, 0x8b, 0x40, 0xff, 0xa4, 0x00, 0xff, 0xb4, 0x60, 0xff, 0xc4, 0xc0, 0xff, 0xd5, 0x40, 0xff, 0xe5, 0xa0, 0xff, 0xf6, 0x00, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x41, 0xff, 0xff, 0x30, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xff, 0x0d, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x40, 0xff, 0xfe, 0x20, 0xf7,
0x83, 0x62, 0xf6, 0x7a, 0xe0, 0xff, 0x93, 0xc1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x22, 0xff, 0xfe, 0x21, 0xf4,
0x83, 0x40, 0xf2, 0x83, 0x40, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x61, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x61, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x61, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x61, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x61, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x61, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x61, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf0, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x8b, 0x61, 0xf1, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x83, 0x41, 0xf2, 0x83, 0x20, 0xff, 0x93, 0xa1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xf2,
0x9c, 0x49, 0xf1, 0x72, 0x60, 0xff, 0x93, 0xc1, 0xff, 0xa4, 0x21, 0xff, 0xb4, 0x81, 0xff, 0xc4, 0xe1, 0xff, 0xd5, 0x41, 0xff, 0xe5, 0xa1, 0xff, 0xf6, 0x01, 0xff, 0xf6, 0x20, 0xff, 0xfe, 0x42, 0xff, 0xff, 0x10, 0xff, 0xff, 0x32, 0xff, 0xff, 0x31, 0xff, 0xff, 0x31, 0xff, 0xff, 0x53, 0xff, 0xfe, 0xee, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x21, 0xff, 0xf6, 0x22, 0xff, 0xfe, 0x41, 0xff, 0xfe, 0x60, 0xfe,
0xe7, 0x1c, 0xbb, 0x83, 0x42, 0xff, 0x82, 0xe0, 0xff, 0x9b, 0xc0, 0xff, 0xb4, 0x60, 0xff, 0xcc, 0xe0, 0xff, 0xdd, 0x40, 0xff, 0xed, 0xc0, 0xff, 0xfe, 0x20, 0xff, 0xfe, 0x40, 0xff, 0xfe, 0x60, 0xff, 0xff, 0x6f, 0xff, 0xff, 0x91, 0xff, 0xff, 0x70, 0xff, 0xff, 0x70, 0xff, 0xff, 0x92, 0xff, 0xff, 0x4d, 0xff, 0xfe, 0x40, 0xff, 0xfe, 0x40, 0xff, 0xfe, 0x60, 0xff, 0xfe, 0x60, 0xff, 0xfe, 0x60, 0xff, 0xfe, 0x60, 0xff, 0xfe, 0x60, 0xff, 0xfe, 0x60, 0xff, 0xfe, 0x60, 0xff, 0xfe, 0x60, 0xff, 0xfe, 0x80, 0xff, 0xfe, 0x60, 0xff, 0xcd, 0x66, 0xd9,
0xff, 0xff, 0x3e, 0xce, 0x58, 0xff, 0xa4, 0xce, 0xfe, 0xa4, 0x8b, 0xe7, 0xa4, 0x8a, 0xd9, 0xac, 0xca, 0xcb, 0xbd, 0x0a, 0xc6, 0xbd, 0x4a, 0xc8, 0xc5, 0x6a, 0xc8, 0xcd, 0x69, 0xc8, 0xcd, 0x8b, 0xc8, 0xcd, 0xf2, 0xc8, 0xce, 0x13, 0xc8, 0xcd, 0xf2, 0xc8, 0xcd, 0xf2, 0xc8, 0xce, 0x13, 0xc8, 0xcd, 0xf0, 0xc8, 0xcd, 0x6a, 0xc8, 0xcd, 0x6a, 0xc8, 0xcd, 0x6a, 0xc8, 0xcd, 0x6a, 0xc8, 0xcd, 0x6a, 0xc8, 0xcd, 0x6a, 0xc8, 0xcd, 0x8a, 0xc7, 0xc5, 0x6a, 0xc9, 0xc5, 0x49, 0xcd, 0xbd, 0x08, 0xd2, 0xbd, 0x08, 0xd3, 0x94, 0x28, 0xeb, 0x94, 0xd5, 0xa9,
0x00, 0x00, 0x00, 0xff, 0xdf, 0x6e, 0xde, 0xfe, 0xcc, 0xd6, 0xbd, 0xbe, 0xc6, 0x5c, 0xa7, 0xbe, 0x3c, 0x99, 0xbe, 0x3c, 0x95, 0xbe, 0x1c, 0x96, 0xbe, 0x1c, 0x96, 0xbe, 0x1c, 0x96, 0xbd, 0xfc, 0x96, 0xbd, 0xd9, 0x96, 0xbd, 0xd9, 0x96, 0xbd, 0xd9, 0x96, 0xbd, 0xd9, 0x96, 0xbd, 0xd9, 0x96, 0xbd, 0xfa, 0x96, 0xbe, 0x1c, 0x96, 0xbe, 0x1c, 0x96, 0xbd, 0xfc, 0x96, 0xbd, 0xfc, 0x96, 0xbd, 0xfc, 0x96, 0xbd, 0xfc, 0x96, 0xbe, 0x1c, 0x96, 0xb5, 0xfc, 0x97, 0xb5, 0xdb, 0x9b, 0xad, 0x9b, 0xa1, 0x9c, 0xf8, 0xb1, 0x9d, 0x38, 0xa7, 0xff, 0xbf, 0x36,
#endif
#if LV_COLOR_DEPTH == 32
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x1e, 0x1e, 0x1e, 0x44, 0x1f, 0x1f, 0x1f, 0x51, 0x22, 0x22, 0x22, 0x42, 0x21, 0x21, 0x21, 0x44, 0x21, 0x21, 0x21, 0x44, 0x21, 0x21, 0x21, 0x44, 0x22, 0x22, 0x22, 0x42, 0x1e, 0x1e, 0x1e, 0x5d, 0x1e, 0x1e, 0x1e, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x17, 0x17, 0x20, 0x1a, 0x1a, 0x1a, 0x61, 0x08, 0x08, 0x08, 0x1f, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x1a, 0x0b, 0x0b, 0x0b, 0x40, 0x1c, 0x1c, 0x1c, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x33, 0x33, 0x0a, 0x00, 0x00, 0x00, 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, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x02, 0xc7, 0xbf, 0xbf, 0x60, 0xec, 0xdf, 0xda, 0x71, 0xff, 0xf0, 0xeb, 0x66, 0xf9, 0xe7, 0xe5, 0x63, 0xf9, 0xe7, 0xe2, 0x63, 0xf7, 0xe5, 0xe0, 0x63, 0xf7, 0xe2, 0xdd, 0x63, 0xff, 0xff, 0xff, 0x63, 0xd8, 0xc5, 0xc0, 0x77, 0x73, 0x69, 0x66, 0x87, 0x95, 0x8d, 0x8b, 0x61, 0xd2, 0xc7, 0xc5, 0x61, 0xc7, 0xbd, 0xba, 0x61, 0xc5, 0xbd, 0xba, 0x61, 0xd2, 0xc5, 0xc2, 0x61, 0xca, 0xb2, 0xb0, 0x61, 0x88, 0x73, 0x6e, 0x6c, 0x8c, 0x78, 0x72, 0x81, 0xf7, 0xe3, 0xde, 0x67, 0xff, 0xfc, 0xf7, 0x63, 0xf4, 0xe0, 0xda, 0x63, 0xf7, 0xe2, 0xdd, 0x63, 0xf7, 0xe2, 0xdd, 0x64, 0xf4, 0xe0, 0xdb, 0x64, 0xff, 0xeb, 0xe6, 0x67, 0xbd, 0xa6, 0xa2, 0x71, 0xab, 0xa3, 0xa3, 0x40, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0x02, 0xff, 0xff, 0xfd, 0xba, 0xea, 0xea, 0xea, 0xff, 0xc0, 0xd1, 0xd6, 0xff, 0xbb, 0xcf, 0xd5, 0xf4, 0xbd, 0xd2, 0xd8, 0xec, 0xbc, 0xd4, 0xdb, 0xeb, 0xbd, 0xd7, 0xdd, 0xec, 0xbd, 0xd7, 0xdd, 0xec, 0xb7, 0xd4, 0xdc, 0xec, 0xd0, 0xea, 0xf1, 0xe5, 0xf3, 0xfe, 0xfe, 0xdf, 0xf4, 0xff, 0xff, 0xec, 0xe6, 0xf5, 0xf8, 0xec, 0xe8, 0xf6, 0xf9, 0xec, 0xea, 0xf7, 0xf9, 0xec, 0xe2, 0xf4, 0xf8, 0xec, 0xd9, 0xf6, 0xfc, 0xec, 0xe3, 0xff, 0xff, 0xe8, 0xe1, 0xfd, 0xff, 0xe1, 0xc8, 0xe4, 0xeb, 0xeb, 0xb8, 0xd3, 0xdb, 0xec, 0xbd, 0xd9, 0xdf, 0xec, 0xbd, 0xd9, 0xdf, 0xec, 0xbd, 0xd8, 0xde, 0xec, 0xb8, 0xd4, 0xda, 0xef, 0xaf, 0xcc, 0xd5, 0xf3, 0xb9, 0xd4, 0xdb, 0xfa, 0xd8, 0xca, 0xc7, 0xf0, 0xff, 0xe1, 0xda, 0x6f,
0xff, 0xff, 0xff, 0x72, 0x79, 0xa6, 0xb1, 0xff, 0x18, 0x73, 0x8f, 0xf7, 0x00, 0x7a, 0x99, 0xfc, 0x01, 0x8a, 0xad, 0xfc, 0x03, 0x99, 0xbe, 0xfb, 0x03, 0xa5, 0xcf, 0xfb, 0x04, 0xb2, 0xde, 0xfb, 0x05, 0xbc, 0xea, 0xfb, 0x00, 0xc1, 0xf1, 0xfb, 0x0d, 0xc5, 0xf2, 0xfb, 0x7d, 0xdf, 0xf8, 0xfb, 0x8c, 0xe2, 0xf7, 0xfb, 0x82, 0xdf, 0xf7, 0xfb, 0x82, 0xdf, 0xf7, 0xfb, 0x93, 0xe3, 0xf8, 0xfb, 0x6a, 0xdb, 0xf6, 0xfb, 0x00, 0xc2, 0xf1, 0xfb, 0x00, 0xc2, 0xf1, 0xfb, 0x05, 0xc3, 0xf1, 0xfb, 0x05, 0xc3, 0xf1, 0xfb, 0x05, 0xc3, 0xf1, 0xfb, 0x05, 0xc3, 0xf1, 0xfb, 0x05, 0xc3, 0xf1, 0xfb, 0x05, 0xc3, 0xf1, 0xfb, 0x04, 0xc2, 0xf0, 0xfb, 0x02, 0xc2, 0xf1, 0xfc, 0x02, 0xc4, 0xf3, 0xf7, 0x1e, 0xb9, 0xe1, 0xf9, 0x8a, 0xb6, 0xc1, 0xe0,
0x98, 0xb8, 0xbf, 0xde, 0x00, 0x46, 0x66, 0xff, 0x00, 0x68, 0x87, 0xff, 0x00, 0x80, 0xa0, 0xff, 0x00, 0x8d, 0xb0, 0xff, 0x00, 0x9a, 0xc1, 0xff, 0x00, 0xa8, 0xd2, 0xff, 0x01, 0xb4, 0xe1, 0xff, 0x02, 0xc0, 0xee, 0xff, 0x00, 0xc3, 0xf6, 0xff, 0x0a, 0xc7, 0xf7, 0xff, 0x7f, 0xe3, 0xfc, 0xff, 0x8e, 0xe6, 0xfc, 0xff, 0x85, 0xe4, 0xfc, 0xff, 0x85, 0xe4, 0xfc, 0xff, 0x95, 0xe8, 0xfd, 0xff, 0x6c, 0xdf, 0xfb, 0xff, 0x00, 0xc4, 0xf6, 0xff, 0x00, 0xc4, 0xf6, 0xff, 0x02, 0xc5, 0xf6, 0xff, 0x02, 0xc5, 0xf6, 0xff, 0x02, 0xc5, 0xf6, 0xff, 0x02, 0xc5, 0xf6, 0xff, 0x02, 0xc5, 0xf6, 0xff, 0x02, 0xc5, 0xf6, 0xff, 0x02, 0xc6, 0xf6, 0xff, 0x03, 0xc6, 0xf6, 0xff, 0x03, 0xc6, 0xf7, 0xff, 0x00, 0xca, 0xff, 0xff, 0x00, 0xc5, 0xf6, 0xf7,
0x13, 0x6d, 0x83, 0xf6, 0x00, 0x5b, 0x76, 0xff, 0x08, 0x78, 0x93, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9e, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc1, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0e, 0xc6, 0xf3, 0xff, 0x05, 0xc5, 0xf5, 0xf4,
0x03, 0x69, 0x81, 0xf2, 0x02, 0x67, 0x80, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9e, 0xc2, 0xff, 0x0a, 0xab, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc1, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x66, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc1, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xab, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe1, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xab, 0xd2, 0xff, 0x0b, 0xb6, 0xe1, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9e, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9e, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xab, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xab, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe1, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x66, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc1, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9e, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe1, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9e, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xab, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe1, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x66, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe1, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xab, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc1, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe1, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc1, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x0c, 0x6e, 0x85, 0xf0, 0x02, 0x65, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x08, 0x6b, 0x85, 0xf1, 0x02, 0x66, 0x7f, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0b, 0xc6, 0xf4, 0xf2,
0x05, 0x68, 0x80, 0xf2, 0x01, 0x64, 0x7e, 0xff, 0x07, 0x76, 0x92, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb2, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe1, 0xff, 0x0c, 0xc0, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0a, 0xc6, 0xf4, 0xf2,
0x49, 0x88, 0x99, 0xf1, 0x00, 0x4e, 0x6d, 0xff, 0x06, 0x78, 0x93, 0xff, 0x08, 0x83, 0xa1, 0xff, 0x09, 0x90, 0xb1, 0xff, 0x0a, 0x9d, 0xc2, 0xff, 0x0a, 0xaa, 0xd2, 0xff, 0x0b, 0xb6, 0xe0, 0xff, 0x0c, 0xc1, 0xed, 0xff, 0x02, 0xc4, 0xf4, 0xff, 0x14, 0xc8, 0xf5, 0xff, 0x83, 0xe2, 0xfa, 0xff, 0x91, 0xe5, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x88, 0xe3, 0xfa, 0xff, 0x98, 0xe7, 0xfb, 0xff, 0x71, 0xde, 0xf9, 0xff, 0x06, 0xc5, 0xf4, 0xff, 0x07, 0xc5, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0c, 0xc6, 0xf4, 0xff, 0x0d, 0xc5, 0xf3, 0xff, 0x0c, 0xc8, 0xf7, 0xff, 0x00, 0xcd, 0xff, 0xfe,
0xdf, 0xe2, 0xe2, 0xbb, 0x12, 0x68, 0x7f, 0xff, 0x00, 0x5e, 0x80, 0xff, 0x00, 0x78, 0x9c, 0xff, 0x00, 0x8b, 0xb3, 0xff, 0x00, 0x9b, 0xc7, 0xff, 0x00, 0xaa, 0xd9, 0xff, 0x00, 0xb8, 0xea, 0xff, 0x00, 0xc4, 0xf9, 0xff, 0x00, 0xc8, 0xff, 0xff, 0x00, 0xcd, 0xff, 0xff, 0x7b, 0xec, 0xff, 0xff, 0x8c, 0xf0, 0xff, 0xff, 0x81, 0xed, 0xff, 0xff, 0x81, 0xed, 0xff, 0xff, 0x94, 0xf2, 0xff, 0xff, 0x66, 0xe7, 0xff, 0xff, 0x00, 0xca, 0xff, 0xff, 0x00, 0xca, 0xff, 0xff, 0x00, 0xcb, 0xff, 0xff, 0x00, 0xcb, 0xff, 0xff, 0x00, 0xcb, 0xff, 0xff, 0x00, 0xcb, 0xff, 0xff, 0x00, 0xcb, 0xff, 0xff, 0x00, 0xcb, 0xff, 0xff, 0x00, 0xcd, 0xff, 0xff, 0x00, 0xce, 0xff, 0xff, 0x00, 0xd2, 0xff, 0xff, 0x00, 0xcd, 0xff, 0xff, 0x31, 0xab, 0xca, 0xd9,
0xff, 0xff, 0xff, 0x3e, 0xc3, 0xca, 0xcb, 0xff, 0x6f, 0x97, 0xa4, 0xfe, 0x57, 0x92, 0xa3, 0xe7, 0x4f, 0x92, 0xa4, 0xd9, 0x4d, 0x97, 0xa9, 0xcb, 0x51, 0xa0, 0xb5, 0xc6, 0x51, 0xa8, 0xbc, 0xc8, 0x51, 0xac, 0xc3, 0xc8, 0x4c, 0xad, 0xc5, 0xc8, 0x55, 0xaf, 0xc6, 0xc8, 0x8d, 0xbc, 0xc9, 0xc8, 0x95, 0xbf, 0xc9, 0xc8, 0x90, 0xbd, 0xc9, 0xc8, 0x90, 0xbd, 0xc9, 0xc8, 0x97, 0xc0, 0xc9, 0xc8, 0x84, 0xbb, 0xc9, 0xc8, 0x4f, 0xae, 0xc5, 0xc8, 0x50, 0xae, 0xc5, 0xc8, 0x51, 0xae, 0xc5, 0xc8, 0x51, 0xae, 0xc5, 0xc8, 0x51, 0xae, 0xc5, 0xc8, 0x51, 0xae, 0xc5, 0xc8, 0x53, 0xaf, 0xc6, 0xc7, 0x51, 0xad, 0xc4, 0xc9, 0x4a, 0xa7, 0xbf, 0xcd, 0x44, 0xa2, 0xb9, 0xd2, 0x3d, 0xa0, 0xb7, 0xd3, 0x41, 0x83, 0x93, 0xeb, 0xac, 0x98, 0x93, 0xa9,
0x00, 0x00, 0x00, 0x00, 0xff, 0xfa, 0xf8, 0x6e, 0xf1, 0xde, 0xd9, 0xcc, 0xea, 0xd5, 0xce, 0xbe, 0xe1, 0xc9, 0xc1, 0xa7, 0xdf, 0xc3, 0xbc, 0x99, 0xe1, 0xc4, 0xbc, 0x95, 0xe3, 0xc1, 0xbb, 0x96, 0xe2, 0xc1, 0xb7, 0x96, 0xe3, 0xc0, 0xb7, 0x96, 0xe0, 0xbe, 0xb7, 0x96, 0xcc, 0xb9, 0xb5, 0x96, 0xc8, 0xb9, 0xb5, 0x96, 0xca, 0xb9, 0xb5, 0x96, 0xca, 0xb9, 0xb5, 0x96, 0xc8, 0xb9, 0xb5, 0x96, 0xcf, 0xbb, 0xb5, 0x96, 0xe3, 0xc0, 0xb7, 0x96, 0xe3, 0xc0, 0xb7, 0x96, 0xe2, 0xbe, 0xb7, 0x96, 0xe2, 0xbe, 0xb7, 0x96, 0xe2, 0xbe, 0xb7, 0x96, 0xe2, 0xbe, 0xb7, 0x96, 0xe3, 0xc0, 0xb7, 0x96, 0xe0, 0xbe, 0xb4, 0x97, 0xda, 0xb8, 0xb0, 0x9b, 0xd5, 0xb2, 0xa9, 0xa1, 0xc3, 0x9e, 0x95, 0xb1, 0xc1, 0xa3, 0x9b, 0xa7, 0xfa, 0xf5, 0xf5, 0x36,
#endif
};
const lv_img_dsc_t batt_full_yellow = {
.header.always_zero = 0,
.header.w = 30,
.header.h = 62,
.data_size = 1860 * LV_IMG_PX_SIZE_ALPHA_BYTE,
.header.cf = LV_IMG_CF_TRUE_COLOR_ALPHA,
.data = batt_full_yellow_map,
};

View File

@ -1,18 +0,0 @@
#ifndef BIN_OFFSETS_H
#define BIN_OFFSETS_H
#define Number_HarmonyOS_bpp4_20px_glyph_bitmap (const uint8_t *)0xa02000
#define Number_HarmonyOS_bpp4_20px_glyph_dsc (const lv_font_fmt_txt_glyph_dsc_t *)0xa02af8
#define Number_HarmonyOS_bpp4_12px_glyph_bitmap (const uint8_t *)0xa02000
#define Number_HarmonyOS_bpp4_12px_glyph_dsc (const lv_font_fmt_txt_glyph_dsc_t *)0xa02af8
#define Number_HarmonyOS_bpp4_16px_glyph_bitmap (const uint8_t *)0xa030f8
#define Number_HarmonyOS_bpp4_16px_glyph_dsc (const lv_font_fmt_txt_glyph_dsc_t *)0xa04264
#define Number_HarmonyOS_bpp4_36px_glyph_bitmap (const uint8_t *)0xa04864
#define Number_HarmonyOS_bpp4_36px_glyph_dsc (const lv_font_fmt_txt_glyph_dsc_t *)0xa08cba
#define Number_HarmonyOS_bpp4_44px_glyph_bitmap (const uint8_t *)0xa0918a
#define Number_HarmonyOS_bpp4_44px_glyph_dsc (const lv_font_fmt_txt_glyph_dsc_t *)0xa0a32d
#define TOTAL_SIZE 10527789
#endif

View File

@ -1,337 +0,0 @@
#include "lvgl.h"
#include "img_def.h"
#include "lv_common_function.h"
static lv_timer_t *refresh_timer=NULL;
LV_FONT_DECLARE(Number_HarmonyOS_bpp4_20px);
LV_FONT_DECLARE(Number_HarmonyOS_bpp4_16px);
LV_FONT_DECLARE(Number_HarmonyOS_bpp4_12px);
LV_FONT_DECLARE(Number_HarmonyOS_bpp4_36px);
LV_FONT_DECLARE(Number_HarmonyOS_bpp4_44px);
LV_FONT_DECLARE(Number_HarmonyOS_bpp4_92px);
#define LV_FONT_SMALL_NUMBER_20PX &Number_HarmonyOS_bpp4_20px
#define LV_FONT_SMALL_NUMBER_16PX &Number_HarmonyOS_bpp4_16px
#define LV_FONT_SMALL_NUMBER_12PX &Number_HarmonyOS_bpp4_12px
#define LV_FONT_BIG_NUMBER_44PX &Number_HarmonyOS_bpp4_44px
#define LV_FONT_MEDIUM_NUMBER_36PX &Number_HarmonyOS_bpp4_36px
#define LV_FONT_BIG_NUMBER_92PX &Number_HarmonyOS_bpp4_92px
void fr_lv_86box_page1_func(lv_obj_t *parent, lv_point_t *top)
{
if(!lv_obj_is_valid(parent))
return;
UI_PARENT_INIT(parent);
lv_obj_t *btn_obj1 = lv_obj_create(parent);
lv_obj_set_size(btn_obj1,114,114);
lv_obj_set_style_pad_all(btn_obj1,0,0);
lv_obj_set_style_border_width(btn_obj1, 0, 0);
lv_obj_set_style_bg_color(btn_obj1,lv_color_make(0, 0, 0),0);
lv_obj_set_pos(btn_obj1,50,311);
lv_obj_t *btn_obj2 = lv_obj_create(parent);
lv_obj_set_size(btn_obj2,114,114);
lv_obj_set_style_pad_all(btn_obj2,0,0);
lv_obj_set_style_border_width(btn_obj2, 0, 0);
lv_obj_set_style_bg_color(btn_obj2,lv_color_make(0, 0, 0),0);
lv_obj_set_pos(btn_obj2,184,311);
lv_obj_t *btn_obj3 = lv_obj_create(parent);
lv_obj_set_size(btn_obj3,114,114);
lv_obj_set_style_pad_all(btn_obj3,0,0);
lv_obj_set_style_border_width(btn_obj3, 0, 0);
lv_obj_set_style_bg_color(btn_obj3,lv_color_make(0, 0, 0),0);
lv_obj_set_pos(btn_obj3,318,311);
lv_obj_t *left_img = lv_img_create(btn_obj1);//1
lv_img_set_src(left_img,IMG_TILEVIEW_1);
lv_obj_align(left_img,LV_ALIGN_CENTER,0,0);
lv_obj_t *left_img2 = lv_img_create(btn_obj1);//1
lv_img_set_src(left_img2,IMG_TILEVIEW_GO_HOME);
lv_obj_align(left_img2,LV_ALIGN_CENTER,0,-20);
lv_obj_t *mid_img = lv_img_create(btn_obj2);//1
lv_img_set_src(mid_img,IMG_TILEVIEW_2);
lv_obj_align(mid_img,LV_ALIGN_CENTER,0,0);
lv_obj_t *mid_img2 = lv_img_create(btn_obj2);//1
lv_img_set_src(mid_img2,IMG_TILEVIEW_LEAVE_HOME);
lv_obj_align(mid_img2,LV_ALIGN_CENTER,0,-20);
lv_obj_t *right_img = lv_img_create(btn_obj3);//1
lv_img_set_src(right_img,IMG_TILEVIEW_3);
lv_obj_align(right_img,LV_ALIGN_CENTER,0,0);
lv_obj_t *right_img2 = lv_img_create(btn_obj3);//1
lv_img_set_src(right_img2,IMG_TILEVIEW_MORE);
lv_obj_align(right_img2,LV_ALIGN_CENTER,0,-20);
lv_obj_t * left_lab = lv_label_create(btn_obj1);//6
lv_obj_set_style_text_color(left_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(left_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text(left_lab,"回家");
lv_obj_align(left_lab,LV_ALIGN_CENTER,0,20);
lv_obj_t * mid_lab = lv_label_create(btn_obj2);//6
lv_obj_set_style_text_color(mid_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(mid_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text(mid_lab,"离家");
lv_obj_align(mid_lab,LV_ALIGN_CENTER,0,20);
lv_obj_t * right_lab = lv_label_create(btn_obj3);//6
lv_obj_set_style_text_color(right_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(right_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text(right_lab,"更多");
lv_obj_align(right_lab,LV_ALIGN_CENTER,0,20);
lv_obj_t * hour_lab = lv_label_create(parent);//6
lv_obj_set_style_text_color(hour_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(hour_lab,LV_FONT_BIG_NUMBER_92PX,0);
lv_label_set_text_fmt(hour_lab,"%02d:%02d",10,12);
lv_obj_set_pos(hour_lab,48,78);
lv_obj_t *weather_img = lv_img_create(parent);//1
lv_img_set_src(weather_img,IMG_WEATHER);
lv_obj_set_pos(weather_img,353,79);
lv_obj_t * temp_lab = lv_label_create(parent);//6
lv_obj_set_style_text_color(temp_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(temp_lab,LV_FONT_MEDIUM_NUMBER_36PX,0);
lv_label_set_text_fmt(temp_lab,"%02d",26);
lv_obj_set_pos(temp_lab,372,140);
lv_obj_t * date_lab = lv_label_create(parent);//6
lv_obj_set_style_text_color(date_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(date_lab,LV_FONT_MEDIUM_NUMBER_36PX,0);
lv_label_set_text_fmt(date_lab,"%d月%d日",11,17);
lv_obj_set_pos(date_lab,59,178);
lv_obj_t * week_lab = lv_label_create(parent);//6
lv_obj_set_style_text_color(week_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(week_lab,LV_FONT_MEDIUM_NUMBER_36PX,0);
lv_label_set_text(week_lab,"星期二");
lv_obj_set_pos(week_lab,228,178);
lv_obj_t *ico_img1 = lv_img_create(parent);//2
lv_img_set_src(ico_img1,IMG_HUMIDITY);
lv_obj_set_pos(ico_img1,64,252);
lv_obj_t * humi_lab = lv_label_create(parent);//6
lv_obj_set_style_text_color(humi_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(humi_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text_fmt(humi_lab,"湿度 %d%%",60);
lv_obj_set_pos(humi_lab,85,252);
lv_obj_t *ico_img2 = lv_img_create(parent);//2
lv_img_set_src(ico_img2,IMG_AIR);
lv_obj_set_pos(ico_img2,242,252);
lv_obj_t * kq_lab = lv_label_create(parent);//6
lv_obj_set_style_text_color(kq_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(kq_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text_fmt(kq_lab,"空气质量 %d",30);
lv_obj_set_pos(kq_lab,262,252);
}
void fr_lv_86box_page2_func(lv_obj_t *parent, lv_point_t *top)
{
if(!lv_obj_is_valid(parent))
return;
UI_PARENT_INIT(parent);
lv_obj_t *card_obj1 = lv_obj_create(parent);
lv_obj_set_size(card_obj1,104,107);
lv_obj_set_style_pad_all(card_obj1,0,0);
lv_obj_set_style_border_width(card_obj1, 0, 0);
lv_obj_set_style_bg_color(card_obj1,lv_color_make(0, 0, 0),0);
lv_obj_set_pos(card_obj1,32,42);
lv_obj_t *card_obj2 = lv_obj_create(parent);
lv_obj_set_size(card_obj2,104,107);
lv_obj_set_style_pad_all(card_obj2,0,0);
lv_obj_set_style_border_width(card_obj2, 0, 0);
lv_obj_set_style_bg_color(card_obj2,lv_color_make(0, 0, 0),0);
lv_obj_set_pos(card_obj2,148,42);
lv_obj_t *card_obj3 = lv_obj_create(parent);
lv_obj_set_size(card_obj3,174,154);
lv_obj_set_style_pad_all(card_obj3,0,0);
lv_obj_set_style_border_width(card_obj3, 0, 0);
lv_obj_set_style_bg_color(card_obj3,lv_color_make(0, 0, 0),0);
lv_obj_set_pos(card_obj3,273,42);
lv_obj_t *card_obj4 = lv_obj_create(parent);
lv_obj_set_size(card_obj4,222,120);
lv_obj_set_style_pad_all(card_obj4,0,0);
lv_obj_set_style_border_width(card_obj4, 0, 0);
lv_obj_set_style_bg_color(card_obj4,lv_color_make(0, 0, 0),0);
lv_obj_set_pos(card_obj4,32,166);
lv_obj_t *card_obj5 = lv_obj_create(parent);
lv_obj_set_size(card_obj5,222,120);
lv_obj_set_style_pad_all(card_obj5,0,0);
lv_obj_set_style_border_width(card_obj5, 0, 0);
lv_obj_set_style_bg_color(card_obj5,lv_color_make(0, 0, 0),0);
lv_obj_set_pos(card_obj5,32,304);
lv_obj_t *card_obj6 = lv_obj_create(parent);
lv_obj_set_size(card_obj6,173,210);
lv_obj_set_style_pad_all(card_obj6,0,0);
lv_obj_set_style_border_width(card_obj6, 0, 0);
lv_obj_set_style_bg_color(card_obj6,lv_color_make(0, 0, 0),0);
lv_obj_set_pos(card_obj6,273,214);
lv_obj_t *card1_img = lv_img_create(card_obj1);//1
lv_img_set_src(card1_img,IMG_TILEVIEW2_LEAVE_HOME);
lv_obj_align(card1_img,LV_ALIGN_CENTER,0,0);
lv_obj_t *card2_img = lv_img_create(card_obj2);//1
lv_img_set_src(card2_img,IMG_TILEVIEW2_GO_HOME);
lv_obj_align(card2_img,LV_ALIGN_CENTER,0,0);
lv_obj_t *card3_img = lv_img_create(card_obj3);//1
lv_img_set_src(card3_img,IMG_TILEVIEW2_CURTAIN0);
lv_obj_align(card3_img,LV_ALIGN_CENTER,0,0);
lv_obj_t *card4_img = lv_img_create(card_obj4);//1
lv_img_set_src(card4_img,IMG_TILEVIEW2_LIVING_ROOM);
lv_obj_align(card4_img,LV_ALIGN_CENTER,0,0);
lv_obj_t *card5_img = lv_img_create(card_obj5);//1
lv_img_set_src(card5_img,IMG_TILEVIEW2_RESTAURANT);
lv_obj_align(card5_img,LV_ALIGN_CENTER,0,0);
lv_obj_t *card6_img = lv_img_create(card_obj6);//1
lv_img_set_src(card6_img,IMG_TILEVIEW2_AIR_CONDITIONER_BOTTOM_1);
lv_obj_align(card6_img,LV_ALIGN_TOP_LEFT,0,0);
lv_obj_t *card6_img2 = lv_img_create(card_obj6);//1
lv_img_set_src(card6_img2,IMG_TILEVIEW2_AIR_CONDITIONER_BOTTOM_2);
lv_obj_align_to(card6_img2,card6_img,LV_ALIGN_OUT_BOTTOM_LEFT,0,0);
lv_obj_t * left_lab = lv_label_create(card_obj1);//6
lv_obj_set_style_text_color(left_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(left_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text(left_lab,"回家");
lv_obj_align(left_lab,LV_ALIGN_CENTER,0,20);
lv_obj_t * mid_lab = lv_label_create(card_obj2);//6
lv_obj_set_style_text_color(mid_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(mid_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text(mid_lab,"离家");
lv_obj_align(mid_lab,LV_ALIGN_CENTER,0,20);
lv_obj_t *mid_img2 = lv_img_create(card_obj1);//1
lv_img_set_src(mid_img2,IMG_TILEVIEW_LEAVE_HOME);
lv_obj_align(mid_img2,LV_ALIGN_CENTER,0,-20);
lv_obj_t *left_img2 = lv_img_create(card_obj2);//1
lv_img_set_src(left_img2,IMG_TILEVIEW_GO_HOME);
lv_obj_align(left_img2,LV_ALIGN_CENTER,0,-20);
lv_obj_t *right_img2 = lv_img_create(card_obj3);//1
lv_img_set_src(right_img2,IMG_TILEVIEW2_CURTAIN_1);
lv_obj_align(right_img2,LV_ALIGN_TOP_RIGHT,-20,30);
lv_obj_t * cl_lab = lv_label_create(card_obj3);//6
lv_obj_set_style_text_color(cl_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(cl_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text(cl_lab,"窗帘");
lv_obj_align(cl_lab,LV_ALIGN_TOP_LEFT,30,30);
lv_obj_t* bar1 = lv_slider_create(card_obj3);
lv_obj_remove_style(bar1, NULL, LV_PART_KNOB);
lv_obj_set_style_radius(bar1,30,LV_PART_MAIN);
lv_obj_set_style_radius(bar1,0,LV_PART_INDICATOR);
lv_obj_set_style_bg_color(bar1,lv_color_hex(0xFFFFFF),LV_PART_INDICATOR);
lv_obj_set_size(bar1, LV_PCT(75), LV_PCT(20));
lv_obj_align(bar1, LV_ALIGN_CENTER, 0, 10);//
lv_bar_set_mode(bar1, LV_BAR_MODE_SYMMETRICAL);
lv_bar_set_range(bar1, 0, 100);
lv_bar_set_value(bar1, 100, LV_ANIM_OFF);
lv_obj_t * kt_lab = lv_label_create(card_obj4);//6
lv_obj_set_style_text_color(kt_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(kt_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text(kt_lab,"客厅灯");
lv_obj_align(kt_lab,LV_ALIGN_TOP_LEFT,30,30);
lv_obj_t *kt_img = lv_img_create(card_obj4);//1
lv_img_set_src(kt_img,IMG_TILEVIEW2_LIVING_ROOM_LIGHT);
lv_obj_align(kt_img,LV_ALIGN_TOP_RIGHT,-20,20);
lv_obj_t * sw = lv_switch_create(card_obj4);
lv_obj_set_size(sw,40,21);
lv_obj_align(sw,LV_ALIGN_TOP_LEFT,20,80);
lv_obj_set_style_bg_color(sw, lv_color_make(204,204,204), LV_PART_MAIN);
// lv_obj_set_style_bg_color(sw, lv_color_hex(0x00ff00), LV_PART_INDICATOR | LV_STATE_CHECKED);
lv_obj_set_style_bg_color(sw, lv_color_hex(0xffffff), LV_PART_KNOB);
lv_obj_add_state(sw, LV_STATE_DEFAULT);
//lv_obj_add_event_cb(sw, sw_event_cb, LV_EVENT_VALUE_CHANGED, label);
lv_obj_t * ct_lab = lv_label_create(card_obj5);
lv_obj_set_style_text_color(ct_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(ct_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text(ct_lab,"餐厅灯");
lv_obj_align(ct_lab,LV_ALIGN_TOP_LEFT,30,30);
lv_obj_t *ct_img = lv_img_create(card_obj5);//1
lv_img_set_src(ct_img,IMG_TILEVIEW2_LIVING_ROOM_LIGHT);
lv_obj_align(ct_img,LV_ALIGN_TOP_RIGHT,-20,20);
lv_obj_t * ct_sw = lv_switch_create(card_obj5);
lv_obj_set_size(ct_sw,40,21);
lv_obj_align(ct_sw,LV_ALIGN_TOP_LEFT,20,80);
lv_obj_set_style_bg_color(ct_sw, lv_color_make(204,204,204), LV_PART_MAIN);
lv_obj_set_style_bg_color(ct_sw, lv_color_hex(0xffffff), LV_PART_KNOB);
lv_obj_add_state(ct_sw, LV_STATE_CHECKED);
lv_obj_t * kongt_lab = lv_label_create(card_obj6);
lv_obj_set_style_text_color(kongt_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(kongt_lab,LV_FONT_SMALL_NUMBER_20PX,0);
lv_label_set_text(kongt_lab,"空调");
lv_obj_align(kongt_lab,LV_ALIGN_TOP_LEFT,30,30);
lv_obj_t * kt_sw = lv_switch_create(card_obj6);
lv_obj_set_size(kt_sw,40,21);
lv_obj_align(kt_sw,LV_ALIGN_TOP_RIGHT,-30,30);
lv_obj_set_style_bg_color(kt_sw, lv_color_make(204,204,204), LV_PART_MAIN);
lv_obj_set_style_bg_color(kt_sw, lv_color_hex(0xffffff), LV_PART_KNOB);
lv_obj_add_state(kt_sw, LV_STATE_DEFAULT);
lv_obj_t * temp_lab = lv_label_create(card_obj6);
lv_obj_set_style_text_color(temp_lab,lv_color_make(255, 255, 255),0);
lv_obj_set_style_text_font(temp_lab,LV_FONT_MEDIUM_NUMBER_36PX,0);
lv_label_set_text(temp_lab,"26℃");
lv_obj_align(temp_lab,LV_ALIGN_CENTER,0,0);
lv_obj_t *left_kt_img = lv_img_create(card_obj6);//1
lv_img_set_src(left_kt_img,IMG_TILEVWE2_PREV_BUTTON);
lv_obj_align_to(left_kt_img,temp_lab,LV_ALIGN_OUT_LEFT_MID,-20,0);
lv_obj_t *right_kt_img = lv_img_create(card_obj6);//1
lv_img_set_src(right_kt_img,IMG_TILEVIEW2_NEXT);
lv_obj_align_to(right_kt_img,temp_lab,LV_ALIGN_OUT_RIGHT_MID,+20,0);
lv_obj_t *bt1_img = lv_img_create(card_obj6);//1
lv_img_set_src(bt1_img,IMG_TILEVIEW2_BUTTON_ONE);
lv_obj_align(bt1_img,LV_ALIGN_BOTTOM_LEFT,20,-20);
lv_obj_t *bt2_img = lv_img_create(card_obj6);//1
lv_img_set_src(bt2_img,IMG_TILEVIEW2_BUTTON_TWO);
lv_obj_align(bt2_img,LV_ALIGN_BOTTOM_LEFT,60,-20);
}

View File

@ -1,141 +0,0 @@
#ifndef __FR_LV_APP_PAGE_H__
#define __FR_LV_APP_PAGE_H__
void fr_lv_alarm_setting_func(lv_obj_t *parent, lv_point_t *top); // 闹钟首页设置
void fr_lv_alarm_upper_limit_func(lv_obj_t *parent, lv_point_t *top); // 闹钟添加到上限
void fr_lv_alarm_repeat_func(lv_obj_t *parent, lv_point_t *top) ;//设置闹钟重复日期
void fr_lv_alarm_edit_func(lv_obj_t *parent, lv_point_t *top); // 闹钟编辑界面
void fr_lv_del_alarm_hint_func(lv_obj_t *parent, lv_point_t *top) ;//删除闹钟提示
void fr_lv_alarm_bell_func(lv_obj_t *parent, lv_point_t *top);//闹钟响铃提示
void fr_lv_app_downkey_func(lv_obj_t *parent, lv_point_t *top);//下键设置列表
void fr_lv_app_exercise_func(lv_obj_t *parent, lv_point_t *top);//每日活动/运动界面
void fr_lv_blood_oxygen_measure_func(lv_obj_t *parent, lv_point_t *top); //血氧测量主界面
void fr_lv_blood_oxygen_show_func(lv_obj_t *parent, lv_point_t *top); //血氧测量完成显示
void fr_lv_blood_pressure_measure_func(lv_obj_t *parent, lv_point_t *top) ;//血压测量完成显示
void fr_lv_blood_sugar_measure_func(lv_obj_t *parent, lv_point_t *top) ;//血糖测量界面
void fr_lv_body_temperature_display_func(lv_obj_t *parent, lv_point_t *top); //体温测量显示
void fr_lv_body_temperature_func(lv_obj_t *parent, lv_point_t *top) ;//体温测量主页
void fr_lv_body_temperature_warn_func(lv_obj_t *parent, lv_point_t *top);//体温过高警告
void fr_lv_breath_training_home_func(lv_obj_t *parent, lv_point_t *top) ;// 呼吸训练主界面
void fr_lv_breath_setting_func(lv_obj_t *parent, lv_point_t *top) ;//呼吸训练设置目标
void fr_lv_breath_training_finish_func(lv_obj_t *parent, lv_point_t *top); // 呼吸训练完成显示
void fr_lv_breath_training_display_func(lv_obj_t *parent, lv_point_t *top); // 呼吸训练动画显示
void fr_lv_bright_time_func(lv_obj_t *parent, lv_point_t *top) ;// 亮屏时长设置
void fr_lv_bright_home_func(lv_obj_t *parent, lv_point_t *top) ;// 亮度&时长调节主页面
void fr_lv_bright_adjust_func(lv_obj_t *parent, lv_point_t *top);//亮度调节字页面
void fr_lv_dial_preview_func(lv_obj_t* parent,lv_point_t *top);/*表盘预览界面*/
void fr_lv_screen_off_dial_func(lv_obj_t *parent, lv_point_t *top) ;//熄屏表盘设置
void fr_lv_theme_select_func(lv_obj_t *parent, lv_point_t *top) ;// 风格主题选择界面
void fr_lv_raise_wake_hint_func(lv_obj_t *parent, lv_point_t *top);//开启抬腕亮屏设置
void fr_lv_effective_time_home_func(lv_obj_t *parent, lv_point_t *top); //生效时间主页
void fr_lv_dorp_down_func(lv_obj_t *parent, lv_point_t *top);//主页下拉菜单
void fr_lv_pressure_emotion_func(lv_obj_t *parent, lv_point_t *top) ;//情绪测量
void fr_lv_app_exercise_classify_list_func(lv_obj_t *parent, lv_point_t *top);//运动分类列表
void fr_lv_app_exercise_default_list_func(lv_obj_t *parent, lv_point_t *top);//默认运动列表
void fr_lv_exercise_detection_func(lv_obj_t *parent, lv_point_t *top) ;// 运动识别界面
void fr_lv_exercise_detection_hint_func(lv_obj_t *parent, lv_point_t *top) ;//运动识别提示界面
void fr_lv_exercise_over_hint_func(lv_obj_t *parent, lv_point_t *top);// 运动结束提示
void fr_lv_exercise_distance_short_hint_func(lv_obj_t *parent, lv_point_t *top);//距离过短提示
void fr_lv_exercise_time_short_hint_func(lv_obj_t *parent, lv_point_t *top);//时间过短提示
void fr_lv_exercise_long_info_func(lv_obj_t *parent, lv_point_t *top);//运动长信息界面
void fr_lv_exercise_short_info_func(lv_obj_t *parent, lv_point_t *top);//运动短信息界面 根据实际需要显示的信息选择
void fr_lv_exercise_record_func_ex(lv_obj_t *parent, lv_point_t *top) ;//运动记录长页面
void fr_lv_exercise_record_func(lv_obj_t *parent, lv_point_t *top) ;//运动记录短页面
void fr_lv_exercise_app_disc_func(lv_obj_t *parent, lv_point_t *top);//app断开提示
void fr_lv_bluetooth_connect_succ_func(lv_obj_t *parent, lv_point_t *top);//蓝牙连接成功提示
void fr_lv_bluetooth_connect_fail_func(lv_obj_t *parent, lv_point_t *top);//蓝牙连接失败提示
void fr_lv_exercise_start_func(lv_obj_t *parent, lv_point_t *top);//运动开始倒计时
void fr_lv_exercise_sub_list_func(lv_obj_t *parent, lv_point_t *top);//运动选项子类列表 总共7个子类列表
void fr_lv_exercise_start_hint_func(lv_obj_t *parent, lv_point_t *top);//运动开始提示设置
void fr_lv_target_setting_func(lv_obj_t *parent, lv_point_t *top);//运动目标设置时间卡路里公里
void fr_lv_select_target_func(lv_obj_t *parent, lv_point_t *top);//运动设置项选择
void fr_lv_target_setting_func_ex(lv_obj_t *parent, lv_point_t *top);//运动目标设置 距离
void fr_lv_female_health_func(lv_obj_t *parent, lv_point_t *top);//女性健康页面
void fr_lv_find_phone_display_func(lv_obj_t *parent, lv_point_t *top); // 查找手机动画显示
void fr_lv_flashlight_func(lv_obj_t *parent, lv_point_t *top); // 手电筒
void fr_lv_heart_rate_list_func(lv_obj_t *parent, lv_point_t *top);//心率列表
void fr_lv_heart_rate_curve_func(lv_obj_t *parent, lv_point_t *top); //心率监测曲线
void fr_lv_heart_rate_quietness_func(lv_obj_t *parent, lv_point_t *top); //静息心率
void fr_lv_heart_rate_warning_func(lv_obj_t *parent, lv_point_t *top); //心率预警
void fr_lv_alarm_close_hint_func(lv_obj_t *parent, lv_point_t *top); // 闹钟关闭提醒
void fr_lv_alarm_resound_hint_func(lv_obj_t *parent, lv_point_t *top) ;// 闹钟十分钟后再响提醒
void fr_lv_sedentary_hint_func(lv_obj_t *parent, lv_point_t *top); // 久坐提醒
void fr_lv_target_finish_hint_func(lv_obj_t *parent, lv_point_t *top); // 目标达成提示界面
void fr_lv_low_battery_func(lv_obj_t *parent, lv_point_t *top) ;// 低电量提醒
void fr_lv_power_saving_mode_func(lv_obj_t *parent, lv_point_t *top); // 省电模式是否开启
void fr_lv_poweroff_hint_func(lv_obj_t *parent, lv_point_t *top); // 关机提醒
void fr_lv_dev_bind_hint_func(lv_obj_t *parent, lv_point_t *top) ;// 绑定状态显示
void fr_lv_dev_bind_func(lv_obj_t *parent, lv_point_t *top);//是否绑定选择
void fr_lv_home_short_menu_func(lv_obj_t *parent, lv_point_t *top);//主页快捷菜单
void fr_lv_language_setting_func(lv_obj_t *parent, lv_point_t *top);//语言设置
void fr_lv_list_menu_func(lv_obj_t *parent, lv_point_t *top); //长列表菜单
void fr_lv_arc_list_func(lv_obj_t *parent, lv_point_t *top); //弧形列表菜单
void fr_lv_main_clock0_func(lv_obj_t *parent, lv_point_t *top);//主时钟表盘界面
void fr_lv_main_clock1_func(lv_obj_t *parent, lv_point_t *top);//主时钟表盘界面
void fr_lv_main_clock2_func(lv_obj_t *parent, lv_point_t *top);//主时钟表盘界面
void fr_lv_main_clock3_func(lv_obj_t *parent, lv_point_t *top);//主时钟表盘界面
void fr_lv_main_clock4_func(lv_obj_t *parent, lv_point_t *top);//主时钟表盘界面
void fr_lv_main_clock5_func(lv_obj_t *parent, lv_point_t *top);//主时钟表盘界面
void fr_lv_message_hint_page_func(lv_obj_t *parent, lv_point_t *top);//消息主界面
void fr_lv_message_details_page_func(lv_obj_t *parent, lv_point_t *top); //显示对应消息条目详情
void fr_lv_not_disturb_func(lv_obj_t *parent, lv_point_t *top) ;// 勿扰设置
void fr_lv_not_disturb_hint_func(lv_obj_t *parent, lv_point_t *top);//开启勿扰模式提示
void fr_lv_offscreen_dial_func(lv_obj_t *parent, lv_point_t *top); //熄屏表盘
void fr_lv_ota_firmware_func(lv_obj_t *parent, lv_point_t *top); // ota界面
void fr_lv_ota_result_func(lv_obj_t *parent, lv_point_t *top); // 升级结束显示
void fr_lv_add_cards_page_func(lv_obj_t *parent, lv_point_t *top);//主页添加主题提示界面
void fr_lv_themepage_select_func(lv_obj_t *parent, lv_point_t *top);//主页主题选择设置界面
void fr_lv_password_home_func(lv_obj_t *parent, lv_point_t *top);//锁屏 密码主界面
void fr_lv_password_succ_hint_func(lv_obj_t *parent, lv_point_t *top);//密码修改成功提示界面
void fr_lv_password_input_func(lv_obj_t *parent, lv_point_t *top) ;//密码输入提示界面
void fr_lv_about_page_func(lv_obj_t *parent, lv_point_t *top) ;//关于界面
void fr_lv_pressure_measure_func(lv_obj_t *parent, lv_point_t *top) ;//压力测量完成显示
void fr_lv_qrcode_page_func(lv_obj_t *parent, lv_point_t *top);//二维码
void fr_lv_respiratory_rate_func(lv_obj_t *parent, lv_point_t *top); //呼吸率测量
void fr_lv_set_time_select_func(lv_obj_t *parent, lv_point_t *top); //时间设置选择页面
void fr_lv_date_select_func(lv_obj_t *parent, lv_point_t *top) ;// 日期设置选择 页面
void fr_lv_setting_list_func(lv_obj_t *parent, lv_point_t *top); //默认设置列表
void fr_lv_dial_theme_setting_func(lv_obj_t *parent, lv_point_t *top); //表盘主题设置
void fr_lv_more_list_func(lv_obj_t *parent, lv_point_t *top);//更多设置列表
void fr_lv_sleep_page_func(lv_obj_t *parent, lv_point_t *top); //睡眠主界面
void fr_lv_soundvibration_home_func(lv_obj_t *parent, lv_point_t *top); // 声音与振动主页面
void fr_lv_sound_adjust_func(lv_obj_t *parent, lv_point_t *top); // 声音音量调节子界面
void fr_lv_vibration_select_func(lv_obj_t *parent, lv_point_t *top); // 振动强度选择 页面
void fr_lv_stop_watch_func(lv_obj_t *parent, lv_point_t *top); // 秒表
void fr_lv_system_menu_func(lv_obj_t *parent, lv_point_t *top) ; //系统菜单
void fr_lv_system_menu_hint_func(lv_obj_t *parent, lv_point_t *top);//重启 关机 恢复出厂设置 提示页面
void fr_lv_time_date_home_func(lv_obj_t *parent, lv_point_t *top); // 时间与日期主界面
void fr_lv_universal_time_func(lv_obj_t *parent, lv_point_t *top); //世界时间主界面
void fr_lv_add_city_func(lv_obj_t *parent, lv_point_t *top); //添加城市界面
void fr_lv_del_city_hint_func(lv_obj_t *parent, lv_point_t *top);//是否删除当前城市
void fr_lv_wear_detection_func(lv_obj_t *parent, lv_point_t *top); //佩戴检测
void fr_lv_wear_detection_func_ex(lv_obj_t *parent, lv_point_t *top); //佩戴提醒
void fr_lv_weather_report_func(lv_obj_t *parent, lv_point_t *top); //天气预报界面
void fr_lv_voice_assistant_func(lv_obj_t *parent, lv_point_t *top);//语音助手界面
void fr_lv_power_ctrl_func(lv_obj_t *parent, lv_point_t *top); // 电源控制界面
void fr_lv_exercise_main_info_func(lv_obj_t *parent,lv_point_t *top);//运动信息显示界面
void fr_lv_app_circle_func(lv_obj_t *parent,lv_point_t *top);//单圆样式界面
void fr_lv_app_dia_func(lv_obj_t *parent,lv_point_t *top);//电话相关界面
void fr_lv_app_dial_phone_book(lv_obj_t *parent,lv_point_t *top);//电话本界面
void fr_lv_app_dial_call_history(lv_obj_t *parent,lv_point_t *top);//通话记录界面
void fr_lv_app_dial_dial(lv_obj_t *parent,lv_point_t *top);//拨号盘界面
void fr_lv_timer_count_start_func(lv_obj_t *parent, lv_point_t *top);//计时器开始界面
void fr_lv_timer_custom_func(lv_obj_t *parent, lv_point_t *top);//自定义计数参数界面
void fr_lv_app_timer_func(lv_obj_t *parent, lv_point_t *top);//计时器界面
void fr_lv_photograph_func(lv_obj_t *parent, lv_point_t *top);//点击拍照界面
void fr_lv_app_calculator(lv_obj_t *parent, lv_point_t *top);//计算器界面
void fr_lv_app_music_control_func(lv_obj_t *parent, lv_point_t *top);//音乐界面
void fr_lv_screensaver_func(lv_obj_t *parent, lv_point_t *top) ;
void fr_lv_flexible_msg_func(lv_obj_t *parent, lv_point_t *top);//灵动岛消息
void fr_flexible_msg_set_type(uint8_t type);
#endif

View File

@ -1,224 +0,0 @@
#include "lvgl.h"
#include "fr_lv_public_func.h"
#include "lv_user_sqlist.h"
#define PAGE_MAX_LENGTH 15
#define CUSTOM_UI_ARRY_NUMBER 12
SqlistType_t page_list;
ElemType_t page_sqlist_space[PAGE_MAX_LENGTH]={0};
/*
page_list define:
0:ui_clock_group,
1-(PAGE_MAX_LENGTH-1):custom_ui_arry
*/
extern void fr_load_watch_face_from_ext_flash(lv_obj_t *parent,void *arg);
static const ui_func custom_ui_arry[CUSTOM_UI_ARRY_NUMBER]=
{
fr_lv_add_cards_page_func,
//---------------------------
fr_lv_app_exercise_func,
fr_lv_sleep_page_func,
fr_lv_weather_report_func,
fr_lv_pressure_measure_func,
fr_lv_heart_rate_list_func,
fr_lv_blood_oxygen_measure_func,
fr_lv_blood_pressure_measure_func,
fr_lv_app_exercise_default_list_func,
//---------------------------
fr_lv_pressure_emotion_func,
fr_lv_respiratory_rate_func,
fr_lv_body_temperature_display_func,
//fr_load_watch_face_from_ext_flash,
//---------------------------
};
static LV_ATTRIBUTE_LARGE_CONST const ui_func ui_clock_group[] =
{
fr_lv_main_clock2_func,
fr_lv_main_clock1_func,
fr_lv_main_clock0_func,
fr_lv_main_clock3_func,
fr_lv_main_clock4_func,
fr_lv_main_clock5_func,
NULL, //*entry_main
};
//==============================================================
//==============================================================
//==============================================================
uint8_t fr_ui_watchface_total(void)
{
return sizeof(ui_clock_group) / 4;
}
ui_func fr_ui_get_watchface(void)
{
uint8_t ui_face_id = fr_system_get_watch_face();
ui_func func = ui_clock_group[ui_face_id];
return func;
}
void fr_lv_custom_page_set_watch_face(uint8_t watch_face_id)
{
watch_face_id |= 0xc0;
lv_user_list_replace(&page_list,0,watch_face_id);
}
bool fr_lv_is_ui_index_in_list(uint8_t custom_ui_arry_index)
{
custom_ui_arry_index |= 0x80;
uint8_t elem_id = lv_user_list_get_elem_id(&page_list,custom_ui_arry_index);
if(elem_id != 0xff)
{
return 1;
}
else
return 0;
}
bool fr_lv_custom_page_add(uint8_t custom_ui_arry_index)
{
custom_ui_arry_index |= 0x80;
uint8_t elem_id = lv_user_list_get_elem_id(&page_list,custom_ui_arry_index);
if( elem_id == 0xff)
{
printf("add elem!!\r\n");
//列表中无该元素,则添加
//放在添加页面之前,添加页面永远在最后
uint8_t len = lv_user_list_get_sqlist_length(&page_list);
if(len == 0)
lv_user_list_insert(&page_list,len,custom_ui_arry_index);
else
lv_user_list_insert(&page_list,len-1,custom_ui_arry_index);
return 1;
}
return 0;
}
bool fr_lv_custom_page_delete(uint8_t custom_ui_arry_index)
{
custom_ui_arry_index |= 0x80;
uint8_t elem_id = lv_user_list_get_elem_id(&page_list,custom_ui_arry_index);
if(elem_id != 0xff)
{
lv_user_list_delete(&page_list,elem_id);
return 1;
}
else
return 0;
}
uint8_t fr_lv_get_custom_page_length(void)
{
return page_list.length;
}
uint8_t *fr_lv_get_custom_page_data(void)
{
return (uint8_t *)page_list.data;
}
ui_func fr_lv_get_prev_custom_page(uint8_t index)
{
ElemType_t prev_page = lv_user_list_get_prev_elem(&page_list,index);
if((prev_page & 0xc0) == 0xc0)
{
prev_page &= 0x3f;
return ui_clock_group[prev_page];
}
else
{
prev_page &= 0x7f;
return custom_ui_arry[prev_page];
}
}
ui_func fr_lv_get_next_custom_page(uint8_t index)
{
ElemType_t next_page = lv_user_list_get_next_elem(&page_list,index);
if((next_page & 0xc0) == 0xc0)
{
next_page &= 0x3f;
return ui_clock_group[next_page];
}
else
{
next_page &= 0x7f;
return custom_ui_arry[next_page];
}
}
ui_func fr_lv_get_cur_custom_page(uint8_t index)
{
ElemType_t cur_page = lv_user_list_get_cur_elem(&page_list,index);
if((cur_page&0xc0) == 0xc0)
{
cur_page &= 0x3f;
return ui_clock_group[cur_page];
}
else
{
cur_page &= 0x7f;
return custom_ui_arry[cur_page];
}
}
uint8_t splist_get_elem_number(void)
{
uint8_t len = 0;
uint8_t *custom_mode = fr_system_get_custom_page_mode();
for (uint8_t i = 0; i < CUSTOM_ID_ARRY_NUMBER; i++)
{
if ((custom_mode[i] != 0) && (custom_mode[i] <= CUSTOM_ID_ARRY_NUMBER))
{
len++;
}
}
return len;
}
//--
ui_func get_prior_element(uint8_t index)
{
return fr_lv_get_prev_custom_page(index);
}
ui_func get_next_element(uint8_t index)
{
return fr_lv_get_next_custom_page(index);
}
ui_func get_cur_element(uint8_t index)
{
return fr_lv_get_cur_custom_page(index);
}
//---
void page_list_traverser(void)
{
ListTraverse(&page_list);
}
void fr_lv_custom_page_init(void)
{
page_list.data = page_sqlist_space;
page_list.length = 0;
//----------------------------------
uint8_t elem_len = splist_get_elem_number();
if (elem_len == 0) // list is empty;
{
//clock0 and fr_lv_add_cards_page_func
fr_lv_custom_page_add(0);
fr_lv_custom_page_add(1);
fr_lv_custom_page_set_watch_face(0);
//---------------------------------
fr_lv_custom_page_add(1);
fr_lv_custom_page_add(2);
fr_lv_custom_page_add(3);
fr_lv_custom_page_add(4);
fr_system_set_custom_page_mode();
}
else
{
uint8_t *custom_mode = fr_system_get_custom_page_mode();
for (uint8_t i = 0; i < elem_len; i++)
{
fr_lv_custom_page_add(custom_mode[i]);
}
}
}

Some files were not shown because too many files have changed in this diff Show More