/** * @file gpu_demo.c * @brief 本文件用于gpu驱动 demo 测试,注意测试代码编写规范,后续可用作第三方框架使用GPU参考。 * @version V1.0.0 * @date 2024-05-09 */ #include "typedef.h" // 数据类型等定义 #include "rect.h" // rect 结构体等定义 #include "dbi.h" // dbi 驱动,推屏模块 #include "res/resfile.h" // res 杰理 UI 资源管理 #include "ui_resource.h" // res 资源使用 #include "jlgpu_math.h" // gpu 变换矩阵 #include "jlgpu_driver.h" // gpu 驱动 #include "lcd/lcd_drive.h" // lcd 驱动 #if (defined CONFIG_JLGPU_DEMO_ENABLE && CONFIG_JLGPU_DEMO_ENABLE) #define LOG_TAG_CONST GPU_DEMO #define LOG_TAG "[GPU DEMO]" #define LOG_ERROR_ENABLE #define LOG_DEBUG_ENABLE #define LOG_INFO_ENABLE /* #define LOG_DUMP_ENABLE */ #define LOG_CLI_ENABLE #include "debug.h" /* lcd 控制api */ static struct lcd_interface *lcd = NULL; /* lcd 信息,宽高、buf 等 */ static struct lcd_info lcdinfo = {0}; /* 静态 ram 的 RGB565 图标 */ static u8 icon_48x49_rgb565[4704] ALIGNED(4) = {//format:r5g3 g3b5 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x20, 0x60, 0x28, 0x81, 0x28, 0x81, 0x20, 0x60, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x40, 0xE1, 0x81, 0xC3, 0xB2, 0x65, 0xDA, 0xE6, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xDA, 0xE6, 0xB2, 0x65, 0x81, 0xC3, 0x40, 0xE1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xA1, 0x9A, 0x04, 0xE3, 0x06, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xE3, 0x06, 0x9A, 0x04, 0x30, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xC1, 0xB2, 0x64, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xB2, 0x64, 0x38, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x40, 0xA2, 0x04, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xA2, 0x04, 0x10, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE1, 0xDA, 0xE6, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xDA, 0xE6, 0x40, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79, 0x83, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x79, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xE3, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x91, 0xE4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x89, 0xE3, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x89, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x83, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x71, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xC1, 0xEB, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xCA, 0xF3, 0xEA, 0xF3, 0xEA, 0xF3, 0xEA, 0xF3, 0xEA, 0xF3, 0xEA, 0xF3, 0xEA, 0xF3, 0xEA, 0xF3, 0xEA, 0xF3, 0x67, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xEB, 0x26, 0x40, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xDA, 0xC5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFE, 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xF3, 0xC9, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xDA, 0xC5, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x91, 0xE3, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xEF, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x91, 0xE3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x81, 0xEB, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x31, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xEB, 0x26, 0x28, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x24, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xA9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x72, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xA2, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x60, 0xEB, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xFE, 0x15, 0xFD, 0xB3, 0xFD, 0xD4, 0xFE, 0x98, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB4, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xEB, 0x26, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x79, 0x83, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x4C, 0xFF, 0xFF, 0xFE, 0x15, 0xF4, 0x4C, 0xF5, 0x31, 0xFE, 0x36, 0xFE, 0x98, 0xFE, 0x77, 0xFD, 0xB3, 0xF4, 0x8D, 0xF5, 0x10, 0xFF, 0x9D, 0xFE, 0x15, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x79, 0xA3, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xA5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xC9, 0xF4, 0x6C, 0xF3, 0x68, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xA9, 0xF4, 0xAE, 0xFE, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0xF4, 0xCF, 0xF4, 0x4C, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xEA, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xCA, 0xA5, 0x00, 0x00, 0x20, 0x80, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFD, 0xF4, 0xFF, 0x3B, 0xF5, 0x10, 0xF3, 0x47, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x0B, 0xFF, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x92, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0xAE, 0xFF, 0xFF, 0xFD, 0xB3, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x20, 0x80, 0x61, 0x42, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFD, 0xB4, 0xFF, 0x9E, 0xFF, 0x5C, 0xF4, 0xCF, 0xF3, 0x47, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xC9, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x51, 0xF4, 0x0B, 0xF4, 0x2B, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x4C, 0xFF, 0xDE, 0xFF, 0xFF, 0xFD, 0x92, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x61, 0x42, 0x91, 0xE4, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xA9, 0xFD, 0xF5, 0xFF, 0xDF, 0xFF, 0x3B, 0xF4, 0x8E, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFE, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB3, 0xFE, 0xFA, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x0B, 0xFF, 0xBE, 0xFF, 0xFF, 0xFD, 0xF5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x91, 0xE4, 0xBA, 0x64, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x68, 0xFD, 0x72, 0xFF, 0xBE, 0xFF, 0x7C, 0xF5, 0x10, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xF5, 0x10, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x77, 0xF3, 0xA9, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xBA, 0x64, 0xD2, 0xC5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF5, 0x31, 0xFF, 0x5C, 0xFF, 0x9D, 0xF5, 0x51, 0xF3, 0x88, 0xF3, 0x26, 0xF3, 0x26, 0xFE, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xF3, 0x68, 0xF3, 0xCA, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x68, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF5, 0x31, 0xFF, 0xFF, 0xFF, 0xDF, 0xF4, 0x8D, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xD2, 0xC5, 0xE3, 0x06, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFE, 0x98, 0xFF, 0xFF, 0xFF, 0x5C, 0xF4, 0x2B, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFF, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xF3, 0x68, 0xF3, 0xCA, 0xFF, 0x7D, 0xFF, 0xFF, 0xFE, 0x98, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x8D, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x68, 0xFF, 0x9D, 0xFF, 0xFF, 0xFE, 0xB9, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xE3, 0x06, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x6C, 0xFE, 0xD9, 0xFF, 0xDE, 0xFE, 0x57, 0xF3, 0xEA, 0xF3, 0x26, 0xF3, 0x26, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xF3, 0x68, 0xF3, 0xCA, 0xFF, 0x7D, 0xFF, 0xFF, 0xFD, 0x72, 0xF3, 0x26, 0xFE, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x47, 0xFE, 0xB9, 0xFF, 0xFF, 0xFF, 0x5C, 0xF3, 0x88, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xEB, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x47, 0xF5, 0x10, 0xFF, 0xBE, 0xFF, 0x9D, 0xFD, 0x51, 0xF3, 0x26, 0xF3, 0x26, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x88, 0xF3, 0xCA, 0xFF, 0x7C, 0xFF, 0xFF, 0xFD, 0x72, 0xF3, 0x26, 0xF5, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xF3, 0x26, 0xF3, 0x26, 0xFD, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x4C, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xEB, 0x26, 0xE2, 0xE6, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x6C, 0xFE, 0xD9, 0xFF, 0xDE, 0xFE, 0x57, 0xF3, 0xEA, 0xF3, 0x26, 0xF3, 0x26, 0xFF, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x98, 0xFF, 0x7D, 0xFF, 0xFF, 0xFD, 0x72, 0xF3, 0x26, 0xF5, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x8D, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x47, 0xFE, 0xD9, 0xFF, 0xFF, 0xFF, 0x5C, 0xF3, 0x88, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xE2, 0xE6, 0xCA, 0xA5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFE, 0x98, 0xFF, 0xFF, 0xFF, 0x5C, 0xF4, 0x2B, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFE, 0x56, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD4, 0xF3, 0x26, 0xF5, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x88, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x68, 0xFF, 0x9D, 0xFF, 0xFF, 0xFE, 0xB9, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xCA, 0xA5, 0xAA, 0x44, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF5, 0x31, 0xFF, 0x5C, 0xFF, 0x9D, 0xF5, 0x51, 0xF3, 0x88, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x8D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x16, 0xFD, 0x72, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x78, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF5, 0x31, 0xFF, 0xFF, 0xFF, 0xDF, 0xF4, 0x8D, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xAA, 0x24, 0x81, 0xA3, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x68, 0xFD, 0x72, 0xFF, 0xBE, 0xFF, 0x7C, 0xF5, 0x10, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFE, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xFE, 0x98, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x81, 0xA3, 0x49, 0x02, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xA9, 0xFD, 0xF5, 0xFF, 0xDF, 0xFF, 0x3B, 0xF4, 0x8E, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xC9, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x72, 0xF4, 0xCF, 0xF5, 0x10, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x0B, 0xFF, 0xBE, 0xFF, 0xFF, 0xFD, 0xF5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x49, 0x02, 0x08, 0x20, 0xEB, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFD, 0xB4, 0xFF, 0x9E, 0xFF, 0x5C, 0xF4, 0xCF, 0xF3, 0x47, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x2B, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB3, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x4C, 0xFF, 0xDE, 0xFF, 0xFF, 0xFD, 0x92, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xEB, 0x26, 0x08, 0x20, 0x00, 0x00, 0xB2, 0x44, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFD, 0xF4, 0xFF, 0x3B, 0xF5, 0x10, 0xF3, 0x47, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xA9, 0xF4, 0xCF, 0xFE, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0xF4, 0xF0, 0xF4, 0x6D, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0xAE, 0xFF, 0xFF, 0xFD, 0xB3, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xB2, 0x44, 0x00, 0x00, 0x00, 0x00, 0x59, 0x22, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xC9, 0xF4, 0x6C, 0xF3, 0x68, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF4, 0x4C, 0xFF, 0xFF, 0xFE, 0x15, 0xF4, 0x6D, 0xFD, 0x72, 0xFE, 0x57, 0xFE, 0xB9, 0xFE, 0x98, 0xFD, 0xD4, 0xF4, 0xAE, 0xF5, 0x31, 0xFF, 0x9D, 0xFE, 0x15, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xEA, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x59, 0x22, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xDA, 0xE6, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0xFE, 0x15, 0xFD, 0xB3, 0xFD, 0xD4, 0xFE, 0x98, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB4, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xDA, 0xE6, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x83, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xA9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x72, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x71, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0xDA, 0xE6, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x31, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xDA, 0xE6, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x22, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xEF, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x59, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0x44, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xFE, 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xF3, 0xA9, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xAA, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x20, 0xD2, 0xC5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0xC9, 0xF3, 0xCA, 0xF3, 0xCA, 0xF3, 0xCA, 0xF3, 0xCA, 0xF3, 0xCA, 0xF3, 0xCA, 0xF3, 0xCA, 0xF3, 0xCA, 0xF3, 0x67, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xD2, 0xC5, 0x10, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xA1, 0xE3, 0x06, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xE3, 0x06, 0x30, 0xA1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE1, 0xEB, 0x06, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xEB, 0x06, 0x40, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xC1, 0xE3, 0x06, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xE2, 0xE6, 0x38, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x81, 0xCA, 0xA5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xCA, 0xA5, 0x28, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x20, 0x9A, 0x04, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0x9A, 0x04, 0x08, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xE2, 0xCA, 0xA5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xCA, 0xA5, 0x48, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x59, 0x42, 0xCA, 0xA5, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xCA, 0xA5, 0x59, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xC1, 0x91, 0xE4, 0xDA, 0xE6, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xF3, 0x26, 0xDA, 0xE6, 0x91, 0xE4, 0x38, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x81, 0x59, 0x22, 0x81, 0xA3, 0xA2, 0x24, 0xBA, 0x65, 0xC2, 0x85, 0xC2, 0x85, 0xBA, 0x65, 0xA2, 0x24, 0x81, 0xA3, 0x59, 0x22, 0x28, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /* 静态 ram 的 ARGB8565 图标 */ static u8 icon_48x49_argb8565[7056] ALIGNED(4) = {//format:a8 r5g3 g3b5 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xEB, 0x07, 0x22, 0xF3, 0x46, 0x2B, 0xF3, 0x26, 0x2B, 0xF3, 0x26, 0x22, 0xF3, 0x46, 0x0D, 0xFB, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xFB, 0x08, 0x4A, 0xF3, 0x26, 0x8B, 0xF3, 0x26, 0xC1, 0xF3, 0x26, 0xEC, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xEC, 0xF3, 0x26, 0xC1, 0xF3, 0x26, 0x8B, 0xF3, 0x26, 0x4A, 0xF3, 0x26, 0x08, 0xFB, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0xF3, 0x26, 0xA0, 0xF3, 0x26, 0xF2, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xF2, 0xF3, 0x26, 0xA0, 0xF3, 0x26, 0x38, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xF3, 0x26, 0xBD, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xBD, 0xF3, 0x26, 0x3E, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xF3, 0x46, 0xAB, 0xF3, 0x26, 0xFE, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFE, 0xF3, 0x26, 0xAB, 0xF3, 0x26, 0x19, 0xEB, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0xF3, 0x26, 0xEB, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xEB, 0xF3, 0x26, 0x48, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF3, 0x26, 0xFD, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFD, 0xF3, 0x26, 0x80, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xFC, 0x00, 0x99, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x9A, 0xF3, 0x26, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x96, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x78, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xF3, 0x26, 0xFC, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xCA, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0x67, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFC, 0xF3, 0x26, 0x44, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xEB, 0x06, 0xE5, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFE, 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0xFF, 0xF3, 0xC9, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xE5, 0xF3, 0x26, 0x10, 0xEB, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xEF, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x98, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0xF3, 0x46, 0xFC, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x31, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFC, 0xF3, 0x26, 0x2C, 0xF3, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xA9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x72, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xAA, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0xF3, 0x26, 0xFC, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xFF, 0xFE, 0x15, 0xFF, 0xFD, 0xB3, 0xFF, 0xFD, 0xD4, 0xFF, 0xFE, 0x98, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB4, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFC, 0xF3, 0x26, 0x22, 0xF3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x15, 0xFF, 0xF4, 0x4C, 0xFF, 0xF5, 0x31, 0xFF, 0xFE, 0x36, 0xFF, 0xFE, 0x98, 0xFF, 0xFE, 0x77, 0xFF, 0xFD, 0xB3, 0xFF, 0xF4, 0x8D, 0xFF, 0xF5, 0x10, 0xFF, 0xFF, 0x9D, 0xFF, 0xFE, 0x15, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x83, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xC9, 0xFF, 0xF4, 0x6C, 0xFF, 0xF3, 0x68, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xA9, 0xFF, 0xF4, 0xAE, 0xFF, 0xFE, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3B, 0xFF, 0xF4, 0xCF, 0xFF, 0xF4, 0x4C, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xDB, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x27, 0xF3, 0x46, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFD, 0xF4, 0xFF, 0xFF, 0x3B, 0xFF, 0xF5, 0x10, 0xFF, 0xF3, 0x47, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x0B, 0xFF, 0xFF, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x92, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0xAE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB3, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x27, 0xF3, 0x46, 0x66, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFD, 0xB4, 0xFF, 0xFF, 0x9E, 0xFF, 0xFF, 0x5C, 0xFF, 0xF4, 0xCF, 0xFF, 0xF3, 0x47, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xC9, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x51, 0xFF, 0xF4, 0x0B, 0xFF, 0xF4, 0x2B, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x4C, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x92, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x66, 0xF3, 0x26, 0x9A, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xA9, 0xFF, 0xFD, 0xF5, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x3B, 0xFF, 0xF4, 0x8E, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFE, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB3, 0xFF, 0xFE, 0xFA, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x0B, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF5, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x9A, 0xF3, 0x26, 0xC3, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x68, 0xFF, 0xFD, 0x72, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0x7C, 0xFF, 0xF5, 0x10, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x6D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xFF, 0xF5, 0x10, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x77, 0xFF, 0xF3, 0xA9, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xC3, 0xF3, 0x26, 0xE1, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF5, 0x31, 0xFF, 0xFF, 0x5C, 0xFF, 0xFF, 0x9D, 0xFF, 0xF5, 0x51, 0xFF, 0xF3, 0x88, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFE, 0x36, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xFF, 0xF3, 0x68, 0xFF, 0xF3, 0xCA, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x68, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF5, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF4, 0x8D, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xE1, 0xF3, 0x26, 0xF4, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFE, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0xFF, 0xF4, 0x2B, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFF, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xFF, 0xF3, 0x68, 0xFF, 0xF3, 0xCA, 0xFF, 0xFF, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x98, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x8D, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x68, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB9, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xF4, 0xF3, 0x26, 0xFD, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x6C, 0xFF, 0xFE, 0xD9, 0xFF, 0xFF, 0xDE, 0xFF, 0xFE, 0x57, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFA, 0xFF, 0xF3, 0x68, 0xFF, 0xF3, 0xCA, 0xFF, 0xFF, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x72, 0xFF, 0xF3, 0x26, 0xFF, 0xFE, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x47, 0xFF, 0xFE, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0xFF, 0xF3, 0x88, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFD, 0xF3, 0x26, 0xFA, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x47, 0xFF, 0xF5, 0x10, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0x9D, 0xFF, 0xFD, 0x51, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x88, 0xFF, 0xF3, 0xCA, 0xFF, 0xFF, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x72, 0xFF, 0xF3, 0x26, 0xFF, 0xF5, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFD, 0x51, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x4C, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFA, 0xF3, 0x26, 0xEE, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x6C, 0xFF, 0xFE, 0xD9, 0xFF, 0xFF, 0xDE, 0xFF, 0xFE, 0x57, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFF, 0x5C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x98, 0xFF, 0xFF, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x72, 0xFF, 0xF3, 0x26, 0xFF, 0xF5, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0x8D, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x47, 0xFF, 0xFE, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0xFF, 0xF3, 0x88, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xEE, 0xF3, 0x26, 0xD7, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFE, 0x98, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0xFF, 0xF4, 0x2B, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFE, 0x56, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xD4, 0xFF, 0xF3, 0x26, 0xFF, 0xF5, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0x88, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x68, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xB9, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xD7, 0xF3, 0x26, 0xB5, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF5, 0x31, 0xFF, 0xFF, 0x5C, 0xFF, 0xFF, 0x9D, 0xFF, 0xF5, 0x51, 0xFF, 0xF3, 0x88, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x8D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x16, 0xFF, 0xFD, 0x72, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x78, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF5, 0x31, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF4, 0x8D, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xB5, 0xF3, 0x26, 0x88, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x68, 0xFF, 0xFD, 0x72, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0x7C, 0xFF, 0xF5, 0x10, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFE, 0xD9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xFF, 0xFE, 0x98, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0xCF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x10, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x88, 0xF3, 0x26, 0x50, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xA9, 0xFF, 0xFD, 0xF5, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0x3B, 0xFF, 0xF4, 0x8E, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xC9, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x72, 0xFF, 0xF4, 0xCF, 0xFF, 0xF5, 0x10, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x0B, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF5, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x50, 0xF3, 0x26, 0x10, 0xEB, 0x06, 0xFB, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFD, 0xB4, 0xFF, 0xFF, 0x9E, 0xFF, 0xFF, 0x5C, 0xFF, 0xF4, 0xCF, 0xFF, 0xF3, 0x47, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x2B, 0xFF, 0xFF, 0x9D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB3, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x4C, 0xFF, 0xFF, 0xDE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x92, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFB, 0xF3, 0x26, 0x10, 0xEB, 0x06, 0x00, 0x00, 0x00, 0xBB, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFD, 0xF4, 0xFF, 0xFF, 0x3B, 0xFF, 0xF5, 0x10, 0xFF, 0xF3, 0x47, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xA9, 0xFF, 0xF4, 0xCF, 0xFF, 0xFE, 0x57, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x5C, 0xFF, 0xF4, 0xF0, 0xFF, 0xF4, 0x6D, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0xAE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB3, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xBB, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xC9, 0xFF, 0xF4, 0x6C, 0xFF, 0xF3, 0x68, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF4, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x15, 0xFF, 0xF4, 0x6D, 0xFF, 0xFD, 0x72, 0xFF, 0xFE, 0x57, 0xFF, 0xFE, 0xB9, 0xFF, 0xFE, 0x98, 0xFF, 0xFD, 0xD4, 0xFF, 0xF4, 0xAE, 0xFF, 0xF5, 0x31, 0xFF, 0xFF, 0x9D, 0xFF, 0xFE, 0x15, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xEA, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x5F, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xE2, 0xA7, 0xEA, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0xFF, 0xFE, 0x15, 0xFF, 0xFD, 0xB3, 0xFF, 0xFD, 0xD4, 0xFF, 0xFE, 0x98, 0xFF, 0xFF, 0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xB4, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xEA, 0xF3, 0x26, 0x09, 0xE2, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xA9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0x72, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x7C, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xEB, 0x07, 0xE7, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x67, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x31, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xE7, 0xF3, 0x26, 0x0D, 0xEB, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5E, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF4, 0xEF, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0x5F, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xFE, 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x9D, 0xFF, 0xF3, 0xA9, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xB4, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0xF3, 0x06, 0xE2, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0xC9, 0xFF, 0xF3, 0xCA, 0xFF, 0xF3, 0xCA, 0xFF, 0xF3, 0xCA, 0xFF, 0xF3, 0xCA, 0xFF, 0xF3, 0xCA, 0xFF, 0xF3, 0xCA, 0xFF, 0xF3, 0xCA, 0xFF, 0xF3, 0xCA, 0xFF, 0xF3, 0x67, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xE3, 0xF3, 0x26, 0x15, 0xF3, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xF3, 0x26, 0xF3, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xF3, 0xF3, 0x26, 0x34, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xF3, 0x26, 0xF7, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xF7, 0xF3, 0x26, 0x45, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xF3, 0x26, 0xF1, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xEF, 0xF3, 0x26, 0x3E, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xF3, 0x26, 0xDA, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xDA, 0xF3, 0x26, 0x2D, 0xF3, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xEB, 0x07, 0xA4, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xA4, 0xF3, 0x26, 0x0D, 0xFB, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0xF3, 0x26, 0xDB, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xDB, 0xF3, 0x26, 0x4C, 0xF3, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xCB, 0x26, 0x64, 0xF3, 0x26, 0xD7, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xD7, 0xF3, 0x26, 0x64, 0xF3, 0x26, 0x05, 0xCB, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xF8, 0x00, 0x41, 0xF3, 0x26, 0x9B, 0xF3, 0x26, 0xE8, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xFF, 0xF3, 0x26, 0xE8, 0xF3, 0x26, 0x9B, 0xF3, 0x26, 0x41, 0xF3, 0x26, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0xF8, 0x00, 0x2B, 0xFB, 0x26, 0x62, 0xF3, 0x26, 0x8D, 0xF3, 0x26, 0xAD, 0xF3, 0x26, 0xC2, 0xF3, 0x26, 0xCC, 0xF3, 0x26, 0xCC, 0xF3, 0x26, 0xC2, 0xF3, 0x26, 0xAD, 0xF3, 0x26, 0x8D, 0xF3, 0x26, 0x62, 0xF3, 0x26, 0x2C, 0xF3, 0x46, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; /* ------------------------------------------------------------------------------------*/ /** * @brief jlgpu_draw_color_demo 纯色合成、切换测试示例。单独进行纯色刷屏 * 本测试使用分块推屏的方式,每次推分块都重新创建GPU任务进行合成 * * @Params color_argb8888 argb8888 颜色值 */ /* ------------------------------------------------------------------------------------*/ void jlgpu_draw_color_demo(u32 color_argb8888) { log_info("%s() start, color: 0x08%x\n", __func__, color_argb8888); int width = lcdinfo.width; int height = lcdinfo.height; int block_height = 16; // 16 行作为一个分块 int out_format = GPU_FORMAT_RGB565; int out_bpp = gpu_get_format_bpp(out_format); int out_stride = width * out_bpp / 8; int disp_buf_size = block_height * out_stride; log_info("%s() malloc display buf size: %d\n", __func__, disp_buf_size); /* 申请GPU输出缓存 */ uint8_t *dst = (uint8_t *)malloc(disp_buf_size); if (!dst) { log_error("%s(), %d. malloc display buf fail! size: %d\n", __func__, __LINE__, disp_buf_size); return; } else { memset(dst, 0, disp_buf_size); } /* 测试颜色分解为 A R G B 分量 */ uint8_t b = color_argb8888 & 0xff; uint8_t g = (color_argb8888 >> 8) & 0xff; uint8_t r = (color_argb8888 >> 16) & 0xff; uint8_t a = (color_argb8888 >> 24) & 0xff; log_info("%s(), argb888: 0x%08x, a: 0x%02x, r: 0x%02x, g: 0x%02x, b: 0x%02x\n", __func__, color_argb8888, a, r, g, b); uint8_t i = 0; int draw_height; int block_number = (height % block_height) ? ((height / block_height) + 1) : (height / block_height); log_info("%s(), draw height: %d, block_height: %d, block_number: %d\n", __func__, height, block_height, block_number); uint8_t mode = GPU_FILL; // GPU 任务类型 gpu_out_params_t out_param; gpu_basic_params_t basic_param; int x_min, x_max, y_min, y_max; /* 设置推屏区域 */ lcd_set_draw_area(0, width - 1, 0, height - 1); for (i = 0; i < block_number; i++) { if ((i + 1) * block_height < height) { draw_height = block_height; } else { draw_height = height - (i * block_height); } x_min = 0; x_max = width; y_min = i * block_height; y_max = i * block_height + draw_height; log_info("%s(), %d: draw[%d, %d, %d, %d]\n", __func__, i, x_min, y_min, x_max, y_max); memset(&out_param, 0, sizeof(out_param)); memset(&basic_param, 0, sizeof(basic_param)); out_param.data = dst; out_param.win_x_min = x_min; out_param.win_x_max = x_max; out_param.win_y_min = y_min; out_param.win_y_max = y_max; out_param.stride = out_stride; out_param.format = out_format; basic_param.act_x_min = x_min; basic_param.act_x_max = x_max; basic_param.act_y_min = y_min; basic_param.act_y_max = y_max; basic_param.alpha = a; basic_param.red = r; basic_param.green = g; basic_param.blue = b; basic_param.layer_en = 1; basic_param.global_alpha = 128; gpu_reset_all_regs(mode); // 清空GPU任务,并创建新的 GPU_FILL 任务 gpu_fill(&basic_param); // 配置GPU任务基本参数 gpu_set_out_layer(&out_param); // 配置GPU任务输出参数 /* gpu_dumcp_all_tasks(); // 打印所有的GPU任务信息 */ gpu_run(); // 启动GPU任务运行 gpu_wait_done(); // 等待GPU任务运行结束 if (!i) { /* 开始推屏时使用 kistart */ lcd_draw_kistart(dst, x_min, x_max - 1, y_min, y_max - 1); } else { /* 之后推屏时使用 continue 续传 */ lcd_draw_continue(dst, x_min, x_max - 1, y_min, y_max - 1); } } lcd_wait_busy(); // 等待 LCD 推屏结束再释放buf,注意这里使用同步等待接口,会阻塞CPU运行 free(dst); log_info("%s() end!!! \n", __func__); } /* ------------------------------------------------------------------------------------*/ /** * @brief jlgpu_draw_ram_image 使用内部ram图片合成推屏测试,注意、这里是单buf测试 * 本测试使用分块推屏的方式,一次创建GPU任务,通过不断更新输出位置并启动GPU运行,实现分块 * 合成并推屏。 * 注意:本测试使用单buf进行,但LCD推屏使用异步接口,因此每次调用推屏后有一个延时等待LCD * 推屏完成。 * * @Params img 图片指针 * @Params img_width 图片宽度 * @Params img_height 图片高度 * @Params img_format 图片格式 */ /* ------------------------------------------------------------------------------------*/ void jlgpu_draw_ram_image(u8 *img, int img_width, int img_height, int img_format) { log_info("%s() start. imb[%dx%d], format: %d\n", __func__, img_width, img_height, img_format); /* 输出配置 */ int width = lcdinfo.width; int height = lcdinfo.height; int out_format = GPU_FORMAT_RGB565; int out_bpp = gpu_get_format_bpp(out_format) / 8; int out_stride = width * out_bpp; int block_height = 16; /* 申请 GPU 输出缓存 */ uint8_t *dst = (uint8_t *)malloc(block_height * out_stride); log_info("%s(), malloc display buf size: %d\n", __func__, block_height * out_stride); /* 背景任务的颜色 */ uint8_t a = 0xff; uint8_t r = 0xff; uint8_t g = 0xff; uint8_t b = 0xff; log_info("%s(), background color(%d, %d, %d, %d)\n", __func__, a, r, g, b); /* 背景任务配置 */ gpu_basic_params_t bg_basic_param = {0}; bg_basic_param.act_x_min = 0; bg_basic_param.act_x_max = width; bg_basic_param.act_y_min = 0; bg_basic_param.act_y_max = height; bg_basic_param.alpha = a; bg_basic_param.red = r; bg_basic_param.green = g; bg_basic_param.blue = b; bg_basic_param.layer_en = 1; bg_basic_param.global_alpha = 128; /* 清空 gpu 任务,并创建填充任务作为背景 */ gpu_reset_all_regs(GPU_FILL); /* 配置背景任务 */ gpu_fill(&bg_basic_param); /* 图片任务信息 */ int in_format = img_format; int in_bpp = gpu_get_format_bpp(in_format) / 8; int in_stride = img_width * in_bpp; /* 创建图片任务 */ gpu_create_task(GPU_TEXTURE); /* 图片任务配置 */ int img_x = (lcdinfo.width - img_width) / 2; int img_y = (lcdinfo.height - img_height) / 2; gpu_basic_params_t basic_param = {0}; memset(&basic_param, 0, sizeof(basic_param)); basic_param.act_x_min = img_x; basic_param.act_x_max = img_x + img_width; basic_param.act_y_min = img_y; basic_param.act_y_max = img_y + img_height; basic_param.global_alpha = 128; basic_param.blend_mode = 0; basic_param.premult = 0; basic_param.layer_en = 1; /* 纹理信息配置 */ gpu_texture_params_t texture_param = {0}; texture_param.adr_mode = 1; texture_param.data = (uint8_t *)img; texture_param.format = in_format; texture_param.compress_mode = 0; texture_param.stride = in_stride; texture_param.compress_size = img_width; /* 设置图片任务配置到GPU任务 */ gpu_texture(&basic_param, &texture_param); /* 启动 GPU 合成并输出到LCD */ gpu_out_params_t out_param; int i, x_min, x_max, y_min, y_max; int draw_height; int block_number = (height % block_height) ? ((height / block_height) + 1) : (height / block_height); for (i = 0; i < block_number; i++) { if ((i + 1) * block_height < height) { draw_height = block_height; } else { draw_height = height - (i * block_height); } x_min = 0; x_max = width; y_min = i * block_height; y_max = i * block_height + draw_height; log_info("%s(), %d: draw[%d, %d, %d, %d]\n", __func__, i, x_min, y_min, x_max, y_max); memset(&out_param, 0, sizeof(out_param)); out_param.data = dst; out_param.win_x_min = x_min; out_param.win_x_max = x_max; out_param.win_y_min = y_min; out_param.win_y_max = y_max; out_param.stride = out_stride; out_param.format = out_format; gpu_set_out_layer(&out_param); /* gpu_dumcp_all_tasks(); */ gpu_run(); gpu_wait_done(); if (!i) { lcd_draw_kistart(dst, x_min, x_max - 1, y_min, y_max - 1); } else { lcd_draw_continue(dst, x_min, x_max - 1, y_min, y_max - 1); } /* 注意:因为这里是单buf示例,单lcd推屏用的异步接口,因此这里适当延时等推屏完成 */ os_time_dly(10); } lcd_wait_busy(); // 阻塞等待LCD推屏结束 free(dst); log_info("%s() end.\n", __func__); } /* ------------------------------------------------------------------------------------*/ /** * @brief jlgpu_draw_flash_image 从flash获取图片显示,采用tab表配置gpu mmu命令; * 注意:本测试直接申请图片输出的缓存buf,不可使用太大的图片测试,否则申请内存失败导致测试失败。 * * @Params prj_id UI 工程ID * @Params image_id 图片 ID * @Params x 图片显示的X坐标 * @Params y 图片显示的Y坐标 */ /* ------------------------------------------------------------------------------------*/ void jlgpu_draw_flash_image(u32 prj_id, u32 image_id, int x, int y) { log_info("%s() start.\n", __func__); /* 获取图片资源在 flash 中的信息 */ struct image_file image = {0}; struct flash_file_info flash = {0}; jlui_res_get_image_info(prj_id, image_id, NULL, &image, &flash); log_info("%s() image[%dx%d], format:%d, offset:0x%x\n", __func__, image.width, image.height, image.format, image.offset); /* 打印 mmu_tab 表 */ uint8_t i; for (i = 0; i < flash.tab_size / 4; i++) { log_info("tab[%02d] = 0x%x\n", i, flash.tab[i]); } log_info("%s() flash info tab[0] offset: 0x%x\n", __func__, flash.offset); /* 输入信息 */ int width = image.width; int height = image.height; int in_format = res_format_to_gpu(image.format); int in_bpp = gpu_get_format_bpp(in_format) / 8; int in_stride = width * in_bpp; log_info("%s() in_format: %d, in_bpp: %d, in_stride: %d\n", __func__, in_format, in_bpp, in_stride); /* 输出信息 */ int out_format = GPU_FORMAT_RGB565;//lcdinfo.color_format; int out_bpp = gpu_get_format_bpp(out_format) / 8; int out_stride = width * out_bpp; log_info("%s(), out_format: %d, out_bpp: %d, out_stride: %d\n", __func__, out_format, out_bpp, out_stride); /* 合成区域、输出坐标 */ int x_min = x; int x_max = x + width; int y_min = y; int y_max = y + height; log_info("%s() draw area [%d, %d, %d, %d]\n", __func__, x_min, y_min, x_max, y_max); uint8_t *dst = (uint8_t *)malloc(height * out_stride); if (!dst) { log_error("%s() %d, malloc output buf fail!, size: %d\n", __func__, __LINE__, height * out_stride); return; } uint8_t blend_mode = 0; uint8_t adr_mode = 0; { uint8_t mode = GPU_TEXTURE; gpu_out_params_t out_param = {0}; gpu_basic_params_t basic_param = {0}; gpu_texture_params_t texture_param = {0}; out_param.data = dst; out_param.win_x_min = x_min; out_param.win_x_max = x_max; out_param.win_y_min = y_min; out_param.win_y_max = y_max; out_param.stride = out_stride; out_param.format = out_format; basic_param.act_x_min = x_min; basic_param.act_x_max = x_max; basic_param.act_y_min = y_min; basic_param.act_y_max = y_max; basic_param.global_alpha = 128; basic_param.blend_mode = blend_mode; basic_param.premult = 0; basic_param.layer_en = 1; texture_param.adr_mode = adr_mode; texture_param.data = (uint8_t *)flash.offset; texture_param.format = in_format; texture_param.compress_mode = 1; texture_param.stride = (width + 7) / 8 * 4; texture_param.compress_size = image.len; gpu_reset_all_regs(mode); gpu_set_texture_mmu((uint8_t *)flash.tab, 1, MMU_PAGE_4K, mode); gpu_texture(&basic_param, &texture_param); gpu_set_out_layer(&out_param); gpu_run(); gpu_wait_done(); lcd_set_draw_area(x_min, x_max - 1, y_min, y_max - 1); lcd_draw_kistart(dst, x_min, x_max - 1, y_min, y_max - 1); lcd_wait(); } free(dst); log_info("%s() end.\n", __func__); } void jlgpu_draw_flash_image_scale(u32 prj_id, u32 image_id, int x, int y) { log_info("%s() start.\n", __func__); gpu_matrix_t matrix; gpu_matrix_set_identity(&matrix); gpu_matrix_translate(&matrix, 0, 0); gpu_matrix_scale(&matrix, 0.5, 0.5); /* 获取图片资源在 flash 中的信息 */ struct image_file image = {0}; struct flash_file_info flash = {0}; jlui_res_get_image_info(prj_id, image_id, NULL, &image, &flash); log_info("%s() image[%dx%d], format:%d, offset:0x%x\n", __func__, image.width, image.height, image.format, image.offset); /* 打印 mmu_tab 表 */ uint8_t i; for (i = 0; i < flash.tab_size / 4; i++) { log_info("tab[%02d] = 0x%x\n", i, flash.tab[i]); } log_info("%s() flash info tab[0] offset: 0x%x\n", __func__, flash.offset); /* 输入信息 */ int width = image.width; int height = image.height; int in_format = res_format_to_gpu(image.format); int in_bpp = gpu_get_format_bpp(in_format) / 8; int in_stride = width * in_bpp; log_info("%s() in_format: %d, in_bpp: %d, in_stride: %d\n", __func__, in_format, in_bpp, in_stride); /* 输出信息 */ int out_format = GPU_FORMAT_RGB565;//lcdinfo.color_format; int out_bpp = gpu_get_format_bpp(out_format) / 8; int out_stride = width * out_bpp; log_info("%s(), out_format: %d, out_bpp: %d, out_stride: %d\n", __func__, out_format, out_bpp, out_stride); /* 合成区域、输出坐标 */ int x_min = x; int x_max = x + width; int y_min = y; int y_max = y + height; log_info("%s() draw area [%d, %d, %d, %d]\n", __func__, x_min, y_min, x_max, y_max); uint8_t *dst = (uint8_t *)malloc(height * out_stride); if (!dst) { log_error("%s() %d, malloc output buf fail!, size: %d\n", __func__, __LINE__, height * out_stride); return; } uint8_t blend_mode = 0; uint8_t adr_mode = 0; { uint8_t mode = GPU_TEXTURE_AFFINE; gpu_out_params_t out_param = {0}; gpu_basic_params_t basic_param = {0}; gpu_texture_params_t texture_param = {0}; out_param.data = dst; out_param.win_x_min = x_min; out_param.win_x_max = x_max; out_param.win_y_min = y_min; out_param.win_y_max = y_max; out_param.stride = out_stride; out_param.format = out_format; basic_param.act_x_min = x_min; basic_param.act_x_max = x_max; basic_param.act_y_min = y_min; basic_param.act_y_max = y_max; basic_param.global_alpha = 128; basic_param.blend_mode = blend_mode; basic_param.premult = 0; basic_param.layer_en = 1; texture_param.adr_mode = adr_mode; texture_param.data = (uint8_t *)flash.offset; texture_param.format = in_format; texture_param.compress_mode = 1; texture_param.stride = (width + 7) / 8 * 4; texture_param.compress_size = image.len; gpu_transform_params_t transform_param = {0}; transform_param.M00 = matrix.m[0][0]; transform_param.M01 = matrix.m[0][1]; transform_param.M02 = matrix.m[0][2] - 0.5 * transform_param.M00 - 0.5 * transform_param.M01 + 0.5; transform_param.M10 = matrix.m[1][0]; transform_param.M11 = matrix.m[1][1]; transform_param.M12 = matrix.m[1][2] - 0.5 * transform_param.M10 - 0.5 * transform_param.M11 + 0.5; transform_param.fg_x_min = 0; transform_param.fg_x_max = width; transform_param.fg_y_min = 0; transform_param.fg_y_max = height; transform_param.sample_mode = 1; //双线性插值 transform_param.shift_sel = 6; gpu_reset_all_regs(mode); gpu_set_texture_mmu((uint8_t *)flash.tab, 1, MMU_PAGE_4K, mode); gpu_texture_affine(&basic_param, &texture_param, &transform_param); gpu_set_out_layer(&out_param); gpu_run(); gpu_wait_done(); lcd_set_draw_area(x_min, x_max - 1, y_min, y_max - 1); lcd_draw_kistart(dst, x_min, x_max - 1, y_min, y_max - 1); lcd_wait(); } free(dst); log_info("%s() end.\n", __func__); } /* ------------------------------------------------------------------------------------*/ /** * @brief jlgpu_demo_task GPU demo 任务主函数 * * @Params arg lcd 配置信息 */ /* ------------------------------------------------------------------------------------*/ void jlgpu_demo_task(void *arg) { log_info("@@@ GPU demo task start running!\n"); if (!lcd) { lcd = lcd_get_hdl(); } if (lcd->init) { lcd->init(arg); } if (lcd->get_screen_info) { lcd->get_screen_info(&lcdinfo); } if (lcd->backlight_ctrl) { lcd->backlight_ctrl(100); } log_info("lcd init finish:\n"); log_info("lcd [%d x %d], buf_num: %d, buffer: 0x%p\n", lcdinfo.width, lcdinfo.height, lcdinfo.buf_num, lcdinfo.buffer); gpu_init(); // gpu 初始化 log_info("gpu init finish, start draw demo ===== :\n"); #if 1 /* 测试纯色切换 */ jlgpu_draw_color_demo(0x7fff00ff); u32 test_color[] = {0xffffffff, 0xffff0000, 0xff00ff00, 0xff0000ff, 0xff000000, 0xffffff00, 0xff00ffff, 0xffff00ff}; int i; for (i = 0; i < (sizeof(test_color) / sizeof(test_color[0])); i++) { jlgpu_draw_color_demo(test_color[i]); os_time_dly(100); } #endif #if 0 /* 内部ram图片合成测试 */ jlgpu_draw_ram_image(icon_48x49_rgb565, 48, 49, GPU_FORMAT_RGB565); #endif #if 0 /* 从flash读取图片并配置mmu合成测试 */ jlgpu_draw_flash_image(0, 0x010003, 0, 0); #endif #if 1 /* 从flash读取图片并配置mmu缩放测试 */ jlgpu_draw_flash_image_scale(0, 0x010003, 0, 0); #endif while (1) { putchar('G'); os_time_dly(10); } } /* ------------------------------------------------------------------------------------*/ /** * @brief jlgpu_demo_task_start gpu demo 任务启动 * * @Params name 任务名 * @Params arg 任务参数(与UI任务参数一致) * * @return !OS_NO_ERR 创建 gpu demo 任务失败 */ /* ------------------------------------------------------------------------------------*/ int jlgpu_demo_task_start(char *name, void *arg) { log_info("::========== %s(): create task[%s] start...\n", __func__, name); int err = task_create(jlgpu_demo_task, arg, name); if (err != OS_NO_ERR) { log_error("::<<<<<<<<<< %s(), create task[%s] fail: %d\n", __func__, name, err); } else { log_info("::>>>>>>>>>> %s(): create task[%s] succ.\n", __func__, name); } return err; } #endif