diff --git a/BSP/u-boot/board/novatek/common/nvt_logo/nvt_display_for_fwupdate.c b/BSP/u-boot/board/novatek/common/nvt_logo/nvt_display_for_fwupdate.c index c00654e27..bce0904a0 100755 --- a/BSP/u-boot/board/novatek/common/nvt_logo/nvt_display_for_fwupdate.c +++ b/BSP/u-boot/board/novatek/common/nvt_logo/nvt_display_for_fwupdate.c @@ -78,7 +78,7 @@ #define LEFTFRAME_ROTATE270 3 #define RIGHTFRAME_ROTATE270 3 #define BAR_X_ROTATE270 36 -#define BAR_Y_ROTATE270 46 +#define BAR_Y_ROTATE270 45 #define BAR_W_ROTATE270 10 //Progressive bar and drawing by CPU. The x-offset is movable #define BAR_H_ROTATE270 8 #define STRING1_X_ROTATE270 36 @@ -951,7 +951,7 @@ void nvt_display_draw(UINT32 u32Id) //printf("g_uiPinPongIdx:%lu g_uiXBarStep:%lu g_uiBarWtmp:%lu tmp:%lu\r\n", g_uiPinPongIdx,g_uiXBarStep,g_uiBarWtmp, (g_uiStr6_h - g_uiBarW)); g_uiXBarStep++; g_uiBarWtmp = g_uiXBarStep*g_uiBarW; - if(g_uiBarWtmp > g_uiStr6_h) + if((g_uiBarWtmp > g_uiStr6_h) || (g_uiXBarStep >= g_uiTotalBarNum)) { g_uiBarWtmp = g_uiStr6_h; } @@ -1312,7 +1312,7 @@ void nvt_display_config(UINT32 config_id, UINT32 vlaue) g_uiTotalBarNum = vlaue*2; //wrtie partition + read back partition g_uiBarW = g_uiStr6_h/(vlaue*2); g_uiBarH = g_uiStr6_w; - //printf("g_uiBarW:%lu\r\n", g_uiBarW); + //printf("g_uiBarW:%lu g_uiBarH:%lu\r\n", g_uiBarW, g_uiBarH); break; } } diff --git a/build_all.sh b/build_all.sh new file mode 100755 index 000000000..4616e2a42 --- /dev/null +++ b/build_all.sh @@ -0,0 +1,29 @@ +#!/bin/bash +#用于gitlab-ci.yml编译使用 + +#make app_clean + +echo "Start compile." +export ROOT_PATH=$PWD + +cd rtos +source build/envsetup.sh +lunch rtos cfg_565_HUNTING_EVB_LINUX_4G_S550 gcc-6.5-newlib-2.4-2019.11-arm-ca9-eabihf +#make clean +make all > /dev/null +cp output/application.bin ../ +cp output/rtos-main.bin ../ + + +cd $ROOT_PATH +source build/envsetup.sh +lunch Linux cfg_565_HUNTING_EVB_LINUX_4G_S550 arm-ca9-linux-uclibcgnueabihf-8.4.01 +#make clean +make all > /dev/null + +cd $ROOT_PATH +cd loader/MakeCommon +make release + +cd $ROOT_PATH +cp loader/Project/Model/Loader565_Data/Release/LD98565A.bin output/packed diff --git a/code/application/source/cardv/Makefile b/code/application/source/cardv/Makefile index 91affbc5a..b7ad8541b 100755 --- a/code/application/source/cardv/Makefile +++ b/code/application/source/cardv/Makefile @@ -122,6 +122,7 @@ SRC = \ ./SrcCode/System/SysFW_Upgrade_Strg_Obj.c \ ./SrcCode/System/SysFW_Upgrade.c \ ./SrcCode/System/sys_usrmem.c \ + ./SrcCode/System/mem_hotplug.c \ ./SrcCode/UIApp/UIAppObj.c \ ./SrcCode/UIApp/ExifVendor.c \ ./SrcCode/UIApp/Setup/UISetup_Exe.c \ diff --git a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 56e4dc412..4b869ab2c 100755 --- a/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -945,7 +945,7 @@ #define SF_IS_RELEASE ENABLE #define PHOTO_ISP_STAMP DISABLE -#define SF_BASE_VERSION_FEA "R2.3" +#define SF_BASE_VERSION_FEA "R6.0" #define SF_GPS_SUPPORT 1 #define SF_SEND_LIST_ITEM_LENGTH 15 #define SF_4G_REGISTER_NETWORK_COUNT 230 diff --git a/code/application/source/cardv/SrcCode/System/SysMain.c b/code/application/source/cardv/SrcCode/System/SysMain.c index 82d051e3a..6d34b1977 100644 --- a/code/application/source/cardv/SrcCode/System/SysMain.c +++ b/code/application/source/cardv/SrcCode/System/SysMain.c @@ -569,7 +569,7 @@ void UserMainProc(void) lv_task_set_prio(indev_keypad->driver.read_task, LV_TASK_PRIO_OFF); while(!bUI_Quit) { - + bool printKey = true; Ux_WaitEvent(&evt, ¶mNum, paramArray); if(!evt) { @@ -595,6 +595,41 @@ void UserMainProc(void) DBG_WRN("received key event(%lx) without key state\r\n", evt); } + if(printKey){ + switch((uint32_t)lv_user_keymap_find(evt)){ + case LV_KEY_DOWN: + case LV_KEY_NEXT: + { + printf("[Key]>>>DOWN\n"); + break; + } + case LV_KEY_UP: + case LV_KEY_PREV: + { + printf("[Key]>>>UP\n"); + break; + } + case LV_KEY_LEFT: + { + printf("[Key]>>>LEFT\n"); + break; + } + case LV_KEY_RIGHT: + { + printf("[Key]>>>RIGHT\n"); + break; + } + case LV_KEY_ENTER: + { + printf("[Key]>>>ENTER\n"); + break; + } + } + printKey = false; + } + + + g_keyboard_value = evt; if((paramArray[0] > NVTEVT_KEY_PRESS_START && paramArray[0] < NVTEVT_KEY_PRESS_END) || @@ -773,6 +808,8 @@ exit: { DBG_DUMP("LogFile_Close ...\n"); LogFile_Close(); + system("rm -rf /mnt/sd/LOG/*dummy*");//Clear intermediate files. + system("sync"); } #endif #else diff --git a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c index aa392aacc..a13a8cc02 100755 --- a/code/application/source/cardv/SrcCode/System/SysMain_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysMain_Exe.c @@ -158,7 +158,7 @@ INT32 System_GetBootFirstMode(void) { return PRIMARY_MODE_USBMSDC; } - else if((PWR_ON_SETUP != PowerOnMode) /*|| (sf_get_fw_update())*/) + else if((PWR_ON_SETUP != PowerOnMode) && (PWR_ON_MCU_UPDATA != PowerOnMode)/*|| (sf_get_fw_update())*/) { return PRIMARY_MODE_TRANSCODE; } diff --git a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c index 5d21b03ee..fe4a9b0f2 100644 --- a/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c +++ b/code/application/source/cardv/SrcCode/System/SysStrg_Exe.c @@ -424,6 +424,7 @@ void System_OnStrgInit_FS(void) cfg.LogBuffSize2 = gLogFile_Buff2_Size; #endif LogFile_Config(&cfg); + DBG_DUMP("LogFile_Config ...\n"); } #endif @@ -1064,7 +1065,7 @@ INT32 System_OnStrgAttach(VControl *pCtrl, UINT32 paramNum, UINT32 *paramArray) logOpenParm.maxFileNum = maxFileNum; logOpenParm.maxFileSize = maxFileSize; - logOpenParm.isPreAllocAllFiles = TRUE; + logOpenParm.isPreAllocAllFiles = FALSE; #if defined(__FREERTOS) logOpenParm.isSaveLastTimeSysErrLog = wdt_getResetNum()>0 ? TRUE : FALSE; #else //defined(__LINUX_USER__) diff --git a/code/application/source/cardv/SrcCode/System/main.c b/code/application/source/cardv/SrcCode/System/main.c index 60e735c39..3af208301 100755 --- a/code/application/source/cardv/SrcCode/System/main.c +++ b/code/application/source/cardv/SrcCode/System/main.c @@ -14,6 +14,7 @@ #include "comm/timer.h" #include #include +#include "mem_hotplug.h" #if HUNTING_CAMERA_MCU == ENABLE #include #include "sf_log.h" @@ -250,6 +251,9 @@ UINT32 nvt_hdal_init(void) DBG_ERR("mem init fail=%d\n", ret); return -1; } + + memory_hotplug(); + ret = hd_gfx_init(); if(ret != HD_OK) { DBG_ERR("gfx init fail=%d\n", ret); diff --git a/code/application/source/cardv/SrcCode/System/mem_hotplug.c b/code/application/source/cardv/SrcCode/System/mem_hotplug.c new file mode 100755 index 000000000..90fc2a0c5 --- /dev/null +++ b/code/application/source/cardv/SrcCode/System/mem_hotplug.c @@ -0,0 +1,82 @@ +#include +#include +#include "mem_hotplug.h" +#include "kwrap/debug.h" + +#define SWAP4(x) ((((x) & 0xFF) << 24) | (((x) & 0xFF00) << 8) | (((x) & 0xFF0000) >> 8) | (((x) & 0xFF000000) >> 24)) + +static int read_fdt(const char *path, unsigned int *p_addr, unsigned int *p_size) +{ + int fd; + unsigned int reg[2] = {0}; + + if ((fd = open(path, O_RDONLY)) < 0) { + printf("unable to open %s\n", path); + return -1; + } + + if (read(fd, reg, sizeof(reg)) != sizeof(reg)) { + printf("unable to read reg on %s\n", path); + close(fd); + return -1; + } + + *p_addr = SWAP4(reg[0]); + *p_size = SWAP4(reg[1]); + close(fd); + return 0; +} + +static int get_mem_range(unsigned int *p_addr, unsigned int *p_size) +{ + unsigned int fdt_addr, fdt_size; + unsigned int rtos_addr, rtos_size; +// unsigned int bridge_addr, bridge_size; + //get fdt addr and size in nvt_memory_cfg + if (read_fdt("/sys/firmware/devicetree/base/nvt_memory_cfg/fdt/reg", &fdt_addr, &fdt_size) != 0) { + return -1; + } + if (read_fdt("/sys/firmware/devicetree/base/nvt_memory_cfg/rtos/reg", &rtos_addr, &rtos_size) != 0) { + return -1; + } + +#if 0 /* bridge is not used */ + if (read_fdt("/sys/firmware/devicetree/base/nvt_memory_cfg/bridge/reg", &bridge_addr, &bridge_size) != 0) { + return -1; + } +#endif + + *p_addr = fdt_addr; + *p_size = fdt_size + rtos_size; +// *p_size = fdt_size + rtos_size + bridge_size; + return 0; +} + +static int do_hotplug(unsigned int mem_begin, unsigned mem_size) +{ + HD_RESULT ret=0; + VENDOR_LINUX_MEM_HOT_PLUG desc = {0}; + desc.start_addr = mem_begin; + desc.size = mem_size; + ret = vendor_common_mem_set(VENDOR_COMMON_MEM_ITEM_LINUX_HOT_PLUG, &desc); + if(ret != 0){ + printf("nvtmem_hotplug_set fail ret:%d\n", (int)ret); + } + return 0; +} + +HD_RESULT memory_hotplug(void) +{ + unsigned int mem_begin, mem_size; + + // read memory space from bridge memory + if (get_mem_range(&mem_begin, &mem_size) != 0) { + return HD_ERR_INIT; + } + // do hotplug + if (do_hotplug(mem_begin, mem_size) != 0) { + return HD_ERR_SYS; + } + + return 0; +} diff --git a/code/application/source/cardv/SrcCode/System/mem_hotplug.h b/code/application/source/cardv/SrcCode/System/mem_hotplug.h new file mode 100755 index 000000000..71a2f281c --- /dev/null +++ b/code/application/source/cardv/SrcCode/System/mem_hotplug.h @@ -0,0 +1,7 @@ +#ifndef _MEM_HOTPLUG_H +#define _MEM_HOTPLUG_H +#include + +extern HD_RESULT memory_hotplug(void); + +#endif \ No newline at end of file diff --git a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c index 6a4899e3f..9306ca6bf 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Movie/UIAppMovie_Exe.c @@ -833,6 +833,7 @@ static void MovieExe_WifiCB(HD_VIDEO_FRAME *pEthcamSrc) //#if (MOVIE_UVAC_FUNC == DISABLE) //if (System_GetState(SYS_STATE_CURRSUBMODE) != SYS_SUBMODE_WIFI) { if (ImageApp_MovieMulti_IsStreamRunning(_CFG_STRM_ID_1) == FALSE) { + vos_util_delay_ms(10); return; } //#endif diff --git a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c index 4dd80a36a..c0740a58b 100755 --- a/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c +++ b/code/application/source/cardv/SrcCode/UIApp/Photo/UIAppPhoto_Exe.c @@ -6818,22 +6818,22 @@ INT32 PhotoExe_Preview_SliceEncode_CB3(void* user_data) FileSys_CloseFile(fp); #if HUNTING_CAMERA_MCU == ENABLE char tmp2[64] = {'\0'}; - UIMenuStoreInfo *puiPara = sf_ui_para_get(); + //UIMenuStoreInfo *puiPara = sf_ui_para_get(); memset(tmp, '\0', sizeof(tmp)); SF_FILE_TYPE_E enFileType = 0; - if(SF_CAM_MODE_PHOTO == puiPara->CamMode){ + if(SF_CAM_MODE_PHOTO == sf_get_cammode_statu()){ enFileType = SF_FILE_TYPE_PIC_SMALL; - }else if(SF_CAM_MODE_PHOTO_VIDEO == puiPara->CamMode){ + }else if(SF_CAM_MODE_PHOTO_VIDEO == sf_get_cammode_statu()){ enFileType = SF_FILE_TYPE_PIC_VIDEO; } - else if(SF_CAM_MODE_VIDEO2 == puiPara->CamMode){ + else if(SF_CAM_MODE_VIDEO2 == sf_get_cammode_statu()){ enFileType = SF_FILE_TYPE_PIC_VIDEO; } snprintf(tmp, sizeof(tmp), "%sW%s%s.JPG", SF_SEND_LIST_DIR, folder, number); /* DCF 8.3 naming rule */ snprintf(tmp2, sizeof(tmp2), "W%s%s.JPG", folder, number); /* DCF 8.3 naming rule */ DBG_DUMP("PHOTO THUMB %s \n %s\n", tmp, tmp2); sf_file_thumb_cfg_fill(tmp, tmp2, queue_ele_in->jpg_thumb_size, enFileType); - if((!sf_get_mode_flag()) || ((FALSE == sf_check_net_work_flag()) && (0 < sf_cardv_get_cq_signal()) && (SF_CAM_MODE_PHOTO == puiPara->CamMode))) + if((!sf_get_mode_flag()) || ((FALSE == sf_check_net_work_flag()) && (0 < sf_cardv_get_cq_signal()) && (SF_CAM_MODE_PHOTO == sf_get_cammode_statu()))) { if(SUCCESS == sf_share_mem_file_down(0, 0)){ sf_set_send_statu(TRUE); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_106_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_106_1bpp.c index ebd03f3b2..6309db181 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_106_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_106_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 106 px * Bpp: 1 - * Opts: --format lvgl --size 106 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/arialuni_106_1bpp.c --no-compress + * Opts: --format lvgl --size 106 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/arialuni_106_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_16_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_16_1bpp.c index d99162293..d131803bc 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_16_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_16_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 16 px * Bpp: 1 - * Opts: --format lvgl --size 16 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/arialuni_16_1bpp.c --no-compress + * Opts: --format lvgl --size 16 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/arialuni_16_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_18_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_18_1bpp.c index ca0b83be9..28cccf494 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_18_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_18_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 18 px * Bpp: 1 - * Opts: --format lvgl --size 18 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/arialuni_18_1bpp.c --no-compress + * Opts: --format lvgl --size 18 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/arialuni_18_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_32_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_32_1bpp.c index e823c1ded..aca3f58a9 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_32_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_32_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 32 px * Bpp: 1 - * Opts: --format lvgl --size 32 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/arialuni_32_1bpp.c --no-compress + * Opts: --format lvgl --size 32 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/arialuni_32_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_48_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_48_1bpp.c index 36fe4e239..7ddf33c89 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_48_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_48_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 48 px * Bpp: 1 - * Opts: --format lvgl --size 48 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/arialuni_48_1bpp.c --no-compress + * Opts: --format lvgl --size 48 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/arialuni_48_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_60_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_60_1bpp.c index 0a0b8e703..9e1203361 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_60_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_60_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 60 px * Bpp: 1 - * Opts: --format lvgl --size 60 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/arialuni_60_1bpp.c --no-compress + * Opts: --format lvgl --size 60 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/arialuni_60_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_74_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_74_1bpp.c index 3bdca235d..b16092f1a 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_74_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_74_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 74 px * Bpp: 1 - * Opts: --format lvgl --size 74 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/arialuni_74_1bpp.c --no-compress + * Opts: --format lvgl --size 74 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/arialuni_74_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_86_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_86_1bpp.c index 528d2af06..6b30f601a 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_86_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/arialuni_86_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 86 px * Bpp: 1 - * Opts: --format lvgl --size 86 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/arialuni_86_1bpp.c --no-compress + * Opts: --format lvgl --size 86 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/ARIALUNI.TTF -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/arialuni_86_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_8_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_8_1bpp.c index 4ae083e8b..29f08894d 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_8_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosans_black_8_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 8 px * Bpp: 1 - * Opts: --format lvgl --size 8 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/NotoSans-Black.ttf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/notosans_black_8_1bpp.c --no-compress + * Opts: --format lvgl --size 8 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/NotoSans-Black.ttf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/notosans_black_8_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosanscjksc_black_16_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosanscjksc_black_16_1bpp.c index 5e59f133b..269f47bb9 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosanscjksc_black_16_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/notosanscjksc_black_16_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 16 px * Bpp: 1 - * Opts: --format lvgl --size 16 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/NotoSansCJKsc-Black.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/notosanscjksc_black_16_1bpp.c --no-compress + * Opts: --format lvgl --size 16 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/NotoSansCJKsc-Black.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/notosanscjksc_black_16_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_16_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_16_1bpp.c index 7f8473ad1..c369c8feb 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_16_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_16_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 16 px * Bpp: 1 - * Opts: --format lvgl --size 16 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/SF-UI-Text-Bold.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_16_1bpp.c --no-compress + * Opts: --format lvgl --size 16 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/SF-UI-Text-Bold.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_16_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_18_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_18_1bpp.c index f14b9df97..6bb7feb26 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_18_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_18_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 18 px * Bpp: 1 - * Opts: --format lvgl --size 18 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/SF-UI-Text-Bold.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_18_1bpp.c --no-compress + * Opts: --format lvgl --size 18 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/SF-UI-Text-Bold.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_18_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_20_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_20_1bpp.c index 072caa436..fe8afa397 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_20_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_20_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 20 px * Bpp: 1 - * Opts: --format lvgl --size 20 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/SF-UI-Text-Bold.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_20_1bpp.c --no-compress + * Opts: --format lvgl --size 20 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/SF-UI-Text-Bold.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_bold_20_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_12_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_12_1bpp.c index 8660c1c09..cfb492627 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_12_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_12_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 12 px * Bpp: 1 - * Opts: --format lvgl --size 12 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/SF-UI-Text-Medium.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_12_1bpp.c --no-compress + * Opts: --format lvgl --size 12 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/SF-UI-Text-Medium.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_12_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_16_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_16_1bpp.c index 1da355f3b..4543d3630 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_16_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_16_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 16 px * Bpp: 1 - * Opts: --format lvgl --size 16 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/SF-UI-Text-Medium.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_16_1bpp.c --no-compress + * Opts: --format lvgl --size 16 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/SF-UI-Text-Medium.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_16_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_18_1bpp.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_18_1bpp.c index c6d2a3d03..d5f0f10b2 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_18_1bpp.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_18_1bpp.c @@ -1,7 +1,7 @@ /******************************************************************************* * Size: 18 px * Bpp: 1 - * Opts: --format lvgl --size 18 --bpp 1 --font D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/fonts/SF-UI-Text-Medium.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/WOKR/git/S550_GUI/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_18_1bpp.c --no-compress + * Opts: --format lvgl --size 18 --bpp 1 --font D:/projects_code/01/LVGL_SPORTCAM/fonts/SF-UI-Text-Medium.otf -r 0x20-0x3b,0x3d,0x3f-0x5f,0x61-0x7e,0xb0,0xba,0xc1,0xc3-0xc4,0xc9,0xce,0xd3,0xd6,0xdc,0xdf-0xe4,0xe7-0xea,0xec-0xed,0xf1-0xf3,0xf5-0xf6,0xfa,0xfc,0x105,0x118,0x410-0x414,0x417-0x418,0x41a,0x41c-0x424,0x426-0x428,0x42b,0x42d,0x42f-0x44f,0x2026,0x3001,0x3005,0x3042,0x3044,0x3046,0x3048,0x304a-0x304f,0x3051,0x3053,0x3055,0x3057,0x3059,0x305b,0x305f-0x3061,0x3063,0x3066-0x306b,0x306d-0x3070,0x3079,0x307b,0x307e-0x3082,0x3088-0x308d,0x3092-0x3093,0x30a1-0x30a4,0x30a6-0x30ab,0x30ad,0x30af-0x30b0,0x30b3-0x30b5,0x30b7-0x30bd,0x30bf-0x30c1,0x30c3-0x30c4,0x30c6-0x30c9,0x30cb,0x30cd-0x30d1,0x30d3-0x30d7,0x30d9-0x30db,0x30dd-0x30e3,0x30e5,0x30e7,0x30e9-0x30ed,0x30ef,0x30f3,0x30fc,0x4e00,0x4e09-0x4e0b,0x4e0d,0x4e1d,0x4e25,0x4e2d,0x4e86,0x4eae,0x4eba,0x4ecb,0x4ece,0x4ed8,0x4ef6,0x4f11,0x4f18,0x4f20,0x4f48,0x4f4d-0x4f4e,0x4f53,0x4f5c,0x4f73,0x4f7f,0x4fa6,0x4fdd,0x4fe1,0x4fee,0x5019,0x503c,0x505c,0x5075,0x507f,0x50a8,0x50b3,0x50cf,0x511f,0x5132,0x5145,0x5149,0x5165,0x5167-0x5168,0x5173,0x5185,0x518d,0x5199,0x51c6,0x51cf,0x51e6,0x51fa,0x5206-0x5207,0x5217,0x521d,0x5220,0x5229-0x522b,0x5230,0x5236-0x5237,0x523b,0x524a,0x524d,0x526a,0x52a0,0x52a8,0x52d5,0x5305,0x5316,0x5355,0x5358,0x5361,0x5370,0x5377,0x5382,0x53bb,0x53d6,0x53d8,0x53e4,0x53ef,0x53f7,0x5408,0x540b,0x540d,0x5426,0x542b,0x547d,0x548c,0x54c1,0x5546,0x55ae,0x5668,0x56b4,0x56de,0x56fa,0x56fe,0x5716,0x5727-0x5728,0x573a,0x5747,0x578b,0x5834-0x5835,0x585e,0x58a8,0x58d3,0x58f0,0x5904,0x5907,0x5909,0x590d,0x591c,0x5927,0x5929,0x592e,0x5934,0x5939,0x593e,0x59cb,0x5a92,0x5b50,0x5b57-0x5b58,0x5b8c,0x5b9a,0x5bf8,0x5c01,0x5c06-0x5c07,0x5c0f,0x5c11,0x5c3a,0x5c3d,0x5c40,0x5de5,0x5df2,0x5e27,0x5e38,0x5e45,0x5e73,0x5e7b,0x5ea6,0x5ee0,0x5efa,0x5f00,0x5f0f,0x5f15,0x5f20,0x5f35,0x5f37,0x5f39-0x5f3a,0x5f48,0x5f52-0x5f53,0x5f55,0x5f69,0x5f71,0x5f85,0x5f8c,0x5f9e,0x5fa9-0x5faa,0x5fc6,0x5fd9,0x5feb,0x603b,0x6062,0x606f,0x61b6,0x6210,0x623b,0x6240,0x624b,0x6253,0x627e,0x629e,0x62a4,0x62bc,0x62c5,0x62cd,0x62d4,0x62e9,0x62ec,0x62f7,0x6301,0x6309,0x633f,0x636e,0x6372,0x63a5,0x63d0,0x63d2,0x6444,0x64ad-0x64ae,0x64c7,0x651d,0x652f,0x6539,0x653e,0x6548,0x6570,0x6574,0x6578,0x6587,0x6599,0x65ad,0x65b0,0x65b9,0x65cb,0x65e0,0x65e5,0x65f6,0x660e,0x662f,0x6642,0x666e-0x666f,0x6674,0x667a,0x66ab,0x66c7,0x66dd,0x66f4,0x6700,0x6709,0x671f,0x672a,0x672c,0x673a,0x675f,0x676f,0x6790,0x679a,0x679c,0x67d4,0x6807,0x683c,0x6848,0x6863,0x68c0,0x68d5,0x691c,0x69cb,0x6a19,0x6a21,0x6a5f,0x6a94,0x6aa2,0x6b21,0x6b62-0x6b64,0x6c34,0x6c92,0x6ca1,0x6cd5,0x6ce1,0x6d4b,0x6d4e,0x6d88,0x6e1b,0x6e2c,0x6e90,0x6e96,0x6ec5,0x6ee1,0x6eff,0x6fdf,0x706f,0x70b9,0x70c8,0x7121,0x7126,0x7167,0x71c8,0x7247-0x7248,0x7269,0x7387,0x73af,0x73fe,0x7406,0x74b0,0x751f,0x7528,0x7535,0x753b,0x7565,0x756b,0x767d,0x7684,0x76d2,0x76d6,0x76e1,0x76ee,0x76f8,0x771f,0x773c,0x77e5,0x7801,0x786c,0x786e,0x788c,0x789f,0x78ba,0x78bc,0x78c1,0x793a,0x79d2,0x79f0,0x79fb,0x7a0d,0x7a7a,0x7b11,0x7b49,0x7b52,0x7b7e,0x7b80,0x7b97,0x7c7b,0x7c89,0x7cfb,0x7d05,0x7d19,0x7d22,0x7d42,0x7d50,0x7d61,0x7d93,0x7d9a,0x7db2,0x7dda,0x7de0,0x7de8,0x7e2e,0x7e3d,0x7e41,0x7e7c,0x7e8c,0x7eb8,0x7ecf,0x7ed3,0x7edc,0x7ee7,0x7eed,0x7f16,0x7f29,0x7f6e,0x8017,0x8054,0x806f,0x8072,0x80cc,0x80fd,0x8138,0x81c9,0x81ea,0x81f4,0x8207,0x822c,0x8272,0x8282,0x82b1,0x82f1,0x8367,0x83dc,0x84cb,0x8655,0x865f,0x86cd,0x8861,0x8865,0x8868,0x88c1,0x88c5,0x88dc-0x88dd,0x88fd,0x8907,0x8910,0x8981,0x898b,0x898f,0x8996,0x89c1,0x89c4,0x89c6,0x89c8,0x89e3,0x8a00,0x8a08,0x8a0a,0x8a18,0x8a2d,0x8a70,0x8a8d,0x8a9e,0x8aa4,0x8abf,0x8acb,0x8b77,0x8b8a,0x8ba1,0x8ba4,0x8bb0,0x8bbe,0x8bc6,0x8bed,0x8bef,0x8bf7,0x8c03,0x8c61,0x8cc7,0x8cea,0x8d1d,0x8d28,0x8d44,0x8d77,0x8db3,0x8def,0x8ee2,0x8efd,0x8f03,0x8f09,0x8f1d,0x8f38,0x8f49,0x8f6c,0x8f7d,0x8f93,0x8fa8,0x8fd0,0x8fd4,0x8fde,0x9000-0x9001,0x9009,0x901a,0x901f,0x9023,0x904b,0x9069,0x9078,0x90e8,0x91c7,0x91cd,0x91cf,0x92b3,0x9304,0x932f,0x9332,0x9375,0x9396,0x93e1,0x9418,0x949f,0x94a8,0x9501,0x9510,0x9519,0x952e,0x955c,0x9580,0x9583,0x9589,0x958b,0x9593,0x95dc,0x95e8,0x95ea,0x95ed,0x95f4,0x9632,0x9634,0x9664,0x9670,0x9694,0x96d9,0x96f6,0x96fb,0x9707,0x9732,0x9759,0x9762,0x97f3,0x9801,0x9805,0x9810,0x982d,0x983b,0x9854,0x985e,0x9875,0x9884,0x9891,0x98a8,0x98ce,0x9971,0x9ad4,0x9ad8,0x9ed1,0x9ed8,0x9ede,0x20-0x7e -o D:/projects_code/01/LVGL_SPORTCAM/Resource/Fonts/sf_ui_text_medium_18_1bpp.c --no-compress ******************************************************************************/ #ifdef LV_LVGL_H_INCLUDE_SIMPLE diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Images/images.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Images/images.c index 4fe92433c..5bf5029c6 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Images/images.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/Resource/Images/images.c @@ -95943,6 +95943,390 @@ const lv_img_dsc_t sf_list_selected = { }; +#ifndef LV_ATTRIBUTE_MEM_ALIGN +#define LV_ATTRIBUTE_MEM_ALIGN +#endif + +#ifndef LV_ATTRIBUTE_IMG_SF_LIST_SELECTED_NEXT1 +#define LV_ATTRIBUTE_IMG_SF_LIST_SELECTED_NEXT1 +#endif + +const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_SF_LIST_SELECTED_NEXT1 uint8_t sf_list_selected_next1_map[] = { + /*Pixel format: Red: 8 bit, Green: 8 bit, Blue: 8 bit*/ +#if LV_COLOR_DEPTH == 8 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +#elif LV_COLOR_DEPTH == 16 + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, +#elif LV_COLOR_DEPTH == 24 + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, +#elif LV_COLOR_DEPTH == 32 + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, +#endif + +}; + +const lv_img_dsc_t sf_list_selected_next1 = { + .header.always_zero = 0, + .header.w = 56, + .header.h = 40, + .data_size = 2240 * LV_COLOR_SIZE / 8, +#if ((LV_COLOR_DEPTH == 32) || (LV_COLOR_DEPTH == 24)) + .header.cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED, +#else + .header.cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED, +#endif + .data = sf_list_selected_next1_map +}; + + +#ifndef LV_ATTRIBUTE_MEM_ALIGN +#define LV_ATTRIBUTE_MEM_ALIGN +#endif + +#ifndef LV_ATTRIBUTE_IMG_SF_LIST_SELECTED_NEXT2 +#define LV_ATTRIBUTE_IMG_SF_LIST_SELECTED_NEXT2 +#endif + +const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_SF_LIST_SELECTED_NEXT2 uint8_t sf_list_selected_next2_map[] = { + /*Pixel format: Red: 8 bit, Green: 8 bit, Blue: 8 bit*/ +#if LV_COLOR_DEPTH == 8 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +#elif LV_COLOR_DEPTH == 16 + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, +#elif LV_COLOR_DEPTH == 24 + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0x00,0x00,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, +#elif LV_COLOR_DEPTH == 32 + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, +#endif + +}; + +const lv_img_dsc_t sf_list_selected_next2 = { + .header.always_zero = 0, + .header.w = 56, + .header.h = 40, + .data_size = 2240 * LV_COLOR_SIZE / 8, +#if ((LV_COLOR_DEPTH == 32) || (LV_COLOR_DEPTH == 24)) + .header.cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED, +#else + .header.cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED, +#endif + .data = sf_list_selected_next2_map +}; + + #ifndef LV_ATTRIBUTE_MEM_ALIGN #define LV_ATTRIBUTE_MEM_ALIGN #endif @@ -101543,6 +101927,198 @@ const lv_img_dsc_t sf_qr = { }; +#ifndef LV_ATTRIBUTE_MEM_ALIGN +#define LV_ATTRIBUTE_MEM_ALIGN +#endif + +#ifndef LV_ATTRIBUTE_IMG_SF_QR_PAGE +#define LV_ATTRIBUTE_IMG_SF_QR_PAGE +#endif + +const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_IMG_SF_QR_PAGE uint8_t sf_qr_page_map[] = { + /*Pixel format: Red: 8 bit, Green: 8 bit, Blue: 8 bit*/ +#if LV_COLOR_DEPTH == 8 + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0xc7,0xc7,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0xc7,0xc7,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +#elif LV_COLOR_DEPTH == 16 + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0x65,0x45,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, + 0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50,0xea,0x50, +#elif LV_COLOR_DEPTH == 24 + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0x65,0x45,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, + 0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff,0xea,0x50,0xff, +#elif LV_COLOR_DEPTH == 32 + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x29,0xaf,0x42,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, + 0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff,0x57,0x1f,0x55,0xff, +#endif + +}; + +const lv_img_dsc_t sf_qr_page = { + .header.always_zero = 0, + .header.w = 48, + .header.h = 40, + .data_size = 1920 * LV_COLOR_SIZE / 8, +#if ((LV_COLOR_DEPTH == 32) || (LV_COLOR_DEPTH == 24)) + .header.cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED, +#else + .header.cf = LV_IMG_CF_TRUE_COLOR_CHROMA_KEYED, +#endif + .data = sf_qr_page_map +}; + + #ifndef LV_ATTRIBUTE_MEM_ALIGN #define LV_ATTRIBUTE_MEM_ALIGN #endif diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL.lvglp b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL.lvglp index 63d0febcf..42d91c0ae 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL.lvglp +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL.lvglp @@ -4672,6 +4672,16 @@ "filename": "icons/sf_list_Selected.bmp", "name": "sf_list_Selected" }, + { + "colorFormat": "Indexed 256 in RGB332", + "filename": "icons/sf_list_Selected_next1.bmp", + "name": "sf_list_Selected_next1" + }, + { + "colorFormat": "Indexed 256 in RGB332", + "filename": "icons/sf_list_Selected_next2.bmp", + "name": "sf_list_Selected_next2" + }, { "colorFormat": "Indexed 256 in RGB332", "filename": "icons/sf_menu_bg.bmp", @@ -4792,6 +4802,11 @@ "filename": "icons/sf_qr.bmp", "name": "sf_qr" }, + { + "colorFormat": "Indexed 256 in RGB332", + "filename": "icons/sf_qr_page.bmp", + "name": "sf_qr_page" + }, { "colorFormat": "Indexed 256 in RGB332", "filename": "icons/sf_reset.bmp", diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowLVGL.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowLVGL.c index 0b6289f9a..ae6ea325c 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowLVGL.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowLVGL.c @@ -472,6 +472,8 @@ lv_plugin_img_t lv_plugin_UIFlowLVGL_img_table[] = { &sf_image_size }, { &sf_left }, { &sf_list_selected }, + { &sf_list_selected_next1 }, + { &sf_list_selected_next2 }, { &sf_menu_bg }, { &sf_menu_option_select }, { &sf_menu_release }, @@ -496,6 +498,7 @@ lv_plugin_img_t lv_plugin_UIFlowLVGL_img_table[] = { &sf_play }, { &sf_pwd_down_up }, { &sf_qr }, + { &sf_qr_page }, { &sf_reset }, { &sf_right }, { &sf_send_type }, diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowLVGL.h b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowLVGL.h index 905572623..faa934a3e 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowLVGL.h +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowLVGL.h @@ -518,6 +518,8 @@ LV_IMG_DECLARE(sf_green_square); LV_IMG_DECLARE(sf_image_size); LV_IMG_DECLARE(sf_left); LV_IMG_DECLARE(sf_list_selected); +LV_IMG_DECLARE(sf_list_selected_next1); +LV_IMG_DECLARE(sf_list_selected_next2); LV_IMG_DECLARE(sf_menu_bg); LV_IMG_DECLARE(sf_menu_option_select); LV_IMG_DECLARE(sf_menu_release); @@ -542,6 +544,7 @@ LV_IMG_DECLARE(sf_picture_upon_daily_report); LV_IMG_DECLARE(sf_play); LV_IMG_DECLARE(sf_pwd_down_up); LV_IMG_DECLARE(sf_qr); +LV_IMG_DECLARE(sf_qr_page); LV_IMG_DECLARE(sf_reset); LV_IMG_DECLARE(sf_right); LV_IMG_DECLARE(sf_send_type); @@ -1010,65 +1013,68 @@ LV_IMG_DECLARE(work_mode); #define LV_PLUGIN_IMG_ID_SF_IMAGE_SIZE 431 #define LV_PLUGIN_IMG_ID_SF_LEFT 432 #define LV_PLUGIN_IMG_ID_SF_LIST_SELECTED 433 -#define LV_PLUGIN_IMG_ID_SF_MENU_BG 434 -#define LV_PLUGIN_IMG_ID_SF_MENU_OPTION_SELECT 435 -#define LV_PLUGIN_IMG_ID_SF_MENU_RELEASE 436 -#define LV_PLUGIN_IMG_ID_SF_MENU_SELECT 437 -#define LV_PLUGIN_IMG_ID_SF_MODE_STILL_VIDEO 438 -#define LV_PLUGIN_IMG_ID_SF_MODULE_FW_UPGRADE 439 -#define LV_PLUGIN_IMG_ID_SF_MODULE_FW_UPGRADE_DIS 440 -#define LV_PLUGIN_IMG_ID_SF_NET2G 441 -#define LV_PLUGIN_IMG_ID_SF_NET3G 442 -#define LV_PLUGIN_IMG_ID_SF_NET4G 443 -#define LV_PLUGIN_IMG_ID_SF_NEXT 444 -#define LV_PLUGIN_IMG_ID_SF_NEXT1 445 -#define LV_PLUGIN_IMG_ID_SF_NEXT2 446 -#define LV_PLUGIN_IMG_ID_SF_NEXT3 447 -#define LV_PLUGIN_IMG_ID_SF_NEXT4 448 -#define LV_PLUGIN_IMG_ID_SF_NEXT_DIS 449 -#define LV_PLUGIN_IMG_ID_SF_OFF 450 -#define LV_PLUGIN_IMG_ID_SF_ON 451 -#define LV_PLUGIN_IMG_ID_SF_OPERATING_TIME 452 -#define LV_PLUGIN_IMG_ID_SF_PASSWORD 453 -#define LV_PLUGIN_IMG_ID_SF_PICTURE_UPON_DAILY_REPORT 454 -#define LV_PLUGIN_IMG_ID_SF_PLAY 455 -#define LV_PLUGIN_IMG_ID_SF_PWD_DOWN_UP 456 -#define LV_PLUGIN_IMG_ID_SF_QR 457 -#define LV_PLUGIN_IMG_ID_SF_RESET 458 -#define LV_PLUGIN_IMG_ID_SF_RIGHT 459 -#define LV_PLUGIN_IMG_ID_SF_SEND_TYPE 460 -#define LV_PLUGIN_IMG_ID_SF_SEND_TYPE_DIS 461 -#define LV_PLUGIN_IMG_ID_SF_SENSITVITY 462 -#define LV_PLUGIN_IMG_ID_SF_SHOOT_1 463 -#define LV_PLUGIN_IMG_ID_SF_SIGNAL0 464 -#define LV_PLUGIN_IMG_ID_SF_SIGNAL1 465 -#define LV_PLUGIN_IMG_ID_SF_SIGNAL2 466 -#define LV_PLUGIN_IMG_ID_SF_SIGNAL3 467 -#define LV_PLUGIN_IMG_ID_SF_SIGNAL4 468 -#define LV_PLUGIN_IMG_ID_SF_SMS_CTRL 469 -#define LV_PLUGIN_IMG_ID_SF_STOP 470 -#define LV_PLUGIN_IMG_ID_SF_TAB_RELEASE 471 -#define LV_PLUGIN_IMG_ID_SF_TAB_SELECT 472 -#define LV_PLUGIN_IMG_ID_SF_VIDEO_LENGTH 473 -#define LV_PLUGIN_IMG_ID_SF_VIDEO_SIZE 474 -#define LV_PLUGIN_IMG_ID_SF_WARNING_BG 475 -#define LV_PLUGIN_IMG_ID_SF_WARNING_NOT_SELECT 476 -#define LV_PLUGIN_IMG_ID_SF_WARNING_SELECTED 477 -#define LV_PLUGIN_IMG_ID_SF_WIFI_CONNECTED 478 -#define LV_PLUGIN_IMG_ID_SF_WIFI_UNCONNECTED 479 -#define LV_PLUGIN_IMG_ID_SF_WIFI_UNSUPPORT 480 -#define LV_PLUGIN_IMG_ID_SY_BG_102X28 481 -#define LV_PLUGIN_IMG_ID_SY_BG_32X28 482 -#define LV_PLUGIN_IMG_ID_SY_BG_40X28 483 -#define LV_PLUGIN_IMG_ID_SY_BG_MSG 484 -#define LV_PLUGIN_IMG_ID_SY_BG_MSG2 485 -#define LV_PLUGIN_IMG_ID_SY_LANYA2 486 -#define LV_PLUGIN_IMG_ID_SY_LUZHI 487 -#define LV_PLUGIN_IMG_ID_SY_REDLINE 488 -#define LV_PLUGIN_IMG_ID_SY_REDLINE2 489 -#define LV_PLUGIN_IMG_ID_SY_WIFI2 490 -#define LV_PLUGIN_IMG_ID_WORK_MODE 491 -#define LV_PLUGIN_IMG_TABLE_SIZE 492 +#define LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT1 434 +#define LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2 435 +#define LV_PLUGIN_IMG_ID_SF_MENU_BG 436 +#define LV_PLUGIN_IMG_ID_SF_MENU_OPTION_SELECT 437 +#define LV_PLUGIN_IMG_ID_SF_MENU_RELEASE 438 +#define LV_PLUGIN_IMG_ID_SF_MENU_SELECT 439 +#define LV_PLUGIN_IMG_ID_SF_MODE_STILL_VIDEO 440 +#define LV_PLUGIN_IMG_ID_SF_MODULE_FW_UPGRADE 441 +#define LV_PLUGIN_IMG_ID_SF_MODULE_FW_UPGRADE_DIS 442 +#define LV_PLUGIN_IMG_ID_SF_NET2G 443 +#define LV_PLUGIN_IMG_ID_SF_NET3G 444 +#define LV_PLUGIN_IMG_ID_SF_NET4G 445 +#define LV_PLUGIN_IMG_ID_SF_NEXT 446 +#define LV_PLUGIN_IMG_ID_SF_NEXT1 447 +#define LV_PLUGIN_IMG_ID_SF_NEXT2 448 +#define LV_PLUGIN_IMG_ID_SF_NEXT3 449 +#define LV_PLUGIN_IMG_ID_SF_NEXT4 450 +#define LV_PLUGIN_IMG_ID_SF_NEXT_DIS 451 +#define LV_PLUGIN_IMG_ID_SF_OFF 452 +#define LV_PLUGIN_IMG_ID_SF_ON 453 +#define LV_PLUGIN_IMG_ID_SF_OPERATING_TIME 454 +#define LV_PLUGIN_IMG_ID_SF_PASSWORD 455 +#define LV_PLUGIN_IMG_ID_SF_PICTURE_UPON_DAILY_REPORT 456 +#define LV_PLUGIN_IMG_ID_SF_PLAY 457 +#define LV_PLUGIN_IMG_ID_SF_PWD_DOWN_UP 458 +#define LV_PLUGIN_IMG_ID_SF_QR 459 +#define LV_PLUGIN_IMG_ID_SF_QR_PAGE 460 +#define LV_PLUGIN_IMG_ID_SF_RESET 461 +#define LV_PLUGIN_IMG_ID_SF_RIGHT 462 +#define LV_PLUGIN_IMG_ID_SF_SEND_TYPE 463 +#define LV_PLUGIN_IMG_ID_SF_SEND_TYPE_DIS 464 +#define LV_PLUGIN_IMG_ID_SF_SENSITVITY 465 +#define LV_PLUGIN_IMG_ID_SF_SHOOT_1 466 +#define LV_PLUGIN_IMG_ID_SF_SIGNAL0 467 +#define LV_PLUGIN_IMG_ID_SF_SIGNAL1 468 +#define LV_PLUGIN_IMG_ID_SF_SIGNAL2 469 +#define LV_PLUGIN_IMG_ID_SF_SIGNAL3 470 +#define LV_PLUGIN_IMG_ID_SF_SIGNAL4 471 +#define LV_PLUGIN_IMG_ID_SF_SMS_CTRL 472 +#define LV_PLUGIN_IMG_ID_SF_STOP 473 +#define LV_PLUGIN_IMG_ID_SF_TAB_RELEASE 474 +#define LV_PLUGIN_IMG_ID_SF_TAB_SELECT 475 +#define LV_PLUGIN_IMG_ID_SF_VIDEO_LENGTH 476 +#define LV_PLUGIN_IMG_ID_SF_VIDEO_SIZE 477 +#define LV_PLUGIN_IMG_ID_SF_WARNING_BG 478 +#define LV_PLUGIN_IMG_ID_SF_WARNING_NOT_SELECT 479 +#define LV_PLUGIN_IMG_ID_SF_WARNING_SELECTED 480 +#define LV_PLUGIN_IMG_ID_SF_WIFI_CONNECTED 481 +#define LV_PLUGIN_IMG_ID_SF_WIFI_UNCONNECTED 482 +#define LV_PLUGIN_IMG_ID_SF_WIFI_UNSUPPORT 483 +#define LV_PLUGIN_IMG_ID_SY_BG_102X28 484 +#define LV_PLUGIN_IMG_ID_SY_BG_32X28 485 +#define LV_PLUGIN_IMG_ID_SY_BG_40X28 486 +#define LV_PLUGIN_IMG_ID_SY_BG_MSG 487 +#define LV_PLUGIN_IMG_ID_SY_BG_MSG2 488 +#define LV_PLUGIN_IMG_ID_SY_LANYA2 489 +#define LV_PLUGIN_IMG_ID_SY_LUZHI 490 +#define LV_PLUGIN_IMG_ID_SY_REDLINE 491 +#define LV_PLUGIN_IMG_ID_SY_REDLINE2 492 +#define LV_PLUGIN_IMG_ID_SY_WIFI2 493 +#define LV_PLUGIN_IMG_ID_WORK_MODE 494 +#define LV_PLUGIN_IMG_TABLE_SIZE 495 #define LV_PLUGIN_FONT_ID_LV_FONT_MONTSERRAT_16 1 #define LV_PLUGIN_FONT_ID_NOTOSANSCJKSC_BLACK_16_1BPP 2 diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c index 1514b1983..1c8d09f13 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.c @@ -367,7 +367,7 @@ static void update_Network_Selection_msg(lv_obj_t* obj) static void network_scan_task_end(void) { - if(network_scan_task) + if(NULL != network_scan_task) { lv_task_del(network_scan_task); network_scan_task = NULL; @@ -380,9 +380,9 @@ static void network_scan_task_cb(lv_task_t* task) int fd = -1; int BuffLen; unsigned char Buff[1024] = { 0 }; - + lv_obj_t* obj = (lv_obj_t*)task->user_data; - + printf("[%s]Check simcard...\n", __FUNCTION__); if(Countdown) { printf("[%s]Countdown:%d\n", __FUNCTION__, Countdown); @@ -399,7 +399,6 @@ static void network_scan_task_cb(lv_task_t* task) return; } } - if(sf_cardv_4G_status_get() == SF_4G_SEARCHING) { printf("[%s]Searching...\n", __FUNCTION__); @@ -551,15 +550,17 @@ void show_Network_Selection_page(lv_obj_t* obj, lv_obj_t* menu_obj) plabel = lv_label_create(obj, NULL); lv_label_set_long_mode(plabel, LV_LABEL_LONG_BREAK); - // lv_label_set_align(plabel, LV_LABEL_ALIGN_CENTER); + //lv_label_set_align(plabel, LV_LABEL_ALIGN_CENTER); lv_label_set_text(plabel, ""); - lv_obj_set_pos(plabel, 32, 55); + lv_obj_set_pos(plabel, 32, 67); lv_obj_set_width(plabel, 256); lv_obj_add_style(plabel, 0, &gMatrixStylebtn); - + lv_task_t tas = {0,0,NULL,NULL,0,3}; + Countdown = 0; + network_scan_task_cb(&tas); if(network_scan_task == NULL){ Countdown = 0; - network_scan_task = lv_task_create(network_scan_task_cb, 1000, LV_TASK_PRIO_MID, (void*)obj); + network_scan_task = lv_task_create(network_scan_task_cb, 1000, LV_TASK_PRIO_HIGHEST, (void*)obj); } } @@ -570,7 +571,7 @@ void hidde_Network_Selection_page(void) pMenu = NULL; - if(plabel) + if(NULL != plabel) { lv_obj_del(plabel); plabel = NULL; @@ -646,60 +647,170 @@ void Option_Network_Selection_Key(lv_obj_t* obj, uint32_t key) char *qr_code_str = "{\"imei\":\"%s\",\"verizonICCID\":\"%s\",\"attICCID\":\"%s\",\"isEsim\":%s}"; static lv_obj_t *qr = NULL; static lv_obj_t *label = NULL; -void show_qr_picture_page(lv_obj_t* obj) -{ - // lv_color_t colorDrak = {0}; - // lv_color_t colorLight = {0}; - UIMenuStoreInfo *puiPara = sf_ui_para_get(); - // const char *data = "https://github.com/topics/littlevgl"; -#define QR_DATA_LENGTH 1024 +static lv_obj_t *labelInit = NULL; +static lv_obj_t* QRImage = NULL; +static lv_obj_t *qr_info_msgbox = NULL; +static lv_task_t* qr_page_task = NULL; + +static void qr_page_task_cb(lv_task_t* task){ + lv_obj_t* obj = (lv_obj_t*)task->user_data; + UIMenuStoreInfo *puiPara = sf_ui_para_get(); + + #define QR_DATA_LENGTH 1024 char qr_date[QR_DATA_LENGTH] = {0}; - if (sf_cardv_get_is_esim() == 1) + if(sf_cardv_get_sim_insert() == 0){ + lv_label_set_text(labelInit, "Please insert the SIM card and restart the camera"); + } + else if(sf_cardv_4G_status_get() == SF_4G_SEARCHING) + { + lv_label_set_text(labelInit, "\nQR code loading..."); + } + else if (sf_cardv_get_is_esim() == 1) { snprintf(qr_date, QR_DATA_LENGTH, qr_code_str, puiPara->ModuleImei, puiPara->SimIccidV, puiPara->SimIccidA, "true"); + if(obj){ + /*Create a 100x100 QR code*/ + qr = lv_qrcode_create(obj, 120, (lv_color_t) { .full = 0x02}, (lv_color_t) { .full = 0x23}); + if(qr) + { + /*Set data*/ + lv_obj_set_hidden(qr_info_msgbox, true); + lv_qrcode_update(qr, qr_date, strlen(qr_date)); + lv_obj_set_pos(qr, 32, 70); + lv_obj_set_hidden(QRImage, false); + lv_obj_set_pos(label, 180, 80); + lv_obj_set_size(label, 130, 70); + lv_label_set_text(labelInit, ""); + lv_label_set_text(label, "Add Camera to Tactacam APP"); + } + } } - // else if (sf_cardv_get_is_esim() == 0) - // { - // snprintf(qr_date, QR_DATA_LENGTH, qr_code_str, puiPara->ModuleImei, puiPara->SimIccidA, puiPara->SimIccidA, "false"); - // } - else + else if (sf_cardv_get_is_esim() == 0) { snprintf(qr_date, QR_DATA_LENGTH, qr_code_str, puiPara->ModuleImei, puiPara->SimIccidA, puiPara->SimIccidA, "false"); + lv_label_set_text(labelInit, "\nPlease restart the camera"); } - - if(obj){ - - /*Create a 100x100 QR code*/ - qr = lv_qrcode_create(obj, 120, (lv_color_t) { .full = 0x02}, (lv_color_t) { .full = 0x23}); - - if(qr){ - /*Set data*/ - lv_qrcode_update(qr, qr_date, strlen(qr_date)); - lv_obj_set_pos(qr, 32, 70); - } - } - lv_color_t color = {0}; - static lv_style_t labelStyle; - lv_style_init(&labelStyle); - STYLE_COLOR_PROP(0xff, 0xff, 0xff, 0xff) ; lv_style_set_text_color(&labelStyle, LV_STATE_DEFAULT, color); - lv_style_set_text_font(&labelStyle,LV_STATE_DEFAULT,&sf_ui_text_medium_16_1bpp); - label = lv_label_create(obj, NULL); - lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); - lv_label_set_text(label, "Add Camera to Tactacam App"); - lv_obj_set_pos(label, 180, 78); - lv_obj_set_size(label, 110, 63); - lv_obj_add_style(label, 0, &labelStyle); } + +static void qr_page_task_end(void) +{ + if(NULL != qr_page_task) + { + lv_task_del(qr_page_task); + qr_page_task = NULL; + } +} + +void show_qr_picture_page(lv_obj_t* obj) +{ + init_Matrix_style(); + // lv_color_t colorDrak = {0}; + // lv_color_t colorLight = {0}; + + // const char *data = "https://github.com/topics/littlevgl"; + + //text qr page + label = lv_label_create(obj, NULL); + lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); + lv_label_set_text(label, ""); + lv_obj_set_pos(label, 180, 70); + lv_obj_set_size(label, 130, 60); + + static lv_style_t labelStyle; + lv_style_init(&labelStyle); + lv_color_t color = {0}; + STYLE_COLOR_PROP(0xff, 0xff, 0xff, 0xff); + lv_style_set_text_color(&labelStyle, LV_STATE_DEFAULT, color); + lv_style_set_text_font(&labelStyle,LV_STATE_DEFAULT,&sf_ui_text_medium_16_1bpp); + lv_obj_add_style(label, 0, &labelStyle); + + //text qr msgbox + qr_info_msgbox = lv_btn_create(obj, button_msg_bg_scr_uiflowwrnmsg); + lv_obj_set_hidden(qr_info_msgbox, false); + labelInit = lv_label_create(qr_info_msgbox, label_msg_scr_uiflowwrnmsg); + lv_obj_align(labelInit, qr_info_msgbox, LV_ALIGN_CENTER, 0, -30); + lv_label_set_align(labelInit, LV_LABEL_ALIGN_CENTER); + lv_obj_add_style(labelInit, 0, &gMatrixStylebtn); + if(sf_cardv_get_sim_insert() == 0){ + lv_label_set_text(labelInit, "Please insert the SIM card and restart the camera"); + } + else{ + lv_label_set_text(labelInit, "\nQR code loading..."); + } + + + //icon + QRImage = lv_img_create(obj, NULL); + lv_obj_set_hidden(QRImage, true); + lv_obj_set_click(QRImage, false); + lv_obj_set_drag(QRImage, false); + lv_obj_set_pos(QRImage, 207, 122); + lv_obj_set_size(QRImage, 32, 32); + lv_img_set_src(QRImage, &sf_qr_page); + + if(qr_page_task == NULL){ + qr_page_task = lv_task_create(qr_page_task_cb, 1000, LV_TASK_PRIO_HIGHEST, (void*)obj); + } +} + + void hidde_qr_picture_page(void) { + qr_page_task_end(); + + printf("[hidde_qr_picture_page]hidde qr page\n"); if(NULL != qr) { lv_qrcode_delete(qr); + qr = NULL; } - if(label) + if(NULL != label) { lv_obj_del(label); + label = NULL; } + if(NULL != labelInit) + { + lv_obj_del(labelInit); + labelInit = NULL; + } + if(NULL != QRImage) + { + lv_obj_del(QRImage); + QRImage = NULL; + } + if(NULL != qr_info_msgbox){ + lv_obj_del(qr_info_msgbox); + qr_info_msgbox = NULL; + } +} + +void Option_qr_picture_Key(lv_obj_t* obj, uint32_t key) +{ + printf("[%s]key:%d\n", __FUNCTION__, key); + + switch(key) + { + case LV_USER_KEY_NEXT: + + break; + case LV_USER_KEY_PREV: + + break; + case LV_USER_KEY_LEFT: + lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); + hidde_qr_picture_page(); + break; + case LV_USER_KEY_RIGHT: + + break; + case LV_KEY_ENTER: + lv_plugin_scr_close(obj, gen_nvtmsg_data(NVTRET_ENTER_MENU, 0)); + hidde_qr_picture_page(); + break; + default: + break; + } } // -------------------------------------------------------------------------- diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.h b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.h index af8aa5c88..d2fcdd04d 100644 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.h +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/MenuQR.h @@ -16,6 +16,7 @@ extern void show_Camera_Name_page(lv_obj_t* obj); extern void hidde_Camera_Name_page(void); extern void Option_Network_Selection_Key(lv_obj_t* obj, uint32_t key); +extern void Option_qr_picture_Key(lv_obj_t* obj, uint32_t key); extern void Option_Password_Key(lv_obj_t* obj, uint32_t key); extern void Option_Password_Key_Long_Press(lv_obj_t* obj, uint32_t key); extern void Option_CAMERA_INFO_Key(lv_obj_t* obj, uint32_t key); diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c index ff42b8a7d..c389da993 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonItem/UIFlowMenuCommonItemEventCallback.c @@ -961,28 +961,33 @@ static void UIFlowMenuCommonItem_Key(lv_obj_t* obj, uint32_t key) printf("[UIFlowMenuCommonItem_Key]key: %d\n",key); + switch(key) { case LV_USER_KEY_UP: + case LV_USER_KEY_DOWN: { - printf("[UIFlowMenuCommonItem_Key]error input\n",key); + //printf("[UIFlowMenuCommonItem_Key]error input\n",key); } case LV_USER_KEY_NEXT: { + //printf("[UIFlowMenuCommonItem_Key]>>>DOWN\n"); LV_MenuItem_OnNext(obj); break; } case LV_USER_KEY_PREV: { + //printf("[UIFlowMenuCommonItem_Key]>>>UP\n"); LV_MenuItem_OnPrev(obj); break; } case LV_KEY_LEFT: { + //printf("[UIFlowMenuCommonItem_Key]>>>LEFT\n"); load_info_from_sf(); LV_MenuItem_OnUp(obj); break; @@ -990,6 +995,7 @@ static void UIFlowMenuCommonItem_Key(lv_obj_t* obj, uint32_t key) case LV_KEY_RIGHT: { + //printf("[UIFlowMenuCommonItem_Key]>>>RIGHT\n"); load_info_from_sf(); LV_MenuItem_OnDown(obj); break; diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c index 874fb5998..99aa8d881 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMenuCommonOption/UIFlowMenuCommonOptionEventCallback.c @@ -26,7 +26,7 @@ static int isSetting = 0; //static TM_MENU *g_pOptionMenu = 0; UINT16 PrevOption = 0; -UINT16 s_SelOption = 0; +UINT16 s_SelOption = 100; UINT16 OptionEN_Num = 0; UINT16 enableIndex[30] = {}; @@ -216,6 +216,7 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) UINT32 i; // UINT16 startIndex = 0; UINT16 itemIndex = 0; + UINT16 itemIconId = 0; #if 1 UINT16 SelOption = 0; UINT32 Selindex = 0; @@ -354,32 +355,290 @@ static void LV_MenuCommonOption_UpdateContent(TM_MENU *pMenu) lv_plugin_menu_set_item_hidden(menu_option, i, true); ui_hidden = true; }else{ + itemIconId = pOption->IconId; + ui_hidden = true; printf("\033[33m[LV_MenuCommonOption_UpdateContent] 3 \033[0m\n"); lv_plugin_menu_set_item_string_id(menu_option, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, pOption->TextId); - lv_plugin_menu_set_item_img_id(menu_option, i, LV_PLUGIN_MENU_ITEM_STATE_DISABLED, pOption->IconId); - lv_plugin_menu_set_item_hidden(menu_option, i, false); - ui_hidden = true; - if(enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ - printf("\033[33m[LV_MenuCommonOption_UpdateContent] 4 %d %d \033[0m\n", i, Selindex); - s_SelOption = i + (Selindex * OPTION_PAGE_NUM); - lv_plugin_menu_select_item(menu_option, i); - ui_hidden = false; - } - } + + printf("s_SelOption: %d\n", s_SelOption); + //first init page add select icon + if (s_SelOption == 100){ + if (enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption) + { + s_SelOption = i + (Selindex * OPTION_PAGE_NUM); + switch (pItem->ItemId) { + case IDM_DELAY:{} + case IDM_OPERATING_TIME:{} + case IDM_DATE_AND_TIME:{} + case IDM_MAX_NUM_DAY:{} + case IDM_PASSWORD:{} + case IDM_CAMERA_NAME: + { + if (i == 1) + { + printf("first init black > √\n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √ + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0); + } + else{ + printf("first init √\n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√ + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 272, 0); + } + break; + } + case IDM_SEND_TYPE:{ + if(i == 1) + { + printf("first init IDM_SEND_TYPE black > √\n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √ + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0); + } + else if (i == 2) + { + printf("first init IDM_SEND_TYPE black > √\n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √ + lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 259, 0); + } + else if (i == 3) + { + printf("first init IDM_SEND_TYPE black > √\n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √ + lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 259, 0); + } + break; + } + default: + { + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√ + if(i == 1) + { + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 272, 0); + } + else if (i == 2) + { + lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 272, 0); + } + else if (i == 3) + { + lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 272, 0); + } + + + } + } + ui_hidden = false; + } + else if (enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption && i == 1) + { + printf("first init white >\n"); + switch (pItem->ItemId) { + case IDM_DELAY:{} + case IDM_OPERATING_TIME:{} + case IDM_DATE_AND_TIME:{} + case IDM_MAX_NUM_DAY:{} + case IDM_PASSWORD:{} + case IDM_SEND_TYPE:{} + case IDM_CAMERA_NAME: + { + itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white > + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0); + ui_hidden = false; + break; + } + } - DBG_DUMP("%s ui_hidden=%d\r\n", __func__,ui_hidden); - if(i==0){ + } + else if(enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption && i > 1) + { + if(pItem->ItemId == IDM_SEND_TYPE) + { + printf("first init IDM_SEND_TYPE white >\n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white > + if (i == 2) + { + lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 288, 0); + } + else if (i == 3) + { + lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 288, 0); + } + ui_hidden = false; + } + } + } + else{ + if (pItem->ItemId == IDM_SEND_TYPE){ + if (i == s_SelOption) + { + switch(i) + { + case 1: + { + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0); + break; + } + case 2: + { + lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 259, 0); + break; + } + case 3: + { + lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 259, 0); + break; + } + default: + { + break; + } + } + + if (i >= 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption) + { + printf("[LV_MenuCommonOption_UpdateContent]IDM_SEND_TYPE add black √ > \n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √ + } + else if (i >= 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption) + { + printf("[LV_MenuCommonOption_UpdateContent]IDM_SEND_TYPE add white √ > \n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT1;//white > √ + } + ui_hidden = false; + } + else{ + switch(i) + { + case 1: + { + printf("[LV_MenuCommonOption_UpdateContent]set 1 option \n"); + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0); + break; + } + case 2: + { + printf("[LV_MenuCommonOption_UpdateContent]set 2 option \n"); + lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 288, 0); + break; + } + case 3: + { + printf("[LV_MenuCommonOption_UpdateContent]set 3 option \n"); + lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 288, 0); + break; + } + default: + { + break; + } + } + if (i >= 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption) + { + printf("[LV_MenuCommonOption_UpdateContent]IDM_SEND_TYPE add black > \n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT2;//black > + ui_hidden = false; + } + else if (i >= 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption) + { + printf("[LV_MenuCommonOption_UpdateContent]IDM_SEND_TYPE add white > \n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white > + ui_hidden = false; + } + } + } + else if (i == 1) + { + //printf("[LV_MenuCommonOption_UpdateContent] add > icon\n"); + switch (pItem->ItemId) { + case IDM_DELAY:{} + case IDM_OPERATING_TIME:{} + case IDM_DATE_AND_TIME:{} + case IDM_MAX_NUM_DAY:{} + case IDM_PASSWORD:{} + case IDM_CAMERA_NAME: + { + if (s_SelOption == 0 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ + printf("[LV_MenuCommonOption_UpdateContent] add black > \n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT2;//black > + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0); + } + else if (s_SelOption == 0 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] != SelOption){ + printf("[LV_MenuCommonOption_UpdateContent] add white > \n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_NEXT1;//white > + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 288, 0); + } + else if (s_SelOption == 1 && enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ + printf("[LV_MenuCommonOption_UpdateContent] add black √ > \n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT2;//black > √ + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0); + } + else{ + printf("[LV_MenuCommonOption_UpdateContent] add white √ > \n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED_NEXT1;//white > √ + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 259, 0); + } + ui_hidden = false; + break; + } + default: + { + printf("[LV_MenuCommonOption_UpdateContent] add √ \n"); + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√ + lv_obj_set_pos(image_option2_scr_uiflowmenucommonoption, 272, 0); + if (s_SelOption == 1) + { + ui_hidden = false; + } + break; + } + } + + } + else if (i == s_SelOption){ + itemIconId = LV_PLUGIN_IMG_ID_SF_LIST_SELECTED;//√ + if (i == 2) + { + lv_obj_set_pos(image_option3_scr_uiflowmenucommonoption, 272, 0); + } + else if (i == 3) + { + lv_obj_set_pos(image_option4_scr_uiflowmenucommonoption, 272, 0); + } + ui_hidden = false; + } + } + + + lv_plugin_menu_set_item_img_id(menu_option, i, LV_PLUGIN_MENU_ITEM_VISIBLE_STATE_NUM, itemIconId); + lv_plugin_menu_set_item_hidden(menu_option, i, false); + + if (enableIndex[i+(Selindex * OPTION_PAGE_NUM)] == SelOption){ + lv_plugin_menu_select_item(menu_option, i); + } + + } + + DBG_DUMP("%s ui_hidden %d=%d\r\n", __func__,i,ui_hidden); + if (i==0) + { lv_obj_set_hidden(image_option1_scr_uiflowmenucommonoption, ui_hidden); - }else if(i == 1){ + } + else if (i == 1) + { lv_obj_set_hidden(image_option2_scr_uiflowmenucommonoption, ui_hidden); - }else if(i == 2){ + } + else if (i == 2) + { lv_obj_set_hidden(image_option3_scr_uiflowmenucommonoption, ui_hidden); - }else if(i == 3){ + } + else if (i == 3) + { lv_obj_set_hidden(image_option4_scr_uiflowmenucommonoption, ui_hidden); - }else if(i == 4){ + } + else if (i == 4) + { lv_obj_set_hidden(image_option5_scr_uiflowmenucommonoption, ui_hidden); } - } #else itemIndex = PAGE * (1 + (SelOption / PAGE)); @@ -481,6 +740,7 @@ static void LV_MenuOption_OnNext(lv_obj_t* obj) // DBG_DUMP("%s SelItem=%d\r\n", __func__,pPage->SelItem); // DBG_DUMP("%s Count=%d\r\n", __func__,pItem->Count); // DBG_DUMP("%s SelOption=%d\r\n", __func__,SelOption); + SelOption++; if (SelOption >= pItem->Count){ // Close current UI Window now @@ -488,10 +748,12 @@ static void LV_MenuOption_OnNext(lv_obj_t* obj) //lv_plugin_scr_close(obj, NULL); SelOption = 0; SysSetFlag(pItem->SysFlag, SelOption); - lv_plugin_menu_select_item(menu_option, SelOption); + LV_MenuCommonOption_UpdateContent(pMenu); +// lv_plugin_menu_select_item(menu_option, SelOption); }else{ SysSetFlag(pItem->SysFlag, SelOption); - lv_plugin_menu_select_next_item(menu_option); + LV_MenuCommonOption_UpdateContent(pMenu); +// lv_plugin_menu_select_next_item(menu_option); } // DBG_DUMP("%s flag=%d\r\n", __func__,SysGetFlag(pItem->SysFlag)); } @@ -506,18 +768,20 @@ static void LV_MenuOption_OnPrev(lv_obj_t* obj) pPage = &pMenu->pPages[pMenu->SelPage]; pItem = &pPage->pItems[pPage->SelItem]; SelOption = SysGetFlag(pItem->SysFlag); + if (SelOption == 0) { // Close current UI Window now //SysSetFlag(pItem->SysFlag, PrevOption); //lv_plugin_scr_close(obj, NULL); SelOption = (pItem->Count - 1); SysSetFlag(pItem->SysFlag, SelOption); - lv_plugin_menu_select_item(menu_option, SelOption); + LV_MenuCommonOption_UpdateContent(pMenu); +// lv_plugin_menu_select_item(menu_option, SelOption); } else { SelOption--; SysSetFlag(pItem->SysFlag, SelOption); -// LV_MenuCommonOption_UpdateContent(pMenu); - lv_plugin_menu_select_prev_item(menu_option); + LV_MenuCommonOption_UpdateContent(pMenu); +// lv_plugin_menu_select_prev_item(menu_option); } // DBG_DUMP("%s flag=%d\r\n", __func__,SysGetFlag(pItem->SysFlag)); @@ -633,8 +897,8 @@ static void LV_MenuOption_OnSelected(lv_obj_t* obj) show_MaxNum_page(obj); break; case IDM_SEND_TYPE: - show_send_time_page(obj, SelOption); - break; + show_send_time_page(obj, SelOption); + break; default: break; } @@ -796,7 +1060,7 @@ static void CommondOptionCloseSencondPage(lv_obj_t* obj, uint32_t* key) pPage = &pMenu->pPages[pMenu->SelPage]; pItem = &pPage->pItems[pPage->SelItem]; UINT16 itemID = pItem->ItemId; - printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); + printf("\033[33m[CommondOptionCloseSencondPage]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); /* handle key event */ switch(itemID) { @@ -917,15 +1181,49 @@ static void CommondOptionKeyCallback(lv_obj_t* obj, uint32_t* key) pPage = &pMenu->pPages[pMenu->SelPage]; pItem = &pPage->pItems[pPage->SelItem]; UINT16 itemID = pItem->ItemId; - printf("\033[33m[UIFlowMenuCommonOptionEventCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); + printf("\033[33m[CommondOptionKeyCallback]LV_USER_EVENT_KEY_RELEASE key:%d\033[0m\n", *key); /* handle key event */ + switch(*key) + { + case LV_USER_KEY_NEXT: + case LV_USER_KEY_DOWN: + { + //printf("[CommondOptionKeyCallback]>>>DOWN\n"); + break; + } + + case LV_USER_KEY_PREV: + case LV_USER_KEY_UP: + { + //printf("[CommondOptionKeyCallback]>>>UP\n"); + break; + } + + case LV_KEY_LEFT: + { + //printf("[CommondOptionKeyCallback]>>>LEFT\n"); + break; + } + + case LV_KEY_RIGHT: + { + //printf("[CommondOptionKeyCallback]>>>RIGHT\n"); + break; + } + case LV_KEY_ENTER: + { + //printf("[CommondOptionKeyCallback]>>>ENTER\n"); + break; + } + } + switch(itemID) { case IDM_NETWORK_SELECTION: Option_Network_Selection_Key(obj, *key); break; case IDM_QR_PICTURE: - UIFlowMenuCommonOption_Key(obj, *key); + Option_qr_picture_Key(obj, *key); break; case IDM_PASSWORD: if(isSetting) @@ -1054,6 +1352,7 @@ void UIFlowMenuCommonOptionEventCallback(lv_obj_t* obj, lv_event_t event) uint32_t key = LV_KEY_ENTER; CommondOptionCloseSencondPage(obj, &key); isSetting = 0; + s_SelOption = 100; UIFlowMenuCommonOption_ScrClose(obj); break; } diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c index 732b2e4ae..71338921e 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowMovie/UIFlowMovieEventCallback.c @@ -707,9 +707,9 @@ static void UIFlowMovie_ScrOpen(lv_obj_t* obj) { DBG_DUMP("%s\r\n", __func__); - #if HUNTING_CAMERA_MCU == ENABLE - UIMenuStoreInfo *puiPara = sf_ui_para_get(); - #endif + // #if HUNTING_CAMERA_MCU == ENABLE + // UIMenuStoreInfo *puiPara = sf_ui_para_get(); + // #endif set_indev_keypad_group(obj); @@ -765,7 +765,7 @@ static void UIFlowMovie_ScrOpen(lv_obj_t* obj) } //#NT#2018/08/10#KCHong -end #if HUNTING_CAMERA_MCU == ENABLE - if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO || puiPara->CamMode == SF_CAM_MODE_VIDEO2) + if(sf_get_cammode_statu() == SF_CAM_MODE_PHOTO_VIDEO || sf_get_cammode_statu() == SF_CAM_MODE_VIDEO2) #else if(SysGetFlag(CamMode) == SF_CAM_MODE_PHOTO_VIDEO) #endif @@ -1391,9 +1391,9 @@ void UIFlowMovie_KeyRelease(lv_obj_t* obj, uint32_t key) static void UIFlowMovie_NVTMSG(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* msg) { -#if HUNTING_CAMERA_MCU == ENABLE - UIMenuStoreInfo *puiPara = sf_ui_para_get(); -#endif +// #if HUNTING_CAMERA_MCU == ENABLE +// UIMenuStoreInfo *puiPara = sf_ui_para_get(); +// #endif switch(msg->event) { @@ -1414,7 +1414,7 @@ static void UIFlowMovie_NVTMSG(lv_obj_t* obj, const LV_USER_EVENT_NVTMSG_DATA* m UIFlowMovie_REC_FINISH(obj,msg); #if HUNTING_CAMERA_MCU == ENABLE - if(puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO || puiPara->CamMode == SF_CAM_MODE_VIDEO2){ + if(sf_get_cammode_statu() == SF_CAM_MODE_PHOTO_VIDEO || sf_get_cammode_statu() == SF_CAM_MODE_VIDEO2){ sf_set_phone_shot_status(PHONE_SHOT_STOP); if(sf_get_mode_flag()) { diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPassword/UIFlowPasswordEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPassword/UIFlowPasswordEventCallback.c index ae788d685..83c1617fd 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPassword/UIFlowPasswordEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPassword/UIFlowPasswordEventCallback.c @@ -367,21 +367,25 @@ printf(" UIFlowPasswordEventCallback %d\n", event); { case LV_PLUGIN_EVENT_SCR_OPEN: - UIFlowPassword_ScrOpen(obj); + { + UIFlowPassword_ScrOpen(obj); break; - + } case LV_PLUGIN_EVENT_SCR_CLOSE: - UIFlowPassword_ScrClose(obj); + { + UIFlowPassword_ScrClose(obj); break; - + } case LV_PLUGIN_EVENT_CHILD_SCR_CLOSE: + { set_indev_keypad_group(obj); break; - + } /* enter key state changed(pressed -> released) */ case LV_EVENT_CLICKED: + { break; - + } // case LV_EVENT_KEY: case LV_USER_EVENT_KEY_RELEASE: { @@ -410,13 +414,20 @@ printf(" UIFlowPasswordEventCallback %d\n", event); } case LV_EVENT_DRAG_BEGIN: + { break; + } + case LV_EVENT_DRAG_END: + { break; + } case LV_EVENT_DRAG_THROW_BEGIN: + { break; + } default: break; diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c index eb3c68ce3..f72e1e722 100755 --- a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c +++ b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/UIFlowLVGL/UIFlowPhoto/UIFlowPhotoEventCallback.c @@ -565,7 +565,7 @@ static void update_4g_module_icon(void) { lv_obj_set_hidden(label_tips_scr_uiflowphoto, true); // Update the icon. - printf("old signal = %d new signal = %d signal_level = %d\n", signal, signal_new, signal_level); + printf("old signal = %d new signal = %d signal_level = %d generation = %d\n", signal, signal_new, signal_level, sf_get_net_generation()); lv_obj_set_hidden(label_sim_scr_uiflowphoto, true); signal_icon_hidden(searching_index); signal_icon_hidden(signal); @@ -1884,6 +1884,7 @@ static void UIFlowPhoto_Key(lv_obj_t* obj, uint32_t key) { case LV_USER_KEY_LEFT: { + //printf("[UIFlowPhoto_Key]>>>LEFT\n"); if (KeyLeftPressingTimeMs < LONG_PRESS_INTERVAL) { UIFlowMenuCommonConfirmAPI_Open(IDM_ENTER_WORK_MODE); @@ -1893,6 +1894,7 @@ static void UIFlowPhoto_Key(lv_obj_t* obj, uint32_t key) } case LV_KEY_ENTER: { + //printf("[UIFlowPhoto_Key]>>>ENTER\n"); #if HUNTING_CAMERA_MCU == ENABLE // sf_rtsp_stop(); if(TRUE == sf_get_send_statu()) @@ -1909,6 +1911,7 @@ static void UIFlowPhoto_Key(lv_obj_t* obj, uint32_t key) case LV_USER_KEY_NEXT: case LV_USER_KEY_ZOOMIN: { + //printf("[UIFlowPhoto_Key]>>>DOWN\n"); g_preview_info_ishidden = true; lv_obj_set_hidden(g_preview_info_msgbox, g_preview_info_ishidden); KeyDownPressingTimeMs = 0; @@ -1922,6 +1925,7 @@ static void UIFlowPhoto_Key(lv_obj_t* obj, uint32_t key) case LV_USER_KEY_PREV: case LV_USER_KEY_ZOOMOUT: { + //printf("[UIFlowPhoto_Key]>>>UP\n"); if(TRUE == sf_get_send_statu()) { printf("\r\n[%s] line:%d %d running\n", __FUNCTION__, __LINE__,key); @@ -1938,6 +1942,7 @@ static void UIFlowPhoto_Key(lv_obj_t* obj, uint32_t key) case LV_USER_KEY_MENU: case LV_USER_KEY_RIGHT: { + //printf("[UIFlowPhoto_Key]>>>RIGHT\n"); //SF_WIFI_STATUS_E status = sf_get_wifi_status(); if(TRUE == sf_get_send_statu()) { @@ -2039,18 +2044,7 @@ void UIFlowPhotoEventCallback(lv_obj_t* obj, lv_event_t event) switch(event) { case LV_PLUGIN_EVENT_SCR_OPEN: - UIFlowPhoto_ScrOpen(obj);//LV_ALIGN_IN_RIGHT_MID - - if(preview_info_task == NULL && g_preview_info_msgbox == NULL && g_preview_info_label == NULL){ - g_preview_info_msgbox = lv_btn_create(obj, button_msg_bg_scr_uiflowwrnmsg); - g_preview_info_ishidden = true; - lv_obj_set_hidden(g_preview_info_msgbox, g_preview_info_ishidden); - g_preview_info_label = lv_label_create(g_preview_info_msgbox, label_msg_scr_uiflowwrnmsg); - lv_obj_align(g_preview_info_label, g_preview_info_msgbox, LV_ALIGN_CENTER, 0, -30); - lv_label_set_align(g_preview_info_label, LV_LABEL_ALIGN_CENTER); - preview_info_task = lv_task_create(preview_info_task_cb, 100, LV_TASK_PRIO_MID, NULL); - } - + { #define PASSWORD_OPENED 1 #define PASSWORD_NOT_OPENED 0 static int passwordOpened = PASSWORD_NOT_OPENED; @@ -2063,6 +2057,20 @@ void UIFlowPhotoEventCallback(lv_obj_t* obj, lv_event_t event) { passwordOpened = PASSWORD_OPENED; } + + UIFlowPhoto_ScrOpen(obj);//LV_ALIGN_IN_RIGHT_MID + + if(preview_info_task == NULL && g_preview_info_msgbox == NULL && g_preview_info_label == NULL){ + g_preview_info_msgbox = lv_btn_create(obj, button_msg_bg_scr_uiflowwrnmsg); + g_preview_info_ishidden = true; + lv_obj_set_hidden(g_preview_info_msgbox, g_preview_info_ishidden); + g_preview_info_label = lv_label_create(g_preview_info_msgbox, label_msg_scr_uiflowwrnmsg); + lv_obj_align(g_preview_info_label, g_preview_info_msgbox, LV_ALIGN_CENTER, 0, -30); + lv_label_set_align(g_preview_info_label, LV_LABEL_ALIGN_CENTER); + preview_info_task = lv_task_create(preview_info_task_cb, 100, LV_TASK_PRIO_MID, NULL); + } + + // #if HUNTING_CAMERA_MCU == ENABLE // UIMenuStoreInfo *puiPara = sf_ui_para_get(); // if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) @@ -2071,7 +2079,7 @@ void UIFlowPhotoEventCallback(lv_obj_t* obj, lv_event_t event) // } // #endif break; - + } case LV_PLUGIN_EVENT_SCR_CLOSE: UIFlowPhoto_ScrClose(obj); break; diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/icons/sf_list_Selected_next1.bmp b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/icons/sf_list_Selected_next1.bmp new file mode 100644 index 000000000..967fe4fd3 Binary files /dev/null and b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/icons/sf_list_Selected_next1.bmp differ diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/icons/sf_list_Selected_next2.bmp b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/icons/sf_list_Selected_next2.bmp new file mode 100644 index 000000000..f7e65788e Binary files /dev/null and b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/icons/sf_list_Selected_next2.bmp differ diff --git a/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/icons/sf_qr_page.bmp b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/icons/sf_qr_page.bmp new file mode 100644 index 000000000..ea5e65534 Binary files /dev/null and b/code/application/source/cardv/SrcCode/UIWnd/LVGL_SPORTCAM/icons/sf_qr_page.bmp differ diff --git a/code/application/source/sf_app/code/include/sf_file.h b/code/application/source/sf_app/code/include/sf_file.h index 32a2dc9d9..1655ced1d 100755 --- a/code/application/source/sf_app/code/include/sf_file.h +++ b/code/application/source/sf_app/code/include/sf_file.h @@ -45,6 +45,7 @@ UINT8 sf_get_send_file_total(void); SINT32 sf_mem_upload_file_to_module(UINT32 MemPhotoAddr, UINT32 MemPhotosize); SINT32 sf_usr_mem_photo_ch(void); UINT8 sf_save_sd_log(void); +void sf_log_error_code(char* buff); #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/include/sf_param_enum.h b/code/application/source/sf_app/code/include/sf_param_enum.h index b337a9a7e..516c77a2b 100755 --- a/code/application/source/sf_app/code/include/sf_param_enum.h +++ b/code/application/source/sf_app/code/include/sf_param_enum.h @@ -321,7 +321,8 @@ typedef enum sf_STARTUP_TYPE_E SF_MCU_STARTUP_RESET = 0x0A,/*power on to reset(reserve)*/ SF_MCU_STARTUP_SYN_PARAM = 0x0B,/*power on to syn param(reserve)*/ SF_MCU_STARTUP_BATCH_SEND= 0x0C,/*power on to send batch*/ - SF_MCU_STARTUP_BUTT = 0X0D, + SF_MCU_STARTUP_MCU_UPDATA= 0x0F,/*power on to send batch*/ + SF_MCU_STARTUP_BUTT = 0X10, } SF_STARTUP_TYPE_E; typedef enum sfPOWEROFF_TYPE_E diff --git a/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c b/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c index dbdd40aee..9e5a8259b 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_eg91_sim.c @@ -3992,7 +3992,7 @@ SINT32 sf_net_regist_manual(void) } } - if((sf_get_mode_flag()) || (PWR_ON_GPRS_INIT == sf_convert_power_on_mode()) || (PWR_ON_DAILY_REPORT == sf_convert_power_on_mode())) + if((sf_get_mode_flag()) || (PWR_ON_GPRS_INIT == sf_poweron_type_get()) || (PWR_ON_DAILY_REPORT == sf_poweron_type_get())) { eNetRegLocation = QUECTEL_NETREG_ATW; strcpy((char *)gsmPara, "AT&W\r"); @@ -4142,7 +4142,7 @@ SINT32 sf_auto_net_reg(void) } else if(strstr((const char *)gsmPara, "+QSIMSTAT: 0,1")) { - if(PWR_ON_SMS == sf_convert_power_on_mode()) + if(PWR_ON_SMS == sf_poweron_type_get()) { eNetRegLocation = QUECTEL_NETREG_CGREG; strcpy((char *)gsmPara, "AT+CGREG?\r"); @@ -4532,6 +4532,8 @@ SINT32 sf_auto_net_reg(void) SLOGE(gsmPara); sprintf((char *)logStr, "AT+CGREG? Timeout,Error Code:0x%08X\n", ret); SLOGE(logStr); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); goto SF_MODULE_END; } } @@ -4699,6 +4701,8 @@ SINT32 sf_auto_net_reg(void) SLOGE(gsmPara); sprintf((char *)logStr, "Error Code:0x%08X\n", ret); SLOGE(logStr); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); goto SF_MODULE_END; } } @@ -4750,6 +4754,8 @@ SINT32 sf_auto_net_reg(void) SLOGE(gsmPara); sprintf((char *)logStr, "Error Code:0x%08X\n", ret); SLOGE(logStr); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); goto SF_MODULE_END; } else @@ -4768,6 +4774,8 @@ SINT32 sf_auto_net_reg(void) SLOGE(gsmPara); sprintf((char *)logStr, "Error Code:0x%08X\n", ret); SLOGE(logStr); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); goto SF_MODULE_END; } else diff --git a/code/application/source/sf_app/code/source/4gMng/sf_ftp.c b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c index cb06c5105..066aa20dd 100755 --- a/code/application/source/sf_app/code/source/4gMng/sf_ftp.c +++ b/code/application/source/sf_app/code/source/4gMng/sf_ftp.c @@ -970,6 +970,8 @@ SINT32 sf_pic_send_ftp(void) //TIMEOUT //pSifarPara->picSendTimeoutCount++; printf("%s:%d err ftpFileName:%s filePath:%s picSendFailCount:%d sendThumbnailFailCount:%d\n", __FUNCTION__, __LINE__, ftpFileName[pic], filePath[pic],pSifarPara->picSendFailCount, pSifarPara->sendThumbnailFailCount); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); } else { if(!sf_get_mode_flag()){ @@ -1084,6 +1086,8 @@ SINT32 sf_video_send_ftp(void) if(SF_SUCCESS != ret) { printf("%s:%d err ret: [0x%08X] ftpFileName:%s filePath:%s\n", __FUNCTION__, __LINE__, ret, ftpFileName, filePath); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); } } @@ -1130,6 +1134,8 @@ SINT32 sf_ftp_dailyreport_send(void) if(SF_SUCCESS != ret) { printf("%s:%d err ret: [0x%08X] filePath:%s\n", __FUNCTION__, __LINE__, ret, filePath); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); }else { DailyReportFtpSendSucess = 1; pSifarPara->picSendCount = 0; @@ -1147,6 +1153,7 @@ SINT32 sf_ftp_dailyreport_send(void) pSifarPara->videoSendFailCount = 0; pSifarPara->videoSendSucessCount = 0; pSifarPara->SendlowPowerWarnCnt = 0; + sf_file_remove(SF_ERROR_CODE); } sf_dailyReport_set(); } @@ -1519,6 +1526,11 @@ SINT32 sf_camera_ota_ftp(void) } sf_set_fw_update(0); } + else + { + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); + } } MLOGD(" end ret:[0x%08X]\n", ret); @@ -1651,6 +1663,8 @@ SINT32 sf_concentrated_ftp_send(void) goto SF_CONCENTRATED_MODULE_REBOOT; } timeoutCnt++; + SF_SPRINTF(logStr, "%x,", ret1); + sf_log_error_code(logStr); goto SF_CONCENTRATED_END; } else { @@ -1831,6 +1845,8 @@ SINT32 sf_hd_ftp_send(void) goto SF_HD_MODULE_REBOOT; } timeoutCnt++; + SF_SPRINTF(logStr, "%x,", ret1); + sf_log_error_code(logStr); goto SF_HD_END; } else { @@ -2062,6 +2078,8 @@ SINT32 sf_video_ftp_send(void) goto SF_VIDEO_MODULE_REBOOT; } timeoutCnt++; + SF_SPRINTF(logStr, "%x,", ret1); + sf_log_error_code(logStr); goto SF_VIDEO_END; } else { @@ -2178,6 +2196,8 @@ SINT32 sf_log_send_ftp(void) if(SF_SUCCESS != ret) { printf("%s:%d err ret: [0x%08X] filePath:%s\n", __FUNCTION__, __LINE__, ret, filePath); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); } } } @@ -2236,6 +2256,8 @@ SINT32 sf_low_power_warn_send_ftp(void) if(SF_SUCCESS != ret) { printf("%s:%d err ret: [0x%08X] filePath:%s\n", __FUNCTION__, __LINE__, ret, filePath); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); }else { pSifarPara->SendlowPowerWarnCnt++; } @@ -2291,6 +2313,8 @@ SINT32 sf_gps_send_ftp(void) if(SF_SUCCESS != ret) { printf("%s:%d err ret: [0x%08X] filePath:%s\n", __FUNCTION__, __LINE__, ret, filePath); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); } else { //GPS send success,add gps send flag @@ -3081,6 +3105,8 @@ SINT32 sf_card_log_send_ftp(void) if(SF_SUCCESS != ret) { printf("%s:%d err ret: [0x%08X] filePath:%s\n", __FUNCTION__, __LINE__, ret, filePath); + SF_SPRINTF(logStr, "%x,", ret); + sf_log_error_code(logStr); } else { diff --git a/code/application/source/sf_app/code/source/app/sf_service.c b/code/application/source/sf_app/code/source/app/sf_service.c index 08ca4989c..c1dc92b39 100755 --- a/code/application/source/sf_app/code/source/app/sf_service.c +++ b/code/application/source/sf_app/code/source/app/sf_service.c @@ -1829,7 +1829,8 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) s32ret = sf_get_utc(); - if ((SF_ON == pCustomerParam->GpsSwitch)) { + if ((SF_ON == pCustomerParam->GpsSwitch) || (pCustomerParam->FristSendDailyAndGps)) + { s32ret = open_gps(s32ret); } if (0 != sf_get_cq_signal()) { @@ -1867,7 +1868,8 @@ static SINT32 app_Register_Net_startup_mode(SF_FN_PARAM_S *pfnParam) set_at_parament(); sf_USB_net_init(); - if ((SF_ON == pCustomerParam->GpsSwitch)) { + if ((SF_ON == pCustomerParam->GpsSwitch) || (pCustomerParam->FristSendDailyAndGps)) + { const int KEEP_SERACHING_TIMEOUT_MS = 2000; const int KEEP_SERACHING_PERIOD_MS = 200; // keep_seraching_gps_location(KEEP_SERACHING_TIMEOUT_S); diff --git a/code/application/source/sf_app/code/source/fileMng/sf_file.c b/code/application/source/sf_app/code/source/fileMng/sf_file.c index 85e1c2710..83874c1a1 100755 --- a/code/application/source/sf_app/code/source/fileMng/sf_file.c +++ b/code/application/source/sf_app/code/source/fileMng/sf_file.c @@ -956,7 +956,7 @@ UINT32 sf_create_dailyreport_file(void) } //sf_create_thumb_dir(); - if(pPara->CamNameSwitch) + if(SF_CAMID_ON == pPara->CamNameSwitch) { SF_STRCPY(cameraID, pPara->CamNameStr); } @@ -1059,7 +1059,7 @@ UINT32 sf_create_dailyreport_file(void) } else if(temp == SF_POWER_TYPE_LI_POLYER) { - sprintf(str, "Custom"); + sprintf(str, "Lith Pack"); } else { @@ -1301,23 +1301,23 @@ UINT32 sf_create_dailyreport_file(void) if(sf_file_IsExsit(SF_ERROR_CODE) == SF_TRUE){ size = sf_get_file_size((UINT8 *)SF_ERROR_CODE); - } - fd1 = open(SF_ERROR_CODE, O_APPEND | O_WRONLY, S_IRUSR | S_IWUSR); - if(fd1) - { - //size = sp5kFsFileSizeGet(fd1); - buf = malloc(size); - - if (buf) + fd1 = open(SF_ERROR_CODE, O_RDONLY, S_IRUSR | S_IWUSR); + if(fd1) { - read(fd1, buf, size-1); - printf("error code size=%d\n",size); - write(fd, buf, size-1); - write(fd, (UINT8 *)"\r\n", SF_STRLEN("\r\n")); - free(buf); - } + //size = sp5kFsFileSizeGet(fd1); + buf = malloc(size); - close(fd1); + if (buf) + { + read(fd1, buf, size-1); + printf("error code size=%d\n",size); + write(fd, buf, size-1); + write(fd, (UINT8 *)"\r\n", SF_STRLEN("\r\n")); + free(buf); + } + + close(fd1); + } } szTmpsize=SF_STRLEN(cfgTmp); @@ -1881,6 +1881,30 @@ UINT8 sf_save_sd_log(void) return ret; } +/************************************************* + Function: sf_log_error_code + Description: save error code + Input: error code + Output: N/A + Return: N/A + Others: N/A +*************************************************/ +void sf_log_error_code(char* buff) +{ + UINT32 fd = 0; + + if(sf_in_card_exist()) + { + fd = open(SF_ERROR_CODE, O_WRONLY | O_CREAT); + if(fd) + { + lseek(fd, 0, SEEK_END); + write(fd, buff, strlen(buff)); + close(fd); + system("sync"); + } + } +} #ifdef __cplusplus #if __cplusplus } diff --git a/code/application/source/sf_app/code/source/paramMng/sf_param_common.c b/code/application/source/sf_app/code/source/paramMng/sf_param_common.c index a10a9797f..5ff399edb 100755 --- a/code/application/source/sf_app/code/source/paramMng/sf_param_common.c +++ b/code/application/source/sf_app/code/source/paramMng/sf_param_common.c @@ -995,6 +995,8 @@ const SF_CHAR* sf_poweron_type_string(SF_STARTUP_TYPE_E enType) return "SF_MCU_STARTUP_SYN_PARAM"; case SF_MCU_STARTUP_BATCH_SEND: return "SF_MCU_STARTUP_BATCH_SEND"; + case SF_MCU_STARTUP_MCU_UPDATA: + return "SF_MCU_STARTUP_MCU_UPDATA"; default: return "unknown poweron type!!!"; } diff --git a/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c b/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c index b9505fae9..c65baae4b 100644 --- a/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c +++ b/code/application/source/sf_app/code/source/sf_blue/src/sf_blue_hal.c @@ -170,7 +170,7 @@ static void *sf_bluetooth_piscan_task(void *arg) system("dbus-daemon --system"); usleep(200 * 1000); - system("bluetoothd -d -n -C &"); + system("bluetoothd -n -C &"); for (i = 0; i < 40; i++) { if (access("/tmp/blue_status_ready", F_OK) == 0) { printf("blue status ready\r\n"); diff --git a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c index 17300097f..a00fb902b 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu.c @@ -40,6 +40,7 @@ #include "kwrap/debug.h" #include "kwrap/util.h" #include +#include "sf_system.h" #define SERIAL_DEVICE_PATH "/dev/ttyS2" #ifdef __cplusplus @@ -707,7 +708,7 @@ unsigned int sf_get_mcu_reg_ack_depack_many(unsigned char reg[], unsigned char v int sf_commu_wait(unsigned char cmd) { - if(sf_mcu_flag_wait_done_timeout(cmd, 60)) + if(sf_mcu_flag_wait_done_timeout(cmd, 100)) { sf_commu_reset(); return - 1; @@ -963,7 +964,17 @@ unsigned char sf_commu_parse_mcu_data(unsigned char * src, unsigned int len) { sf_set_pir_statu_flag(0); sf_set_module_sleep_flag(0); - sf_com_message_send_to_cardv(&stMessageBuf); + if((PWR_ON_SETUP != sf_poweron_type_get()) && (PWR_ON_USB!= sf_poweron_type_get())) + { + printf("[power off] %s(%d)\n", __FUNCTION__, __LINE__); + sf_set_power_off_flag(1); + sf_app_battery_stop(); + system("reboot"); + } + else + { + sf_com_message_send_to_cardv(&stMessageBuf); + } } else if(0 == stMessageBuf.arg3) //ON->OFF { diff --git a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c index 1ae43890e..128eb6cd4 100755 --- a/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c +++ b/code/application/source/sf_app/code/source/systemMng/sf_commu_mcu_reg.c @@ -1157,7 +1157,7 @@ UINT8 sf_get_power_on_mode(void) } return ModeFlag; } -UINT8 sf_convert_power_on_mode(void) +UINT8 sf_convert_power_on_mode(void)//sf_poweron_type_get { //PowerOnMode &= 0x0f; //printf("[%s:%d]PowerOnMode=0x%x\n",__FUNCTION__,__LINE__,PowerOnMode); @@ -1250,11 +1250,16 @@ void sf_set_sim_insert(INT32 sim) } void sf_set_gps_status(const short status) { + static short ModeFlag = -1; SF_MESSAGE_BUF_S stMessageBuf = {0}; - stMessageBuf.arg2 = status; - stMessageBuf.arg1 = SF_PARA_CMD_GPS_STATUS; - stMessageBuf.cmdId = CMD_PARA; - sf_com_message_send_to_cardv(&stMessageBuf); + if(ModeFlag != status) + { + ModeFlag = status; + stMessageBuf.arg2 = status; + stMessageBuf.arg1 = SF_PARA_CMD_GPS_STATUS; + stMessageBuf.cmdId = CMD_PARA; + sf_com_message_send_to_cardv(&stMessageBuf); + } } void sf_set_ftp_status(const short status) { diff --git a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c index b0f1e1125..0924259d5 100755 --- a/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c +++ b/code/application/source/sf_app/code/source/wifi/sf_wifi_svr.c @@ -1400,28 +1400,28 @@ SINT32 sf_svr_packet_proc(SINT32 fd, UINT8 *pAppData, UINT16 dataLen) { puiPara->CamMode = SF_CAM_MODE_PHOTO; } - - int iCurrMode = System_GetState(SYS_STATE_CURRMODE); - int iNextMode = PRIMARY_MODE_PHOTO; - if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) - { - iNextMode = PRIMARY_MODE_PHOTO; - } - else if(puiPara->CamMode == SF_CAM_MODE_VIDEO) - { - iNextMode = PRIMARY_MODE_MOVIE; - } - else - { - iNextMode = PRIMARY_MODE_PHOTO; - } - if(iNextMode != iCurrMode) - { - UI_SetData(FL_PreMode, iCurrMode); - UI_SetData(FL_NextMode, iNextMode); - Ux_PostEvent(NVTEVT_SYSTEM_MODE, 1, iNextMode); - } + // int iCurrMode = System_GetState(SYS_STATE_CURRMODE); + // int iNextMode = PRIMARY_MODE_PHOTO; + + // if((puiPara->CamMode == SF_CAM_MODE_PHOTO) || (puiPara->CamMode == SF_CAM_MODE_PHOTO_VIDEO) || (puiPara->CamMode == SF_CAM_MODE_VIDEO2)) + // { + // iNextMode = PRIMARY_MODE_PHOTO; + // } + // else if(puiPara->CamMode == SF_CAM_MODE_VIDEO) + // { + // iNextMode = PRIMARY_MODE_MOVIE; + // } + // else + // { + // iNextMode = PRIMARY_MODE_PHOTO; + // } + // if((iNextMode != iCurrMode) && ((TRUE != sf_is_preview()))) + // { + // UI_SetData(FL_PreMode, iCurrMode); + // UI_SetData(FL_NextMode, iNextMode); + // Ux_PostEvent(NVTEVT_SYSTEM_MODE, 1, iNextMode); + // } Save_MenuInfo(); //sf_set_cam_mode(puiPara->CamMode); diff --git a/code/lib/source/lvgl/lvgl/src/lv_core/lv_obj.c b/code/lib/source/lvgl/lvgl/src/lv_core/lv_obj.c index 78e7e62a0..80396fe38 100755 --- a/code/lib/source/lvgl/lvgl/src/lv_core/lv_obj.c +++ b/code/lib/source/lvgl/lvgl/src/lv_core/lv_obj.c @@ -24,6 +24,7 @@ #include "../lv_hal/lv_hal.h" #include #include +#include #if LV_USE_GPU_NXP_PXP && LV_USE_GPU_NXP_PXP_AUTO_INIT #include "../lv_gpu/lv_gpu_nxp_pxp.h" @@ -1998,6 +1999,39 @@ lv_res_t lv_event_send_func(lv_event_cb_t event_xcb, lv_obj_t * obj, lv_event_t */ const void * lv_event_get_data(void) { + switch((uint32_t)event_act_data){ + + case LV_KEY_DOWN: + case LV_KEY_NEXT: + { + printf("Key]>>>DOWN\n"); + break; + } + case LV_KEY_UP: + case LV_KEY_PREV: + { + printf("[Key]>>>UP\n"); + break; + } + + case LV_KEY_LEFT: + { + printf("[Key]>>>LEFT\n"); + break; + } + + case LV_KEY_RIGHT: + { + printf("[Key]>>>RIGHT\n"); + break; + } + case LV_KEY_ENTER: + { + printf("[Key]>>>ENTER\n"); + break; + } + } + return event_act_data; } diff --git a/code/lib/source/sifar/code/include/sf_mcu.h b/code/lib/source/sifar/code/include/sf_mcu.h index 3bbd3516c..93b14f808 100644 --- a/code/lib/source/sifar/code/include/sf_mcu.h +++ b/code/lib/source/sifar/code/include/sf_mcu.h @@ -51,6 +51,7 @@ #define PWR_ON_GPRS_INIT 0x0A #define PWR_ON_TIME_SYNC 0x0B #define PWR_ON_TIME_SEND 0x0C +#define PWR_ON_MCU_UPDATA 0x0F /*REG FUNCTION_SWTICH*/ #define PIR_OFF 0x00 diff --git a/code/lib/source/sifar/code/source/common/sf_common.c b/code/lib/source/sifar/code/source/common/sf_common.c index b8eb1eaa9..74a8cd2c6 100755 --- a/code/lib/source/sifar/code/source/common/sf_common.c +++ b/code/lib/source/sifar/code/source/common/sf_common.c @@ -3422,6 +3422,7 @@ UINT8 sf_get_net_generation(void) void sf_set_net_generation(UINT8 value) { + //MLOGI("netGeneration:%d value:%d\n",netGeneration, value); if((value >= SF_NET_NO) && (value <= SF_NET_4G)) { netGeneration = value; diff --git a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c index 0125885b7..028855846 100644 --- a/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c +++ b/code/lib/source/sifar/code/source/mcu/sf_mcu_client.c @@ -46,6 +46,7 @@ #include #include "UIInfo/UIInfo.h" #include "sf_param_enum.h" +#include "GxUSB.h" //#include "../../../application/source/cardv/SrcCode/PrjInc.h" @@ -1910,7 +1911,11 @@ BOOL sf_get_mode_flag(void) BOOL sf_is_usb_flag(void) { - return GxUSB_GetIsUSBPlug(); + if(GxUSB_GetConnectType() == 1) + { + return 1; + } + return 0;//GxUSB_GetIsUSBPlug(); } void sf_calculate_daily_report(UINT8*dailyHour, UINT8*dailyMin) @@ -2144,7 +2149,7 @@ void sf_set_power_on_mode(UINT8 data) ModeFlag = 0; PowerOnMode = data; PowerOnMode &= 0x0f; - if(1 == PowerOnMode) + if((1 == PowerOnMode) || 15 == PowerOnMode) { ConfigureModeFlag = 1; } diff --git a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi index ea25fb642..d87aa1741 100755 --- a/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi +++ b/configs/Linux/cfg_565_HUNTING_EVB_LINUX_4G_S550/nvt-mem-tbl.dtsi @@ -21,7 +21,7 @@ }; /* Linux system memory region*/ - memory { device_type = "memory"; reg = <0x00000000 0x01800000 0x02000000 0x01600000>; }; + memory { device_type = "memory"; reg = <0x00000000 0x01800000 0x02800000 0x00E00000>; }; /* Linux setup reserved memory */ reserved-memory { diff --git a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c b/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c index dc1caff95..bcf7c3a6e 100755 --- a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c +++ b/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c @@ -2065,46 +2065,48 @@ _THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char // debug_err_var("OtaFlag=", info->OtaFlag); return 0; } +/* assume ota_flag is read from partition_sys and in the first word */ +_THUMB2 static UINT32 bl_check_ota_flag(UINT32 buf_fdt, UINT32 buf_size) +{ + int er; + unsigned char *p_fdt = NULL; + DRAM_PARTITION *p_dram_partition = NULL; + unsigned char *p_tmp = (unsigned char *)SDRAM_Start_FW; - /* assume ota_flag is read from partition_sys and in the first word */ - _THUMB2 static UINT32 bl_check_ota_flag(void) - { - int er; - unsigned char *p_fdt = NULL; - DRAM_PARTITION *p_dram_partition = NULL; - unsigned char *p_tmp = (unsigned char *)SDRAM_Start_FW; + // open flash + if (bl_flash_open() != 0) { + debug_msg("flash open failed\r\n"); + return 0; + } - // open flash - if (bl_flash_open() != 0) { - debug_msg("flash open failed\r\n"); - return 0; - } +#if (FDT_SUPPORT) + // load fdt - #if (FDT_SUPPORT) - // load fdt - er = bl_load_fdt_from_flash(p_tmp, SDRAM_Start_FW, &p_fdt); // dtb size less than 32MB to be safer. - if (er != 0) { - debug_err("load fdt failed\r\n"); - return 0; - } - #endif + debug_msg_var("buf_fdt=", buf_fdt); + debug_msg_var("buf_size=", buf_size); + er = bl_load_fdt_from_flash((unsigned char *)buf_fdt, buf_size, &p_fdt); // dtb size less than 32MB to be safer. + if (er != 0) { + debug_err("load fdt failed\r\n"); + return 0; + } +#endif - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return 0; - } + p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); + if (p_dram_partition == NULL) { + debug_err("null p_dram_partition\r\n"); + return 0; + } - if(bl_load_sys_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp)){ - debug_err("bl_load_sys_from_flash failed\r\n"); - return 0; - } + if(bl_load_sys_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp)){ + debug_err("bl_load_sys_from_flash failed\r\n"); + return 0; + } - UINT32* ota_flag = (UINT32*)p_tmp; - debug_msg_var("ota_flag=", *ota_flag); + UINT32* ota_flag = (UINT32*)p_tmp; + debug_msg_var("ota_flag=", *ota_flag); - return (*ota_flag); - } + return (*ota_flag); +} #endif /***********************************************************************************/ @@ -3129,7 +3131,8 @@ _THUMB2 UINT32 bl_mainFlow(void) UINT32 uiTmpBufferAddr = uiheapBufferAddr + FAT_HEAP_BUFFER_SIZE; UINT32 uiUpdateBootloaderBufAddr = uiTmpBufferAddr + 0x4000; UINT32 uiUpdateMainBinBufAddr = SDRAM_Start_FW; - + UINT32 uiOTABufferAddr = uiUpdateBootloaderBufAddr + 0xA000; + UINT32 uiOTABufferSize = 0x10000 * 2; /* 2 blks */ // UART initial sequence //uart_openSystemUART(); // rtc reset shutdown timer @@ -3215,7 +3218,7 @@ _THUMB2 UINT32 bl_mainFlow(void) UINT32 ota_flag = 0; if(gsfSpecialKeyCallBack(0)) { - ota_flag = bl_check_ota_flag(); + ota_flag = bl_check_ota_flag(uiOTABufferAddr, uiOTABufferSize); } #if !(USB_WRITELOADER || UART_UPDATE) @@ -3299,15 +3302,19 @@ _THUMB2 UINT32 bl_mainFlow(void) if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) == 0) { uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log uiUpdateFileLen = adjusted_size; - } else { - bl_displayErrMsg("invalid firmware"); - } + #if UPDATE_EMU_CODE uiLoaderFunc |= FUNC_UPDATE_FW; #else uiLoaderFunc |= FUNC_RUN_CARD; #endif + } else { + debug_err("invalid firmware"); + uiLoaderFunc |= FUNC_RUN_FLASH; + } + + } fat_close_rootfile(); debug_msg("\r\n"); // for line end RRRRRRR.... diff --git a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c.bak b/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c.bak deleted file mode 100755 index 47831ca29..000000000 --- a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c.bak +++ /dev/null @@ -1,3253 +0,0 @@ -/* - Main control function - - This file is implement by user mode - - @file bl_func.c - - Copyright Novatek Microelectronics Corp. 2014. All rights reserved. -*/ - -#include "fuart.h" -#include "fat.h" -#include "rtc.h" -#include "timer.h" -#include "StorageDef.h" -#include "global.h" -#include "Clock.h" -#include "bl_func.h" -#include "Cache.h" -#include "string.h" -#include "lz.h" -#include "debug.h" -#include "CC.h" -#include "loader.h" -#include "nvtpack.h" -#include "dram_partition_info.h" -#include "emb_partition_info.h" -#include "modelext_parser.h" -#include "bin_info.h" -#include "shm_info.h" -#include "gic.h" -#include "libfdt.h" -#include -#include "bl_u2.h" -#include "crypto.h" -#include "nand.h" -#include "nor.h" - -//#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) -//static uint32_t global_timer_freq = 3000000; //3MHz = 3000000 Hz -//#endif -PSTORAGE_OBJ int_strg_obj = NULL; - -#define FW_PART1_SIZE_OFFSET (CODE_SECTION_OFFSET + 0x04) //ref to CodeInfo.S on rtos (addr of _section_01_size) -//#define TEE_HEADER_SIZE 0x1C // refer to: optee_header_t - -#define _THUMB2 __attribute__((target("thumb2"))) - -#define bl_memcpy utl_memcpy -#define bl_memset utl_memset -#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) -#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) -#define SIZE_PRELOAD 0x400 -#define SIZE_PRESERVE_USB 0x2000 - -#define HEADINFO_UBOOT(p_parti) ((HEADINFO *)(p_parti->uboot_addr + BIN_INFO_OFFSET_UBOOT)) -#define HEADINFO_TEEOS(p_parti) ((HEADINFO *)(p_parti->teeos_addr + BIN_INFO_OFFSET_TEEOS)) -#define IS_BIN_OVERLAP(addr1, size1, addr2, size2) (!(((addr1 + size1 - 1) < addr2) || (addr1 > (addr2 + size2 - 1)))) - -#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) -extern void set_usb_suspend(void); -#endif - -#if (_ROM_PUBLIC_API_ == 1) -#define ROM_LZMA_POSITION 0x7fd0 -UINT8 lzma_temp_buffer[65536]; -int (*rom_lzma_inflate)(UINT8 *in_ptr, UINT32 in_size, UINT8 *out_ptr, UINT32 out_size, UINT8 *p_tmp, UINT32 tmp_size); -#endif - -extern char _loader_exec_compres_start[]; -//extern char _load_nand_table_start_base[]; -extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base[]; -extern void core1_reset(void); - -// Function from Timer.c -//extern UINT32 timer_getLdrElapse(void); - -// Define in MakeConfig.txt -static UINT8 UPDATE_FW_NAME[] = {"FW98520A.BIN"}; -static UINT8 UPDATE_LOADER_NAME[] = {"LD98520A.BIN"}; -static UINT8 RUN_FW_NAME[] = {"FW98520T.BIN"}; -static UINT8 *LOADER_START_STR = {(UINT8 *)"\r\nLoader Start ..."}; -//#if !USB_WRITELOADER -#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) -//static UINT8 *RUN_WRKEY_NAME = {(UINT8 *)"WRKEY.BIN"}; -#if UPDATE_SIM_CODE -static UINT8 *RUN_WRKEY_NAME = {(UINT8 *)"SIM.BIN"}; -#endif -#endif -static UINT8 RECOVERY_FW_NAME[] = {"FW98520R.BIN"}; -static UINT32 g_uiPartitionID = 2; - -static UINT32 g_uiVersion = 0; - -// Error message -static char FWErrorMsg[] = "\r\nFW check fail\r\n"; -static char RWErrorMsg[] = "\r\nR/W error\r\n"; -static char LoaderErrorMsg[] = "\r\nLoader check fail\r\n"; - -UINT32 TopOfStack; -UINT32 BaseOfStack; - -extern char _loader_heap_base[]; - -static BOOL g_is_flash_open = FALSE; // indicate flash is open for updating non-fully all-in-one bin. - -static LDR_FASTBOOT_KEY_CB gFastbootKeyCallBack = NULL; -static LDR_SPECIAL_KEY_CB gSpecialKeyCallBack = NULL; -static LDR_CARD_DETECT_CB gCardDetectCallBack = NULL; -static STORAGEINT gStorageIntType = STORAGEINT_UNOKNOWN; - -static LDR_RECOVERY_TRIGGER_CB gRecoveryTriggerCallBack = NULL; -//#if (!USB_WRITELOADER) -//#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) -//static BOOL g_is_recovery_triggered = FALSE; // indicate recovery flow is triggered. -//#endif -_THUMB2 static int bl_is_smp(unsigned char *p_fdt); -static UINT32 g_uiStartBlkUpdateFW = StartNandBlkUpdateFW; -static UINT32 g_uiNandBlkSize = 0; -static UINT32 g_rtos_load_addr = 0; -static UINT32 g_rtos_target_addr = 0; -static UINT32 g_rtos_size = 0; - -#if (FDT_SUPPORT) -#define PATH_MEM_DRAM "/nvt_memory_cfg/dram" -#define PATH_MEM_LOADER "/nvt_memory_cfg/loader" -#define PATH_MEM_UBOOT "/nvt_memory_cfg/uboot" -#define PATH_MEM_FDT "/nvt_memory_cfg/fdt" -#define PATH_MEM_SHMEM "/nvt_memory_cfg/shmem" -#define PATH_MEM_RTOS "/nvt_memory_cfg/rtos" -#define PATH_MEM_NUTTX "/nvt_memory_cfg/nuttx" -#define PATH_MEM_TEEOS "/nvt_memory_cfg/teeos" -#define PATH_MEM_HDAL "/hdal-memory/media" -#define PATH_MEM_CORE2_ENTRY1 "/nvt_memory_cfg/core2entry1" -#define PATH_MEM_CORE2_ENTRY2 "/nvt_memory_cfg/core2entry2" -#define PATH_NVT_INFO "/nvt_info" -#define PATH_NVTPACK_INDEX "nvtpack/index" -#define PATH_PARTITION_LOADER "partition_loader" -#define PATH_PARTITION_FDT "partition_fdt" -#define PATH_PARTITION_UBOOT "partition_uboot" -#define PATH_PARTITION_NUTTX "partition_nuttx" -#define PATH_PARTITION_TEEOS "partition_teeos" -#define PATH_PARTITION_RTOS "partition_rtos" -#define PROPERTY_REG "reg" -#define PROPERTY_LABEL "label" -#define PROPERTY_PARTITION_NAME "partition_name" -#define PROPERTY_NVT_LINUX_SMP "NVT_LINUX_SMP" -static DRAM_PARTITION g_dram_partition = {0}; -static EMB_PARTITION g_emb_uboot = {0}; -static EMB_PARTITION g_emb_teeos = {0}; -static EMB_PARTITION g_emb_rtos = {0}; -#else // NO FDT_SUPPORT -// refer to met-tbl.dtsi /nvt_memory_cfg -static DRAM_PARTITION g_dram_partition = { - .dram_addr = 0x00000000, - .dram_size = 0x20000000, - .rev_addr = 0x00007E00, ///< shmem - .rev_size = 0x00000200, ///< shmem - .loader_addr = 0x01000000, - .loader_size = 0x00800000, - .fdt_addr = 0x01800000, - .fdt_size = 0x00040000, - .uboot_addr = 0x1E000000, - .uboot_size = 0x01FC0000, - .rtos_addr = 0x01840000, ///< optional, only for fast-boot, - .rtos_size = 0x00780000, ///< optional, only for fast-boot - .core2_entry1_addr = 0x00000000, ///< optional, only for dual core IC (fixed here, and must be) - .core2_entry1_size = 0x00004000, ///< optional, only for dual core IC - .core2_entry2_addr = 0x1FFC0000, ///< optional, only for dual core IC (address better in the bottom of dram to avoid memory space overlap) - .core2_entry2_size = 0x00040000, ///< optional, only for dual core IC -}; -// refer to storage-partition.dtsi -static EMB_PARTITION g_emb_uboot = { - .PartitionOffset = 0xC0000, - .PartitionSize = 0xA0000, -}; -static EMB_PARTITION g_emb_rtos = { ///< optional, only for fast-boot, - .PartitionOffset = 0x2B40000, - .PartitionSize = 0xA00000, -}; -static EMB_PARTITION g_emb_teeos = { ///< optional, only for optee, - .PartitionOffset = 0, - .PartitionSize = 0, -}; -//following just for processing all-in-one bin (nvtpack) -//refer to nvtpack.dtsi -#define NVTPACK_IDX_UBOOT 3 -#define NVTPACK_IDX_TEEOS -1 -#define NVTPACK_IDX_RTOS 10 -#endif - - - -#if (UART_UPDATE_ == ENABLE) -static char g_strLength[80]; // buffer to store length string -#endif - -//--------------------------------------------------------------------------- -// Static function -//--------------------------------------------------------------------------- -int bl_boot_uboot(unsigned char *p_fdt); - -/** - Display error message. - - Display error message. - CPU loop forever and LED is red. - - @param Msg: Message to display - @return void -*/ -_THUMB2 static void bl_displayErrMsg(char *Msg) -{ - // Display error message to UART - debug_msg(Msg); - // Loop forever - while (1) { - ; - } -} - - -/** - Invert endianess of input word - - - @param[in] a input word - - @return translated word -*/ -_THUMB2 static UINT32 invertEndian(UINT32 a) -{ - return __builtin_bswap32(a); -} - - -/** - Check FW code. - - Check FW code and file length. - The FW binary file must be post-proecessd by encrypt_bin.exe. - This function must sync to encrypt_bin.exe. - If FW checking is fail, the CPU will loop forever and LED is red. - - @param[in] uiAddress FW code in DRAM starting address - @param[in] uiFileLen FW code length - @return void -*/ -_THUMB2 static void bl_checkFW(UINT32 uiAddress, UINT32 uiFileLen) -{ - NVTPACK_MEM mem = {0}; - mem.p_data = (void *)uiAddress; - mem.len = uiFileLen; - if (nvtpack_calc_nvt_sum(&mem) != 0) { - bl_displayErrMsg(FWErrorMsg); - } -} - -/** - Check boot loader code. - - Check boot loader code. - - @return void -*/ -_THUMB2 static void bl_checkLoader(UINT32 uiAddr, UINT32 uiSize) -{ - UINT16 *puiValue, uiSum; - UINT32 i; - - puiValue = (UINT16 *)uiAddr; - uiSum = 0; - - for (i = 0; i < (uiSize >> 1); i++) { - uiSum += (*puiValue + i); - puiValue++; - } - - if ((*(UINT16 *)(uiAddr + LOADER_TAG_OFFSET) != LOADER_TAG_VALUE) || - (uiSum != 0)) { - bl_displayErrMsg(LoaderErrorMsg); - } -} -#if (SECURE_DECRYPT_UBOOT || SECURE_DECRYPT_OPTEE_OS) - - -_THUMB2 static void get_bininfo_size_offset(unsigned char* bininfo,unsigned int* size,unsigned int *offset) -{ - /****this headinfo is for encrypt header - BinInfo will set partition offset and size - BinInfo_1[0~3] public key offset - BinInfo_1[4~7] public key length - BinInfo_2[0~3] signature offset - BinInfo_2[4~7] signature length - BinInfo_3[0~3] encrypted offset - BinInfo_3[4~7] encrypted size - BinLength total bin size - Checksum total bin checksum - others parameters set 0 - */ - *size = bininfo[4] | bininfo[5]<<8 | bininfo[6] << 16 | bininfo[7] << 24; - *offset = bininfo[0] | bininfo[1] << 8 | bininfo[2] << 16 | bininfo[3] <<24; -} - - - - -_THUMB2 static int decrypt_aes_cbc(unsigned int input, unsigned int output, unsigned int len) -{ - - CRYPT_OP crypt_op_param; - if(len &0x0f) - { - debug_msg_var("enc size", len); - debug_err("not align 16\r\n"); - return -21; - } - if((input & 0x03) || (output & 0x03) || (len & 0x03) ){ //check word alignment - //debug_msg_var("input", input); - //debug_msg_var("output", output); - //debug_msg_var("len", len); - //debug_err("not word align\r\n"); - return -22; - } - crypt_op_param.op_mode = CRYPTO_CBC; - crypt_op_param.en_de_crypt = CRYPTO_DECRYPT; - crypt_op_param.src_addr = input; - crypt_op_param.dst_addr = output; - crypt_op_param.length = len; //Need align to 16bytes align - //debug_msg_var("src",(unsigned int)crypt_op_param.src_addr); - //debug_msg_var("dst",(unsigned int)crypt_op_param.dst_addr); - - #if 0 - debug_msg_var("input",input); - debug_msg_var("output",output); - debug_msg_var("len",len); - unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; - int i=0; - debug_msg_var("encryped buf addr",(unsigned int)tmp); - for(i=0;i<16;i++){ - debug_msg_var("encryped buf",(unsigned int)tmp[i]); - } - #endif - if(crypto_data_operation(EFUSE_OTP_1ST_KEY_SET_FIELD, crypt_op_param) != 0) - { - //debug_err("aes dec fail\r\n"); - return -23; - } - #if 0 - unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; - int i=0; - tmp = (unsigned char *) crypt_op_param.dst_addr; - debug_msg_var("decryped addr",(unsigned int)&tmp[0]); - for(i=0;i<16;i++){ - debug_msg_var("decryped buf",(unsigned int)tmp[i]); - } - - #endif - return 0; - -} -#if (SECURE_SIGNATURE_BY_AES == 0) -_THUMB2 static void data_reverse(unsigned char* input_data, unsigned int size) -{ - unsigned int i=0; - unsigned char tmp=0; - for(i=0;i< (size/2);i++) - { - tmp = input_data[size - 1 - i]; - input_data[size - 1 - i] = input_data[i]; - input_data[i] = tmp; - } - -} -#endif -_THUMB2 static int do_decrypt_aes(unsigned int input_data, unsigned int output_data, unsigned int* output_size,unsigned int partition_size) -{ - - unsigned int encrypt_offset =0; - unsigned int encrypt_size =0; - unsigned int data_size = 0; - HEADINFO *p_headinfo = (HEADINFO *)input_data; - int er=0; - get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_3, &encrypt_size, &encrypt_offset); - data_size = p_headinfo->BinLength - encrypt_offset; -#if 1 //for signature check - unsigned int signature_offset =0; - unsigned int signature_size = 0; - UINT32 hash_buf[8]; - unsigned int sha256_align_size =0; - UINT32 * signature_buff = NULL; - get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_2, &signature_size, &signature_offset); - #if (SECURE_SIGNATURE_BY_AES == 0) - unsigned int key_offset =0; - unsigned int key_size =0; - unsigned int n_size=0; - unsigned int e_size=0; - UINT32 sign_rsa_output[64]; - UINT32 *key_n = NULL; - UINT32 *key_e = NULL; - UINT32 *signature_addr = NULL; - get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_1, &key_size, &key_offset); - n_size = signature_size;// if rsa 2048 , signature_size should be 256 bytes - e_size = key_size - n_size; - key_n = (UINT32 *)(input_data + key_offset); - // now only support rsa 2048 - key_e = (UINT32 *)(input_data + key_offset + signature_size); // signature_size should be 256 bytes, n key should be 256 - data_reverse((unsigned char *)(key_n),n_size); - data_reverse((unsigned char *)(key_e),e_size); - - er = rsa_keycheck(key_n, 1);// check rsa n key in efuse 1 and 2 field, 0 field for aes key - if(er == 0) - { - debug_err("key fail\r\n"); - return -20; - } - signature_addr = (UINT32 *)(input_data + signature_offset); - data_reverse((unsigned char *)signature_addr, signature_size); - - //decrypt signature - rsa_decrypt(signature_addr, signature_size, key_n, n_size, key_e, e_size,sign_rsa_output); - - data_reverse((unsigned char *)sign_rsa_output, signature_size); - - //remove pending data 0, the last 32 bytes will be signature data - signature_buff = (UINT32 *)&sign_rsa_output[(sizeof(sign_rsa_output)/4 ) - (32/4 )];// offset need devided by 4, because of UINT32 type - #else - //UINT32 sign_aes_output[8]; - - er = decrypt_aes_cbc((UINT32 )(input_data + signature_offset), output_data,signature_size); - if(er != 0) - { - debug_err("decrypt_aes_cbc fail\r\n"); - return -20; - } - signature_buff =(UINT32 *)output_data; - - #endif - //hash encrypt data - - if((data_size & 0x3f) != 0) - { - // hardware sha256 need align 64, need set pending 0 - sha256_align_size = ((data_size/0x40) + 1)*0x40; - bl_memset((unsigned char *)(input_data + encrypt_offset + data_size),0, sha256_align_size - data_size); - } - else - { - sha256_align_size = data_size; - } - - shahw((unsigned char *)(input_data + encrypt_offset), sha256_align_size, hash_buf); - - - //compare signature and current hash - if(memcmp((void *)hash_buf, (void *)signature_buff, sizeof(hash_buf)) != 0) - { - debug_err("sig fail\r\n"); - return -20; - } -#endif - - //decrypt data - //dma addr should 4 alignment, input_data address is 4 alignment - if((input_data + encrypt_offset) & 0x03) - { - utl_memcpy((void *)input_data,(unsigned char*)(input_data + encrypt_offset), data_size); - er = decrypt_aes_cbc(input_data, output_data, encrypt_size); - } - else - { - er = decrypt_aes_cbc(input_data + encrypt_offset, output_data, encrypt_size); - } - if(er != 0) - { - debug_err("aes fail\r\n"); - return er; - } - - *output_size = data_size; - - //add plaintext data to output buf--> aes should 16 alignment, if data not alignment, the last bytes we will not encrypt data - int plaintext_size = data_size - encrypt_size; - unsigned char *p_output = (unsigned char *)output_data; - if( plaintext_size > 0) - { - utl_memcpy(&p_output[encrypt_size], (unsigned char*)(input_data + encrypt_offset+ encrypt_size),plaintext_size); - } - return 0; - -} -#endif - -//#NT#2013/04/25#Steven Wang -begin -//#NT#Show Duty calibration log -#if (_LOADER_DUTY_CALIBRATION_ == ENABLE && _LOADER_DUTY_CALIBRATION_LOG_ == ENABLE) -void BL_showROMLog(UINT32 buffer) -{ - UINT32 value; - UINT32 index; - UINT32 P_duty; - UINT32 N_duty; - UINT32 diff; - - index = 0; - diff = 0; - P_duty = 0; - N_duty = 0; - uart_putSystemUARTStr("\r\n"); - while (1) { - value = INREG32(buffer + index); - - if ((value & 0xF0000000) == 0xF0000000) { - value &= ~(0x40000000); - uart_putSystemUARTStr(Dec2HexStr(value)); - uart_putSystemUARTStr(" = "); - } - - else if ((value & 0xF0000000) == 0x50000000) { - uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); - uart_putSystemUARTStr("\r\n"); - } - - else if ((value & 0xF0000000) == 0x20000000) { -// uart_putSystemUARTStr("P_duty = "); - P_duty = value & 0xFFFFFFF; - //uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); - uart_putSystemUARTStr(Dec2HexStr(P_duty)); - uart_putSystemUARTStr("\r\n"); - } - - else if ((value & 0xF0000000) == 0x30000000) { -// uart_putSystemUARTStr("N_duty = "); - N_duty = value & 0xFFFFFFF; - //uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); - uart_putSystemUARTStr(Dec2HexStr(N_duty)); - uart_putSystemUARTStr("\r\n"); - if (P_duty > N_duty) { - if (diff == 2) { - uart_putSystemUARTStr("============\r\n"); - P_duty = 0; - N_duty = 0; - diff = 0; -// diff = 3; - } else { - diff = 1; - } - } else { - if (diff == 1) { - uart_putSystemUARTStr("============\r\n"); - P_duty = 0; - N_duty = 0; - diff = 0; -// diff = 3; - } else { - diff = 2; - } - } - } else if ((value & 0xF0000000) == 0x60000000) { - uart_putSystemUARTStr("N+P = "); - uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); - uart_putSystemUARTStr("\r\n"); - } else if ((value & 0xF0000000) == 0x70000000) { - if ((value & 0xFFFFFFF) == 0x0654321) { - break; - } - } else { - uart_putSystemUARTStr("Unknow \r\n"); - } - index += 4; - } - uart_putSystemUARTStr("\r\n[0xC0001000] = 0x"); - uart_putSystemUARTStr(Dec2HexStr(INREG32(0xC0001000))); - uart_putSystemUARTStr(" [0xC000101C] = 0x"); - uart_putSystemUARTStr(Dec2HexStr(INREG32(0xC000101C))); - uart_putSystemUARTStr("\r\n"); -} -#endif -//#NT#2013/04/25#Steven Wang -end - - -#if (DRAM_RANGE_SCAN_EN == ENABLE) -/** - Check Sram code. - - Check is dram scan code or not - - @param[in] uiAddress Scan FW code in DRAM starting address - @return void -*/ -static BOOL bl_checkDramScanFW(UINT32 uiAddress) -{ - if ((*(UINT32 *)uiAddress & SRAM_TAG) == SRAM_TAG) { - return TRUE; - } else { - return FALSE; - } -} -#endif - -#if 0 -static BOOL bl_spiIdentify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) -{ - // Sample to support SST25VF032 - if ((uiMfgID == 0xBF) && - (uiCapacityID == 0x4A)) { - pIdentify->bDualRead = FALSE; - pIdentify->bSupportAAI = TRUE; - pIdentify->bSupportEWSR = TRUE; - pIdentify->uiFlashSize = 4 * 1024 * 1024; - return TRUE; - } - - return FALSE; -} -#endif - -/* - Update multi-binary image - - - @param[in] uiFwBuf buffer store fw read from card - - @return - -@ b TRUE: success - -@ b FALSE: fail -*/ - -#if !REMOVED_FLASH -#if 0 -static void bl_interrupt_init(void) -{ - debug_msg("arm_gic_distif_setup\r\n"); - arm_gic_distif_setup(); - debug_msg("arm_gic_cpuif_setup\r\n"); - arm_gic_cpuif_setup(); - - // - //debug_dump_addr(0xF1500000+0x1000,0x500); - //debug_dump_addr(0xF1500000+0x2000,0x100); -} -#endif - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) -#define OUTW(addr,value) (*(UINT32 volatile *)(addr) = (UINT32)(value)) -#define INW(addr) (*(UINT32 volatile *)(addr)) - - -static void bl_cpu_timer_init(UINT32 value) -{ - UINT32 dwVal; - OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_LOAD_OFFSET, value); - - dwVal = INW(configARM_TIMER_BASEADDR + ARM_TIMER_CONTROL_OFFSET); - /* Enable Auto reload mode. */ - dwVal |= ARM_TIMER_CONTROL_AUTO_RELOAD_MASK; - /* Clear prescaler control bits */ - dwVal &= ~ARM_TIMER_CONTROL_PRESCALER_MASK; - /* Set prescaler value */ - dwVal |= ((CYGHWR_HAL_RTC_PRESCALER - 1) << ARM_TIMER_CONTROL_PRESCALER_SHIFT); - /* Enable the decrementer */ - //dwVal |= ARM_TIMER_CONTROL_ENABLE_MASK; - /* Enable the interrupt */ - dwVal |= ARM_TIMER_CONTROL_IRQ_ENABLE_MASK; - - OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_CONTROL_OFFSET, dwVal); - - OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_ISR_OFFSET, - ARM_TIMER_ISR_EVENT_FLAG_MASK); - -} -#endif -#endif -_THUMB2 int bl_flash_open(void) -{ - int er; - //UINT32 uiStorageVersion = (UINT32)&_load_nand_table_start_base; - - if (g_is_flash_open) { - return 0; - } - //========================================================================== - //= User define SPI-NAND id table sample code = - //= You can remove // to use it = - //========================================================================== - //int_strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_IDENTIFY_CB, (UINT32)nand_identify); - - //========================================================================== - //= User define SPI-NOR id table sample code = - //= You can remove // to use it = - //========================================================================== - //int_strg_obj->flash_installIdentifyCB(nor_identify); - - er = int_strg_obj->flash_open(); - if (er < 0) { - debug_err("flash open fail\r\n"); - return -1; - } - - //OUTREG32(NAND_TABLE_VERSION_ADDR, INREG32(uiStorageVersion)); - - //if (er == E_OK) { - // OUTREG32(NAND_TABLE_FLAG_ADDR, 0x46495053); //'S''P''I''F' - //} else { // E_OK_TABLE_FOUND(1) or E_OK_TABLE_NOT_FOUND(2) - // OUTREG32(NAND_TABLE_FLAG_ADDR, er); - //} - g_uiNandBlkSize = int_strg_obj->flash_getBlockSize(); - if (g_uiNandBlkSize == 0x10000) { - debug_msg("SPI NOR\r\n"); - g_uiStartBlkUpdateFW = 1; - } else if (g_uiNandBlkSize == EMMC_BLOCK_SIZE) { - debug_msg("EMMC\r\n"); - g_uiStartBlkUpdateFW = FDT_OFFSET / EMMC_BLOCK_SIZE; - } else { - g_uiStartBlkUpdateFW = StartNandBlkUpdateFW; - } - - g_is_flash_open = TRUE; - return 0; -} - -#if 0 //[-Werror=unused-function] -static int bl_flash_close(void) -{ - if (!g_is_flash_open) { - return 0; - } - - flash_close(); - g_is_flash_open = FALSE; - return 0; -} -#endif - -#if (FDT_SUPPORT) -_THUMB2 static const void *bl_get_fdt_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) -{ - int nodeoffset; /* next node offset from libfdt */ - const void *nodep; /* property node pointer */ - - nodeoffset = fdt_path_offset(p_dtb, p_path); - if (nodeoffset < 0) { - return NULL; - } - nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); - if (len == 0) { - return NULL; - } - return nodep; -} - -_THUMB2 static const void *bl_get_fdt_nvt_memory_cfg_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) -{ - static int nodeoffset_nvt_memory_cfg = -FDT_ERR_NOTFOUND;; /* next node offset from libfdt */ - - int nodeoffset; - const void *nodep; /* property node pointer */ - - if (strncmp(p_path, "/nvt_memory_cfg/", 3) != 0) { - debug_err("path prefix must be /nvt_memory_cfg/\r\n"); - return NULL; - } - - if (nodeoffset_nvt_memory_cfg == -FDT_ERR_NOTFOUND) { - nodeoffset_nvt_memory_cfg = fdt_path_offset(p_dtb, "/nvt_memory_cfg"); - } - - nodeoffset = fdt_subnode_offset(p_dtb, nodeoffset_nvt_memory_cfg, &p_path[16]); - if (nodeoffset < 0) { - return NULL; - } - nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); - if (len == 0) { - return NULL; - } - return nodep; -} -#endif - - -_THUMB2 static unsigned char *bl_get_fdt_cfg(const void *p_dtb, MODELEXT_TYPE type) -{ -#if (FDT_SUPPORT) - int len; - const int *nodep; - - UINT8 *p_rt = NULL; - - switch (type) { - case MODELEXT_TYPE_DRAM_PARTITION: - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_DRAM, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get dram fail\r\n"); - return NULL; - } - g_dram_partition.dram_addr = be32_to_cpu(nodep[0]); - g_dram_partition.dram_size = be32_to_cpu(nodep[1]); - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_LOADER, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get loader fail\r\n"); - return NULL; - } - g_dram_partition.loader_addr = be32_to_cpu(nodep[0]); - g_dram_partition.loader_size = be32_to_cpu(nodep[1]); - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_UBOOT, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get uboot fail\r\n"); - return NULL; - } - g_dram_partition.uboot_addr = be32_to_cpu(nodep[0]); - g_dram_partition.uboot_size = be32_to_cpu(nodep[1]); - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_FDT, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get fdt fail\r\n"); - return NULL; - } - g_dram_partition.fdt_addr = be32_to_cpu(nodep[0]); - g_dram_partition.fdt_size = be32_to_cpu(nodep[1]); - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_RTOS, PROPERTY_REG, &len); - if (nodep != NULL) { - g_dram_partition.rtos_addr = be32_to_cpu(nodep[0]); - g_dram_partition.rtos_size = be32_to_cpu(nodep[1]); - } - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_NUTTX, PROPERTY_REG, &len); - if (nodep != NULL) { - g_dram_partition.nuttx_addr = be32_to_cpu(nodep[0]); - g_dram_partition.nuttx_size = be32_to_cpu(nodep[1]); - } - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_TEEOS, PROPERTY_REG, &len); - if (nodep != NULL) { - g_dram_partition.teeos_addr = be32_to_cpu(nodep[0]); - g_dram_partition.teeos_size = be32_to_cpu(nodep[1]); - } - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_HDAL, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get hdal fail\r\n"); - return NULL; - } - g_dram_partition.hdal1_addr = be32_to_cpu(nodep[0]); - g_dram_partition.hdal1_size = be32_to_cpu(nodep[1]); - if (len >= 16) { - g_dram_partition.hdal2_addr = be32_to_cpu(nodep[2]); - g_dram_partition.hdal2_size = be32_to_cpu(nodep[3]); - } - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_CORE2_ENTRY1, PROPERTY_REG, &len); - if (nodep != NULL) { - g_dram_partition.core2_entry1_addr = be32_to_cpu(nodep[0]); - g_dram_partition.core2_entry1_size = be32_to_cpu(nodep[1]); - } - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_CORE2_ENTRY2, PROPERTY_REG, &len); - if (nodep != NULL) { - g_dram_partition.core2_entry2_addr = be32_to_cpu(nodep[0]); - g_dram_partition.core2_entry2_size = be32_to_cpu(nodep[1]); - } -#endif - p_rt = (UINT8 *)&g_dram_partition; - break; - - case MODELEXT_TYPE_BIN_INFO: - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_SHMEM, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get shmem fail\r\n"); - return NULL; - } - - if (sizeof(SHMINFO) > be32_to_cpu(nodep[1])) { - debug_err("shmem size mismatch\r\n"); - return NULL; - } - - p_rt = (UINT8 *)be32_to_cpu(nodep[0]); - break; - - default: - debug_err_var("not handle type\r\n", type); - return NULL; - } - return p_rt; -#else // NO FDT_SUPPORT - switch (type) { - case MODELEXT_TYPE_DRAM_PARTITION: - return (UINT8 *)&g_dram_partition; - case MODELEXT_TYPE_BIN_INFO: - return (UINT8 *)g_dram_partition.rev_addr; - default: - return NULL; - } -#endif -} - -_THUMB2 int bl_chk_valid_all_in_one(NVTPACK_MEM *p_mem_all_in_one) -{ - NVTPACK_ER er; - NVTPACK_VER ver; - - er = nvtpack_getver(p_mem_all_in_one, &ver); - - if (er != NVTPACK_ER_SUCCESS) { - return -1; - } - - if (ver == NVTPACK_VER_16072017) { - return 0; - } - - return -1; -} - - -#if !REMOVED_FLASH -_THUMB2 int bl_chk_fdt(unsigned int addr, unsigned int size) -{ - DRAM_PARTITION *p_dram_partition = NULL; - - if (fdt_check_full((void *)addr, size) != 0) { - debug_err("invalid dtb\r\n"); - return -1; - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)addr, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("invalid dram_partition\r\n"); - return -1; - } - - // check tmp memory (file load) cannot overlap with uboot and teeos - // we allow to overlap with linux, root-fs because uboot will reload bin file later - debug_msg_var("tmp_addr", SDRAM_Start_FW); - -// if ((addr < p_dram_partition->uboot_addr && addr + size > p_dram_partition->uboot_addr) || -// (addr > p_dram_partition->uboot_addr && addr + size < p_dram_partition->uboot_addr + p_dram_partition->uboot_size)) { - if (IS_BIN_OVERLAP(addr, size, p_dram_partition->uboot_addr, p_dram_partition->uboot_size)) { - debug_err_var("a", addr); - debug_err_var("s", size); - debug_err("uboot olp\r\n"); - return -1; - } -#if 1 - //if ((addr < p_dram_partition->teeos_addr && addr + size > p_dram_partition->teeos_addr) || - // (addr > p_dram_partition->teeos_addr && addr + size < p_dram_partition->teeos_addr + p_dram_partition->teeos_size)) { - if (p_dram_partition->teeos_size) { - if (IS_BIN_OVERLAP(addr, size, p_dram_partition->teeos_addr, p_dram_partition->teeos_size)) { - debug_err_var("a", addr); - debug_err_var("s", size); - debug_err("teeos olp\r\n"); - return -1; - } - } -#endif - // check if memory size matched real size - UINT32 ld_dram1_size = dma_get_dram_capacity(DMA_ID_1); - if (p_dram_partition->dram_size > ld_dram1_size) { - debug_err_var("fw_d1_s", p_dram_partition->dram_size); - debug_err_var("ld_d1_s", ld_dram1_size); - debug_err("d1 s not matched.\r\n"); - return -1; - } - UINT32 ld_dram2_size = dma_get_dram_capacity(DMA_ID_2); - if (p_dram_partition->hdal2_size > ld_dram2_size) { - debug_err_var("fw_d2_s", p_dram_partition->hdal2_size); - debug_err_var("ld_d2_s", ld_dram2_size); - debug_err("d2 s not matched.\r\n"); - return -1; - } - return 0; -} -#endif - -#if !REMOVED_FLASH -_THUMB2 int bl_chk_uboot(unsigned int addr, unsigned int size) -{ -#if (_FPGA_EMULATION_ == 0) - NVTPACK_MEM mem = {0}; - mem.p_data = (void *)addr; - mem.len = size; - if (nvtpack_calc_nvt_sum(&mem) != 0) { - debug_err("uboot check sum fail"); - return -1; - } -#endif - return 0; -} - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) -static void bl_core2_reset(void) -{ - UINT32 core_reg; - - debug_msg("core2_reset\r\n"); - - core_reg = *(volatile UINT32 *)0xF0E400F0; - core_reg &= ~(1<<3); - core_reg &= ~(1<<11); - *(volatile UINT32 *)0xF0E400F0 = core_reg; - core_reg |= (1<<2)|(1<<10) | (1<<21); - core_reg |= (1<<17); - *(volatile UINT32 *)0xF0E400F0 = core_reg; -} - -static void bl_core2_prepare(DRAM_PARTITION *p_dram_partition, unsigned int last_addr) -{ - extern char _load_core2_jump_program_start_base[]; - extern char _load_core2_jump_program_end_base[]; - extern char _load_core2_entry_program_start_base[]; - extern char _load_core2_entry_program_end_base[]; - UINT32 code2JumpCodelen, code2EntryCodelen; - - //check core2_entry1 must at addr 0 - if (p_dram_partition->core2_entry1_addr != CORE2_JUMP_ADDR) { - bl_displayErrMsg("core2entry1 != 0"); - } - - // copy core2 jump code to dram 0x0 - code2JumpCodelen = _load_core2_jump_program_end_base - _load_core2_jump_program_start_base; - utl_memcpy((void *)p_dram_partition->core2_entry1_addr, _load_core2_jump_program_start_base, code2JumpCodelen); -// CPUflushWriteCache(p_dram_partition->core2_entry1_addr, code2JumpCodelen); - - debug_msg_var("core2_jump_program", (int)_load_core2_jump_program_start_base); - debug_msg_var("code2JumpCodelen", (int)code2JumpCodelen); - debug_msg_var("core2_entry2_addr", (int)p_dram_partition->core2_entry2_addr); - - // copy core2 entry code to dram specified by fdt - *(volatile UINT32 *)(NVT_CORE2_START) = p_dram_partition->core2_entry2_addr; - code2EntryCodelen = _load_core2_entry_program_end_base - _load_core2_entry_program_start_base; - utl_memcpy((void *)p_dram_partition->core2_entry2_addr, _load_core2_entry_program_start_base, code2EntryCodelen); -// CPUflushWriteCache(p_dram_partition->core2_entry2_addr, code2EntryCodelen); - - debug_msg_var("core2_entry_program", (int)_load_core2_entry_program_start_base); - debug_msg_var("code2EntryCodelen", (int)code2EntryCodelen); - - *(volatile UINT32 *)0xF07F8000 = last_addr; - - debug_msg_var("0xF07F8000=", (int)*(volatile UINT32 *)0xF07F8000); -} - -static int bl_smp_start(unsigned char *p_modelext, UINT32 uboot_entry) -{ - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_modelext, MODELEXT_TYPE_BIN_INFO); - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_modelext, MODELEXT_TYPE_DRAM_PARTITION); - if (p_bininfo == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - debug_msg_var("fdt", (UINT32)p_modelext); - debug_msg_var("shm", (UINT32)p_bininfo); - - p_bininfo->boot.fdt_addr = (UINT32)p_modelext; - debug_msg_var("p_bininfo->boot.fdt_addr", p_bininfo->boot.fdt_addr); - utl_memset(p_bininfo->boot.LdInfo_1, 0, sizeof(p_bininfo->boot.LdInfo_1)); - utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); - // clear cc_core1_addr, cc_core2_addr -#if USB_WRITELOADER - if(utl_get_bootsrc() == BOOT_SOURCE_UART) { - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_UART; - } else if(USB_WRITELOADER || utl_get_bootsrc() == BOOT_SOURCE_USB) { - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_USB; - } else { - p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; - } -#else -// if (card_get_type() == EXT_STORAGE_TYPE_ETH) -// p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; -// else if (g_is_recovery_triggered) -// p_bininfo->comm.Resv[0] = BOOT_REASON_RECOVERY_SYS; -// else -#if (STORAGE_EXT_TYPE == STORAGE_EXT_ETH) - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; -#else - p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; -#endif -#endif - p_bininfo->comm.Resv[1] = 0; // COMM_CORE1_START - p_bininfo->comm.Resv[2] = 0; // COMM_CORE2_START - p_bininfo->comm.Resv[3] = 0; // COMM_UITRON_COMP_ADDR - p_bininfo->comm.Resv[4] = 0; // COMM_UITRON_COMP_LEN - - debug_msg("smp(no tee)\r\n"); - - bl_core2_prepare(p_dram_partition, 0); - -//#if USB_WRITELOADER -#if 0 - USBStateMachine(); - uart_putSystemUARTStr("USB update Done\n\r"); - timer_delay(1000000); - USBOTGReset(); -#endif - - - - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - CPUInvalidateICacheAll(); - - //reset core2 - bl_core2_reset(); - - { - typedef void (*BRANCH_CB)(void); - BRANCH_CB p_func = (BRANCH_CB)uboot_entry; - debug_msg_var("jump", uboot_entry); - p_func(); - } - - return 0; -} -#endif -_THUMB2 static int bl_entry_boot(unsigned char *p_fdt, UINT32 uboot_entry) -{ - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - - debug_msg_var("fdt", (UINT32)p_fdt); - debug_msg_var("shm", (UINT32)p_bininfo); - - p_bininfo->boot.fdt_addr = (UINT32)p_fdt; - utl_memset(p_bininfo->boot.LdInfo_1, 0, sizeof(p_bininfo->boot.LdInfo_1)); - utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); - // clear cc_core1_addr, cc_core2_addr -#if USB_WRITELOADER - CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); - if(utl_get_bootsrc() == BOOT_SOURCE_USB) { - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_USB; - } else { - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_UART; - } -#else - if (card_get_type() == EXT_STORAGE_TYPE_ETH) - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; - // else if (g_is_recovery_triggered) - // p_bininfo->comm.Resv[0] = BOOT_REASON_RECOVERY_SYS; - else - p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; -#endif - p_bininfo->comm.Resv[1] = 0; // COMM_CORE1_START - p_bininfo->comm.Resv[2] = 0; // COMM_CORE2_START - p_bininfo->comm.Resv[3] = 0; // COMM_UITRON_COMP_ADDR - p_bininfo->comm.Resv[4] = 0; // COMM_UITRON_COMP_LEN - - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - CPUInvalidateICacheAll(); - - { - typedef void (*BRANCH_CB)(void); - BRANCH_CB p_func = (BRANCH_CB)uboot_entry; - debug_msg_var("jump", uboot_entry); - p_func(); - } - - return 0; -} - -_THUMB2 int bl_copy_fdt_to_fdt_addr(unsigned char *p_fdt /*IN*/, unsigned char **pp_fdt /*OUT*/) -{ - DRAM_PARTITION *p_dram_partition; - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("bl_copy_fdt_to_fdt_addr failed.\r\n"); - return -1; - } - - // load fdt to fdt buffer - utl_memcpy((void *)p_dram_partition->fdt_addr, p_fdt, fdt_totalsize(p_fdt)); - *pp_fdt = (unsigned char *)p_dram_partition->fdt_addr; - - //reset shminfo - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - bl_memset(p_bininfo, 0, sizeof(SHMINFO)); - return 0; -} - -_THUMB2 static int bl_load_fdt_from_all_in_one(unsigned char *p_all_in_one, unsigned int all_in_one_size, unsigned char **pp_fdt /*OUT*/) -{ - NVTPACK_ER er; - NVTPACK_MEM emb_fdt; - NVTPACK_VERIFY_OUTPUT np_verify = {0}; - NVTPACK_GET_PARTITION_INPUT np_get_input; - NVTPACK_MEM mem_in = {(void *)p_all_in_one, (unsigned int)all_in_one_size}; - - if (nvtpack_verify(&mem_in, &np_verify) != NVTPACK_ER_SUCCESS) { - debug_err("packbin verify failed.\r\n"); - return -1; - } - - np_get_input.id = 1; // fdt must always put in partition[1] - np_get_input.mem = mem_in; - er = nvtpack_get_partition(&np_get_input, &emb_fdt); - - if (er == NVTPACK_ER_NOT_FOUND) { - return -2; - } else if (er == NVTPACK_ER_SUCCESS) { - debug_msg_var("fdt addr", (int)emb_fdt.p_data); - debug_msg_var("fdt size", (int)emb_fdt.len); - if (bl_chk_fdt((unsigned int)emb_fdt.p_data, emb_fdt.len) == 0) { - return bl_copy_fdt_to_fdt_addr(emb_fdt.p_data, pp_fdt); - } - } - return -1; -} - -_THUMB2 static unsigned int bl_load_rtos_from_all_in_one(unsigned char *p_all_in_one, unsigned int all_in_one_size, unsigned char **pp_fdt /*OUT*/) -{ - UINT32 uItron_fw_addr= 0; - NVTPACK_ER er; - NVTPACK_MEM emb_fdt; - NVTPACK_VERIFY_OUTPUT np_verify = {0}; - NVTPACK_GET_PARTITION_INPUT np_get_input; - NVTPACK_MEM mem_in = {(void *)p_all_in_one, (unsigned int)all_in_one_size}; - HEADINFO *p_headinfo; - - if (nvtpack_verify(&mem_in, &np_verify) != NVTPACK_ER_SUCCESS) { - debug_err("packbin verify failed.\r\n"); - return 0; - } - - np_get_input.id = 5; // rtos must always put in partition[5] for now - np_get_input.mem = mem_in; - er = nvtpack_get_partition(&np_get_input, &emb_fdt);//&np_get_input, &emb_fdt); - - if (er == NVTPACK_ER_NOT_FOUND) { - return 0; - } else if (er == NVTPACK_ER_SUCCESS) { - debug_msg("get rtos partition ok\r\n"); - - p_headinfo = (HEADINFO *)(emb_fdt.p_data + BIN_INFO_OFFSET_RTOS); - uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - - utl_memcpy((void *)uItron_fw_addr, emb_fdt.p_data, emb_fdt.len); - CPUflushWriteCache(uItron_fw_addr, emb_fdt.len); - } - debug_msg_var("uItron_fw_addr=", uItron_fw_addr); - return uItron_fw_addr; -} - -_THUMB2 static int bl_load_fdt_from_flash(unsigned char *p_tmp, unsigned int tmp_size, unsigned char **pp_fdt /*OUT*/) -{ - - // read first block to get dtb size - int blk_size = (int)int_strg_obj->flash_getBlockSize(); - int er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, blk_size, p_tmp, NAND_RW_FIRMWARE); - if (er < 0) { - debug_err("bl_load_fdt_from_flash"); - return -1; - } - - int total_size = ALIGN_CEIL(fdt_totalsize(p_tmp), blk_size); - if ((int)tmp_size < total_size) { - debug_err_var("tmp_size too small, require:", fdt_totalsize(p_tmp)); - return -1; - } - - total_size -= blk_size; - if (total_size > 0) { - // read remain to get uboot starting addr on dram and offset in flash - er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW+1, total_size, p_tmp+blk_size, NAND_RW_FIRMWARE); - if (er < 0) { - debug_err("bl_load_fdt_from_flash"); - return -1; - } - } - - if (bl_chk_fdt((unsigned int)p_tmp, fdt_totalsize(p_tmp)) == 0) { - return bl_copy_fdt_to_fdt_addr(p_tmp, pp_fdt); - } - - return -1; -} - -#if (FDT_SUPPORT) -_THUMB2 static int bl_get_partition_fdt_offset(unsigned char *p_fdt) -{ - static int nodeoffset= -FDT_ERR_NOTFOUND; - - if (nodeoffset > 0) { - return nodeoffset; - } - - const static char *p_names[3] = { - "/nand", - "/nor", - "/mmc@f0510000" - }; - - const char *name = NULL; - switch(gStorageIntType) { - case STORAGEINT_SPI_NAND: - name = p_names[0]; - break; - case STORAGEINT_SPI_NOR: - name = p_names[1]; - break; - case STORAGEINT_EMMC: - name = p_names[2]; - break; - default: - debug_err("loader_setStorageIntType needs.\r\n"); - return NULL; - } - - nodeoffset = fdt_path_offset(p_fdt, name); - - if (nodeoffset < 0) { - debug_err("E:bl_get_partition_name\r\n"); - } - return nodeoffset; -} -#endif - -#if (FDT_SUPPORT) -_THUMB2 static const void *bl_get_fdt_partition_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) -{ - int nodeoffset_partition = bl_get_partition_fdt_offset((unsigned char *)p_dtb); - - int nodeoffset; - const void *nodep; /* property node pointer */ - - if (nodeoffset_partition < 0) { - debug_err("nodeoffset_partition invalid \r\n"); - return NULL; - } - - nodeoffset = fdt_subnode_offset(p_dtb, nodeoffset_partition, p_path); - if (nodeoffset < 0) { - return NULL; - } - nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); - if (len == 0) { - return NULL; - } - return nodep; -} -#endif - -#if (FDT_SUPPORT) -_THUMB2 static int bl_get_partition(unsigned char *p_fdt /*IN*/, char *p_emb_name /*IN*/, EMB_PARTITION *p_emb/*OUT*/, int *p_id) -{ - int len; - const unsigned long long *nodep; - - // get partition offset and size - nodep = (const unsigned long long *)bl_get_fdt_partition_property(p_fdt, p_emb_name, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("bl_get_partition-1\r\n"); - return -1; - } - - p_emb->PartitionOffset = be64_to_cpu(nodep[0]); - p_emb->PartitionSize = be64_to_cpu(nodep[1]); - - // get partition label - char *p_label_name = (char *)bl_get_fdt_partition_property(p_fdt, p_emb_name, PROPERTY_LABEL, &len); - if (p_label_name == NULL) { - debug_err("bl_get_partition-2\r\n"); - return -1; - } - - // get id - int nodeoffset_partition = bl_get_partition_fdt_offset(p_fdt); - int nodeoffset = fdt_subnode_offset(p_fdt, nodeoffset_partition, "nvtpack"); - nodeoffset = fdt_subnode_offset(p_fdt, nodeoffset, "index"); - - for (nodeoffset = fdt_first_subnode(p_fdt, nodeoffset); - (nodeoffset >= 0); - (nodeoffset = fdt_next_subnode(p_fdt, nodeoffset))) { - const struct fdt_property *prop; - - if (!(prop = fdt_get_property(p_fdt, nodeoffset, PROPERTY_PARTITION_NAME, &len))) { - break; - } - const char *p_id_name = fdt_get_name(p_fdt, nodeoffset, &len); - - if (strcmp(p_label_name, (char *)prop->data) == 0) { - *p_id = atoi(p_id_name + strlen("id")); - return 0; - } - } - - return -1; -} -#endif - -_THUMB2 static void *bl_get_uboot_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) -{ -#if (FDT_SUPPORT) - if (bl_get_partition(p_fdt, PATH_PARTITION_UBOOT, &g_emb_uboot, p_id) != 0) { - return NULL; - } -#else - *p_id = NVTPACK_IDX_UBOOT; -#endif - g_emb_uboot.EmbType = EMBTYPE_UBOOT; - return &g_emb_uboot; -} - -_THUMB2 static void *bl_get_rtos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) -{ -#if (FDT_SUPPORT) - if (bl_get_partition(p_fdt, PATH_PARTITION_RTOS, &g_emb_rtos, p_id) != 0) { - return NULL; - } -#else - *p_id = NVTPACK_IDX_RTOS; -#endif - g_emb_rtos.EmbType = EMBTYPE_RTOS; - return &g_emb_rtos; -} - -#if (NUTTX_SUPPORT) -_THUMB2 static void *bl_get_nuttx_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) -{ - if (bl_get_partition(p_fdt, PATH_PARTITION_NUTTX, &g_emb_nuttx, p_id) != 0) { - return NULL; - } - g_emb_nuttx.EmbType = EMBTYPE_NUTTX; - - return &g_emb_nuttx; -} -#endif - -_THUMB2 static void *bl_get_teeos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) -{ -#if (FDT_SUPPORT) - if (bl_get_partition(p_fdt, PATH_PARTITION_TEEOS, &g_emb_teeos, p_id) != 0) { - return NULL; - } -#else - *p_id = NVTPACK_IDX_TEEOS; -#endif - g_emb_teeos.EmbType = EMBTYPE_TEEOS; - - return &g_emb_teeos; -} -#endif - -// return decompress_fw_size -_THUMB2 static unsigned int bl_decompress_rtos(UINT32 compress_addr, UINT32 compress_size, UINT32 fw_base_addr) -{ - UINT32 decoded_size; - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)compress_addr; - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); - - size_comp_le = (compress_size < size_comp_le) ? compress_size : size_comp_le; - decoded_size = LZ_Un_compress((UINT8 *)compress_addr + sizeof(NVTPACK_BFC_HDR), (UINT8 *)fw_base_addr, size_comp_le); - //because some padding bytes are decoded, we must return real rtos size - return (decoded_size < size_uncomp_le) ? decoded_size : size_uncomp_le; -} - -#if !REMOVED_FLASH -_THUMB2 static int bl_load_uboot_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) -{ - NVTPACK_ER er; - NVTPACK_MEM mem_uboot; - int uboot_partition_id; - NVTPACK_GET_PARTITION_INPUT input; - DRAM_PARTITION *p_dram_partition = NULL; - EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); - - if (p_emb_partition_uboot == NULL) { - debug_err("null p_emb_partition_uboot\r\n"); - return -1; - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // get partition data address and size - input.id = (unsigned int)uboot_partition_id; - input.mem.p_data = (void *)p_all_in_one; - input.mem.len = all_in_one_size; - er = nvtpack_get_partition(&input, &mem_uboot); - if (er == NVTPACK_ER_NOT_FOUND) { - return -2; - } - - if (er != NVTPACK_ER_SUCCESS) { - return -1; - } - - debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); -// debug_msg_var("uboot_size", p_dram_partition->uboot_size); -# if 0 - if(0) { -#else -#if (_FPGA_EMULATION_ == 0) - if(is_secure_enable() == 0) { -#else - if (1) { -#endif -#endif - if (bl_chk_uboot((unsigned int)mem_uboot.p_data, mem_uboot.len) != 0) { - return -1; - } - - // flow to handle compressed u-boot and uncompressed one. - HEADINFO *p_headinfo = (HEADINFO *)(mem_uboot.p_data + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_uboot.p_data; // describe compressed u-boot - - // load uboot bin to dram partiton location - //debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); - //debug_msg_var("uboot_size", p_dram_partition->uboot_size); - - if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - if((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF ) == 11) { -#if (_ROM_PUBLIC_API_ == 1) - UINT32 lzma_addr = *(UINT32 *)ROM_LZMA_POSITION; - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); - rom_lzma_inflate = (int (*)(UINT8 *, UINT32 , UINT8 * , UINT32 , UINT8 *, UINT32 ))((lzma_addr)); - rom_lzma_inflate(mem_uboot.p_data + sizeof(NVTPACK_BFC_HDR), size_comp_le, (unsigned char *) p_dram_partition->uboot_addr, size_uncomp_le, (UINT8 *)lzma_temp_buffer, 65536); - debug_msg("lzma "); - -#else - debug_msg("Can not support LZMA\r\n"); -#endif - } else { - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - LZ_Un_compress(mem_uboot.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->uboot_addr, size_comp_le); - debug_msg("lz"); - } - } else { - debug_msg("nml"); - utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, p_headinfo->BinLength); - } - } else { -#if (SECURE_DECRYPT_UBOOT) - utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, mem_uboot.len); - unsigned int plaintext_size =0; - - if((er = do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size))!= 0 ) - { - //debug_err("aes fail\r\n"); - return er; - } - if (bl_chk_uboot((unsigned int)p_dram_partition->uboot_addr, plaintext_size) != 0) { - return -1; - } -#else - debug_msg("please enable SECURE_DECRYPT_UBOOT\r\n"); - return -1; -#endif - } - - return 0; -} - -#if (NUTTX_SUPPORT) -_THUMB2 static int bl_load_nuttx_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) -{ - NVTPACK_ER er; - NVTPACK_MEM mem_nuttx; - int nuttx_partition_id; - NVTPACK_GET_PARTITION_INPUT input; - DRAM_PARTITION *p_dram_partition = NULL; - EMB_PARTITION *p_emb_partition_nuttx = bl_get_nuttx_partition(p_fdt, &nuttx_partition_id); - - if (p_emb_partition_nuttx == NULL) { - debug_err("null p_emb_partition_nuttx\r\n"); - return -1; - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // get partition data address and size - input.id = (unsigned int)nuttx_partition_id; - input.mem.p_data = (void *)p_all_in_one; - input.mem.len = all_in_one_size; - er = nvtpack_get_partition(&input, &mem_nuttx); - if (er == NVTPACK_ER_NOT_FOUND) { - return -2; - } - - if (er != NVTPACK_ER_SUCCESS) { - return -1; - } - - // using check uboot's check sum is ok - if (bl_chk_uboot((unsigned int)mem_nuttx.p_data, mem_nuttx.len) != 0) { - return -1; - } - - // flow to handle compressed u-boot and uncompressed one. - HEADINFO *p_headinfo = (HEADINFO *)(mem_nuttx.p_data + BIN_INFO_OFFSET_NUTTX); // describe uncompressed u-boot - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_nuttx.p_data; // describe compressed u-boot - - // load nuttx bin to dram partiton location - debug_msg_var("nuttx_addr", p_dram_partition->nuttx_addr); - debug_msg_var("nuttx_size", p_dram_partition->nuttx_size); - - if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - LZ_Un_compress(mem_nuttx.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->nuttx_addr, size_comp_le); - } else { - utl_memcpy((void *)p_dram_partition->nuttx_addr, mem_nuttx.p_data, p_headinfo->BinLength); - } - - return 0; -} -#endif - -_THUMB2 static int bl_load_teeos_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) -{ - NVTPACK_ER er; - NVTPACK_MEM mem_teeos; - int teeos_partition_id; - NVTPACK_GET_PARTITION_INPUT input; - DRAM_PARTITION *p_dram_partition = NULL; - EMB_PARTITION *p_emb_partition_teeos = bl_get_teeos_partition(p_fdt, &teeos_partition_id); - HEADINFO *p_headinfo = NULL; - if (p_emb_partition_teeos == NULL) { - debug_err("null p_emb_partition_teeos\r\n"); - return -1; - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // get partition data address and size - input.id = (unsigned int)teeos_partition_id; - input.mem.p_data = (void *)p_all_in_one; - input.mem.len = all_in_one_size; - er = nvtpack_get_partition(&input, &mem_teeos); - if (er == NVTPACK_ER_NOT_FOUND) { - return -2; - } - - if (er != NVTPACK_ER_SUCCESS) { - return -1; - } - -#if 0 - if(1){ -#else - if(is_secure_enable()) { -#endif -#if (SECURE_DECRYPT_OPTEE_OS) - unsigned int plaintext_size =0; - utl_memcpy((void *)p_dram_partition->teeos_addr, mem_teeos.p_data, mem_teeos.len); - if((er = do_decrypt_aes(p_dram_partition->teeos_addr, p_dram_partition->teeos_addr,&plaintext_size, p_dram_partition->teeos_size))!= 0) - { - //debug_err("aes fail\r\n"); - return er; - } - - //this is the second headinfo information , not encrpyted headinfo - p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); -#else - debug_err("please enable SECURE_DECRYPT_OPTEE_OS"); - return -1; -#endif - } - else{ - p_headinfo = (HEADINFO *)(mem_teeos.p_data + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot - utl_memcpy((void *)p_dram_partition->teeos_addr, (unsigned char*)mem_teeos.p_data, p_headinfo->BinLength); - } - UINT32 teeos_addr = p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR]; - - //check addr matched or not - debug_msg_var("teeos_addr", p_dram_partition->teeos_addr); - if (teeos_addr != p_dram_partition->teeos_addr) { - debug_msg_var("teeos_addr(bin)", teeos_addr); - debug_err("teeos addr not matched.\r\n"); - return -1; - } - - // using check uboot's check sum is ok - if (bl_chk_uboot((unsigned int)teeos_addr, p_headinfo->BinLength) != 0) { - return -1; - } - - return 0; -} - -_THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) -{ - int er; - int uboot_partition_id; - DRAM_PARTITION *p_dram_partition = NULL; - unsigned int blk_size = int_strg_obj->flash_getBlockSize(); - EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); - - if (p_emb_partition_uboot == NULL) { - debug_err("null p_emb_partition_uboot\r\n"); - return -1; - } - - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - -#if (SECURE_DECRYPT_UBOOT) - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(BIN_INFO_OFFSET_UBOOT + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash,er=", er); - bl_displayErrMsg(RWErrorMsg); // read uboot failed - return -1; - } -#else - - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(BIN_INFO_OFFSET_UBOOT + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash,er=", er); - bl_displayErrMsg(RWErrorMsg); // read uboot failed - return -1; - } - -#endif - - debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); - debug_msg_var("uboot_size", p_dram_partition->uboot_size); -#if 0 - if(0){ -#else - if(is_secure_enable() == 0) { -#endif - HEADINFO *p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot - - if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) - { - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(size_comp_le, blk_size),p_tmp, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash_comp,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - if((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF ) == 11) { -#if (_ROM_PUBLIC_API_ == 1) - UINT32 lzma_addr = *(UINT32 *)ROM_LZMA_POSITION; - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); - rom_lzma_inflate = (int (*)(UINT8 *, UINT32 , UINT8 * , UINT32 , UINT8 *, UINT32 ))((lzma_addr)); - rom_lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp_le, (unsigned char *) p_dram_partition->uboot_addr, size_uncomp_le, (UINT8 *)lzma_temp_buffer, 65536); - debug_msg("lzma "); -#else - debug_msg("Can not support LZMA\r\n"); -#endif - } else { - LZ_Un_compress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->uboot_addr, size_comp_le); - } - } - else - { - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(p_headinfo->BinLength, blk_size), - (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - } - } - else - { -#if (SECURE_DECRYPT_UBOOT) - HEADINFO *p_headinfo = (HEADINFO *)(p_tmp); // describe uncompressed u-boot - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(p_headinfo->BinLength, blk_size), - (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - unsigned int plaintext_size=0; - if((er =do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size))!= 0) - { - //debug_err("aes fail\r\n"); - return er; - } -#else - debug_msg("plase enable SECURE_DECRYPT_UBOOT config\r\n"); - return -1; -#endif - } - return 0; -} - -_THUMB2 static int bl_load_rtos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) -{ - int er; - int rtos_partition_id; - DRAM_PARTITION *p_dram_partition = NULL; - unsigned int blk_size = int_strg_obj->flash_getBlockSize(); - EMB_PARTITION *p_emb_partition_rtos = bl_get_rtos_partition(p_fdt, &rtos_partition_id); - SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - - if (p_emb_partition_rtos == NULL) { - debug_err("null p_emb_partition_rtos\r\n"); - return -1; - } - - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - if(bl_is_smp(p_fdt)) { - bl_core2_prepare(p_dram_partition, 0); - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - bl_core2_reset(); - } -#endif - - // load 1st block of rtos to tmp dram (to detect compressed u-boot) - unsigned int bininfo_preload_size = ALIGN_CEIL(BIN_INFO_OFFSET_RTOS + sizeof(HEADINFO), blk_size); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, bininfo_preload_size, p_tmp, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_rtos_from_flash,er=", er); - bl_displayErrMsg(RWErrorMsg); // read rtos failed - } - - // flow to handle compressed u-boot and uncompressed one. - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot - - // load rtos bin to dram partiton location - //debug_msg_var("rtos_addr", p_dram_partition->rtos_addr); - //debug_msg_var("rtos_size", p_dram_partition->rtos_size); - - if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - - if((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF ) == 11) - { - /* lzma compressed image*/ - debug_msg("lzma, use uboot\r\n"); - er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - - // boot uboot - er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot uboot failed\r\n"); - } - } else { - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, ALIGN_CEIL(size_comp_le, blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_rtos_from_flash_comp,er=", er); // read bfc-rtos failed - bl_displayErrMsg(RWErrorMsg); - } - LZ_Un_compress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->rtos_addr, size_comp_le); - } - } else { - BININFO *p_bininfo = (BININFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); // describe uncompressed u-boot - if (p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN) { - // copy bininfo_preload to rtos_addr - bl_memcpy((UINT8 *)p_dram_partition->rtos_addr, p_tmp, bininfo_preload_size); - // preload some to get part-1 size for partial load and partial compressed load - UINT32 preload_size = ALIGN_CEIL(FW_PART1_SIZE_OFFSET, blk_size) - bininfo_preload_size; - - if (preload_size!= 0) { - er = int_strg_obj->flash_readSectors( - (p_emb_partition_rtos->PartitionOffset + bininfo_preload_size) / blk_size, - preload_size, - (UINT8 *)(p_dram_partition->rtos_addr + bininfo_preload_size), NAND_RW_FIRMWARE - ); - - if (er < 0) { - debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - } - UINT32 part1_size = *(UINT32 *)(p_dram_partition->rtos_addr + FW_PART1_SIZE_OFFSET); - debug_msg_var("part1_size",part1_size); - part1_size = ALIGN_CEIL(part1_size, blk_size); - //debug_msg_var("part1_size_aligned",part1_size); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, part1_size, (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); - bl_displayErrMsg(RWErrorMsg); - } - // update loaded size - p_shminfo->boot.LdLoadSize = part1_size; - } else { - // full load - debug_msg_var("rtos_size", p_bininfo->head.BinLength); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset /blk_size, ALIGN_CEIL(p_bininfo->head.BinLength, blk_size), (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_rtos_from_flash,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - // update loaded size - p_shminfo->boot.LdLoadSize = p_bininfo->head.BinLength; - } - } - return 0; -} - -_THUMB2 static int bl_load_teeos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) -{ - int er; - int teeos_partition_id; - DRAM_PARTITION *p_dram_partition = NULL; - unsigned int blk_size = int_strg_obj->flash_getBlockSize(); - EMB_PARTITION *p_emb_partition_teeos = bl_get_teeos_partition(p_fdt, &teeos_partition_id); - - if (p_emb_partition_teeos == NULL) { - debug_err("null p_emb_partition_teeos\r\n"); - return -1; - } - - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // load 1st block of u-boot to tmp dram (to detect compressed u-boot) - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_teeos->PartitionOffset / blk_size, ALIGN_CEIL(BIN_INFO_OFFSET_TEEOS + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_teeos_from_flash,er=", er); - bl_displayErrMsg(RWErrorMsg); // read teeos failed - } - - // flow to handle compressed u-boot and uncompressed one. -#if (SECURE_DECRYPT_OPTEE_OS) - HEADINFO *p_headinfo = (HEADINFO *)(p_tmp); // describe uncompressed u-boot -#else - HEADINFO *p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot - -#endif - - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_teeos->PartitionOffset / blk_size, ALIGN_CEIL(p_headinfo->BinLength, blk_size), (UINT8 *)p_dram_partition->teeos_addr, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_teeos_from_flash,er=", er); // read bfc-teeos failed - bl_displayErrMsg(RWErrorMsg); - } -#if 0 - if(1){ -#else - if(is_secure_enable()) { -#endif -#if (SECURE_DECRYPT_OPTEE_OS) - - unsigned int plaintext_size=0; - if((er = do_decrypt_aes(p_dram_partition->teeos_addr, p_dram_partition->teeos_addr, &plaintext_size, p_dram_partition->teeos_size)) != 0) - { - //debug_err("aes fail\r\n"); - return er; - } - - p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot -#else - debug_err("please ENABLE SECURE_DECRYPT_OPTEE_OS config\n"); - return -1; -#endif - } - - // load teeos bin to dram partiton location - UINT32 teeos_addr = p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR]; - debug_msg_var("teeos_addr", p_dram_partition->teeos_addr); - if (teeos_addr != p_dram_partition->teeos_addr) { - debug_msg_var("teeos_addr(bin)", teeos_addr); - debug_err("teeos addr not matched.\r\n"); - return -1; - } - //check check sum - if (bl_chk_uboot((unsigned int)teeos_addr, p_headinfo->BinLength) != 0) { - return -1; - } - return 0; -} -#endif - -#if !(USB_WRITELOADER || UART_UPDATE) -_THUMB2 static int bl_load_rtos_from_non_nvtpack(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) -{ - NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; - HEADINFO *p_headinfo = (HEADINFO *)(src_addr + BIN_INFO_OFFSET_RTOS); - if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - // to avoid rtos_addr is overlapped by src_addr, we need extract some bits to get real rtos addr. - // compressed firmware - debug_msg("compressed t.bin\r\n"); - // decode some bytes to get uncompressed address - bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr + SIZE_PRELOAD); - p_headinfo = (HEADINFO *)(src_addr + SIZE_PRELOAD + BIN_INFO_OFFSET_RTOS); - // check if valid after decode - if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); - //adjust src_addr that lay compressed f.w followed by uncomppressed f.w - src_addr = uncompress_addr + uncompress_size; - src_addr = ALIGN_CEIL(src_addr, 4); - src_size = fat_read_rootfile((UINT8 *)src_addr, compress_size); - } else { - return -1; - } - } else if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - // uncompressed firmware - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - - src_size = fat_read_rootfile((UINT8 *)src_addr, uncompress_size); - src_addr = uncompress_addr; - src_size = uncompress_size; - debug_msg("uncompressed t.bin\r\n"); -#if (DRAM_RANGE_SCAN_EN == ENABLE) - } else if (utl_is_sram_fw(src_addr) == TRUE) { - debug_msg("detected as SRAM fw\r\n"); - src_size = fat_read_rootfile((UINT8 *)src_addr, FAT_READ_TOTAL_FILE_LENGTH); -#endif - } else { - return -1; - } - - *p_dst_addr = src_addr; - *p_dst_size = src_size; - return 0; -} -#endif - -#if 0//(STORAGE_EXT_TYPE == STORAGE_EXT_USB) -_THUMB2 static int bl_load_rtos_from_usb_raw(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) -{ - NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; - HEADINFO *p_headinfo = (HEADINFO *)(src_addr + BIN_INFO_OFFSET_RTOS); - if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - // to avoid rtos_addr is overlapped by src_addr, we need extract some bits to get real rtos addr. - // compressed firmware - debug_msg("compressed t.bin\r\n"); - // decode some bytes to get uncompressed address - // assume usb write loader receive full fw at 0x0200_0000, decompress it to smaller address - bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr - SIZE_PRESERVE_USB); - p_headinfo = (HEADINFO *)(src_addr - SIZE_PRESERVE_USB + BIN_INFO_OFFSET_RTOS); - // check if valid after decode - if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); - //adjust src_addr that lay compressed f.w followed by uncomppressed f.w - utl_memcpy((void *)(uncompress_addr + uncompress_size), (void *)src_addr, compress_size); - src_addr = uncompress_addr + uncompress_size; - src_addr = ALIGN_CEIL(src_addr, 4); - src_size = compress_size; - } else { - return -1; - } - } else if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - // uncompressed firmware - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - debug_msg("uncompressed t.bin\r\n"); - utl_memcpy((void *)uncompress_addr, (void *)src_addr, uncompress_size); - src_size = uncompress_size; -#if (DRAM_RANGE_SCAN_EN == ENABLE) - } else if (utl_is_sram_fw(src_addr) == TRUE) { - debug_msg("detected as SRAM fw. NOt Support from USB\r\n"); -#endif - } else { - return -1; - } - - *p_dst_addr = src_addr; - *p_dst_size = src_size; - return 0; -} -#endif - -//#if !USB_WRITELOADER -#if !((STORAGE_EXT_TYPE == STORAGE_EXT_USB) || (STORAGE_EXT_TYPE == STORAGE_EXT_UART)) -_THUMB2 static int bl_load_rtos_from_uart(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) -{ -#if UART_UPDATE_ - UINT32 tick_kms = 10; // timeout 1000 ms - char key; - - debug_msg("UART press Enter to\r\n"); - - while (--tick_kms) { - uart_chkChar(&key); - - if (key != 0x00) { - break; - } - timer_delay(100000); //100000 - debug_msg("."); - } - - if (tick_kms) { - UINT32 uiLength; - debug_msg("\r\nEnter uboot length (Decimal):\r\n"); //must \r\n at the end because of auto_test tool - uart_getStr_polling(g_strLength); - uiLength = DecStr2Int(g_strLength); - debug_msg("\r\nPlz pass uboot bin > "); - uart_getBinary((char *)src_addr, uiLength); // Temp Receive to DRAM start - debug_msg("\r\nGot it\r\n"); -#if (DRAM_RANGE_SCAN_EN == ENABLE) - // First word is code entry point address, once if entry address is 0xC000XXXX - // represent code is running on sram. - if (bl_checkDramScanFW(src_addr) == TRUE) { - UINT32 i; - - // Enable sram usage - SETREG32(0xF0900128, 0x00000002); - SETREG32(0xF0800128, 0x00000006); - SETREG32(0xF0020060, 0x00030002); - - uiLength = ((uiLength + 3) & 0xFFFFFFFC); - - for (i = 0; i < uiLength; i += 4) { - *(UINT32 *)(src_addr + i) = *(UINT32 *)(src_addr + i); - } - *(UINT32 *)(src_addr) = *(UINT32 *)(src_addr); - return 1; - } -#endif - if (*(UINT32 *)src_addr == MAKEFOURCC('B', 'C', 'L', '1')) { - HEADINFO *p_headinfo = NULL; - NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; - bl_checkFW(src_addr, uiLength); - debug_msg_var("uiLength", uiLength); - debug_msg("compressed t.bin\r\n"); - // decode some bytes to get uncompressed address - bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr + uiLength); - p_headinfo = (HEADINFO *)(src_addr + uiLength + BIN_INFO_OFFSET_RTOS); - // check if valid after decode - if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); - unsigned int ori_src_addr = src_addr; - //adjust src_addr that lay compressed f.w followed by uncomppressed f.w - src_addr = uncompress_addr + uncompress_size; - src_addr = ALIGN_CEIL(src_addr, 4); - src_size = uncompress_size; - utl_memcpy((void *)src_addr, (void *)ori_src_addr, uiLength); - *p_dst_addr = src_addr; - *p_dst_size = compress_size; - return 0; - } else { - return -1; - } - return 0; - } - } -#endif - return -1; -} -#endif - -_THUMB2 static void bl_update_uItron_headInfo(UINT32 fw_base_addr, DRAM_PARTITION *p_dram_partition) -{ - HEADINFO *pHeadInfo; -#if (UITRON_FW == ENABLE) - BININFO *pBinInfo; -#endif - pHeadInfo = (HEADINFO *)(fw_base_addr + BIN_INFO_OFFSET_RTOS); - if (p_dram_partition) { - pHeadInfo->ModelextAddr = p_dram_partition->fdt_addr; - } else { - pHeadInfo->ModelextAddr = 0; -#if (UITRON_FW == ENABLE) - pBinInfo = (BININFO *)(fw_base_addr + BIN_INFO_OFFSET_RTOS); - pBinInfo->ld.Resv[0] = LoaderInternalInfo[1]; - pBinInfo->ld.LdPackage = (LoaderInternalInfo[3] & 0xFFFF); -#endif - } -} - -_THUMB2 static int bl_update_loader_bininfo(unsigned char *p_fdt, unsigned int ld_flag, unsigned int rtos_loaded_size) -{ - BOOTINFO *p_ld; - SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - BININFO *p_bininfo = (BININFO *)(p_dram_partition->rtos_addr + BIN_INFO_OFFSET_RTOS); - - p_ld = &p_shminfo->boot; - if (!(p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN)) { - // LdLoadSize updated on uboot or bl_load_rtos_from_flash(), if BOOT_FLAG_PARTLOAD_EN - p_ld->LdLoadSize = rtos_loaded_size; - } - p_ld->LdLoadTime = timer_getLdrElapse(); - p_ld->LdResvSize = 0; //unused - p_ld->FWResvSize = 0; //unused - return 0; -} - -_THUMB2 static int bl_is_smp(unsigned char *p_fdt) -{ -#if (FDT_SUPPORT) - int len; - const char *nodep; - nodep = (const char *)bl_get_fdt_property(p_fdt, PATH_NVT_INFO, PROPERTY_NVT_LINUX_SMP, &len); - debug_msg_var("nodep", (UINT32)nodep); - if (nodep == NULL) { - return 0; - } - debug_msg((char *)nodep); - if (strcmp(nodep, "NVT_LINUX_SMP_ON") == 0) { - return 1; - } - return 0; -#else - return 0; -#endif -} - -#if !REMOVED_FLASH -_THUMB2 int bl_boot_uboot(unsigned char *p_fdt) -{ -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - UINT32 No_CPU; -#endif - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // update shminfo - SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - unsigned int *p_param = (unsigned int *)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[0]); - p_shminfo->boot.LdPackage = p_param[3] & 0xFFFF; - p_shminfo->boot.LdStorage = (p_param[3] >> 16) & 0xFF; - - // update headinfo as real u-boot address - HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->uboot_addr + BIN_INFO_OFFSET_UBOOT); - - if (bl_chk_uboot(p_dram_partition->uboot_addr, p_headinfo->BinLength) != 0) { - return -1; - } - // start cpu2 - if (p_dram_partition->uboot_addr != p_headinfo->CodeEntry) { - debug_err_var("drampat-uboot_addr ", (int)p_dram_partition->uboot_addr); - debug_err_var("bin-uboot_addr ", (int)p_headinfo->CodeEntry); - return -1; - } - // for uboot to indicate this boot is all-in-one fw or non-all-in-one boot from uart or usb - // if boot from uart or usb with non-all-in-one fw, the uboot's ModelextAddr will be zero - p_headinfo->ModelextAddr = p_dram_partition->fdt_addr; - - CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); - UINT32 isSMP = bl_is_smp(p_fdt); - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - No_CPU = *(UINT32 *)0xFFD00004; - No_CPU &= 0x3; - debug_msg_var("core No.=", No_CPU+1); -#endif - // init cpu timer -// bl_cpu_timer_init(CPU_TIMER_SETTING); -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - if (!isSMP || !No_CPU) -#else - if (!isSMP) -#endif - { -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - debug_msg_var("Bin core=", isSMP+1); -#endif - bl_entry_boot(p_fdt, p_headinfo->CodeEntry); - } else { -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - // init cpu timer - bl_cpu_timer_init(global_timer_freq); - - bl_smp_start(p_fdt, p_headinfo->CodeEntry); - // boot u-boot and never return back to loader -#else - //bl_smp_start(p_fdt, p_headinfo->CodeEntry); - debug_err("not support smp\r\n"); -#endif - } - return 0; -} - -#if (NUTTX_SUPPORT) -_THUMB2 static int bl_boot_nuttx(unsigned char *p_fdt) -{ - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // update headinfo as real u-boot address - HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->nuttx_addr + BIN_INFO_OFFSET_NUTTX); - - if (bl_chk_uboot(p_dram_partition->nuttx_addr, p_headinfo->BinLength) != 0) { - return -1; - } - - // start cpu2 - if (p_dram_partition->nuttx_addr != p_headinfo->CodeEntry) { - debug_err_var("drampat-nuttx_addr ", (int)p_dram_partition->nuttx_addr); - debug_err_var("bin-nuttx_addr ", (int)p_headinfo->CodeEntry); - return -1; - } - - CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); - - // init cpu timer - bl_cpu_timer_init(CPU_TIMER_SETTING); - - bl_entry_boot(p_fdt, p_headinfo->CodeEntry); - // boot nuttx and never return back to loader - return 0; -} -#endif - -_THUMB2 static int bl_boot_teeos(unsigned char *p_fdt) -{ - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // update headinfo as real u-boot address - HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); - - // update uboot addr for teeos - p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_UBOOT_ADDR] = p_dram_partition->uboot_addr; - - -#if 0 //do not checksum, because teeos header has removed cause checksum failed - if (bl_chk_uboot(p_dram_partition->teeos_addr, p_headinfo->BinLength) != 0) { - return -1; - } -#endif - - //flush uboot - CPUflushWriteCache(p_dram_partition->uboot_addr, p_dram_partition->uboot_size); - //flush teeos - CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); - - // init cpu timer - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - bl_cpu_timer_init(CPU_TIMER_SETTING); - // boot core2 (after teeos is loaded) - if (HEADINFO_UBOOT(p_dram_partition)->BinCtrl & 0x00000002) { - //if SMP, trigger core2 - debug_msg("smp(tee)\r\n"); - bl_core2_prepare(p_dram_partition, p_headinfo->CodeEntry); - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - bl_core2_reset(); - } else { - debug_msg_var("not smp\r\n", p_headinfo->BinCtrl); - } -#endif - bl_entry_boot(p_fdt, p_headinfo->CodeEntry); - // boot teeos and never return back to loader - return 0; -} - -_THUMB2 static int bl_update_loader_flag(unsigned char *p_fdt, UINT32 uiLoaderFunc) -{ - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - - utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); - - p_bininfo->boot.LdCtrl2 = 0; - if (uiLoaderFunc & FUNC_UPDATE_FW) { - p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_FW; - } - if (uiLoaderFunc & FUNC_UPDATE_LOADER) { - p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_LD; - } - if (uiLoaderFunc & FUNC_RUN_CARD) { - p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_CARD; - } - if (uiLoaderFunc & FUNC_RUN_FLASH) { - p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_FLASH; - } - //CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); - debug_msg_var("LdCtrl2", p_bininfo->boot.LdCtrl2); - - unsigned int ver; - SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - BOOTINFO *p_ld = &p_shminfo->boot; - - utl_memset(p_ld->LdInfo_1, 0, sizeof(p_ld->LdInfo_1)); - utl_memcpy(p_ld->LdInfo_1, "LD_NVT", 6); - - ver = (((LoaderInternalInfo[1] >> 28) & 0xF) << 24) | - (((LoaderInternalInfo[1] >> 24) & 0xF) << 16) | - ((LoaderInternalInfo[1] >> 16) & 0xFF); - - if (g_uiVersion == 0) { - g_uiVersion = ver; - } - - utl_memcpy(&p_ld->LdInfo_1[8], &g_uiVersion, sizeof(g_uiVersion)); - unsigned int *p_param = (unsigned int *)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[0]); - p_ld->LdPackage = p_param[3] & 0xFFFF; - p_ld->LdStorage = (p_param[3] >> 16) & 0xFF; - - return 0; -} - -// return uItron_fw_addr -_THUMB2 unsigned int bl_process_all_in_one(UINT32 uiFwBuf, UINT32 uiFwBufSize, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) -{ - int er; - unsigned char *p_fdt = NULL; - DRAM_PARTITION *p_dram_partition = NULL; - //p_tmp for the case of all-in-one without fdt or uboot - unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); - - // load fdt - er = bl_load_fdt_from_all_in_one((unsigned char *)uiFwBuf, uiFwBufSize, &p_fdt); - if (er == -2) { // try to load from nand - debug_msg("fdt from flash.\r\n"); - // open flash - if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. - bl_displayErrMsg("flash open failed\r\n"); - } - - //p_tmp for the case of all-in-one without fdt or uboot - unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); - er = bl_load_fdt_from_flash(p_tmp, 0x2000000, &p_fdt); // dtb size less than 32MB to be safer. - if (er != 0) { - bl_displayErrMsg("load fdt failed\r\n"); - } - } - - // update loader flag - bl_update_loader_flag(p_fdt, uiLoaderFunc); - if (uiLoaderFunc & FUNC_UPDATE_FW) { - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_BIN_INFO); - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - p_bininfo->comm.Resv[5] = uiFwBuf; // COMM_FW_UPD_ADDR - p_bininfo->comm.Resv[6] = uiFwBufSize; // COMM_FW_UPD_LEN - debug_msg_var("upd_src_addr=", uiFwBuf); - debug_msg_var("upd_src_size=", uiFwBufSize); - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - //check loader addr is matched with loader self. - extern char _loader_exec_compres_start[]; - if (p_dram_partition->loader_addr != (UINT32)_loader_exec_compres_start) { - debug_msg_var("p_dram_partition->loader_addr", p_dram_partition->loader_addr); - debug_msg_var("_loader_exec_compres_start", (UINT32)_loader_exec_compres_start); - bl_displayErrMsg("loader addr is not match."); - } - //when rtos boot from flash, the boot from loader directly, - //but when rtos need to burn image, the uboot is still required. - //so, any one need to burn image, uboot is always needed to boot. - //if ((uiLoaderFunc & FUNC_UPDATE_FW) || p_dram_partition->rtos_addr == 0) { - if (1) { - // always use uboot to handle all-in-one bin - if (p_dram_partition->nuttx_size == 0 && p_dram_partition->teeos_size == 0) { - // load uboot - er = bl_load_uboot_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); - if (er == -2) { // try to load from nand - debug_msg("uboot from flash.\r\n"); - // open flash - if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. - bl_displayErrMsg("flash open failed\r\n"); - } - er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - } - - er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot uboot failed\r\n"); - } - } else if (p_dram_partition->nuttx_size) { -#if (NUTTX_SUPPORT) - // load nuttx - er = bl_load_nuttx_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); - if (er != 0) { - bl_displayErrMsg("load nuttx failed\r\n"); - } - er = bl_boot_nuttx((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot nuttx failed\r\n"); - } -#else - bl_displayErrMsg("NUTTX_SUPPORT disabled\r\n"); -#endif - } else if (p_dram_partition->teeos_size) { - // load teeos - er = bl_load_teeos_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); - if (er != 0) { - bl_displayErrMsg("load teeos failed\r\n"); - } - // load uboot - er = bl_load_uboot_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - // boot teeos - er = bl_boot_teeos((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot teeos failed\r\n"); - } - } - return er; - } else { - // update rtos information - // the following is for uncompressed-rtos only, others needing uboot - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); - - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - *p_comp_addr = p_bininfo->comm.Resv[3]; // COMM_UITRON_COMP_ADDR - *p_comp_size = p_bininfo->comm.Resv[4]; // COMM_UITRON_COMP_LEN - - *pOut_dram_partition = p_dram_partition; - return bl_load_rtos_from_all_in_one((unsigned char *)uiFwBuf, uiFwBufSize, &p_fdt); - } -} -#endif - -// return uItron_fw_addr, no need to fully decode -_THUMB2 static unsigned int bl_process_rtos_only(UINT32 uiFwBuf, UINT32 uiFwBufSize, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) -{ - UINT32 uItron_fw_addr; - NVTPACK_BFC_HDR *pBFC; - HEADINFO *p_headinfo; - - debug_msg("\r\nbl_process_rtos_only\r\n"); - pBFC = (NVTPACK_BFC_HDR *)uiFwBuf; - if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - UINT32 compressSize; - unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); - LZ_Un_compress((UINT8 *)uiFwBuf + LDC_HEADER_SIZE, p_tmp, SIZE_PRELOAD); - p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); - uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; -#if UITRON_FW - uItron_fw_addr = p_headinfo->CodeEntry - CODE_ENTRY_OFFSET; // cliff -#endif - - if ((uItron_fw_addr & 0x0000FFFF) != 0) { //cc engine's limitation - debug_err_var("rtos addr must match (&0x0000FFFF)==0", uItron_fw_addr); // but 660 allow - uItron_fw_addr = uItron_fw_addr & 0xFFFF0000; - } - compressSize = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); - //debug_dump_addr(tmpBuf,0x200); - debug_msg_var("F compress uItron_fw_addr", uItron_fw_addr); - // uiFwBuf has adjusted on bl_load_rtos_from_non_nvtpack() - *p_comp_addr = uiFwBuf; - *p_comp_size = compressSize; - } else { - p_headinfo = (HEADINFO *)(uiFwBuf + BIN_INFO_OFFSET_RTOS); - uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; -#if UITRON_FW - uItron_fw_addr = p_headinfo->CodeEntry - CODE_ENTRY_OFFSET; // cliff -#endif - - if ((uItron_fw_addr & 0x0000FFFF) != 0) { //cc engine's limitation - debug_err_var("rtos addr must match (&0x0000FFFF)==0", uItron_fw_addr); // but 660 allow - uItron_fw_addr = uItron_fw_addr & 0xFFFF0000; - } - - debug_msg_var("Normal uItron_fw_addr", uItron_fw_addr); - *p_comp_addr = 0; - *p_comp_size = 0; - } - return uItron_fw_addr; -} -#if !UPDATE_EMU_CODE && !REMOVED_FLASH -_THUMB2 static unsigned int bl_process_flash_boot(unsigned char *p_tmp, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) -{ - int er; - unsigned char *p_fdt = NULL; - DRAM_PARTITION *p_dram_partition = NULL; - - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } - - // load fdt - er = bl_load_fdt_from_flash(p_tmp, SDRAM_Start_FW, &p_fdt); // dtb size less than 32MB to be safer. - if (er != 0) { - bl_displayErrMsg("load fdt failed\r\n"); - } - - // update loader flag - bl_update_loader_flag(p_fdt, uiLoaderFunc); - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition->teeos_size) { - // load teeos - er = bl_load_teeos_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load teeos failed\r\n"); - } - // load uboot - er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - // boot teeos - er = bl_boot_teeos((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot teeos failed\r\n"); - } - } else if (p_dram_partition->rtos_addr == 0 || DUAL_RTOS_SUPPORT || (gFastbootKeyCallBack == NULL) || (!gFastbootKeyCallBack())) { - // load uboot - er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - - // boot uboot - er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot uboot failed\r\n"); - } - } else { - // load rtos - er = bl_load_rtos_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load rtos failed\r\n"); - } - } - - // update compressed rtos information - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((unsigned char *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - *p_comp_addr = p_bininfo->comm.Resv[3]; // COMM_UITRON_COMP_ADDR - *p_comp_size = p_bininfo->comm.Resv[4]; // COMM_UITRON_COMP_LEN - - *pOut_dram_partition = p_dram_partition; - return p_dram_partition->rtos_addr; -} -#endif - -/** - bl_process_update_loader. - - Write loader will update loader binary file - - @param[in] loader_addr loader in DRAM starting address - @param[in] loader_size loader code length (from loader header offset 0x24) - @return void -*/ -_THUMB2 static int bl_process_update_loader(unsigned int loader_addr, unsigned int loader_size) -{ - unsigned int reload_addr; - - // Check boot loader read from SD card - if(is_data_area_encrypted() == 0) { - -#if ((STORAGE_EXT_TYPE == STORAGE_EXT_ETH)|(STORAGE_EXT_TYPE == STORAGE_EXT_USB)) - //UINT32 uiOffset; - //uiOffset = *((UINT32 *)(loader_addr + 0x80)); - //if(uiOffset) {//Combo loader - // if(*(UINT32*)0xF00100F0 == 0x50210000) { - // debug_msg("combo loader 528\r\n"); - // bl_checkLoader(loader_addr+uiOffset, COMBINATION_LOADER_SIZE - uiOffset); //check 528 - // } else{ - // debug_msg("combo loader 52X\r\n"); - // bl_checkLoader(loader_addr, loader_size); //check 52x - // } - //}else - bl_checkLoader(loader_addr, loader_size); -#else -#if 0//(LOADER_TYPE == COMBINATION_528) - debug_msg("CB8\r\n"); - bl_checkLoader(loader_addr + loader_size, (COMBINATION_LOADER_SIZE - loader_size)); -#else //STAND_ALONE_LOADER or combination 52x loader - //debug_msg("STD\r\n"); - bl_checkLoader(loader_addr, loader_size); -#endif -#endif - } - debug_msg("update loader\r\n"); - - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } - - // Program loader -#if 0 -#if ((STORAGE_EXT_TYPE == STORAGE_EXT_ETH)|(STORAGE_EXT_TYPE == STORAGE_EXT_USB)) - UINT32 uiOffset; - uiOffset = *((UINT32 *)(loader_addr + 0x80)); - if(uiOffset) //Combo loader - loader_size = COMBINATION_LOADER_SIZE; - //If single loader , it already got -#else -#if (LOADER_TYPE == STAND_ALONE_LOADER_560) || (LOADER_TYPE == STAND_ALONE_LOADER_528) -#else //Combination loader - loader_size = COMBINATION_LOADER_SIZE; -#endif -#endif -#endif - if (int_strg_obj->flash_writeSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)loader_addr, NAND_RW_LOADER) < 0) { - bl_displayErrMsg(RWErrorMsg); - } - // Read back - reload_addr = loader_addr + loader_size; - if (int_strg_obj->flash_readSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)reload_addr, NAND_RW_LOADER) < 0) { - bl_displayErrMsg("rd fail\r\n"); - } - // Verify - if (memcmp((void *)loader_addr, (void *)reload_addr, loader_size) != 0) { - bl_displayErrMsg("verify fail\r\n"); - } - return 0; -} -#if UPDATE_EMU_CODE -_THUMB2 static int bl_process_update_emu_firmware(unsigned int emu_addr, unsigned int emu_size) -{ - unsigned int reload_addr; - - // Check boot loader read from SD card -// bl_checkFW(emu_addr, emu_size); - debug_msg("update emu firmware size"); - uart_putSystemUARTStr(Dec2HexStr(emu_size)); - uart_putSystemUARTStr("\r\n"); - - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } - - // Program firmware - if (int_strg_obj->flash_writeSectors(g_uiStartBlkUpdateFW, emu_size, (UINT8 *)emu_addr, NAND_RW_FIRMWARE) < 0) { - bl_displayErrMsg(RWErrorMsg); - } - // Read back - reload_addr = emu_addr + emu_size; - if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, emu_size, (UINT8 *)reload_addr, NAND_RW_FIRMWARE) < 0) { - bl_displayErrMsg("rd fail\r\n"); - } - // Verify - if (memcmp((void *)emu_addr, (void *)reload_addr, emu_size) != 0) { - bl_displayErrMsg("verify fail\r\n"); - } - return 0; -} -#endif - -_THUMB2 void bl_read_rtos_addr(UINT32 *pLoadAddr, UINT32 *pTargetAddr, UINT32 *pSize) -{ - *pLoadAddr = g_rtos_load_addr; - *pTargetAddr = g_rtos_target_addr; - *pSize = g_rtos_size; -} - -/** - main flow code - - If there is Calibration Firmware code store in NAND, running flow as follow - O's work flow - - @return fw base addr -*/ - -_THUMB2 UINT32 bl_mainFlow(void) -{ - UINT32 uiUpdateFileLen = 0; - UINT32 uiLoaderFunc = 0; - UINT32 uiLoaderSize = 32 * 1024; // pre-assume 32KB, actual size is parsed from loader - //Show Duty calibration log -#if (_LOADER_DUTY_CALIBRATION_ == ENABLE && _LOADER_DUTY_CALIBRATION_LOG_ == ENABLE) - UINT32 uiLoaderAddress; - UINT32 uiLogSramAddress; -#endif - -#if !(USB_WRITELOADER || UART_UPDATE) - unsigned int adjusted_addr = 0; - unsigned int adjusted_size = 0; -#endif - UINT32 uiFwBaseAddr = SDRAM_Start_FW; // FW base address - DRAM_PARTITION *p_dram_partition = NULL; - - // BaseOfStack is initialized at doRemapLZ.s - UINT32 uiheapBufferAddr = (UINT32)_loader_heap_base; -// UINT32 uiheapBufferAddr = BaseOfStack + 0x40000; // reserve 16KB for tmp buffer usage - UINT32 uiTmpBufferAddr = uiheapBufferAddr + FAT_HEAP_BUFFER_SIZE; - UINT32 uiUpdateBootloaderBufAddr = uiTmpBufferAddr + 0x4000; - UINT32 uiUpdateMainBinBufAddr = SDRAM_Start_FW; - - // UART initial sequence - //uart_openSystemUART(); - // rtc reset shutdown timer - // rtc_resetShutDownTimer(); - - - - -#if 0 - // adjust PAD driving (if required) - bl_adjustDriving(); - /* - - @b RTC_PWR_SW_STS: Power on source is PWR_SW - - @b RTC_PWR_VBAT_STS: Power on source is PWR_VBAT - - @b RTC_PWR_VBUS_STS: Power on source is PWR_VBUS - */ - uiPowerOnSrc = rtc_getPWRONSource(); - - if (uiPowerOnSrc & RTC_PWR_SW_STS) { - uart_putSystemUARTStr("\r\nSW PON\r\n"); - } else if (uiPowerOnSrc & RTC_PWR_VBAT_STS) { - uart_putSystemUARTStr("\r\nVBAT PON\r\n"); - } else if (uiPowerOnSrc & RTC_PWR_VBUS_STS) { - uart_putSystemUARTStr("\r\nVBUS PON\r\n"); - } else if (rtc_getIsAlarmPowerOn()) { - uart_putSystemUARTStr("\r\nPwrAlarm PON\r\n"); - } else { - uart_putSystemUARTStr("\r\nPOR PON\r\n"); - } -#endif - // Display Loader Version - debug_msg((char *)LOADER_START_STR); - UTL_setDrvTmpBufferAddress(uiTmpBufferAddr); - - -#if 0 // for now, reduce code size - if (rtc_chkS3boot()) { - UINT32 resume_addr; - - uart_putSystemUARTStr("main selfing..\r\n"); - resume_addr = bl_resume_cpu1((unsigned char *)_BOARD_IPC_ADDR_); - if (resume_addr == 0) { - // in codition for MODELEXT_BUILT_IN_ON - resume_addr = RESUME_ADDR; - } - return resume_addr; - } else { - - uart_putSystemUARTStr("main not selfing..\r\n"); - } -#endif - -#if 0 - // Sample to hook spi flash extending function - flash_installIdentifyCB(bl_spiIdentify); -#endif - prj_main(); - -#if !(USB_WRITELOADER) - set_usb_suspend(); -#endif - - if(utl_get_bootsrc() == BOOT_SOURCE_UART) - { -#if UART_UPDATE - debug_msg("Boot from UART ...\r\n"); - bl_uart();//never returned. -#else - bl_displayErrMsg("UART_UPDATE must enable on loader\r\n"); -#endif - } - - if(USB_WRITELOADER || utl_get_bootsrc() == BOOT_SOURCE_USB) - { -#if USB_WRITELOADER - debug_msg("Boot from USB ...\r\n"); - bl_usb(); //never returned. -#else - bl_displayErrMsg("USB_WRITELOADER must enable on loader\r\n"); -#endif - } - -#if !(USB_WRITELOADER || UART_UPDATE) - if (bl_load_rtos_from_uart(uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH, &adjusted_addr, &adjusted_size) == 0) { - //specail case, load small rtos from uart - uiUpdateMainBinBufAddr = adjusted_addr; - uiUpdateFileLen = adjusted_size; - uiLoaderFunc |= FUNC_RUN_CARD; - } else if ((int_strg_obj->flash_getBlockSize() == EMMC_BLOCK_SIZE) && gRecoveryTriggerCallBack && gRecoveryTriggerCallBack()) { - debug_msg("Recovery triggered not support currently.\r\n"); -#if 0 - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } else { - flash_mount_fs(0, BaseOfStack + 0x4000, FAT_HEAP_BUFFER_SIZE); - if (flash_mount_partition(g_uiPartitionID) == E_OK) { - if (flash_open_file(RECOVERY_FW_NAME) == TRUE) { - NVTPACK_MEM mem_in ; - flash_read_file((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); - mem_in.p_data = (void *)uiUpdateMainBinBufAddr; - mem_in.len = uiUpdateFileLen; - // all in one bin - if (bl_chk_valid_all_in_one(&mem_in) == 0) { - // Read all - uiUpdateFileLen = flash_read_file((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - uiLoaderFunc |= FUNC_UPDATE_FW; - g_is_recovery_triggered = TRUE; - } else { - debug_msg("Recovery should be all in one bin!\r\n"); - } - } else { - debug_msg("no recovery bin!\r\n"); - } - } else { - debug_msg("Partition error!\r\n"); - } - } -#endif - } else if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack()) && - ((gCardDetectCallBack == NULL) || gCardDetectCallBack())) { - if (card_open() == TRUE && fat_initFAT(uiheapBufferAddr, FAT_HEAP_BUFFER_SIZE) == TRUE) { -#if UPDATE_SIM_CODE - BOOL bWDTInit = UTL_canUpdateSecKey(); - if (bWDTInit && fat_open_rootfile(RUN_WRKEY_NAME) == TRUE) { - debug_msg("sim.bin exist\r\n"); // the others A or T are skipped. - // Read byte count specified in file directory entry - uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - fat_close_rootfile(); - debug_msg("\r\n"); // for line end RRRRRRR.... - uiLoaderFunc |= FUNC_RUN_WRBIN; - } else { // exclude others update if FUNC_RUN_WRBIN is existing. -#endif - // Update loader or not, loader is fixed to 16 KB - if (fat_open_rootfile(UPDATE_LOADER_NAME) == TRUE) { - // Read byte count specified in file directory entry - fat_read_rootfile((UINT8 *)uiUpdateBootloaderBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - fat_close_rootfile(); - debug_msg("\r\n"); // for line end RRRRRRR.... - uiLoaderFunc |= FUNC_UPDATE_LOADER; - uiLoaderSize = *((UINT32 *)(uiUpdateBootloaderBufAddr + 0x24)); - } - // "Update FW" or "Run FW" function - // Update FW has higher priority - if (fat_open_rootfile(UPDATE_FW_NAME) == TRUE) { - NVTPACK_MEM mem_in ; - fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); - mem_in.p_data = (void *)uiUpdateMainBinBufAddr; - mem_in.len = uiUpdateFileLen; - // all in one bin - if (bl_chk_valid_all_in_one(&mem_in) == 0) { - // Read all - uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - uiLoaderFunc |= FUNC_UPDATE_FW; - } else { - // only rtos - debug_msg("not all-in-one, force behavior as T bin.\r\n"); - adjusted_addr = 0; - adjusted_size = 0; - if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) == 0) { - uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log - uiUpdateFileLen = adjusted_size; - } else { - bl_displayErrMsg("invalid firmware"); - } -#if UPDATE_EMU_CODE - uiLoaderFunc |= FUNC_UPDATE_FW; -#else - uiLoaderFunc |= FUNC_RUN_CARD; -#endif - - } - fat_close_rootfile(); - debug_msg("\r\n"); // for line end RRRRRRR.... - } - // Run FW has lower priority - else if (fat_open_rootfile(RUN_FW_NAME) == TRUE) { - NVTPACK_MEM mem_in ; - uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); - mem_in.p_data = (void *)uiUpdateMainBinBufAddr; - mem_in.len = uiUpdateFileLen; - if (bl_chk_valid_all_in_one(&mem_in) == 0) { - // Read all - uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - } else { - // Read rtos - unsigned int adjusted_addr = 0; - unsigned int adjusted_size = 0; - if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) != 0) { - bl_displayErrMsg("invalid firmware"); - } else { - uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log - uiUpdateFileLen = adjusted_size; - } - uiLoaderFunc |= FUNC_RUN_CARD; - } - fat_close_rootfile(); - debug_msg("\r\n"); // for line end RRRRRRR.... - uiLoaderFunc |= FUNC_RUN_CARD; - } -#if UPDATE_SIM_CODE - } -#endif - card_close(); - } else { - debug_msg("card open fail\r\n"); -// while (1); - } - } else if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack()) && - ((gCardDetectCallBack != NULL) || (gCardDetectCallBack() == FALSE))) { - debug_msg("No card inserted\r\n"); - } -#endif - - if (uiLoaderFunc & FUNC_UPDATE_LOADER) { - bl_process_update_loader(uiUpdateBootloaderBufAddr, uiLoaderSize); - } - - // Run FW - UINT32 comp_addr = 0; - UINT32 comp_size = 0; - if (uiLoaderFunc & (FUNC_RUN_CARD | FUNC_UPDATE_FW)) { - debug_msg("RC\r\n"); - NVTPACK_MEM mem_in ; - int chk_valid_all_in_one; -#if (DRAM_RANGE_SCAN_EN == ENABLE) - // First word is code entry point address, once if entry address is 0xC000XXXX - // represent code is running on sram. - debug_msg("Check SRAM fw\r\n"); - if (bl_checkDramScanFW(uiUpdateMainBinBufAddr) == TRUE) { - - debug_msg("This fw is on SRAM\r\n"); - // Enable sram usage - SETREG32(0xF0900128, 0x00000002); - SETREG32(0xF0800128, 0x00000006); - SETREG32(0xF0020060, 0x00030002); - - debug_msg(Dec2HexStr(*((UINT32 *)SRAM_Start_FW))); - debug_msg("before jump\r\n"); -// while (b_debug_go == FALSE); - load_dram_scan(uiUpdateMainBinBufAddr, uiUpdateFileLen); - return *((UINT32 *)SRAM_Start_FW); - } -#endif - mem_in.p_data = (void *)uiUpdateMainBinBufAddr; - mem_in.len = uiUpdateFileLen; - chk_valid_all_in_one = bl_chk_valid_all_in_one(&mem_in); - if (chk_valid_all_in_one == 0) { - // all-in-one flow - // File len got from fat_read_rootfile() may exceed actual file size. - // In such condition, we should use info in NVTPACK_FW_HDR2 - if (((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize < uiUpdateFileLen) { - uiUpdateFileLen = ((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize; - mem_in.len = uiUpdateFileLen; - } -#if (REMOVED_FLASH == ENABLE) - bl_displayErrMsg("cannot process all-in-one fw"); -#else - uiFwBaseAddr = bl_process_all_in_one(uiUpdateMainBinBufAddr, uiUpdateFileLen, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); -#endif - } else { - // non-all-in-one flow - // check valid - if (uiLoaderFunc & FUNC_UPDATE_FW) { -#if UPDATE_EMU_CODE - bl_process_update_emu_firmware(uiUpdateMainBinBufAddr, uiUpdateFileLen); -#else - bl_displayErrMsg("cannot write non-all-in-one fw"); -#endif - } - uiFwBaseAddr = bl_process_rtos_only(uiUpdateMainBinBufAddr, mem_in.len, uiLoaderFunc, &comp_addr, &comp_size); - } - - // here uiFwBaseAddr is ready to use. - if (comp_addr == 0) { - HEADINFO *p_headinfo = (HEADINFO *)(uiFwBaseAddr + BIN_INFO_OFFSET_RTOS); - debug_msg("Nrml\r\n"); - if (chk_valid_all_in_one == 0) { - uiUpdateFileLen = p_headinfo->BinLength; - uiUpdateMainBinBufAddr = uiFwBaseAddr; - } else { - // uiUpdateFileLen is already set when file is loaded - } - } else { - debug_msg("Fcompress\r\n"); - //for speed up, u-boot only copy compressed rtos and loader needs to decode it - uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); - uiUpdateMainBinBufAddr = uiFwBaseAddr; - } - debug_msg_var("uiUpdateFileLen", uiUpdateFileLen); - //boot from flash or update fw is no need to check sanity because of ecc, turn on it just for debug - if (uiLoaderFunc & FUNC_RUN_CARD) { - bl_checkFW(uiUpdateMainBinBufAddr, uiUpdateFileLen); - } - if (chk_valid_all_in_one == 0) { - bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); - } else { - debug_msg_var("fw load addr", uiUpdateMainBinBufAddr); - bl_update_uItron_headInfo(uiUpdateMainBinBufAddr, p_dram_partition); - } - } else { //boot from flash -#if (REMOVED_FLASH == DISABLE) -#if UPDATE_EMU_CODE -// UINT32 uiNandBlkSize; - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } - debug_msg("RFlash\r\n"); - if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, g_uiNandBlkSize, (UINT8 *)SDRAM_Start_FW, NAND_RW_FIRMWARE) < 0) { - bl_displayErrMsg(RWErrorMsg); - } - - uiUpdateFileLen = *(volatile UINT32 *)(SDRAM_Start_FW + 0x168); - - if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW + 1, uiUpdateFileLen - g_uiNandBlkSize, (UINT8 *)(SDRAM_Start_FW + g_uiNandBlkSize), NAND_RW_FIRMWARE) < 0) { - bl_displayErrMsg(RWErrorMsg); - } - - uiFwBaseAddr = bl_process_rtos_only(SDRAM_Start_FW, uiUpdateFileLen, uiLoaderFunc, &comp_addr, &comp_size); - bl_checkFW(SDRAM_Start_FW, uiUpdateFileLen); - uiUpdateMainBinBufAddr = SDRAM_Start_FW; - if (comp_addr == 0) { - debug_msg("Nrml\r\n"); - } else { - debug_msg("Fcompress not support\r\n"); - } - -#else - uiFwBaseAddr = bl_process_flash_boot((UINT8 *)SDRAM_Start_FW, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); - if (comp_addr == 0) { - uiUpdateMainBinBufAddr = uiFwBaseAddr; - } else { - //for speed up, u-boot only copy compressed rtos and loader needs to decode it - uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); - uiUpdateMainBinBufAddr = uiFwBaseAddr; - } - // no need to bl_checkFW, because check sanity in flash_read - bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); -#endif -#endif - } - - if (p_dram_partition) { - bl_update_loader_bininfo((unsigned char *)p_dram_partition->fdt_addr, uiLoaderFunc, uiUpdateFileLen); - } - -#if UPDATE_EMU_CODE - debug_msg_var("emu fw len", uiUpdateFileLen); -#endif - g_rtos_load_addr = uiUpdateMainBinBufAddr; - g_rtos_target_addr = uiFwBaseAddr; - g_rtos_size = uiUpdateFileLen; - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - CPUInvalidateICacheAll(); - debug_msg_var("rtos start", uiFwBaseAddr); - return uiFwBaseAddr; - -} - -_THUMB2 void loader_setUpdateFwName(char *fileName) -{ - strncpy((char *)UPDATE_FW_NAME, fileName, sizeof(UPDATE_FW_NAME)); -} - -_THUMB2 void loader_setUpdateLdrName(char *fileName) -{ - strncpy((char *)UPDATE_LOADER_NAME, fileName, sizeof(UPDATE_LOADER_NAME)); -} - -_THUMB2 void loader_setRunFwName(char *fileName) -{ - strncpy((char *)RUN_FW_NAME, fileName, sizeof(RUN_FW_NAME)); -} - -_THUMB2 void loader_setRecoveryFwName(char *fileName) -{ - strncpy((char *)RECOVERY_FW_NAME, fileName, sizeof(RECOVERY_FW_NAME)); -} - -_THUMB2 void loader_setRecoveryPartitionID(UINT32 partition_id) -{ - g_uiPartitionID = partition_id; -} - -_THUMB2 void loader_setVersion(UINT32 version) -{ - g_uiVersion = version; -} - -_THUMB2 void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback) -{ - gSpecialKeyCallBack = callback; -} - -_THUMB2 void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback) -{ - gCardDetectCallBack = callback; -} - -_THUMB2 void loader_installRecoveryTriggerCB(LDR_RECOVERY_TRIGGER_CB callback) -{ - gRecoveryTriggerCallBack = callback; -} - -_THUMB2 void loader_installFastbootKeyCB(LDR_FASTBOOT_KEY_CB callback) -{ - gFastbootKeyCallBack = callback; -} - -_THUMB2 void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj) -{ - gStorageIntType = type; - int_strg_obj = strg_obj; -} diff --git a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c.jack b/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c.jack deleted file mode 100755 index 9cee3e1ea..000000000 --- a/loader/LibExt/LIBExt_src/Ctrl_Flow/bl_func.c.jack +++ /dev/null @@ -1,3221 +0,0 @@ -/* - Main control function - - This file is implement by user mode - - @file bl_func.c - - Copyright Novatek Microelectronics Corp. 2014. All rights reserved. -*/ - -#include "fuart.h" -#include "fat.h" -#include "rtc.h" -#include "timer.h" -#include "StorageDef.h" -#include "global.h" -#include "Clock.h" -#include "bl_func.h" -#include "Cache.h" -#include "string.h" -#include "lz.h" -#include "debug.h" -#include "CC.h" -#include "loader.h" -#include "nvtpack.h" -#include "dram_partition_info.h" -#include "emb_partition_info.h" -#include "modelext_parser.h" -#include "bin_info.h" -#include "shm_info.h" -#include "gic.h" -#include "libfdt.h" -#include -#include "bl_u2.h" -#include "crypto.h" -#include "nand.h" -#include "nor.h" - -//#if (LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) -//static uint32_t global_timer_freq = 3000000; //3MHz = 3000000 Hz -//#endif -PSTORAGE_OBJ int_strg_obj = NULL; - -#define FW_PART1_SIZE_OFFSET (CODE_SECTION_OFFSET + 0x04) //ref to CodeInfo.S on rtos (addr of _section_01_size) -//#define TEE_HEADER_SIZE 0x1C // refer to: optee_header_t - -#define _THUMB2 __attribute__((target("thumb2"))) - -#define bl_memcpy utl_memcpy -#define bl_memset utl_memset -#define ALIGN_FLOOR(value, base) ((value) & ~((base)-1)) -#define ALIGN_CEIL(value, base) ALIGN_FLOOR((value) + ((base)-1), base) -#define SIZE_PRELOAD 0x400 -#define SIZE_PRESERVE_USB 0x2000 - -#define HEADINFO_UBOOT(p_parti) ((HEADINFO *)(p_parti->uboot_addr + BIN_INFO_OFFSET_UBOOT)) -#define HEADINFO_TEEOS(p_parti) ((HEADINFO *)(p_parti->teeos_addr + BIN_INFO_OFFSET_TEEOS)) -#define IS_BIN_OVERLAP(addr1, size1, addr2, size2) (!(((addr1 + size1 - 1) < addr2) || (addr1 > (addr2 + size2 - 1)))) - -#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) -extern void set_usb_suspend(void); -#endif - -#if (_ROM_PUBLIC_API_ == 1) -#define ROM_LZMA_POSITION 0x7fd0 -UINT8 lzma_temp_buffer[65536]; -int (*rom_lzma_inflate)(UINT8 *in_ptr, UINT32 in_size, UINT8 *out_ptr, UINT32 out_size, UINT8 *p_tmp, UINT32 tmp_size); -#endif - -extern char _loader_exec_compres_start[]; -//extern char _load_nand_table_start_base[]; -extern char _load_LOADER_CONFIGRAM_FREQ_PARAM_end_base[]; -extern void core1_reset(void); - -// Function from Timer.c -//extern UINT32 timer_getLdrElapse(void); - -// Define in MakeConfig.txt -static UINT8 UPDATE_FW_NAME[] = {"FW98520A.BIN"}; -static UINT8 UPDATE_LOADER_NAME[] = {"LD98520A.BIN"}; -static UINT8 RUN_FW_NAME[] = {"FW98520T.BIN"}; -static UINT8 *LOADER_START_STR = {(UINT8 *)"\r\nLoader Start ..."}; -//#if !USB_WRITELOADER -#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) -//static UINT8 *RUN_WRKEY_NAME = {(UINT8 *)"WRKEY.BIN"}; -#if UPDATE_SIM_CODE -static UINT8 *RUN_WRKEY_NAME = {(UINT8 *)"SIM.BIN"}; -#endif -#endif -static UINT8 RECOVERY_FW_NAME[] = {"FW98520R.BIN"}; -static UINT32 g_uiPartitionID = 2; - -static UINT32 g_uiVersion = 0; - -// Error message -static char FWErrorMsg[] = "\r\nFW check fail\r\n"; -static char RWErrorMsg[] = "\r\nR/W error\r\n"; -static char LoaderErrorMsg[] = "\r\nLoader check fail\r\n"; - -UINT32 TopOfStack; -UINT32 BaseOfStack; - -extern char _loader_heap_base[]; - -static BOOL g_is_flash_open = FALSE; // indicate flash is open for updating non-fully all-in-one bin. - -static LDR_FASTBOOT_KEY_CB gFastbootKeyCallBack = NULL; -static LDR_SPECIAL_KEY_CB gSpecialKeyCallBack = NULL; -static LDR_CARD_DETECT_CB gCardDetectCallBack = NULL; -static STORAGEINT gStorageIntType = STORAGEINT_UNOKNOWN; - -static LDR_RECOVERY_TRIGGER_CB gRecoveryTriggerCallBack = NULL; -//#if (!USB_WRITELOADER) -//#if (STORAGE_EXT_TYPE != STORAGE_EXT_USB) -//static BOOL g_is_recovery_triggered = FALSE; // indicate recovery flow is triggered. -//#endif -_THUMB2 static int bl_is_smp(unsigned char *p_fdt); -static UINT32 g_uiStartBlkUpdateFW = StartNandBlkUpdateFW; -static UINT32 g_uiNandBlkSize = 0; -static UINT32 g_rtos_load_addr = 0; -static UINT32 g_rtos_target_addr = 0; -static UINT32 g_rtos_size = 0; - -#if (FDT_SUPPORT) -#define PATH_MEM_DRAM "/nvt_memory_cfg/dram" -#define PATH_MEM_LOADER "/nvt_memory_cfg/loader" -#define PATH_MEM_UBOOT "/nvt_memory_cfg/uboot" -#define PATH_MEM_FDT "/nvt_memory_cfg/fdt" -#define PATH_MEM_SHMEM "/nvt_memory_cfg/shmem" -#define PATH_MEM_RTOS "/nvt_memory_cfg/rtos" -#define PATH_MEM_NUTTX "/nvt_memory_cfg/nuttx" -#define PATH_MEM_TEEOS "/nvt_memory_cfg/teeos" -#define PATH_MEM_HDAL "/hdal-memory/media" -#define PATH_MEM_CORE2_ENTRY1 "/nvt_memory_cfg/core2entry1" -#define PATH_MEM_CORE2_ENTRY2 "/nvt_memory_cfg/core2entry2" -#define PATH_NVT_INFO "/nvt_info" -#define PATH_NVTPACK_INDEX "nvtpack/index" -#define PATH_PARTITION_LOADER "partition_loader" -#define PATH_PARTITION_FDT "partition_fdt" -#define PATH_PARTITION_UBOOT "partition_uboot" -#define PATH_PARTITION_NUTTX "partition_nuttx" -#define PATH_PARTITION_TEEOS "partition_teeos" -#define PATH_PARTITION_RTOS "partition_rtos" -#define PROPERTY_REG "reg" -#define PROPERTY_LABEL "label" -#define PROPERTY_PARTITION_NAME "partition_name" -#define PROPERTY_NVT_LINUX_SMP "NVT_LINUX_SMP" -static DRAM_PARTITION g_dram_partition = {0}; -static EMB_PARTITION g_emb_uboot = {0}; -static EMB_PARTITION g_emb_teeos = {0}; -static EMB_PARTITION g_emb_rtos = {0}; -#else // NO FDT_SUPPORT -// refer to met-tbl.dtsi /nvt_memory_cfg -static DRAM_PARTITION g_dram_partition = { - .dram_addr = 0x00000000, - .dram_size = 0x20000000, - .rev_addr = 0x00007E00, ///< shmem - .rev_size = 0x00000200, ///< shmem - .loader_addr = 0x01000000, - .loader_size = 0x00800000, - .fdt_addr = 0x01800000, - .fdt_size = 0x00040000, - .uboot_addr = 0x1E000000, - .uboot_size = 0x01FC0000, - .rtos_addr = 0x01840000, ///< optional, only for fast-boot, - .rtos_size = 0x00780000, ///< optional, only for fast-boot - .core2_entry1_addr = 0x00000000, ///< optional, only for dual core IC (fixed here, and must be) - .core2_entry1_size = 0x00004000, ///< optional, only for dual core IC - .core2_entry2_addr = 0x1FFC0000, ///< optional, only for dual core IC (address better in the bottom of dram to avoid memory space overlap) - .core2_entry2_size = 0x00040000, ///< optional, only for dual core IC -}; -// refer to storage-partition.dtsi -static EMB_PARTITION g_emb_uboot = { - .PartitionOffset = 0xC0000, - .PartitionSize = 0xA0000, -}; -static EMB_PARTITION g_emb_rtos = { ///< optional, only for fast-boot, - .PartitionOffset = 0x2B40000, - .PartitionSize = 0xA00000, -}; -static EMB_PARTITION g_emb_teeos = { ///< optional, only for optee, - .PartitionOffset = 0, - .PartitionSize = 0, -}; -//following just for processing all-in-one bin (nvtpack) -//refer to nvtpack.dtsi -#define NVTPACK_IDX_UBOOT 3 -#define NVTPACK_IDX_TEEOS -1 -#define NVTPACK_IDX_RTOS 10 -#endif - - - -#if (UART_UPDATE_ == ENABLE) -static char g_strLength[80]; // buffer to store length string -#endif - -//--------------------------------------------------------------------------- -// Static function -//--------------------------------------------------------------------------- -int bl_boot_uboot(unsigned char *p_fdt); - -/** - Display error message. - - Display error message. - CPU loop forever and LED is red. - - @param Msg: Message to display - @return void -*/ -_THUMB2 static void bl_displayErrMsg(char *Msg) -{ - // Display error message to UART - debug_msg(Msg); - // Loop forever - while (1) { - ; - } -} - - -/** - Invert endianess of input word - - - @param[in] a input word - - @return translated word -*/ -_THUMB2 static UINT32 invertEndian(UINT32 a) -{ - return __builtin_bswap32(a); -} - - -/** - Check FW code. - - Check FW code and file length. - The FW binary file must be post-proecessd by encrypt_bin.exe. - This function must sync to encrypt_bin.exe. - If FW checking is fail, the CPU will loop forever and LED is red. - - @param[in] uiAddress FW code in DRAM starting address - @param[in] uiFileLen FW code length - @return void -*/ -_THUMB2 static void bl_checkFW(UINT32 uiAddress, UINT32 uiFileLen) -{ - NVTPACK_MEM mem = {0}; - mem.p_data = (void *)uiAddress; - mem.len = uiFileLen; - if (nvtpack_calc_nvt_sum(&mem) != 0) { - bl_displayErrMsg(FWErrorMsg); - } -} - -/** - Check boot loader code. - - Check boot loader code. - - @return void -*/ -_THUMB2 static void bl_checkLoader(UINT32 uiAddr, UINT32 uiSize) -{ - UINT16 *puiValue, uiSum; - UINT32 i; - - puiValue = (UINT16 *)uiAddr; - uiSum = 0; - - for (i = 0; i < (uiSize >> 1); i++) { - uiSum += (*puiValue + i); - puiValue++; - } - - if ((*(UINT16 *)(uiAddr + LOADER_TAG_OFFSET) != LOADER_TAG_VALUE) || - (uiSum != 0)) { - bl_displayErrMsg(LoaderErrorMsg); - } -} -#if (SECURE_DECRYPT_UBOOT || SECURE_DECRYPT_OPTEE_OS) - - -_THUMB2 static void get_bininfo_size_offset(unsigned char* bininfo,unsigned int* size,unsigned int *offset) -{ - /****this headinfo is for encrypt header - BinInfo will set partition offset and size - BinInfo_1[0~3] public key offset - BinInfo_1[4~7] public key length - BinInfo_2[0~3] signature offset - BinInfo_2[4~7] signature length - BinInfo_3[0~3] encrypted offset - BinInfo_3[4~7] encrypted size - BinLength total bin size - Checksum total bin checksum - others parameters set 0 - */ - *size = bininfo[4] | bininfo[5]<<8 | bininfo[6] << 16 | bininfo[7] << 24; - *offset = bininfo[0] | bininfo[1] << 8 | bininfo[2] << 16 | bininfo[3] <<24; -} - - - - -_THUMB2 static int decrypt_aes_cbc(unsigned int input, unsigned int output, unsigned int len) -{ - - CRYPT_OP crypt_op_param; - if(len &0x0f) - { - debug_msg_var("enc size", len); - debug_err("not align 16\r\n"); - return -21; - } - if((input & 0x03) || (output & 0x03) || (len & 0x03) ){ //check word alignment - //debug_msg_var("input", input); - //debug_msg_var("output", output); - //debug_msg_var("len", len); - //debug_err("not word align\r\n"); - return -22; - } - crypt_op_param.op_mode = CRYPTO_CBC; - crypt_op_param.en_de_crypt = CRYPTO_DECRYPT; - crypt_op_param.src_addr = input; - crypt_op_param.dst_addr = output; - crypt_op_param.length = len; //Need align to 16bytes align - //debug_msg_var("src",(unsigned int)crypt_op_param.src_addr); - //debug_msg_var("dst",(unsigned int)crypt_op_param.dst_addr); - - #if 0 - debug_msg_var("input",input); - debug_msg_var("output",output); - debug_msg_var("len",len); - unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; - int i=0; - debug_msg_var("encryped buf addr",(unsigned int)tmp); - for(i=0;i<16;i++){ - debug_msg_var("encryped buf",(unsigned int)tmp[i]); - } - #endif - if(crypto_data_operation(EFUSE_OTP_1ST_KEY_SET_FIELD, crypt_op_param) != 0) - { - //debug_err("aes dec fail\r\n"); - return -23; - } - #if 0 - unsigned char *tmp = (unsigned char *) crypt_op_param.src_addr; - int i=0; - tmp = (unsigned char *) crypt_op_param.dst_addr; - debug_msg_var("decryped addr",(unsigned int)&tmp[0]); - for(i=0;i<16;i++){ - debug_msg_var("decryped buf",(unsigned int)tmp[i]); - } - - #endif - return 0; - -} -#if (SECURE_SIGNATURE_BY_AES == 0) -_THUMB2 static void data_reverse(unsigned char* input_data, unsigned int size) -{ - unsigned int i=0; - unsigned char tmp=0; - for(i=0;i< (size/2);i++) - { - tmp = input_data[size - 1 - i]; - input_data[size - 1 - i] = input_data[i]; - input_data[i] = tmp; - } - -} -#endif -_THUMB2 static int do_decrypt_aes(unsigned int input_data, unsigned int output_data, unsigned int* output_size,unsigned int partition_size) -{ - - unsigned int encrypt_offset =0; - unsigned int encrypt_size =0; - unsigned int data_size = 0; - HEADINFO *p_headinfo = (HEADINFO *)input_data; - int er=0; - get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_3, &encrypt_size, &encrypt_offset); - data_size = p_headinfo->BinLength - encrypt_offset; -#if 1 //for signature check - unsigned int signature_offset =0; - unsigned int signature_size = 0; - UINT32 hash_buf[8]; - unsigned int sha256_align_size =0; - UINT32 * signature_buff = NULL; - get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_2, &signature_size, &signature_offset); - #if (SECURE_SIGNATURE_BY_AES == 0) - unsigned int key_offset =0; - unsigned int key_size =0; - unsigned int n_size=0; - unsigned int e_size=0; - UINT32 sign_rsa_output[64]; - UINT32 *key_n = NULL; - UINT32 *key_e = NULL; - UINT32 *signature_addr = NULL; - get_bininfo_size_offset((unsigned char *)p_headinfo->BinInfo_1, &key_size, &key_offset); - n_size = signature_size;// if rsa 2048 , signature_size should be 256 bytes - e_size = key_size - n_size; - key_n = (UINT32 *)(input_data + key_offset); - // now only support rsa 2048 - key_e = (UINT32 *)(input_data + key_offset + signature_size); // signature_size should be 256 bytes, n key should be 256 - data_reverse((unsigned char *)(key_n),n_size); - data_reverse((unsigned char *)(key_e),e_size); - - er = rsa_keycheck(key_n, 1);// check rsa n key in efuse 1 and 2 field, 0 field for aes key - if(er == 0) - { - debug_err("key fail\r\n"); - return -20; - } - signature_addr = (UINT32 *)(input_data + signature_offset); - data_reverse((unsigned char *)signature_addr, signature_size); - - //decrypt signature - rsa_decrypt(signature_addr, signature_size, key_n, n_size, key_e, e_size,sign_rsa_output); - - data_reverse((unsigned char *)sign_rsa_output, signature_size); - - //remove pending data 0, the last 32 bytes will be signature data - signature_buff = (UINT32 *)&sign_rsa_output[(sizeof(sign_rsa_output)/4 ) - (32/4 )];// offset need devided by 4, because of UINT32 type - #else - //UINT32 sign_aes_output[8]; - - er = decrypt_aes_cbc((UINT32 )(input_data + signature_offset), output_data,signature_size); - if(er != 0) - { - debug_err("decrypt_aes_cbc fail\r\n"); - return -20; - } - signature_buff =(UINT32 *)output_data; - - #endif - //hash encrypt data - - if((data_size & 0x3f) != 0) - { - // hardware sha256 need align 64, need set pending 0 - sha256_align_size = ((data_size/0x40) + 1)*0x40; - bl_memset((unsigned char *)(input_data + encrypt_offset + data_size),0, sha256_align_size - data_size); - } - else - { - sha256_align_size = data_size; - } - - shahw((unsigned char *)(input_data + encrypt_offset), sha256_align_size, hash_buf); - - - //compare signature and current hash - if(memcmp((void *)hash_buf, (void *)signature_buff, sizeof(hash_buf)) != 0) - { - debug_err("sig fail\r\n"); - return -20; - } -#endif - - //decrypt data - //dma addr should 4 alignment, input_data address is 4 alignment - if((input_data + encrypt_offset) & 0x03) - { - utl_memcpy((void *)input_data,(unsigned char*)(input_data + encrypt_offset), data_size); - er = decrypt_aes_cbc(input_data, output_data, encrypt_size); - } - else - { - er = decrypt_aes_cbc(input_data + encrypt_offset, output_data, encrypt_size); - } - if(er != 0) - { - debug_err("aes fail\r\n"); - return er; - } - - *output_size = data_size; - - //add plaintext data to output buf--> aes should 16 alignment, if data not alignment, the last bytes we will not encrypt data - int plaintext_size = data_size - encrypt_size; - unsigned char *p_output = (unsigned char *)output_data; - if( plaintext_size > 0) - { - utl_memcpy(&p_output[encrypt_size], (unsigned char*)(input_data + encrypt_offset+ encrypt_size),plaintext_size); - } - return 0; - -} -#endif - -//#NT#2013/04/25#Steven Wang -begin -//#NT#Show Duty calibration log -#if (_LOADER_DUTY_CALIBRATION_ == ENABLE && _LOADER_DUTY_CALIBRATION_LOG_ == ENABLE) -void BL_showROMLog(UINT32 buffer) -{ - UINT32 value; - UINT32 index; - UINT32 P_duty; - UINT32 N_duty; - UINT32 diff; - - index = 0; - diff = 0; - P_duty = 0; - N_duty = 0; - uart_putSystemUARTStr("\r\n"); - while (1) { - value = INREG32(buffer + index); - - if ((value & 0xF0000000) == 0xF0000000) { - value &= ~(0x40000000); - uart_putSystemUARTStr(Dec2HexStr(value)); - uart_putSystemUARTStr(" = "); - } - - else if ((value & 0xF0000000) == 0x50000000) { - uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); - uart_putSystemUARTStr("\r\n"); - } - - else if ((value & 0xF0000000) == 0x20000000) { -// uart_putSystemUARTStr("P_duty = "); - P_duty = value & 0xFFFFFFF; - //uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); - uart_putSystemUARTStr(Dec2HexStr(P_duty)); - uart_putSystemUARTStr("\r\n"); - } - - else if ((value & 0xF0000000) == 0x30000000) { -// uart_putSystemUARTStr("N_duty = "); - N_duty = value & 0xFFFFFFF; - //uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); - uart_putSystemUARTStr(Dec2HexStr(N_duty)); - uart_putSystemUARTStr("\r\n"); - if (P_duty > N_duty) { - if (diff == 2) { - uart_putSystemUARTStr("============\r\n"); - P_duty = 0; - N_duty = 0; - diff = 0; -// diff = 3; - } else { - diff = 1; - } - } else { - if (diff == 1) { - uart_putSystemUARTStr("============\r\n"); - P_duty = 0; - N_duty = 0; - diff = 0; -// diff = 3; - } else { - diff = 2; - } - } - } else if ((value & 0xF0000000) == 0x60000000) { - uart_putSystemUARTStr("N+P = "); - uart_putSystemUARTStr(Dec2HexStr(value & 0xFFFFFFF)); - uart_putSystemUARTStr("\r\n"); - } else if ((value & 0xF0000000) == 0x70000000) { - if ((value & 0xFFFFFFF) == 0x0654321) { - break; - } - } else { - uart_putSystemUARTStr("Unknow \r\n"); - } - index += 4; - } - uart_putSystemUARTStr("\r\n[0xC0001000] = 0x"); - uart_putSystemUARTStr(Dec2HexStr(INREG32(0xC0001000))); - uart_putSystemUARTStr(" [0xC000101C] = 0x"); - uart_putSystemUARTStr(Dec2HexStr(INREG32(0xC000101C))); - uart_putSystemUARTStr("\r\n"); -} -#endif -//#NT#2013/04/25#Steven Wang -end - - -#if (DRAM_RANGE_SCAN_EN == ENABLE) -/** - Check Sram code. - - Check is dram scan code or not - - @param[in] uiAddress Scan FW code in DRAM starting address - @return void -*/ -static BOOL bl_checkDramScanFW(UINT32 uiAddress) -{ - if ((*(UINT32 *)uiAddress & SRAM_TAG) == SRAM_TAG) { - return TRUE; - } else { - return FALSE; - } -} -#endif - -#if 0 -static BOOL bl_spiIdentify(UINT32 uiMfgID, UINT32 uiTypeID, UINT32 uiCapacityID, PSPI_IDENTIFY pIdentify) -{ - // Sample to support SST25VF032 - if ((uiMfgID == 0xBF) && - (uiCapacityID == 0x4A)) { - pIdentify->bDualRead = FALSE; - pIdentify->bSupportAAI = TRUE; - pIdentify->bSupportEWSR = TRUE; - pIdentify->uiFlashSize = 4 * 1024 * 1024; - return TRUE; - } - - return FALSE; -} -#endif - -/* - Update multi-binary image - - - @param[in] uiFwBuf buffer store fw read from card - - @return - -@ b TRUE: success - -@ b FALSE: fail -*/ - -#if !REMOVED_FLASH -#if 0 -static void bl_interrupt_init(void) -{ - debug_msg("arm_gic_distif_setup\r\n"); - arm_gic_distif_setup(); - debug_msg("arm_gic_cpuif_setup\r\n"); - arm_gic_cpuif_setup(); - - // - //debug_dump_addr(0xF1500000+0x1000,0x500); - //debug_dump_addr(0xF1500000+0x2000,0x100); -} -#endif - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) -#define OUTW(addr,value) (*(UINT32 volatile *)(addr) = (UINT32)(value)) -#define INW(addr) (*(UINT32 volatile *)(addr)) - - -static void bl_cpu_timer_init(UINT32 value) -{ - UINT32 dwVal; - OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_LOAD_OFFSET, value); - - dwVal = INW(configARM_TIMER_BASEADDR + ARM_TIMER_CONTROL_OFFSET); - /* Enable Auto reload mode. */ - dwVal |= ARM_TIMER_CONTROL_AUTO_RELOAD_MASK; - /* Clear prescaler control bits */ - dwVal &= ~ARM_TIMER_CONTROL_PRESCALER_MASK; - /* Set prescaler value */ - dwVal |= ((CYGHWR_HAL_RTC_PRESCALER - 1) << ARM_TIMER_CONTROL_PRESCALER_SHIFT); - /* Enable the decrementer */ - //dwVal |= ARM_TIMER_CONTROL_ENABLE_MASK; - /* Enable the interrupt */ - dwVal |= ARM_TIMER_CONTROL_IRQ_ENABLE_MASK; - - OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_CONTROL_OFFSET, dwVal); - - OUTW(configARM_TIMER_BASEADDR + ARM_TIMER_ISR_OFFSET, - ARM_TIMER_ISR_EVENT_FLAG_MASK); - -} -#endif -#endif -_THUMB2 int bl_flash_open(void) -{ - int er; - //UINT32 uiStorageVersion = (UINT32)&_load_nand_table_start_base; - - if (g_is_flash_open) { - return 0; - } - //========================================================================== - //= User define SPI-NAND id table sample code = - //= You can remove // to use it = - //========================================================================== - //int_strg_obj->flash_setConfig(FLASH_CFG_ID_SPI_IDENTIFY_CB, (UINT32)nand_identify); - - //========================================================================== - //= User define SPI-NOR id table sample code = - //= You can remove // to use it = - //========================================================================== - //int_strg_obj->flash_installIdentifyCB(nor_identify); - - er = int_strg_obj->flash_open(); - if (er < 0) { - debug_err("flash open fail\r\n"); - return -1; - } - - //OUTREG32(NAND_TABLE_VERSION_ADDR, INREG32(uiStorageVersion)); - - //if (er == E_OK) { - // OUTREG32(NAND_TABLE_FLAG_ADDR, 0x46495053); //'S''P''I''F' - //} else { // E_OK_TABLE_FOUND(1) or E_OK_TABLE_NOT_FOUND(2) - // OUTREG32(NAND_TABLE_FLAG_ADDR, er); - //} - g_uiNandBlkSize = int_strg_obj->flash_getBlockSize(); - if (g_uiNandBlkSize == 0x10000) { - debug_msg("SPI NOR\r\n"); - g_uiStartBlkUpdateFW = 1; - } else if (g_uiNandBlkSize == EMMC_BLOCK_SIZE) { - debug_msg("EMMC\r\n"); - g_uiStartBlkUpdateFW = FDT_OFFSET / EMMC_BLOCK_SIZE; - } else { - g_uiStartBlkUpdateFW = StartNandBlkUpdateFW; - } - - g_is_flash_open = TRUE; - return 0; -} - -#if 0 //[-Werror=unused-function] -static int bl_flash_close(void) -{ - if (!g_is_flash_open) { - return 0; - } - - flash_close(); - g_is_flash_open = FALSE; - return 0; -} -#endif - -#if (FDT_SUPPORT) -_THUMB2 static const void *bl_get_fdt_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) -{ - int nodeoffset; /* next node offset from libfdt */ - const void *nodep; /* property node pointer */ - - nodeoffset = fdt_path_offset(p_dtb, p_path); - if (nodeoffset < 0) { - return NULL; - } - nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); - if (len == 0) { - return NULL; - } - return nodep; -} - -_THUMB2 static const void *bl_get_fdt_nvt_memory_cfg_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) -{ - static int nodeoffset_nvt_memory_cfg = -FDT_ERR_NOTFOUND;; /* next node offset from libfdt */ - - int nodeoffset; - const void *nodep; /* property node pointer */ - - if (strncmp(p_path, "/nvt_memory_cfg/", 3) != 0) { - debug_err("path prefix must be /nvt_memory_cfg/\r\n"); - return NULL; - } - - if (nodeoffset_nvt_memory_cfg == -FDT_ERR_NOTFOUND) { - nodeoffset_nvt_memory_cfg = fdt_path_offset(p_dtb, "/nvt_memory_cfg"); - } - - nodeoffset = fdt_subnode_offset(p_dtb, nodeoffset_nvt_memory_cfg, &p_path[16]); - if (nodeoffset < 0) { - return NULL; - } - nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); - if (len == 0) { - return NULL; - } - return nodep; -} -#endif - - -_THUMB2 static unsigned char *bl_get_fdt_cfg(const void *p_dtb, MODELEXT_TYPE type) -{ -#if (FDT_SUPPORT) - int len; - const int *nodep; - - UINT8 *p_rt = NULL; - - switch (type) { - case MODELEXT_TYPE_DRAM_PARTITION: - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_DRAM, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get dram fail\r\n"); - return NULL; - } - g_dram_partition.dram_addr = be32_to_cpu(nodep[0]); - g_dram_partition.dram_size = be32_to_cpu(nodep[1]); - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_LOADER, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get loader fail\r\n"); - return NULL; - } - g_dram_partition.loader_addr = be32_to_cpu(nodep[0]); - g_dram_partition.loader_size = be32_to_cpu(nodep[1]); - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_UBOOT, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get uboot fail\r\n"); - return NULL; - } - g_dram_partition.uboot_addr = be32_to_cpu(nodep[0]); - g_dram_partition.uboot_size = be32_to_cpu(nodep[1]); - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_FDT, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get fdt fail\r\n"); - return NULL; - } - g_dram_partition.fdt_addr = be32_to_cpu(nodep[0]); - g_dram_partition.fdt_size = be32_to_cpu(nodep[1]); - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_RTOS, PROPERTY_REG, &len); - if (nodep != NULL) { - g_dram_partition.rtos_addr = be32_to_cpu(nodep[0]); - g_dram_partition.rtos_size = be32_to_cpu(nodep[1]); - } - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_NUTTX, PROPERTY_REG, &len); - if (nodep != NULL) { - g_dram_partition.nuttx_addr = be32_to_cpu(nodep[0]); - g_dram_partition.nuttx_size = be32_to_cpu(nodep[1]); - } - - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_TEEOS, PROPERTY_REG, &len); - if (nodep != NULL) { - g_dram_partition.teeos_addr = be32_to_cpu(nodep[0]); - g_dram_partition.teeos_size = be32_to_cpu(nodep[1]); - } - - p_rt = (UINT8 *)&g_dram_partition; - break; - - case MODELEXT_TYPE_BIN_INFO: - nodep = (const int *)bl_get_fdt_nvt_memory_cfg_property(p_dtb, PATH_MEM_SHMEM, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("dtb get shmem fail\r\n"); - return NULL; - } - - if (sizeof(SHMINFO) > be32_to_cpu(nodep[1])) { - debug_err("shmem size mismatch\r\n"); - return NULL; - } - - p_rt = (UINT8 *)be32_to_cpu(nodep[0]); - break; - - default: - debug_err_var("not handle type\r\n", type); - return NULL; - } - return p_rt; -#else // NO FDT_SUPPORT - switch (type) { - case MODELEXT_TYPE_DRAM_PARTITION: - return (UINT8 *)&g_dram_partition; - case MODELEXT_TYPE_BIN_INFO: - return (UINT8 *)g_dram_partition.rev_addr; - default: - return NULL; - } -#endif -} - -_THUMB2 int bl_chk_valid_all_in_one(NVTPACK_MEM *p_mem_all_in_one) -{ - NVTPACK_ER er; - NVTPACK_VER ver; - - er = nvtpack_getver(p_mem_all_in_one, &ver); - - if (er != NVTPACK_ER_SUCCESS) { - return -1; - } - - if (ver == NVTPACK_VER_16072017) { - return 0; - } - - return -1; -} - - -#if !REMOVED_FLASH -_THUMB2 int bl_chk_fdt(unsigned int addr, unsigned int size) -{ - DRAM_PARTITION *p_dram_partition = NULL; - - if (fdt_check_full((void *)addr, size) != 0) { - debug_err("invalid dtb\r\n"); - return -1; - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)addr, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("invalid dram_partition\r\n"); - return -1; - } - - // check tmp memory (file load) cannot overlap with uboot and teeos - // we allow to overlap with linux, root-fs because uboot will reload bin file later - debug_msg_var("tmp_addr", SDRAM_Start_FW); - -// if ((addr < p_dram_partition->uboot_addr && addr + size > p_dram_partition->uboot_addr) || -// (addr > p_dram_partition->uboot_addr && addr + size < p_dram_partition->uboot_addr + p_dram_partition->uboot_size)) { - if (IS_BIN_OVERLAP(addr, size, p_dram_partition->uboot_addr, p_dram_partition->uboot_size)) { - debug_err_var("a", addr); - debug_err_var("s", size); - debug_err("uboot olp\r\n"); - return -1; - } -#if 1 - //if ((addr < p_dram_partition->teeos_addr && addr + size > p_dram_partition->teeos_addr) || - // (addr > p_dram_partition->teeos_addr && addr + size < p_dram_partition->teeos_addr + p_dram_partition->teeos_size)) { - if (p_dram_partition->teeos_size) { - if (IS_BIN_OVERLAP(addr, size, p_dram_partition->teeos_addr, p_dram_partition->teeos_size)) { - debug_err_var("a", addr); - debug_err_var("s", size); - debug_err("teeos olp\r\n"); - return -1; - } - } -#endif - // check if memory size matched real size - UINT32 ld_dram1_size = dma_get_dram_capacity(DMA_ID_1); - if (p_dram_partition->dram_size > ld_dram1_size) { - debug_err_var("fw_d1_s", p_dram_partition->dram_size); - debug_err_var("ld_d1_s", ld_dram1_size); - debug_err("d1 s not matched.\r\n"); - return -1; - } - return 0; -} -#endif - -#if !REMOVED_FLASH -_THUMB2 int bl_chk_uboot(unsigned int addr, unsigned int size) -{ -#if (_FPGA_EMULATION_ == 0) - NVTPACK_MEM mem = {0}; - mem.p_data = (void *)addr; - mem.len = size; - if (nvtpack_calc_nvt_sum(&mem) != 0) { - debug_err("uboot check sum fail"); - return -1; - } -#endif - return 0; -} - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) -static void bl_core2_reset(void) -{ - UINT32 core_reg; - - debug_msg("core2_reset\r\n"); - - core_reg = *(volatile UINT32 *)0xF0E400F0; - core_reg &= ~(1<<3); - core_reg &= ~(1<<11); - *(volatile UINT32 *)0xF0E400F0 = core_reg; - core_reg |= (1<<2)|(1<<10) | (1<<21); - core_reg |= (1<<17); - *(volatile UINT32 *)0xF0E400F0 = core_reg; -} - -static void bl_core2_prepare(DRAM_PARTITION *p_dram_partition, unsigned int last_addr) -{ - extern char _load_core2_jump_program_start_base[]; - extern char _load_core2_jump_program_end_base[]; - extern char _load_core2_entry_program_start_base[]; - extern char _load_core2_entry_program_end_base[]; - UINT32 code2JumpCodelen, code2EntryCodelen; - - //check core2_entry1 must at addr 0 - if (p_dram_partition->core2_entry1_addr != CORE2_JUMP_ADDR) { - bl_displayErrMsg("core2entry1 != 0"); - } - - // copy core2 jump code to dram 0x0 - code2JumpCodelen = _load_core2_jump_program_end_base - _load_core2_jump_program_start_base; - utl_memcpy((void *)p_dram_partition->core2_entry1_addr, _load_core2_jump_program_start_base, code2JumpCodelen); -// CPUflushWriteCache(p_dram_partition->core2_entry1_addr, code2JumpCodelen); - - debug_msg_var("core2_jump_program", (int)_load_core2_jump_program_start_base); - debug_msg_var("code2JumpCodelen", (int)code2JumpCodelen); - debug_msg_var("core2_entry2_addr", (int)p_dram_partition->core2_entry2_addr); - - // copy core2 entry code to dram specified by fdt - *(volatile UINT32 *)(NVT_CORE2_START) = p_dram_partition->core2_entry2_addr; - code2EntryCodelen = _load_core2_entry_program_end_base - _load_core2_entry_program_start_base; - utl_memcpy((void *)p_dram_partition->core2_entry2_addr, _load_core2_entry_program_start_base, code2EntryCodelen); -// CPUflushWriteCache(p_dram_partition->core2_entry2_addr, code2EntryCodelen); - - debug_msg_var("core2_entry_program", (int)_load_core2_entry_program_start_base); - debug_msg_var("code2EntryCodelen", (int)code2EntryCodelen); - - *(volatile UINT32 *)0xF07F8000 = last_addr; - - debug_msg_var("0xF07F8000=", (int)*(volatile UINT32 *)0xF07F8000); -} - -static int bl_smp_start(unsigned char *p_modelext, UINT32 uboot_entry) -{ - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_modelext, MODELEXT_TYPE_BIN_INFO); - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_modelext, MODELEXT_TYPE_DRAM_PARTITION); - if (p_bininfo == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - debug_msg_var("fdt", (UINT32)p_modelext); - debug_msg_var("shm", (UINT32)p_bininfo); - - p_bininfo->boot.fdt_addr = (UINT32)p_modelext; - debug_msg_var("p_bininfo->boot.fdt_addr", p_bininfo->boot.fdt_addr); - utl_memset(p_bininfo->boot.LdInfo_1, 0, sizeof(p_bininfo->boot.LdInfo_1)); - utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); - // clear cc_core1_addr, cc_core2_addr -#if USB_WRITELOADER - if(utl_get_bootsrc() == BOOT_SOURCE_UART) { - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_UART; - } else if(USB_WRITELOADER || utl_get_bootsrc() == BOOT_SOURCE_USB) { - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_USB; - } else { - p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; - } -#else -// if (card_get_type() == EXT_STORAGE_TYPE_ETH) -// p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; -// else if (g_is_recovery_triggered) -// p_bininfo->comm.Resv[0] = BOOT_REASON_RECOVERY_SYS; -// else -#if (STORAGE_EXT_TYPE == STORAGE_EXT_ETH) - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; -#else - p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; -#endif -#endif - p_bininfo->comm.Resv[1] = 0; // COMM_CORE1_START - p_bininfo->comm.Resv[2] = 0; // COMM_CORE2_START - p_bininfo->comm.Resv[3] = 0; // COMM_UITRON_COMP_ADDR - p_bininfo->comm.Resv[4] = 0; // COMM_UITRON_COMP_LEN - - debug_msg("smp(no tee)\r\n"); - - bl_core2_prepare(p_dram_partition, 0); - -//#if USB_WRITELOADER -#if 0 - USBStateMachine(); - uart_putSystemUARTStr("USB update Done\n\r"); - timer_delay(1000000); - USBOTGReset(); -#endif - - - - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - CPUInvalidateICacheAll(); - - //reset core2 - bl_core2_reset(); - - { - typedef void (*BRANCH_CB)(void); - BRANCH_CB p_func = (BRANCH_CB)uboot_entry; - debug_msg_var("jump", uboot_entry); - p_func(); - } - - return 0; -} -#endif -_THUMB2 static int bl_entry_boot(unsigned char *p_fdt, UINT32 uboot_entry) -{ - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - - debug_msg_var("fdt", (UINT32)p_fdt); - debug_msg_var("shm", (UINT32)p_bininfo); - - p_bininfo->boot.fdt_addr = (UINT32)p_fdt; - utl_memset(p_bininfo->boot.LdInfo_1, 0, sizeof(p_bininfo->boot.LdInfo_1)); - utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); - // clear cc_core1_addr, cc_core2_addr -#if USB_WRITELOADER - CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); - if(utl_get_bootsrc() == BOOT_SOURCE_USB) { - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_USB; - } else { - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_UART; - } -#else - if (card_get_type() == EXT_STORAGE_TYPE_ETH) - p_bininfo->comm.Resv[0] = BOOT_REASON_FROM_ETH; - // else if (g_is_recovery_triggered) - // p_bininfo->comm.Resv[0] = BOOT_REASON_RECOVERY_SYS; - else - p_bininfo->comm.Resv[0] = BOOT_REASON_NORMAL; -#endif - p_bininfo->comm.Resv[1] = 0; // COMM_CORE1_START - p_bininfo->comm.Resv[2] = 0; // COMM_CORE2_START - p_bininfo->comm.Resv[3] = 0; // COMM_UITRON_COMP_ADDR - p_bininfo->comm.Resv[4] = 0; // COMM_UITRON_COMP_LEN - - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - CPUInvalidateICacheAll(); - - { - typedef void (*BRANCH_CB)(void); - BRANCH_CB p_func = (BRANCH_CB)uboot_entry; - debug_msg_var("jump", uboot_entry); - p_func(); - } - - return 0; -} - -_THUMB2 int bl_copy_fdt_to_fdt_addr(unsigned char *p_fdt /*IN*/, unsigned char **pp_fdt /*OUT*/) -{ - DRAM_PARTITION *p_dram_partition; - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("bl_copy_fdt_to_fdt_addr failed.\r\n"); - return -1; - } - - // load fdt to fdt buffer - utl_memcpy((void *)p_dram_partition->fdt_addr, p_fdt, fdt_totalsize(p_fdt)); - *pp_fdt = (unsigned char *)p_dram_partition->fdt_addr; - - //reset shminfo - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - bl_memset(p_bininfo, 0, sizeof(SHMINFO)); - return 0; -} - -_THUMB2 static int bl_load_fdt_from_all_in_one(unsigned char *p_all_in_one, unsigned int all_in_one_size, unsigned char **pp_fdt /*OUT*/) -{ - NVTPACK_ER er; - NVTPACK_MEM emb_fdt; - NVTPACK_VERIFY_OUTPUT np_verify = {0}; - NVTPACK_GET_PARTITION_INPUT np_get_input; - NVTPACK_MEM mem_in = {(void *)p_all_in_one, (unsigned int)all_in_one_size}; - - if (nvtpack_verify(&mem_in, &np_verify) != NVTPACK_ER_SUCCESS) { - debug_err("packbin verify failed.\r\n"); - return -1; - } - - np_get_input.id = 1; // fdt must always put in partition[1] - np_get_input.mem = mem_in; - er = nvtpack_get_partition(&np_get_input, &emb_fdt); - - if (er == NVTPACK_ER_NOT_FOUND) { - return -2; - } else if (er == NVTPACK_ER_SUCCESS) { - debug_msg_var("fdt addr", (int)emb_fdt.p_data); - debug_msg_var("fdt size", (int)emb_fdt.len); - if (bl_chk_fdt((unsigned int)emb_fdt.p_data, emb_fdt.len) == 0) { - return bl_copy_fdt_to_fdt_addr(emb_fdt.p_data, pp_fdt); - } - } - return -1; -} - -_THUMB2 static unsigned int bl_load_rtos_from_all_in_one(unsigned char *p_all_in_one, unsigned int all_in_one_size, unsigned char **pp_fdt /*OUT*/) -{ - UINT32 uItron_fw_addr= 0; - NVTPACK_ER er; - NVTPACK_MEM emb_fdt; - NVTPACK_VERIFY_OUTPUT np_verify = {0}; - NVTPACK_GET_PARTITION_INPUT np_get_input; - NVTPACK_MEM mem_in = {(void *)p_all_in_one, (unsigned int)all_in_one_size}; - HEADINFO *p_headinfo; - - if (nvtpack_verify(&mem_in, &np_verify) != NVTPACK_ER_SUCCESS) { - debug_err("packbin verify failed.\r\n"); - return 0; - } - - np_get_input.id = 5; // rtos must always put in partition[5] for now - np_get_input.mem = mem_in; - er = nvtpack_get_partition(&np_get_input, &emb_fdt);//&np_get_input, &emb_fdt); - - if (er == NVTPACK_ER_NOT_FOUND) { - return 0; - } else if (er == NVTPACK_ER_SUCCESS) { - debug_msg("get rtos partition ok\r\n"); - - p_headinfo = (HEADINFO *)(emb_fdt.p_data + BIN_INFO_OFFSET_RTOS); - uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - - utl_memcpy((void *)uItron_fw_addr, emb_fdt.p_data, emb_fdt.len); - CPUflushWriteCache(uItron_fw_addr, emb_fdt.len); - } - debug_msg_var("uItron_fw_addr=", uItron_fw_addr); - return uItron_fw_addr; -} - -_THUMB2 static int bl_load_fdt_from_flash(unsigned char *p_tmp, unsigned int tmp_size, unsigned char **pp_fdt /*OUT*/) -{ - - // read first block to get dtb size - int blk_size = (int)int_strg_obj->flash_getBlockSize(); - int er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, blk_size, p_tmp, NAND_RW_FIRMWARE); - if (er < 0) { - debug_err("bl_load_fdt_from_flash"); - return -1; - } - - int total_size = ALIGN_CEIL(fdt_totalsize(p_tmp), blk_size); - if ((int)tmp_size < total_size) { - debug_err_var("tmp_size too small, require:", fdt_totalsize(p_tmp)); - return -1; - } - - total_size -= blk_size; - if (total_size > 0) { - // read remain to get uboot starting addr on dram and offset in flash - er = int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW+1, total_size, p_tmp+blk_size, NAND_RW_FIRMWARE); - if (er < 0) { - debug_err("bl_load_fdt_from_flash"); - return -1; - } - } - - if (bl_chk_fdt((unsigned int)p_tmp, fdt_totalsize(p_tmp)) == 0) { - return bl_copy_fdt_to_fdt_addr(p_tmp, pp_fdt); - } - - return -1; -} - -#if (FDT_SUPPORT) -_THUMB2 static int bl_get_partition_fdt_offset(unsigned char *p_fdt) -{ - static int nodeoffset= -FDT_ERR_NOTFOUND; - - if (nodeoffset > 0) { - return nodeoffset; - } - - const static char *p_names[3] = { - "/nand", - "/nor", - "/mmc@f0510000" - }; - - const char *name = NULL; - switch(gStorageIntType) { - case STORAGEINT_SPI_NAND: - name = p_names[0]; - break; - case STORAGEINT_SPI_NOR: - name = p_names[1]; - break; - case STORAGEINT_EMMC: - name = p_names[2]; - break; - default: - debug_err("loader_setStorageIntType needs.\r\n"); - return NULL; - } - - nodeoffset = fdt_path_offset(p_fdt, name); - - if (nodeoffset < 0) { - debug_err("E:bl_get_partition_name\r\n"); - } - return nodeoffset; -} -#endif - -#if (FDT_SUPPORT) -_THUMB2 static const void *bl_get_fdt_partition_property(const void *p_dtb, const char *p_path, const char *p_property, int *len) -{ - int nodeoffset_partition = bl_get_partition_fdt_offset((unsigned char *)p_dtb); - - int nodeoffset; - const void *nodep; /* property node pointer */ - - if (nodeoffset_partition < 0) { - debug_err("nodeoffset_partition invalid \r\n"); - return NULL; - } - - nodeoffset = fdt_subnode_offset(p_dtb, nodeoffset_partition, p_path); - if (nodeoffset < 0) { - return NULL; - } - nodep = fdt_getprop(p_dtb, nodeoffset, p_property, len); - if (len == 0) { - return NULL; - } - return nodep; -} -#endif - -#if (FDT_SUPPORT) -_THUMB2 static int bl_get_partition(unsigned char *p_fdt /*IN*/, char *p_emb_name /*IN*/, EMB_PARTITION *p_emb/*OUT*/, int *p_id) -{ - int len; - const unsigned long long *nodep; - - // get partition offset and size - nodep = (const unsigned long long *)bl_get_fdt_partition_property(p_fdt, p_emb_name, PROPERTY_REG, &len); - if (nodep == NULL) { - debug_err("bl_get_partition-1\r\n"); - return -1; - } - - p_emb->PartitionOffset = be64_to_cpu(nodep[0]); - p_emb->PartitionSize = be64_to_cpu(nodep[1]); - - // get partition label - char *p_label_name = (char *)bl_get_fdt_partition_property(p_fdt, p_emb_name, PROPERTY_LABEL, &len); - if (p_label_name == NULL) { - debug_err("bl_get_partition-2\r\n"); - return -1; - } - - // get id - int nodeoffset_partition = bl_get_partition_fdt_offset(p_fdt); - int nodeoffset = fdt_subnode_offset(p_fdt, nodeoffset_partition, "nvtpack"); - nodeoffset = fdt_subnode_offset(p_fdt, nodeoffset, "index"); - - for (nodeoffset = fdt_first_subnode(p_fdt, nodeoffset); - (nodeoffset >= 0); - (nodeoffset = fdt_next_subnode(p_fdt, nodeoffset))) { - const struct fdt_property *prop; - - if (!(prop = fdt_get_property(p_fdt, nodeoffset, PROPERTY_PARTITION_NAME, &len))) { - break; - } - const char *p_id_name = fdt_get_name(p_fdt, nodeoffset, &len); - - if (strcmp(p_label_name, (char *)prop->data) == 0) { - *p_id = atoi(p_id_name + strlen("id")); - return 0; - } - } - - return -1; -} -#endif - -_THUMB2 static void *bl_get_uboot_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) -{ -#if (FDT_SUPPORT) - if (bl_get_partition(p_fdt, PATH_PARTITION_UBOOT, &g_emb_uboot, p_id) != 0) { - return NULL; - } -#else - *p_id = NVTPACK_IDX_UBOOT; -#endif - g_emb_uboot.EmbType = EMBTYPE_UBOOT; - return &g_emb_uboot; -} - -_THUMB2 static void *bl_get_rtos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) -{ -#if (FDT_SUPPORT) - if (bl_get_partition(p_fdt, PATH_PARTITION_RTOS, &g_emb_rtos, p_id) != 0) { - return NULL; - } -#else - *p_id = NVTPACK_IDX_RTOS; -#endif - g_emb_rtos.EmbType = EMBTYPE_RTOS; - return &g_emb_rtos; -} - -#if (NUTTX_SUPPORT) -_THUMB2 static void *bl_get_nuttx_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) -{ - if (bl_get_partition(p_fdt, PATH_PARTITION_NUTTX, &g_emb_nuttx, p_id) != 0) { - return NULL; - } - g_emb_nuttx.EmbType = EMBTYPE_NUTTX; - - return &g_emb_nuttx; -} -#endif - -_THUMB2 static void *bl_get_teeos_partition(unsigned char *p_fdt /*IN*/, int *p_id /*OUT*/) -{ -#if (FDT_SUPPORT) - if (bl_get_partition(p_fdt, PATH_PARTITION_TEEOS, &g_emb_teeos, p_id) != 0) { - return NULL; - } -#else - *p_id = NVTPACK_IDX_TEEOS; -#endif - g_emb_teeos.EmbType = EMBTYPE_TEEOS; - - return &g_emb_teeos; -} -#endif - -// return decompress_fw_size -_THUMB2 static unsigned int bl_decompress_rtos(UINT32 compress_addr, UINT32 compress_size, UINT32 fw_base_addr) -{ - UINT32 decoded_size; - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)compress_addr; - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); - - size_comp_le = (compress_size < size_comp_le) ? compress_size : size_comp_le; - decoded_size = LZ_Un_compress((UINT8 *)compress_addr + sizeof(NVTPACK_BFC_HDR), (UINT8 *)fw_base_addr, size_comp_le); - //because some padding bytes are decoded, we must return real rtos size - return (decoded_size < size_uncomp_le) ? decoded_size : size_uncomp_le; -} - -#if !REMOVED_FLASH -_THUMB2 static int bl_load_uboot_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) -{ - NVTPACK_ER er; - NVTPACK_MEM mem_uboot; - int uboot_partition_id; - NVTPACK_GET_PARTITION_INPUT input; - DRAM_PARTITION *p_dram_partition = NULL; - EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); - - if (p_emb_partition_uboot == NULL) { - debug_err("null p_emb_partition_uboot\r\n"); - return -1; - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // get partition data address and size - input.id = (unsigned int)uboot_partition_id; - input.mem.p_data = (void *)p_all_in_one; - input.mem.len = all_in_one_size; - er = nvtpack_get_partition(&input, &mem_uboot); - if (er == NVTPACK_ER_NOT_FOUND) { - return -2; - } - - if (er != NVTPACK_ER_SUCCESS) { - return -1; - } - - debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); -// debug_msg_var("uboot_size", p_dram_partition->uboot_size); -# if 0 - if(0) { -#else -#if (_FPGA_EMULATION_ == 0) - if(is_secure_enable() == 0) { -#else - if (1) { -#endif -#endif - if (bl_chk_uboot((unsigned int)mem_uboot.p_data, mem_uboot.len) != 0) { - return -1; - } - - // flow to handle compressed u-boot and uncompressed one. - HEADINFO *p_headinfo = (HEADINFO *)(mem_uboot.p_data + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_uboot.p_data; // describe compressed u-boot - - // load uboot bin to dram partiton location - //debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); - //debug_msg_var("uboot_size", p_dram_partition->uboot_size); - - if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - if((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF ) == 11) { -#if (_ROM_PUBLIC_API_ == 1) - UINT32 lzma_addr = *(UINT32 *)ROM_LZMA_POSITION; - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); - rom_lzma_inflate = (int (*)(UINT8 *, UINT32 , UINT8 * , UINT32 , UINT8 *, UINT32 ))((lzma_addr)); - rom_lzma_inflate(mem_uboot.p_data + sizeof(NVTPACK_BFC_HDR), size_comp_le, (unsigned char *) p_dram_partition->uboot_addr, size_uncomp_le, (UINT8 *)lzma_temp_buffer, 65536); - debug_msg("lzma "); - -#else - debug_msg("Can not support LZMA\r\n"); -#endif - } else { - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - LZ_Un_compress(mem_uboot.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->uboot_addr, size_comp_le); - debug_msg("lz"); - } - } else { - debug_msg("nml"); - utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, p_headinfo->BinLength); - } - } else { -#if (SECURE_DECRYPT_UBOOT) - utl_memcpy((void *)p_dram_partition->uboot_addr, mem_uboot.p_data, mem_uboot.len); - unsigned int plaintext_size =0; - - if((er = do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size))!= 0 ) - { - //debug_err("aes fail\r\n"); - return er; - } - if (bl_chk_uboot((unsigned int)p_dram_partition->uboot_addr, plaintext_size) != 0) { - return -1; - } -#else - debug_msg("please enable SECURE_DECRYPT_UBOOT\r\n"); - return -1; -#endif - } - - return 0; -} - -#if (NUTTX_SUPPORT) -_THUMB2 static int bl_load_nuttx_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) -{ - NVTPACK_ER er; - NVTPACK_MEM mem_nuttx; - int nuttx_partition_id; - NVTPACK_GET_PARTITION_INPUT input; - DRAM_PARTITION *p_dram_partition = NULL; - EMB_PARTITION *p_emb_partition_nuttx = bl_get_nuttx_partition(p_fdt, &nuttx_partition_id); - - if (p_emb_partition_nuttx == NULL) { - debug_err("null p_emb_partition_nuttx\r\n"); - return -1; - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // get partition data address and size - input.id = (unsigned int)nuttx_partition_id; - input.mem.p_data = (void *)p_all_in_one; - input.mem.len = all_in_one_size; - er = nvtpack_get_partition(&input, &mem_nuttx); - if (er == NVTPACK_ER_NOT_FOUND) { - return -2; - } - - if (er != NVTPACK_ER_SUCCESS) { - return -1; - } - - // using check uboot's check sum is ok - if (bl_chk_uboot((unsigned int)mem_nuttx.p_data, mem_nuttx.len) != 0) { - return -1; - } - - // flow to handle compressed u-boot and uncompressed one. - HEADINFO *p_headinfo = (HEADINFO *)(mem_nuttx.p_data + BIN_INFO_OFFSET_NUTTX); // describe uncompressed u-boot - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)mem_nuttx.p_data; // describe compressed u-boot - - // load nuttx bin to dram partiton location - debug_msg_var("nuttx_addr", p_dram_partition->nuttx_addr); - debug_msg_var("nuttx_size", p_dram_partition->nuttx_size); - - if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - LZ_Un_compress(mem_nuttx.p_data + sizeof(NVTPACK_BFC_HDR), (unsigned char *) p_dram_partition->nuttx_addr, size_comp_le); - } else { - utl_memcpy((void *)p_dram_partition->nuttx_addr, mem_nuttx.p_data, p_headinfo->BinLength); - } - - return 0; -} -#endif - -_THUMB2 static int bl_load_teeos_from_all_in_one(unsigned char *p_fdt, unsigned char *p_all_in_one, unsigned int all_in_one_size) -{ - NVTPACK_ER er; - NVTPACK_MEM mem_teeos; - int teeos_partition_id; - NVTPACK_GET_PARTITION_INPUT input; - DRAM_PARTITION *p_dram_partition = NULL; - EMB_PARTITION *p_emb_partition_teeos = bl_get_teeos_partition(p_fdt, &teeos_partition_id); - HEADINFO *p_headinfo = NULL; - if (p_emb_partition_teeos == NULL) { - debug_err("null p_emb_partition_teeos\r\n"); - return -1; - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // get partition data address and size - input.id = (unsigned int)teeos_partition_id; - input.mem.p_data = (void *)p_all_in_one; - input.mem.len = all_in_one_size; - er = nvtpack_get_partition(&input, &mem_teeos); - if (er == NVTPACK_ER_NOT_FOUND) { - return -2; - } - - if (er != NVTPACK_ER_SUCCESS) { - return -1; - } - -#if 0 - if(1){ -#else - if(is_secure_enable()) { -#endif -#if (SECURE_DECRYPT_OPTEE_OS) - unsigned int plaintext_size =0; - utl_memcpy((void *)p_dram_partition->teeos_addr, mem_teeos.p_data, mem_teeos.len); - if((er = do_decrypt_aes(p_dram_partition->teeos_addr, p_dram_partition->teeos_addr,&plaintext_size, p_dram_partition->teeos_size))!= 0) - { - //debug_err("aes fail\r\n"); - return er; - } - - //this is the second headinfo information , not encrpyted headinfo - p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); -#else - debug_err("please enable SECURE_DECRYPT_OPTEE_OS"); - return -1; -#endif - } - else{ - p_headinfo = (HEADINFO *)(mem_teeos.p_data + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot - utl_memcpy((void *)p_dram_partition->teeos_addr, (unsigned char*)mem_teeos.p_data, p_headinfo->BinLength); - } - UINT32 teeos_addr = p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR]; - - //check addr matched or not - debug_msg_var("teeos_addr", p_dram_partition->teeos_addr); - if (teeos_addr != p_dram_partition->teeos_addr) { - debug_msg_var("teeos_addr(bin)", teeos_addr); - debug_err("teeos addr not matched.\r\n"); - return -1; - } - - // using check uboot's check sum is ok - if (bl_chk_uboot((unsigned int)teeos_addr, p_headinfo->BinLength) != 0) { - return -1; - } - - return 0; -} - -_THUMB2 static int bl_load_uboot_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) -{ - int er; - int uboot_partition_id; - DRAM_PARTITION *p_dram_partition = NULL; - unsigned int blk_size = int_strg_obj->flash_getBlockSize(); - EMB_PARTITION *p_emb_partition_uboot = bl_get_uboot_partition(p_fdt, &uboot_partition_id); - - if (p_emb_partition_uboot == NULL) { - debug_err("null p_emb_partition_uboot\r\n"); - return -1; - } - - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - -#if (SECURE_DECRYPT_UBOOT) - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(BIN_INFO_OFFSET_UBOOT + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash,er=", er); - bl_displayErrMsg(RWErrorMsg); // read uboot failed - return -1; - } -#else - - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(BIN_INFO_OFFSET_UBOOT + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash,er=", er); - bl_displayErrMsg(RWErrorMsg); // read uboot failed - return -1; - } - -#endif - - debug_msg_var("uboot_addr", p_dram_partition->uboot_addr); - debug_msg_var("uboot_size", p_dram_partition->uboot_size); -#if 0 - if(0){ -#else - if(is_secure_enable() == 0) { -#endif - HEADINFO *p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_UBOOT); // describe uncompressed u-boot - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot - - if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) - { - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(size_comp_le, blk_size),p_tmp, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash_comp,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - if((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF ) == 11) { -#if (_ROM_PUBLIC_API_ == 1) - UINT32 lzma_addr = *(UINT32 *)ROM_LZMA_POSITION; - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - UINT32 size_uncomp_le = invertEndian(pBfc->uiSizeUnComp); - rom_lzma_inflate = (int (*)(UINT8 *, UINT32 , UINT8 * , UINT32 , UINT8 *, UINT32 ))((lzma_addr)); - rom_lzma_inflate(p_tmp + sizeof(NVTPACK_BFC_HDR), size_comp_le, (unsigned char *) p_dram_partition->uboot_addr, size_uncomp_le, (UINT8 *)lzma_temp_buffer, 65536); - debug_msg("lzma "); -#else - debug_msg("Can not support LZMA\r\n"); -#endif - } else { - LZ_Un_compress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->uboot_addr, size_comp_le); - } - } - else - { - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(p_headinfo->BinLength, blk_size), - (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - } - } - else - { -#if (SECURE_DECRYPT_UBOOT) - HEADINFO *p_headinfo = (HEADINFO *)(p_tmp); // describe uncompressed u-boot - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_uboot->PartitionOffset / blk_size, - ALIGN_CEIL(p_headinfo->BinLength, blk_size), - (UINT8 *)p_dram_partition->uboot_addr, NAND_RW_FIRMWARE)) < 0) - { - debug_err_var("bl_load_uboot_from_flash,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - unsigned int plaintext_size=0; - if((er =do_decrypt_aes(p_dram_partition->uboot_addr, p_dram_partition->uboot_addr, &plaintext_size, p_dram_partition->uboot_size))!= 0) - { - //debug_err("aes fail\r\n"); - return er; - } -#else - debug_msg("plase enable SECURE_DECRYPT_UBOOT config\r\n"); - return -1; -#endif - } - return 0; -} - -_THUMB2 static int bl_load_rtos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) -{ - int er; - int rtos_partition_id; - DRAM_PARTITION *p_dram_partition = NULL; - unsigned int blk_size = int_strg_obj->flash_getBlockSize(); - EMB_PARTITION *p_emb_partition_rtos = bl_get_rtos_partition(p_fdt, &rtos_partition_id); - SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - - if (p_emb_partition_rtos == NULL) { - debug_err("null p_emb_partition_rtos\r\n"); - return -1; - } - - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - if(bl_is_smp(p_fdt)) { - bl_core2_prepare(p_dram_partition, 0); - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - bl_core2_reset(); - } -#endif - - // load 1st block of rtos to tmp dram (to detect compressed u-boot) - unsigned int bininfo_preload_size = ALIGN_CEIL(BIN_INFO_OFFSET_RTOS + sizeof(HEADINFO), blk_size); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, bininfo_preload_size, p_tmp, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_rtos_from_flash,er=", er); - bl_displayErrMsg(RWErrorMsg); // read rtos failed - } - - // flow to handle compressed u-boot and uncompressed one. - NVTPACK_BFC_HDR *pBfc = (NVTPACK_BFC_HDR *)p_tmp; // describe compressed u-boot - - // load rtos bin to dram partiton location - //debug_msg_var("rtos_addr", p_dram_partition->rtos_addr); - //debug_msg_var("rtos_size", p_dram_partition->rtos_size); - - if (pBfc->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - - if((cpu_to_be32(pBfc->uiAlgorithm) & 0xFF ) == 11) - { - /* lzma compressed image*/ - debug_msg("lzma, use uboot\r\n"); - er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - - // boot uboot - er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot uboot failed\r\n"); - } - } else { - UINT32 size_comp_le = invertEndian(pBfc->uiSizeComp); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, ALIGN_CEIL(size_comp_le, blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_rtos_from_flash_comp,er=", er); // read bfc-rtos failed - bl_displayErrMsg(RWErrorMsg); - } - LZ_Un_compress(p_tmp + sizeof(NVTPACK_BFC_HDR), (unsigned char *)p_dram_partition->rtos_addr, size_comp_le); - } - } else { - BININFO *p_bininfo = (BININFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); // describe uncompressed u-boot - if (p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN) { - // copy bininfo_preload to rtos_addr - bl_memcpy((UINT8 *)p_dram_partition->rtos_addr, p_tmp, bininfo_preload_size); - // preload some to get part-1 size for partial load and partial compressed load - UINT32 preload_size = ALIGN_CEIL(FW_PART1_SIZE_OFFSET, blk_size) - bininfo_preload_size; - - if (preload_size!= 0) { - er = int_strg_obj->flash_readSectors( - (p_emb_partition_rtos->PartitionOffset + bininfo_preload_size) / blk_size, - preload_size, - (UINT8 *)(p_dram_partition->rtos_addr + bininfo_preload_size), NAND_RW_FIRMWARE - ); - - if (er < 0) { - debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - } - UINT32 part1_size = *(UINT32 *)(p_dram_partition->rtos_addr + FW_PART1_SIZE_OFFSET); - debug_msg_var("part1_size",part1_size); - part1_size = ALIGN_CEIL(part1_size, blk_size); - //debug_msg_var("part1_size_aligned",part1_size); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset / blk_size, part1_size, (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_rtos_from_flash_pl1,er=", er); - bl_displayErrMsg(RWErrorMsg); - } - // update loaded size - p_shminfo->boot.LdLoadSize = part1_size; - } else { - // full load - debug_msg_var("rtos_size", p_bininfo->head.BinLength); - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_rtos->PartitionOffset /blk_size, ALIGN_CEIL(p_bininfo->head.BinLength, blk_size), (UINT8 *)p_dram_partition->rtos_addr, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_rtos_from_flash,er=", er); // read bfc-uboot failed - bl_displayErrMsg(RWErrorMsg); - } - // update loaded size - p_shminfo->boot.LdLoadSize = p_bininfo->head.BinLength; - } - } - return 0; -} - -_THUMB2 static int bl_load_teeos_from_flash(unsigned char *p_fdt, unsigned char *p_tmp) -{ - int er; - int teeos_partition_id; - DRAM_PARTITION *p_dram_partition = NULL; - unsigned int blk_size = int_strg_obj->flash_getBlockSize(); - EMB_PARTITION *p_emb_partition_teeos = bl_get_teeos_partition(p_fdt, &teeos_partition_id); - - if (p_emb_partition_teeos == NULL) { - debug_err("null p_emb_partition_teeos\r\n"); - return -1; - } - - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // load 1st block of u-boot to tmp dram (to detect compressed u-boot) - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_teeos->PartitionOffset / blk_size, ALIGN_CEIL(BIN_INFO_OFFSET_TEEOS + sizeof(HEADINFO), blk_size), p_tmp, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_teeos_from_flash,er=", er); - bl_displayErrMsg(RWErrorMsg); // read teeos failed - } - - // flow to handle compressed u-boot and uncompressed one. -#if (SECURE_DECRYPT_OPTEE_OS) - HEADINFO *p_headinfo = (HEADINFO *)(p_tmp); // describe uncompressed u-boot -#else - HEADINFO *p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot - -#endif - - if ((er = int_strg_obj->flash_readSectors(p_emb_partition_teeos->PartitionOffset / blk_size, ALIGN_CEIL(p_headinfo->BinLength, blk_size), (UINT8 *)p_dram_partition->teeos_addr, NAND_RW_FIRMWARE)) < 0) { - debug_err_var("bl_load_teeos_from_flash,er=", er); // read bfc-teeos failed - bl_displayErrMsg(RWErrorMsg); - } -#if 0 - if(1){ -#else - if(is_secure_enable()) { -#endif -#if (SECURE_DECRYPT_OPTEE_OS) - - unsigned int plaintext_size=0; - if((er = do_decrypt_aes(p_dram_partition->teeos_addr, p_dram_partition->teeos_addr, &plaintext_size, p_dram_partition->teeos_size)) != 0) - { - //debug_err("aes fail\r\n"); - return er; - } - - p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); // describe uncompressed u-boot -#else - debug_err("please ENABLE SECURE_DECRYPT_OPTEE_OS config\n"); - return -1; -#endif - } - - // load teeos bin to dram partiton location - UINT32 teeos_addr = p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_LOAD_ADDR]; - debug_msg_var("teeos_addr", p_dram_partition->teeos_addr); - if (teeos_addr != p_dram_partition->teeos_addr) { - debug_msg_var("teeos_addr(bin)", teeos_addr); - debug_err("teeos addr not matched.\r\n"); - return -1; - } - //check check sum - if (bl_chk_uboot((unsigned int)teeos_addr, p_headinfo->BinLength) != 0) { - return -1; - } - return 0; -} -#endif - -#if !(USB_WRITELOADER || UART_UPDATE) -_THUMB2 static int bl_load_rtos_from_non_nvtpack(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) -{ - NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; - HEADINFO *p_headinfo = (HEADINFO *)(src_addr + BIN_INFO_OFFSET_RTOS); - if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - // to avoid rtos_addr is overlapped by src_addr, we need extract some bits to get real rtos addr. - // compressed firmware - debug_msg("compressed t.bin\r\n"); - // decode some bytes to get uncompressed address - bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr + SIZE_PRELOAD); - p_headinfo = (HEADINFO *)(src_addr + SIZE_PRELOAD + BIN_INFO_OFFSET_RTOS); - // check if valid after decode - if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); - //adjust src_addr that lay compressed f.w followed by uncomppressed f.w - src_addr = uncompress_addr + uncompress_size; - src_addr = ALIGN_CEIL(src_addr, 4); - src_size = fat_read_rootfile((UINT8 *)src_addr, compress_size); - } else { - return -1; - } - } else if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - // uncompressed firmware - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - - src_size = fat_read_rootfile((UINT8 *)src_addr, uncompress_size); - src_addr = uncompress_addr; - src_size = uncompress_size; - debug_msg("uncompressed t.bin\r\n"); -#if (DRAM_RANGE_SCAN_EN == ENABLE) - } else if (utl_is_sram_fw(src_addr) == TRUE) { - debug_msg("detected as SRAM fw\r\n"); - src_size = fat_read_rootfile((UINT8 *)src_addr, FAT_READ_TOTAL_FILE_LENGTH); -#endif - } else { - return -1; - } - - *p_dst_addr = src_addr; - *p_dst_size = src_size; - return 0; -} -#endif - -#if 0//(STORAGE_EXT_TYPE == STORAGE_EXT_USB) -_THUMB2 static int bl_load_rtos_from_usb_raw(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) -{ - NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; - HEADINFO *p_headinfo = (HEADINFO *)(src_addr + BIN_INFO_OFFSET_RTOS); - if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - // to avoid rtos_addr is overlapped by src_addr, we need extract some bits to get real rtos addr. - // compressed firmware - debug_msg("compressed t.bin\r\n"); - // decode some bytes to get uncompressed address - // assume usb write loader receive full fw at 0x0200_0000, decompress it to smaller address - bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr - SIZE_PRESERVE_USB); - p_headinfo = (HEADINFO *)(src_addr - SIZE_PRESERVE_USB + BIN_INFO_OFFSET_RTOS); - // check if valid after decode - if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); - //adjust src_addr that lay compressed f.w followed by uncomppressed f.w - utl_memcpy((void *)(uncompress_addr + uncompress_size), (void *)src_addr, compress_size); - src_addr = uncompress_addr + uncompress_size; - src_addr = ALIGN_CEIL(src_addr, 4); - src_size = compress_size; - } else { - return -1; - } - } else if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - // uncompressed firmware - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - debug_msg("uncompressed t.bin\r\n"); - utl_memcpy((void *)uncompress_addr, (void *)src_addr, uncompress_size); - src_size = uncompress_size; -#if (DRAM_RANGE_SCAN_EN == ENABLE) - } else if (utl_is_sram_fw(src_addr) == TRUE) { - debug_msg("detected as SRAM fw. NOt Support from USB\r\n"); -#endif - } else { - return -1; - } - - *p_dst_addr = src_addr; - *p_dst_size = src_size; - return 0; -} -#endif - -//#if !USB_WRITELOADER -#if !((STORAGE_EXT_TYPE == STORAGE_EXT_USB) || (STORAGE_EXT_TYPE == STORAGE_EXT_UART)) -_THUMB2 static int bl_load_rtos_from_uart(unsigned int src_addr, unsigned int src_size, unsigned int *p_dst_addr, unsigned int *p_dst_size) -{ -#if UART_UPDATE_ - UINT32 tick_kms = 10; // timeout 1000 ms - char key; - - debug_msg("UART press Enter to\r\n"); - - while (--tick_kms) { - uart_chkChar(&key); - - if (key != 0x00) { - break; - } - timer_delay(100000); //100000 - debug_msg("."); - } - - if (tick_kms) { - UINT32 uiLength; - debug_msg("\r\nEnter uboot length (Decimal):\r\n"); //must \r\n at the end because of auto_test tool - uart_getStr_polling(g_strLength); - uiLength = DecStr2Int(g_strLength); - debug_msg("\r\nPlz pass uboot bin > "); - uart_getBinary((char *)src_addr, uiLength); // Temp Receive to DRAM start - debug_msg("\r\nGot it\r\n"); -#if (DRAM_RANGE_SCAN_EN == ENABLE) - // First word is code entry point address, once if entry address is 0xC000XXXX - // represent code is running on sram. - if (bl_checkDramScanFW(src_addr) == TRUE) { - UINT32 i; - - // Enable sram usage - SETREG32(0xF0900128, 0x00000002); - SETREG32(0xF0800128, 0x00000006); - SETREG32(0xF0020060, 0x00030002); - - uiLength = ((uiLength + 3) & 0xFFFFFFFC); - - for (i = 0; i < uiLength; i += 4) { - *(UINT32 *)(src_addr + i) = *(UINT32 *)(src_addr + i); - } - *(UINT32 *)(src_addr) = *(UINT32 *)(src_addr); - return 1; - } -#endif - if (*(UINT32 *)src_addr == MAKEFOURCC('B', 'C', 'L', '1')) { - HEADINFO *p_headinfo = NULL; - NVTPACK_BFC_HDR *pBFC = (NVTPACK_BFC_HDR *)src_addr; - bl_checkFW(src_addr, uiLength); - debug_msg_var("uiLength", uiLength); - debug_msg("compressed t.bin\r\n"); - // decode some bytes to get uncompressed address - bl_decompress_rtos(src_addr, SIZE_PRELOAD, src_addr + uiLength); - p_headinfo = (HEADINFO *)(src_addr + uiLength + BIN_INFO_OFFSET_RTOS); - // check if valid after decode - if ((strncmp(p_headinfo->BinInfo_1, "NT", 2) == 0) || - (strncmp(p_headinfo->BinInfo_1, "NC", 2) == 0)) { - UINT32 uncompress_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; - UINT32 uncompress_size = p_headinfo->BinLength; - UINT32 compress_size = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); - unsigned int ori_src_addr = src_addr; - //adjust src_addr that lay compressed f.w followed by uncomppressed f.w - src_addr = uncompress_addr + uncompress_size; - src_addr = ALIGN_CEIL(src_addr, 4); - src_size = uncompress_size; - utl_memcpy((void *)src_addr, (void *)ori_src_addr, uiLength); - *p_dst_addr = src_addr; - *p_dst_size = compress_size; - return 0; - } else { - return -1; - } - return 0; - } - } -#endif - return -1; -} -#endif - -_THUMB2 static void bl_update_uItron_headInfo(UINT32 fw_base_addr, DRAM_PARTITION *p_dram_partition) -{ - HEADINFO *pHeadInfo; -#if (UITRON_FW == ENABLE) - BININFO *pBinInfo; -#endif - pHeadInfo = (HEADINFO *)(fw_base_addr + BIN_INFO_OFFSET_RTOS); - if (p_dram_partition) { - pHeadInfo->ModelextAddr = p_dram_partition->fdt_addr; - } else { - pHeadInfo->ModelextAddr = 0; -#if (UITRON_FW == ENABLE) - pBinInfo = (BININFO *)(fw_base_addr + BIN_INFO_OFFSET_RTOS); - pBinInfo->ld.Resv[0] = LoaderInternalInfo[1]; - pBinInfo->ld.LdPackage = (LoaderInternalInfo[3] & 0xFFFF); -#endif - } -} - -_THUMB2 static int bl_update_loader_bininfo(unsigned char *p_fdt, unsigned int ld_flag, unsigned int rtos_loaded_size) -{ - BOOTINFO *p_ld; - SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - BININFO *p_bininfo = (BININFO *)(p_dram_partition->rtos_addr + BIN_INFO_OFFSET_RTOS); - - p_ld = &p_shminfo->boot; - if (!(p_bininfo->head.Resv1[HEADINFO_RESV_IDX_BOOT_FLAG] & BOOT_FLAG_PARTLOAD_EN)) { - // LdLoadSize updated on uboot or bl_load_rtos_from_flash(), if BOOT_FLAG_PARTLOAD_EN - p_ld->LdLoadSize = rtos_loaded_size; - } - p_ld->LdLoadTime = timer_getLdrElapse(); - p_ld->LdResvSize = 0; //unused - p_ld->FWResvSize = 0; //unused - return 0; -} - -_THUMB2 static int bl_is_smp(unsigned char *p_fdt) -{ -#if (FDT_SUPPORT) - int len; - const char *nodep; - nodep = (const char *)bl_get_fdt_property(p_fdt, PATH_NVT_INFO, PROPERTY_NVT_LINUX_SMP, &len); - debug_msg_var("nodep", (UINT32)nodep); - if (nodep == NULL) { - return 0; - } - debug_msg((char *)nodep); - if (strcmp(nodep, "NVT_LINUX_SMP_ON") == 0) { - return 1; - } - return 0; -#else - return 0; -#endif -} - -#if !REMOVED_FLASH -_THUMB2 int bl_boot_uboot(unsigned char *p_fdt) -{ -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - UINT32 No_CPU; -#endif - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // update shminfo - SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - unsigned int *p_param = (unsigned int *)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[0]); - p_shminfo->boot.LdPackage = p_param[3] & 0xFFFF; - p_shminfo->boot.LdStorage = (p_param[3] >> 16) & 0xFF; - - // update headinfo as real u-boot address - HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->uboot_addr + BIN_INFO_OFFSET_UBOOT); - - if (bl_chk_uboot(p_dram_partition->uboot_addr, p_headinfo->BinLength) != 0) { - return -1; - } - // start cpu2 - if (p_dram_partition->uboot_addr != p_headinfo->CodeEntry) { - debug_err_var("drampat-uboot_addr ", (int)p_dram_partition->uboot_addr); - debug_err_var("bin-uboot_addr ", (int)p_headinfo->CodeEntry); - return -1; - } - // for uboot to indicate this boot is all-in-one fw or non-all-in-one boot from uart or usb - // if boot from uart or usb with non-all-in-one fw, the uboot's ModelextAddr will be zero - p_headinfo->ModelextAddr = p_dram_partition->fdt_addr; - - CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); - UINT32 isSMP = bl_is_smp(p_fdt); - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - No_CPU = *(UINT32 *)0xFFD00004; - No_CPU &= 0x3; - debug_msg_var("core No.=", No_CPU+1); -#endif - // init cpu timer -// bl_cpu_timer_init(CPU_TIMER_SETTING); -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - if (!isSMP || !No_CPU) -#else - if (!isSMP) -#endif - { -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - debug_msg_var("Bin core=", isSMP+1); -#endif - bl_entry_boot(p_fdt, p_headinfo->CodeEntry); - } else { -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - // init cpu timer - bl_cpu_timer_init(global_timer_freq); - - bl_smp_start(p_fdt, p_headinfo->CodeEntry); - // boot u-boot and never return back to loader -#else - //bl_smp_start(p_fdt, p_headinfo->CodeEntry); - debug_err("not support smp\r\n"); -#endif - } - return 0; -} - -#if (NUTTX_SUPPORT) -_THUMB2 static int bl_boot_nuttx(unsigned char *p_fdt) -{ - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // update headinfo as real u-boot address - HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->nuttx_addr + BIN_INFO_OFFSET_NUTTX); - - if (bl_chk_uboot(p_dram_partition->nuttx_addr, p_headinfo->BinLength) != 0) { - return -1; - } - - // start cpu2 - if (p_dram_partition->nuttx_addr != p_headinfo->CodeEntry) { - debug_err_var("drampat-nuttx_addr ", (int)p_dram_partition->nuttx_addr); - debug_err_var("bin-nuttx_addr ", (int)p_headinfo->CodeEntry); - return -1; - } - - CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); - - // init cpu timer - bl_cpu_timer_init(CPU_TIMER_SETTING); - - bl_entry_boot(p_fdt, p_headinfo->CodeEntry); - // boot nuttx and never return back to loader - return 0; -} -#endif - -_THUMB2 static int bl_boot_teeos(unsigned char *p_fdt) -{ - DRAM_PARTITION *p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition == NULL) { - debug_err("null p_dram_partition\r\n"); - return -1; - } - - // update headinfo as real u-boot address - HEADINFO *p_headinfo = (HEADINFO *)(p_dram_partition->teeos_addr + BIN_INFO_OFFSET_TEEOS); - - // update uboot addr for teeos - p_headinfo->Resv1[HEADINFO_TEEOS_RESV_IDX_UBOOT_ADDR] = p_dram_partition->uboot_addr; - - -#if 0 //do not checksum, because teeos header has removed cause checksum failed - if (bl_chk_uboot(p_dram_partition->teeos_addr, p_headinfo->BinLength) != 0) { - return -1; - } -#endif - - //flush uboot - CPUflushWriteCache(p_dram_partition->uboot_addr, p_dram_partition->uboot_size); - //flush teeos - CPUflushWriteCache(p_headinfo->CodeEntry, p_headinfo->BinLength); - - // init cpu timer - -#if 0//(LOADER_TYPE == STAND_ALONE_LOADER_528) || (LOADER_TYPE == COMBINATION_528) - bl_cpu_timer_init(CPU_TIMER_SETTING); - // boot core2 (after teeos is loaded) - if (HEADINFO_UBOOT(p_dram_partition)->BinCtrl & 0x00000002) { - //if SMP, trigger core2 - debug_msg("smp(tee)\r\n"); - bl_core2_prepare(p_dram_partition, p_headinfo->CodeEntry); - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - bl_core2_reset(); - } else { - debug_msg_var("not smp\r\n", p_headinfo->BinCtrl); - } -#endif - bl_entry_boot(p_fdt, p_headinfo->CodeEntry); - // boot teeos and never return back to loader - return 0; -} - -_THUMB2 static int bl_update_loader_flag(unsigned char *p_fdt, UINT32 uiLoaderFunc) -{ - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - - utl_memcpy(p_bininfo->boot.LdInfo_1, "LD_NVT", 6); - - p_bininfo->boot.LdCtrl2 = 0; - if (uiLoaderFunc & FUNC_UPDATE_FW) { - p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_FW; - } - if (uiLoaderFunc & FUNC_UPDATE_LOADER) { - p_bininfo->boot.LdCtrl2 |= LDCF_UPDATE_LD; - } - if (uiLoaderFunc & FUNC_RUN_CARD) { - p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_CARD; - } - if (uiLoaderFunc & FUNC_RUN_FLASH) { - p_bininfo->boot.LdCtrl2 |= LDCF_BOOT_FLASH; - } - //CPUflushWriteCache((UINT32)p_bininfo, sizeof(BININFO)); - debug_msg_var("LdCtrl2", p_bininfo->boot.LdCtrl2); - - unsigned int ver; - SHMINFO *p_shminfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_fdt, MODELEXT_TYPE_BIN_INFO); - BOOTINFO *p_ld = &p_shminfo->boot; - - utl_memset(p_ld->LdInfo_1, 0, sizeof(p_ld->LdInfo_1)); - utl_memcpy(p_ld->LdInfo_1, "LD_NVT", 6); - - ver = (((LoaderInternalInfo[1] >> 28) & 0xF) << 24) | - (((LoaderInternalInfo[1] >> 24) & 0xF) << 16) | - ((LoaderInternalInfo[1] >> 16) & 0xFF); - - if (g_uiVersion == 0) { - g_uiVersion = ver; - } - - utl_memcpy(&p_ld->LdInfo_1[8], &g_uiVersion, sizeof(g_uiVersion)); - unsigned int *p_param = (unsigned int *)(&_load_LOADER_CONFIGRAM_FREQ_PARAM_start_base[0]); - p_ld->LdPackage = p_param[3] & 0xFFFF; - p_ld->LdStorage = (p_param[3] >> 16) & 0xFF; - - return 0; -} - -// return uItron_fw_addr -_THUMB2 unsigned int bl_process_all_in_one(UINT32 uiFwBuf, UINT32 uiFwBufSize, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) -{ - int er; - unsigned char *p_fdt = NULL; - DRAM_PARTITION *p_dram_partition = NULL; - //p_tmp for the case of all-in-one without fdt or uboot - unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); - - // load fdt - er = bl_load_fdt_from_all_in_one((unsigned char *)uiFwBuf, uiFwBufSize, &p_fdt); - if (er == -2) { // try to load from nand - debug_msg("fdt from flash.\r\n"); - // open flash - if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. - bl_displayErrMsg("flash open failed\r\n"); - } - - //p_tmp for the case of all-in-one without fdt or uboot - unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); - er = bl_load_fdt_from_flash(p_tmp, 0x2000000, &p_fdt); // dtb size less than 32MB to be safer. - if (er != 0) { - bl_displayErrMsg("load fdt failed\r\n"); - } - } - - // update loader flag - bl_update_loader_flag(p_fdt, uiLoaderFunc); - if (uiLoaderFunc & FUNC_UPDATE_FW) { - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_BIN_INFO); - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - p_bininfo->comm.Resv[5] = uiFwBuf; // COMM_FW_UPD_ADDR - p_bininfo->comm.Resv[6] = uiFwBufSize; // COMM_FW_UPD_LEN - debug_msg_var("upd_src_addr=", uiFwBuf); - debug_msg_var("upd_src_size=", uiFwBufSize); - } - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - //check loader addr is matched with loader self. - extern char _loader_exec_compres_start[]; - if (p_dram_partition->loader_addr != (UINT32)_loader_exec_compres_start) { - debug_msg_var("p_dram_partition->loader_addr", p_dram_partition->loader_addr); - debug_msg_var("_loader_exec_compres_start", (UINT32)_loader_exec_compres_start); - bl_displayErrMsg("loader addr is not match."); - } - //when rtos boot from flash, the boot from loader directly, - //but when rtos need to burn image, the uboot is still required. - //so, any one need to burn image, uboot is always needed to boot. - //if ((uiLoaderFunc & FUNC_UPDATE_FW) || p_dram_partition->rtos_addr == 0) { - if (1) { - // always use uboot to handle all-in-one bin - if (p_dram_partition->nuttx_size == 0 && p_dram_partition->teeos_size == 0) { - // load uboot - er = bl_load_uboot_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); - if (er == -2) { // try to load from nand - debug_msg("uboot from flash.\r\n"); - // open flash - if (bl_flash_open() != 0) { // dont move flash open outside section, consider that T without flash device. - bl_displayErrMsg("flash open failed\r\n"); - } - er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - } - - er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot uboot failed\r\n"); - } - } else if (p_dram_partition->nuttx_size) { -#if (NUTTX_SUPPORT) - // load nuttx - er = bl_load_nuttx_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); - if (er != 0) { - bl_displayErrMsg("load nuttx failed\r\n"); - } - er = bl_boot_nuttx((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot nuttx failed\r\n"); - } -#else - bl_displayErrMsg("NUTTX_SUPPORT disabled\r\n"); -#endif - } else if (p_dram_partition->teeos_size) { - // load teeos - er = bl_load_teeos_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); - if (er != 0) { - bl_displayErrMsg("load teeos failed\r\n"); - } - // load uboot - er = bl_load_uboot_from_all_in_one((unsigned char *)p_dram_partition->fdt_addr, (unsigned char *)uiFwBuf, uiFwBufSize); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - // boot teeos - er = bl_boot_teeos((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot teeos failed\r\n"); - } - } - return er; - } else { - // update rtos information - // the following is for uncompressed-rtos only, others needing uboot - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((const void *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); - - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - *p_comp_addr = p_bininfo->comm.Resv[3]; // COMM_UITRON_COMP_ADDR - *p_comp_size = p_bininfo->comm.Resv[4]; // COMM_UITRON_COMP_LEN - - *pOut_dram_partition = p_dram_partition; - return bl_load_rtos_from_all_in_one((unsigned char *)uiFwBuf, uiFwBufSize, &p_fdt); - } -} -#endif - -// return uItron_fw_addr, no need to fully decode -_THUMB2 static unsigned int bl_process_rtos_only(UINT32 uiFwBuf, UINT32 uiFwBufSize, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) -{ - UINT32 uItron_fw_addr; - NVTPACK_BFC_HDR *pBFC; - HEADINFO *p_headinfo; - - debug_msg("\r\nbl_process_rtos_only\r\n"); - pBFC = (NVTPACK_BFC_HDR *)uiFwBuf; - if (pBFC->uiFourCC == MAKEFOURCC('B', 'C', 'L', '1')) { - UINT32 compressSize; - unsigned char *p_tmp = (unsigned char *)(uiFwBuf + ALIGN_CEIL(uiFwBufSize, 4)); - LZ_Un_compress((UINT8 *)uiFwBuf + LDC_HEADER_SIZE, p_tmp, SIZE_PRELOAD); - p_headinfo = (HEADINFO *)(p_tmp + BIN_INFO_OFFSET_RTOS); - uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; -#if UITRON_FW - uItron_fw_addr = p_headinfo->CodeEntry - CODE_ENTRY_OFFSET; // cliff -#endif - - if ((uItron_fw_addr & 0x0000FFFF) != 0) { //cc engine's limitation - debug_err_var("rtos addr must match (&0x0000FFFF)==0", uItron_fw_addr); // but 660 allow - uItron_fw_addr = uItron_fw_addr & 0xFFFF0000; - } - compressSize = invertEndian(pBFC->uiSizeComp) + sizeof(NVTPACK_BFC_HDR); - //debug_dump_addr(tmpBuf,0x200); - debug_msg_var("F compress uItron_fw_addr", uItron_fw_addr); - // uiFwBuf has adjusted on bl_load_rtos_from_non_nvtpack() - *p_comp_addr = uiFwBuf; - *p_comp_size = compressSize; - } else { - p_headinfo = (HEADINFO *)(uiFwBuf + BIN_INFO_OFFSET_RTOS); - uItron_fw_addr = p_headinfo->CodeEntry - CODE_SECTION_OFFSET; -#if UITRON_FW - uItron_fw_addr = p_headinfo->CodeEntry - CODE_ENTRY_OFFSET; // cliff -#endif - - if ((uItron_fw_addr & 0x0000FFFF) != 0) { //cc engine's limitation - debug_err_var("rtos addr must match (&0x0000FFFF)==0", uItron_fw_addr); // but 660 allow - uItron_fw_addr = uItron_fw_addr & 0xFFFF0000; - } - - debug_msg_var("Normal uItron_fw_addr", uItron_fw_addr); - *p_comp_addr = 0; - *p_comp_size = 0; - } - return uItron_fw_addr; -} -#if !UPDATE_EMU_CODE && !REMOVED_FLASH -_THUMB2 static unsigned int bl_process_flash_boot(unsigned char *p_tmp, DRAM_PARTITION **pOut_dram_partition, UINT32 uiLoaderFunc, UINT32 *p_comp_addr, UINT32 *p_comp_size) -{ - int er; - unsigned char *p_fdt = NULL; - DRAM_PARTITION *p_dram_partition = NULL; - - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } - - // load fdt - er = bl_load_fdt_from_flash(p_tmp, SDRAM_Start_FW, &p_fdt); // dtb size less than 32MB to be safer. - if (er != 0) { - bl_displayErrMsg("load fdt failed\r\n"); - } - - // update loader flag - bl_update_loader_flag(p_fdt, uiLoaderFunc); - - p_dram_partition = (DRAM_PARTITION *)bl_get_fdt_cfg(p_fdt, MODELEXT_TYPE_DRAM_PARTITION); - - if (p_dram_partition->teeos_size) { - // load teeos - er = bl_load_teeos_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load teeos failed\r\n"); - } - // load uboot - er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - // boot teeos - er = bl_boot_teeos((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot teeos failed\r\n"); - } - } else if (p_dram_partition->rtos_addr == 0 || DUAL_RTOS_SUPPORT || (gFastbootKeyCallBack == NULL) || (!gFastbootKeyCallBack())) { - // load uboot - er = bl_load_uboot_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load uboot failed\r\n"); - } - - // boot uboot - er = bl_boot_uboot((unsigned char *)p_dram_partition->fdt_addr); - if (er != 0) { - bl_displayErrMsg("boot uboot failed\r\n"); - } - } else { - // load rtos - er = bl_load_rtos_from_flash((unsigned char *)p_dram_partition->fdt_addr, p_tmp); - if (er != 0) { - bl_displayErrMsg("load rtos failed\r\n"); - } - } - - // update compressed rtos information - SHMINFO *p_bininfo = (SHMINFO *)bl_get_fdt_cfg((unsigned char *)p_dram_partition->fdt_addr, MODELEXT_TYPE_BIN_INFO); - if (p_bininfo == NULL) { - debug_err("null p_bininfo\r\n"); - return -1; - } - *p_comp_addr = p_bininfo->comm.Resv[3]; // COMM_UITRON_COMP_ADDR - *p_comp_size = p_bininfo->comm.Resv[4]; // COMM_UITRON_COMP_LEN - - *pOut_dram_partition = p_dram_partition; - return p_dram_partition->rtos_addr; -} -#endif - -/** - bl_process_update_loader. - - Write loader will update loader binary file - - @param[in] loader_addr loader in DRAM starting address - @param[in] loader_size loader code length (from loader header offset 0x24) - @return void -*/ -_THUMB2 static int bl_process_update_loader(unsigned int loader_addr, unsigned int loader_size) -{ - unsigned int reload_addr; - - // Check boot loader read from SD card - if(is_data_area_encrypted() == 0) { - -#if ((STORAGE_EXT_TYPE == STORAGE_EXT_ETH)|(STORAGE_EXT_TYPE == STORAGE_EXT_USB)) - //UINT32 uiOffset; - //uiOffset = *((UINT32 *)(loader_addr + 0x80)); - //if(uiOffset) {//Combo loader - // if(*(UINT32*)0xF00100F0 == 0x50210000) { - // debug_msg("combo loader 528\r\n"); - // bl_checkLoader(loader_addr+uiOffset, COMBINATION_LOADER_SIZE - uiOffset); //check 528 - // } else{ - // debug_msg("combo loader 52X\r\n"); - // bl_checkLoader(loader_addr, loader_size); //check 52x - // } - //}else - bl_checkLoader(loader_addr, loader_size); -#else -#if 0//(LOADER_TYPE == COMBINATION_528) - debug_msg("CB8\r\n"); - bl_checkLoader(loader_addr + loader_size, (COMBINATION_LOADER_SIZE - loader_size)); -#else //STAND_ALONE_LOADER or combination 52x loader - //debug_msg("STD\r\n"); - bl_checkLoader(loader_addr, loader_size); -#endif -#endif - } - debug_msg("update loader\r\n"); - - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } - - // Program loader -#if 0 -#if ((STORAGE_EXT_TYPE == STORAGE_EXT_ETH)|(STORAGE_EXT_TYPE == STORAGE_EXT_USB)) - UINT32 uiOffset; - uiOffset = *((UINT32 *)(loader_addr + 0x80)); - if(uiOffset) //Combo loader - loader_size = COMBINATION_LOADER_SIZE; - //If single loader , it already got -#else -#if (LOADER_TYPE == STAND_ALONE_LOADER_560) || (LOADER_TYPE == STAND_ALONE_LOADER_528) -#else //Combination loader - loader_size = COMBINATION_LOADER_SIZE; -#endif -#endif -#endif - if (int_strg_obj->flash_writeSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)loader_addr, NAND_RW_LOADER) < 0) { - bl_displayErrMsg(RWErrorMsg); - } - // Read back - reload_addr = loader_addr + loader_size; - if (int_strg_obj->flash_readSectors(StartNandBlkUpdateLoader, loader_size, (UINT8 *)reload_addr, NAND_RW_LOADER) < 0) { - bl_displayErrMsg("rd fail\r\n"); - } - // Verify - if (memcmp((void *)loader_addr, (void *)reload_addr, loader_size) != 0) { - bl_displayErrMsg("verify fail\r\n"); - } - return 0; -} -#if UPDATE_EMU_CODE -_THUMB2 static int bl_process_update_emu_firmware(unsigned int emu_addr, unsigned int emu_size) -{ - unsigned int reload_addr; - - // Check boot loader read from SD card -// bl_checkFW(emu_addr, emu_size); - debug_msg("update emu firmware size"); - uart_putSystemUARTStr(Dec2HexStr(emu_size)); - uart_putSystemUARTStr("\r\n"); - - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } - - // Program firmware - if (int_strg_obj->flash_writeSectors(g_uiStartBlkUpdateFW, emu_size, (UINT8 *)emu_addr, NAND_RW_FIRMWARE) < 0) { - bl_displayErrMsg(RWErrorMsg); - } - // Read back - reload_addr = emu_addr + emu_size; - if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, emu_size, (UINT8 *)reload_addr, NAND_RW_FIRMWARE) < 0) { - bl_displayErrMsg("rd fail\r\n"); - } - // Verify - if (memcmp((void *)emu_addr, (void *)reload_addr, emu_size) != 0) { - bl_displayErrMsg("verify fail\r\n"); - } - return 0; -} -#endif - -_THUMB2 void bl_read_rtos_addr(UINT32 *pLoadAddr, UINT32 *pTargetAddr, UINT32 *pSize) -{ - *pLoadAddr = g_rtos_load_addr; - *pTargetAddr = g_rtos_target_addr; - *pSize = g_rtos_size; -} - -/** - main flow code - - If there is Calibration Firmware code store in NAND, running flow as follow - O's work flow - - @return fw base addr -*/ - -_THUMB2 UINT32 bl_mainFlow(void) -{ - UINT32 uiUpdateFileLen = 0; - UINT32 uiLoaderFunc = 0; - UINT32 uiLoaderSize = 32 * 1024; // pre-assume 32KB, actual size is parsed from loader - //Show Duty calibration log -#if (_LOADER_DUTY_CALIBRATION_ == ENABLE && _LOADER_DUTY_CALIBRATION_LOG_ == ENABLE) - UINT32 uiLoaderAddress; - UINT32 uiLogSramAddress; -#endif - -#if !(USB_WRITELOADER || UART_UPDATE) - unsigned int adjusted_addr = 0; - unsigned int adjusted_size = 0; -#endif - UINT32 uiFwBaseAddr = SDRAM_Start_FW; // FW base address - DRAM_PARTITION *p_dram_partition = NULL; - - // BaseOfStack is initialized at doRemapLZ.s - UINT32 uiheapBufferAddr = (UINT32)_loader_heap_base; -// UINT32 uiheapBufferAddr = BaseOfStack + 0x40000; // reserve 16KB for tmp buffer usage - UINT32 uiTmpBufferAddr = uiheapBufferAddr + FAT_HEAP_BUFFER_SIZE; - UINT32 uiUpdateBootloaderBufAddr = uiTmpBufferAddr + 0x4000; - UINT32 uiUpdateMainBinBufAddr = SDRAM_Start_FW; - - // UART initial sequence - //uart_openSystemUART(); - // rtc reset shutdown timer - // rtc_resetShutDownTimer(); - - - - -#if 0 - // adjust PAD driving (if required) - bl_adjustDriving(); - /* - - @b RTC_PWR_SW_STS: Power on source is PWR_SW - - @b RTC_PWR_VBAT_STS: Power on source is PWR_VBAT - - @b RTC_PWR_VBUS_STS: Power on source is PWR_VBUS - */ - uiPowerOnSrc = rtc_getPWRONSource(); - - if (uiPowerOnSrc & RTC_PWR_SW_STS) { - uart_putSystemUARTStr("\r\nSW PON\r\n"); - } else if (uiPowerOnSrc & RTC_PWR_VBAT_STS) { - uart_putSystemUARTStr("\r\nVBAT PON\r\n"); - } else if (uiPowerOnSrc & RTC_PWR_VBUS_STS) { - uart_putSystemUARTStr("\r\nVBUS PON\r\n"); - } else if (rtc_getIsAlarmPowerOn()) { - uart_putSystemUARTStr("\r\nPwrAlarm PON\r\n"); - } else { - uart_putSystemUARTStr("\r\nPOR PON\r\n"); - } -#endif - // Display Loader Version - debug_msg((char *)LOADER_START_STR); - UTL_setDrvTmpBufferAddress(uiTmpBufferAddr); - - -#if 0 // for now, reduce code size - if (rtc_chkS3boot()) { - UINT32 resume_addr; - - uart_putSystemUARTStr("main selfing..\r\n"); - resume_addr = bl_resume_cpu1((unsigned char *)_BOARD_IPC_ADDR_); - if (resume_addr == 0) { - // in codition for MODELEXT_BUILT_IN_ON - resume_addr = RESUME_ADDR; - } - return resume_addr; - } else { - - uart_putSystemUARTStr("main not selfing..\r\n"); - } -#endif - -#if 0 - // Sample to hook spi flash extending function - flash_installIdentifyCB(bl_spiIdentify); -#endif - prj_main(); - -#if !(USB_WRITELOADER) - set_usb_suspend(); -#endif - - if(utl_get_bootsrc() == BOOT_SOURCE_UART) - { -#if UART_UPDATE - debug_msg("Boot from UART ...\r\n"); - bl_uart();//never returned. -#else - bl_displayErrMsg("UART_UPDATE must enable on loader\r\n"); -#endif - } - - if(USB_WRITELOADER || utl_get_bootsrc() == BOOT_SOURCE_USB) - { -#if USB_WRITELOADER - debug_msg("Boot from USB ...\r\n"); - bl_usb(); //never returned. -#else - bl_displayErrMsg("USB_WRITELOADER must enable on loader\r\n"); -#endif - } - -#if !(USB_WRITELOADER || UART_UPDATE) - if (bl_load_rtos_from_uart(uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH, &adjusted_addr, &adjusted_size) == 0) { - //specail case, load small rtos from uart - uiUpdateMainBinBufAddr = adjusted_addr; - uiUpdateFileLen = adjusted_size; - uiLoaderFunc |= FUNC_RUN_CARD; - } else if ((int_strg_obj->flash_getBlockSize() == EMMC_BLOCK_SIZE) && gRecoveryTriggerCallBack && gRecoveryTriggerCallBack()) { - debug_msg("Recovery triggered not support currently.\r\n"); -#if 0 - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } else { - flash_mount_fs(0, BaseOfStack + 0x4000, FAT_HEAP_BUFFER_SIZE); - if (flash_mount_partition(g_uiPartitionID) == E_OK) { - if (flash_open_file(RECOVERY_FW_NAME) == TRUE) { - NVTPACK_MEM mem_in ; - flash_read_file((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); - mem_in.p_data = (void *)uiUpdateMainBinBufAddr; - mem_in.len = uiUpdateFileLen; - // all in one bin - if (bl_chk_valid_all_in_one(&mem_in) == 0) { - // Read all - uiUpdateFileLen = flash_read_file((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - uiLoaderFunc |= FUNC_UPDATE_FW; - g_is_recovery_triggered = TRUE; - } else { - debug_msg("Recovery should be all in one bin!\r\n"); - } - } else { - debug_msg("no recovery bin!\r\n"); - } - } else { - debug_msg("Partition error!\r\n"); - } - } -#endif - } else if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack()) && - ((gCardDetectCallBack == NULL) || gCardDetectCallBack())) { - if (card_open() == TRUE && fat_initFAT(uiheapBufferAddr, FAT_HEAP_BUFFER_SIZE) == TRUE) { -#if UPDATE_SIM_CODE - BOOL bWDTInit = UTL_canUpdateSecKey(); - if (bWDTInit && fat_open_rootfile(RUN_WRKEY_NAME) == TRUE) { - debug_msg("sim.bin exist\r\n"); // the others A or T are skipped. - // Read byte count specified in file directory entry - uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - fat_close_rootfile(); - debug_msg("\r\n"); // for line end RRRRRRR.... - uiLoaderFunc |= FUNC_RUN_WRBIN; - } else { // exclude others update if FUNC_RUN_WRBIN is existing. -#endif - // Update loader or not, loader is fixed to 16 KB - if (fat_open_rootfile(UPDATE_LOADER_NAME) == TRUE) { - // Read byte count specified in file directory entry - fat_read_rootfile((UINT8 *)uiUpdateBootloaderBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - fat_close_rootfile(); - debug_msg("\r\n"); // for line end RRRRRRR.... - uiLoaderFunc |= FUNC_UPDATE_LOADER; - uiLoaderSize = *((UINT32 *)(uiUpdateBootloaderBufAddr + 0x24)); - } - // "Update FW" or "Run FW" function - // Update FW has higher priority - if (fat_open_rootfile(UPDATE_FW_NAME) == TRUE) { - NVTPACK_MEM mem_in ; - fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); - mem_in.p_data = (void *)uiUpdateMainBinBufAddr; - mem_in.len = uiUpdateFileLen; - // all in one bin - if (bl_chk_valid_all_in_one(&mem_in) == 0) { - // Read all - uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - uiLoaderFunc |= FUNC_UPDATE_FW; - } else { - // only rtos - debug_msg("not all-in-one, force behavior as T bin.\r\n"); - adjusted_addr = 0; - adjusted_size = 0; - if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) == 0) { - uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log - uiUpdateFileLen = adjusted_size; - } else { - bl_displayErrMsg("invalid firmware"); - } -#if UPDATE_EMU_CODE - uiLoaderFunc |= FUNC_UPDATE_FW; -#else - uiLoaderFunc |= FUNC_RUN_CARD; -#endif - - } - fat_close_rootfile(); - debug_msg("\r\n"); // for line end RRRRRRR.... - } - // Run FW has lower priority - else if (fat_open_rootfile(RUN_FW_NAME) == TRUE) { - NVTPACK_MEM mem_in ; - uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, SIZE_PRELOAD); - mem_in.p_data = (void *)uiUpdateMainBinBufAddr; - mem_in.len = uiUpdateFileLen; - if (bl_chk_valid_all_in_one(&mem_in) == 0) { - // Read all - uiUpdateFileLen = fat_read_rootfile((UINT8 *)uiUpdateMainBinBufAddr, FAT_READ_TOTAL_FILE_LENGTH); - } else { - // Read rtos - unsigned int adjusted_addr = 0; - unsigned int adjusted_size = 0; - if (bl_load_rtos_from_non_nvtpack(uiUpdateMainBinBufAddr, uiUpdateFileLen, &adjusted_addr, &adjusted_size) != 0) { - bl_displayErrMsg("invalid firmware"); - } else { - uiFwBaseAddr = adjusted_addr; //fix compressed fit bl_checkDramScanFW() after copy its to temp area, see commit log - uiUpdateFileLen = adjusted_size; - } - uiLoaderFunc |= FUNC_RUN_CARD; - } - fat_close_rootfile(); - debug_msg("\r\n"); // for line end RRRRRRR.... - uiLoaderFunc |= FUNC_RUN_CARD; - } -#if UPDATE_SIM_CODE - } -#endif - card_close(); - } else { - debug_msg("card open fail\r\n"); -// while (1); - } - } else if (((gSpecialKeyCallBack == NULL) || gSpecialKeyCallBack()) && - ((gCardDetectCallBack != NULL) || (gCardDetectCallBack() == FALSE))) { - debug_msg("No card inserted\r\n"); - } -#endif - - if (uiLoaderFunc & FUNC_UPDATE_LOADER) { - bl_process_update_loader(uiUpdateBootloaderBufAddr, uiLoaderSize); - } - - // Run FW - UINT32 comp_addr = 0; - UINT32 comp_size = 0; - if (uiLoaderFunc & (FUNC_RUN_CARD | FUNC_UPDATE_FW)) { - debug_msg("RC\r\n"); - NVTPACK_MEM mem_in ; - int chk_valid_all_in_one; -#if (DRAM_RANGE_SCAN_EN == ENABLE) - // First word is code entry point address, once if entry address is 0xC000XXXX - // represent code is running on sram. - debug_msg("Check SRAM fw\r\n"); - if (bl_checkDramScanFW(uiUpdateMainBinBufAddr) == TRUE) { - - debug_msg("This fw is on SRAM\r\n"); - // Enable sram usage - SETREG32(0xF0900128, 0x00000002); - SETREG32(0xF0800128, 0x00000006); - SETREG32(0xF0020060, 0x00030002); - - debug_msg(Dec2HexStr(*((UINT32 *)SRAM_Start_FW))); - debug_msg("before jump\r\n"); -// while (b_debug_go == FALSE); - load_dram_scan(uiUpdateMainBinBufAddr, uiUpdateFileLen); - return *((UINT32 *)SRAM_Start_FW); - } -#endif - mem_in.p_data = (void *)uiUpdateMainBinBufAddr; - mem_in.len = uiUpdateFileLen; - chk_valid_all_in_one = bl_chk_valid_all_in_one(&mem_in); - if (chk_valid_all_in_one == 0) { - // all-in-one flow - // File len got from fat_read_rootfile() may exceed actual file size. - // In such condition, we should use info in NVTPACK_FW_HDR2 - if (((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize < uiUpdateFileLen) { - uiUpdateFileLen = ((NVTPACK_FW_HDR2 *)uiUpdateMainBinBufAddr)->TotalSize; - mem_in.len = uiUpdateFileLen; - } -#if (REMOVED_FLASH == ENABLE) - bl_displayErrMsg("cannot process all-in-one fw"); -#else - uiFwBaseAddr = bl_process_all_in_one(uiUpdateMainBinBufAddr, uiUpdateFileLen, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); -#endif - } else { - // non-all-in-one flow - // check valid - if (uiLoaderFunc & FUNC_UPDATE_FW) { -#if UPDATE_EMU_CODE - bl_process_update_emu_firmware(uiUpdateMainBinBufAddr, uiUpdateFileLen); -#else - bl_displayErrMsg("cannot write non-all-in-one fw"); -#endif - } - uiFwBaseAddr = bl_process_rtos_only(uiUpdateMainBinBufAddr, mem_in.len, uiLoaderFunc, &comp_addr, &comp_size); - } - - // here uiFwBaseAddr is ready to use. - if (comp_addr == 0) { - HEADINFO *p_headinfo = (HEADINFO *)(uiFwBaseAddr + BIN_INFO_OFFSET_RTOS); - debug_msg("Nrml\r\n"); - if (chk_valid_all_in_one == 0) { - uiUpdateFileLen = p_headinfo->BinLength; - uiUpdateMainBinBufAddr = uiFwBaseAddr; - } else { - // uiUpdateFileLen is already set when file is loaded - } - } else { - debug_msg("Fcompress\r\n"); - //for speed up, u-boot only copy compressed rtos and loader needs to decode it - uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); - uiUpdateMainBinBufAddr = uiFwBaseAddr; - } - debug_msg_var("uiUpdateFileLen", uiUpdateFileLen); - //boot from flash or update fw is no need to check sanity because of ecc, turn on it just for debug - if (uiLoaderFunc & FUNC_RUN_CARD) { - bl_checkFW(uiUpdateMainBinBufAddr, uiUpdateFileLen); - } - if (chk_valid_all_in_one == 0) { - bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); - } else { - debug_msg_var("fw load addr", uiUpdateMainBinBufAddr); - bl_update_uItron_headInfo(uiUpdateMainBinBufAddr, p_dram_partition); - } - } else { //boot from flash -#if (REMOVED_FLASH == DISABLE) -#if UPDATE_EMU_CODE -// UINT32 uiNandBlkSize; - // open flash - if (bl_flash_open() != 0) { - bl_displayErrMsg("flash open failed\r\n"); - } - debug_msg("RFlash\r\n"); - if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW, g_uiNandBlkSize, (UINT8 *)SDRAM_Start_FW, NAND_RW_FIRMWARE) < 0) { - bl_displayErrMsg(RWErrorMsg); - } - - uiUpdateFileLen = *(volatile UINT32 *)(SDRAM_Start_FW + 0x168); - - if (int_strg_obj->flash_readSectors(g_uiStartBlkUpdateFW + 1, uiUpdateFileLen - g_uiNandBlkSize, (UINT8 *)(SDRAM_Start_FW + g_uiNandBlkSize), NAND_RW_FIRMWARE) < 0) { - bl_displayErrMsg(RWErrorMsg); - } - - uiFwBaseAddr = bl_process_rtos_only(SDRAM_Start_FW, uiUpdateFileLen, uiLoaderFunc, &comp_addr, &comp_size); - bl_checkFW(SDRAM_Start_FW, uiUpdateFileLen); - uiUpdateMainBinBufAddr = SDRAM_Start_FW; - if (comp_addr == 0) { - debug_msg("Nrml\r\n"); - } else { - debug_msg("Fcompress not support\r\n"); - } - -#else - uiFwBaseAddr = bl_process_flash_boot((UINT8 *)SDRAM_Start_FW, &p_dram_partition, uiLoaderFunc, &comp_addr, &comp_size); - if (comp_addr == 0) { - uiUpdateMainBinBufAddr = uiFwBaseAddr; - } else { - //for speed up, u-boot only copy compressed rtos and loader needs to decode it - uiUpdateFileLen = bl_decompress_rtos(comp_addr, comp_size, uiFwBaseAddr); - uiUpdateMainBinBufAddr = uiFwBaseAddr; - } - // no need to bl_checkFW, because check sanity in flash_read - bl_update_uItron_headInfo(uiFwBaseAddr, p_dram_partition); -#endif -#endif - } - - if (p_dram_partition) { - bl_update_loader_bininfo((unsigned char *)p_dram_partition->fdt_addr, uiLoaderFunc, uiUpdateFileLen); - } - -#if UPDATE_EMU_CODE - debug_msg_var("emu fw len", uiUpdateFileLen); -#endif - g_rtos_load_addr = uiUpdateMainBinBufAddr; - g_rtos_target_addr = uiFwBaseAddr; - g_rtos_size = uiUpdateFileLen; - //invalid Instruciton and data cache - CPUCleanInvalidateDCacheAll(); - CPUInvalidateICacheAll(); - debug_msg_var("rtos start", uiFwBaseAddr); - return uiFwBaseAddr; - -} - -_THUMB2 void loader_setUpdateFwName(char *fileName) -{ - strncpy((char *)UPDATE_FW_NAME, fileName, sizeof(UPDATE_FW_NAME)); -} - -_THUMB2 void loader_setUpdateLdrName(char *fileName) -{ - strncpy((char *)UPDATE_LOADER_NAME, fileName, sizeof(UPDATE_LOADER_NAME)); -} - -_THUMB2 void loader_setRunFwName(char *fileName) -{ - strncpy((char *)RUN_FW_NAME, fileName, sizeof(RUN_FW_NAME)); -} - -_THUMB2 void loader_setRecoveryFwName(char *fileName) -{ - strncpy((char *)RECOVERY_FW_NAME, fileName, sizeof(RECOVERY_FW_NAME)); -} - -_THUMB2 void loader_setRecoveryPartitionID(UINT32 partition_id) -{ - g_uiPartitionID = partition_id; -} - -_THUMB2 void loader_setVersion(UINT32 version) -{ - g_uiVersion = version; -} - -_THUMB2 void loader_installSpecialKeyCB(LDR_SPECIAL_KEY_CB callback) -{ - gSpecialKeyCallBack = callback; -} - -_THUMB2 void loader_installCardDetectCB(LDR_CARD_DETECT_CB callback) -{ - gCardDetectCallBack = callback; -} - -_THUMB2 void loader_installRecoveryTriggerCB(LDR_RECOVERY_TRIGGER_CB callback) -{ - gRecoveryTriggerCallBack = callback; -} - -_THUMB2 void loader_installFastbootKeyCB(LDR_FASTBOOT_KEY_CB callback) -{ - gFastbootKeyCallBack = callback; -} - -_THUMB2 void loader_setStorageIntType(STORAGEINT type, PSTORAGE_OBJ strg_obj) -{ - gStorageIntType = type; - int_strg_obj = strg_obj; -} diff --git a/mkall.sh b/mkall.sh index 5f8e2502e..b028d2d08 100755 --- a/mkall.sh +++ b/mkall.sh @@ -1,5 +1,8 @@ #!/bin/bash #用于gitlab-ci.yml编译使用 + +make app_clean + echo "Start compile." export ROOT_PATH=$PWD diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c index f93c9a456..cb9338552 100755 --- a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S530/DxHunting.c @@ -364,7 +364,9 @@ THREAD_RETTYPE IrCutCtrlThread(void *arg) THREAD_ENTRY(); Delay_DelayMs(80); - DrvGOIO_Turn_Onoff_IRCUT(2); //IR CUT power off + gpio_clearPin(GPIO_IRCUT_MEN1); + gpio_clearPin(GPIO_IRCUT_MEN2); + //DrvGOIO_Turn_Onoff_IRCUT(2); //IR CUT power off //DBG_DUMP("\r\n [%s:%d] s3 \r\n",__FUNCTION__,__LINE__); g_handle_ir_cut = 0; @@ -387,7 +389,9 @@ static void IrCutCtrlThreadInit(void) if(!g_handle_ir_cut){ DBG_ERR("[ERROR] IR CUT thread creat failed!\r\n"); Delay_DelayMs(80); - DrvGOIO_Turn_Onoff_IRCUT(2); + gpio_clearPin(GPIO_IRCUT_MEN1); + gpio_clearPin(GPIO_IRCUT_MEN2); + //DrvGOIO_Turn_Onoff_IRCUT(2); return ; } else diff --git a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c index 96577e6b4..29a88aabd 100755 --- a/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c +++ b/rtos/code/application/source/cardv/SrcCode/Dx/565_HUNTING_EVB_LINUX_4G_S550/DxHunting.c @@ -372,7 +372,9 @@ THREAD_RETTYPE IrCutCtrlThread(void *arg) THREAD_ENTRY(); Delay_DelayMs(80); - DrvGOIO_Turn_Onoff_IRCUT(2); //IR CUT power off + //DrvGOIO_Turn_Onoff_IRCUT(2); //IR CUT power off + gpio_clearPin(GPIO_IRCUT_MEN1); + gpio_clearPin(GPIO_IRCUT_MEN2); //DBG_DUMP("\r\n [%s:%d] s3 \r\n",__FUNCTION__,__LINE__); g_handle_ir_cut = 0; @@ -395,7 +397,9 @@ static void IrCutCtrlThreadInit(void) if(!g_handle_ir_cut){ DBG_ERR("[ERROR] IR CUT thread creat failed!\r\n"); Delay_DelayMs(80); - DrvGOIO_Turn_Onoff_IRCUT(2); + //DrvGOIO_Turn_Onoff_IRCUT(2); + gpio_clearPin(GPIO_IRCUT_MEN1); + gpio_clearPin(GPIO_IRCUT_MEN2); return ; } else diff --git a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h index 83cfbec13..058fb0aad 100755 --- a/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h +++ b/rtos/code/application/source/cardv/SrcCode/PrjCfg_HUNTING_S550.h @@ -957,7 +957,7 @@ #define SF_IQ_TEST DISABLE #define HW_S530 DISABLE #define PHOTO_ISP_STAMP DISABLE -#define SF_BASE_VERSION_FEA "R2.3" +#define SF_BASE_VERSION_FEA "R6.0" #define SF_GPS_SUPPORT 0 #define SF_SEND_LIST_ITEM_LENGTH 15 #define SF_4G_REGISTER_NETWORK_COUNT 230 diff --git a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c index 468644420..4c0a02ec5 100755 --- a/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c +++ b/rtos/code/application/source/cardv/SrcCode/System/sys_filesys.c @@ -70,8 +70,8 @@ static void card_insert_job(void) else { fastboot_set_done(BOOT_INIT_FILESYSOK); - sf_log_confg(); - sf_log_open(); + // sf_log_confg(); + // sf_log_open(); } #endif diff --git a/rtos/code/driver/na51089/source/mcu/sf_commu_mcu.c b/rtos/code/driver/na51089/source/mcu/sf_commu_mcu.c index 1e80ee3c4..3030c01dd 100644 --- a/rtos/code/driver/na51089/source/mcu/sf_commu_mcu.c +++ b/rtos/code/driver/na51089/source/mcu/sf_commu_mcu.c @@ -486,7 +486,7 @@ unsigned int sf_get_mcu_reg_ack_depack_many(unsigned char reg[], unsigned char v int sf_commu_wait(unsigned char cmd) { //sf_mcu_flag_set_done(cmd); - if(sf_mcu_flag_wait_done_timeout(cmd, 30)) + if(sf_mcu_flag_wait_done_timeout(cmd, 100)) { sf_commu_reset(); return - 1; diff --git a/rtos/code/driver/na51089/source/mcu/sf_led.c b/rtos/code/driver/na51089/source/mcu/sf_led.c index f6645341d..6a172e0f9 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_led.c +++ b/rtos/code/driver/na51089/source/mcu/sf_led.c @@ -338,7 +338,7 @@ void sf_led_init(void) static UINT8 dofirst = 1; printf("[%s:%d] s\n", __FUNCTION__, __LINE__); UINT8 startup = sf_get_power_on_mode(); - if(((PWR_ON_SETUP != startup) && (PWR_ON_AUTO != startup) && (PWR_ON_USB != startup))) + if(((PWR_ON_SETUP != startup) && (PWR_ON_USB != startup))) return; if(!dofirst) diff --git a/rtos/code/driver/na51089/source/mcu/sf_mcu.c b/rtos/code/driver/na51089/source/mcu/sf_mcu.c index 258aa0731..b0866f118 100755 --- a/rtos/code/driver/na51089/source/mcu/sf_mcu.c +++ b/rtos/code/driver/na51089/source/mcu/sf_mcu.c @@ -691,13 +691,14 @@ UINT8 sf_get_power_on_mode(void) if(gpio_getIntStatus(GPIO_INT_USBPLUGIN)) { PowerOnMode = PWR_ON_USB; + ConfigureModeFlag = 1; } else{ //PowerOnMode = sf_mcu_power_on_para_get(SF_MCU_POWERON); PowerOnMode = sf_mcu_power_on_para_get(SF_MCU_STARTMODE); //PowerOnMode &= 0x0f; //sf_is_night_mode(1); - if(1 == PowerOnMode) + if((PWR_ON_SETUP == PowerOnMode) || (PWR_ON_MCU_UPDATA == PowerOnMode)) { ConfigureModeFlag = 1; }