Просмотр исходного кода

add: 添加额外的epaper驱动, 并添加一个好像没什么用的iconv库

Wendal Chen 5 лет назад
Родитель
Сommit
0eb10111f4
97 измененных файлов с 32789 добавлено и 248 удалено
  1. 4 0
      Makefile.inc
  2. 5 0
      luat/include/luat_base.h
  3. 4 0
      luat/include/luat_spi.h
  4. 247 0
      luat/modules/lua_lib_iconv.c
  5. 13 5
      luat/modules/luat_lib_eink._c
  6. 596 0
      luat/modules/luat_lib_epaper.c
  7. 262 228
      luat/packages/eink/epd1in54.c
  8. 15 15
      luat/packages/eink/epd1in54.h
  9. 0 0
      luat/packages/eink/epd2in9._c
  10. 59 0
      luat/packages/epaper/DEV_Config.c
  11. 96 0
      luat/packages/epaper/DEV_Config.h
  12. 29 0
      luat/packages/epaper/Debug.h
  13. 391 0
      luat/packages/epaper/EPD_1in02d.c
  14. 47 0
      luat/packages/epaper/EPD_1in02d.h
  15. 300 0
      luat/packages/epaper/EPD_1in54.c
  16. 104 0
      luat/packages/epaper/EPD_1in54.h
  17. 270 0
      luat/packages/epaper/EPD_1in54_V2.c
  18. 46 0
      luat/packages/epaper/EPD_1in54_V2.h
  19. 348 0
      luat/packages/epaper/EPD_1in54b.c
  20. 108 0
      luat/packages/epaper/EPD_1in54b.h
  21. 194 0
      luat/packages/epaper/EPD_1in54b_V2.c
  22. 45 0
      luat/packages/epaper/EPD_1in54b_V2.h
  23. 240 0
      luat/packages/epaper/EPD_1in54c.c
  24. 95 0
      luat/packages/epaper/EPD_1in54c.h
  25. 9 0
      luat/packages/epaper/EPD_1in54f.h
  26. 255 0
      luat/packages/epaper/EPD_2in13.c
  27. 68 0
      luat/packages/epaper/EPD_2in13.h
  28. 364 0
      luat/packages/epaper/EPD_2in13_V2.c
  29. 72 0
      luat/packages/epaper/EPD_2in13_V2.h
  30. 197 0
      luat/packages/epaper/EPD_2in13b_V3.c
  31. 45 0
      luat/packages/epaper/EPD_2in13b_V3.h
  32. 247 0
      luat/packages/epaper/EPD_2in13bc.c
  33. 97 0
      luat/packages/epaper/EPD_2in13bc.h
  34. 461 0
      luat/packages/epaper/EPD_2in13d.c
  35. 78 0
      luat/packages/epaper/EPD_2in13d.h
  36. 259 0
      luat/packages/epaper/EPD_2in66.c
  37. 46 0
      luat/packages/epaper/EPD_2in66.h
  38. 213 0
      luat/packages/epaper/EPD_2in66b.c
  39. 44 0
      luat/packages/epaper/EPD_2in66b.h
  40. 614 0
      luat/packages/epaper/EPD_2in7.c
  41. 109 0
      luat/packages/epaper/EPD_2in7.h
  42. 369 0
      luat/packages/epaper/EPD_2in7b.c
  43. 103 0
      luat/packages/epaper/EPD_2in7b.h
  44. 296 0
      luat/packages/epaper/EPD_2in9.c
  45. 96 0
      luat/packages/epaper/EPD_2in9.h
  46. 282 0
      luat/packages/epaper/EPD_2in9_V2.c
  47. 47 0
      luat/packages/epaper/EPD_2in9_V2.h
  48. 189 0
      luat/packages/epaper/EPD_2in9b_V3.c
  49. 45 0
      luat/packages/epaper/EPD_2in9b_V3.h
  50. 240 0
      luat/packages/epaper/EPD_2in9bc.c
  51. 98 0
      luat/packages/epaper/EPD_2in9bc.h
  52. 446 0
      luat/packages/epaper/EPD_2in9d.c
  53. 69 0
      luat/packages/epaper/EPD_2in9d.h
  54. 585 0
      luat/packages/epaper/EPD_3in7.c
  55. 51 0
      luat/packages/epaper/EPD_3in7.h
  56. 706 0
      luat/packages/epaper/EPD_4in2.c
  57. 129 0
      luat/packages/epaper/EPD_4in2.h
  58. 184 0
      luat/packages/epaper/EPD_4in2b_V2.c
  59. 45 0
      luat/packages/epaper/EPD_4in2b_V2.h
  60. 233 0
      luat/packages/epaper/EPD_4in2bc.c
  61. 98 0
      luat/packages/epaper/EPD_4in2bc.h
  62. 265 0
      luat/packages/epaper/EPD_5in65f.c
  63. 61 0
      luat/packages/epaper/EPD_5in65f.h
  64. 270 0
      luat/packages/epaper/EPD_5in83.c
  65. 101 0
      luat/packages/epaper/EPD_5in83.h
  66. 196 0
      luat/packages/epaper/EPD_5in83_V2.c
  67. 44 0
      luat/packages/epaper/EPD_5in83_V2.h
  68. 312 0
      luat/packages/epaper/EPD_5in83b_V2.c
  69. 47 0
      luat/packages/epaper/EPD_5in83b_V2.h
  70. 337 0
      luat/packages/epaper/EPD_5in83bc.c
  71. 100 0
      luat/packages/epaper/EPD_5in83bc.h
  72. 271 0
      luat/packages/epaper/EPD_7in5.c
  73. 101 0
      luat/packages/epaper/EPD_7in5.h
  74. 292 0
      luat/packages/epaper/EPD_7in5_HD.c
  75. 47 0
      luat/packages/epaper/EPD_7in5_HD.h
  76. 230 0
      luat/packages/epaper/EPD_7in5_V2.c
  77. 50 0
      luat/packages/epaper/EPD_7in5_V2.h
  78. 363 0
      luat/packages/epaper/EPD_7in5b_HD.c
  79. 51 0
      luat/packages/epaper/EPD_7in5b_HD.h
  80. 286 0
      luat/packages/epaper/EPD_7in5b_V2.c
  81. 50 0
      luat/packages/epaper/EPD_7in5b_V2.h
  82. 331 0
      luat/packages/epaper/EPD_7in5bc.c
  83. 100 0
      luat/packages/epaper/EPD_7in5bc.h
  84. 868 0
      luat/packages/epaper/GUI_Paint.c
  85. 212 0
      luat/packages/epaper/GUI_Paint.h
  86. 187 0
      luat/packages/epaper/epd.c
  87. 47 0
      luat/packages/epaper/epd.h
  88. 10 0
      luat/packages/iconv/SConscript
  89. 92 0
      luat/packages/iconv/gb2312_to_ucs2.c
  90. 8277 0
      luat/packages/iconv/gb2312_to_ucs2_table.h
  91. 77 0
      luat/packages/iconv/iconv.c
  92. 36 0
      luat/packages/iconv/iconv.h
  93. 39 0
      luat/packages/iconv/prv_iconv.h
  94. 203 0
      luat/packages/iconv/ucs2_to_gb2312.c
  95. 581 0
      luat/packages/iconv/ucs2_to_gb2312_offset.h
  96. 6875 0
      luat/packages/iconv/ucs2_to_gb2312_table.h
  97. 373 0
      luat/packages/iconv/utf8_to_ucs2.c

+ 4 - 0
Makefile.inc

@@ -7,7 +7,9 @@ CFLAGS_INC    +=  -I $(LUATOS_DIR)/lua/include \
 				  -I $(LUATOS_DIR)/luat/packages/heap \
 				  -I $(LUATOS_DIR)/luat/packages/eink \
 				  -I $(LUATOS_DIR)/luat/packages/fonts \
+				  -I $(LUATOS_DIR)/luat/packages/epaper \
 				  -I $(LUATOS_DIR)/luat/packages/qrcode \
+				  -I $(LUATOS_DIR)/luat/packages/iconv \
 				  -I $(LUATOS_DIR)/bsp/air302/include 
 
 
@@ -19,8 +21,10 @@ LUATOS_SRC_DIRS += $(LUATOS_DIR)/lua/src \
 					$(LUATOS_DIR)/luat/packages/minmea \
 					$(LUATOS_DIR)/luat/packages/heap \
 				    $(LUATOS_DIR)/luat/packages/eink \
+				    $(LUATOS_DIR)/luat/packages/epaper \
 				    $(LUATOS_DIR)/luat/packages/fonts \
 				    $(LUATOS_DIR)/luat/packages/qrcode \
+				    $(LUATOS_DIR)/luat/packages/iconv \
 					$(LUATOS_DIR)/bsp/air302/src 
 
 

+ 5 - 0
luat/include/luat_base.h

@@ -91,6 +91,11 @@ LUAMOD_API int luaopen_m2m( lua_State *L);
 LUAMOD_API int luaopen_libcoap( lua_State *L);
 LUAMOD_API int luaopen_lpmem( lua_State *L);
 LUAMOD_API int luaopen_ctiot( lua_State *L);
+LUAMOD_API int luaopen_iconv(lua_State *L);
+LUAMOD_API int luaopen_nbiot( lua_State *L );
+LUAMOD_API int luaopen_libgnss( lua_State *L ) ;
+LUAMOD_API int luaopen_fatfs( lua_State *L );
+LUAMOD_API int luaopen_eink( lua_State *L);
 
 /** sprintf需要支持longlong值的打印, 提供平台无关的实现*/
 int l_sprintf(char *buf, size_t size, const char *fmt, ...);

+ 4 - 0
luat/include/luat_spi.h

@@ -1,4 +1,6 @@
 
+#ifndef LUAT_SPI
+#define LUAT_SPI
 #include "luat_base.h"
 
 typedef struct luat_spi
@@ -38,3 +40,5 @@ int luat_spi_transfer(int spi_id, const char* send_buf, char* recv_buf, size_t l
 int luat_spi_recv(int spi_id, char* recv_buf, size_t length);
 //发SPI数据,返回发送字节数
 int luat_spi_send(int spi_id, const char* send_buf, size_t length);
+
+#endif

+ 247 - 0
luat/modules/lua_lib_iconv.c

@@ -0,0 +1,247 @@
+/*
+ * luaiconv - Performs character set conversions in Lua
+ * (c) 2005-08 Alexandre Erwin Ittner <aittner@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE AUTHOR OR COPYRIGHT HOLDER BE LIABLE FOR ANY
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * If you use this package in a product, an acknowledgment in the product
+ * documentation would be greatly appreciated (but it is not required).
+ *
+ * $Id: luaiconv.c 54 2008-05-19 00:37:56Z dermeister $
+ *
+ */
+
+
+#include "lua.h"
+#include "lauxlib.h"
+#include <stdlib.h>
+
+#include "iconv.h"
+#include <errno.h>
+
+#include "luat_base.h"
+#include "luat_malloc.h"
+
+#define LIB_NAME                "iconv"
+#define LIB_VERSION             LIB_NAME " r5"
+#define ICONV_TYPENAME          "iconv_t"
+
+
+/* Compatibility between Lua 5.1+ and Lua 5.0 */
+#ifndef LUA_VERSION_NUM
+#define LUA_VERSION_NUM 0
+#endif
+#if LUA_VERSION_NUM < 501
+#define luaL_register(a, b, c) luaL_openlib((a), (b), (c), 0)
+#endif
+
+
+/* Emulates lua_(un)boxpointer from Lua 5.0 (don't exists on Lua 5.1) */
+#define boxptr(L, p)   (*(void**)(lua_newuserdata(L, sizeof(void*))) = (p))
+#define unboxptr(L, i) (*(void**)(lua_touserdata(L, i)))
+
+/* Table assumed on top */
+#define tblseticons(L, c, v)    \
+    lua_pushliteral(L, c);      \
+    lua_pushnumber(L, v);       \
+    lua_settable(L, -3);
+
+
+
+#define ERROR_NO_MEMORY     1
+#define ERROR_INVALID       2
+#define ERROR_INCOMPLETE    3
+#define ERROR_UNKNOWN       4
+
+
+static void push_iconv_t(lua_State *L, iconv_t cd) {
+    boxptr(L, cd);
+    luaL_getmetatable(L, ICONV_TYPENAME);
+    lua_setmetatable(L, -2);
+}
+
+
+static iconv_t get_iconv_t(lua_State *L, int i) {
+    if (luaL_checkudata(L, i, ICONV_TYPENAME) != NULL) {
+        iconv_t cd = unboxptr(L, i);
+        if (cd == (iconv_t) NULL)
+            luaL_error(L, "attempt to use an invalid " ICONV_TYPENAME);
+        return cd;
+    }
+    luaL_argerror(L, i, "type not match");
+    return NULL;
+}
+
+
+static int Liconv_open(lua_State *L) {
+    const char *tocode = luaL_checkstring(L, 1);
+    const char *fromcode = luaL_checkstring(L, 2);
+    iconv_t cd = iconv_open(tocode, fromcode);
+    if (cd != (iconv_t)(-1))
+        push_iconv_t(L, cd);    /* ok */
+    else
+        lua_pushnil(L);         /* erro */
+    return 1;
+}
+
+
+static int Liconv(lua_State *L) {
+    iconv_t cd = get_iconv_t(L, 1);
+    size_t ibleft = lua_rawlen(L, 2);
+    char *inbuf = (char*) luaL_checkstring(L, 2);
+    char *outbuf;
+    char *outbufs;
+    size_t obsize = (ibleft > 256) ? ibleft : 256; 
+    size_t obleft = obsize;
+    size_t ret = -1;
+    int hasone = 0;
+
+    outbuf = (char*) luat_heap_malloc(obsize * sizeof(char));
+    if (outbuf == NULL) {
+        lua_pushstring(L, "");
+        lua_pushnumber(L, ERROR_NO_MEMORY);
+        return 2;
+    }
+    outbufs = outbuf;
+
+    do {
+        ret = iconv(cd, &inbuf, &ibleft, &outbuf, &obleft);
+        if (ret == (size_t)(-1)) {
+            lua_pushlstring(L, outbufs, obsize - obleft);
+            if (hasone == 1)
+                lua_concat(L, 2);
+            hasone = 1;
+            // if (errno == EILSEQ) {
+            //     lua_pushnumber(L, ERROR_INVALID);
+            //     free(outbufs);
+            //     return 2;   /* Invalid character sequence */
+            // } else if (errno == EINVAL) {
+            //     lua_pushnumber(L, ERROR_INCOMPLETE);
+            //     free(outbufs);
+            //     return 2;   /* Incomplete character sequence */
+            // } else if (errno == E2BIG) {
+            //     obleft = obsize;    
+            //     outbuf = outbufs;
+            // } else {
+                lua_pushnumber(L, ERROR_UNKNOWN);
+                luat_heap_free(outbufs);
+                return 2; /* Unknown error */
+            // }
+        }
+    } while (ret != (size_t) 0);
+
+    lua_pushlstring(L, outbufs, obsize - obleft);
+    if (hasone == 1)
+        lua_concat(L, 2);
+    free(outbufs);
+    return 1;   /* Done */
+}
+
+
+
+#ifdef HAS_ICONVLIST /* a GNU extension? */
+
+static int push_one(unsigned int cnt, char *names[], void *data) {
+    lua_State *L = (lua_State*) data;
+    int n = (int) lua_tonumber(L, -1);
+    int i;
+
+    /* Stack: <tbl> n */
+    lua_remove(L, -1);    
+    for (i = 0; i < cnt; i++) {
+        /* Stack> <tbl> */
+        lua_pushnumber(L, n++);
+        lua_pushstring(L, names[i]);
+        /* Stack: <tbl> n <str> */
+        lua_settable(L, -3);
+    }
+    lua_pushnumber(L, n);
+    /* Stack: <tbl> n */
+    return 0;   
+}
+
+
+static int Liconvlist(lua_State *L) {
+    lua_newtable(L);
+    lua_pushnumber(L, 1);
+
+    /* Stack:   <tbl> 1 */
+    iconvlist(push_one, (void*) L);
+
+    /* Stack:   <tbl> n */
+    lua_remove(L, -1);
+    return 1;
+}
+
+#endif
+
+
+static int Liconv_close(lua_State *L) {
+    iconv_t cd = get_iconv_t(L, 1);
+    if (iconv_close(cd) == 0)
+        lua_pushboolean(L, 1);  /* ok */
+    else
+        lua_pushnil(L);         /* erro */
+    return 1;
+}
+
+#include "rotable.h"
+static const rotable_Reg inconvFuncs[] = {
+    { "open",   Liconv_open , 0},
+    { "new",    Liconv_open , 0},
+    { "iconv",  Liconv ,      0},
+#ifdef HAS_ICONVLIST
+    { "list",   Liconvlist , 0},
+#endif
+    { "ERROR_NO_MEMORY", NULL, ERROR_NO_MEMORY},
+    { "ERROR_INVALID", NULL, ERROR_INVALID},
+    { "ERROR_INCOMPLETE", NULL, ERROR_INCOMPLETE},
+    { "ERROR_UNKNOWN", NULL, ERROR_UNKNOWN},
+    { NULL, NULL, NULL}
+};
+
+
+static const rotable_Reg iconvMT[] = {
+    { "__gc", Liconv_close , 0},
+    { NULL, NULL, NULL}
+};
+
+
+LUAMOD_API int luaopen_iconv(lua_State *L) {
+    rotable_newlib(L, inconvFuncs);
+
+    // luaL_newmetatable(L, ICONV_TYPENAME);
+    // lua_pushliteral(L, "__index");
+    // rotable_newidx(L, iconvMT);
+    // lua_settable(L, -3);
+    // lua_pop(L, 1);
+
+
+    luaL_newmetatable(L, ICONV_TYPENAME);
+    lua_pushliteral(L, "__index");
+    lua_pushvalue(L, -3);
+    lua_settable(L, -3);
+    lua_pushliteral(L, "__gc");
+    lua_pushcfunction(L, Liconv_close);
+    lua_settable(L, -3);
+    lua_pop(L, 1);
+
+    return 1;
+}

+ 13 - 5
luat/modules/luat_lib_eink.c → luat/modules/luat_lib_eink._c

@@ -564,9 +564,17 @@ static int l_eink_weather_icon(lua_State *L)
     return 0;
 }
 
+static int l_eink_model(lua_State *L) {
+    if (lua_gettop(L) > 0) {
+        EPD_Model(luaL_checkinteger(L, 1));
+    }
+    return 0;
+}
+
 #include "rotable.h"
 static const rotable_Reg reg_eink[] =
 {
+    { "model",          l_eink_model,           0},
     { "setup",          l_eink_setup,           0},
     { "clear",          l_eink_clear,           0},
     { "setWin",         l_eink_setWin,          0},
@@ -576,7 +584,7 @@ static const rotable_Reg reg_eink[] =
     { "show",           l_eink_show,            0},
     { "rect",           l_eink_rect,            0},
     { "circle",         l_eink_circle,          0},
-    { "line",         l_eink_line,            0},
+    { "line",         l_eink_line,              0},
 
     { "qrcode",         l_eink_qrcode,          0},   
     { "bat",            l_eink_bat,             0},      
@@ -585,7 +593,7 @@ static const rotable_Reg reg_eink[] =
 	{ NULL,             NULL,                   0}
 };
 
-LUAMOD_API int luaopen_eink( lua_State *L ){
-    rotable_newlib(L, reg_eink);
-    return 1;
-}
+// LUAMOD_API int luaopen_eink( lua_State *L ){
+//     rotable_newlib(L, reg_eink);
+//     return 1;
+// }

+ 596 - 0
luat/modules/luat_lib_epaper.c

@@ -0,0 +1,596 @@
+/*
+@module  eink
+@summary 墨水屏操作库
+@version 1.0
+@date    2020.11.14
+*/
+#include "luat_base.h"
+#include "luat_log.h"
+#include "luat_sys.h"
+#include "luat_msgbus.h"
+#include "luat_timer.h"
+#include "luat_malloc.h"
+#include "luat_spi.h"
+
+#include "luat_gpio.h"
+
+// #include "epd1in54.h"
+// #include "epd2in9.h"
+
+#include "epd.h"
+#include "epdpaint.h"
+#include "imagedata.h"
+#include "qrcode.h"
+
+#include <stdlib.h>
+
+#include "u8g2.h"
+
+#define Pin_BUSY        (18)
+#define Pin_RES         (7)
+#define Pin_DC          (9)
+#define Pin_CS          (16)
+
+#define SPI_ID          (0)
+
+#define COLORED      0
+#define UNCOLORED    1
+
+#define LUAT_LOG_TAG "luat.eink"
+
+
+// static EPD epd; 
+static Paint paint;
+static unsigned char* frame_buffer;
+
+/**
+初始化eink
+@api eink.setup(full, spiid)
+@int 全屏刷新1,局部刷新0,默认是全屏刷新
+@int 所在的spi,默认是0
+@return boolean 成功返回true,否则返回false
+*/
+static int l_eink_setup(lua_State *L) {
+    int num = luaL_optinteger(L, 1, 1);
+    int spi_id = luaL_optinteger(L, 2, 0);
+
+    if (frame_buffer != NULL) {
+        lua_pushboolean(L, 1);
+        return 0;
+    }
+
+    luat_spi_t spi_config = {0};
+    spi_config.bandrate = 2000000U;//luaL_optinteger(L, 1, 2000000U); // 2000000U
+    spi_config.id = spi_id;
+    spi_config.cs = 255; // 默认无
+    spi_config.CPHA = 0; // CPHA0
+    spi_config.CPOL = 0; // CPOL0
+    spi_config.dataw = 8; // 8bit
+    spi_config.bit_dict = 1; // MSB=1, LSB=0
+    spi_config.master = 1; // master=1,slave=0
+    spi_config.mode = 1; // FULL=1, half=0
+
+    //LLOGD("setup GPIO for epd");
+    // TODO 事实上无法配置
+    luat_gpio_mode(luaL_optinteger(L, 3, Pin_BUSY), Luat_GPIO_INPUT, Luat_GPIO_PULLUP, Luat_GPIO_LOW);
+    luat_gpio_mode(luaL_optinteger(L, 4, Pin_RES), Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, Luat_GPIO_LOW);
+    luat_gpio_mode(luaL_optinteger(L, 5, Pin_DC), Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, Luat_GPIO_LOW);
+    luat_gpio_mode(luaL_optinteger(L, 6, Pin_CS), Luat_GPIO_OUTPUT, Luat_GPIO_PULLUP, Luat_GPIO_LOW);
+
+    //LLOGD("spi setup>>>");
+    int status = luat_spi_setup(&spi_config);
+    //LLOGD("spi setup<<<");
+    //EPD_Model(MODEL_1in54f);
+    int epd_w = 200; // TODO 如何配置为好呢?
+    int epd_h = 200; // TODO 如何配置为好呢?
+    if(status == 0)
+    {
+        LLOGD("spi setup complete, now setup epd");
+        if(num)
+            status = EPD_Init(1);
+        else
+            status = EPD_Init(0);
+
+        if (status != 0) {
+            LLOGD("e-Paper init failed");
+            return 0;
+        } 
+        frame_buffer = (unsigned char*)luat_heap_malloc(epd_w * epd_h / 8);
+        //   Paint paint;
+        Paint_Init(&paint, frame_buffer, epd_w, epd_h);
+        Paint_Clear(&paint, UNCOLORED);
+    }
+    //LLOGD("epd init complete");
+    lua_pushboolean(L, 1);
+    return 1;
+}
+
+
+/**
+清除绘图缓冲区
+@api eink.clear()
+@return nil 无返回值,不会马上刷新到设备
+*/
+static int l_eink_clear(lua_State *L)
+{
+    int colored = luaL_optinteger(L, 1, 1);
+    Paint_Clear(&paint, colored);
+    return 0;
+}
+
+/**
+设置窗口
+@api eink.setWin(width, height, rotate)
+@int width  宽度
+@int height 高度
+@int rotate 显示方向,0/1/2/3, 相当于旋转0度/90度/180度/270度
+@return nil 无返回值
+*/
+static int l_eink_setWin(lua_State *L)
+{
+    int width = luaL_checkinteger(L, 1);
+    int height = luaL_checkinteger(L, 2);
+    int rotate = luaL_checkinteger(L, 3);
+
+    Paint_SetWidth(&paint, width);
+    Paint_SetHeight(&paint, height);
+    Paint_SetRotate(&paint, rotate);
+    return 0;
+}
+
+/**
+获取窗口信息
+@api eink.getWin()
+@return int width  宽
+@return int height 高
+@return int rotate 旋转方向
+*/
+static int l_eink_getWin(lua_State *L)
+{
+    int width =  Paint_GetWidth(&paint);
+    int height = Paint_GetHeight(&paint);
+    int rotate = Paint_GetRotate(&paint);
+
+    lua_pushinteger(L, width);
+    lua_pushinteger(L, height);
+    lua_pushinteger(L, rotate);
+    return 3;
+}
+
+/**
+绘制字符串(仅ASCII)
+@api eink.print(x, y, str, colored, font)
+@int x坐标
+@int y坐标
+@string 字符串
+@int 默认是0
+@font 字体大小,默认12
+@return nil 无返回值
+*/
+static int l_eink_print(lua_State *L)
+{
+    size_t len;
+    int x           = luaL_checkinteger(L, 1);
+    int y           = luaL_checkinteger(L, 2);
+    const char *str = luaL_checklstring(L, 3, &len);
+    int colored     = luaL_optinteger(L, 4, 0);    
+    int font        = luaL_optinteger(L, 5, 12);
+
+
+    switch (font)
+    {
+        case 8:
+            Paint_DrawStringAt(&paint, x, y, str, &Font8, colored);
+            break;
+        case 12:
+            Paint_DrawStringAt(&paint, x, y, str, &Font12, colored);
+            break;
+        case 16:
+            Paint_DrawStringAt(&paint, x, y, str, &Font16, colored);
+            break;
+        case 20:
+            Paint_DrawStringAt(&paint, x, y, str, &Font20, colored);
+            break;
+        case 24:
+            Paint_DrawStringAt(&paint, x, y, str, &Font24, colored);
+            break;    
+        default:
+            break;
+    }
+    return 0;
+}
+
+// void u8g2_read_font_info(u8g2_font_info_t *font_info, const uint8_t *font);
+uint8_t luat_u8x8_gpio_and_delay(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
+const uint8_t *u8g2_font_get_glyph_data(u8g2_t *u8g2, uint16_t encoding);
+uint8_t * font_pix_find(uint16_t e, int font_pix_find);
+/**
+绘制字符串,支持中文
+@api eink.printcn(x, y, str, colored, font)
+@int x坐标
+@int y坐标
+@string 字符串
+@int 默认是0
+@font 字体大小,默认12
+@return nil 无返回值
+*/
+static int l_eink_printcn(lua_State *L)
+{
+    size_t len;
+    int x           = luaL_checkinteger(L, 1);
+    int y           = luaL_checkinteger(L, 2);
+    const char *str = luaL_checklstring(L, 3, &len);
+    int colored     = luaL_optinteger(L, 4, 0);    
+    int font_size        = luaL_optinteger(L, 5, 12);
+
+    //LLOGD("printcn font_size %d len %d", font_size, len);
+
+    // 解码数据 TODO 使用无u8g2的方案
+    u8g2_t *u8g2 = luat_heap_malloc(sizeof(u8g2_t));
+    u8g2_Setup_ssd1306_i2c_128x64_noname_f( u8g2, U8G2_R0, u8x8_byte_sw_i2c, luat_u8x8_gpio_and_delay);
+    u8g2_InitDisplay(u8g2);
+    u8g2_SetPowerSave(u8g2, 0);
+    u8g2->u8x8.next_cb = u8x8_utf8_next;
+
+    uint16_t e;
+    u8g2_uint_t delta, sum;
+    u8x8_utf8_init(u8g2_GetU8x8(u8g2));
+    sum = 0;
+    uint8_t* str2 = (uint8_t*)str;
+    for(;;)
+    {
+        e = u8g2->u8x8.next_cb(u8g2_GetU8x8(u8g2), (uint8_t)*str2);
+        //LLOGD("chinese >> 0x%04X", e);
+        if ( e == 0x0ffff )
+            break;
+        str2++;
+        // if (e != 0x0fffe && e < 0x007e) {
+        //     char ch[2] = {e, 0};
+        //     if (font_size == 16)
+        //         Paint_DrawStringAt(&paint, x, y, ch, &Font16, colored);
+        //     else if (font_size == 24)
+        //         Paint_DrawStringAt(&paint, x, y, ch, &Font24, colored);
+        //     x += font_size;
+        // }
+        // else 
+        if ( e != 0x0fffe )
+        {
+            //delta = u8g2_DrawGlyph(u8g2, x, y, e);
+            uint8_t * f = font_pix_find(e, font_size);
+            if (f != NULL) {
+                // 当前仅支持16p和24p
+                int datalen = font_size == 16 ? 32 : 72;
+                int xlen = font_size == 16 ? 2 : 3;
+                //LLOGD("found FONT DATA 0x%04X datalen=%d xlen=%d", e, datalen, xlen);
+                for (size_t i = 0; i < datalen; )
+                {
+                    for (size_t k = 0; k < xlen; k++)
+                    {
+                        uint8_t pix = f[i];
+                        //LLOGD("pix data %02X   x+j=%d y+j/2=%d", pix, x, y+i/2);
+                        for (size_t j = 0; j < 8; j++)
+                        {
+                            if ((pix >> (7-j)) & 0x01) {
+                                Paint_DrawPixel(&paint, x+j+k*8, y+i/xlen, colored);
+                            }
+                        }
+                        i++;
+                    }
+                }
+            }
+            else {
+                LLOGD("NOT found FONT DATA 0x%04X", e);
+            }
+
+            if (e <= 0x7E)
+                x += font_size / 2;
+            else
+            {
+                x += font_size;
+            }
+            
+        }
+    }
+
+    luat_heap_free(u8g2);
+
+    return 0;
+}
+
+/**
+将缓冲区图像输出到屏幕
+@api eink.show(x, y)
+@int x 输出的x坐标,默认0
+@int y 输出的y坐标,默认0
+@return nil 无返回值
+*/
+static int l_eink_show(lua_State *L)
+{
+    int x     = luaL_optinteger(L, 1, 0);
+    int y     = luaL_optinteger(L, 2, 0);
+    /* Display the frame_buffer */
+    //EPD_SetFrameMemory(&epd, frame_buffer, x, y, Paint_GetWidth(&paint), Paint_GetHeight(&paint));
+    //EPD_DisplayFrame(&epd);
+    EPD_Clear();
+    EPD_Display(frame_buffer, NULL);
+    return 0;
+}
+
+
+/**
+缓冲区绘制线
+@api eink.line(x, y, x2, y2, colored)
+@int 起点x坐标
+@int 起点y坐标
+@int 终点x坐标
+@int 终点y坐标
+@return nil 无返回值
+@usage 
+eink.line(0, 0, 10, 20, 0)
+*/
+static int l_eink_line(lua_State *L)
+{
+    int x       = luaL_checkinteger(L, 1);
+    int y       = luaL_checkinteger(L, 2);
+    int x2      = luaL_checkinteger(L, 3);
+    int y2      = luaL_checkinteger(L, 4);
+    int colored = luaL_optinteger(L, 5, 0);
+
+    Paint_DrawLine(&paint, x, y, x2, y2, colored);
+    return 0;
+}
+
+/**
+缓冲区绘制矩形
+@api eink.rect(x, y, x2, y2, colored, fill)
+@int 左上顶点x坐标
+@int 左上顶点y坐标
+@int 右下顶点x坐标
+@int 右下顶点y坐标
+@int 默认是0
+@int 是否填充,默认是0,不填充
+@return nil 无返回值
+@usage
+eink.rect(0, 0, 10, 20)
+eink.rect(0, 0, 10, 20, 1) -- Filled
+*/
+static int l_eink_rect(lua_State *L)
+{
+    int x      = luaL_checkinteger(L, 1);
+    int y      = luaL_checkinteger(L, 2);
+    int x2      = luaL_checkinteger(L, 3);
+    int y2      = luaL_checkinteger(L, 4);
+    int colored = luaL_optinteger(L, 5, 0);
+    int fill    = luaL_optinteger(L, 6, 0);
+
+    if(fill)
+        Paint_DrawFilledRectangle(&paint, x, y, x2, y2, colored);
+    else
+        Paint_DrawRectangle(&paint, x, y, x2, y2, colored);
+    return 0;
+}
+
+/**
+缓冲区绘制圆形
+@api eink.circle(x, y, radius, colored, fill)
+@int 圆心x坐标
+@int 圆心y坐标
+@int 半径
+@int 默认是0
+@int 是否填充,默认是0,不填充
+@return nil 无返回值
+@usage
+eink.circle(0, 0, 10)
+eink.circle(0, 0, 10, 1, 1) -- Filled
+*/
+static int l_eink_circle(lua_State *L)
+{
+    int x       = luaL_checkinteger(L, 1);
+    int y       = luaL_checkinteger(L, 2);
+    int radius  = luaL_checkinteger(L, 3);
+    int colored = luaL_optinteger(L, 4, 0);
+    int fill    = luaL_optinteger(L, 5, 0);
+
+    if(fill)
+        Paint_DrawFilledCircle(&paint, x, y, radius, colored);
+    else
+        Paint_DrawCircle(&paint, x, y, radius, colored);
+    return 0;
+}
+
+/**
+缓冲区绘制QRCode
+@api eink.qrcode(x, y, str, version)
+@int x坐标
+@int y坐标
+@string 二维码的内容
+@int 二维码版本号
+@return nil 无返回值
+*/
+static int l_eink_qrcode(lua_State *L)
+{
+    size_t len;
+    int x           = luaL_checkinteger(L, 1);
+    int y           = luaL_checkinteger(L, 2);
+    const char* str = luaL_checklstring(L, 3, &len);
+    int version     = luaL_checkinteger(L, 4);
+    // Create the QR code
+    QRCode qrcode;
+    uint8_t qrcodeData[qrcode_getBufferSize(version)];
+    qrcode_initText(&qrcode, qrcodeData, version, 0, str);   
+
+    for(int i = 0; i < qrcode.size; i++)
+    {
+        for (int j = 0; j < qrcode.size; j++)
+        {
+            qrcode_getModule(&qrcode, j, i) ? Paint_DrawPixel(&paint, x+j, y+i, COLORED) : Paint_DrawPixel(&paint, x+j, y+i, UNCOLORED);
+        }
+    }
+    return 0;
+}
+
+/**
+缓冲区绘制电池
+@api eink.bat(x, y, bat)
+@int x坐标
+@int y坐标
+@int 电池电压,单位毫伏
+@return nil 无返回值
+*/
+static int l_eink_bat(lua_State *L)
+{
+    int x           = luaL_checkinteger(L, 1);
+    int y           = luaL_checkinteger(L, 2);
+    int bat         = luaL_checkinteger(L, 3);
+    int batnum      = 0;
+        // eink.rect(0, 3, 2, 6)
+        // eink.rect(2, 0, 20, 9)
+        // eink.rect(9, 1, 19, 8, 0, 1)
+    if(bat < 4200 && bat > 4080)batnum = 100;
+    if(bat < 4080 && bat > 4000)batnum = 90;
+    if(bat < 4000 && bat > 3930)batnum = 80;
+    if(bat < 3930 && bat > 3870)batnum = 70;
+    if(bat < 3870 && bat > 3820)batnum = 60;
+    if(bat < 3820 && bat > 3790)batnum = 50;
+    if(bat < 3790 && bat > 3770)batnum = 40;
+    if(bat < 3770 && bat > 3730)batnum = 30;
+    if(bat < 3730 && bat > 3700)batnum = 20;
+    if(bat < 3700 && bat > 3680)batnum = 15;
+    if(bat < 3680 && bat > 3500)batnum = 10;
+    if(bat < 3500 && bat > 2500)batnum = 5;
+    batnum = 20 - (int)(batnum / 5) + 3;
+    // w外框
+    Paint_DrawRectangle(&paint, x+0, y+3, x+2, y+6, COLORED);
+    Paint_DrawRectangle(&paint, x+2, y+0, x+23, y+9, COLORED);
+    // 3 ~21   100 / 5
+    Paint_DrawFilledRectangle(&paint, x+batnum, y+1, x+22, y+8, COLORED);
+
+    return 0;
+}
+
+/**
+缓冲区绘制天气图标
+@api eink.weather_icon(x, y, code)
+@int x坐标
+@int y坐标
+@int 天气代号
+@return nil 无返回值
+*/
+static int l_eink_weather_icon(lua_State *L)
+{
+    size_t len;
+    int x           = luaL_checkinteger(L, 1);
+    int y           = luaL_checkinteger(L, 2);
+    int code        = luaL_checkinteger(L, 3);
+    const char* str = luaL_optlstring(L, 4, "nil", &len);
+    const unsigned char * icon = gImage_999;  
+
+    if (strcmp(str, "xue")      == 0)code = 401;
+    if (strcmp(str, "lei")      == 0)code = 302;
+    if (strcmp(str, "shachen")  == 0)code = 503;
+    if (strcmp(str, "wu")       == 0)code = 501;
+    if (strcmp(str, "bingbao")  == 0)code = 504;
+    if (strcmp(str, "yun")      == 0)code = 103;
+    if (strcmp(str, "yu")       == 0)code = 306;
+    if (strcmp(str, "yin")      == 0)code = 101;
+    if (strcmp(str, "qing")     == 0)code = 100;
+
+    // xue、lei、shachen、wu、bingbao、yun、yu、yin、qing
+
+    //if(code == 64)
+    // for(int i = 0; i < 64; i++)
+    // {
+    //     for (int j = 0; j < 8; j++)
+    //     {
+    //         for (int k = 0; k < 8; k++)
+    //             (gImage_103[i*8+j] << k )& 0x80 ? Paint_DrawPixel(&paint, x+j*8+k, y+i, COLORED) : Paint_DrawPixel(&paint, x+j*8+k, y+i, UNCOLORED);
+    //     }
+    // }
+    
+    switch (code)
+    {
+        case 100:icon = gImage_100;break;
+        case 101:icon = gImage_101;break;
+        case 102:icon = gImage_102;break;
+        case 103:icon = gImage_103;break;
+        case 104:icon = gImage_104;break;
+        case 200:icon = gImage_200;break;
+        case 201:icon = gImage_201;break;
+        case 205:icon = gImage_205;break;
+        case 208:icon = gImage_208;break;
+
+        case 301:icon = gImage_301;break;
+        case 302:icon = gImage_302;break;
+        case 303:icon = gImage_303;break;
+        case 304:icon = gImage_304;break;
+        case 305:icon = gImage_305;break;
+        case 306:icon = gImage_306;break;
+        case 307:icon = gImage_307;break;
+        case 308:icon = gImage_308;break;
+        case 309:icon = gImage_309;break;
+        case 310:icon = gImage_310;break;
+        case 311:icon = gImage_311;break;
+        case 312:icon = gImage_312;break;
+        case 313:icon = gImage_313;break;
+
+        case 400:icon = gImage_400;break;
+        case 401:icon = gImage_401;break;
+        case 402:icon = gImage_402;break;
+        case 403:icon = gImage_403;break;
+        case 404:icon = gImage_404;break;
+        case 405:icon = gImage_405;break;
+        case 406:icon = gImage_406;break;
+        case 407:icon = gImage_407;break;
+
+        case 500:icon = gImage_500;break;
+        case 501:icon = gImage_501;break;
+        case 502:icon = gImage_502;break;
+        case 503:icon = gImage_503;break;
+        case 504:icon = gImage_504;break;
+        case 507:icon = gImage_507;break;
+        case 508:icon = gImage_508;break;
+        case 900:icon = gImage_900;break;
+        case 901:icon = gImage_901;break;
+        case 999:icon = gImage_999;break;
+
+        default:
+            break;
+    }
+    for(int i = 0; i < 48; i++)
+    {
+        for (int j = 0; j < 6; j++)
+        {
+            for (int k = 0; k < 8; k++)
+                (icon[i*6+j] << k )& 0x80 ? Paint_DrawPixel(&paint, x+j*8+k, y+i, COLORED) : Paint_DrawPixel(&paint, x+j*8+k, y+i, UNCOLORED);
+        }
+    }
+
+
+    return 0;
+}
+
+#include "rotable.h"
+static const rotable_Reg reg_eink[] =
+{
+    { "setup",          l_eink_setup,           0},
+    { "clear",          l_eink_clear,           0},
+    { "setWin",         l_eink_setWin,          0},
+    { "getWin",         l_eink_getWin,          0},
+    { "print",          l_eink_print,           0},
+    { "printcn",        l_eink_printcn,         0},
+    { "show",           l_eink_show,            0},
+    { "rect",           l_eink_rect,            0},
+    { "circle",         l_eink_circle,          0},
+    { "line",         l_eink_line,            0},
+
+    { "qrcode",         l_eink_qrcode,          0},   
+    { "bat",            l_eink_bat,             0},      
+    { "weather_icon",   l_eink_weather_icon,    0},    
+
+	{ NULL,             NULL,                   0}
+};
+
+LUAMOD_API int luaopen_eink( lua_State *L ){
+    rotable_newlib(L, reg_eink);
+    return 1;
+}

+ 262 - 228
luat/packages/eink/epd1in54.c

@@ -29,10 +29,10 @@
 
 //#define CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT_INVERTED 0
 #define CONFIG_LV_DISPLAY_ORIENTATION_PORTRAIT 0
-#define EPD_WIDTH           200
-#define EPD_HEIGHT          200
-#define EPD_ROW_LEN         (EPD_HEIGHT / 8u)
-#define EPD_PARTIAL_CNT     5;
+#define EPD_1IN54F_WIDTH           200
+#define EPD_1IN54F_HEIGHT          200
+#define EPD_1IN54F_ROW_LEN         (EPD_1IN54F_HEIGHT / 8u)
+#define EPD_1IN54F_PARTIAL_CNT     5;
 
 static uint8_t partial_counter = 0;
 static const uint8_t lut_vcom_dc1[] = {
@@ -94,34 +94,34 @@ static const uint8_t lut_bb1[] = {
 
 
 
-static void EPD_load_partial_lut(EPD* epd)
+static void EPD_1IN54F_load_partial_lut(EPD* epd)
 {
-    EPD_SendCommand(epd,0x20); // LUT VCOM register
+    EPD_1IN54F_SendCommand(epd,0x20); // LUT VCOM register
     for (int i = 0; i < 56; i++)
-      EPD_SendData(epd, lut_vcom_dc1[i]);
-  //  EPD_SendData((uint8_t *)lut_vcom_dc1, sizeof(lut_vcom_dc1));
+      EPD_1IN54F_SendData(epd, lut_vcom_dc1[i]);
+  //  EPD_1IN54F_SendData((uint8_t *)lut_vcom_dc1, sizeof(lut_vcom_dc1));
 
-    EPD_SendCommand(epd,0x21); // LUT White-to-White
+    EPD_1IN54F_SendCommand(epd,0x21); // LUT White-to-White
     for (int i = 0; i < 56; i++)
-      EPD_SendData(epd, lut_ww1[i]);
-  //  EPD_SendData((uint8_t *)lut_ww1, sizeof(lut_ww1));
+      EPD_1IN54F_SendData(epd, lut_ww1[i]);
+  //  EPD_1IN54F_SendData((uint8_t *)lut_ww1, sizeof(lut_ww1));
 
-    EPD_SendCommand(epd,0x22); // LUT Black-to-White
-    //EPD_SendData((uint8_t *)lut_bw1, sizeof(lut_bw1));
+    EPD_1IN54F_SendCommand(epd,0x22); // LUT Black-to-White
+    //EPD_1IN54F_SendData((uint8_t *)lut_bw1, sizeof(lut_bw1));
     for (int i = 0; i < 56; i++)
-      EPD_SendData(epd, lut_bw1[i]);
+      EPD_1IN54F_SendData(epd, lut_bw1[i]);
 
-    EPD_SendCommand(epd,0x23); // LUT White-to-Black
-    //EPD_SendData((uint8_t *)lut_wb1,sizeof(lut_wb1));
+    EPD_1IN54F_SendCommand(epd,0x23); // LUT White-to-Black
+    //EPD_1IN54F_SendData((uint8_t *)lut_wb1,sizeof(lut_wb1));
     for (int i = 0; i < 56; i++)
-      EPD_SendData(epd, lut_wb1[i]);
+      EPD_1IN54F_SendData(epd, lut_wb1[i]);
 
-    EPD_SendCommand(epd,0x24); // LUT Black-to-Black
-    //EPD_SendData((uint8_t *)lut_bb1, sizeof(lut_bb1));
+    EPD_1IN54F_SendCommand(epd,0x24); // LUT Black-to-Black
+    //EPD_1IN54F_SendData((uint8_t *)lut_bb1, sizeof(lut_bb1));
     for (int i = 0; i < 56; i++)
-      EPD_SendData(epd, lut_bb1[i]);
+      EPD_1IN54F_SendData(epd, lut_bb1[i]);
 }
-static void EPD_partial_in(EPD* epd)
+static void EPD_1IN54F_partial_in(EPD* epd)
 {
 //    ESP_LOGD(TAG, "Partial in!");
 
@@ -133,24 +133,24 @@ static void EPD_partial_in(EPD* epd)
 #else
 #//error "Unsupported orientation - only portrait modes are supported for now"
 #endif
-    EPD_SendCommand(epd,0x00);
-   // EPD_SendData(pst_use_reg_lut, sizeof(pst_use_reg_lut));
+    EPD_1IN54F_SendCommand(epd,0x00);
+   // EPD_1IN54F_SendData(pst_use_reg_lut, sizeof(pst_use_reg_lut));
     for (int i = 0; i < 2; i++)
-      EPD_SendData(epd, pst_use_reg_lut[i]);
+      EPD_1IN54F_SendData(epd, pst_use_reg_lut[i]);
 
     // WORKAROUND: need to ignore OLD framebuffer or otherwise partial refresh won't work
     uint8_t vcom = 0xb7;
-    EPD_SendCommand(epd,0x50);
-    EPD_SendData(epd, vcom);
+    EPD_1IN54F_SendCommand(epd,0x50);
+    EPD_1IN54F_SendData(epd, vcom);
 
     // Dump LUT in
-    EPD_load_partial_lut(epd);
+    EPD_1IN54F_load_partial_lut(epd);
 
     // Go partial!
-    EPD_SendCommand(epd,0x91);
+    EPD_1IN54F_SendCommand(epd,0x91);
 }
 
-static void EPD_partial_out(EPD* epd)
+static void EPD_1IN54F_partial_out(EPD* epd)
 {
 //    ESP_LOGD(TAG, "Partial out!");
 
@@ -162,142 +162,142 @@ static void EPD_partial_out(EPD* epd)
 #else
 //#error "Unsupported orientation - only portrait modes are supported for now"
 #endif
-    EPD_SendCommand(epd,0x00);
-    //EPD_SendData(pst_use_otp_lut, sizeof(pst_use_otp_lut));
+    EPD_1IN54F_SendCommand(epd,0x00);
+    //EPD_1IN54F_SendData(pst_use_otp_lut, sizeof(pst_use_otp_lut));
     for (int i = 0; i < 2; i++)
-      EPD_SendData(epd, pst_use_otp_lut[i]);
+      EPD_1IN54F_SendData(epd, pst_use_otp_lut[i]);
 
     // WORKAROUND: re-enable OLD framebuffer to get a better full refresh
     uint8_t vcom = 0x97;
-    EPD_SendCommand(epd,0x50);
-    EPD_SendData(epd, vcom);
+    EPD_1IN54F_SendCommand(epd,0x50);
+    EPD_1IN54F_SendData(epd, vcom);
 
     // Out from partial!
-    EPD_SendCommand(epd,0x92);
+    EPD_1IN54F_SendCommand(epd,0x92);
 }
 
-int EPD_Init(EPD* epd, const unsigned char* lut) {
+int EPD_1IN54F_Init(EPD* epd, const unsigned char* lut) {
   epd->reset_pin = RST_PIN;
   epd->dc_pin = DC_PIN;
   epd->cs_pin = CS_PIN;
   epd->busy_pin = BUSY_PIN;
-  epd->width = EPD_WIDTH;
-  epd->height = EPD_HEIGHT;
+  epd->width = EPD_1IN54F_WIDTH;
+  epd->height = EPD_1IN54F_HEIGHT;
   /* this calls the peripheral hardware interface, see epdif */
   if (EpdInitCallback() != 0) {
     return -1;
   }
   /* EPD hardware init start */
-  EPD_Reset(epd);
+  EPD_1IN54F_Reset(epd);
   /*
-  EPD_SendCommand(epd, DRIVER_OUTPUT_CONTROL);
-  EPD_SendData(epd, (EPD_HEIGHT - 1) & 0xFF);
-  EPD_SendData(epd, ((EPD_HEIGHT - 1) >> 8) & 0xFF);
-  EPD_SendData(epd, 0x00);                     // GD = 0; SM = 0; TB = 0;
-  EPD_SendCommand(epd, BOOSTER_SOFT_START_CONTROL);
-  EPD_SendData(epd, 0xD7);
-  EPD_SendData(epd, 0xD6);
-  EPD_SendData(epd, 0x9D);
-  EPD_SendCommand(epd, WRITE_VCOM_REGISTER);
-  EPD_SendData(epd, 0xA8);                     // VCOM 7C
-  EPD_SendCommand(epd, SET_DUMMY_LINE_PERIOD);
-  EPD_SendData(epd, 0x1A);                     // 4 dummy lines per gate
-  EPD_SendCommand(epd, SET_GATE_TIME);
-  EPD_SendData(epd, 0x08);                     // 2us per line
-  EPD_SendCommand(epd, DATA_ENTRY_MODE_SETTING);
-  EPD_SendData(epd, 0x03);                     // X increment; Y increment
-  EPD_SetLut(epd, epd->lut);
+  EPD_1IN54F_SendCommand(epd, DRIVER_OUTPUT_CONTROL);
+  EPD_1IN54F_SendData(epd, (EPD_1IN54F_HEIGHT - 1) & 0xFF);
+  EPD_1IN54F_SendData(epd, ((EPD_1IN54F_HEIGHT - 1) >> 8) & 0xFF);
+  EPD_1IN54F_SendData(epd, 0x00);                     // GD = 0; SM = 0; TB = 0;
+  EPD_1IN54F_SendCommand(epd, BOOSTER_SOFT_START_CONTROL);
+  EPD_1IN54F_SendData(epd, 0xD7);
+  EPD_1IN54F_SendData(epd, 0xD6);
+  EPD_1IN54F_SendData(epd, 0x9D);
+  EPD_1IN54F_SendCommand(epd, WRITE_VCOM_REGISTER);
+  EPD_1IN54F_SendData(epd, 0xA8);                     // VCOM 7C
+  EPD_1IN54F_SendCommand(epd, SET_DUMMY_LINE_PERIOD);
+  EPD_1IN54F_SendData(epd, 0x1A);                     // 4 dummy lines per gate
+  EPD_1IN54F_SendCommand(epd, SET_GATE_TIME);
+  EPD_1IN54F_SendData(epd, 0x08);                     // 2us per line
+  EPD_1IN54F_SendCommand(epd, DATA_ENTRY_MODE_SETTING);
+  EPD_1IN54F_SendData(epd, 0x03);                     // X increment; Y increment
+  EPD_1IN54F_SetLut(epd, epd->lut);
   */
 ///*
-  EPD_SendCommand(epd,0x00); // panel setting
-  EPD_SendData (epd,0xdf);
-  EPD_SendData (epd,0x0e);
+  EPD_1IN54F_SendCommand(epd,0x00); // panel setting
+  EPD_1IN54F_SendData (epd,0xdf);
+  EPD_1IN54F_SendData (epd,0x0e);
 
-  EPD_SendCommand(epd,0x01); // power setting
-  EPD_SendData(epd,0x03);
-  EPD_SendData(epd,0x06); // 16V
-  EPD_SendData(epd,0x2A);//
-  EPD_SendData(epd,0x2A);//
+  EPD_1IN54F_SendCommand(epd,0x01); // power setting
+  EPD_1IN54F_SendData(epd,0x03);
+  EPD_1IN54F_SendData(epd,0x06); // 16V
+  EPD_1IN54F_SendData(epd,0x2A);//
+  EPD_1IN54F_SendData(epd,0x2A);//
 
-  EPD_SendCommand(epd,0x4D); // FITIinternal code
-  EPD_SendData (epd,0x55);
+  EPD_1IN54F_SendCommand(epd,0x4D); // FITIinternal code
+  EPD_1IN54F_SendData (epd,0x55);
 
-  EPD_SendCommand(epd,0xaa);
-  EPD_SendData (epd,0x0f);
+  EPD_1IN54F_SendCommand(epd,0xaa);
+  EPD_1IN54F_SendData (epd,0x0f);
 
-  EPD_SendCommand(epd,0xE9);
-  EPD_SendData (epd,0x02);
+  EPD_1IN54F_SendCommand(epd,0xE9);
+  EPD_1IN54F_SendData (epd,0x02);
 
-  EPD_SendCommand(epd,0xb6);
-  EPD_SendData (epd,0x11);
+  EPD_1IN54F_SendCommand(epd,0xb6);
+  EPD_1IN54F_SendData (epd,0x11);
 
-  EPD_SendCommand(epd,0xF3);
-  EPD_SendData (epd,0x0a);
+  EPD_1IN54F_SendCommand(epd,0xF3);
+  EPD_1IN54F_SendData (epd,0x0a);
 
-  EPD_SendCommand(epd,0x06); // boost soft start
-  EPD_SendData (epd,0xc7);
-  EPD_SendData (epd,0x0c);
-  EPD_SendData (epd,0x0c);
+  EPD_1IN54F_SendCommand(epd,0x06); // boost soft start
+  EPD_1IN54F_SendData (epd,0xc7);
+  EPD_1IN54F_SendData (epd,0x0c);
+  EPD_1IN54F_SendData (epd,0x0c);
 
-  EPD_SendCommand(epd,0x61); // resolution setting
-  EPD_SendData (epd,0xc8); // 200
-  EPD_SendData (epd,0x00);
-  EPD_SendData (epd,0xc8); // 200
+  EPD_1IN54F_SendCommand(epd,0x61); // resolution setting
+  EPD_1IN54F_SendData (epd,0xc8); // 200
+  EPD_1IN54F_SendData (epd,0x00);
+  EPD_1IN54F_SendData (epd,0xc8); // 200
 
-  EPD_SendCommand(epd,0x60); // Tcon setting
-  EPD_SendData (epd,0x00);
+  EPD_1IN54F_SendCommand(epd,0x60); // Tcon setting
+  EPD_1IN54F_SendData (epd,0x00);
 
-  EPD_SendCommand(epd,0x82); // VCOM DC setting
-  EPD_SendData (epd,0x12);
+  EPD_1IN54F_SendCommand(epd,0x82); // VCOM DC setting
+  EPD_1IN54F_SendData (epd,0x12);
 
-  EPD_SendCommand(epd,0x30); // PLL control
-  EPD_SendData (epd,0x3C);   // default 50Hz
+  EPD_1IN54F_SendCommand(epd,0x30); // PLL control
+  EPD_1IN54F_SendData (epd,0x3C);   // default 50Hz
 
-  EPD_SendCommand(epd,0X50); // VCOM and data interval
-  EPD_SendData(epd,0x97);//
+  EPD_1IN54F_SendCommand(epd,0X50); // VCOM and data interval
+  EPD_1IN54F_SendData(epd,0x97);//
 
-  EPD_SendCommand(epd,0XE3); // power saving register
-  EPD_SendData(epd,0x00); // default
+  EPD_1IN54F_SendCommand(epd,0XE3); // power saving register
+  EPD_1IN54F_SendData(epd,0x00); // default
 
-  EPD_SendCommand(epd,0X04);
+  EPD_1IN54F_SendCommand(epd,0X04);
 //*/
 
 /*  esp32 lib
-  EPD_SendCommand(epd,0x00); // panel setting
-  EPD_SendData (epd,0xdf);
-  EPD_SendData (epd,0x0e);
+  EPD_1IN54F_SendCommand(epd,0x00); // panel setting
+  EPD_1IN54F_SendData (epd,0xdf);
+  EPD_1IN54F_SendData (epd,0x0e);
 
-  EPD_SendCommand(epd,0x4d); // panel setting
-  EPD_SendData (epd,0x55);
+  EPD_1IN54F_SendCommand(epd,0x4d); // panel setting
+  EPD_1IN54F_SendData (epd,0x55);
 
-  EPD_SendCommand(epd,0xaa); // panel setting
-  EPD_SendData (epd,0x0f);
+  EPD_1IN54F_SendCommand(epd,0xaa); // panel setting
+  EPD_1IN54F_SendData (epd,0x0f);
 
-  EPD_SendCommand(epd,0xe9); // panel setting
-  EPD_SendData (epd,0x02);
+  EPD_1IN54F_SendCommand(epd,0xe9); // panel setting
+  EPD_1IN54F_SendData (epd,0x02);
 
-  EPD_SendCommand(epd,0xb6); // panel setting
-  EPD_SendData (epd,0x11);
+  EPD_1IN54F_SendCommand(epd,0xb6); // panel setting
+  EPD_1IN54F_SendData (epd,0x11);
 
-  EPD_SendCommand(epd,0xf3); // panel setting
-  EPD_SendData (epd,0x0a);
+  EPD_1IN54F_SendCommand(epd,0xf3); // panel setting
+  EPD_1IN54F_SendData (epd,0x0a);
 
-  EPD_SendCommand(epd,0x61); // resolution setting
-  EPD_SendData (epd,0xc8); // 200
-  EPD_SendData (epd,0x00);
-  EPD_SendData (epd,0xc8); // 200
+  EPD_1IN54F_SendCommand(epd,0x61); // resolution setting
+  EPD_1IN54F_SendData (epd,0xc8); // 200
+  EPD_1IN54F_SendData (epd,0x00);
+  EPD_1IN54F_SendData (epd,0xc8); // 200
 
-  EPD_SendCommand(epd,0x60); // panel setting
-  EPD_SendData (epd,0x00);
+  EPD_1IN54F_SendCommand(epd,0x60); // panel setting
+  EPD_1IN54F_SendData (epd,0x00);
 
-  EPD_SendCommand(epd,0x50); // panel setting
-  EPD_SendData (epd,0x97);
+  EPD_1IN54F_SendCommand(epd,0x50); // panel setting
+  EPD_1IN54F_SendData (epd,0x97);
 
-  EPD_SendCommand(epd,0xe3); // panel setting
-  EPD_SendData (epd,0x00);
+  EPD_1IN54F_SendCommand(epd,0xe3); // panel setting
+  EPD_1IN54F_SendData (epd,0x00);
 */
-  EPD_DelayMs(epd, 100);
-  EPD_WaitUntilIdle(epd);
+  EPD_1IN54F_DelayMs(epd, 100);
+  EPD_1IN54F_WaitUntilIdle(epd);
 
   /* EPD hardware init end */
   return 0;
@@ -307,7 +307,7 @@ int EPD_Init(EPD* epd, const unsigned char* lut) {
  *  @brief: this calls the corresponding function from epdif.h
  *          usually there is no need to change this function
  */
-void EPD_DigitalWrite(EPD* epd, int pin, int value) {
+void EPD_1IN54F_DigitalWrite(EPD* epd, int pin, int value) {
   EpdDigitalWriteCallback(pin, value);
 }
 
@@ -315,7 +315,7 @@ void EPD_DigitalWrite(EPD* epd, int pin, int value) {
  *  @brief: this calls the corresponding function from epdif.h
  *          usually there is no need to change this function
  */
-int EPD_DigitalRead(EPD* epd, int pin) {
+int EPD_1IN54F_DigitalRead(EPD* epd, int pin) {
   return EpdDigitalReadCallback(pin);
 }
 
@@ -323,32 +323,32 @@ int EPD_DigitalRead(EPD* epd, int pin) {
  *  @brief: this calls the corresponding function from epdif.h
  *          usually there is no need to change this function
  */
-void EPD_DelayMs(EPD* epd, unsigned int delaytime) {  // 1ms
+void EPD_1IN54F_DelayMs(EPD* epd, unsigned int delaytime) {  // 1ms
   EpdDelayMsCallback(delaytime);
 }
 
 /**
  *  @brief: basic function for sending commands
  */
-void EPD_SendCommand(EPD* epd, unsigned char command) {
-  EPD_DigitalWrite(epd, epd->dc_pin, LOW);
+void EPD_1IN54F_SendCommand(EPD* epd, unsigned char command) {
+  EPD_1IN54F_DigitalWrite(epd, epd->dc_pin, LOW);
   EpdSpiTransferCallback(command);
 }
 
 /**
  *  @brief: basic function for sending data
  */
-void EPD_SendData(EPD* epd, unsigned char data) {
-  EPD_DigitalWrite(epd, epd->dc_pin, HIGH);
+void EPD_1IN54F_SendData(EPD* epd, unsigned char data) {
+  EPD_1IN54F_DigitalWrite(epd, epd->dc_pin, HIGH);
   EpdSpiTransferCallback(data);
 }
 
 /**
  *  @brief: Wait until the busy_pin goes LOW
  */
-void EPD_WaitUntilIdle(EPD* epd) {
-  while(EPD_DigitalRead(epd, epd->busy_pin) == HIGH) {      //0: busy, 1: idle
-    EPD_DelayMs(epd, 100);
+void EPD_1IN54F_WaitUntilIdle(EPD* epd) {
+  while(EPD_1IN54F_DigitalRead(epd, epd->busy_pin) == HIGH) {      //0: busy, 1: idle
+    EPD_1IN54F_DelayMs(epd, 100);
   }      
 }
 
@@ -357,31 +357,31 @@ void EPD_WaitUntilIdle(EPD* epd) {
  *          often used to awaken the module in deep sleep,
  *          see EPD::Sleep();
  */
-void EPD_Reset(EPD* epd) {
-  EPD_DigitalWrite(epd, epd->reset_pin, LOW);                //module reset    
-  EPD_DelayMs(epd, 200);
-  EPD_DigitalWrite(epd, epd->reset_pin, HIGH);
-  EPD_DelayMs(epd, 200);    
+void EPD_1IN54F_Reset(EPD* epd) {
+  EPD_1IN54F_DigitalWrite(epd, epd->reset_pin, LOW);                //module reset    
+  EPD_1IN54F_DelayMs(epd, 200);
+  EPD_1IN54F_DigitalWrite(epd, epd->reset_pin, HIGH);
+  EPD_1IN54F_DelayMs(epd, 200);    
 }
 
 /**
  *  @brief: module Power on.
  */
-void EPD_power_on(EPD* epd) {
-  EPD_SendCommand(epd, 0x50);  
-  EPD_SendData(epd,0x97); 
+void EPD_1IN54F_power_on(EPD* epd) {
+  EPD_1IN54F_SendCommand(epd, 0x50);  
+  EPD_1IN54F_SendData(epd,0x97); 
 
-  EPD_SendCommand(epd, 0x04);     
+  EPD_1IN54F_SendCommand(epd, 0x04);     
 }
 
 /**
  *  @brief: module Power off.
  */
-void EPD_power_off(EPD* epd) {
-  EPD_SendCommand(epd, 0x50);  
-  EPD_SendData(epd,0xf7);  
+void EPD_1IN54F_power_off(EPD* epd) {
+  EPD_1IN54F_SendCommand(epd, 0x50);  
+  EPD_1IN54F_SendData(epd,0xf7);  
 
-  EPD_SendCommand(epd, 0x02);
+  EPD_1IN54F_SendCommand(epd, 0x02);
 }
 
 /**
@@ -390,7 +390,7 @@ void EPD_power_off(EPD* epd) {
  */
 
 
-void EPD_SetFrameMemory(
+void EPD_1IN54F_SetFrameMemory(
   EPD* epd,
   const unsigned char* image_buffer,
   int x,
@@ -423,22 +423,22 @@ void EPD_SetFrameMemory(
   }
 
   // 局刷还不行
-  EPD_SetMemoryArea(epd, x, y, x_end, y_end);
-  //EPD_SetMemoryPointer(epd, x, y);
-  //EPD_SendCommand(epd, WRITE_RAM);
-  EPD_SendCommand(epd, 0x10);
+  EPD_1IN54F_SetMemoryArea(epd, x, y, x_end, y_end);
+  //EPD_1IN54F_SetMemoryPointer(epd, x, y);
+  //EPD_1IN54F_SendCommand(epd, WRITE_RAM);
+  EPD_1IN54F_SendCommand(epd, 0x10);
   /* send the image data */
   for (int j = 0; j < y_end - y + 1; j++) {
     for (int i = 0; i < (x_end - x + 1) / 8; i++) {
-      EPD_SendData(epd, image_buffer[i + j * (image_width / 8)]);
+      EPD_1IN54F_SendData(epd, image_buffer[i + j * (image_width / 8)]);
     }
   }
 
-    EPD_SendCommand(epd, 0x13);
+    EPD_1IN54F_SendCommand(epd, 0x13);
   /* send the image data */
   for (int j = 0; j < y_end - y + 1; j++) {
     for (int i = 0; i < (x_end - x + 1) / 8; i++) {
-      EPD_SendData(epd, image_buffer[i + j * (image_width / 8)]);
+      EPD_1IN54F_SendData(epd, image_buffer[i + j * (image_width / 8)]);
     }
   }
 }
@@ -447,13 +447,13 @@ void EPD_SetFrameMemory(
 *  @brief: clear the frame memory with the specified color.
 *          this won't update the display.
 */
-void EPD_ClearFrameMemory(EPD* epd, unsigned char color) {
-  EPD_SetMemoryArea(epd, 0, 0, epd->width - 1, epd->height - 1);
-  EPD_SetMemoryPointer(epd, 0, 0);
-  EPD_SendCommand(epd, WRITE_RAM);
+void EPD_1IN54F_ClearFrameMemory(EPD* epd, unsigned char color) {
+  EPD_1IN54F_SetMemoryArea(epd, 0, 0, epd->width - 1, epd->height - 1);
+  EPD_1IN54F_SetMemoryPointer(epd, 0, 0);
+  EPD_1IN54F_SendCommand(epd, WRITE_RAM);
   /* send the color data */
   for (int i = 0; i < epd->width / 8 * epd->height; i++) {
-    EPD_SendData(epd, color);
+    EPD_1IN54F_SendData(epd, color);
   }
 }
 
@@ -464,37 +464,37 @@ void EPD_ClearFrameMemory(EPD* epd, unsigned char color) {
 *          the the next action of SetFrameMemory or ClearFrame will 
 *          set the other memory area.
 */
-void EPD_DisplayFrame(EPD* epd) {
-  // EPD_SendCommand(epd, DISPLAY_UPDATE_CONTROL_2);
-  // EPD_SendData(epd, 0xC4);
-  // EPD_SendCommand(epd, MASTER_ACTIVATION);
-  // EPD_SendCommand(epd, TERMINATE_FRAME_READ_WRITE);
+void EPD_1IN54F_DisplayFrame(EPD* epd) {
+  // EPD_1IN54F_SendCommand(epd, DISPLAY_UPDATE_CONTROL_2);
+  // EPD_1IN54F_SendData(epd, 0xC4);
+  // EPD_1IN54F_SendCommand(epd, MASTER_ACTIVATION);
+  // EPD_1IN54F_SendCommand(epd, TERMINATE_FRAME_READ_WRITE);
 
 
-  EPD_SendCommand(epd, 0x12);
-  EPD_WaitUntilIdle(epd);
+  EPD_1IN54F_SendCommand(epd, 0x12);
+  EPD_1IN54F_WaitUntilIdle(epd);
 }
 
 /**
  *  @brief: After this command is transmitted, the chip would enter the 
  *          deep-sleep mode to save power. 
  *          The deep sleep mode would return to standby by hardware reset. 
- *          You can use EPD_Init() to awaken
+ *          You can use EPD_1IN54F_Init() to awaken
  */
-void EPD_Sleep(EPD* epd) {
-  EPD_SendCommand(epd, DEEP_SLEEP_MODE);
-  EPD_WaitUntilIdle(epd);
+void EPD_1IN54F_Sleep(EPD* epd) {
+  EPD_1IN54F_SendCommand(epd, DEEP_SLEEP_MODE);
+  EPD_1IN54F_WaitUntilIdle(epd);
 }
 
 /**
  *  @brief: set the look-up tables
  */
-static void EPD_SetLut(EPD* epd, const unsigned char* lut) {
+static void EPD_1IN54F_SetLut(EPD* epd, const unsigned char* lut) {
   epd->lut = lut;
-  EPD_SendCommand(epd, WRITE_LUT_REGISTER);
+  EPD_1IN54F_SendCommand(epd, WRITE_LUT_REGISTER);
   /* the length of look-up table is 30 bytes */
   for (int i = 0; i < 30; i++) {
-    EPD_SendData(epd, epd->lut[i]);
+    EPD_1IN54F_SendData(epd, epd->lut[i]);
   } 
 }
 
@@ -504,44 +504,44 @@ static void EPD_SetLut(EPD* epd, const unsigned char* lut) {
 /**
  *  @brief: private function to specify the memory area for data R/W
  */
-static void EPD_SetMemoryArea(EPD* epd, int x_start, int y_start, int x_end, int y_end) {
-  // EPD_SendCommand(epd, SET_RAM_X_ADDRESS_START_END_POSITION);
+static void EPD_1IN54F_SetMemoryArea(EPD* epd, int x_start, int y_start, int x_end, int y_end) {
+  // EPD_1IN54F_SendCommand(epd, SET_RAM_X_ADDRESS_START_END_POSITION);
   // /* x point must be the multiple of 8 or the last 3 bits will be ignored */
-  // EPD_SendData(epd, (x_start >> 3) & 0xFF);
-  // EPD_SendData(epd, (x_end >> 3) & 0xFF);
-  // EPD_SendCommand(epd, SET_RAM_Y_ADDRESS_START_END_POSITION);
-  // EPD_SendData(epd, y_start & 0xFF);
-  // EPD_SendData(epd, (y_start >> 8) & 0xFF);
-  // EPD_SendData(epd, y_end & 0xFF);
-  // EPD_SendData(epd, (y_end >> 8) & 0xFF);
+  // EPD_1IN54F_SendData(epd, (x_start >> 3) & 0xFF);
+  // EPD_1IN54F_SendData(epd, (x_end >> 3) & 0xFF);
+  // EPD_1IN54F_SendCommand(epd, SET_RAM_Y_ADDRESS_START_END_POSITION);
+  // EPD_1IN54F_SendData(epd, y_start & 0xFF);
+  // EPD_1IN54F_SendData(epd, (y_start >> 8) & 0xFF);
+  // EPD_1IN54F_SendData(epd, y_end & 0xFF);
+  // EPD_1IN54F_SendData(epd, (y_end >> 8) & 0xFF);
 
   uint16_t xe = (x_start + x_end - 1) | 0x0007; // byte boundary inclusive (last byte)
   uint16_t ye = y_start + y_end - 1;
   x_start &= 0xFFF8; // byte boundary
-  EPD_SendCommand(epd,0x90); // partial window
+  EPD_1IN54F_SendCommand(epd,0x90); // partial window
   //_writeData(x / 256);
-  EPD_SendData(epd,x_start % 256);
+  EPD_1IN54F_SendData(epd,x_start % 256);
   //_writeData(xe / 256);
-  EPD_SendData(epd,xe % 256);
-  EPD_SendData(epd,y_start / 256);
-  EPD_SendData(epd,y_start % 256);
-  EPD_SendData(epd,ye / 256);
-  EPD_SendData(epd,ye % 256);
-  EPD_SendData(epd,0x01); // don't see any difference
+  EPD_1IN54F_SendData(epd,xe % 256);
+  EPD_1IN54F_SendData(epd,y_start / 256);
+  EPD_1IN54F_SendData(epd,y_start % 256);
+  EPD_1IN54F_SendData(epd,ye / 256);
+  EPD_1IN54F_SendData(epd,ye % 256);
+  EPD_1IN54F_SendData(epd,0x01); // don't see any difference
   //_writeData(0x00); // don't see any difference
 }
 
 /**
  *  @brief: private function to specify the start point for data R/W
  */
-static void EPD_SetMemoryPointer(EPD* epd, int x, int y) {
-  EPD_SendCommand(epd, SET_RAM_X_ADDRESS_COUNTER);
+static void EPD_1IN54F_SetMemoryPointer(EPD* epd, int x, int y) {
+  EPD_1IN54F_SendCommand(epd, SET_RAM_X_ADDRESS_COUNTER);
   /* x point must be the multiple of 8 or the last 3 bits will be ignored */
-  EPD_SendData(epd, (x >> 3) & 0xFF);
-  EPD_SendCommand(epd, SET_RAM_Y_ADDRESS_COUNTER);
-  EPD_SendData(epd, y & 0xFF);
-  EPD_SendData(epd, (y >> 8) & 0xFF);
-  EPD_WaitUntilIdle(epd);
+  EPD_1IN54F_SendData(epd, (x >> 3) & 0xFF);
+  EPD_1IN54F_SendCommand(epd, SET_RAM_Y_ADDRESS_COUNTER);
+  EPD_1IN54F_SendData(epd, y & 0xFF);
+  EPD_1IN54F_SendData(epd, (y >> 8) & 0xFF);
+  EPD_1IN54F_WaitUntilIdle(epd);
 }
 
 
@@ -562,74 +562,74 @@ const unsigned char lut_partial_update[] =
     0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 };
 
-static void EPD_update_partial(EPD* epd,uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t *data)
+static void EPD_1IN54F_update_partial(EPD* epd,uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2, uint8_t *data)
 {
-  EPD_power_on(epd);
-  EPD_partial_in(epd);
+  EPD_1IN54F_power_on(epd);
+  EPD_1IN54F_partial_in(epd);
 
   // Set partial window
   uint8_t ptl_setting[8] = { x1, x2, 0, y1, 0, y2, 0x01 };
   //uint8_t ptl_setting[8] = { x1, x1+x2, 0, y1, 0, y1+y2, 0x01 };
-  //EPD_SendCommand(epd,0X90); // power saving register
-  EPD_SendCommand(epd,0x90);
+  //EPD_1IN54F_SendCommand(epd,0X90); // power saving register
+  EPD_1IN54F_SendCommand(epd,0x90);
   for (int i = 0; i < 7; i++)
-    EPD_SendData(epd, ptl_setting[i]);
+    EPD_1IN54F_SendData(epd, ptl_setting[i]);
 
   //uint8_t *data_ptr = (uint8_t *)data;
 
-  EPD_SendCommand(epd,0x13);
+  EPD_1IN54F_SendCommand(epd,0x13);
   for (size_t h_idx = 0; h_idx < y2; h_idx++) {
-    //EPD_SendData(data_ptr, EPD_ROW_LEN);
+    //EPD_1IN54F_SendData(data_ptr, EPD_1IN54F_ROW_LEN);
     for (int i = 0; i < x2/8; i++)
-      EPD_SendData(epd, data[i]);
+      EPD_1IN54F_SendData(epd, data[i]);
     data += x2/8;
- //   len -= EPD_ROW_LEN;
+ //   len -= EPD_1IN54F_ROW_LEN;
   }
 
 
 
 //  ESP_LOGD(TAG, "Partial wait start");
 
-  EPD_SendCommand(epd,0x12);
-  EPD_WaitUntilIdle(epd);
+  EPD_1IN54F_SendCommand(epd,0x12);
+  EPD_1IN54F_WaitUntilIdle(epd);
 
 //  ESP_LOGD(TAG, "Partial updated");
-  EPD_partial_out(epd);
-  EPD_power_off(epd);
+  EPD_1IN54F_partial_out(epd);
+  EPD_1IN54F_power_off(epd);
 
 }
 
-void EPD_fb_full_update(EPD* epd,uint8_t *data, size_t len)
+void EPD_1IN54F_fb_full_update(EPD* epd,uint8_t *data, size_t len)
 {
-  EPD_power_on(epd);
+  EPD_1IN54F_power_on(epd);
 //    ESP_LOGD(TAG, "Performing full update, len: %u", len);
 
   uint8_t *data_ptr = data;
 
     // Fill OLD data (maybe not necessary)
-  uint8_t old_data[EPD_ROW_LEN] = { 0 };
-  EPD_SendCommand(epd,0x10);
-  for (size_t idx = 0; idx < EPD_HEIGHT; idx++) {
-      //jd79653a_spi_send_data(old_data, EPD_ROW_LEN);
-    for (int i = 0; i < EPD_ROW_LEN; i++)
-      EPD_SendData(epd, old_data[i]);
+  uint8_t old_data[EPD_1IN54F_ROW_LEN] = { 0 };
+  EPD_1IN54F_SendCommand(epd,0x10);
+  for (size_t idx = 0; idx < EPD_1IN54F_HEIGHT; idx++) {
+      //jd79653a_spi_send_data(old_data, EPD_1IN54F_ROW_LEN);
+    for (int i = 0; i < EPD_1IN54F_ROW_LEN; i++)
+      EPD_1IN54F_SendData(epd, old_data[i]);
   }
 
   // Fill NEW data
-  EPD_SendCommand(epd,0x13);
-  for (size_t h_idx = 0; h_idx < EPD_HEIGHT; h_idx++) {
-        //jd79653a_spi_send_data(data_ptr, EPD_ROW_LEN);
-    for (int i = 0; i < EPD_ROW_LEN; i++)
-      EPD_SendData(epd, data_ptr[i]);
-    data_ptr += EPD_ROW_LEN;
-      //len -= EPD_ROW_LEN;
+  EPD_1IN54F_SendCommand(epd,0x13);
+  for (size_t h_idx = 0; h_idx < EPD_1IN54F_HEIGHT; h_idx++) {
+        //jd79653a_spi_send_data(data_ptr, EPD_1IN54F_ROW_LEN);
+    for (int i = 0; i < EPD_1IN54F_ROW_LEN; i++)
+      EPD_1IN54F_SendData(epd, data_ptr[i]);
+    data_ptr += EPD_1IN54F_ROW_LEN;
+      //len -= EPD_1IN54F_ROW_LEN;
   }
     //ESP_LOGD(TAG, "Rest len: %u", len);
-  EPD_SendCommand(epd,0x12); // Issue refresh command
-  EPD_DelayMs(epd, 100);
-  EPD_WaitUntilIdle(epd);
+  EPD_1IN54F_SendCommand(epd,0x12); // Issue refresh command
+  EPD_1IN54F_DelayMs(epd, 100);
+  EPD_1IN54F_WaitUntilIdle(epd);
 
-  EPD_power_off(epd);
+  EPD_1IN54F_power_off(epd);
 }
 //void jd79653a_lv_fb_flush(lv_disp_drv_t *drv, const lv_area_t *area, lv_color_t *color_map)
 void jd79653a_lv_fb_flush(
@@ -649,16 +649,50 @@ void jd79653a_lv_fb_flush(
 
     if (partial_counter == 0) {
     //    ESP_LOGD(TAG, "Refreshing in FULL");
-        EPD_fb_full_update(epd, buf, ((EPD_HEIGHT * EPD_WIDTH) / 8));
-        partial_counter = EPD_PARTIAL_CNT; // Reset partial counter here
+        EPD_1IN54F_fb_full_update(epd, buf, ((EPD_1IN54F_HEIGHT * EPD_1IN54F_WIDTH) / 8));
+        partial_counter = EPD_1IN54F_PARTIAL_CNT; // Reset partial counter here
     } else {
-        EPD_update_partial(epd, x, y, x+image_width-1, y+image_height-1, buf);
+        EPD_1IN54F_update_partial(epd, x, y, x+image_width-1, y+image_height-1, buf);
         partial_counter -= 1;   // ...or otherwise, decrease 1
     }
 
  //   lv_disp_flush_ready(drv);
 }
 
+#define UBYTE uint8_t
+UBYTE EPD_1IN54FF_Init(void);
+void EPD_1IN54FF_Clear(void);
+void EPD_1IN54FF_Display(UBYTE *Image);
+void EPD_1IN54FF_Sleep(void);
+
+#define BUSY_Pin          (18)
+#define RST_Pin           (7)
+#define DC_Pin            (9)
+#define SPI_CS_Pin        (16)
+
+static EPD _epd;
+UBYTE EPD_1IN54FF_Init(void) {
+  _epd.busy_pin = BUSY_Pin;
+  _epd.reset_pin = RST_PIN;
+  _epd.dc_pin = DC_PIN;
+  _epd.cs_pin = SPI_CS_Pin;
+  _epd.width = 200;
+  _epd.height = 200;
+
+  EPD_1IN54F_Init(&_epd, lut_full_update);
+  return 0;
+}
+void EPD_1IN54FF_Clear(void) {
+  ;
+}
+void EPD_1IN54FF_Display(UBYTE *Image) {
+  EPD_1IN54F_SetFrameMemory(&_epd, Image, 0, 0, 200, 200);
+  EPD_1IN54F_DisplayFrame(&_epd);
+}
+void EPD_1IN54FF_Sleep(void) {
+  EPD_1IN54F_Sleep(&_epd);
+}
+
 /* END OF FILE */
 
 

+ 15 - 15
luat/packages/eink/epd1in54.h

@@ -71,12 +71,12 @@ typedef struct EPD_t {
 
 /* Hardware operating functions */
 /* public functions */
-int  EPD_Init(EPD* epd, const unsigned char* lut);
-void EPD_SendCommand(EPD* epd, unsigned char command);
-void EPD_SendData(EPD* epd, unsigned char data);
-void EPD_WaitUntilIdle(EPD* epd);
-void EPD_Reset(EPD* epd);
-void EPD_SetFrameMemory(
+int  EPD_1IN54F_Init(EPD* epd, const unsigned char* lut);
+void EPD_1IN54F_SendCommand(EPD* epd, unsigned char command);
+void EPD_1IN54F_SendData(EPD* epd, unsigned char data);
+void EPD_1IN54F_WaitUntilIdle(EPD* epd);
+void EPD_1IN54F_Reset(EPD* epd);
+void EPD_1IN54F_SetFrameMemory(
   EPD* epd,
   const unsigned char* image_buffer,
   int x,
@@ -84,17 +84,17 @@ void EPD_SetFrameMemory(
   int image_width,
   int image_height
 );
-void EPD_ClearFrameMemory(EPD* epd, unsigned char color);
-void EPD_DisplayFrame(EPD* epd);
-void EPD_Sleep(EPD* epd);
-void EPD_DelayMs(EPD* epd, unsigned int delay_time);
-void EPD_DigitalWrite(EPD* epd, int pin, int value);
-int  EPD_DigitalRead(EPD* epd, int pin);
+void EPD_1IN54F_ClearFrameMemory(EPD* epd, unsigned char color);
+void EPD_1IN54F_DisplayFrame(EPD* epd);
+void EPD_1IN54F_Sleep(EPD* epd);
+void EPD_1IN54F_DelayMs(EPD* epd, unsigned int delay_time);
+void EPD_1IN54F_DigitalWrite(EPD* epd, int pin, int value);
+int  EPD_1IN54F_DigitalRead(EPD* epd, int pin);
 
 /* private functions */
-static void EPD_SetLut(EPD* epd, const unsigned char* lut);
-static void EPD_SetMemoryArea(EPD* epd, int x_start, int y_start, int x_end, int y_end);
-static void EPD_SetMemoryPointer(EPD* epd, int x, int y);
+static void EPD_1IN54F_SetLut(EPD* epd, const unsigned char* lut);
+static void EPD_1IN54F_SetMemoryArea(EPD* epd, int x_start, int y_start, int x_end, int y_end);
+static void EPD_1IN54F_SetMemoryPointer(EPD* epd, int x, int y);
 
 
 void jd79653a_lv_fb_flush(

+ 0 - 0
luat/packages/eink/epd2in9.c → luat/packages/eink/epd2in9._c


+ 59 - 0
luat/packages/epaper/DEV_Config.c

@@ -0,0 +1,59 @@
+/*****************************************************************************
+* | File      	:   DEV_Config.c
+* | Author      :   Waveshare team
+* | Function    :   Hardware underlying interface
+* | Info        :
+*                Used to shield the underlying layers of each master
+*                and enhance portability
+*----------------
+* |	This version:   V2.0
+* | Date        :   2018-10-30
+* | Info        :
+# ******************************************************************************
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "DEV_Config.h"
+//#include "stm32f1xx_hal_spi.h"
+
+
+//extern SPI_HandleTypeDef hspi1;
+void DEV_SPI_WriteByte(UBYTE value)
+{
+    //HAL_SPI_Transmit(&hspi1, &value, 1, 1000);
+    luat_spi_send(0, &value, 1);
+}
+
+int DEV_Module_Init(void)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+		return 0;
+}
+
+void DEV_Module_Exit(void)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+
+    //close 5V
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+}
+

+ 96 - 0
luat/packages/epaper/DEV_Config.h

@@ -0,0 +1,96 @@
+/*****************************************************************************
+* | File      	:   DEV_Config.h
+* | Author      :   Waveshare team
+* | Function    :   Hardware underlying interface
+* | Info        :
+*                Used to shield the underlying layers of each master 
+*                and enhance portability
+*----------------
+* |	This version:   V2.0
+* | Date        :   2018-10-30
+* | Info        :
+* 1.add:
+*   UBYTE\UWORD\UDOUBLE
+* 2.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+* 3.Remote:
+*   EPD_RST_1\EPD_RST_0
+*   EPD_DC_1\EPD_DC_0
+*   EPD_CS_1\EPD_CS_0
+*   EPD_BUSY_1\EPD_BUSY_0
+* 3.add:
+*   #define DEV_Digital_Write(_pin, _value) bcm2835_gpio_write(_pin, _value)
+*   #define DEV_Digital_Read(_pin) bcm2835_gpio_lev(_pin)
+*   #define DEV_SPI_WriteByte(__value) bcm2835_spi_transfer(__value)
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _DEV_CONFIG_H_
+#define _DEV_CONFIG_H_
+
+// #include "main.h"
+// #include "stm32f1xx_hal.h"
+// #include "stm32f1xx_hal_gpio.h"
+// #include <stdint.h>
+
+#include "luat_base.h"
+#include "luat_gpio.h"
+#include "luat_spi.h"
+#include "luat_timer.h"
+
+/**
+ * data
+**/
+#define UBYTE   uint8_t
+#define UWORD   uint16_t
+#define UDOUBLE uint32_t
+
+#define Pin_BUSY        (18)
+#define Pin_RES         (7)
+#define Pin_DC          (9)
+#define Pin_CS          (16)
+
+/**
+ * e-Paper GPIO
+**/
+#define EPD_RST_PIN     (7)
+#define EPD_DC_PIN      (9)
+#define EPD_CS_PIN      (16)
+#define EPD_BUSY_PIN    (18)
+
+/**
+ * GPIO read and write
+**/
+#define DEV_Digital_Write luat_gpio_set
+#define DEV_Digital_Read luat_gpio_get
+
+/**
+ * delay x ms
+**/
+#define DEV_Delay_ms(__xms) luat_timer_mdelay(__xms);
+
+void DEV_SPI_WriteByte(UBYTE value);
+
+int DEV_Module_Init(void);
+void DEV_Module_Exit(void);
+#endif

+ 29 - 0
luat/packages/epaper/Debug.h

@@ -0,0 +1,29 @@
+/*****************************************************************************
+* | File      	:	Debug.h
+* | Author      :   Waveshare team
+* | Function    :	debug with printf
+* | Info        :
+*   Image scanning
+*      Please use progressive scanning to generate images or fonts
+*----------------
+* |	This version:   V1.0
+* | Date        :   2018-01-11
+* | Info        :   Basic version
+*
+******************************************************************************/
+#ifndef __DEBUG_H
+#define __DEBUG_H
+
+#ifndef LUAT_LOG
+#define LUAT_LOG_TAG "luat.epaper"
+#include "luat_log.h"
+#endif
+
+#define DEBUG 1
+#if DEBUG
+	#define Debug LLOGD
+#else
+	#define Debug(__info,...)  
+#endif
+
+#endif

+ 391 - 0
luat/packages/epaper/EPD_1in02d.c

@@ -0,0 +1,391 @@
+/*****************************************************************************
+* | File      	:	EPD_1IN02_1in02.c
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2019-09-27
+* | Info        :
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_1in02d.h"
+/**
+ * full screen update LUT
+**/
+const unsigned char lut_w1[] =
+{
+0x60	,0x5A	,0x5A	,0x00	,0x00	,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	,
+ 	
+};	
+const unsigned char lut_b1[] =
+{
+0x90	,0x5A	,0x5A	,0x00	,0x00	,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	,
+
+
+};
+/**
+ * partial screen update LUT
+**/
+const unsigned char lut_w[] =
+{
+0x60	,0x01	,0x01	,0x00	,0x00	,0x01	,
+0x80	,0x1f	,0x00	,0x00	,0x00	,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	,
+
+};	
+const unsigned char lut_b[] =
+{
+0x90	,0x01	,0x01	,0x00	,0x00	,0x01	,
+0x40	,0x1f	,0x00	,0x00	,0x00	,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	,
+
+};
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_1IN02_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+	DEV_Delay_ms(20);
+	DEV_Digital_Write(EPD_RST_PIN, 0);// Module reset
+	DEV_Delay_ms(2);
+	DEV_Digital_Write(EPD_RST_PIN, 1);
+	DEV_Delay_ms(20);
+	
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     command : Command register
+******************************************************************************/
+static void EPD_1IN02_SendCommand(UBYTE command)
+{
+	DEV_Digital_Write(EPD_CS_PIN, 0);
+	DEV_Digital_Write(EPD_DC_PIN, 0);// command write
+
+	DEV_SPI_WriteByte(command);
+	DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_1IN02_SendData(UBYTE Data)
+{
+	DEV_Digital_Write(EPD_CS_PIN, 0);
+	DEV_Digital_Write(EPD_DC_PIN, 1);	// command write
+	DEV_SPI_WriteByte(Data);
+	DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	LUT download
+******************************************************************************/
+void EPD_1IN02_SetFulltReg(void)
+{
+	unsigned int count;
+	EPD_1IN02_SendCommand(0x23);
+	for(count=0;count<42;count++)	     
+	{EPD_1IN02_SendData(lut_w1[count]);}    
+	
+	EPD_1IN02_SendCommand(0x24);
+	for(count=0;count<42;count++)	     
+	{EPD_1IN02_SendData(lut_b1[count]);}          
+}
+
+/******************************************************************************
+function :	LUT download
+******************************************************************************/
+void EPD_1IN02_SetPartReg(void)
+{
+	unsigned int count;
+	EPD_1IN02_SendCommand(0x23);
+	for(count=0;count<42;count++){
+		EPD_1IN02_SendData(lut_w[count]);
+	}
+	
+	EPD_1IN02_SendCommand(0x24);
+	for(count=0;count<42;count++){
+		EPD_1IN02_SendData(lut_b[count]);
+	}          
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+******************************************************************************/
+void EPD_1IN02_WaitUntilIdle(void)
+{
+	unsigned char busy;
+	do
+	{
+		EPD_1IN02_SendCommand(0x71);
+		busy = DEV_Digital_Read(EPD_BUSY_PIN);
+		busy =!(busy & 0x01);        
+	}
+	while(busy);
+	DEV_Delay_ms(800);                       
+}
+
+
+/******************************************************************************
+function :	Turn On Display
+******************************************************************************/
+void EPD_1IN02_TurnOnDisplay(void)
+{
+    // EPD_1IN02_SendCommand(0x04);  //power on
+    // EPD_1IN02_WaitUntilIdle();
+    EPD_1IN02_SendCommand(0x12);  //Start refreshing the screen
+    DEV_Delay_ms(10);
+    EPD_1IN02_WaitUntilIdle();
+    // EPD_1IN02_SendCommand(0x02);
+    // EPD_1IN02_WaitUntilIdle();    //power off
+}
+
+/******************************************************************************
+function :Initialize the e-Paper register
+******************************************************************************/
+UBYTE EPD_1IN02_Init(void)
+{
+	EPD_1IN02_Reset(); 
+	
+	EPD_1IN02_SendCommand(0xD2);			
+	EPD_1IN02_SendData(0x3F);
+						 
+	EPD_1IN02_SendCommand(0x00);  			
+	EPD_1IN02_SendData (0x6F);  //from outside
+
+	EPD_1IN02_SendCommand(0x01);  //power setting
+	EPD_1IN02_SendData (0x03);	    
+	EPD_1IN02_SendData (0x00);
+	EPD_1IN02_SendData (0x2b);		
+	EPD_1IN02_SendData (0x2b); 
+	
+	EPD_1IN02_SendCommand(0x06);  //Configuring the charge pump
+	EPD_1IN02_SendData(0x3f);
+	
+	EPD_1IN02_SendCommand(0x2A);  //Setting XON and the options of LUT
+	EPD_1IN02_SendData(0x00); 
+	EPD_1IN02_SendData(0x00); 
+	
+	EPD_1IN02_SendCommand(0x30);  //Set the clock frequency
+	EPD_1IN02_SendData(0x17); //50Hz
+
+	EPD_1IN02_SendCommand(0x50);  //Set VCOM and data output interval
+	EPD_1IN02_SendData(0x57);			
+
+	EPD_1IN02_SendCommand(0x60);  //Set The non-overlapping period of Gate and Source.
+	EPD_1IN02_SendData(0x22);
+
+    EPD_1IN02_SendCommand(0x61);  //resolution setting
+    EPD_1IN02_SendData (0x50);    //source 128 	 
+    EPD_1IN02_SendData (0x80);       
+
+	EPD_1IN02_SendCommand(0x82);  //sets VCOM_DC value
+	EPD_1IN02_SendData(0x12);  //-1v
+
+	EPD_1IN02_SendCommand(0xe3);//Set POWER SAVING
+	EPD_1IN02_SendData(0x33);
+	EPD_1IN02_SetFulltReg();	
+    EPD_1IN02_SendCommand(0x04);     		//power on
+    EPD_1IN02_WaitUntilIdle();
+	return 0;
+}
+
+/******************************************************************************
+function :Partial refresh initialization e-paper
+******************************************************************************/
+void EPD_1IN02_Part_Init(void)
+{
+	EPD_1IN02_Reset();
+	EPD_1IN02_SendCommand(0xD2);			
+	EPD_1IN02_SendData(0x3F);
+						 
+	EPD_1IN02_SendCommand(0x00);  			
+	EPD_1IN02_SendData (0x6F);  //from outside
+    
+	EPD_1IN02_SendCommand(0x01);  //power setting
+	EPD_1IN02_SendData (0x03);
+	EPD_1IN02_SendData (0x00);
+	EPD_1IN02_SendData (0x2b);		
+	EPD_1IN02_SendData (0x2b);
+	
+	EPD_1IN02_SendCommand(0x06);  //Configuring the charge pump
+	EPD_1IN02_SendData(0x3f);
+	
+	EPD_1IN02_SendCommand(0x2A);  //Setting XON and the options of LUT
+	EPD_1IN02_SendData(0x00);
+	EPD_1IN02_SendData(0x00);
+	
+	EPD_1IN02_SendCommand(0x30);  //Set the clock frequency
+	EPD_1IN02_SendData(0x17);
+				
+	EPD_1IN02_SendCommand(0x50);  //Set VCOM and data output interval
+	EPD_1IN02_SendData(0xf2);
+
+	EPD_1IN02_SendCommand(0x60);  //Set The non-overlapping period of Gate and Source.
+	EPD_1IN02_SendData(0x22);
+
+	EPD_1IN02_SendCommand(0x82);  //Set VCOM_DC value
+    EPD_1IN02_SendData(0x12);//-1v
+
+	EPD_1IN02_SendCommand(0xe3);//Set POWER SAVING
+	EPD_1IN02_SendData(0x33);
+
+	EPD_1IN02_SetPartReg();	
+    
+    EPD_1IN02_SendCommand(0x04);//Set POWER SAVING	
+    
+    EPD_1IN02_WaitUntilIdle();
+}
+
+/******************************************************************************
+function :	Clear screen
+******************************************************************************/
+void EPD_1IN02_Clear(void)
+{ 
+	unsigned int i;
+	EPD_1IN02_SendCommand(0x10);
+	for(i=0;i<1280;i++){
+		EPD_1IN02_SendData(0X00);
+	}
+	EPD_1IN02_SendCommand(0x13);	       //Transfer new data
+	for(i=0;i<1280;i++){
+		EPD_1IN02_SendData(0xff);
+	}
+	EPD_1IN02_TurnOnDisplay();
+}
+
+
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+    Image :Displayed data
+******************************************************************************/
+void EPD_1IN02_Display(UBYTE *Image)
+{ 
+	UWORD Width;
+	Width = (EPD_1IN02_WIDTH % 8 == 0)? (EPD_1IN02_WIDTH / 8 ): (EPD_1IN02_WIDTH / 8 + 1);
+	//EPD_1IN02_Init();
+	EPD_1IN02_SendCommand(0x10);
+	for (UWORD j = 0; j < EPD_1IN02_HEIGHT; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_1IN02_SendData(0xff);
+        }
+	}
+
+	EPD_1IN02_SendCommand(0x13);
+	for (UWORD j = 0; j < EPD_1IN02_HEIGHT; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_1IN02_SendData(Image[i + j * Width]);
+        }
+	}
+	EPD_1IN02_TurnOnDisplay();
+}
+
+
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+    old_Image:  Last displayed data
+    Image2   :  New data
+******************************************************************************/
+void EPD_1IN02_DisplayPartial(UBYTE *old_Image, UBYTE *Image)
+{
+    /* Set partial Windows */
+    EPD_1IN02_SendCommand(0x91);		//This command makes the display enter partial mode
+    EPD_1IN02_SendCommand(0x90);		//resolution setting
+    EPD_1IN02_SendData(0);           //x-start
+    EPD_1IN02_SendData(79);       //x-end
+
+    EPD_1IN02_SendData(0);
+    EPD_1IN02_SendData(127);  //y-end
+    EPD_1IN02_SendData(0x00);
+
+    UWORD Width;
+    Width = (EPD_1IN02_WIDTH % 8 == 0)? (EPD_1IN02_WIDTH / 8 ): (EPD_1IN02_WIDTH / 8 + 1);
+
+    /* send data */
+    EPD_1IN02_SendCommand(0x10);
+    for (UWORD j = 0; j < EPD_1IN02_HEIGHT; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_1IN02_SendData(old_Image[i + j * Width]);
+        }
+    }
+
+    EPD_1IN02_SendCommand(0x13);
+    for (UWORD j = 0; j < EPD_1IN02_HEIGHT; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_1IN02_SendData(Image[i + j * Width]);
+        }
+    }
+
+    /* Set partial refresh */
+    EPD_1IN02_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+******************************************************************************/
+void EPD_1IN02_Sleep(void)
+{
+    EPD_1IN02_SendCommand(0X50);
+    EPD_1IN02_SendData(0xf7);
+    EPD_1IN02_SendCommand(0X02);  	//power off
+    EPD_1IN02_WaitUntilIdle();
+    EPD_1IN02_SendCommand(0X07);  	//deep sleep
+    EPD_1IN02_SendData(0xA5);
+    
+    DEV_Delay_ms(200);
+    printf("Turn off the power!!! \r\n");
+    DEV_Digital_Write(EPD_RST_PIN, 0);// Module reset
+}
+
+
+
+
+

+ 47 - 0
luat/packages/epaper/EPD_1in02d.h

@@ -0,0 +1,47 @@
+/*****************************************************************************
+* | File      	:	EPD_1IN02_1in02.h
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2019-09-27
+* | Info        :
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _EPD_1IN02_H_
+#define _EPD_1IN02_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_1IN02_WIDTH   80
+#define EPD_1IN02_HEIGHT  128
+
+UBYTE EPD_1IN02_Init(void);
+void EPD_1IN02_Clear(void);
+void EPD_1IN02_Display(UBYTE *Image);
+void EPD_1IN02_DisplayPartial(UBYTE *Image1, UBYTE *Image2);
+void EPD_1IN02_Sleep(void);
+void EPD_1IN02_Part_Init(void);
+#endif
+
+

+ 300 - 0
luat/packages/epaper/EPD_1in54.c

@@ -0,0 +1,300 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54.C
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    lut_full_update[] => EPD_1IN54_lut_full_update[]
+*    lut_partial_update[] => EPD_1IN54_lut_partial_update[] 
+*    EPD_Reset() => EPD_1IN54_Reset()
+*    EPD_SendCommand() => EPD_1IN54_SendCommand()
+*    EPD_SendData() => EPD_1IN54_SendData()
+*    EPD_WaitUntilIdle() => EPD_1IN54_ReadBusy()
+*    EPD_SetLut() => EPD_1IN54_SetLut()
+*    EPD_SetWindow() => EPD_1IN54_SetWindow()
+*    EPD_SetCursor() => EPD_1IN54_SetCursor()
+*    EPD_TurnOnDisplay() => EPD_1IN54_TurnOnDisplay()
+*    EPD_Init() => EPD_1IN54_Init()
+*    EPD_Clear() => EPD_1IN54_Clear()
+*    EPD_Display() => EPD_1IN54_Display()
+*    EPD_Sleep() => EPD_1IN54_Sleep()
+* 2.remove commands define:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define DATA_START_TRANSMISSION_2                   0x13
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SOURCE_AND_GATE_START_SETTING               0x62
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASURE_VCOM                           0x80
+*   #define VCOM_VALUE                                  0x81
+*   #define VCM_DC_SETTING_REGISTER                     0x82
+*   #define PROGRAM_MODE                                0xA0
+*   #define ACTIVE_PROGRAM                              0xA1
+*   #define READ_OTP_DATA                               0xA2
+* -----------------------------------------------------------------------------
+* V2.0(2018-10-30):
+* 1.Remove:ImageBuff[EPD_1IN54_HEIGHT * EPD_1IN54_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_1in54.h"
+#include "Debug.h"
+
+static const unsigned char EPD_1IN54_lut_full_update[] = {
+    0x02, 0x02, 0x01, 0x11, 0x12, 0x12, 0x22, 0x22,
+    0x66, 0x69, 0x69, 0x59, 0x58, 0x99, 0x99, 0x88,
+    0x00, 0x00, 0x00, 0x00, 0xF8, 0xB4, 0x13, 0x51,
+    0x35, 0x51, 0x51, 0x19, 0x01, 0x00
+};
+
+static const unsigned char EPD_1IN54_lut_partial_update[] = {
+    0x10, 0x18, 0x18, 0x08, 0x18, 0x18, 0x08, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x13, 0x14, 0x44, 0x12,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_1IN54_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_1IN54_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_1IN54_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_1IN54_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Setting the display window
+parameter:
+******************************************************************************/
+static void EPD_1IN54_SetWindow(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend)
+{
+    EPD_1IN54_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+    EPD_1IN54_SendData((Xstart >> 3) & 0xFF);
+    EPD_1IN54_SendData((Xend >> 3) & 0xFF);
+
+    EPD_1IN54_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+    EPD_1IN54_SendData(Ystart & 0xFF);
+    EPD_1IN54_SendData((Ystart >> 8) & 0xFF);
+    EPD_1IN54_SendData(Yend & 0xFF);
+    EPD_1IN54_SendData((Yend >> 8) & 0xFF);
+}
+
+/******************************************************************************
+function :	Set Cursor
+parameter:
+******************************************************************************/
+static void EPD_1IN54_SetCursor(UWORD Xstart, UWORD Ystart)
+{
+    EPD_1IN54_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER
+    EPD_1IN54_SendData((Xstart >> 3) & 0xFF);
+
+    EPD_1IN54_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER
+    EPD_1IN54_SendData(Ystart & 0xFF);
+    EPD_1IN54_SendData((Ystart >> 8) & 0xFF);
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_1IN54_TurnOnDisplay(void)
+{
+    EPD_1IN54_SendCommand(0x22); // DISPLAY_UPDATE_CONTROL_2
+    EPD_1IN54_SendData(0xC4);
+    EPD_1IN54_SendCommand(0x20); // MASTER_ACTIVATION
+    EPD_1IN54_SendCommand(0xFF); // TERMINATE_FRAME_READ_WRITE
+
+    EPD_1IN54_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_1IN54_Init(UBYTE Mode)
+{
+    EPD_1IN54_Reset();
+
+    EPD_1IN54_SendCommand(0x01); // DRIVER_OUTPUT_CONTROL
+    EPD_1IN54_SendData((EPD_1IN54_HEIGHT - 1) & 0xFF);
+    EPD_1IN54_SendData(((EPD_1IN54_HEIGHT - 1) >> 8) & 0xFF);
+    EPD_1IN54_SendData(0x00); // GD = 0; SM = 0; TB = 0;
+
+    EPD_1IN54_SendCommand(0x0C); // BOOSTER_SOFT_START_CONTROL
+    EPD_1IN54_SendData(0xD7);
+    EPD_1IN54_SendData(0xD6);
+    EPD_1IN54_SendData(0x9D);
+
+    EPD_1IN54_SendCommand(0x2C); // WRITE_VCOM_REGISTER
+    EPD_1IN54_SendData(0xA8); // VCOM 7C
+
+    EPD_1IN54_SendCommand(0x3A); // SET_DUMMY_LINE_PERIOD
+    EPD_1IN54_SendData(0x1A); // 4 dummy lines per gate
+
+    EPD_1IN54_SendCommand(0x3B); // SET_GATE_TIME
+    EPD_1IN54_SendData(0x08); // 2us per line
+
+    EPD_1IN54_SendCommand(0x11);
+    EPD_1IN54_SendData(0x03);
+
+    //set the look-up table register
+    EPD_1IN54_SendCommand(0x32);
+    if(Mode == EPD_1IN54_FULL){
+        for (UWORD i = 0; i < 30; i++) {
+                EPD_1IN54_SendData(EPD_1IN54_lut_full_update[i]);
+        }
+    }else if(Mode == EPD_1IN54_PART){
+        for (UWORD i = 0; i < 30; i++) {
+                EPD_1IN54_SendData(EPD_1IN54_lut_partial_update[i]);
+        }
+    }else{
+        Debug("error, the Mode is EPD_1IN54_FULL or EPD_1IN54_PART");
+    }
+    
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_1IN54_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54_WIDTH % 8 == 0)? (EPD_1IN54_WIDTH / 8 ): (EPD_1IN54_WIDTH / 8 + 1);
+    Height = EPD_1IN54_HEIGHT;
+    EPD_1IN54_SetWindow(0, 0, EPD_1IN54_WIDTH, EPD_1IN54_HEIGHT);
+    for (UWORD j = 0; j < Height; j++) {
+        EPD_1IN54_SetCursor(0, j);
+        EPD_1IN54_SendCommand(0x24);
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_1IN54_SendData(0XFF);
+        }
+    }
+    EPD_1IN54_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_1IN54_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54_WIDTH % 8 == 0)? (EPD_1IN54_WIDTH / 8 ): (EPD_1IN54_WIDTH / 8 + 1);
+    Height = EPD_1IN54_HEIGHT;
+
+    UDOUBLE Addr = 0;
+    // UDOUBLE Offset = ImageName;
+    EPD_1IN54_SetWindow(0, 0, EPD_1IN54_WIDTH, EPD_1IN54_HEIGHT);
+    for (UWORD j = 0; j < Height; j++) {
+        EPD_1IN54_SetCursor(0, j);
+        EPD_1IN54_SendCommand(0x24);
+        for (UWORD i = 0; i < Width; i++) {
+            Addr = i + j * Width;
+            EPD_1IN54_SendData(Image[Addr]);
+        }
+    }
+    EPD_1IN54_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_1IN54_Sleep(void)
+{
+    EPD_1IN54_SendCommand(0x10);
+    EPD_1IN54_SendData(0x01);
+}

+ 104 - 0
luat/packages/epaper/EPD_1in54.h

@@ -0,0 +1,104 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54.h
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.1
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2019-06-12):
+* 1.Change:
+*    lut_full_update[] => EPD_1IN54_lut_full_update[]
+*    lut_partial_update[] => EPD_1IN54_lut_partial_update[] 
+*    EPD_Reset() => EPD_1IN54_Reset()
+*    EPD_SendCommand() => EPD_1IN54_SendCommand()
+*    EPD_SendData() => EPD_1IN54_SendData()
+*    EPD_WaitUntilIdle() => EPD_1IN54_ReadBusy()
+*    EPD_SetLut() => EPD_1IN54_SetLut()
+*    EPD_SetWindow() => EPD_1IN54_SetWindow()
+*    EPD_SetCursor() => EPD_1IN54_SetCursor()
+*    EPD_TurnOnDisplay() => EPD_1IN54_TurnOnDisplay()
+*    EPD_Init() => EPD_1IN54_Init()
+*    EPD_Clear() => EPD_1IN54_Clear()
+*    EPD_Display() => EPD_1IN54_Display()
+*    EPD_Sleep() => EPD_1IN54_Sleep()
+* 2.remove commands define:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define DATA_START_TRANSMISSION_2                   0x13
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SOURCE_AND_GATE_START_SETTING               0x62
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASURE_VCOM                           0x80
+*   #define VCOM_VALUE                                  0x81
+*   #define VCM_DC_SETTING_REGISTER                     0x82
+*   #define PROGRAM_MODE                                0xA0
+*   #define ACTIVE_PROGRAM                              0xA1
+*   #define READ_OTP_DATA                               0xA2
+* -----------------------------------------------------------------------------
+* V2.0(2018-10-30):
+* 1.Remove:ImageBuff[EPD_1IN54_HEIGHT * EPD_1IN54_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_1IN54_H_
+#define __EPD_1IN54_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_1IN54_WIDTH			200
+#define EPD_1IN54_HEIGHT		200
+
+#define EPD_1IN54_FULL			0
+#define EPD_1IN54_PART			1
+
+void EPD_1IN54_Init(UBYTE Mode);
+void EPD_1IN54_Clear(void);
+void EPD_1IN54_Display(UBYTE *Image);
+void EPD_1IN54_Sleep(void);
+
+#endif

+ 270 - 0
luat/packages/epaper/EPD_1in54_V2.c

@@ -0,0 +1,270 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54_V2.c
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper V2
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2019-06-11
+* | Info        :
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_1in54_V2.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_1IN54_V2_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_1IN54_V2_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_1IN54_V2_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_1IN54_V2_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    // UBYTE busy;
+    // do {
+        // EPD_1IN54_V2_SendCommand(0x71);
+        // busy = DEV_Digital_Read(EPD_BUSY_PIN);
+        // busy = !(busy & 0x01);
+    // } while(busy);
+    // DEV_Delay_ms(200);
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display full
+parameter:
+******************************************************************************/
+static void EPD_1IN54_V2_TurnOnDisplay(void)
+{
+    EPD_1IN54_V2_SendCommand(0x22);
+    EPD_1IN54_V2_SendData(0xF7);
+    EPD_1IN54_V2_SendCommand(0x20);
+    EPD_1IN54_V2_ReadBusy();
+}
+
+/******************************************************************************
+function :	Turn On Display part
+parameter:
+******************************************************************************/
+static void EPD_1IN54_V2_TurnOnDisplayPart(void)
+{
+    EPD_1IN54_V2_SendCommand(0x22);
+    EPD_1IN54_V2_SendData(0xFF);
+    EPD_1IN54_V2_SendCommand(0x20);
+    EPD_1IN54_V2_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_1IN54_V2_Init(void)
+{
+    EPD_1IN54_V2_Reset();
+
+    EPD_1IN54_V2_ReadBusy();
+    EPD_1IN54_V2_SendCommand(0x12);  //SWRESET
+    EPD_1IN54_V2_ReadBusy();
+
+    EPD_1IN54_V2_SendCommand(0x01); //Driver output control
+    EPD_1IN54_V2_SendData(0xC7);
+    EPD_1IN54_V2_SendData(0x00);
+    EPD_1IN54_V2_SendData(0x01);
+
+    EPD_1IN54_V2_SendCommand(0x11); //data entry mode
+    EPD_1IN54_V2_SendData(0x01);
+
+    EPD_1IN54_V2_SendCommand(0x44); //set Ram-X address start/end position
+    EPD_1IN54_V2_SendData(0x00);
+    EPD_1IN54_V2_SendData(0x18);    //0x0C-->(18+1)*8=200
+
+    EPD_1IN54_V2_SendCommand(0x45); //set Ram-Y address start/end position
+    EPD_1IN54_V2_SendData(0xC7);   //0xC7-->(199+1)=200
+    EPD_1IN54_V2_SendData(0x00);
+    EPD_1IN54_V2_SendData(0x00);
+    EPD_1IN54_V2_SendData(0x00);
+
+    EPD_1IN54_V2_SendCommand(0x3C); //BorderWavefrom
+    EPD_1IN54_V2_SendData(0x01);
+
+    EPD_1IN54_V2_SendCommand(0x18);
+    EPD_1IN54_V2_SendData(0x80);
+
+    EPD_1IN54_V2_SendCommand(0x22); // //Load Temperature and waveform setting.
+    EPD_1IN54_V2_SendData(0XB1);
+    EPD_1IN54_V2_SendCommand(0x20);
+
+    EPD_1IN54_V2_SendCommand(0x4E);   // set RAM x address count to 0;
+    EPD_1IN54_V2_SendData(0x00);
+    EPD_1IN54_V2_SendCommand(0x4F);   // set RAM y address count to 0X199;
+    EPD_1IN54_V2_SendData(0xC7);
+    EPD_1IN54_V2_SendData(0x00);
+    EPD_1IN54_V2_ReadBusy();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_1IN54_V2_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54_V2_WIDTH % 8 == 0)? (EPD_1IN54_V2_WIDTH / 8 ): (EPD_1IN54_V2_WIDTH / 8 + 1);
+    Height = EPD_1IN54_V2_HEIGHT;
+
+    EPD_1IN54_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_1IN54_V2_SendData(0XFF);
+        }
+    }
+    EPD_1IN54_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_1IN54_V2_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54_V2_WIDTH % 8 == 0)? (EPD_1IN54_V2_WIDTH / 8 ): (EPD_1IN54_V2_WIDTH / 8 + 1);
+    Height = EPD_1IN54_V2_HEIGHT;
+
+    UDOUBLE Addr = 0;
+    EPD_1IN54_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            Addr = i + j * Width;
+            EPD_1IN54_V2_SendData(Image[Addr]);
+        }
+    }
+    EPD_1IN54_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	 The image of the previous frame must be uploaded, otherwise the
+		         first few seconds will display an exception.
+parameter:
+******************************************************************************/
+void EPD_1IN54_V2_DisplayPartBaseImage(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54_V2_WIDTH % 8 == 0)? (EPD_1IN54_V2_WIDTH / 8 ): (EPD_1IN54_V2_WIDTH / 8 + 1);
+    Height = EPD_1IN54_V2_HEIGHT;
+
+    UDOUBLE Addr = 0;
+    EPD_1IN54_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            Addr = i + j * Width;
+            EPD_1IN54_V2_SendData(Image[Addr]);
+        }
+    }
+    EPD_1IN54_V2_SendCommand(0x26);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            Addr = i + j * Width;
+            EPD_1IN54_V2_SendData(Image[Addr]);
+        }
+    }
+    EPD_1IN54_V2_TurnOnDisplayPart();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_1IN54_V2_DisplayPart(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54_V2_WIDTH % 8 == 0)? (EPD_1IN54_V2_WIDTH / 8 ): (EPD_1IN54_V2_WIDTH / 8 + 1);
+    Height = EPD_1IN54_V2_HEIGHT;
+
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(10);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(10);	
+    EPD_1IN54_V2_SendCommand(0x3C); //BorderWavefrom
+    EPD_1IN54_V2_SendData(0x80);
+	
+    UDOUBLE Addr = 0;
+    EPD_1IN54_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            Addr = i + j * Width;
+            EPD_1IN54_V2_SendData(Image[Addr]);
+        }
+    }
+    EPD_1IN54_V2_TurnOnDisplayPart();
+}
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_1IN54_V2_Sleep(void)
+{
+    EPD_1IN54_V2_SendCommand(0x10); //enter deep sleep
+    EPD_1IN54_V2_SendData(0x01);
+    DEV_Delay_ms(100);
+}

+ 46 - 0
luat/packages/epaper/EPD_1in54_V2.h

@@ -0,0 +1,46 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54_V2.h
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper V2
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2019-06-11
+* | Info        :   
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_1IN54_V2_H_
+#define __EPD_1IN54_V2_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_1IN54_V2_WIDTH       200
+#define EPD_1IN54_V2_HEIGHT      200
+
+void EPD_1IN54_V2_Init(void);
+void EPD_1IN54_V2_Clear(void);
+void EPD_1IN54_V2_Display(UBYTE *Image);
+void EPD_1IN54_V2_DisplayPartBaseImage(UBYTE *Image);
+void EPD_1IN54_V2_DisplayPart(UBYTE *Image);
+void EPD_1IN54_V2_Sleep(void);
+
+#endif

+ 348 - 0
luat/packages/epaper/EPD_1in54b.c

@@ -0,0 +1,348 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54b.c
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper b
+* | Info        :
+*----------------
+* |	This version:   V3.1
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2019-06-12):
+* 1.Change:
+*    lut_vcom0[] => EPD_1IN54_lut_vcom0[]
+*    lut_w[] => EPD_1IN54_lut_w[] 
+*    lut_b[] => EPD_1IN54B_lut_b[]
+*    lut_g1[] => EPD_1IN54B_lut_g1[]
+*    lut_g2[] => EPD_1IN54B_lut_g2[]
+*    lut_vcom1[] => EPD_1IN54B_lut_vcom1[]
+*    lut_red0[] => EPD_1IN54B_lut_red0[]
+*    lut_red1[] => EPD_1IN54B_lut_red1[]
+*    EPD_Reset() => EPD_1IN54B_Reset()
+*    EPD_SendCommand() => EPD_1IN54B_SendCommand()
+*    EPD_SendData() => EPD_1IN54B_SendData()
+*    EPD_WaitUntilIdle() => EPD_1IN54B_ReadBusy()
+*    EPD_SetLutBw() => EPD_1IN54B_SetLutBw()
+*    EPD_SetLutBw => EPD_1IN54B_SetLutBw()
+*    EPD_Init() => EPD_1IN54B_Init()
+*    EPD_Clear() => EPD_1IN54B_Clear()
+*    EPD_Display() => EPD_1IN54B_Display()
+*    EPD_Sleep() => EPD_1IN54B_Sleep()
+* -----------------------------------------------------------------------------
+* V3.0(2019-04-24):
+* 1.remove commands define:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define DATA_START_TRANSMISSION_2                   0x13
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SOURCE_AND_GATE_START_SETTING               0x62
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASURE_VCOM                           0x80
+*   #define VCOM_VALUE                                  0x81
+*   #define VCM_DC_SETTING_REGISTER                     0x82
+*   #define PROGRAM_MODE                                0xA0
+*   #define ACTIVE_PROGRAM                              0xA1
+*   #define READ_OTP_DATA                               0xA2
+*
+* -----------------------------------------------------------------------------
+* V2.0(2018-10-30):
+* 1.Remove:ImageBuff[EPD_1IN54B_HEIGHT * EPD_1IN54B_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_1in54b.h"
+#include "Debug.h"
+
+const unsigned char EPD_1IN54B_lut_vcom0[] = {0x0E, 0x14, 0x01, 0x0A, 0x06, 0x04, 0x0A, 0x0A, 0x0F, 0x03, 0x03, 0x0C, 0x06, 0x0A, 0x00};
+const unsigned char EPD_1IN54B_lut_w[] = {0x0E, 0x14, 0x01, 0x0A, 0x46, 0x04, 0x8A, 0x4A, 0x0F, 0x83, 0x43, 0x0C, 0x86, 0x0A, 0x04};
+const unsigned char EPD_1IN54B_lut_b[] = {0x0E, 0x14, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A, 0x0F, 0x83, 0x43, 0x0C, 0x06, 0x4A, 0x04};
+const unsigned char EPD_1IN54B_lut_g1[] = {0x8E, 0x94, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A, 0x0F, 0x83, 0x43, 0x0C, 0x06, 0x0A, 0x04};
+const unsigned char EPD_1IN54B_lut_g2[] = {0x8E, 0x94, 0x01, 0x8A, 0x06, 0x04, 0x8A, 0x4A, 0x0F, 0x83, 0x43, 0x0C, 0x06, 0x0A, 0x04};
+const unsigned char EPD_1IN54B_lut_vcom1[] = {0x03, 0x1D, 0x01, 0x01, 0x08, 0x23, 0x37, 0x37, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+const unsigned char EPD_1IN54B_lut_red0[] = {0x83, 0x5D, 0x01, 0x81, 0x48, 0x23, 0x77, 0x77, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+const unsigned char EPD_1IN54B_lut_red1[] = {0x03, 0x1D, 0x01, 0x01, 0x08, 0x23, 0x37, 0x37, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_1IN54B_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(100);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(100);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_1IN54B_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_1IN54B_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_1IN54B_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(1) {
+        if(DEV_Digital_Read(EPD_BUSY_PIN) == 1)
+            break;
+    }
+    DEV_Delay_ms(200);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Set the look-up black and white tables
+parameter:
+******************************************************************************/
+static void EPD_1IN54B_SetLutBw(void)
+{
+    UWORD count;
+    EPD_1IN54B_SendCommand(0x20);// g vcom
+    for(count = 0; count < 15; count++) {
+        EPD_1IN54B_SendData(EPD_1IN54B_lut_vcom0[count]);
+    }
+    EPD_1IN54B_SendCommand(0x21);// g ww --
+    for(count = 0; count < 15; count++) {
+        EPD_1IN54B_SendData(EPD_1IN54B_lut_w[count]);
+    }
+    EPD_1IN54B_SendCommand(0x22);// g bw r
+    for(count = 0; count < 15; count++) {
+        EPD_1IN54B_SendData(EPD_1IN54B_lut_b[count]);
+    }
+    EPD_1IN54B_SendCommand(0x23);// g wb w
+    for(count = 0; count < 15; count++) {
+        EPD_1IN54B_SendData(EPD_1IN54B_lut_g1[count]);
+    }
+    EPD_1IN54B_SendCommand(0x24);// g bb b
+    for(count = 0; count < 15; count++) {
+        EPD_1IN54B_SendData(EPD_1IN54B_lut_g2[count]);
+    }
+}
+
+/******************************************************************************
+function :	Set the look-up red tables
+parameter:
+******************************************************************************/
+static void EPD_1IN54B_SetLutRed(void)
+{
+    UWORD count;
+    EPD_1IN54B_SendCommand(0x25);
+    for(count = 0; count < 15; count++) {
+        EPD_1IN54B_SendData(EPD_1IN54B_lut_vcom1[count]);
+    }
+    EPD_1IN54B_SendCommand(0x26);
+    for(count = 0; count < 15; count++) {
+        EPD_1IN54B_SendData(EPD_1IN54B_lut_red0[count]);
+    }
+    EPD_1IN54B_SendCommand(0x27);
+    for(count = 0; count < 15; count++) {
+        EPD_1IN54B_SendData(EPD_1IN54B_lut_red1[count]);
+    }
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_1IN54B_Init(void)
+{
+    EPD_1IN54B_Reset();
+
+    EPD_1IN54B_SendCommand(0x01);// POWER_SETTING
+    EPD_1IN54B_SendData(0x07);
+    EPD_1IN54B_SendData(0x00);
+    EPD_1IN54B_SendData(0x08);
+    EPD_1IN54B_SendData(0x00);
+    EPD_1IN54B_SendCommand(0x06);// BOOSTER_SOFT_START
+    EPD_1IN54B_SendData(0x07);
+    EPD_1IN54B_SendData(0x07);
+    EPD_1IN54B_SendData(0x07);
+    EPD_1IN54B_SendCommand(0x04);// POWER_ON
+
+    EPD_1IN54B_ReadBusy();
+
+    EPD_1IN54B_SendCommand(0X00);// PANEL_SETTING
+    EPD_1IN54B_SendData(0xcf);
+    EPD_1IN54B_SendCommand(0X50);// VCOM_AND_DATA_INTERVAL_SETTING
+    EPD_1IN54B_SendData(0x37);// 0xF0
+    EPD_1IN54B_SendCommand(0x30);// PLL_CONTROL
+    EPD_1IN54B_SendData(0x39);
+    EPD_1IN54B_SendCommand(0x61);// TCON_RESOLUTION set x and y
+    EPD_1IN54B_SendData(0xC8);// 200
+    EPD_1IN54B_SendData(0x00);// y High eight: 0
+    EPD_1IN54B_SendData(0xC8);// y Low eight: 200
+    EPD_1IN54B_SendCommand(0x82);// VCM_DC_SETTING_REGISTER
+    EPD_1IN54B_SendData(0x0E);
+
+    EPD_1IN54B_SetLutBw();
+    EPD_1IN54B_SetLutRed();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_1IN54B_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54B_WIDTH % 8 == 0)? (EPD_1IN54B_WIDTH / 8 ): (EPD_1IN54B_WIDTH / 8 + 1);
+    Height = EPD_1IN54B_HEIGHT;
+
+    //send black data
+    EPD_1IN54B_SendCommand(0x10);// DATA_START_TRANSMISSION_1
+    DEV_Delay_ms(2);
+    for(UWORD i = 0; i < Height; i++) {
+        for(UWORD i = 0; i < Width; i++) {
+            EPD_1IN54B_SendData(0xFF);
+            EPD_1IN54B_SendData(0xFF);
+        }
+    }
+    DEV_Delay_ms(2);
+
+    //send red data
+    EPD_1IN54B_SendCommand(0x13);// DATA_START_TRANSMISSION_2
+    DEV_Delay_ms(2);
+    for(UWORD i = 0; i < Height; i++) {
+        for(UWORD i = 0; i < Width; i++) {
+            EPD_1IN54B_SendData(0xFF);
+        }
+    }
+    DEV_Delay_ms(2);
+
+    EPD_1IN54B_SendCommand(0x12);// DISPLAY_REFRESH
+    EPD_1IN54B_ReadBusy();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_1IN54B_Display(const UBYTE *blackimage, const UBYTE *redimage)
+{
+    UBYTE Temp = 0x00;
+    UWORD Width, Height;
+    Width = (EPD_1IN54B_WIDTH % 8 == 0)? (EPD_1IN54B_WIDTH / 8 ): (EPD_1IN54B_WIDTH / 8 + 1);
+    Height = EPD_1IN54B_HEIGHT;
+
+    EPD_1IN54B_SendCommand(0x10);// DATA_START_TRANSMISSION_1
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            Temp = 0x00;
+            for (int bit = 0; bit < 4; bit++) {
+                if ((blackimage[i + j * Width] & (0x80 >> bit)) != 0) {
+                    Temp |= 0xC0 >> (bit * 2);
+                }
+            }
+            EPD_1IN54B_SendData(Temp);
+            Temp = 0x00;
+            for (int bit = 4; bit < 8; bit++) {
+                if ((blackimage[i + j * Width] & (0x80 >> bit)) != 0) {
+                    Temp |= 0xC0 >> ((bit - 4) * 2);
+                }
+            }
+            EPD_1IN54B_SendData(Temp);
+        }
+    }
+    DEV_Delay_ms(2);
+
+    EPD_1IN54B_SendCommand(0x13);// DATA_START_TRANSMISSION_2
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_1IN54B_SendData(redimage[i + j * Width]);
+        }
+    }
+    DEV_Delay_ms(2);
+
+    //Display refresh
+    EPD_1IN54B_SendCommand(0x12);// DISPLAY_REFRESH
+    EPD_1IN54B_ReadBusy();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_1IN54B_Sleep(void)
+{
+    EPD_1IN54B_SendCommand(0x50);// VCOM_AND_DATA_INTERVAL_SETTING
+    EPD_1IN54B_SendData(0x17);
+    EPD_1IN54B_SendCommand(0x82);// VCM_DC_SETTING_REGISTER
+    EPD_1IN54B_SendData(0x00);
+    EPD_1IN54B_SendCommand(0x01);// POWER_SETTING
+    EPD_1IN54B_SendData(0x02);
+    EPD_1IN54B_SendData(0x00);
+    EPD_1IN54B_SendData(0x00);
+    EPD_1IN54B_SendData(0x00);
+    EPD_1IN54B_ReadBusy();
+    DEV_Delay_ms(1000);
+	
+    EPD_1IN54B_SendCommand(0x02);// POWER_OFF
+}

+ 108 - 0
luat/packages/epaper/EPD_1in54b.h

@@ -0,0 +1,108 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54b.h
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper b
+* | Info        :
+*----------------
+* |	This version:   V3.1
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2019-06-12):
+* 1.Change:
+*    lut_vcom0[] => EPD_1IN54_lut_vcom0[]
+*    lut_w[] => EPD_1IN54_lut_w[] 
+*    lut_b[] => EPD_1IN54B_lut_b[]
+*    lut_g1[] => EPD_1IN54B_lut_g1[]
+*    lut_g2[] => EPD_1IN54B_lut_g2[]
+*    lut_vcom1[] => EPD_1IN54B_lut_vcom1[]
+*    lut_red0[] => EPD_1IN54B_lut_red0[]
+*    lut_red1[] => EPD_1IN54B_lut_red1[]
+*    EPD_Reset() => EPD_1IN54B_Reset()
+*    EPD_SendCommand() => EPD_1IN54B_SendCommand()
+*    EPD_SendData() => EPD_1IN54B_SendData()
+*    EPD_WaitUntilIdle() => EPD_1IN54B_ReadBusy()
+*    EPD_SetLutBw() => EPD_1IN54B_SetLutBw()
+*    EPD_SetLutBw => EPD_1IN54B_SetLutBw()
+*    EPD_Init() => EPD_1IN54B_Init()
+*    EPD_Clear() => EPD_1IN54B_Clear()
+*    EPD_Display() => EPD_1IN54B_Display()
+*    EPD_Sleep() => EPD_1IN54B_Sleep()
+* -----------------------------------------------------------------------------
+* V3.0(2019-04-24):
+* 1.remove commands define:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define DATA_START_TRANSMISSION_2                   0x13
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SOURCE_AND_GATE_START_SETTING               0x62
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASURE_VCOM                           0x80
+*   #define VCOM_VALUE                                  0x81
+*   #define VCM_DC_SETTING_REGISTER                     0x82
+*   #define PROGRAM_MODE                                0xA0
+*   #define ACTIVE_PROGRAM                              0xA1
+*   #define READ_OTP_DATA                               0xA2
+*
+* -----------------------------------------------------------------------------
+* V2.0(2018-10-30):
+* 1.Remove:ImageBuff[EPD_1IN54B_HEIGHT * EPD_1IN54B_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_1IN54B_H_
+#define __EPD_1IN54B_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_1IN54B_WIDTH       200
+#define EPD_1IN54B_HEIGHT      200
+
+void EPD_1IN54B_Init(void);
+void EPD_1IN54B_Clear(void);
+void EPD_1IN54B_Display(const UBYTE *blackimage, const UBYTE *redimage);
+void EPD_1IN54B_Sleep(void);
+
+#endif

+ 194 - 0
luat/packages/epaper/EPD_1in54b_V2.c

@@ -0,0 +1,194 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54b_V2.h
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper b V2
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-04-02
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_1in54b_V2.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_1IN54B_V2_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(100);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(100);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_1IN54B_V2_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_1IN54B_V2_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_1IN54B_V2_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(1) {
+        if(DEV_Digital_Read(EPD_BUSY_PIN) == 0)
+            break;
+    }
+    DEV_Delay_ms(200);
+    Debug("e-Paper busy release\r\n");
+}
+
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_1IN54B_V2_Init(void)
+{
+    EPD_1IN54B_V2_Reset();
+
+    EPD_1IN54B_V2_ReadBusy();   
+    EPD_1IN54B_V2_SendCommand(0x12);  //SWRESET
+    EPD_1IN54B_V2_ReadBusy();   
+
+    EPD_1IN54B_V2_SendCommand(0x01); //Driver output control      
+    EPD_1IN54B_V2_SendData(0xC7);
+    EPD_1IN54B_V2_SendData(0x00);
+    EPD_1IN54B_V2_SendData(0x01);
+
+    EPD_1IN54B_V2_SendCommand(0x11); //data entry mode       
+    EPD_1IN54B_V2_SendData(0x01);
+
+    EPD_1IN54B_V2_SendCommand(0x44); //set Ram-X address start/end position   
+    EPD_1IN54B_V2_SendData(0x00);
+    EPD_1IN54B_V2_SendData(0x18);    //0x18-->(24+1)*8=200
+
+    EPD_1IN54B_V2_SendCommand(0x45); //set Ram-Y address start/end position          
+    EPD_1IN54B_V2_SendData(0xC7);    //0xC7-->(199+1)=200
+    EPD_1IN54B_V2_SendData(0x00);
+    EPD_1IN54B_V2_SendData(0x00);
+    EPD_1IN54B_V2_SendData(0x00); 
+
+    EPD_1IN54B_V2_SendCommand(0x3C); //BorderWavefrom
+    EPD_1IN54B_V2_SendData(0x05);
+
+    EPD_1IN54B_V2_SendCommand(0x18); //Read built-in temperature sensor
+    EPD_1IN54B_V2_SendData(0x80);
+
+    EPD_1IN54B_V2_SendCommand(0x4E);   // set RAM x address count to 0;
+    EPD_1IN54B_V2_SendData(0x00);
+    EPD_1IN54B_V2_SendCommand(0x4F);   // set RAM y address count to 0X199;    
+    EPD_1IN54B_V2_SendData(0xC7);
+    EPD_1IN54B_V2_SendData(0x00);
+    EPD_1IN54B_V2_ReadBusy();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_1IN54B_V2_Clear(void)
+{
+    
+    unsigned int i;	
+    EPD_1IN54B_V2_SendCommand(0x24);   //write RAM for black(0)/white (1)
+    for(i=0;i<5000;i++)
+    {               
+        EPD_1IN54B_V2_SendData(0xff);
+    }
+    EPD_1IN54B_V2_SendCommand(0x26);   //write RAM for black(0)/white (1)
+    for(i=0;i<5000;i++)
+    {               
+        EPD_1IN54B_V2_SendData(0x00);
+    }
+    EPD_1IN54B_V2_SendCommand(0x22); //Display Update Control
+    EPD_1IN54B_V2_SendData(0xF7);   
+    EPD_1IN54B_V2_SendCommand(0x20);  //Activate Display Update Sequence
+    EPD_1IN54B_V2_ReadBusy();   
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_1IN54B_V2_Display(const UBYTE *blackimage, const UBYTE *redimage)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54B_V2_WIDTH % 8 == 0)? (EPD_1IN54B_V2_WIDTH / 8 ): (EPD_1IN54B_V2_WIDTH / 8 + 1);
+    Height = EPD_1IN54B_V2_HEIGHT;
+
+     unsigned int i;	
+    EPD_1IN54B_V2_SendCommand(0x24);   //write RAM for black(0)/white (1)
+    for(i=0;i<Width * Height;i++)
+    {               
+        EPD_1IN54B_V2_SendData(blackimage[i]);
+    }
+    EPD_1IN54B_V2_SendCommand(0x26);   //write RAM for black(0)/white (1)
+    for(i=0;i<Width * Height;i++)
+    {               
+        EPD_1IN54B_V2_SendData(~redimage[i]);
+    }
+    EPD_1IN54B_V2_SendCommand(0x22); //Display Update Control
+    EPD_1IN54B_V2_SendData(0xF7);   
+    EPD_1IN54B_V2_SendCommand(0x20);  //Activate Display Update Sequence
+    EPD_1IN54B_V2_ReadBusy();   
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_1IN54B_V2_Sleep(void)
+{
+    EPD_1IN54B_V2_SendCommand(0x10); //enter deep sleep
+    EPD_1IN54B_V2_SendData(0x01); 
+    DEV_Delay_ms(100);
+}

+ 45 - 0
luat/packages/epaper/EPD_1in54b_V2.h

@@ -0,0 +1,45 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54b_V2.h
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper b V2
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-04-02
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_1IN54B_V2_H_
+#define __EPD_1IN54B_V2_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_1IN54B_V2_WIDTH       200
+#define EPD_1IN54B_V2_HEIGHT      200
+
+void EPD_1IN54B_V2_Init(void);
+void EPD_1IN54B_V2_Clear(void);
+void EPD_1IN54B_V2_Display(const UBYTE *blackimage, const UBYTE *redimage);
+void EPD_1IN54B_V2_Sleep(void);
+
+#endif

+ 240 - 0
luat/packages/epaper/EPD_1in54c.c

@@ -0,0 +1,240 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54c.C
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper c
+* | Info        :
+*----------------
+* |	This version:   V3.1
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2019-06-12):
+* 1.Change:
+*    EPD_Reset() => EPD_1IN54C_Reset()
+*    EPD_SendCommand() => EPD_1IN54C_SendCommand()
+*    EPD_SendData() => EPD_1IN54C_SendData()
+*    EPD_WaitUntilIdle() => EPD_1IN54C_ReadBusy()
+*    EPD_Init() => EPD_1IN54C_Init()
+*    EPD_Clear() => EPD_1IN54C_Clear()
+*    EPD_Display() => EPD_1IN54C_Display()
+*    EPD_Sleep() => EPD_1IN54C_Sleep()
+* 2.remove commands define:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define DATA_START_TRANSMISSION_2                   0x13
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SOURCE_AND_GATE_START_SETTING               0x62
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASURE_VCOM                           0x80
+*   #define VCOM_VALUE                                  0x81
+*   #define VCM_DC_SETTING_REGISTER                     0x82
+*   #define PROGRAM_MODE                                0xA0
+*   #define ACTIVE_PROGRAM                              0xA1
+*   #define READ_OTP_DATA                               0xA2
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-14):
+* 1.Remove:ImageBuff[EPD_1IN54C_HEIGHT * EPD_1IN54C_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_1in54c.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_1IN54C_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(100);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(100);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_1IN54C_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_1IN54C_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_1IN54C_ReadBusy(void)
+{
+    unsigned char busy;
+    do {
+        EPD_1IN54C_SendCommand(0x71);
+        busy = DEV_Digital_Read(EPD_BUSY_PIN);
+        busy =!(busy & 0x01);
+    }	while(busy);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_1IN54C_Init(void)
+{
+    EPD_1IN54C_Reset();
+
+    EPD_1IN54C_SendCommand(0x06); //boost soft start
+    EPD_1IN54C_SendData(0x17);
+    EPD_1IN54C_SendData(0x17);
+    EPD_1IN54C_SendData(0x17);
+    EPD_1IN54C_SendCommand(0x04);
+
+    EPD_1IN54C_ReadBusy();
+
+    EPD_1IN54C_SendCommand(0x00); //panel setting
+    EPD_1IN54C_SendData(0x0f); //LUT from OTP£¬160x296
+    EPD_1IN54C_SendData(0x0d); //VCOM to 0V fast
+
+    EPD_1IN54C_SendCommand(0x61); //resolution setting
+    EPD_1IN54C_SendData(0x98); //152
+    EPD_1IN54C_SendData(0x00); //152
+    EPD_1IN54C_SendData(0x98);
+
+    EPD_1IN54C_SendCommand(0X50); //VCOM AND DATA INTERVAL SETTING
+    EPD_1IN54C_SendData(0x77); //WBmode:VBDF 17|D7 VBDW 97 VBDB 57		WBRmode:VBDF F7 VBDW 77 VBDB 37  VBDR B7
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_1IN54C_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54C_WIDTH % 8 == 0)? (EPD_1IN54C_WIDTH / 8 ): (EPD_1IN54C_WIDTH / 8 + 1);
+    Height = EPD_1IN54C_HEIGHT;
+
+    //send black data
+    EPD_1IN54C_SendCommand(0x10);
+    for(UWORD i = 0; i < Height; i++) {
+        for(UWORD i = 0; i < Width; i++) {
+            EPD_1IN54C_SendData(0xFF);
+        }
+    }
+
+    //send red data
+    EPD_1IN54C_SendCommand(0x13);
+    for(UWORD i = 0; i < Height; i++) {
+        for(UWORD i = 0; i < Width; i++) {
+            EPD_1IN54C_SendData(0xFF);
+        }
+    }
+
+    //Display refresh
+    EPD_1IN54C_SendCommand(0x12);
+    EPD_1IN54C_ReadBusy();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_1IN54C_Display(const UBYTE *blackimage, const UBYTE *redimage)
+{
+    UWORD Width, Height;
+    Width = (EPD_1IN54C_WIDTH % 8 == 0)? (EPD_1IN54C_WIDTH / 8 ): (EPD_1IN54C_WIDTH / 8 + 1);
+    Height = EPD_1IN54C_HEIGHT;
+
+    //send black data
+    EPD_1IN54C_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_1IN54C_SendData(blackimage[i + j * Width]);
+        }
+    }
+
+    //send red data
+    EPD_1IN54C_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_1IN54C_SendData(redimage[i + j * Width]);
+        }
+    }
+
+    //Display refresh
+    EPD_1IN54C_SendCommand(0x12);
+    EPD_1IN54C_ReadBusy();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_1IN54C_Sleep(void)
+{
+    EPD_1IN54C_SendCommand(0X02);  	//power off
+    EPD_1IN54C_ReadBusy();
+    EPD_1IN54C_SendCommand(0X07);  	//deep sleep
+    EPD_1IN54C_SendData(0xA5);
+}

+ 95 - 0
luat/packages/epaper/EPD_1in54c.h

@@ -0,0 +1,95 @@
+/*****************************************************************************
+* | File      	:   EPD_1in54c.h
+* | Author      :   Waveshare team
+* | Function    :   1.54inch e-paper c
+* | Info        :
+*----------------
+* |	This version:   V3.1
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2019-06-12):
+* 1.Change:
+*    EPD_Reset() => EPD_1IN54C_Reset()
+*    EPD_SendCommand() => EPD_1IN54C_SendCommand()
+*    EPD_SendData() => EPD_1IN54C_SendData()
+*    EPD_WaitUntilIdle() => EPD_1IN54C_ReadBusy()
+*    EPD_Init() => EPD_1IN54C_Init()
+*    EPD_Clear() => EPD_1IN54C_Clear()
+*    EPD_Display() => EPD_1IN54C_Display()
+*    EPD_Sleep() => EPD_1IN54C_Sleep()
+* 2.remove commands define:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define DATA_START_TRANSMISSION_2                   0x13
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SOURCE_AND_GATE_START_SETTING               0x62
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASURE_VCOM                           0x80
+*   #define VCOM_VALUE                                  0x81
+*   #define VCM_DC_SETTING_REGISTER                     0x82
+*   #define PROGRAM_MODE                                0xA0
+*   #define ACTIVE_PROGRAM                              0xA1
+*   #define READ_OTP_DATA                               0xA2
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-14):
+* 1.Remove:ImageBuff[EPD_1IN54C_HEIGHT * EPD_1IN54C_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_1IN54C_H_
+#define __EPD_1IN54C_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_1IN54C_WIDTH       152
+#define EPD_1IN54C_HEIGHT      152
+
+void EPD_1IN54C_Init(void);
+void EPD_1IN54C_Clear(void);
+void EPD_1IN54C_Display(const UBYTE *blackimage, const UBYTE *redimage);
+void EPD_1IN54C_Sleep(void);
+
+#endif

+ 9 - 0
luat/packages/epaper/EPD_1in54f.h

@@ -0,0 +1,9 @@
+
+
+#include "DEV_Config.h"
+
+#define UBYTE uint8_t
+UBYTE EPD_1IN54FF_Init(void);
+void EPD_1IN54FF_Clear(void);
+void EPD_1IN54FF_Display(UBYTE *Image);
+void EPD_1IN54FF_Sleep(void);

+ 255 - 0
luat/packages/epaper/EPD_2in13.c

@@ -0,0 +1,255 @@
+/*****************************************************************************
+* | File      	:   EPD_2IN13.c
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    EPD_Reset() => EPD_2IN13_Reset()
+*    EPD_SendCommand() => EPD_2IN13_SendCommand()
+*    EPD_SendData() => EPD_2IN13_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN13_ReadBusy()
+*    EPD_Init() => EPD_2IN13_Init()
+*    EPD_Clear() => EPD_2IN13_Clear()
+*    EPD_Display() => EPD_2IN13_Display()
+*    EPD_Sleep() => EPD_2IN13_Sleep()
+* -----------------------------------------------------------------------------
+* V2.0(2019-01-03):
+* 1.Remove:ImageBuff[EPD_2IN13_HEIGHT * EPD_2IN13_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in13.h"
+#include "Debug.h"
+
+const unsigned char EPD_2IN13_lut_full_update[] = {
+    0x22, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x11,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E, 0x1E,
+    0x01, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+const unsigned char EPD_2IN13_lut_partial_update[] = {
+    0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN13_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN13_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN13_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN13_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN13_TurnOnDisplay(void)
+{
+    EPD_2IN13_SendCommand(0x22); // DISPLAY_UPDATE_CONTROL_2
+    EPD_2IN13_SendData(0xC4);
+    EPD_2IN13_SendCommand(0X20);	// MASTER_ACTIVATION
+    EPD_2IN13_SendCommand(0xFF);	// TERMINATE_FRAME_READ_WRITE
+
+    EPD_2IN13_ReadBusy();
+}
+
+static void EPD_2IN13_SetWindows(int x_start, int y_start, int x_end, int y_end)
+{
+    EPD_2IN13_SendCommand(0x44);
+    /* x point must be the multiple of 8 or the last 3 bits will be ignored */
+    EPD_2IN13_SendData((x_start >> 3) & 0xFF);
+    EPD_2IN13_SendData((x_end >> 3) & 0xFF);
+    EPD_2IN13_SendCommand(0x45);
+    EPD_2IN13_SendData(y_start & 0xFF);
+    EPD_2IN13_SendData((y_start >> 8) & 0xFF);
+    EPD_2IN13_SendData(y_end & 0xFF);
+    EPD_2IN13_SendData((y_end >> 8) & 0xFF);
+}
+
+static void EPD_2IN13_SetCursor(int x, int y)
+{
+    EPD_2IN13_SendCommand(0x4E);
+    /* x point must be the multiple of 8 or the last 3 bits will be ignored */
+    EPD_2IN13_SendData((x >> 3) & 0xFF);
+    EPD_2IN13_SendCommand(0x4F);
+    EPD_2IN13_SendData(y & 0xFF);
+    EPD_2IN13_SendData((y >> 8) & 0xFF);
+//    EPD_2IN13_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN13_Init(UBYTE Mode)
+{
+    EPD_2IN13_Reset();
+
+    EPD_2IN13_SendCommand(0x01); // DRIVER_OUTPUT_CONTROL
+    EPD_2IN13_SendData((EPD_2IN13_HEIGHT - 1) & 0xFF);
+    EPD_2IN13_SendData(((EPD_2IN13_HEIGHT - 1) >> 8) & 0xFF);
+    EPD_2IN13_SendData(0x00);			// GD = 0; SM = 0; TB = 0;
+
+    EPD_2IN13_SendCommand(0x0C);	// BOOSTER_SOFT_START_CONTROL
+    EPD_2IN13_SendData(0xD7);
+    EPD_2IN13_SendData(0xD6);
+    EPD_2IN13_SendData(0x9D);
+
+    EPD_2IN13_SendCommand(0x2C);	// WRITE_VCOM_REGISTER
+    EPD_2IN13_SendData(0xA8);     // VCOM 7C
+
+    EPD_2IN13_SendCommand(0x3A);	// SET_DUMMY_LINE_PERIOD
+    EPD_2IN13_SendData(0x1A);			// 4 dummy lines per gate
+
+    EPD_2IN13_SendCommand(0x3B);	// SET_GATE_TIME
+    EPD_2IN13_SendData(0x08);			// 2us per line
+
+    EPD_2IN13_SendCommand(0X3C);	// BORDER_WAVEFORM_CONTROL
+    EPD_2IN13_SendData(0x03);
+
+    EPD_2IN13_SendCommand(0X11);	// DATA_ENTRY_MODE_SETTING
+    EPD_2IN13_SendData(0x03);			// X increment; Y increment
+
+    //set the look-up table register
+    EPD_2IN13_SendCommand(0x32);
+    if(Mode == EPD_2IN13_FULL) {
+        for (UWORD i = 0; i < 30; i++) {
+            EPD_2IN13_SendData(EPD_2IN13_lut_full_update[i]);
+        }
+    } else if(Mode == EPD_2IN13_PART) {
+        for (UWORD i = 0; i < 30; i++) {
+            EPD_2IN13_SendData(EPD_2IN13_lut_partial_update[i]);
+        }
+    } else {
+        Debug("error, the Mode is EPD_2IN13_FULL or EPD_2IN13_PART");
+    }
+}
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN13_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13_WIDTH % 8 == 0)? (EPD_2IN13_WIDTH / 8 ): (EPD_2IN13_WIDTH / 8 + 1);
+    Height = EPD_2IN13_HEIGHT;
+
+    EPD_2IN13_SetWindows(0, 0, EPD_2IN13_WIDTH, EPD_2IN13_HEIGHT);
+    for (UWORD j = 0; j < Height; j++) {
+        EPD_2IN13_SetCursor(0, j);
+        EPD_2IN13_SendCommand(0x24);
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13_SendData(0Xff);
+        }
+    }
+    EPD_2IN13_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN13_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13_WIDTH % 8 == 0)? (EPD_2IN13_WIDTH / 8 ): (EPD_2IN13_WIDTH / 8 + 1);
+    Height = EPD_2IN13_HEIGHT;
+
+    EPD_2IN13_SetWindows(0, 0, EPD_2IN13_WIDTH, EPD_2IN13_HEIGHT);
+    for (UWORD j = 0; j < Height; j++) {
+        EPD_2IN13_SetCursor(0, j);
+        EPD_2IN13_SendCommand(0x24);
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13_SendData(Image[i + j * Width]);
+        }
+    }
+    EPD_2IN13_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN13_Sleep(void)
+{
+    EPD_2IN13_SendCommand(0x10); //DEEP_SLEEP_MODE
+    EPD_2IN13_SendData(0x01);
+}

+ 68 - 0
luat/packages/epaper/EPD_2in13.h

@@ -0,0 +1,68 @@
+/*****************************************************************************
+* | File      	:   EPD_2IN13.h
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    EPD_Reset() => EPD_2IN13_Reset()
+*    EPD_SendCommand() => EPD_2IN13_SendCommand()
+*    EPD_SendData() => EPD_2IN13_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN13_ReadBusy()
+*    EPD_Init() => EPD_2IN13_Init()
+*    EPD_Clear() => EPD_2IN13_Clear()
+*    EPD_Display() => EPD_2IN13_Display()
+*    EPD_Sleep() => EPD_2IN13_Sleep()
+* -----------------------------------------------------------------------------
+* V2.0(2019-01-03):
+* 1.Remove:ImageBuff[EPD_2IN13_HEIGHT * EPD_2IN13_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _EPD2IN13_H
+#define _EPD2IN13_H
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN13_WIDTH       122
+#define EPD_2IN13_HEIGHT      250
+
+#define EPD_2IN13_FULL			0
+#define EPD_2IN13_PART			1
+
+void EPD_2IN13_Init(UBYTE Mode);
+void EPD_2IN13_Clear(void);
+void EPD_2IN13_Display(UBYTE *Image);
+void EPD_2IN13_Sleep(void);
+
+#endif

+ 364 - 0
luat/packages/epaper/EPD_2in13_V2.c

@@ -0,0 +1,364 @@
+/*****************************************************************************
+* | File      	:   EPD_2in13_V2.c
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper V2
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change name:
+*    EPD_Reset() => EPD_2IN13_V2_Reset()
+*    EPD_SendCommand() => EPD_2IN13_V2_SendCommand()
+*    EPD_SendData() => EPD_2IN13_V2_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN13_V2_ReadBusy()
+*    EPD_Init() => EPD_2IN13_V2_Init()
+*    EPD_Clear() => EPD_2IN13_V2_Clear()
+*    EPD_Display() => EPD_2IN13_V2_Display()
+*    EPD_Sleep() => EPD_2IN13_V2_Sleep()
+* 2.add:
+*    EPD_2IN13_V2_DisplayPartBaseImage()
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-14):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_2IN13_V2_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in13_V2.h"
+#include "Debug.h"
+
+const unsigned char EPD_2IN13_V2_lut_full_update[]= {
+    0x80,0x60,0x40,0x00,0x00,0x00,0x00,             //LUT0: BB:     VS 0 ~7
+    0x10,0x60,0x20,0x00,0x00,0x00,0x00,             //LUT1: BW:     VS 0 ~7
+    0x80,0x60,0x40,0x00,0x00,0x00,0x00,             //LUT2: WB:     VS 0 ~7
+    0x10,0x60,0x20,0x00,0x00,0x00,0x00,             //LUT3: WW:     VS 0 ~7
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,             //LUT4: VCOM:   VS 0 ~7
+
+    0x03,0x03,0x00,0x00,0x02,                       // TP0 A~D RP0
+    0x09,0x09,0x00,0x00,0x02,                       // TP1 A~D RP1
+    0x03,0x03,0x00,0x00,0x02,                       // TP2 A~D RP2
+    0x00,0x00,0x00,0x00,0x00,                       // TP3 A~D RP3
+    0x00,0x00,0x00,0x00,0x00,                       // TP4 A~D RP4
+    0x00,0x00,0x00,0x00,0x00,                       // TP5 A~D RP5
+    0x00,0x00,0x00,0x00,0x00,                       // TP6 A~D RP6
+
+    0x15,0x41,0xA8,0x32,0x30,0x0A,
+};
+
+const unsigned char EPD_2IN13_V2_lut_partial_update[]= { //20 bytes
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,             //LUT0: BB:     VS 0 ~7
+    0x80,0x00,0x00,0x00,0x00,0x00,0x00,             //LUT1: BW:     VS 0 ~7
+    0x40,0x00,0x00,0x00,0x00,0x00,0x00,             //LUT2: WB:     VS 0 ~7
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,             //LUT3: WW:     VS 0 ~7
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,             //LUT4: VCOM:   VS 0 ~7
+
+    0x0A,0x00,0x00,0x00,0x00,                       // TP0 A~D RP0
+    0x00,0x00,0x00,0x00,0x00,                       // TP1 A~D RP1
+    0x00,0x00,0x00,0x00,0x00,                       // TP2 A~D RP2
+    0x00,0x00,0x00,0x00,0x00,                       // TP3 A~D RP3
+    0x00,0x00,0x00,0x00,0x00,                       // TP4 A~D RP4
+    0x00,0x00,0x00,0x00,0x00,                       // TP5 A~D RP5
+    0x00,0x00,0x00,0x00,0x00,                       // TP6 A~D RP6
+
+    0x15,0x41,0xA8,0x32,0x30,0x0A,
+};
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN13_V2_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN13_V2_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN13_V2_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN13_V2_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN13_V2_TurnOnDisplay(void)
+{
+    EPD_2IN13_V2_SendCommand(0x22);
+    EPD_2IN13_V2_SendData(0xC7);
+    EPD_2IN13_V2_SendCommand(0x20);
+    EPD_2IN13_V2_ReadBusy();
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN13_V2_TurnOnDisplayPart(void)
+{
+    EPD_2IN13_V2_SendCommand(0x22);
+    EPD_2IN13_V2_SendData(0x0C);
+    EPD_2IN13_V2_SendCommand(0x20);
+    EPD_2IN13_V2_ReadBusy();
+}
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN13_V2_Init(UBYTE Mode)
+{
+    UBYTE count;
+    EPD_2IN13_V2_Reset();
+
+    if(Mode == EPD_2IN13_V2_FULL) {
+        EPD_2IN13_V2_ReadBusy();
+        EPD_2IN13_V2_SendCommand(0x12); // soft reset
+        EPD_2IN13_V2_ReadBusy();
+
+        EPD_2IN13_V2_SendCommand(0x74); //set analog block control
+        EPD_2IN13_V2_SendData(0x54);
+        EPD_2IN13_V2_SendCommand(0x7E); //set digital block control
+        EPD_2IN13_V2_SendData(0x3B);
+
+        EPD_2IN13_V2_SendCommand(0x01); //Driver output control
+        EPD_2IN13_V2_SendData(0xF9);
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendData(0x00);
+
+        EPD_2IN13_V2_SendCommand(0x11); //data entry mode
+        EPD_2IN13_V2_SendData(0x01);
+
+        EPD_2IN13_V2_SendCommand(0x44); //set Ram-X address start/end position
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendData(0x0F);    //0x0C-->(15+1)*8=128
+
+        EPD_2IN13_V2_SendCommand(0x45); //set Ram-Y address start/end position
+        EPD_2IN13_V2_SendData(0xF9);   //0xF9-->(249+1)=250
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendData(0x00);
+
+        EPD_2IN13_V2_SendCommand(0x3C); //BorderWavefrom
+        EPD_2IN13_V2_SendData(0x03);
+
+        EPD_2IN13_V2_SendCommand(0x2C); //VCOM Voltage
+        EPD_2IN13_V2_SendData(0x55); //
+
+        EPD_2IN13_V2_SendCommand(0x03);
+        EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[70]);
+
+        EPD_2IN13_V2_SendCommand(0x04); //
+        EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[71]);
+        EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[72]);
+        EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[73]);
+
+        EPD_2IN13_V2_SendCommand(0x3A);     //Dummy Line
+        EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[74]);
+        EPD_2IN13_V2_SendCommand(0x3B);     //Gate time
+        EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[75]);
+
+        EPD_2IN13_V2_SendCommand(0x32);
+        for(count = 0; count < 70; count++) {
+            EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_full_update[count]);
+        }
+
+        EPD_2IN13_V2_SendCommand(0x4E);   // set RAM x address count to 0;
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendCommand(0x4F);   // set RAM y address count to 0X127;
+        EPD_2IN13_V2_SendData(0xF9);
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_ReadBusy();
+    } else if(Mode == EPD_2IN13_V2_PART) {
+        EPD_2IN13_V2_SendCommand(0x2C);     //VCOM Voltage
+        EPD_2IN13_V2_SendData(0x26);
+
+        EPD_2IN13_V2_ReadBusy();
+
+        EPD_2IN13_V2_SendCommand(0x32);
+        for(count = 0; count < 70; count++) {
+            EPD_2IN13_V2_SendData(EPD_2IN13_V2_lut_partial_update[count]);
+        }
+
+        EPD_2IN13_V2_SendCommand(0x37);
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendData(0x40);
+        EPD_2IN13_V2_SendData(0x00);
+        EPD_2IN13_V2_SendData(0x00);
+
+        EPD_2IN13_V2_SendCommand(0x22);
+        EPD_2IN13_V2_SendData(0xC0);
+
+        EPD_2IN13_V2_SendCommand(0x20);
+        EPD_2IN13_V2_ReadBusy();
+
+        EPD_2IN13_V2_SendCommand(0x3C); //BorderWavefrom
+        EPD_2IN13_V2_SendData(0x01);
+    } else {
+        Debug("error, the Mode is EPD_2IN13_FULL or EPD_2IN13_PART");
+    }
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN13_V2_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
+    Height = EPD_2IN13_V2_HEIGHT;
+
+    EPD_2IN13_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13_V2_SendData(0XFF);
+        }
+    }
+
+    EPD_2IN13_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN13_V2_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
+    Height = EPD_2IN13_V2_HEIGHT;
+
+    EPD_2IN13_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13_V2_SendData(Image[i + j * Width]);
+        }
+    }
+    EPD_2IN13_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	 The image of the previous frame must be uploaded, otherwise the
+		         first few seconds will display an exception.
+parameter:
+******************************************************************************/
+void EPD_2IN13_V2_DisplayPartBaseImage(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
+    Height = EPD_2IN13_V2_HEIGHT;
+
+    UDOUBLE Addr = 0;
+    EPD_2IN13_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            Addr = i + j * Width;
+            EPD_2IN13_V2_SendData(Image[Addr]);
+        }
+    }
+    EPD_2IN13_V2_SendCommand(0x26);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            Addr = i + j * Width;
+            EPD_2IN13_V2_SendData(Image[Addr]);
+        }
+    }
+    EPD_2IN13_V2_TurnOnDisplay();
+}
+
+
+void EPD_2IN13_V2_DisplayPart(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13_V2_WIDTH % 8 == 0)? (EPD_2IN13_V2_WIDTH / 8 ): (EPD_2IN13_V2_WIDTH / 8 + 1);
+    Height = EPD_2IN13_V2_HEIGHT;
+    EPD_2IN13_V2_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13_V2_SendData(Image[i + j * Width]);
+        }
+    }
+
+    EPD_2IN13_V2_TurnOnDisplayPart();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN13_V2_Sleep(void)
+{
+    EPD_2IN13_V2_SendCommand(0x22); //POWER OFF
+    EPD_2IN13_V2_SendData(0xC3);
+    EPD_2IN13_V2_SendCommand(0x20);
+
+    EPD_2IN13_V2_SendCommand(0x10); //enter deep sleep
+    EPD_2IN13_V2_SendData(0x01);
+    DEV_Delay_ms(100);
+}

+ 72 - 0
luat/packages/epaper/EPD_2in13_V2.h

@@ -0,0 +1,72 @@
+/*****************************************************************************
+* | File      	:   EPD_2in13_V2.h
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper V2
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change name:
+*    EPD_Reset() => EPD_2IN13_V2_Reset()
+*    EPD_SendCommand() => EPD_2IN13_V2_SendCommand()
+*    EPD_SendData() => EPD_2IN13_V2_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN13_V2_ReadBusy()
+*    EPD_Init() => EPD_2IN13_V2_Init()
+*    EPD_Clear() => EPD_2IN13_V2_Clear()
+*    EPD_Display() => EPD_2IN13_V2_Display()
+*    EPD_Sleep() => EPD_2IN13_V2_Sleep()
+* 2.add:
+*    EPD_2IN13_V2_DisplayPartBaseImage()
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-14):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_2IN13_V2_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _EPD_2IN13_V2_H_
+#define _EPD_2IN13_V2_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN13_V2_WIDTH       122
+#define EPD_2IN13_V2_HEIGHT      250
+
+#define EPD_2IN13_V2_FULL			0
+#define EPD_2IN13_V2_PART			1
+
+void EPD_2IN13_V2_Init(UBYTE Mode);
+void EPD_2IN13_V2_Clear(void);
+void EPD_2IN13_V2_Display(UBYTE *Image);
+void EPD_2IN13_V2_DisplayPart(UBYTE *Image);
+void EPD_2IN13_V2_DisplayPartBaseImage(UBYTE *Image);
+void EPD_2IN13_V2_Sleep(void);
+
+#endif

+ 197 - 0
luat/packages/epaper/EPD_2in13b_V3.c

@@ -0,0 +1,197 @@
+/*****************************************************************************
+* | File      	:   EPD_2in13b_V3.c
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper b V3
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-04-13
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in13b_V3.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN13B_V3_Reset(void)
+{
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+    
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(100);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(10);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN13B_V3_SendCommand(UBYTE Reg)
+{
+    
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN13B_V3_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN13B_V3_ReadBusy(void)
+{
+    UBYTE busy;
+    Debug("e-Paper busy\r\n");
+    do{
+        EPD_2IN13B_V3_SendCommand(0x71);
+        busy = DEV_Digital_Read(EPD_BUSY_PIN);
+        busy =!(busy & 0x01);
+    }while(busy);
+    Debug("e-Paper busy release\r\n");
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN13B_V3_TurnOnDisplay(void)
+{
+    EPD_2IN13B_V3_SendCommand(0x12);		 //DISPLAY REFRESH
+    DEV_Delay_ms(100);
+    EPD_2IN13B_V3_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN13B_V3_Init(void)
+{
+    EPD_2IN13B_V3_Reset();
+    DEV_Delay_ms(10);
+    
+    EPD_2IN13B_V3_SendCommand(0x04);  
+    EPD_2IN13B_V3_ReadBusy();//waiting for the electronic paper IC to release the idle signal
+
+    EPD_2IN13B_V3_SendCommand(0x00);//panel setting
+    EPD_2IN13B_V3_SendData(0x0f);//LUT from OTP,128x296
+    EPD_2IN13B_V3_SendData(0x89);//Temperature sensor, boost and other related timing settings
+
+    EPD_2IN13B_V3_SendCommand(0x61);//resolution setting
+    EPD_2IN13B_V3_SendData (0x68);
+    EPD_2IN13B_V3_SendData (0x00);
+    EPD_2IN13B_V3_SendData (0xD4);
+
+    EPD_2IN13B_V3_SendCommand(0X50);//VCOM AND DATA INTERVAL SETTING
+    EPD_2IN13B_V3_SendData(0x77);//WBmode:VBDF 17|D7 VBDW 97 VBDB 57
+                                 //WBRmode:VBDF F7 VBDW 77 VBDB 37  VBDR B7;
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN13B_V3_Clear(void)
+{
+    UWORD Width = (EPD_2IN13B_V3_WIDTH % 8 == 0)? (EPD_2IN13B_V3_WIDTH / 8 ): (EPD_2IN13B_V3_WIDTH / 8 + 1);
+    UWORD Height = EPD_2IN13B_V3_HEIGHT;
+    
+    //send black data
+    EPD_2IN13B_V3_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13B_V3_SendData(0xFF);
+        }
+    }
+
+    //send red data
+    EPD_2IN13B_V3_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13B_V3_SendData(0xFF);
+        }
+    }
+    EPD_2IN13B_V3_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN13B_V3_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13B_V3_WIDTH % 8 == 0)? (EPD_2IN13B_V3_WIDTH / 8 ): (EPD_2IN13B_V3_WIDTH / 8 + 1);
+    Height = EPD_2IN13B_V3_HEIGHT;
+    
+    EPD_2IN13B_V3_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13B_V3_SendData(blackimage[i + j * Width]);
+        }
+    }
+    
+    EPD_2IN13B_V3_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13B_V3_SendData(ryimage[i + j * Width]);
+        }
+    }
+    EPD_2IN13B_V3_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN13B_V3_Sleep(void)
+{
+    EPD_2IN13B_V3_SendCommand(0X50);
+    EPD_2IN13B_V3_SendData(0xf7);	
+
+    EPD_2IN13B_V3_SendCommand(0X02);  	//power off
+    EPD_2IN13B_V3_ReadBusy();          //waiting for the electronic paper IC to release the idle signal
+    EPD_2IN13B_V3_SendCommand(0X07);  	//deep sleep
+    EPD_2IN13B_V3_SendData(0xA5);
+}

+ 45 - 0
luat/packages/epaper/EPD_2in13b_V3.h

@@ -0,0 +1,45 @@
+/*****************************************************************************
+* | File      	:   EPD_2in13b_V3.h
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper b V3
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-04-13
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN13B_V3_H_
+#define __EPD_2IN13B_V3_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN13B_V3_WIDTH       104
+#define EPD_2IN13B_V3_HEIGHT      212
+
+void EPD_2IN13B_V3_Init(void);
+void EPD_2IN13B_V3_Clear(void);
+void EPD_2IN13B_V3_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_2IN13B_V3_Sleep(void);
+
+#endif

+ 247 - 0
luat/packages/epaper/EPD_2in13bc.c

@@ -0,0 +1,247 @@
+/*****************************************************************************
+* | File      	:   EPD_2in13bc.c
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper b&c
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_2IN13BC_Reset()
+*    EPD_SendCommand() => EPD_2IN13BC_SendCommand()
+*    EPD_SendData() => EPD_2IN13BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN13BC_ReadBusy()
+*    EPD_Init() => EPD_2IN13BC_Init()
+*    EPD_Clear() => EPD_2IN13BC_Clear()
+*    EPD_Display() => EPD_2IN13BC_Display()
+*    EPD_Sleep() => EPD_2IN13BC_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* V2.0(2018-11-13): 
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in13bc.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN13BC_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN13BC_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN13BC_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN13BC_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) {
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN13BC_TurnOnDisplay(void)
+{
+    EPD_2IN13BC_SendCommand(0x12);		 //DISPLAY REFRESH
+    DEV_Delay_ms(10);
+
+    EPD_2IN13BC_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN13BC_Init(void)
+{
+    EPD_2IN13BC_Reset();
+
+    EPD_2IN13BC_SendCommand(0x06); // BOOSTER_SOFT_START
+    EPD_2IN13BC_SendData(0x17);
+    EPD_2IN13BC_SendData(0x17);
+    EPD_2IN13BC_SendData(0x17);
+	
+    EPD_2IN13BC_SendCommand(0x04); // POWER_ON
+    EPD_2IN13BC_ReadBusy();
+	
+    EPD_2IN13BC_SendCommand(0x00); // PANEL_SETTING
+    EPD_2IN13BC_SendData(0x8F);
+	
+    EPD_2IN13BC_SendCommand(0x50); // VCOM_AND_DATA_INTERVAL_SETTING
+    EPD_2IN13BC_SendData(0xF0);
+    EPD_2IN13BC_SendCommand(0x61); // RESOLUTION_SETTING
+    EPD_2IN13BC_SendData(EPD_2IN13BC_WIDTH); // width: 104
+    EPD_2IN13BC_SendData(EPD_2IN13BC_HEIGHT >> 8); // height: 212
+    EPD_2IN13BC_SendData(EPD_2IN13BC_HEIGHT & 0xFF);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN13BC_Clear(void)
+{
+    UWORD Width = (EPD_2IN13BC_WIDTH % 8 == 0)? (EPD_2IN13BC_WIDTH / 8 ): (EPD_2IN13BC_WIDTH / 8 + 1);
+    UWORD Height = EPD_2IN13BC_HEIGHT;
+    
+    //send black data
+    EPD_2IN13BC_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13BC_SendData(0xFF);
+        }
+    }
+    EPD_2IN13BC_SendCommand(0x92); 
+
+    //send red data
+    EPD_2IN13BC_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13BC_SendData(0xFF);
+        }
+    }
+    EPD_2IN13BC_SendCommand(0x92); 
+    
+    EPD_2IN13BC_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN13BC_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13BC_WIDTH % 8 == 0)? (EPD_2IN13BC_WIDTH / 8 ): (EPD_2IN13BC_WIDTH / 8 + 1);
+    Height = EPD_2IN13BC_HEIGHT;
+    
+    EPD_2IN13BC_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13BC_SendData(blackimage[i + j * Width]);
+        }
+    }
+    EPD_2IN13BC_SendCommand(0x92); 
+    
+    EPD_2IN13BC_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13BC_SendData(ryimage[i + j * Width]);
+        }
+    }
+    EPD_2IN13BC_SendCommand(0x92); 
+    
+    EPD_2IN13BC_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN13BC_Sleep(void)
+{
+    EPD_2IN13BC_SendCommand(0x02); // POWER_OFF
+    EPD_2IN13BC_ReadBusy();
+    EPD_2IN13BC_SendCommand(0x07); // DEEP_SLEEP
+    EPD_2IN13BC_SendData(0xA5); // check code
+}

+ 97 - 0
luat/packages/epaper/EPD_2in13bc.h

@@ -0,0 +1,97 @@
+/*****************************************************************************
+* | File      	:   EPD_2in13bc.h
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper b&c
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_2IN13BC_Reset()
+*    EPD_SendCommand() => EPD_2IN13BC_SendCommand()
+*    EPD_SendData() => EPD_2IN13BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN13BC_ReadBusy()
+*    EPD_Init() => EPD_2IN13BC_Init()
+*    EPD_Clear() => EPD_2IN13BC_Clear()
+*    EPD_Display() => EPD_2IN13BC_Display()
+*    EPD_Sleep() => EPD_2IN13BC_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* V2.0(2018-11-13): 
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN13BC_H_
+#define __EPD_2IN13BC_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN13BC_WIDTH       104
+#define EPD_2IN13BC_HEIGHT      212
+
+void EPD_2IN13BC_Init(void);
+void EPD_2IN13BC_Clear(void);
+void EPD_2IN13BC_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_2IN13BC_Sleep(void);
+
+#endif

+ 461 - 0
luat/packages/epaper/EPD_2in13d.c

@@ -0,0 +1,461 @@
+/*****************************************************************************
+* | File      	:   EPD_2in13d.c
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper d
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    lut_vcomDC[]  => EPD_2IN13D_lut_vcomDC[]
+*    lut_ww[] => EPD_2IN13D_lut_ww[]
+*    lut_bw[] => EPD_2IN13D_lut_bw[]
+*    lut_wb[] => EPD_2IN13D_lut_wb[]
+*    lut_bb[] => EPD_2IN13D_lut_bb[]
+*    lut_vcom1[] => EPD_2IN13D_lut_vcom1[]
+*    lut_ww1[] => EPD_2IN13D_lut_ww1[]
+*    lut_bw1[] => EPD_2IN13D_lut_bw1[]
+*    lut_wb1[] => EPD_2IN13D_lut_wb1[]
+*    lut_bb1[] => EPD_2IN13D_lut_bb1[]
+*    EPD_Reset() => EPD_2IN13D_Reset()
+*    EPD_SendCommand() => EPD_2IN13D_SendCommand()
+*    EPD_SendData() => EPD_2IN13D_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN13D_ReadBusy()
+*    EPD_SetFullReg() => EPD_2IN13D_SetFullReg()
+*    EPD_SetPartReg() => EPD_2IN13D_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_2IN13D_TurnOnDisplay()
+*    EPD_Init() => EPD_2IN13D_Init()
+*    EPD_Clear() => EPD_2IN13D_Clear()
+*    EPD_Display() => EPD_2IN13D_Display()
+*    EPD_Sleep() => EPD_2IN13D_Sleep()
+* V2.0(2018-11-13):
+* 1.Remove:ImageBuff[EPD_2IN13D_HEIGHT * EPD_2IN13D_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in13d.h"
+#include "Debug.h"
+
+/**
+ * full screen update LUT
+**/
+static const unsigned char EPD_2IN13D_lut_vcomDC[] = {
+    0x00, 0x08, 0x00, 0x00, 0x00, 0x02,
+    0x60, 0x28, 0x28, 0x00, 0x00, 0x01,
+    0x00, 0x14, 0x00, 0x00, 0x00, 0x01,
+    0x00, 0x12, 0x12, 0x00, 0x00, 0x01,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00,
+};
+static const unsigned char EPD_2IN13D_lut_ww[] = {
+    0x40, 0x08, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
+    0x40, 0x14, 0x00, 0x00, 0x00, 0x01,
+    0xA0, 0x12, 0x12, 0x00, 0x00, 0x01,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const unsigned char EPD_2IN13D_lut_bw[] = {
+    0x40, 0x17, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x0F, 0x0F, 0x00, 0x00, 0x03,
+    0x40, 0x0A, 0x01, 0x00, 0x00, 0x01,
+    0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const unsigned char EPD_2IN13D_lut_wb[] = {
+    0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
+    0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
+    0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const unsigned char EPD_2IN13D_lut_bb[] = {
+    0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
+    0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
+    0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+
+/**
+ * partial screen update LUT
+**/
+static const unsigned char EPD_2IN13D_lut_vcom1[] = {
+    0x00, 0x19, 0x01, 0x00, 0x00, 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,
+};
+static const unsigned char EPD_2IN13D_lut_ww1[] = {
+    0x00, 0x19, 0x01, 0x00, 0x00, 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,
+};
+static const unsigned char EPD_2IN13D_lut_bw1[] = {
+    0x80, 0x19, 0x01, 0x00, 0x00, 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,
+};
+static const unsigned char EPD_2IN13D_lut_wb1[] = {
+    0x40, 0x19, 0x01, 0x00, 0x00, 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,
+};
+static const unsigned char EPD_2IN13D_lut_bb1[] = {
+    0x00, 0x19, 0x01, 0x00, 0x00, 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,
+};
+
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN13D_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN13D_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN13D_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_2IN13D_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    UBYTE busy;
+    do {
+        EPD_2IN13D_SendCommand(0x71);
+        busy = DEV_Digital_Read(EPD_BUSY_PIN);
+        busy =!(busy & 0x01);
+    } while(busy);
+    DEV_Delay_ms(200);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	LUT download
+parameter:
+******************************************************************************/
+static void EPD_2IN13D_SetFullReg(void)
+{
+    EPD_2IN13D_SendCommand(0X50);			//VCOM AND DATA INTERVAL SETTING
+    EPD_2IN13D_SendData(0xb7);		//WBmode:VBDF 17|D7 VBDW 97 VBDB 57		WBRmode:VBDF F7 VBDW 77 VBDB 37  VBDR B7
+
+    unsigned int count;
+    EPD_2IN13D_SendCommand(0x20);
+    for(count=0; count<44; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_vcomDC[count]);
+    }
+
+    EPD_2IN13D_SendCommand(0x21);
+    for(count=0; count<42; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_ww[count]);
+    }
+
+    EPD_2IN13D_SendCommand(0x22);
+    for(count=0; count<42; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_bw[count]);
+    }
+
+    EPD_2IN13D_SendCommand(0x23);
+    for(count=0; count<42; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_wb[count]);
+    }
+
+    EPD_2IN13D_SendCommand(0x24);
+    for(count=0; count<42; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_bb[count]);
+    }
+}
+
+/******************************************************************************
+function :	LUT download
+parameter:
+******************************************************************************/
+static void EPD_2IN13D_SetPartReg(void)
+{
+    EPD_2IN13D_SendCommand(0x82);			//vcom_DC setting
+    EPD_2IN13D_SendData(0x00);
+    EPD_2IN13D_SendCommand(0X50);
+    EPD_2IN13D_SendData(0xb7);
+	
+    unsigned int count;
+    EPD_2IN13D_SendCommand(0x20);
+    for(count=0; count<44; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_vcom1[count]);
+    }
+
+    EPD_2IN13D_SendCommand(0x21);
+    for(count=0; count<42; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_ww1[count]);
+    }
+
+    EPD_2IN13D_SendCommand(0x22);
+    for(count=0; count<42; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_bw1[count]);
+    }
+
+    EPD_2IN13D_SendCommand(0x23);
+    for(count=0; count<42; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_wb1[count]);
+    }
+
+    EPD_2IN13D_SendCommand(0x24);
+    for(count=0; count<42; count++) {
+        EPD_2IN13D_SendData(EPD_2IN13D_lut_bb1[count]);
+    }
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN13D_TurnOnDisplay(void)
+{
+    EPD_2IN13D_SendCommand(0x12);		 //DISPLAY REFRESH
+    DEV_Delay_ms(10);     //!!!The delay here is necessary, 200uS at least!!!
+
+    EPD_2IN13D_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN13D_Init()
+{
+    EPD_2IN13D_Reset();
+
+    EPD_2IN13D_SendCommand(0x01);	//POWER SETTING
+    EPD_2IN13D_SendData(0x03);
+    EPD_2IN13D_SendData(0x00);
+    EPD_2IN13D_SendData(0x2b);
+    EPD_2IN13D_SendData(0x2b);
+    EPD_2IN13D_SendData(0x03);
+
+    EPD_2IN13D_SendCommand(0x06);	//boost soft start
+    EPD_2IN13D_SendData(0x17);     //A
+    EPD_2IN13D_SendData(0x17);     //B
+    EPD_2IN13D_SendData(0x17);     //C
+
+    EPD_2IN13D_SendCommand(0x04);
+    EPD_2IN13D_ReadBusy();
+
+    EPD_2IN13D_SendCommand(0x00);	//panel setting
+    EPD_2IN13D_SendData(0xbf);     //LUT from OTP,128x296
+    EPD_2IN13D_SendData(0x0e);     //VCOM to 0V fast
+
+    EPD_2IN13D_SendCommand(0x30);	//PLL setting
+    EPD_2IN13D_SendData(0x3a);     // 3a 100HZ   29 150Hz 39 200HZ	31 171HZ
+
+    EPD_2IN13D_SendCommand(0x61);	//resolution setting
+    EPD_2IN13D_SendData(EPD_2IN13D_WIDTH);
+    EPD_2IN13D_SendData((EPD_2IN13D_HEIGHT >> 8) & 0xff);
+    EPD_2IN13D_SendData(EPD_2IN13D_HEIGHT& 0xff);
+
+    EPD_2IN13D_SendCommand(0x82);	//vcom_DC setting
+    EPD_2IN13D_SendData(0x28);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN13D_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13D_WIDTH % 8 == 0)? (EPD_2IN13D_WIDTH / 8 ): (EPD_2IN13D_WIDTH / 8 + 1);
+    Height = EPD_2IN13D_HEIGHT;
+
+    EPD_2IN13D_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13D_SendData(0x00);
+        }
+    }
+
+    EPD_2IN13D_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13D_SendData(0xFF);
+        }
+    }
+
+    EPD_2IN13D_SetFullReg();
+    EPD_2IN13D_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN13D_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN13D_WIDTH % 8 == 0)? (EPD_2IN13D_WIDTH / 8 ): (EPD_2IN13D_WIDTH / 8 + 1);
+    Height = EPD_2IN13D_HEIGHT;
+
+    EPD_2IN13D_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13D_SendData(0x00);
+        }
+    }
+    // Dev_Delay_ms(10);
+
+    EPD_2IN13D_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13D_SendData(Image[i + j * Width]);
+        }
+    }
+    // Dev_Delay_ms(10);
+
+		EPD_2IN13D_SetFullReg();
+    EPD_2IN13D_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN13D_DisplayPart(UBYTE *Image)
+{
+    /* Set partial Windows */
+    EPD_2IN13D_SetPartReg();
+    EPD_2IN13D_SendCommand(0x91);		//This command makes the display enter partial mode
+    EPD_2IN13D_SendCommand(0x90);		//resolution setting
+    EPD_2IN13D_SendData(0);           //x-start
+    EPD_2IN13D_SendData(EPD_2IN13D_WIDTH - 1);       //x-end
+
+    EPD_2IN13D_SendData(0);
+    EPD_2IN13D_SendData(0);     //y-start
+    EPD_2IN13D_SendData(EPD_2IN13D_HEIGHT / 256);
+    EPD_2IN13D_SendData(EPD_2IN13D_HEIGHT % 256 - 1);  //y-end
+    EPD_2IN13D_SendData(0x28);
+
+    UWORD Width;
+    Width = (EPD_2IN13D_WIDTH % 8 == 0)? (EPD_2IN13D_WIDTH / 8 ): (EPD_2IN13D_WIDTH / 8 + 1);
+    
+    /* send data */
+    EPD_2IN13D_SendCommand(0x10);
+    for (UWORD j = 0; j < EPD_2IN13D_HEIGHT; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13D_SendData(~Image[i + j * Width]);
+        }
+    }
+
+    EPD_2IN13D_SendCommand(0x13);
+    for (UWORD j = 0; j < EPD_2IN13D_HEIGHT; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN13D_SendData(Image[i + j * Width]);
+        }
+    }
+
+    /* Set partial refresh */    
+    EPD_2IN13D_TurnOnDisplay();
+}
+
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN13D_Sleep(void)
+{
+    EPD_2IN13D_SendCommand(0X50);
+    EPD_2IN13D_SendData(0xf7);
+    EPD_2IN13D_SendCommand(0X02);  	//power off
+    EPD_2IN13D_SendCommand(0X07);  	//deep sleep
+    EPD_2IN13D_SendData(0xA5);
+}

+ 78 - 0
luat/packages/epaper/EPD_2in13d.h

@@ -0,0 +1,78 @@
+/*****************************************************************************
+* | File      	:   EPD_2in13d.h
+* | Author      :   Waveshare team
+* | Function    :   2.13inch e-paper d
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    lut_vcomDC[]  => EPD_2IN13D_lut_vcomDC[]
+*    lut_ww[] => EPD_2IN13D_lut_ww[]
+*    lut_bw[] => EPD_2IN13D_lut_bw[]
+*    lut_wb[] => EPD_2IN13D_lut_wb[]
+*    lut_bb[] => EPD_2IN13D_lut_bb[]
+*    lut_vcom1[] => EPD_2IN13D_lut_vcom1[]
+*    lut_ww1[] => EPD_2IN13D_lut_ww1[]
+*    lut_bw1[] => EPD_2IN13D_lut_bw1[]
+*    lut_wb1[] => EPD_2IN13D_lut_wb1[]
+*    lut_bb1[] => EPD_2IN13D_lut_bb1[]
+*    EPD_Reset() => EPD_2IN13D_Reset()
+*    EPD_SendCommand() => EPD_2IN13D_SendCommand()
+*    EPD_SendData() => EPD_2IN13D_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN13D_ReadBusy()
+*    EPD_SetFullReg() => EPD_2IN13D_SetFullReg()
+*    EPD_SetPartReg() => EPD_2IN13D_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_2IN13D_TurnOnDisplay()
+*    EPD_Init() => EPD_2IN13D_Init()
+*    EPD_Clear() => EPD_2IN13D_Clear()
+*    EPD_Display() => EPD_2IN13D_Display()
+*    EPD_Sleep() => EPD_2IN13D_Sleep()
+* V2.0(2018-11-13):
+* 1.Remove:ImageBuff[EPD_2IN13D_HEIGHT * EPD_2IN13D_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN13D_H_
+#define __EPD_2IN13D_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN13D_WIDTH   104
+#define EPD_2IN13D_HEIGHT  212
+
+void EPD_2IN13D_Init(void);
+void EPD_2IN13D_Clear(void);
+void EPD_2IN13D_Display(UBYTE *Image);
+void EPD_2IN13D_DisplayPart(UBYTE *Image);
+void EPD_2IN13D_Sleep(void);
+
+#endif

+ 259 - 0
luat/packages/epaper/EPD_2in66.c

@@ -0,0 +1,259 @@
+/*****************************************************************************
+* | File      	:  	EPD_2in66.c
+* | Author      :   Waveshare team
+* | Function    :   2.66inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-07-29
+* | Info        :
+* -----------------------------------------------------------------------------
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in66.h"
+#include "Debug.h"
+
+const unsigned char WF_PARTIAL[159] ={
+0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0A,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x00,0x00,
+0x00,0x00,0x00,0x00,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,0x22,0x22,0x22,0x22,0x22,0x22,
+0x00,0x00,0x00,0x22,0x17,0x41,0xB0,0x32,0x36,
+};
+
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN66_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN66_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN66_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN66_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    DEV_Delay_ms(100);
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(100);
+    }
+    DEV_Delay_ms(100);
+    Debug("e-Paper busy release\r\n");
+}
+
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN66_TurnOnDisplay(void)
+{
+    EPD_2IN66_SendCommand(0x20);
+    EPD_2IN66_ReadBusy();
+
+}
+
+/******************************************************************************
+function :	Send LUT
+parameter:
+******************************************************************************/
+static void EPD_2IN66_SetLUA(void)
+{
+    UWORD count;
+    EPD_2IN66_SendCommand(0x32);
+    for(count=0;count<153;count++){
+        EPD_2IN66_SendData(WF_PARTIAL[count]);
+    }    
+    EPD_2IN66_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN66_Init(void)
+{
+    EPD_2IN66_Reset();
+    EPD_2IN66_ReadBusy();
+    EPD_2IN66_SendCommand(0x12);//soft  reset
+    EPD_2IN66_ReadBusy();
+	/*	Y increment, X increment	*/
+	EPD_2IN66_SendCommand(0x11);
+	EPD_2IN66_SendData(0x03);
+	/*	Set RamX-address Start/End position	*/
+	EPD_2IN66_SendCommand(0x44);
+	EPD_2IN66_SendData(0x01);	
+	EPD_2IN66_SendData((EPD_2IN66_WIDTH % 8 == 0)? (EPD_2IN66_WIDTH / 8 ): (EPD_2IN66_WIDTH / 8 + 1) );
+	/*	Set RamY-address Start/End position	*/
+	EPD_2IN66_SendCommand(0x45);
+	EPD_2IN66_SendData(0);
+	EPD_2IN66_SendData(0);
+	EPD_2IN66_SendData((EPD_2IN66_HEIGHT&0xff));
+	EPD_2IN66_SendData((EPD_2IN66_HEIGHT&0x100)>>8);
+	
+
+	EPD_2IN66_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register(Partial display)
+parameter:
+******************************************************************************/
+void EPD_2IN66_Init_Partial(void)
+{
+    EPD_2IN66_Reset();
+    EPD_2IN66_ReadBusy();
+    EPD_2IN66_SendCommand(0x12);//soft  reset
+    EPD_2IN66_ReadBusy();
+   
+    EPD_2IN66_SetLUA();
+    EPD_2IN66_SendCommand(0x37); 
+    EPD_2IN66_SendData(0x00);  
+    EPD_2IN66_SendData(0x00);  
+    EPD_2IN66_SendData(0x00);  
+    EPD_2IN66_SendData(0x00); 
+    EPD_2IN66_SendData(0x00);  	
+    EPD_2IN66_SendData(0x40);  
+    EPD_2IN66_SendData(0x00);  
+    EPD_2IN66_SendData(0x00);   
+    EPD_2IN66_SendData(0x00);  
+    EPD_2IN66_SendData(0x00);
+
+	/* Y increment, X increment */
+    EPD_2IN66_SendCommand(0x11);
+    EPD_2IN66_SendData(0x03);
+    /*	Set RamX-address Start/End position	*/
+    EPD_2IN66_SendCommand(0x44);
+    EPD_2IN66_SendData(0x01); 
+    EPD_2IN66_SendData((EPD_2IN66_WIDTH % 8 == 0)? (EPD_2IN66_WIDTH / 8 ): (EPD_2IN66_WIDTH / 8 + 1) );
+    /*	Set RamY-address Start/End position	*/
+    EPD_2IN66_SendCommand(0x45);
+    EPD_2IN66_SendData(0);
+    EPD_2IN66_SendData(0);
+    EPD_2IN66_SendData((EPD_2IN66_HEIGHT&0xff));
+    EPD_2IN66_SendData((EPD_2IN66_HEIGHT&0x100)>>8);
+
+    EPD_2IN66_SendCommand(0x3C); 
+    EPD_2IN66_SendData(0x80);   
+
+    EPD_2IN66_SendCommand(0x22); 
+    EPD_2IN66_SendData(0xcf); 
+    EPD_2IN66_SendCommand(0x20); 
+    EPD_2IN66_ReadBusy();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN66_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN66_WIDTH % 8 == 0)? (EPD_2IN66_WIDTH / 8 ): (EPD_2IN66_WIDTH / 8 + 1);
+    Height = EPD_2IN66_HEIGHT;
+    EPD_2IN66_SendCommand(0x24);
+    for (UWORD j = 0; j <=Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN66_SendData(0xff);
+        }
+    }
+    EPD_2IN66_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN66_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN66_WIDTH % 8 == 0)? (EPD_2IN66_WIDTH / 8 ): (EPD_2IN66_WIDTH / 8 + 1);
+    Height = EPD_2IN66_HEIGHT;
+
+    UDOUBLE Addr = 0;
+	
+    // UDOUBLE Offset = ImageName;
+    EPD_2IN66_SendCommand(0x24);
+    for (UWORD j = 0; j <Height; j++) {
+        for (UWORD i = 0; i <Width; i++) {
+            Addr = i + j * Width;
+            EPD_2IN66_SendData(Image[Addr]);
+        }
+    }
+    EPD_2IN66_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN66_Sleep(void)
+{
+    EPD_2IN66_SendCommand(0x10);
+    EPD_2IN66_SendData(0x01); 
+    //EPD_2IN66_ReadBusy();
+}

+ 46 - 0
luat/packages/epaper/EPD_2in66.h

@@ -0,0 +1,46 @@
+/*****************************************************************************
+* | File      	:   EPD_2in66.h
+* | Author      :   Waveshare team
+* | Function    :   2.66inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-07-29
+* | Info        :
+* -----------------------------------------------------------------------------
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN66_H_
+#define __EPD_2IN66_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN66_WIDTH       152
+#define EPD_2IN66_HEIGHT      296
+
+
+void EPD_2IN66_Init(void);
+void EPD_2IN66_Init_Partial(void);
+void EPD_2IN66_Clear(void);
+void EPD_2IN66_Display(UBYTE *Image);
+void EPD_2IN66_Sleep(void);
+
+#endif

+ 213 - 0
luat/packages/epaper/EPD_2in66b.c

@@ -0,0 +1,213 @@
+/*****************************************************************************
+* | File      	:  	EPD_2in66b.c
+* | Author      :   Waveshare team
+* | Function    :   2.66inch e-paper b
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-12-02
+* | Info        :
+* -----------------------------------------------------------------------------
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in66b.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN66B_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN66B_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN66B_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_2IN66B_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    DEV_Delay_ms(50);
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(10);
+    }
+    DEV_Delay_ms(50);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN66B_TurnOnDisplay(void)
+{
+    EPD_2IN66B_SendCommand(0x20);
+    EPD_2IN66B_ReadBusy();
+}
+
+/******************************************************************************
+function :	Setting the display window
+parameter:
+******************************************************************************/
+static void EPD_2IN66B_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend)
+{
+    EPD_2IN66B_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+    EPD_2IN66B_SendData((Xstart>>3) & 0x1F);
+    EPD_2IN66B_SendData((Xend>>3) & 0x1F);
+	
+    EPD_2IN66B_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+    EPD_2IN66B_SendData(Ystart & 0xFF);
+    EPD_2IN66B_SendData((Ystart >> 8) & 0x01);
+    EPD_2IN66B_SendData(Yend & 0xFF);
+    EPD_2IN66B_SendData((Yend >> 8) & 0x01);
+}
+
+/******************************************************************************
+function :	Set Cursor
+parameter:
+******************************************************************************/
+static void EPD_2IN66B_SetCursor(UWORD Xstart, UWORD Ystart)
+{
+    EPD_2IN66B_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER
+    EPD_2IN66B_SendData(Xstart & 0x1F);
+
+    EPD_2IN66B_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER
+    EPD_2IN66B_SendData(Ystart & 0xFF);
+    EPD_2IN66B_SendData((Ystart >> 8) & 0x01);
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN66B_Init(void)
+{
+    EPD_2IN66B_Reset();
+    EPD_2IN66B_ReadBusy();
+    EPD_2IN66B_SendCommand(0x12);//soft  reset
+    EPD_2IN66B_ReadBusy();
+
+	EPD_2IN66B_SendCommand(0x11); //data entry mode       
+	EPD_2IN66B_SendData(0x03);
+
+	EPD_2IN66B_SetWindows(0, 0, EPD_2IN66B_WIDTH-1, EPD_2IN66B_HEIGHT-1);
+	
+	EPD_2IN66B_SendCommand(0x21); //  Display update control
+	EPD_2IN66B_SendData(0x00);
+	EPD_2IN66B_SendData(0x80);	
+
+	EPD_2IN66B_SetCursor(0, 0);
+	EPD_2IN66B_ReadBusy();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN66B_Display(UBYTE *ImageBlack, UBYTE*ImageRed)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN66B_WIDTH % 8 == 0)? (EPD_2IN66B_WIDTH / 8 ): (EPD_2IN66B_WIDTH / 8 + 1);
+    Height = EPD_2IN66B_HEIGHT;
+
+    EPD_2IN66B_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN66B_SendData(ImageBlack[i + j * Width]);
+        }
+    }
+	
+    EPD_2IN66B_SendCommand(0x26);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN66B_SendData(~ImageRed[i + j * Width]);
+        }
+    }
+
+    EPD_2IN66B_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN66B_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN66B_WIDTH % 8 == 0)? (EPD_2IN66B_WIDTH / 8 ): (EPD_2IN66B_WIDTH / 8 + 1);
+    Height = EPD_2IN66B_HEIGHT;
+
+    EPD_2IN66B_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN66B_SendData(0xff);
+        }
+    }
+	EPD_2IN66B_SendCommand(0x26);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN66B_SendData(0x00);
+        }
+    }
+    EPD_2IN66B_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN66B_Sleep(void)
+{
+    EPD_2IN66B_SendCommand(0x10);
+    EPD_2IN66B_SendData(0x01); 
+}

+ 44 - 0
luat/packages/epaper/EPD_2in66b.h

@@ -0,0 +1,44 @@
+/*****************************************************************************
+* | File      	:   EPD_2in66b.h
+* | Author      :   Waveshare team
+* | Function    :   2.66inch e-paper b
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-12-02
+* | Info        :
+* -----------------------------------------------------------------------------
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN66B_H_
+#define __EPD_2IN66B_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN66B_WIDTH       152
+#define EPD_2IN66B_HEIGHT      296
+
+
+void EPD_2IN66B_Init(void);
+void EPD_2IN66B_Display(UBYTE *ImageBlack, UBYTE*ImageRed);
+void EPD_2IN66B_Clear(void);
+void EPD_2IN66B_Sleep(void);
+#endif

+ 614 - 0
luat/packages/epaper/EPD_2in7.c

@@ -0,0 +1,614 @@
+/*****************************************************************************
+* | File      	:   EPD_2in7.c
+* | Author      :   Waveshare team
+* | Function    :   2.7inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.1
+* | Date        :   2019-10-10
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2019-10-10):
+* 1. Add 4 grayscale display
+*     Add   EPD_2in7_gray_lut_vcom[]
+*     Add   EPD_2in7_gray_lut_ww[]
+*     Add   EPD_2in7_gray_lut_bw[]
+*     Add   EPD_2in7_gray_lut_wb[]
+*     Add   EPD_2in7_gray_lut_bb[]
+*     Add   EPD_2in7_gray_SetLut()
+*     Add   EPD_2IN7_Init_4Gray()
+*     Add   EPD_2IN7_4GrayDisplay()
+* V3.0(2019-06-12):
+* 1.Change:
+*    lut_vcom_dc[] => EPD_2in7_lut_vcom_dc[]
+*    lut_ww[] => EPD_2in7_lut_ww[] 
+*    lut_bw[] => EPD_2in7_lut_bw[]
+*    lut_bb[] => EPD_2in7_lut_bb[]
+*    lut_wb[] => EPD_2in7_lut_wb[]
+*    EPD_Reset() => EPD_2in7_Reset()
+*    EPD_SendCommand() => EPD_2in7_SendCommand()
+*    EPD_SendData() => EPD_2in7_SendData()
+*    EPD_WaitUntilIdle() => EPD_2in7_ReadBusy()
+*    EPD_SetLut() => EPD_2in7_SetLut()
+*    EPD_Init() => EPD_2in7_Init()
+*    EPD_Clear() => EPD_2in7_Clear()
+*    EPD_Display() => EPD_2in7_Display()
+*    EPD_Sleep() => EPD_2in7_Sleep()
+* 2.remove commands define:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define DATA_START_TRANSMISSION_2                   0x13
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SOURCE_AND_GATE_START_SETTING               0x62
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASURE_VCOM                           0x80
+*   #define VCOM_VALUE                                  0x81
+*   #define VCM_DC_SETTING_REGISTER                     0x82
+*   #define PROGRAM_MODE                                0xA0
+*   #define ACTIVE_PROGRAM                              0xA1
+*   #define READ_OTP_DATA                               0xA2
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-06):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in7.h"
+#include "Debug.h"
+
+static const unsigned char EPD_2in7_lut_vcom_dc[] = {
+    0x00	,0x00,
+    0x00	,0x08	,0x00	,0x00	,0x00	,0x02,
+    0x60	,0x28	,0x28	,0x00	,0x00	,0x01,
+    0x00	,0x14	,0x00	,0x00	,0x00	,0x01,
+    0x00	,0x12	,0x12	,0x00	,0x00	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00
+};
+static const unsigned char EPD_2in7_lut_ww[] = {
+    0x40	,0x08	,0x00	,0x00	,0x00	,0x02,
+    0x90	,0x28	,0x28	,0x00	,0x00	,0x01,
+    0x40	,0x14	,0x00	,0x00	,0x00	,0x01,
+    0xA0	,0x12	,0x12	,0x00	,0x00	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+static const unsigned char EPD_2in7_lut_bw[] = {
+    0x40	,0x08	,0x00	,0x00	,0x00	,0x02,
+    0x90	,0x28	,0x28	,0x00	,0x00	,0x01,
+    0x40	,0x14	,0x00	,0x00	,0x00	,0x01,
+    0xA0	,0x12	,0x12	,0x00	,0x00	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+static const unsigned char EPD_2in7_lut_bb[] = {
+    0x80	,0x08	,0x00	,0x00	,0x00	,0x02,
+    0x90	,0x28	,0x28	,0x00	,0x00	,0x01,
+    0x80	,0x14	,0x00	,0x00	,0x00	,0x01,
+    0x50	,0x12	,0x12	,0x00	,0x00	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+static const unsigned char EPD_2in7_lut_wb[] = {
+    0x80	,0x08	,0x00	,0x00	,0x00	,0x02,
+    0x90	,0x28	,0x28	,0x00	,0x00	,0x01,
+    0x80	,0x14	,0x00	,0x00	,0x00	,0x01,
+    0x50	,0x12	,0x12	,0x00	,0x00	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+
+//////////////////////////////////////full screen update LUT////////////////////////////////////////////
+//0~3 gray
+static const unsigned char EPD_2in7_gray_lut_vcom[] =
+{
+0x00	,0x00,
+0x00	,0x0A	,0x00	,0x00	,0x00	,0x01,
+0x60	,0x14	,0x14	,0x00	,0x00	,0x01,
+0x00	,0x14	,0x00	,0x00	,0x00	,0x01,
+0x00	,0x13	,0x0A	,0x01	,0x00	,0x01,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,				
+};
+//R21
+static const unsigned char EPD_2in7_gray_lut_ww[] ={
+0x40	,0x0A	,0x00	,0x00	,0x00	,0x01,
+0x90	,0x14	,0x14	,0x00	,0x00	,0x01,
+0x10	,0x14	,0x0A	,0x00	,0x00	,0x01,
+0xA0	,0x13	,0x01	,0x00	,0x00	,0x01,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+//R22H	r
+static const unsigned char EPD_2in7_gray_lut_bw[] ={
+0x40	,0x0A	,0x00	,0x00	,0x00	,0x01,
+0x90	,0x14	,0x14	,0x00	,0x00	,0x01,
+0x00	,0x14	,0x0A	,0x00	,0x00	,0x01,
+0x99	,0x0C	,0x01	,0x03	,0x04	,0x01,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+//R23H	w
+static const unsigned char EPD_2in7_gray_lut_wb[] ={
+0x40	,0x0A	,0x00	,0x00	,0x00	,0x01,
+0x90	,0x14	,0x14	,0x00	,0x00	,0x01,
+0x00	,0x14	,0x0A	,0x00	,0x00	,0x01,
+0x99	,0x0B	,0x04	,0x04	,0x01	,0x01,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+//R24H	b
+static const unsigned char EPD_2in7_gray_lut_bb[] ={
+0x80	,0x0A	,0x00	,0x00	,0x00	,0x01,
+0x90	,0x14	,0x14	,0x00	,0x00	,0x01,
+0x20	,0x14	,0x0A	,0x00	,0x00	,0x01,
+0x50	,0x13	,0x01	,0x00	,0x00	,0x01,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2in7_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2in7_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2in7_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_2in7_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    UBYTE busy;
+    do {
+        EPD_2in7_SendCommand(0x71);
+        busy = DEV_Digital_Read(EPD_BUSY_PIN);
+        busy =!(busy & 0x01);
+    } while(busy);
+    DEV_Delay_ms(200);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	set the look-up tables
+parameter:
+******************************************************************************/
+static void EPD_2in7_SetLut(void)
+{
+    unsigned int count;
+    EPD_2in7_SendCommand(0x20); //vcom
+    for(count = 0; count < 44; count++) {
+        EPD_2in7_SendData(EPD_2in7_lut_vcom_dc[count]);
+    }
+
+    EPD_2in7_SendCommand(0x21); //ww --
+    for(count = 0; count < 42; count++) {
+        EPD_2in7_SendData(EPD_2in7_lut_ww[count]);
+    }
+
+    EPD_2in7_SendCommand(0x22); //bw r
+    for(count = 0; count < 42; count++) {
+        EPD_2in7_SendData(EPD_2in7_lut_bw[count]);
+    }
+
+    EPD_2in7_SendCommand(0x23); //wb w
+    for(count = 0; count < 42; count++) {
+        EPD_2in7_SendData(EPD_2in7_lut_bb[count]);
+    }
+
+    EPD_2in7_SendCommand(0x24); //bb b
+    for(count = 0; count < 42; count++) {
+        EPD_2in7_SendData(EPD_2in7_lut_wb[count]);
+    }
+}
+
+void EPD_2in7_gray_SetLut(void)
+{
+	unsigned int count;	 
+    EPD_2in7_SendCommand(0x20);							//vcom
+		for(count=0;count<44;count++)
+			{EPD_2in7_SendData(EPD_2in7_gray_lut_vcom[count]);}
+		
+	EPD_2in7_SendCommand(0x21);							//red not use
+	for(count=0;count<42;count++)
+		{EPD_2in7_SendData(EPD_2in7_gray_lut_ww[count]);}
+
+		EPD_2in7_SendCommand(0x22);							//bw r
+		for(count=0;count<42;count++)
+			{EPD_2in7_SendData(EPD_2in7_gray_lut_bw[count]);}
+
+		EPD_2in7_SendCommand(0x23);							//wb w
+		for(count=0;count<42;count++)
+			{EPD_2in7_SendData(EPD_2in7_gray_lut_wb[count]);}
+
+		EPD_2in7_SendCommand(0x24);							//bb b
+		for(count=0;count<42;count++)
+			{EPD_2in7_SendData(EPD_2in7_gray_lut_bb[count]);}
+
+		EPD_2in7_SendCommand(0x25);							//vcom
+		for(count=0;count<42;count++)
+			{EPD_2in7_SendData(EPD_2in7_gray_lut_ww[count]);}
+         
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN7_Init(void)
+{
+    EPD_2in7_Reset();
+
+    EPD_2in7_SendCommand(0x01); // POWER_SETTING
+    EPD_2in7_SendData(0x03); // VDS_EN, VDG_EN
+    EPD_2in7_SendData(0x00); // VCOM_HV, VGHL_LV[1], VGHL_LV[0]
+    EPD_2in7_SendData(0x2b); // VDH
+    EPD_2in7_SendData(0x2b); // VDL
+    EPD_2in7_SendData(0x09); // VDHR
+	
+    EPD_2in7_SendCommand(0x06);  // BOOSTER_SOFT_START
+    EPD_2in7_SendData(0x07);
+    EPD_2in7_SendData(0x07);
+    EPD_2in7_SendData(0x17);
+	
+    // Power optimization
+    EPD_2in7_SendCommand(0xF8);
+    EPD_2in7_SendData(0x60);
+    EPD_2in7_SendData(0xA5);
+	
+    // Power optimization
+    EPD_2in7_SendCommand(0xF8);
+    EPD_2in7_SendData(0x89);
+    EPD_2in7_SendData(0xA5);
+		
+    // Power optimization
+    EPD_2in7_SendCommand(0xF8);
+    EPD_2in7_SendData(0x90);
+    EPD_2in7_SendData(0x00);
+		
+    // Power optimization
+    EPD_2in7_SendCommand(0xF8);
+    EPD_2in7_SendData(0x93);
+    EPD_2in7_SendData(0x2A);
+		
+    // Power optimization
+    EPD_2in7_SendCommand(0xF8);
+    EPD_2in7_SendData(0xA0);
+    EPD_2in7_SendData(0xA5);
+		
+    // Power optimization
+    EPD_2in7_SendCommand(0xF8);
+    EPD_2in7_SendData(0xA1);
+    EPD_2in7_SendData(0x00);
+		
+    // Power optimization
+    EPD_2in7_SendCommand(0xF8);
+    EPD_2in7_SendData(0x73);
+    EPD_2in7_SendData(0x41);
+		
+    EPD_2in7_SendCommand(0x16); // PARTIAL_DISPLAY_REFRESH
+    EPD_2in7_SendData(0x00);
+		
+    EPD_2in7_SendCommand(0x04); // POWER_ON
+    EPD_2in7_ReadBusy();
+
+    EPD_2in7_SendCommand(0x00); // PANEL_SETTING
+    EPD_2in7_SendData(0xAF); // KW-BF   KWR-AF    BWROTP 0f
+    EPD_2in7_SendCommand(0x30); // PLL_CONTROL
+    EPD_2in7_SendData(0x3A); // 3A 100HZ   29 150Hz 39 200HZ    31 171HZ
+    EPD_2in7_SendCommand(0x82);  // VCM_DC_SETTING_REGISTER
+    EPD_2in7_SendData(0x12);
+
+    EPD_2in7_SetLut();
+}
+
+void EPD_2IN7_Init_4Gray(void)
+{
+    EPD_2in7_Reset();
+    EPD_2in7_SendCommand(0x01);			//POWER SETTING
+    EPD_2in7_SendData (0x03);
+    EPD_2in7_SendData (0x00);    
+    EPD_2in7_SendData (0x2b);															 
+    EPD_2in7_SendData (0x2b);		
+
+
+    EPD_2in7_SendCommand(0x06);         //booster soft start
+    EPD_2in7_SendData (0x07);		//A
+    EPD_2in7_SendData (0x07);		//B
+    EPD_2in7_SendData (0x17);		//C 
+
+    EPD_2in7_SendCommand(0xF8);         //boost??
+    EPD_2in7_SendData (0x60);
+    EPD_2in7_SendData (0xA5);
+
+    EPD_2in7_SendCommand(0xF8);         //boost??
+    EPD_2in7_SendData (0x89);
+    EPD_2in7_SendData (0xA5);
+
+    EPD_2in7_SendCommand(0xF8);         //boost??
+    EPD_2in7_SendData (0x90);
+    EPD_2in7_SendData (0x00);
+
+    EPD_2in7_SendCommand(0xF8);         //boost??
+    EPD_2in7_SendData (0x93);
+    EPD_2in7_SendData (0x2A);
+
+    EPD_2in7_SendCommand(0xF8);         //boost??
+    EPD_2in7_SendData (0xa0);
+    EPD_2in7_SendData (0xa5);
+
+    EPD_2in7_SendCommand(0xF8);         //boost??
+    EPD_2in7_SendData (0xa1);
+    EPD_2in7_SendData (0x00);
+
+    EPD_2in7_SendCommand(0xF8);         //boost??
+    EPD_2in7_SendData (0x73);
+    EPD_2in7_SendData (0x41);
+
+    EPD_2in7_SendCommand(0x16);
+    EPD_2in7_SendData(0x00);	
+
+    EPD_2in7_SendCommand(0x04);
+    EPD_2in7_ReadBusy();
+
+    EPD_2in7_SendCommand(0x00);			//panel setting
+    EPD_2in7_SendData(0xbf);		//KW-BF   KWR-AF	BWROTP 0f
+
+    EPD_2in7_SendCommand(0x30);			//PLL setting
+    EPD_2in7_SendData (0x90);      	//100hz 
+
+    EPD_2in7_SendCommand(0x61);			//resolution setting
+    EPD_2in7_SendData (0x00);		//176
+    EPD_2in7_SendData (0xb0);     	 
+    EPD_2in7_SendData (0x01);		//264
+    EPD_2in7_SendData (0x08);
+
+    EPD_2in7_SendCommand(0x82);			//vcom_DC setting
+    EPD_2in7_SendData (0x12);
+
+    EPD_2in7_SendCommand(0X50);			//VCOM AND DATA INTERVAL SETTING			
+    EPD_2in7_SendData(0x97);
+}
+
+
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN7_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN7_WIDTH % 8 == 0)? (EPD_2IN7_WIDTH / 8 ): (EPD_2IN7_WIDTH / 8 + 1);
+    Height = EPD_2IN7_HEIGHT;
+
+    EPD_2in7_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2in7_SendData(0XFF);
+        }
+    }
+
+    EPD_2in7_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2in7_SendData(0XFF);
+        }
+    }
+		
+    EPD_2in7_SendCommand(0x12);
+    EPD_2in7_ReadBusy();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN7_Display(const UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN7_WIDTH % 8 == 0)? (EPD_2IN7_WIDTH / 8 ): (EPD_2IN7_WIDTH / 8 + 1);
+    Height = EPD_2IN7_HEIGHT;
+
+    EPD_2in7_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2in7_SendData(0XFF);
+        }
+    }
+
+    EPD_2in7_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2in7_SendData(Image[i + j * Width]);
+        }
+    }
+    EPD_2in7_SendCommand(0x12);
+    EPD_2in7_ReadBusy();
+}
+
+void EPD_2IN7_4GrayDisplay(const UBYTE *Image)
+{
+    UDOUBLE i,j,k;
+    UBYTE temp1,temp2,temp3;
+
+    EPD_2in7_SendCommand(0x10);	       
+    for(i=0;i<5808;i++)	               //5808*4  46464
+    {
+        temp3=0;
+        for(j=0;j<2;j++)	
+        {
+            temp1 = Image[i*2+j];
+            for(k=0;k<2;k++)	
+            {
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x01;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x00;  //black
+                else if(temp2 == 0x80) 
+                    temp3 |= 0x01;  //gray1
+                else //0x40
+                    temp3 |= 0x00; //gray2
+                temp3 <<= 1;	
+                
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x01;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x00;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01; //gray1
+                else    //0x40
+                        temp3 |= 0x00;	//gray2	
+                if(j!=1 || k!=1)				
+                    temp3 <<= 1;
+                
+                temp1 <<= 2;
+            }
+            
+         }
+        EPD_2in7_SendData(temp3);			
+    }
+    // new  data
+    EPD_2in7_SendCommand(0x13);	       
+    for(i=0;i<5808;i++)	               //5808*4  46464
+    {
+        temp3=0;
+        for(j=0;j<2;j++)	
+        {
+            temp1 = Image[i*2+j];
+            for(k=0;k<2;k++)	
+            {
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x01;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x00;  //black
+                else if(temp2 == 0x80) 
+                    temp3 |= 0x00;  //gray1
+                else //0x40
+                    temp3 |= 0x01; //gray2
+                temp3 <<= 1;	
+                
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x01;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x00;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00; //gray1
+                else    //0x40
+                        temp3 |= 0x01;	//gray2
+                if(j!=1 || k!=1)					
+                    temp3 <<= 1;
+                
+                temp1 <<= 2;
+            }
+            
+         }
+        EPD_2in7_SendData(temp3);	
+    }
+    
+    EPD_2in7_gray_SetLut();
+    EPD_2in7_SendCommand(0x12);
+    DEV_Delay_ms(200);
+    EPD_2in7_ReadBusy();
+}
+
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN7_Sleep(void)
+{
+    EPD_2in7_SendCommand(0X50);
+    EPD_2in7_SendData(0xf7);
+    EPD_2in7_SendCommand(0X02);  	//power off
+    EPD_2in7_SendCommand(0X07);  	//deep sleep
+    EPD_2in7_SendData(0xA5);
+}

+ 109 - 0
luat/packages/epaper/EPD_2in7.h

@@ -0,0 +1,109 @@
+/*****************************************************************************
+* | File      	:   EPD_2in7.h
+* | Author      :   Waveshare team
+* | Function    :   2.7inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.1
+* | Date        :   2019-10-10
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2019-10-10):
+* 1. Add 4 grayscale display
+*    Add   EPD_2in7_gray_lut_vcom[]
+*    Add   EPD_2in7_gray_lut_ww[]
+*    Add   EPD_2in7_gray_lut_bw[]
+*    Add   EPD_2in7_gray_lut_wb[]
+*    Add   EPD_2in7_gray_lut_bb[]
+*    Add   EPD_2in7_gray_SetLut()
+*    Add   EPD_2IN7_Init_4Gray()
+*    Add   EPD_2IN7_4GrayDisplay()
+*
+* V3.0(2019-06-12):
+* 1.Change:
+*    lut_vcom_dc[] => EPD_2in7_lut_vcom_dc[]
+*    lut_ww[] => EPD_2in7_lut_ww[] 
+*    lut_bw[] => EPD_2in7_lut_bw[]
+*    lut_bb[] => EPD_2in7_lut_bb[]
+*    lut_wb[] => EPD_2in7_lut_wb[]
+*    EPD_Reset() => EPD_2in7_Reset()
+*    EPD_SendCommand() => EPD_2in7_SendCommand()
+*    EPD_SendData() => EPD_2in7_SendData()
+*    EPD_WaitUntilIdle() => EPD_2in7_ReadBusy()
+*    EPD_SetLut() => EPD_2in7_SetLut()
+*    EPD_Init() => EPD_2in7_Init()
+*    EPD_Clear() => EPD_2in7_Clear()
+*    EPD_Display() => EPD_2in7_Display()
+*    EPD_Sleep() => EPD_2in7_Sleep()
+* 2.remove commands define:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define DATA_START_TRANSMISSION_2                   0x13
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SOURCE_AND_GATE_START_SETTING               0x62
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASURE_VCOM                           0x80
+*   #define VCOM_VALUE                                  0x81
+*   #define VCM_DC_SETTING_REGISTER                     0x82
+*   #define PROGRAM_MODE                                0xA0
+*   #define ACTIVE_PROGRAM                              0xA1
+*   #define READ_OTP_DATA                               0xA2
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-06):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN7_H_
+#define __EPD_2IN7_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN7_WIDTH       176
+#define EPD_2IN7_HEIGHT      264 //46464
+
+void EPD_2IN7_Init(void);
+void EPD_2IN7_Clear(void);
+void EPD_2IN7_Display(const UBYTE *Image);
+void EPD_2IN7_Sleep(void);
+
+void EPD_2IN7_Init_4Gray(void);
+void EPD_2IN7_4GrayDisplay(const UBYTE *Image);
+#endif

+ 369 - 0
luat/packages/epaper/EPD_2in7b.c

@@ -0,0 +1,369 @@
+/*****************************************************************************
+* | File      	:   EPD_2in7b.c
+* | Author      :   Waveshare team
+* | Function    :   2.7inch e-paper b
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12): 
+*    lut_vcom_dc[] => EPD_2in7B_lut_vcom_dc[]
+*    lut_ww[] => EPD_2in7B_lut_ww[] 
+*    lut_bw[] => EPD_2in7B_lut_bw[]
+*    lut_bb[] => EPD_2in7B_lut_bb[]
+*    lut_wb[] => EPD_2in7B_lut_wb[]
+*    EPD_Reset() => EPD_2in7B_Reset()
+*    EPD_SendCommand() => EPD_2in7B_SendCommand()
+*    EPD_SendData() => EPD_2in7B_SendData()
+*    EPD_WaitUntilIdle() => EPD_2in7B_ReadBusy()
+*    EPD_SetLut() => EPD_2in7B_SetLut()
+*    EPD_Init() => EPD_2in7B_Init()
+*    EPD_Clear() => EPD_2in7B_Clear()
+*    EPD_Display() => EPD_2in7B_Display()
+*    EPD_Sleep() => EPD_2in7B_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define PARTIAL_DATA_START_TRANSMISSION_1           0x14
+*    #define PARTIAL_DATA_START_TRANSMISSION_2           0x15
+*    #define PARTIAL_DISPLAY_REFRESH                     0x16
+*    #define LUT_FOR_VCOM                                0x20
+*    #define LUT_WHITE_TO_WHITE                          0x21
+*    #define LUT_BLACK_TO_WHITE                          0x22
+*    #define LUT_WHITE_TO_BLACK                          0x23
+*    #define LUT_BLACK_TO_BLACK                          0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define TCON_RESOLUTION                             0x61
+*    #define SOURCE_AND_GATE_START_SETTING               0x62
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define VCOM_VALUE                                  0x81
+*    #define VCM_DC_SETTING_REGISTER                     0x82
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+* -----------------------------------------------------------------------------
+* V2.0(2018-10-30):
+* 1.Remove:ImageBuff[EPD_2IN7B_HEIGHT * EPD_2IN7B_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in7b.h"
+#include "Debug.h"
+
+static const unsigned char EPD_2IN7B_lut_vcom_dc[] = {
+    0x00, 0x00,
+    0x00, 0x1A, 0x1A, 0x00, 0x00, 0x01,
+    0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0x00, 0x0E, 0x01, 0x0E, 0x01, 0x10,
+    0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
+    0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
+    0x00, 0x23, 0x00, 0x00, 0x00, 0x01
+};
+
+//R21H
+static const unsigned char EPD_2IN7B_lut_ww[] = {
+    0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01,
+    0x40, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
+    0x80, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
+    0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
+    0x00, 0x23, 0x00, 0x00, 0x00, 0x01
+};
+
+//R22H    r
+static const unsigned char EPD_2IN7B_lut_bw[] = {
+    0xA0, 0x1A, 0x1A, 0x00, 0x00, 0x01,
+    0x00, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
+    0x90, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0xB0, 0x04, 0x10, 0x00, 0x00, 0x05,
+    0xB0, 0x03, 0x0E, 0x00, 0x00, 0x0A,
+    0xC0, 0x23, 0x00, 0x00, 0x00, 0x01
+};
+
+//R23H    w
+static const unsigned char EPD_2IN7B_lut_bb[] = {
+    0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01,
+    0x40, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
+    0x80, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
+    0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
+    0x00, 0x23, 0x00, 0x00, 0x00, 0x01
+};
+
+//R24H    b
+static const unsigned char EPD_2IN7B_lut_wb[] = {
+    0x90, 0x1A, 0x1A, 0x00, 0x00, 0x01,
+    0x20, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0x84, 0x0E, 0x01, 0x0E, 0x01, 0x10,
+    0x10, 0x0A, 0x0A, 0x00, 0x00, 0x08,
+    0x00, 0x04, 0x10, 0x00, 0x00, 0x05,
+    0x00, 0x03, 0x0E, 0x00, 0x00, 0x0A,
+    0x00, 0x23, 0x00, 0x00, 0x00, 0x01
+};
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN7B_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN7B_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN7B_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_2IN7B_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) {      //0: busy, 1: idle
+        DEV_Delay_ms(100);
+    }    
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	set the look-up tables
+parameter:
+******************************************************************************/
+static void EPD_2IN7B_SetLut(void)
+{
+    unsigned int count;     
+    EPD_2IN7B_SendCommand(0x20); //vcom
+    for(count = 0; count < 44; count++) {
+        EPD_2IN7B_SendData(EPD_2IN7B_lut_vcom_dc[count]);
+    }
+    
+    EPD_2IN7B_SendCommand(0x21); //ww --
+    for(count = 0; count < 42; count++) {
+        EPD_2IN7B_SendData(EPD_2IN7B_lut_ww[count]);
+    }   
+    
+    EPD_2IN7B_SendCommand(0x22); //bw r
+    for(count = 0; count < 42; count++) {
+        EPD_2IN7B_SendData(EPD_2IN7B_lut_bw[count]);
+    } 
+
+    EPD_2IN7B_SendCommand(0x23); //wb w
+    for(count = 0; count < 42; count++) {
+        EPD_2IN7B_SendData(EPD_2IN7B_lut_bb[count]);
+    } 
+
+    EPD_2IN7B_SendCommand(0x24); //bb b
+    for(count = 0; count < 42; count++) {
+        EPD_2IN7B_SendData(EPD_2IN7B_lut_wb[count]);
+    } 
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN7B_Init(void)
+{
+    EPD_2IN7B_Reset();
+
+    EPD_2IN7B_SendCommand(0x04); // POWER_ON
+    EPD_2IN7B_ReadBusy();
+
+    EPD_2IN7B_SendCommand(0x00); // PANEL_SETTING
+    EPD_2IN7B_SendData(0xaf); // KW-BF   KWR-AF BWROTP 0f
+
+    EPD_2IN7B_SendCommand(0x30); // PLL_CONTROL
+    EPD_2IN7B_SendData(0x3a); //3A 100HZ   29 150Hz 39 200HZ    31 171HZ
+
+    EPD_2IN7B_SendCommand(0x01); // PANEL_SETTING
+    EPD_2IN7B_SendData(0x03); // VDS_EN, VDG_EN
+    EPD_2IN7B_SendData(0x00); // VCOM_HV, VGHL_LV[1], VGHL_LV[0]
+    EPD_2IN7B_SendData(0x2b); // VDH
+    EPD_2IN7B_SendData(0x2b); // VDL
+    EPD_2IN7B_SendData(0x09); // VDHR
+
+    EPD_2IN7B_SendCommand(0x06);  // BOOSTER_SOFT_START
+    EPD_2IN7B_SendData(0x07);
+    EPD_2IN7B_SendData(0x07);
+    EPD_2IN7B_SendData(0x17);
+
+    // Power optimization
+    EPD_2IN7B_SendCommand(0xF8);
+    EPD_2IN7B_SendData(0x60);
+    EPD_2IN7B_SendData(0xA5);
+
+    // Power optimization
+    EPD_2IN7B_SendCommand(0xF8);
+    EPD_2IN7B_SendData(0x89);
+    EPD_2IN7B_SendData(0xA5);
+
+    // Power optimization
+    EPD_2IN7B_SendCommand(0xF8);
+    EPD_2IN7B_SendData(0x90);
+    EPD_2IN7B_SendData(0x00);
+
+    // Power optimization
+    EPD_2IN7B_SendCommand(0xF8);
+    EPD_2IN7B_SendData(0x93);
+    EPD_2IN7B_SendData(0x2A);
+
+    // Power optimization
+    EPD_2IN7B_SendCommand(0xF8);
+    EPD_2IN7B_SendData(0x73);
+    EPD_2IN7B_SendData(0x41);
+
+    EPD_2IN7B_SendCommand(0x82); // VCM_DC_SETTING_REGISTER
+    EPD_2IN7B_SendData(0x12);
+    EPD_2IN7B_SendCommand(0x50); // VCOM_AND_DATA_INTERVAL_SETTING
+    EPD_2IN7B_SendData(0x87); // define by OTP
+
+    EPD_2IN7B_SetLut();
+
+    EPD_2IN7B_SendCommand(0x16); // PARTIAL_DISPLAY_REFRESH
+    EPD_2IN7B_SendData(0x00);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN7B_Clear(void)
+{    
+    UWORD Width, Height;
+    Width = (EPD_2IN7B_WIDTH % 8 == 0)? (EPD_2IN7B_WIDTH / 8 ): (EPD_2IN7B_WIDTH / 8 + 1);
+    Height = EPD_2IN7B_HEIGHT;
+
+    EPD_2IN7B_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN7B_SendData(0X00);
+        }
+    }
+    EPD_2IN7B_SendCommand(0x11); // DATA_STOP
+
+    EPD_2IN7B_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN7B_SendData(0X00);
+        }
+    }
+    EPD_2IN7B_SendCommand(0x11); // DATA_STOP
+    
+    EPD_2IN7B_SendCommand(0x12);
+    EPD_2IN7B_ReadBusy();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN7B_Display(UBYTE *Imageblack, UBYTE *Imagered)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN7B_WIDTH % 8 == 0)? (EPD_2IN7B_WIDTH / 8 ): (EPD_2IN7B_WIDTH / 8 + 1);
+    Height = EPD_2IN7B_HEIGHT;
+    
+    EPD_2IN7B_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN7B_SendData(~Imageblack[i + j * Width]);
+        }
+    }
+    EPD_2IN7B_SendCommand(0x11); // DATA_STOP
+    
+    EPD_2IN7B_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN7B_SendData(~Imagered[i + j * Width]);
+        }
+    }
+    EPD_2IN7B_SendCommand(0x11); // DATA_STOP
+    
+    EPD_2IN7B_SendCommand(0x12);
+    EPD_2IN7B_ReadBusy();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN7B_Sleep(void)
+{
+    EPD_2IN7B_SendCommand(0X50);
+    EPD_2IN7B_SendData(0xf7);
+    EPD_2IN7B_SendCommand(0X02); //power off
+    EPD_2IN7B_SendCommand(0X07); //deep sleep
+    EPD_2IN7B_SendData(0xA5);
+}

+ 103 - 0
luat/packages/epaper/EPD_2in7b.h

@@ -0,0 +1,103 @@
+/*****************************************************************************
+* | File      	:   EPD_2in7b.h
+* | Author      :   Waveshare team
+* | Function    :   2.7inch e-paper b
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12): 
+*    lut_vcom_dc[] => EPD_2in7B_lut_vcom_dc[]
+*    lut_ww[] => EPD_2in7B_lut_ww[] 
+*    lut_bw[] => EPD_2in7B_lut_bw[]
+*    lut_bb[] => EPD_2in7B_lut_bb[]
+*    lut_wb[] => EPD_2in7B_lut_wb[]
+*    EPD_Reset() => EPD_2in7B_Reset()
+*    EPD_SendCommand() => EPD_2in7B_SendCommand()
+*    EPD_SendData() => EPD_2in7B_SendData()
+*    EPD_WaitUntilIdle() => EPD_2in7B_ReadBusy()
+*    EPD_SetLut() => EPD_2in7B_SetLut()
+*    EPD_Init() => EPD_2in7B_Init()
+*    EPD_Clear() => EPD_2in7B_Clear()
+*    EPD_Display() => EPD_2in7B_Display()
+*    EPD_Sleep() => EPD_2in7B_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define PARTIAL_DATA_START_TRANSMISSION_1           0x14
+*    #define PARTIAL_DATA_START_TRANSMISSION_2           0x15
+*    #define PARTIAL_DISPLAY_REFRESH                     0x16
+*    #define LUT_FOR_VCOM                                0x20
+*    #define LUT_WHITE_TO_WHITE                          0x21
+*    #define LUT_BLACK_TO_WHITE                          0x22
+*    #define LUT_WHITE_TO_BLACK                          0x23
+*    #define LUT_BLACK_TO_BLACK                          0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define TCON_RESOLUTION                             0x61
+*    #define SOURCE_AND_GATE_START_SETTING               0x62
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define VCOM_VALUE                                  0x81
+*    #define VCM_DC_SETTING_REGISTER                     0x82
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+* -----------------------------------------------------------------------------
+* V2.0(2018-10-30):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN7B_H_
+#define __EPD_2IN7B_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN7B_WIDTH       176
+#define EPD_2IN7B_HEIGHT      264
+
+void EPD_2IN7B_Init(void);
+void EPD_2IN7B_Clear(void);
+void EPD_2IN7B_Display(UBYTE *Imageblack, UBYTE *Imagered);
+void EPD_2IN7B_Sleep(void);
+
+#endif

+ 296 - 0
luat/packages/epaper/EPD_2in9.c

@@ -0,0 +1,296 @@
+/*****************************************************************************
+* | File      	:  	EPD_2in9.c
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    lut_full_update[] => EPD_2IN9_lut_full_update[]
+*    lut_partial_update[] => EPD_2IN9_lut_partial_update[] 
+*    EPD_Reset() => EPD_2IN9_Reset()
+*    EPD_SendCommand() => EPD_2IN9_SendCommand()
+*    EPD_SendData() => EPD_2IN9_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN9_ReadBusy()
+*    EPD_SetLut() => EPD_2IN9_SetLut()
+*    EPD_SetWindow() => EPD_2IN9_SetWindow()
+*    EPD_SetCursor() => EPD_2IN9_SetCursor()
+*    EPD_TurnOnDisplay() => EPD_2IN9_TurnOnDisplay()
+*    EPD_Init() => EPD_2IN9_Init()
+*    EPD_Clear() => EPD_2IN9_Clear()
+*    EPD_Display() => EPD_2IN9_Display()
+*    EPD_Sleep() => EPD_2IN9_Sleep()
+* 2.remove commands define:
+*    #define DRIVER_OUTPUT_CONTROL                       0x01
+*    #define BOOSTER_SOFT_START_CONTROL                  0x0C
+*    #define GATE_SCAN_START_POSITION                    0x0F
+*    #define DEEP_SLEEP_MODE                             0x10
+*    #define DATA_ENTRY_MODE_SETTING                     0x11
+*    #define SW_RESET                                    0x12
+*    #define TEMPERATURE_SENSOR_CONTROL                  0x1A
+*    #define MASTER_ACTIVATION                           0x20
+*    #define DISPLAY_UPDATE_CONTROL_1                    0x21
+*    #define DISPLAY_UPDATE_CONTROL_2                    0x22
+*    #define WRITE_RAM                                   0x24
+*    #define WRITE_VCOM_REGISTER                         0x2C
+*    #define WRITE_LUT_REGISTER                          0x32
+*    #define SET_DUMMY_LINE_PERIOD                       0x3A
+*    #define SET_GATE_TIME                               0x3B
+*    #define BORDER_WAVEFORM_CONTROL                     0x3C
+*    #define SET_RAM_X_ADDRESS_START_END_POSITION        0x44
+*    #define SET_RAM_Y_ADDRESS_START_END_POSITION        0x45
+*    #define SET_RAM_X_ADDRESS_COUNTER                   0x4E
+*    #define SET_RAM_Y_ADDRESS_COUNTER                   0x4F
+*    #define TERMINATE_FRAME_READ_WRITE                  0xFF
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-06):
+* 1.Remove:ImageBuff[EPD_2IN9_HEIGHT * EPD_2IN9_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in9.h"
+#include "Debug.h"
+
+const unsigned char EPD_2IN9_lut_full_update[] = {
+    0x50, 0xAA, 0x55, 0xAA, 0x11, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+const unsigned char EPD_2IN9_lut_partial_update[] = {
+    0x10, 0x18, 0x18, 0x08, 0x18, 0x18,
+    0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x13, 0x14, 0x44, 0x12,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN9_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN9_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN9_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN9_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 1) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Setting the display window
+parameter:
+******************************************************************************/
+static void EPD_2IN9_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend)
+{
+    EPD_2IN9_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+    EPD_2IN9_SendData((Xstart >> 3) & 0xFF);
+    EPD_2IN9_SendData((Xend >> 3) & 0xFF);
+
+    EPD_2IN9_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+    EPD_2IN9_SendData(Ystart & 0xFF);
+    EPD_2IN9_SendData((Ystart >> 8) & 0xFF);
+    EPD_2IN9_SendData(Yend & 0xFF);
+    EPD_2IN9_SendData((Yend >> 8) & 0xFF);
+}
+
+/******************************************************************************
+function :	Set Cursor
+parameter:
+******************************************************************************/
+static void EPD_2IN9_SetCursor(UWORD Xstart, UWORD Ystart)
+{
+    EPD_2IN9_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER
+    EPD_2IN9_SendData((Xstart >> 3) & 0xFF);
+
+    EPD_2IN9_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER
+    EPD_2IN9_SendData(Ystart & 0xFF);
+    EPD_2IN9_SendData((Ystart >> 8) & 0xFF);
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN9_TurnOnDisplay(void)
+{
+    EPD_2IN9_SendCommand(0x22); // DISPLAY_UPDATE_CONTROL_2
+    EPD_2IN9_SendData(0xC4);
+    EPD_2IN9_SendCommand(0x20); // MASTER_ACTIVATION
+    EPD_2IN9_SendCommand(0xFF); // TERMINATE_FRAME_READ_WRITE
+
+    EPD_2IN9_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN9_Init(UBYTE Mode)
+{
+    EPD_2IN9_Reset();
+
+    EPD_2IN9_SendCommand(0x01); // DRIVER_OUTPUT_CONTROL
+    EPD_2IN9_SendData((EPD_2IN9_HEIGHT - 1) & 0xFF);
+    EPD_2IN9_SendData(((EPD_2IN9_HEIGHT - 1) >> 8) & 0xFF);
+    EPD_2IN9_SendData(0x00); // GD = 0; SM = 0; TB = 0;
+	
+    EPD_2IN9_SendCommand(0x0C); // BOOSTER_SOFT_START_CONTROL
+    EPD_2IN9_SendData(0xD7);
+    EPD_2IN9_SendData(0xD6);
+    EPD_2IN9_SendData(0x9D);
+	
+    EPD_2IN9_SendCommand(0x2C); // WRITE_VCOM_REGISTER
+    EPD_2IN9_SendData(0xA8); // VCOM 7C
+	
+    EPD_2IN9_SendCommand(0x3A); // SET_DUMMY_LINE_PERIOD
+    EPD_2IN9_SendData(0x1A); // 4 dummy lines per gate
+	
+    EPD_2IN9_SendCommand(0x3B); // SET_GATE_TIME
+    EPD_2IN9_SendData(0x08); // 2us per line
+	
+    EPD_2IN9_SendCommand(0x3C); // BORDER_WAVEFORM_CONTROL
+    EPD_2IN9_SendData(0x03);                     
+    EPD_2IN9_SendCommand(0x11); // DATA_ENTRY_MODE_SETTING
+    EPD_2IN9_SendData(0x03);
+
+    //set the look-up table register
+    EPD_2IN9_SendCommand(0x32); // WRITE_LUT_REGISTER
+    if(Mode == EPD_2IN9_FULL){
+        for (UWORD i = 0; i < 30; i++) {
+                EPD_2IN9_SendData(EPD_2IN9_lut_full_update[i]);
+        }
+    }else if(Mode == EPD_2IN9_PART){
+        for (UWORD i = 0; i < 30; i++) {
+                EPD_2IN9_SendData(EPD_2IN9_lut_partial_update[i]);
+        }
+    }else{
+        Debug("error, the Mode is EPD_2IN9_FULL or EPD_2IN9_PART");
+    }
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN9_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN9_WIDTH % 8 == 0)? (EPD_2IN9_WIDTH / 8 ): (EPD_2IN9_WIDTH / 8 + 1);
+    Height = EPD_2IN9_HEIGHT;
+    EPD_2IN9_SetWindows(0, 0, EPD_2IN9_WIDTH, EPD_2IN9_HEIGHT);
+    for (UWORD j = 0; j < Height; j++) {
+        EPD_2IN9_SetCursor(0, j);
+        EPD_2IN9_SendCommand(0x24);
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9_SendData(0XFF);
+        }
+    }
+    EPD_2IN9_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN9_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN9_WIDTH % 8 == 0)? (EPD_2IN9_WIDTH / 8 ): (EPD_2IN9_WIDTH / 8 + 1);
+    Height = EPD_2IN9_HEIGHT;
+
+    UDOUBLE Addr = 0;
+    // UDOUBLE Offset = ImageName;
+    EPD_2IN9_SetWindows(0, 0, EPD_2IN9_WIDTH, EPD_2IN9_HEIGHT);
+    for (UWORD j = 0; j < Height; j++) {
+        EPD_2IN9_SetCursor(0, j);
+        EPD_2IN9_SendCommand(0x24);
+        for (UWORD i = 0; i < Width; i++) {
+            Addr = i + j * Width;
+            EPD_2IN9_SendData(Image[Addr]);
+        }
+    }
+    EPD_2IN9_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN9_Sleep(void)
+{
+    EPD_2IN9_SendCommand(0x10);
+    EPD_2IN9_SendData(0x01);
+    // EPD_2IN9_ReadBusy();
+}

+ 96 - 0
luat/packages/epaper/EPD_2in9.h

@@ -0,0 +1,96 @@
+/*****************************************************************************
+* | File      	:   EPD_2in9.h
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    lut_full_update[] => EPD_2IN9_lut_full_update[]
+*    lut_partial_update[] => EPD_2IN9_lut_partial_update[] 
+*    EPD_Reset() => EPD_2IN9_Reset()
+*    EPD_SendCommand() => EPD_2IN9_SendCommand()
+*    EPD_SendData() => EPD_2IN9_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN9_ReadBusy()
+*    EPD_SetLut() => EPD_2IN9_SetLut()
+*    EPD_SetWindow() => EPD_2IN9_SetWindow()
+*    EPD_SetCursor() => EPD_2IN9_SetCursor()
+*    EPD_TurnOnDisplay() => EPD_2IN9_TurnOnDisplay()
+*    EPD_Init() => EPD_2IN9_Init()
+*    EPD_Clear() => EPD_2IN9_Clear()
+*    EPD_Display() => EPD_2IN9_Display()
+*    EPD_Sleep() => EPD_2IN9_Sleep()
+* 2.remove commands define:
+*    #define DRIVER_OUTPUT_CONTROL                       0x01
+*    #define BOOSTER_SOFT_START_CONTROL                  0x0C
+*    #define GATE_SCAN_START_POSITION                    0x0F
+*    #define DEEP_SLEEP_MODE                             0x10
+*    #define DATA_ENTRY_MODE_SETTING                     0x11
+*    #define SW_RESET                                    0x12
+*    #define TEMPERATURE_SENSOR_CONTROL                  0x1A
+*    #define MASTER_ACTIVATION                           0x20
+*    #define DISPLAY_UPDATE_CONTROL_1                    0x21
+*    #define DISPLAY_UPDATE_CONTROL_2                    0x22
+*    #define WRITE_RAM                                   0x24
+*    #define WRITE_VCOM_REGISTER                         0x2C
+*    #define WRITE_LUT_REGISTER                          0x32
+*    #define SET_DUMMY_LINE_PERIOD                       0x3A
+*    #define SET_GATE_TIME                               0x3B
+*    #define BORDER_WAVEFORM_CONTROL                     0x3C
+*    #define SET_RAM_X_ADDRESS_START_END_POSITION        0x44
+*    #define SET_RAM_Y_ADDRESS_START_END_POSITION        0x45
+*    #define SET_RAM_X_ADDRESS_COUNTER                   0x4E
+*    #define SET_RAM_Y_ADDRESS_COUNTER                   0x4F
+*    #define TERMINATE_FRAME_READ_WRITE                  0xFF
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-06):
+* 1.Remove:ImageBuff[EPD_2IN9_HEIGHT * EPD_2IN9_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN9_H_
+#define __EPD_2IN9_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN9_WIDTH       128
+#define EPD_2IN9_HEIGHT      296
+
+#define EPD_2IN9_FULL			0
+#define EPD_2IN9_PART			1
+
+void EPD_2IN9_Init(UBYTE Mode);
+void EPD_2IN9_Clear(void);
+void EPD_2IN9_Display(UBYTE *Image);
+void EPD_2IN9_Sleep(void);
+
+#endif

+ 282 - 0
luat/packages/epaper/EPD_2in9_V2.c

@@ -0,0 +1,282 @@
+/*****************************************************************************
+* | File      	:  	EPD_2in9_V2.c
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper V2
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-12-09
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in9_V2.h"
+#include "Debug.h"
+
+UBYTE _WF_PARTIAL_2IN9[159] =
+{
+0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x80,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x40,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x80,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0A,0x0,0x0,0x0,0x0,0x0,0x2,  
+0x1,0x0,0x0,0x0,0x0,0x0,0x0,
+0x1,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x0,0x0,0x0,0x0,0x0,0x0,0x0,
+0x22,0x22,0x22,0x22,0x22,0x22,0x0,0x0,0x0,
+0x22,0x17,0x41,0xB0,0x32,0x36,
+};
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN9_V2_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(100);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(100);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN9_V2_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN9_V2_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN9_V2_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+	while(1)
+	{	 //=1 BUSY
+		if(DEV_Digital_Read(EPD_BUSY_PIN)==0) 
+			break;
+		DEV_Delay_ms(50);
+	}
+	DEV_Delay_ms(50);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN9_V2_TurnOnDisplay(void)
+{
+	EPD_2IN9_V2_SendCommand(0x22); //Display Update Control
+	EPD_2IN9_V2_SendData(0xF7);
+	EPD_2IN9_V2_SendCommand(0x20); //Activate Display Update Sequence
+	EPD_2IN9_V2_ReadBusy();
+}
+
+static void EPD_2IN9_V2_TurnOnDisplay_Partial(void)
+{
+	EPD_2IN9_V2_SendCommand(0x22); //Display Update Control
+	EPD_2IN9_V2_SendData(0xFF);   
+	EPD_2IN9_V2_SendCommand(0x20); //Activate Display Update Sequence
+	EPD_2IN9_V2_ReadBusy();
+}
+
+/******************************************************************************
+function :	Setting the display window
+parameter:
+******************************************************************************/
+static void EPD_2IN9_V2_SetWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend)
+{
+    EPD_2IN9_V2_SendCommand(0x44); // SET_RAM_X_ADDRESS_START_END_POSITION
+    EPD_2IN9_V2_SendData((Xstart>>3) & 0xFF);
+    EPD_2IN9_V2_SendData((Xend>>3) & 0xFF);
+	
+    EPD_2IN9_V2_SendCommand(0x45); // SET_RAM_Y_ADDRESS_START_END_POSITION
+    EPD_2IN9_V2_SendData(Ystart & 0xFF);
+    EPD_2IN9_V2_SendData((Ystart >> 8) & 0xFF);
+    EPD_2IN9_V2_SendData(Yend & 0xFF);
+    EPD_2IN9_V2_SendData((Yend >> 8) & 0xFF);
+}
+
+/******************************************************************************
+function :	Set Cursor
+parameter:
+******************************************************************************/
+static void EPD_2IN9_V2_SetCursor(UWORD Xstart, UWORD Ystart)
+{
+    EPD_2IN9_V2_SendCommand(0x4E); // SET_RAM_X_ADDRESS_COUNTER
+    EPD_2IN9_V2_SendData(Xstart & 0xFF);
+
+    EPD_2IN9_V2_SendCommand(0x4F); // SET_RAM_Y_ADDRESS_COUNTER
+    EPD_2IN9_V2_SendData(Ystart & 0xFF);
+    EPD_2IN9_V2_SendData((Ystart >> 8) & 0xFF);
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN9_V2_Init(void)
+{
+	EPD_2IN9_V2_Reset();
+	DEV_Delay_ms(100);
+
+	EPD_2IN9_V2_ReadBusy();   
+	EPD_2IN9_V2_SendCommand(0x12);  //SWRESET
+	EPD_2IN9_V2_ReadBusy();   
+
+	EPD_2IN9_V2_SendCommand(0x01); //Driver output control      
+	EPD_2IN9_V2_SendData(0x27);
+	EPD_2IN9_V2_SendData(0x01);
+	EPD_2IN9_V2_SendData(0x00);
+
+	EPD_2IN9_V2_SendCommand(0x11); //data entry mode       
+	EPD_2IN9_V2_SendData(0x03);
+
+	EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1);
+
+	EPD_2IN9_V2_SendCommand(0x3C); //BorderWavefrom
+	EPD_2IN9_V2_SendData(0x05);	
+
+	EPD_2IN9_V2_SendCommand(0x21); //  Display update control
+	EPD_2IN9_V2_SendData(0x00);
+	EPD_2IN9_V2_SendData(0x80);	
+
+	EPD_2IN9_V2_SendCommand(0x18); //Read built-in temperature sensor
+	EPD_2IN9_V2_SendData(0x80);	
+
+	EPD_2IN9_V2_SetCursor(0, 0);
+	EPD_2IN9_V2_ReadBusy();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN9_V2_Clear(void)
+{
+	UWORD i;
+	EPD_2IN9_V2_SendCommand(0x24);   //write RAM for black(0)/white (1)
+	for(i=0;i<4736;i++)
+	{
+		EPD_2IN9_V2_SendData(0xff);
+	}
+	EPD_2IN9_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN9_V2_Display(UBYTE *Image)
+{
+	UWORD i;	
+	EPD_2IN9_V2_SendCommand(0x24);   //write RAM for black(0)/white (1)
+	for(i=0;i<4736;i++)
+	{
+		EPD_2IN9_V2_SendData(Image[i]);
+	}
+	EPD_2IN9_V2_TurnOnDisplay();	
+}
+
+void EPD_2IN9_V2_Display_Base(UBYTE *Image)
+{
+	UWORD i;   
+
+	EPD_2IN9_V2_SendCommand(0x24);   //Write Black and White image to RAM
+	for(i=0;i<4736;i++)
+	{               
+		EPD_2IN9_V2_SendData(Image[i]);
+	}
+	EPD_2IN9_V2_SendCommand(0x26);   //Write Black and White image to RAM
+	for(i=0;i<4736;i++)
+	{               
+		EPD_2IN9_V2_SendData(Image[i]);
+	}
+	EPD_2IN9_V2_TurnOnDisplay();	
+}
+
+void EPD_2IN9_V2_Display_Partial(UBYTE *Image)
+{
+	UWORD i;
+
+//Reset
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(5);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(10);
+
+	EPD_2IN9_V2_SendCommand(0x3C); //BorderWavefrom
+	EPD_2IN9_V2_SendData(0x80);	
+	
+	EPD_2IN9_V2_SetWindows(0, 0, EPD_2IN9_V2_WIDTH-1, EPD_2IN9_V2_HEIGHT-1);
+	EPD_2IN9_V2_SetCursor(0, 0);
+
+	EPD_2IN9_V2_SendCommand(0x24);   //Write Black and White image to RAM
+	for(i=0;i<4736;i++)
+	{
+		EPD_2IN9_V2_SendData(Image[i]);
+	} 
+	EPD_2IN9_V2_TurnOnDisplay_Partial();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN9_V2_Sleep(void)
+{
+	EPD_2IN9_V2_SendCommand(0x10); //enter deep sleep
+	EPD_2IN9_V2_SendData(0x01); 
+	DEV_Delay_ms(100);
+}

+ 47 - 0
luat/packages/epaper/EPD_2in9_V2.h

@@ -0,0 +1,47 @@
+/*****************************************************************************
+* | File      	:   EPD_2in9_V2.h
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper V2
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-12-09
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN9_V2_H_
+#define __EPD_2IN9_V2_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN9_V2_WIDTH       128
+#define EPD_2IN9_V2_HEIGHT      296
+
+void EPD_2IN9_V2_Init(void);
+void EPD_2IN9_V2_Clear(void);
+void EPD_2IN9_V2_Display(UBYTE *Image);
+void EPD_2IN9_V2_Display_Base(UBYTE *Image);
+void EPD_2IN9_V2_Display_Partial(UBYTE *Image);
+void EPD_2IN9_V2_Sleep(void);
+
+#endif

+ 189 - 0
luat/packages/epaper/EPD_2in9b_V3.c

@@ -0,0 +1,189 @@
+/*****************************************************************************
+* | File      	:   EPD_2in9b_V3.c
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper b V3
+* | Info        :
+*----------------
+* |	This version:   V1.1
+* | Date        :   2020-12-03
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in9b_V3.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN9B_V3_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(5);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN9B_V3_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN9B_V3_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN9B_V3_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    UBYTE busy;
+	do
+	{
+		EPD_2IN9B_V3_SendCommand(0x71);
+		busy = DEV_Digital_Read(EPD_BUSY_PIN);
+		busy =!(busy & 0x01);        
+	}
+	while(busy); 
+    Debug("e-Paper busy release\r\n");
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN9B_V3_Init(void)
+{
+    EPD_2IN9B_V3_Reset();
+
+    EPD_2IN9B_V3_SendCommand(0x04);  
+    EPD_2IN9B_V3_ReadBusy();//waiting for the electronic paper IC to release the idle signal
+
+    EPD_2IN9B_V3_SendCommand(0x00);//panel setting
+    EPD_2IN9B_V3_SendData(0x0f);//LUT from OTP,128x296
+    EPD_2IN9B_V3_SendData(0x89);//Temperature sensor, boost and other related timing settings
+
+    EPD_2IN9B_V3_SendCommand(0x61);//resolution setting
+    EPD_2IN9B_V3_SendData (0x80);
+    EPD_2IN9B_V3_SendData (0x01);
+    EPD_2IN9B_V3_SendData (0x28);
+
+    EPD_2IN9B_V3_SendCommand(0X50);//VCOM AND DATA INTERVAL SETTING			
+    EPD_2IN9B_V3_SendData(0x77);//WBmode:VBDF 17|D7 VBDW 97 VBDB 57		
+                            //WBRmode:VBDF F7 VBDW 77 VBDB 37  VBDR B7
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN9B_V3_Clear(void)
+{
+    UWORD Width = (EPD_2IN9B_V3_WIDTH % 8 == 0)? (EPD_2IN9B_V3_WIDTH / 8 ): (EPD_2IN9B_V3_WIDTH / 8 + 1);
+    UWORD Height = EPD_2IN9B_V3_HEIGHT;
+
+    //send black data
+    EPD_2IN9B_V3_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9B_V3_SendData(0xFF);
+        }
+    }
+
+    //send red data
+    EPD_2IN9B_V3_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9B_V3_SendData(0xFF);
+        }
+    }
+    
+    EPD_2IN9B_V3_SendCommand(0x12);
+    EPD_2IN9B_V3_ReadBusy();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN9B_V3_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN9B_V3_WIDTH % 8 == 0)? (EPD_2IN9B_V3_WIDTH / 8 ): (EPD_2IN9B_V3_WIDTH / 8 + 1);
+    Height = EPD_2IN9B_V3_HEIGHT;
+
+	//send black data
+    EPD_2IN9B_V3_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9B_V3_SendData(blackimage[i + j * Width]);
+        }
+    }
+    EPD_2IN9B_V3_SendCommand(0x92);
+    
+	//send red data
+    EPD_2IN9B_V3_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9B_V3_SendData(ryimage[i + j * Width]);
+        }
+    }
+    EPD_2IN9B_V3_SendCommand(0x92);
+
+    EPD_2IN9B_V3_SendCommand(0x12);
+    EPD_2IN9B_V3_ReadBusy();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN9B_V3_Sleep(void)
+{
+    EPD_2IN9B_V3_SendCommand(0x02); // POWER_OFF
+    EPD_2IN9B_V3_ReadBusy();
+    EPD_2IN9B_V3_SendCommand(0x07); // DEEP_SLEEP
+    EPD_2IN9B_V3_SendData(0xA5); // check code
+}

+ 45 - 0
luat/packages/epaper/EPD_2in9b_V3.h

@@ -0,0 +1,45 @@
+/*****************************************************************************
+* | File      	:   EPD_2in9b V3.h
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper b V3
+* | Info        :
+*----------------
+* |	This version:   V1.1
+* | Date        :   2020-12-03
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN9B_V3_H_
+#define __EPD_2IN9B_V3_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN9B_V3_WIDTH       128
+#define EPD_2IN9B_V3_HEIGHT      296
+
+void EPD_2IN9B_V3_Init(void);
+void EPD_2IN9B_V3_Clear(void);
+void EPD_2IN9B_V3_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_2IN9B_V3_Sleep(void);
+
+#endif

+ 240 - 0
luat/packages/epaper/EPD_2in9bc.c

@@ -0,0 +1,240 @@
+/*****************************************************************************
+* | File      	:   EPD_2in9bc.c
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper b&c
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    EPD_Reset() => EPD_2IN9BC_Reset()
+*    EPD_SendCommand() => EPD_2IN9BC_SendCommand()
+*    EPD_SendData() => EPD_2IN9BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN9BC_ReadBusy()
+*    EPD_Init() => EPD_2IN9BC_Init()
+*    EPD_Clear() => EPD_2IN9BC_Clear()
+*    EPD_Display() => EPD_2IN9BC_Display()
+*    EPD_Sleep() => EPD_2IN9BC_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define TCON_RESOLUTION                             0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define VCOM_VALUE                                  0x81
+*    #define VCM_DC_SETTING_REGISTER                     0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-06):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in9bc.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN9BC_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(1);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN9BC_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN9BC_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN9BC_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN9BC_Init(void)
+{
+    EPD_2IN9BC_Reset();
+
+    EPD_2IN9BC_SendCommand(0x06); // BOOSTER_SOFT_START
+    EPD_2IN9BC_SendData(0x17);
+    EPD_2IN9BC_SendData(0x17);
+    EPD_2IN9BC_SendData(0x17);
+	
+    EPD_2IN9BC_SendCommand(0x04); // POWER_ON
+    EPD_2IN9BC_ReadBusy();
+	
+    EPD_2IN9BC_SendCommand(0x00); // PANEL_SETTING
+    EPD_2IN9BC_SendData(0x8F);
+	
+    EPD_2IN9BC_SendCommand(0x50); // VCOM_AND_DATA_INTERVAL_SETTING
+    EPD_2IN9BC_SendData(0x77);
+	
+    EPD_2IN9BC_SendCommand(0x61); // TCON_RESOLUTION
+    EPD_2IN9BC_SendData(0x80);
+    EPD_2IN9BC_SendData(0x01);
+    EPD_2IN9BC_SendData(0x28);
+	
+    EPD_2IN9BC_SendCommand(0x82); // VCM_DC_SETTING_REGISTER
+    EPD_2IN9BC_SendData(0X0A);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN9BC_Clear(void)
+{
+    UWORD Width = (EPD_2IN9BC_WIDTH % 8 == 0)? (EPD_2IN9BC_WIDTH / 8 ): (EPD_2IN9BC_WIDTH / 8 + 1);
+    UWORD Height = EPD_2IN9BC_HEIGHT;
+
+    //send black data
+    EPD_2IN9BC_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9BC_SendData(0xFF);
+        }
+    }
+
+    //send red data
+    EPD_2IN9BC_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9BC_SendData(0xFF);
+        }
+    }
+		
+		EPD_2IN9BC_SendCommand(0x12);
+		EPD_2IN9BC_ReadBusy();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN9BC_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN9BC_WIDTH % 8 == 0)? (EPD_2IN9BC_WIDTH / 8 ): (EPD_2IN9BC_WIDTH / 8 + 1);
+    Height = EPD_2IN9BC_HEIGHT;
+
+    EPD_2IN9BC_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9BC_SendData(blackimage[i + j * Width]);
+        }
+    }
+    EPD_2IN9BC_SendCommand(0x92);
+    
+    EPD_2IN9BC_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9BC_SendData(ryimage[i + j * Width]);
+        }
+    }
+    EPD_2IN9BC_SendCommand(0x92);
+
+    EPD_2IN9BC_SendCommand(0x12);
+    EPD_2IN9BC_ReadBusy();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN9BC_Sleep(void)
+{
+    EPD_2IN9BC_SendCommand(0x02); // POWER_OFF
+    EPD_2IN9BC_ReadBusy();
+    EPD_2IN9BC_SendCommand(0x07); // DEEP_SLEEP
+    EPD_2IN9BC_SendData(0xA5); // check code
+}

+ 98 - 0
luat/packages/epaper/EPD_2in9bc.h

@@ -0,0 +1,98 @@
+/*****************************************************************************
+* | File      	:   EPD_2in9bc.h
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper b&c
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    EPD_Reset() => EPD_2IN9BC_Reset()
+*    EPD_SendCommand() => EPD_2IN9BC_SendCommand()
+*    EPD_SendData() => EPD_2IN9BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN9BC_ReadBusy()
+*    EPD_Init() => EPD_2IN9BC_Init()
+*    EPD_Clear() => EPD_2IN9BC_Clear()
+*    EPD_Display() => EPD_2IN9BC_Display()
+*    EPD_Sleep() => EPD_2IN9BC_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define TCON_RESOLUTION                             0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define VCOM_VALUE                                  0x81
+*    #define VCM_DC_SETTING_REGISTER                     0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-06):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+* 3.Change:
+*   EPD_RST -> EPD_RST_PIN
+*   EPD_DC -> EPD_DC_PIN
+*   EPD_CS -> EPD_CS_PIN
+*   EPD_BUSY -> EPD_BUSY_PIN
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN9BC_H_
+#define __EPD_2IN9BC_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN9BC_WIDTH       128
+#define EPD_2IN9BC_HEIGHT      296
+
+void EPD_2IN9BC_Init(void);
+void EPD_2IN9BC_Clear(void);
+void EPD_2IN9BC_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_2IN9BC_Sleep(void);
+
+#endif

+ 446 - 0
luat/packages/epaper/EPD_2in9d.c

@@ -0,0 +1,446 @@
+/*****************************************************************************
+* | File      	:   EPD_2in9d.c
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper d
+* | Info        :
+*----------------
+* |	This version:   V2.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    lut_vcomDC[]  => EPD_2IN9D_lut_vcomDC[]
+*    lut_ww[] => EPD_2IN9D_lut_ww[]
+*    lut_bw[] => EPD_2IN9D_lut_bw[]
+*    lut_wb[] => EPD_2IN9D_lut_wb[]
+*    lut_bb[] => EPD_2IN9D_lut_bb[]
+*    lut_vcom1[] => EPD_2IN9D_lut_vcom1[]
+*    lut_ww1[] => EPD_2IN9D_lut_ww1[]
+*    lut_bw1[] => EPD_2IN9D_lut_bw1[]
+*    lut_wb1[] => EPD_2IN9D_lut_wb1[]
+*    lut_bb1[] => EPD_2IN9D_lut_bb1[]
+*    EPD_Reset() => EPD_2IN9D_Reset()
+*    EPD_SendCommand() => EPD_2IN9D_SendCommand()
+*    EPD_SendData() => EPD_2IN9D_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN9D_ReadBusy()
+*    EPD_SetFullReg() => EPD_2IN9D_SetFullReg()
+*    EPD_SetPartReg() => EPD_2IN9D_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_2IN9D_TurnOnDisplay()
+*    EPD_Init() => EPD_2IN9D_Init()
+*    EPD_Clear() => EPD_2IN9D_Clear()
+*    EPD_Display() => EPD_2IN9D_Display()
+*    EPD_Sleep() => EPD_2IN9D_Sleep()
+*
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_2in9d.h"
+#include "Debug.h"
+
+/**
+ * full screen update LUT
+**/
+const unsigned char EPD_2IN9D_lut_vcomDC[] = {
+    0x00, 0x08, 0x00, 0x00, 0x00, 0x02,
+    0x60, 0x28, 0x28, 0x00, 0x00, 0x01,
+    0x00, 0x14, 0x00, 0x00, 0x00, 0x01,
+    0x00, 0x12, 0x12, 0x00, 0x00, 0x01,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00,
+};
+const unsigned char EPD_2IN9D_lut_ww[] = {
+    0x40, 0x08, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
+    0x40, 0x14, 0x00, 0x00, 0x00, 0x01,
+    0xA0, 0x12, 0x12, 0x00, 0x00, 0x01,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+const unsigned char EPD_2IN9D_lut_bw[] = {
+    0x40, 0x17, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x0F, 0x0F, 0x00, 0x00, 0x03,
+    0x40, 0x0A, 0x01, 0x00, 0x00, 0x01,
+    0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+const unsigned char EPD_2IN9D_lut_wb[] = {
+    0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
+    0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
+    0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+const unsigned char EPD_2IN9D_lut_bb[] = {
+    0x80, 0x08, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x28, 0x28, 0x00, 0x00, 0x01,
+    0x80, 0x14, 0x00, 0x00, 0x00, 0x01,
+    0x50, 0x12, 0x12, 0x00, 0x00, 0x01,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+
+/**
+ * partial screen update LUT
+**/
+const unsigned char EPD_2IN9D_lut_vcom1[] = {
+    0x00, 0x19, 0x01, 0x00, 0x00, 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,
+};
+const unsigned char EPD_2IN9D_lut_ww1[] = {
+    0x00, 0x19, 0x01, 0x00, 0x00, 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,
+};
+const unsigned char EPD_2IN9D_lut_bw1[] = {
+    0x80, 0x19, 0x01, 0x00, 0x00, 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,
+};
+const unsigned char EPD_2IN9D_lut_wb1[] = {
+    0x40, 0x19, 0x01, 0x00, 0x00, 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,
+};
+const unsigned char EPD_2IN9D_lut_bb1[] = {
+    0x00, 0x19, 0x01, 0x00, 0x00, 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,
+};
+
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_2IN9D_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_2IN9D_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_2IN9D_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_2IN9D_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    UBYTE busy;
+    do {
+        EPD_2IN9D_SendCommand(0x71);
+        busy = DEV_Digital_Read(EPD_BUSY_PIN);
+        busy =!(busy & 0x01);
+    } while(busy);
+    DEV_Delay_ms(200);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	LUT download
+parameter:
+******************************************************************************/
+static void EPD_SetFullReg(void)
+{
+    EPD_2IN9D_SendCommand(0X50);			//VCOM AND DATA INTERVAL SETTING
+    EPD_2IN9D_SendData(0xb7);		//WBmode:VBDF 17|D7 VBDW 97 VBDB 57		WBRmode:VBDF F7 VBDW 77 VBDB 37  VBDR B7
+
+    unsigned int count;
+    EPD_2IN9D_SendCommand(0x20);
+    for(count=0; count<44; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_vcomDC[count]);
+    }
+
+    EPD_2IN9D_SendCommand(0x21);
+    for(count=0; count<42; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_ww[count]);
+    }
+
+    EPD_2IN9D_SendCommand(0x22);
+    for(count=0; count<42; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_bw[count]);
+    }
+
+    EPD_2IN9D_SendCommand(0x23);
+    for(count=0; count<42; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_wb[count]);
+    }
+
+    EPD_2IN9D_SendCommand(0x24);
+    for(count=0; count<42; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_bb[count]);
+    }
+}
+
+/******************************************************************************
+function :	LUT download
+parameter:
+******************************************************************************/
+static void EPD_2IN9D_SetPartReg(void)
+{
+    EPD_2IN9D_SendCommand(0x82);			//vcom_DC setting
+    EPD_2IN9D_SendData(0x00);
+    EPD_2IN9D_SendCommand(0X50);
+    EPD_2IN9D_SendData(0xb7);
+	
+    unsigned int count;
+    EPD_2IN9D_SendCommand(0x20);
+    for(count=0; count<44; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_vcom1[count]);
+    }
+
+    EPD_2IN9D_SendCommand(0x21);
+    for(count=0; count<42; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_ww1[count]);
+    }
+
+    EPD_2IN9D_SendCommand(0x22);
+    for(count=0; count<42; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_bw1[count]);
+    }
+
+    EPD_2IN9D_SendCommand(0x23);
+    for(count=0; count<42; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_wb1[count]);
+    }
+
+    EPD_2IN9D_SendCommand(0x24);
+    for(count=0; count<42; count++) {
+        EPD_2IN9D_SendData(EPD_2IN9D_lut_bb1[count]);
+    }
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_2IN9D_TurnOnDisplay(void)
+{
+    EPD_2IN9D_SendCommand(0x12);		 //DISPLAY REFRESH
+    DEV_Delay_ms(10);     //!!!The delay here is necessary, 200uS at least!!!
+
+    EPD_2IN9D_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_2IN9D_Init(void)
+{
+    EPD_2IN9D_Reset();
+
+    EPD_2IN9D_SendCommand(0x01);	//POWER SETTING
+    EPD_2IN9D_SendData(0x03);
+    EPD_2IN9D_SendData(0x00);
+    EPD_2IN9D_SendData(0x2b);
+    EPD_2IN9D_SendData(0x2b);
+    EPD_2IN9D_SendData(0x03);
+
+    EPD_2IN9D_SendCommand(0x06);	//boost soft start
+    EPD_2IN9D_SendData(0x17);     //A
+    EPD_2IN9D_SendData(0x17);     //B
+    EPD_2IN9D_SendData(0x17);     //C
+
+    EPD_2IN9D_SendCommand(0x04);
+    EPD_2IN9D_ReadBusy();
+
+    EPD_2IN9D_SendCommand(0x00);	//panel setting
+    EPD_2IN9D_SendData(0xbf);     //LUT from OTP,128x296
+    EPD_2IN9D_SendData(0x0e);     //VCOM to 0V fast
+
+    EPD_2IN9D_SendCommand(0x30);	//PLL setting
+    EPD_2IN9D_SendData(0x3a);     // 3a 100HZ   29 150Hz 39 200HZ	31 171HZ
+
+    EPD_2IN9D_SendCommand(0x61);	//resolution setting
+    EPD_2IN9D_SendData(EPD_2IN9D_WIDTH);
+    EPD_2IN9D_SendData((EPD_2IN9D_HEIGHT >> 8) & 0xff);
+    EPD_2IN9D_SendData(EPD_2IN9D_HEIGHT & 0xff);
+
+    EPD_2IN9D_SendCommand(0x82);	//vcom_DC setting
+    EPD_2IN9D_SendData(0x28);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_2IN9D_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN9D_WIDTH % 8 == 0)? (EPD_2IN9D_WIDTH / 8 ): (EPD_2IN9D_WIDTH / 8 + 1);
+    Height = EPD_2IN9D_HEIGHT;
+
+    EPD_2IN9D_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9D_SendData(0x00);
+        }
+    }
+
+    EPD_2IN9D_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9D_SendData(0xFF);
+        }
+    }
+
+    EPD_SetFullReg();
+    EPD_2IN9D_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN9D_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_2IN9D_WIDTH % 8 == 0)? (EPD_2IN9D_WIDTH / 8 ): (EPD_2IN9D_WIDTH / 8 + 1);
+    Height = EPD_2IN9D_HEIGHT;
+
+    EPD_2IN9D_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9D_SendData(0x00);
+        }
+    }
+    // Dev_Delay_ms(10);
+
+    EPD_2IN9D_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9D_SendData(Image[i + j * Width]);
+        }
+    }
+    // Dev_Delay_ms(10);
+
+    EPD_SetFullReg();
+    EPD_2IN9D_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_2IN9D_DisplayPart(UBYTE *Image)
+{
+    /* Set partial Windows */
+    EPD_2IN9D_SetPartReg();
+    EPD_2IN9D_SendCommand(0x91);		//This command makes the display enter partial mode
+    EPD_2IN9D_SendCommand(0x90);		//resolution setting
+    EPD_2IN9D_SendData(0);           //x-start
+    EPD_2IN9D_SendData(EPD_2IN9D_WIDTH - 1);       //x-end
+
+    EPD_2IN9D_SendData(0);
+    EPD_2IN9D_SendData(0);     //y-start
+    EPD_2IN9D_SendData(EPD_2IN9D_HEIGHT / 256);
+    EPD_2IN9D_SendData(EPD_2IN9D_HEIGHT % 256 - 1);  //y-end
+    EPD_2IN9D_SendData(0x28);
+
+    UWORD Width;
+    Width = (EPD_2IN9D_WIDTH % 8 == 0)? (EPD_2IN9D_WIDTH / 8 ): (EPD_2IN9D_WIDTH / 8 + 1);
+    
+    /* send data */
+    EPD_2IN9D_SendCommand(0x13);
+    for (UWORD j = 0; j < EPD_2IN9D_HEIGHT; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_2IN9D_SendData(Image[i + j * Width]);
+        }
+    }
+
+    /* Set partial refresh */    
+    EPD_2IN9D_TurnOnDisplay();
+}
+
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_2IN9D_Sleep(void)
+{
+    EPD_2IN9D_SendCommand(0X50);
+    EPD_2IN9D_SendData(0xf7);
+    EPD_2IN9D_SendCommand(0X02);  	//power off
+    EPD_2IN9D_ReadBusy();
+    EPD_2IN9D_SendCommand(0X07);  	//deep sleep
+    EPD_2IN9D_SendData(0xA5);
+}

+ 69 - 0
luat/packages/epaper/EPD_2in9d.h

@@ -0,0 +1,69 @@
+/*****************************************************************************
+* | File      	:   EPD_2in9d.c
+* | Author      :   Waveshare team
+* | Function    :   2.9inch e-paper d
+* | Info        :
+*----------------
+* |	This version:   V2.0
+* | Date        :   2019-06-12
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-12):
+* 1.Change:
+*    lut_vcomDC[]  => EPD_2IN9D_lut_vcomDC[]
+*    lut_ww[] => EPD_2IN9D_lut_ww[]
+*    lut_bw[] => EPD_2IN9D_lut_bw[]
+*    lut_wb[] => EPD_2IN9D_lut_wb[]
+*    lut_bb[] => EPD_2IN9D_lut_bb[]
+*    lut_vcom1[] => EPD_2IN9D_lut_vcom1[]
+*    lut_ww1[] => EPD_2IN9D_lut_ww1[]
+*    lut_bw1[] => EPD_2IN9D_lut_bw1[]
+*    lut_wb1[] => EPD_2IN9D_lut_wb1[]
+*    lut_bb1[] => EPD_2IN9D_lut_bb1[]
+*    EPD_Reset() => EPD_2IN9D_Reset()
+*    EPD_SendCommand() => EPD_2IN9D_SendCommand()
+*    EPD_SendData() => EPD_2IN9D_SendData()
+*    EPD_WaitUntilIdle() => EPD_2IN9D_ReadBusy()
+*    EPD_SetFullReg() => EPD_2IN9D_SetFullReg()
+*    EPD_SetPartReg() => EPD_2IN9D_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_2IN9D_TurnOnDisplay()
+*    EPD_Init() => EPD_2IN9D_Init()
+*    EPD_Clear() => EPD_2IN9D_Clear()
+*    EPD_Display() => EPD_2IN9D_Display()
+*    EPD_Sleep() => EPD_2IN9D_Sleep()
+*
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_2IN9D_H_
+#define __EPD_2IN9D_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_2IN9D_WIDTH   128
+#define EPD_2IN9D_HEIGHT  296
+
+void EPD_2IN9D_Init(void);
+void EPD_2IN9D_Clear(void);
+void EPD_2IN9D_Display(UBYTE *Image);
+void EPD_2IN9D_DisplayPart(UBYTE *Image);
+void EPD_2IN9D_Sleep(void);
+
+#endif

+ 585 - 0
luat/packages/epaper/EPD_3in7.c

@@ -0,0 +1,585 @@
+/*****************************************************************************
+* | File      	:   EPD_3IN7.C
+* | Author      :   Waveshare team
+* | Function    :   3.7inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-07-17
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_3in7.h"
+#include "Debug.h"
+
+static const UBYTE lut_4Gray_GC[] =
+{
+0x2A,0x06,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1
+0x28,0x06,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2
+0x20,0x06,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3
+0x14,0x06,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5
+0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x08,0x08,0x02,//6
+0x00,0x02,0x02,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,//7
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10
+0x22,0x22,0x22,0x22,0x22
+};	
+
+static const UBYTE lut_1Gray_GC[] =
+{
+0x2A,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1
+0x05,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//2
+0x2A,0x15,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3
+0x05,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//4
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5
+0x00,0x02,0x03,0x0A,0x00,0x02,0x06,0x0A,0x05,0x00,//6
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//8
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//10
+0x22,0x22,0x22,0x22,0x22
+};  
+
+static const UBYTE lut_1Gray_DU[] =
+{
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//1
+0x01,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x0A,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//3
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//5
+0x00,0x00,0x05,0x05,0x00,0x05,0x03,0x05,0x05,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//7
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//9
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x22,0x22,0x22,0x22,0x22
+}; 
+
+static const UBYTE lut_1Gray_A2[] =
+{
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //1
+0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //2
+0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //3
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //4
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //5
+0x00,0x00,0x03,0x05,0x00,0x00,0x00,0x00,0x00,0x00, //6
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //7
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //8
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //9
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //10
+0x22,0x22,0x22,0x22,0x22
+}; 
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_3IN7_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(300);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(3);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(300);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_3IN7_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_3IN7_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+static void EPD_3IN7_ReadBusy_HIGH(void)
+{
+    Debug("e-Paper busy\r\n");
+    UBYTE busy;
+    do {
+        busy = DEV_Digital_Read(EPD_BUSY_PIN);
+    } while(busy);
+    DEV_Delay_ms(200);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	set the look-up tables
+parameter:
+******************************************************************************/
+void EPD_3IN7_Load_LUT(UBYTE lut)
+{
+  UWORD i;
+  EPD_3IN7_SendCommand(0x32);
+  for (i = 0; i < 105; i++)
+  {
+    if(lut == 0)
+        EPD_3IN7_SendData(lut_4Gray_GC[i]);
+    else if(lut == 1)
+        EPD_3IN7_SendData(lut_1Gray_GC[i]);
+    else if(lut == 2)
+        EPD_3IN7_SendData(lut_1Gray_DU[i]);
+    else if(lut == 3)
+        EPD_3IN7_SendData(lut_1Gray_A2[i]);  
+    else
+        Debug("There is no such lut \r\n");
+  }
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_3IN7_4Gray_Init(void)
+{
+    EPD_3IN7_Reset();
+    
+    EPD_3IN7_SendCommand(0x12);
+    DEV_Delay_ms(300);
+    
+    EPD_3IN7_SendCommand(0x46); 
+    EPD_3IN7_SendData(0xF7);
+    EPD_3IN7_ReadBusy_HIGH();
+    EPD_3IN7_SendCommand(0x47);
+    EPD_3IN7_SendData(0xF7);
+    EPD_3IN7_ReadBusy_HIGH(); 
+    
+    EPD_3IN7_SendCommand(0x01); // setting gaet number
+    EPD_3IN7_SendData(0xDF);
+    EPD_3IN7_SendData(0x01);
+    EPD_3IN7_SendData(0x00);
+
+    EPD_3IN7_SendCommand(0x03); // set gate voltage
+    EPD_3IN7_SendData(0x00);
+
+    EPD_3IN7_SendCommand(0x04); // set source voltage
+    EPD_3IN7_SendData(0x41);
+    EPD_3IN7_SendData(0xA8);
+    EPD_3IN7_SendData(0x32);
+
+    EPD_3IN7_SendCommand(0x11); // set data entry sequence
+    EPD_3IN7_SendData(0x03);
+
+    EPD_3IN7_SendCommand(0x3C); // set border 
+    EPD_3IN7_SendData(0x00);
+
+    EPD_3IN7_SendCommand(0x0C); // set booster strength
+    EPD_3IN7_SendData(0xAE);
+    EPD_3IN7_SendData(0xC7);
+    EPD_3IN7_SendData(0xC3);
+    EPD_3IN7_SendData(0xC0);
+    EPD_3IN7_SendData(0xC0);  
+
+    EPD_3IN7_SendCommand(0x18); // set internal sensor on
+    EPD_3IN7_SendData(0x80);
+     
+    EPD_3IN7_SendCommand(0x2C); // set vcom value
+    EPD_3IN7_SendData(0x44);
+    
+    EPD_3IN7_SendCommand(0x37); // set display option, these setting turn on previous function
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);  
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);  
+
+    EPD_3IN7_SendCommand(0x44); // setting X direction start/end position of RAM
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x17);
+    EPD_3IN7_SendData(0x01);
+
+    EPD_3IN7_SendCommand(0x45); // setting Y direction start/end position of RAM
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0xDF);
+    EPD_3IN7_SendData(0x01);
+
+    EPD_3IN7_SendCommand(0x22); // Display Update Control 2
+    EPD_3IN7_SendData(0xCF);
+}
+
+/******************************************************************************
+function :  Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_3IN7_1Gray_Init(void)
+{
+    EPD_3IN7_Reset();
+    
+    EPD_3IN7_SendCommand(0x12);
+    DEV_Delay_ms(300);
+    
+    EPD_3IN7_SendCommand(0x46); 
+    EPD_3IN7_SendData(0xF7);
+    EPD_3IN7_ReadBusy_HIGH();
+    EPD_3IN7_SendCommand(0x47);
+    EPD_3IN7_SendData(0xF7);
+    EPD_3IN7_ReadBusy_HIGH(); 
+    
+    EPD_3IN7_SendCommand(0x01); // setting gaet number
+    EPD_3IN7_SendData(0xDF);
+    EPD_3IN7_SendData(0x01);
+    EPD_3IN7_SendData(0x00);
+
+    EPD_3IN7_SendCommand(0x03); // set gate voltage
+    EPD_3IN7_SendData(0x00);
+
+    EPD_3IN7_SendCommand(0x04); // set source voltage
+    EPD_3IN7_SendData(0x41);
+    EPD_3IN7_SendData(0xA8);
+    EPD_3IN7_SendData(0x32);
+
+    EPD_3IN7_SendCommand(0x11); // set data entry sequence
+    EPD_3IN7_SendData(0x03);
+
+    EPD_3IN7_SendCommand(0x3C); // set border 
+    EPD_3IN7_SendData(0x00);
+
+    EPD_3IN7_SendCommand(0x0C); // set booster strength
+    EPD_3IN7_SendData(0xAE);
+    EPD_3IN7_SendData(0xC7);
+    EPD_3IN7_SendData(0xC3);
+    EPD_3IN7_SendData(0xC0);
+    EPD_3IN7_SendData(0xC0);  
+
+    EPD_3IN7_SendCommand(0x18); // set internal sensor on
+    EPD_3IN7_SendData(0x80);
+     
+    EPD_3IN7_SendCommand(0x2C); // set vcom value
+    EPD_3IN7_SendData(0x44);
+    
+    EPD_3IN7_SendCommand(0x37); // set display option, these setting turn on previous function
+    EPD_3IN7_SendData(0x00);     //can switch 1 gray or 4 gray
+    EPD_3IN7_SendData(0xFF);
+    EPD_3IN7_SendData(0xFF);
+    EPD_3IN7_SendData(0xFF);
+    EPD_3IN7_SendData(0xFF);  
+    EPD_3IN7_SendData(0x4F);
+    EPD_3IN7_SendData(0xFF);
+    EPD_3IN7_SendData(0xFF);
+    EPD_3IN7_SendData(0xFF);
+    EPD_3IN7_SendData(0xFF);  
+
+    EPD_3IN7_SendCommand(0x44); // setting X direction start/end position of RAM
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x17);
+    EPD_3IN7_SendData(0x01);
+
+    EPD_3IN7_SendCommand(0x45); // setting Y direction start/end position of RAM
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0xDF);
+    EPD_3IN7_SendData(0x01);
+
+    EPD_3IN7_SendCommand(0x22); // Display Update Control 2
+    EPD_3IN7_SendData(0xCF);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_3IN7_4Gray_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_3IN7_WIDTH % 8 == 0)? (EPD_3IN7_WIDTH / 8 ): (EPD_3IN7_WIDTH / 8 + 1);
+    Height = EPD_3IN7_HEIGHT;
+
+    EPD_3IN7_SendCommand(0x49);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendCommand(0x4E);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendCommand(0x4F);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    
+    EPD_3IN7_SendCommand(0x24);
+    for (UWORD j = 0; j < Height; j++) {
+       for (UWORD i = 0; i < Width; i++) {
+           EPD_3IN7_SendData(0xff);
+       }
+    }
+    
+    EPD_3IN7_SendCommand(0x4E);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+     
+    EPD_3IN7_SendCommand(0x4F);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    
+    EPD_3IN7_SendCommand(0x26);
+    for (UWORD j = 0; j < Height; j++) {
+       for (UWORD i = 0; i < Width; i++) {
+           EPD_3IN7_SendData(0xff);
+       }
+    }
+      
+    EPD_3IN7_Load_LUT(0);
+    EPD_3IN7_SendCommand(0x22);
+    EPD_3IN7_SendData(0xC7);
+
+    EPD_3IN7_SendCommand(0x20);
+    EPD_3IN7_ReadBusy_HIGH();     
+}
+
+/******************************************************************************
+function :  Clear screen
+parameter:
+******************************************************************************/
+void EPD_3IN7_1Gray_Clear(void)
+{
+  UWORD i;
+  UWORD IMAGE_COUNTER = EPD_3IN7_WIDTH * EPD_3IN7_HEIGHT / 8;
+
+  EPD_3IN7_SendCommand(0x4E);
+  EPD_3IN7_SendData(0x00);
+  EPD_3IN7_SendData(0x00);
+  EPD_3IN7_SendCommand(0x4F);
+  EPD_3IN7_SendData(0x00);
+  EPD_3IN7_SendData(0x00);
+
+  EPD_3IN7_SendCommand(0x24);
+  for (i = 0; i < IMAGE_COUNTER; i++)
+  {
+    EPD_3IN7_SendData(0xff);
+  }
+  
+  EPD_3IN7_Load_LUT(2);
+  
+  EPD_3IN7_SendCommand(0x20);
+  EPD_3IN7_ReadBusy_HIGH();    
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_3IN7_4Gray_Display(const UBYTE *Image)
+{
+    UDOUBLE i,j,k;
+    UBYTE temp1,temp2,temp3;
+    
+    EPD_3IN7_SendCommand(0x49);
+    EPD_3IN7_SendData(0x00);
+
+    
+    EPD_3IN7_SendCommand(0x4E);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    
+    
+    EPD_3IN7_SendCommand(0x4F);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    
+    EPD_3IN7_SendCommand(0x24);
+    for(i=0;i<16800;i++){
+        temp3=0;
+        for(j=0; j<2; j++) {
+            temp1 = Image[i*2+j];
+            for(k=0; k<2; k++) {
+                temp2 = temp1&0xC0;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x01;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x00;  //black
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00;  //gray1
+                else //0x40
+                    temp3 |= 0x01; //gray2
+                temp3 <<= 1;
+
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x01;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x00;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00; //gray1
+                else    //0x40
+                    temp3 |= 0x01;	//gray2
+                if(j!=1 || k!=1)
+                    temp3 <<= 1;
+
+                temp1 <<= 2;
+            }
+
+        }
+        EPD_3IN7_SendData(temp3);
+    }
+    // new  data
+    EPD_3IN7_SendCommand(0x4E);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+     
+    
+    EPD_3IN7_SendCommand(0x4F);
+    EPD_3IN7_SendData(0x00);
+    EPD_3IN7_SendData(0x00);
+    
+    EPD_3IN7_SendCommand(0x26);
+    for(i=0; i<16800; i++) {
+        temp3=0;
+        for(j=0; j<2; j++) {
+            temp1 = Image[i*2+j];
+            for(k=0; k<2; k++) {
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x01;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x00;  //black
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01;  //gray1
+                else //0x40
+                    temp3 |= 0x00; //gray2
+                temp3 <<= 1;
+
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x01;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x00;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01; //gray1
+                else    //0x40
+                    temp3 |= 0x00;	//gray2
+                if(j!=1 || k!=1)
+                    temp3 <<= 1;
+
+                temp1 <<= 2;
+            }
+        }
+        EPD_3IN7_SendData(temp3);
+    }
+
+    EPD_3IN7_Load_LUT(0);
+    
+    EPD_3IN7_SendCommand(0x22);
+    EPD_3IN7_SendData(0xC7);
+    
+    EPD_3IN7_SendCommand(0x20);
+    
+    EPD_3IN7_ReadBusy_HIGH(); 
+}
+
+/******************************************************************************
+function :  Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_3IN7_1Gray_Display(const UBYTE *Image)
+{
+  UWORD i;
+  UWORD IMAGE_COUNTER = EPD_3IN7_WIDTH * EPD_3IN7_HEIGHT / 8;
+
+  EPD_3IN7_SendCommand(0x4E);
+  EPD_3IN7_SendData(0x00);
+  EPD_3IN7_SendData(0x00);
+  EPD_3IN7_SendCommand(0x4F);
+  EPD_3IN7_SendData(0x00);
+  EPD_3IN7_SendData(0x00);
+
+  EPD_3IN7_SendCommand(0x24);
+  for (i = 0; i < IMAGE_COUNTER; i++)
+  {
+    EPD_3IN7_SendData(Image[i]);
+  }
+
+  EPD_3IN7_Load_LUT(2);
+  EPD_3IN7_SendCommand(0x20);
+  EPD_3IN7_ReadBusy_HIGH();  
+}
+
+/******************************************************************************
+function :  Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_3IN7_1Gray_Display_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend)
+{
+  UWORD i, Width;
+  Width = (Xend-Xstart)%8 == 0 ? (Xend-Xstart)/8 : (Xend-Xstart)/8+1;
+  UWORD IMAGE_COUNTER = Width * (Yend-Ystart);
+
+  EPD_3IN7_SendCommand(0x44);
+  EPD_3IN7_SendData(Xstart & 0xff);
+  EPD_3IN7_SendData((Xstart>>8) & 0x03);
+  EPD_3IN7_SendData(Xend & 0xff);
+  EPD_3IN7_SendData((Xend>>8) & 0x03);
+  EPD_3IN7_SendCommand(0x45);
+  EPD_3IN7_SendData(Ystart & 0xff);
+  EPD_3IN7_SendData((Ystart>>8) & 0x03);
+  EPD_3IN7_SendData(Yend & 0xff);
+  EPD_3IN7_SendData((Yend>>8) & 0x03);
+
+  EPD_3IN7_SendCommand(0x24);
+  for (i = 0; i < IMAGE_COUNTER; i++)
+  {
+    EPD_3IN7_SendData(Image[i]);
+  }
+  
+  EPD_3IN7_Load_LUT(2);
+  EPD_3IN7_SendCommand(0x20);
+  EPD_3IN7_ReadBusy_HIGH();    
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_3IN7_Sleep(void)
+{
+    EPD_3IN7_SendCommand(0X50);
+    EPD_3IN7_SendData(0xf7);
+    EPD_3IN7_SendCommand(0X02);  	//power off
+    EPD_3IN7_SendCommand(0X07);  	//deep sleep
+    EPD_3IN7_SendData(0xA5);
+}

+ 51 - 0
luat/packages/epaper/EPD_3in7.h

@@ -0,0 +1,51 @@
+/*****************************************************************************
+* | File      	:   EPD_3IN7.h
+* | Author      :   Waveshare team
+* | Function    :   3.7inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-07-17
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_3IN7_H_
+#define __EPD_3IN7_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_3IN7_WIDTH       280
+#define EPD_3IN7_HEIGHT      480 
+
+void EPD_3IN7_4Gray_Clear(void);
+void EPD_3IN7_4Gray_Init(void);
+void EPD_3IN7_4Gray_Display(const UBYTE *Image);
+
+void EPD_3IN7_1Gray_Clear(void);
+void EPD_3IN7_1Gray_Init(void);
+void EPD_3IN7_1Gray_Display(const UBYTE *Image);
+void EPD_3IN7_1Gray_Display_Part(const UBYTE *Image, UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend);
+
+void EPD_3IN7_Sleep(void);
+
+#endif

+ 706 - 0
luat/packages/epaper/EPD_4in2.c

@@ -0,0 +1,706 @@
+/*****************************************************************************
+* | File      	:   EPD_4in2.c
+* | Author      :   Waveshare team
+* | Function    :   4.2inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.1
+* | Date        :   2019-11-14
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2019-11-14):
+* 1.Add 4 grayscale drive and display program
+*	 Add EPD_4IN2_4Gray_lut_vcom[]
+*	 Add EPD_4IN2_4Gray_lut_ww[]
+*	 Add EPD_4IN2_4Gray_lut_bw[]
+*	 Add EPD_4IN2_4Gray_lut_wb
+*	 Add EPD_4IN2_4Gray_lut_bb
+*	 Add EPD_4IN2_Partial_SetLut()
+*	 Add EPD_4IN2_4Gray_lut()
+*	 Add EPD_4IN2_Init_4Gray()
+*	 Add EPD_4IN2_4GrayDisplay(....)
+* 2.Add partial refresh display
+* 	 Add EPD_4IN2_Partial_lut_vcom1[]
+* 	 Add EPD_4IN2_Partial_lut_ww1[]
+* 	 Add EPD_4IN2_Partial_lut_bw1[]
+* 	 Add EPD_4IN2_Partial_lut_wb1[]
+* 	 Add EPD_4IN2_Partial_lut_bb1[]
+* 	 Add EPD_4IN2_Partial_SetLut()
+* 	 Add EPD_4IN2_PartialDisplay(...)
+* 	 Poor display, no display function by default
+*
+* V3.0(2019-06-13):
+* 1.Change:
+*    lut_vcomDC[]  => EPD_4IN2_lut_vcomDC[]
+*    lut_ww[] => EPD_4IN2_lut_ww[]
+*    lut_bw[] => EPD_4IN2_lut_bw[]
+*    lut_wb[] => EPD_4IN2_lut_wb[]
+*    lut_bb[] => EPD_4IN2_lut_bb[]
+*    EPD_Reset() => EPD_4IN2_Reset()
+*    EPD_SendCommand() => EPD_4IN2_SendCommand()
+*    EPD_SendData() => EPD_4IN2_SendData()
+*    EPD_WaitUntilIdle() => EPD_4IN2_ReadBusy()
+*    EPD_SetFullReg() => EPD_4IN2_SetFullReg()
+*    EPD_SetPartReg() => EPD_4IN2_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_4IN2_TurnOnDisplay()
+*    EPD_Init() => EPD_4IN2_Init()
+*    EPD_Clear() => EPD_4IN2_Clear()
+*    EPD_Display() => EPD_4IN2_Display()
+*    EPD_Sleep() => EPD_4IN2_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* V2.0(2018-10-30):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_4in2.h"
+#include "Debug.h"
+
+static const unsigned char EPD_4IN2_lut_vcom0[] = {
+    0x00, 0x17, 0x00, 0x00, 0x00, 0x02,
+    0x00, 0x17, 0x17, 0x00, 0x00, 0x02,
+    0x00, 0x0A, 0x01, 0x00, 0x00, 0x01,
+    0x00, 0x0E, 0x0E, 0x00, 0x00, 0x02,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const unsigned char EPD_4IN2_lut_ww[] = {
+    0x40, 0x17, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x17, 0x17, 0x00, 0x00, 0x02,
+    0x40, 0x0A, 0x01, 0x00, 0x00, 0x01,
+    0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const unsigned char EPD_4IN2_lut_bw[] = {
+    0x40, 0x17, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x17, 0x17, 0x00, 0x00, 0x02,
+    0x40, 0x0A, 0x01, 0x00, 0x00, 0x01,
+    0xA0, 0x0E, 0x0E, 0x00, 0x00, 0x02,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const unsigned char EPD_4IN2_lut_wb[] = {
+    0x80, 0x17, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x17, 0x17, 0x00, 0x00, 0x02,
+    0x80, 0x0A, 0x01, 0x00, 0x00, 0x01,
+    0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+static const unsigned char EPD_4IN2_lut_bb[] = {
+    0x80, 0x17, 0x00, 0x00, 0x00, 0x02,
+    0x90, 0x17, 0x17, 0x00, 0x00, 0x02,
+    0x80, 0x0A, 0x01, 0x00, 0x00, 0x01,
+    0x50, 0x0E, 0x0E, 0x00, 0x00, 0x02,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+/******************************partial screen update LUT*********************************/
+const unsigned char EPD_4IN2_Partial_lut_vcom1[] = {
+    0x00	,0x19	,0x01	,0x00	,0x00	,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,
+};
+
+const unsigned char EPD_4IN2_Partial_lut_ww1[] = {
+    0x00	,0x19	,0x01	,0x00	,0x00	,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,
+};
+
+const unsigned char EPD_4IN2_Partial_lut_bw1[] = {
+    0x80	,0x19	,0x01	,0x00	,0x00	,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,
+};
+
+const unsigned char EPD_4IN2_Partial_lut_wb1[] = {
+    0x40	,0x19	,0x01	,0x00	,0x00	,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,
+};
+
+const unsigned char EPD_4IN2_Partial_lut_bb1[] = {
+    0x00	,0x19	,0x01	,0x00	,0x00	,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,
+};
+
+/******************************gray*********************************/
+//0~3 gray
+const unsigned char EPD_4IN2_4Gray_lut_vcom[] = {
+    0x00	,0x0A	,0x00	,0x00	,0x00	,0x01,
+    0x60	,0x14	,0x14	,0x00	,0x00	,0x01,
+    0x00	,0x14	,0x00	,0x00	,0x00	,0x01,
+    0x00	,0x13	,0x0A	,0x01	,0x00	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00
+
+};
+//R21
+const unsigned char EPD_4IN2_4Gray_lut_ww[] = {
+    0x40	,0x0A	,0x00	,0x00	,0x00	,0x01,
+    0x90	,0x14	,0x14	,0x00	,0x00	,0x01,
+    0x10	,0x14	,0x0A	,0x00	,0x00	,0x01,
+    0xA0	,0x13	,0x01	,0x00	,0x00	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+//R22H	r
+const unsigned char EPD_4IN2_4Gray_lut_bw[] = {
+    0x40	,0x0A	,0x00	,0x00	,0x00	,0x01,
+    0x90	,0x14	,0x14	,0x00	,0x00	,0x01,
+    0x00	,0x14	,0x0A	,0x00	,0x00	,0x01,
+    0x99	,0x0C	,0x01	,0x03	,0x04	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+//R23H	w
+const unsigned char EPD_4IN2_4Gray_lut_wb[] = {
+    0x40	,0x0A	,0x00	,0x00	,0x00	,0x01,
+    0x90	,0x14	,0x14	,0x00	,0x00	,0x01,
+    0x00	,0x14	,0x0A	,0x00	,0x00	,0x01,
+    0x99	,0x0B	,0x04	,0x04	,0x01	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+//R24H	b
+const unsigned char EPD_4IN2_4Gray_lut_bb[] = {
+    0x80	,0x0A	,0x00	,0x00	,0x00	,0x01,
+    0x90	,0x14	,0x14	,0x00	,0x00	,0x01,
+    0x20	,0x14	,0x0A	,0x00	,0x00	,0x01,
+    0x50	,0x13	,0x01	,0x00	,0x00	,0x01,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+    0x00	,0x00	,0x00	,0x00	,0x00	,0x00,
+};
+
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_4IN2_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_4IN2_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_4IN2_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_4IN2_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    EPD_4IN2_SendCommand(0x71);
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) {      //LOW: idle, HIGH: busy
+        EPD_4IN2_SendCommand(0x71);
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_4IN2_TurnOnDisplay(void)
+{
+    EPD_4IN2_SendCommand(0x12);
+    DEV_Delay_ms(100);
+    EPD_4IN2_ReadBusy();
+}
+
+/******************************************************************************
+function :	set the look-up tables
+parameter:
+******************************************************************************/
+static void EPD_4IN2_SetLut(void)
+{
+    UWORD count;
+    EPD_4IN2_SendCommand(0x20);         //g vcom
+    for(count=0; count<44; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_lut_vcom0[count]);
+    }
+
+    EPD_4IN2_SendCommand(0x21);
+    for(count=0; count<42; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_lut_ww[count]);
+    }
+
+    EPD_4IN2_SendCommand(0x22);
+    for(count=0; count<42; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_lut_bw[count]);
+    }
+
+    EPD_4IN2_SendCommand(0x23);
+    for(count=0; count<42; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_lut_wb[count]);
+    }
+
+    EPD_4IN2_SendCommand(0x24);
+    for(count=0; count<42; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_lut_bb[count]);
+    }
+}
+
+static void EPD_4IN2_Partial_SetLut(void)
+{
+    unsigned int count;
+    EPD_4IN2_SendCommand(0x20);
+    for(count=0; count<44; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_Partial_lut_vcom1[count]);
+    }
+
+    EPD_4IN2_SendCommand(0x21);
+    for(count=0; count<42; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_Partial_lut_ww1[count]);
+    }
+
+    EPD_4IN2_SendCommand(0x22);
+    for(count=0; count<42; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_Partial_lut_bw1[count]);
+    }
+
+    EPD_4IN2_SendCommand(0x23);
+    for(count=0; count<42; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_Partial_lut_wb1[count]);
+    }
+
+    EPD_4IN2_SendCommand(0x24);
+    for(count=0; count<42; count++) {
+        EPD_4IN2_SendData(EPD_4IN2_Partial_lut_bb1[count]);
+    }
+}
+
+//LUT download
+static void EPD_4IN2_4Gray_lut(void)
+{
+    unsigned int count;
+    {
+        EPD_4IN2_SendCommand(0x20);							//vcom
+        for(count=0; count<42; count++) {
+            EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_vcom[count]);
+        }
+
+        EPD_4IN2_SendCommand(0x21);							//red not use
+        for(count=0; count<42; count++) {
+            EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_ww[count]);
+        }
+
+        EPD_4IN2_SendCommand(0x22);							//bw r
+        for(count=0; count<42; count++) {
+            EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_bw[count]);
+        }
+
+        EPD_4IN2_SendCommand(0x23);							//wb w
+        for(count=0; count<42; count++) {
+            EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_wb[count]);
+        }
+
+        EPD_4IN2_SendCommand(0x24);							//bb b
+        for(count=0; count<42; count++) {
+            EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_bb[count]);
+        }
+
+        EPD_4IN2_SendCommand(0x25);							//vcom
+        for(count=0; count<42; count++) {
+            EPD_4IN2_SendData(EPD_4IN2_4Gray_lut_ww[count]);
+        }
+    }
+}
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_4IN2_Init(void)
+{
+    EPD_4IN2_Reset();
+
+    EPD_4IN2_SendCommand(0x01); // POWER SETTING
+    EPD_4IN2_SendData(0x03);
+    EPD_4IN2_SendData(0x00);
+    EPD_4IN2_SendData(0x2b);
+    EPD_4IN2_SendData(0x2b);
+
+    EPD_4IN2_SendCommand(0x06); // boost soft start
+    EPD_4IN2_SendData(0x17);		//A
+    EPD_4IN2_SendData(0x17);		//B
+    EPD_4IN2_SendData(0x17);		//C
+
+    EPD_4IN2_SendCommand(0x04); // POWER_ON
+    EPD_4IN2_ReadBusy();
+
+    EPD_4IN2_SendCommand(0x00); // panel setting
+    EPD_4IN2_SendData(0xbf); // KW-BF   KWR-AF	BWROTP 0f	BWOTP 1f
+    EPD_4IN2_SendData(0x0d);
+
+    EPD_4IN2_SendCommand(0x30); // PLL setting
+    EPD_4IN2_SendData(0x3C); // 3A 100HZ   29 150Hz 39 200HZ	31 171HZ
+
+    EPD_4IN2_SendCommand(0x61); // resolution setting
+    EPD_4IN2_SendData(0x01);
+    EPD_4IN2_SendData(0x90); //128
+    EPD_4IN2_SendData(0x01); //
+    EPD_4IN2_SendData(0x2c);
+
+    EPD_4IN2_SendCommand(0x82); // vcom_DC setting
+    EPD_4IN2_SendData(0x28);
+
+    EPD_4IN2_SendCommand(0X50); // VCOM AND DATA INTERVAL SETTING
+    EPD_4IN2_SendData(0x97); // 97white border 77black border		VBDF 17|D7 VBDW 97 VBDB 57		VBDF F7 VBDW 77 VBDB 37  VBDR B7
+
+    EPD_4IN2_SetLut();
+}
+
+void EPD_4IN2_Init_4Gray(void)
+{
+    EPD_4IN2_Reset();
+    EPD_4IN2_SendCommand(0x01);			//POWER SETTING
+    EPD_4IN2_SendData (0x03);
+    EPD_4IN2_SendData (0x00);       //VGH=20V,VGL=-20V
+    EPD_4IN2_SendData (0x2b);		//VDH=15V
+    EPD_4IN2_SendData (0x2b);		//VDL=-15V
+    EPD_4IN2_SendData (0x13);
+
+    EPD_4IN2_SendCommand(0x06);         //booster soft start
+    EPD_4IN2_SendData (0x17);		//A
+    EPD_4IN2_SendData (0x17);		//B
+    EPD_4IN2_SendData (0x17);		//C
+
+    EPD_4IN2_SendCommand(0x04);
+    EPD_4IN2_ReadBusy();
+
+    EPD_4IN2_SendCommand(0x00);			//panel setting
+    EPD_4IN2_SendData(0x3f);		//KW-3f   KWR-2F	BWROTP 0f	BWOTP 1f
+
+    EPD_4IN2_SendCommand(0x30);			//PLL setting
+    EPD_4IN2_SendData (0x3c);      	//100hz
+
+    EPD_4IN2_SendCommand(0x61);			//resolution setting
+    EPD_4IN2_SendData (0x01);		//400
+    EPD_4IN2_SendData (0x90);
+    EPD_4IN2_SendData (0x01);		//300
+    EPD_4IN2_SendData (0x2c);
+
+    EPD_4IN2_SendCommand(0x82);			//vcom_DC setting
+    EPD_4IN2_SendData (0x12);
+
+    EPD_4IN2_SendCommand(0X50);			//VCOM AND DATA INTERVAL SETTING
+    EPD_4IN2_SendData(0x97);
+}
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_4IN2_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_4IN2_WIDTH % 8 == 0)? (EPD_4IN2_WIDTH / 8 ): (EPD_4IN2_WIDTH / 8 + 1);
+    Height = EPD_4IN2_HEIGHT;
+
+    EPD_4IN2_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2_SendData(0xFF);
+        }
+    }
+
+    EPD_4IN2_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2_SendData(0xFF);
+        }
+    }
+    EPD_4IN2_SendCommand(0x12);		 //DISPLAY REFRESH
+    DEV_Delay_ms(10);
+    EPD_4IN2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_4IN2_Display(UBYTE *Image)
+{
+    UWORD Width, Height;
+    Width = (EPD_4IN2_WIDTH % 8 == 0)? (EPD_4IN2_WIDTH / 8 ): (EPD_4IN2_WIDTH / 8 + 1);
+    Height = EPD_4IN2_HEIGHT;
+
+    EPD_4IN2_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2_SendData(Image[i + j * Width]);
+        }
+    }
+
+    EPD_4IN2_TurnOnDisplay();
+}
+
+void EPD_4IN2_PartialDisplay(UWORD X_start,UWORD Y_start,UWORD X_end,UWORD Y_end, UBYTE *Image)
+{
+    UWORD Width;
+    Width = (EPD_4IN2_WIDTH % 8 == 0)? (EPD_4IN2_WIDTH / 8 ): (EPD_4IN2_WIDTH / 8 + 1);
+
+    X_start = (X_start % 8 == 0)? (X_start): (X_start/8*8+8);
+    X_end = (X_end % 8 == 0)? (X_end): (X_end/8*8+8);
+
+    EPD_4IN2_SendCommand(0X50);
+    EPD_4IN2_SendData(0xf7);
+    DEV_Delay_ms(100);
+
+    EPD_4IN2_SendCommand(0x82);			//vcom_DC setting
+    EPD_4IN2_SendData (0x08);
+    EPD_4IN2_SendCommand(0X50);
+    EPD_4IN2_SendData(0x47);
+    EPD_4IN2_Partial_SetLut();
+    EPD_4IN2_SendCommand(0x91);		//This command makes the display enter partial mode
+    EPD_4IN2_SendCommand(0x90);		//resolution setting
+    EPD_4IN2_SendData ((X_start)/256);
+    EPD_4IN2_SendData ((X_start)%256);   //x-start
+
+    EPD_4IN2_SendData ((X_end )/256);
+    EPD_4IN2_SendData ((X_end )%256-1);  //x-end
+
+    EPD_4IN2_SendData (Y_start/256);
+    EPD_4IN2_SendData (Y_start%256);   //y-start
+
+    EPD_4IN2_SendData (Y_end/256);
+    EPD_4IN2_SendData (Y_end%256-1);  //y-end
+    EPD_4IN2_SendData (0x28);
+
+    EPD_4IN2_SendCommand(0x10);	       //writes Old data to SRAM for programming
+    for (UWORD j = 0; j < Y_end - Y_start; j++) {
+        for (UWORD i = 0; i < (X_end - X_start)/8; i++) {
+            EPD_4IN2_SendData(Image[(Y_start + j)*Width + X_start/8 + i]);
+        }
+    }
+    EPD_4IN2_SendCommand(0x13);				 //writes New data to SRAM.
+    for (UWORD j = 0; j < Y_end - Y_start; j++) {
+        for (UWORD i = 0; i < (X_end - X_start)/8; i++) {
+            EPD_4IN2_SendData(~Image[(Y_start + j)*Width + X_start/8 + i]);
+        }
+    }
+
+    EPD_4IN2_SendCommand(0x12);		 //DISPLAY REFRESH
+    DEV_Delay_ms(10);     //The delay here is necessary, 200uS at least!!!
+    EPD_4IN2_TurnOnDisplay();
+}
+
+void EPD_4IN2_4GrayDisplay(const UBYTE *Image)
+{
+    UDOUBLE i,j,k;
+    UBYTE temp1,temp2,temp3;
+    /****Color display description****
+          white  gray1  gray2  black
+    0x10|  01     01     00     00
+    0x13|  01     00     01     00
+    *********************************/
+    EPD_4IN2_SendCommand(0x10);
+
+    for(i=0; i<15000; i++) {             //5808*4  46464
+        temp3=0;
+        for(j=0; j<2; j++) {
+            temp1 = Image[i*2+j];
+            for(k=0; k<2; k++) {
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x01;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x00;  //black
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01;  //gray1
+                else //0x40
+                    temp3 |= 0x00; //gray2
+                temp3 <<= 1;
+
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x01;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x00;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x01; //gray1
+                else    //0x40
+                    temp3 |= 0x00;	//gray2
+                if(j!=1 || k!=1)
+                    temp3 <<= 1;
+
+                temp1 <<= 2;
+            }
+
+        }
+        EPD_4IN2_SendData(temp3);
+    }
+    // new  data
+    EPD_4IN2_SendCommand(0x13);
+    for(i=0; i<15000; i++) {             //5808*4  46464
+        temp3=0;
+        for(j=0; j<2; j++) {
+            temp1 = Image[i*2+j];
+            for(k=0; k<2; k++) {
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)
+                    temp3 |= 0x01;//white
+                else if(temp2 == 0x00)
+                    temp3 |= 0x00;  //black
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00;  //gray1
+                else //0x40
+                    temp3 |= 0x01; //gray2
+                temp3 <<= 1;
+
+                temp1 <<= 2;
+                temp2 = temp1&0xC0 ;
+                if(temp2 == 0xC0)  //white
+                    temp3 |= 0x01;
+                else if(temp2 == 0x00) //black
+                    temp3 |= 0x00;
+                else if(temp2 == 0x80)
+                    temp3 |= 0x00; //gray1
+                else    //0x40
+                    temp3 |= 0x01;	//gray2
+                if(j!=1 || k!=1)
+                    temp3 <<= 1;
+
+                temp1 <<= 2;
+            }
+
+        }
+        EPD_4IN2_SendData(temp3);
+    }
+
+    EPD_4IN2_4Gray_lut();
+    EPD_4IN2_TurnOnDisplay();
+}
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_4IN2_Sleep(void)
+{
+    EPD_4IN2_SendCommand(0x02); // POWER_OFF
+    EPD_4IN2_ReadBusy();
+    EPD_4IN2_SendCommand(0x07); // DEEP_SLEEP
+    EPD_4IN2_SendData(0XA5);
+}

+ 129 - 0
luat/packages/epaper/EPD_4in2.h

@@ -0,0 +1,129 @@
+/*****************************************************************************
+* | File      	:   EPD_4in2.h
+* | Author      :   Waveshare team
+* | Function    :   4.2inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.1
+* | Date        :   2019-11-14
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2019-11-14):
+* 1.Add 4 grayscale drive and display program
+*	 Add EPD_4IN2_4Gray_lut_vcom[]
+*	 Add EPD_4IN2_4Gray_lut_ww[]
+*	 Add EPD_4IN2_4Gray_lut_bw[]
+*	 Add EPD_4IN2_4Gray_lut_wb
+*	 Add EPD_4IN2_4Gray_lut_bb
+*	 Add EPD_4IN2_Partial_SetLut()
+*	 Add EPD_4IN2_4Gray_lut()
+*	 Add EPD_4IN2_Init_4Gray()
+*	 Add EPD_4IN2_4GrayDisplay(....)
+* 2.Add partial refresh display
+* 	 Add EPD_4IN2_Partial_lut_vcom1[]
+* 	 Add EPD_4IN2_Partial_lut_ww1[]
+* 	 Add EPD_4IN2_Partial_lut_bw1[]
+* 	 Add EPD_4IN2_Partial_lut_wb1[]
+* 	 Add EPD_4IN2_Partial_lut_bb1[]
+* 	 Add EPD_4IN2_Partial_SetLut()
+* 	 Add EPD_4IN2_PartialDisplay(...)
+* 	 Poor display, no display function by default
+*
+* V3.0(2019-06-13):
+* 1.Change:
+*    lut_vcomDC[]  => EPD_4IN2_lut_vcomDC[]
+*    lut_ww[] => EPD_4IN2_lut_ww[]
+*    lut_bw[] => EPD_4IN2_lut_bw[]
+*    lut_wb[] => EPD_4IN2_lut_wb[]
+*    lut_bb[] => EPD_4IN2_lut_bb[]
+*    EPD_Reset() => EPD_4IN2_Reset()
+*    EPD_SendCommand() => EPD_4IN2_SendCommand()
+*    EPD_SendData() => EPD_4IN2_SendData()
+*    EPD_WaitUntilIdle() => EPD_4IN2_ReadBusy()
+*    EPD_SetFullReg() => EPD_4IN2_SetFullReg()
+*    EPD_SetPartReg() => EPD_4IN2_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_4IN2_TurnOnDisplay()
+*    EPD_Init() => EPD_4IN2_Init()
+*    EPD_Clear() => EPD_4IN2_Clear()
+*    EPD_Display() => EPD_4IN2_Display()
+*    EPD_Sleep() => EPD_4IN2_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* V2.0(2018-10-30):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _EPD_4IN2_H_
+#define _EPD_4IN2_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_4IN2_WIDTH       400
+#define EPD_4IN2_HEIGHT      300
+
+void EPD_4IN2_Init(void);
+void EPD_4IN2_Clear(void);
+void EPD_4IN2_Display(UBYTE *Image);
+void EPD_4IN2_Sleep(void);
+void EPD_4IN2_PartialDisplay(UWORD X_start,UWORD Y_start,UWORD X_end,UWORD Y_end, UBYTE *Image);
+
+void EPD_4IN2_Init_4Gray(void);
+void EPD_4IN2_4GrayDisplay(const UBYTE *Image);
+#endif

+ 184 - 0
luat/packages/epaper/EPD_4in2b_V2.c

@@ -0,0 +1,184 @@
+/*****************************************************************************
+* | File      	:   EPD_4in2b_V2.c
+* | Author      :   Waveshare team
+* | Function    :   4.2inch e-paper b V2
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-11-25
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_4in2b_V2.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_4IN2B_V2_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(5);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_4IN2B_V2_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_4IN2B_V2_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_4IN2B_V2_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    unsigned char busy;
+    do{
+        EPD_4IN2B_V2_SendCommand(0x71);
+		busy = DEV_Digital_Read(EPD_BUSY_PIN);
+		busy =!(busy & 0x01); 
+    }while(busy);
+    Debug("e-Paper busy release\r\n");
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_4IN2B_V2_TurnOnDisplay(void)
+{
+    EPD_4IN2B_V2_SendCommand(0x12); // DISPLAY_REFRESH
+    DEV_Delay_ms(100);
+    EPD_4IN2B_V2_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_4IN2B_V2_Init(void)
+{
+    EPD_4IN2B_V2_Reset();
+    
+    EPD_4IN2B_V2_SendCommand(0x04); 
+    EPD_4IN2B_V2_ReadBusy();
+
+    EPD_4IN2B_V2_SendCommand(0x00);
+    EPD_4IN2B_V2_SendData(0x0f);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_4IN2B_V2_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_4IN2B_V2_WIDTH % 8 == 0)? (EPD_4IN2B_V2_WIDTH / 8 ): (EPD_4IN2B_V2_WIDTH / 8 + 1);
+    Height = EPD_4IN2B_V2_HEIGHT;
+
+    EPD_4IN2B_V2_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2B_V2_SendData(0xFF);
+        }
+    }
+
+    EPD_4IN2B_V2_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2B_V2_SendData(0xFF);
+        }
+    }
+
+    EPD_4IN2B_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_4IN2B_V2_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UWORD Width, Height;
+    Width = (EPD_4IN2B_V2_WIDTH % 8 == 0)? (EPD_4IN2B_V2_WIDTH / 8 ): (EPD_4IN2B_V2_WIDTH / 8 + 1);
+    Height = EPD_4IN2B_V2_HEIGHT;
+
+    EPD_4IN2B_V2_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2B_V2_SendData(blackimage[i + j * Width]);
+        }
+    }
+
+    EPD_4IN2B_V2_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2B_V2_SendData(ryimage[i + j * Width]);
+        }
+    }
+
+    EPD_4IN2B_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_4IN2B_V2_Sleep(void)
+{
+    EPD_4IN2B_V2_SendCommand(0X50);
+    EPD_4IN2B_V2_SendData(0xf7);		//border floating	
+
+    EPD_4IN2B_V2_SendCommand(0X02);  	//power off
+    EPD_4IN2B_V2_ReadBusy(); //waiting for the electronic paper IC to release the idle signal
+    EPD_4IN2B_V2_SendCommand(0X07);  	//deep sleep
+    EPD_4IN2B_V2_SendData(0xA5);
+}

+ 45 - 0
luat/packages/epaper/EPD_4in2b_V2.h

@@ -0,0 +1,45 @@
+/*****************************************************************************
+* | File      	:   EPD_4in2b_V2.h
+* | Author      :   Waveshare team
+* | Function    :   4.2inch e-paper b&c
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-11-25
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_4IN2B_V2_H_
+#define __EPD_4IN2B_V2_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_4IN2B_V2_WIDTH       400
+#define EPD_4IN2B_V2_HEIGHT      300
+
+void EPD_4IN2B_V2_Init(void);
+void EPD_4IN2B_V2_Clear(void);
+void EPD_4IN2B_V2_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_4IN2B_V2_Sleep(void);
+
+#endif

+ 233 - 0
luat/packages/epaper/EPD_4in2bc.c

@@ -0,0 +1,233 @@
+/*****************************************************************************
+* | File      	:   EPD_4in2b.c
+* | Author      :   Waveshare team
+* | Function    :   4.2inch e-paper b&c
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_4IN2BC_Reset()
+*    EPD_SendCommand() => EPD_4IN2BC_SendCommand()
+*    EPD_SendData() => EPD_4IN2BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_4IN2BC_ReadBusy()
+*    EPD_Init() => EPD_4IN2BC_Init()
+*    EPD_Clear() => EPD_4IN2BC_Clear()
+*    EPD_Display() => EPD_4IN2BC_Display()
+*    EPD_Sleep() => EPD_4IN2BC_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_4in2bc.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_4IN2BC_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(5);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_4IN2BC_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_4IN2BC_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_4IN2BC_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) {      //0: busy, 1: idle
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_4IN2BC_TurnOnDisplay(void)
+{
+    EPD_4IN2BC_SendCommand(0x12); // DISPLAY_REFRESH
+    DEV_Delay_ms(100);
+    EPD_4IN2BC_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_4IN2BC_Init(void)
+{
+    EPD_4IN2BC_Reset();
+
+    EPD_4IN2BC_SendCommand(0x06); // BOOSTER_SOFT_START
+    EPD_4IN2BC_SendData(0x17);
+    EPD_4IN2BC_SendData(0x17);
+    EPD_4IN2BC_SendData(0x17); // 07 0f 17 1f 27 2F 37 2f
+    EPD_4IN2BC_SendCommand(0x04); // POWER_ON
+    EPD_4IN2BC_ReadBusy();
+    EPD_4IN2BC_SendCommand(0x00); // PANEL_SETTING
+    EPD_4IN2BC_SendData(0x0F); // LUT from OTP
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_4IN2BC_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_4IN2BC_WIDTH % 8 == 0)? (EPD_4IN2BC_WIDTH / 8 ): (EPD_4IN2BC_WIDTH / 8 + 1);
+    Height = EPD_4IN2BC_HEIGHT;
+
+    EPD_4IN2BC_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2BC_SendData(0xFF);
+        }
+    }
+
+    EPD_4IN2BC_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2BC_SendData(0xFF);
+        }
+    }
+
+    EPD_4IN2BC_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_4IN2BC_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UWORD Width, Height;
+    Width = (EPD_4IN2BC_WIDTH % 8 == 0)? (EPD_4IN2BC_WIDTH / 8 ): (EPD_4IN2BC_WIDTH / 8 + 1);
+    Height = EPD_4IN2BC_HEIGHT;
+
+    EPD_4IN2BC_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2BC_SendData(blackimage[i + j * Width]);
+        }
+    }
+
+    EPD_4IN2BC_SendCommand(0x13);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            EPD_4IN2BC_SendData(ryimage[i + j * Width]);
+        }
+    }
+
+    EPD_4IN2BC_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_4IN2BC_Sleep(void)
+{
+    EPD_4IN2BC_SendCommand(0x02); // POWER_OFF
+    EPD_4IN2BC_ReadBusy();
+    EPD_4IN2BC_SendCommand(0x07); // DEEP_SLEEP
+    EPD_4IN2BC_SendData(0XA5);
+}

+ 98 - 0
luat/packages/epaper/EPD_4in2bc.h

@@ -0,0 +1,98 @@
+/*****************************************************************************
+* | File      	:   EPD_4in2b.h
+* | Author      :   Waveshare team
+* | Function    :   4.2inch e-paper b&c
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_4IN2BC_Reset()
+*    EPD_SendCommand() => EPD_4IN2BC_SendCommand()
+*    EPD_SendData() => EPD_4IN2BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_4IN2BC_ReadBusy()
+*    EPD_Init() => EPD_4IN2BC_Init()
+*    EPD_Clear() => EPD_4IN2BC_Clear()
+*    EPD_Display() => EPD_4IN2BC_Display()
+*    EPD_Sleep() => EPD_4IN2BC_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_4IN2BC_H_
+#define __EPD_4IN2BC_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_4IN2BC_WIDTH       400
+#define EPD_4IN2BC_HEIGHT      300
+
+void EPD_4IN2BC_Init(void);
+void EPD_4IN2BC_Clear(void);
+void EPD_4IN2BC_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_4IN2BC_Sleep(void);
+
+#endif

+ 265 - 0
luat/packages/epaper/EPD_5in65f.c

@@ -0,0 +1,265 @@
+/*****************************************************************************
+* | File      	:   EPD_5in65f.c
+* | Author      :   Waveshare team
+* | Function    :   5.65inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-07-07
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_5in65f.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_5IN65F_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(1);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_5IN65F_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_5IN65F_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+
+static void EPD_5IN65F_BusyHigh(void)// If BUSYN=0 then waiting
+{
+    while(!(DEV_Digital_Read(EPD_BUSY_PIN)));
+}
+
+static void EPD_5IN65F_BusyLow(void)// If BUSYN=1 then waiting
+{
+    while(DEV_Digital_Read(EPD_BUSY_PIN));
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_5IN65F_Init(void)
+{
+	EPD_5IN65F_Reset();
+    EPD_5IN65F_BusyHigh();
+    EPD_5IN65F_SendCommand(0x00);
+    EPD_5IN65F_SendData(0xEF);
+    EPD_5IN65F_SendData(0x08);
+    EPD_5IN65F_SendCommand(0x01);
+    EPD_5IN65F_SendData(0x37);
+    EPD_5IN65F_SendData(0x00);
+    EPD_5IN65F_SendData(0x23);
+    EPD_5IN65F_SendData(0x23);
+    EPD_5IN65F_SendCommand(0x03);
+    EPD_5IN65F_SendData(0x00);
+    EPD_5IN65F_SendCommand(0x06);
+    EPD_5IN65F_SendData(0xC7);
+    EPD_5IN65F_SendData(0xC7);
+    EPD_5IN65F_SendData(0x1D);
+    EPD_5IN65F_SendCommand(0x30);
+    EPD_5IN65F_SendData(0x3C);
+    EPD_5IN65F_SendCommand(0x40);
+    EPD_5IN65F_SendData(0x00);
+    EPD_5IN65F_SendCommand(0x50);
+    EPD_5IN65F_SendData(0x37);
+    EPD_5IN65F_SendCommand(0x60);
+    EPD_5IN65F_SendData(0x22);
+    EPD_5IN65F_SendCommand(0x61);
+    EPD_5IN65F_SendData(0x02);
+    EPD_5IN65F_SendData(0x58);
+    EPD_5IN65F_SendData(0x01);
+    EPD_5IN65F_SendData(0xC0);
+    EPD_5IN65F_SendCommand(0xE3);
+    EPD_5IN65F_SendData(0xAA);
+	
+	DEV_Delay_ms(100);
+    EPD_5IN65F_SendCommand(0x50);
+    EPD_5IN65F_SendData(0x37);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_5IN65F_Clear(UBYTE color)
+{
+    EPD_5IN65F_SendCommand(0x61);//Set Resolution setting
+    EPD_5IN65F_SendData(0x02);
+    EPD_5IN65F_SendData(0x58);
+    EPD_5IN65F_SendData(0x01);
+    EPD_5IN65F_SendData(0xC0);
+    EPD_5IN65F_SendCommand(0x10);
+    for(int i=0; i<EPD_5IN65F_WIDTH/2; i++) {
+        for(int j=0; j<EPD_5IN65F_HEIGHT; j++)
+            EPD_5IN65F_SendData((color<<4)|color);
+    }
+    EPD_5IN65F_SendCommand(0x04);//0x04
+    EPD_5IN65F_BusyHigh();
+    EPD_5IN65F_SendCommand(0x12);//0x12
+    EPD_5IN65F_BusyHigh();
+    EPD_5IN65F_SendCommand(0x02);  //0x02
+    EPD_5IN65F_BusyLow();
+    DEV_Delay_ms(500);
+}
+
+/******************************************************************************
+function :	show 7 kind of color block
+parameter:
+******************************************************************************/
+void EPD_5IN65F_Show7Block(void)
+{
+    unsigned long i,j,k;
+    unsigned char const Color_seven[8] =
+	{EPD_5IN65F_BLACK,EPD_5IN65F_BLUE,EPD_5IN65F_GREEN,EPD_5IN65F_ORANGE,
+	EPD_5IN65F_RED,EPD_5IN65F_YELLOW,EPD_5IN65F_WHITE,EPD_5IN65F_WHITE};
+    EPD_5IN65F_SendCommand(0x61);//Set Resolution setting
+    EPD_5IN65F_SendData(0x02);
+    EPD_5IN65F_SendData(0x58);
+    EPD_5IN65F_SendData(0x01);
+    EPD_5IN65F_SendData(0xC0);
+    EPD_5IN65F_SendCommand(0x10);
+
+    for(i=0; i<224; i++) {
+        for(k = 0 ; k < 4; k ++) {
+            for(j = 0 ; j < 75; j ++) {
+                EPD_5IN65F_SendData((Color_seven[k]<<4) |Color_seven[k]);
+            }
+        }
+    }
+    for(i=0; i<224; i++) {
+        for(k = 4 ; k < 8; k ++) {
+            for(j = 0 ; j < 75; j ++) {
+                EPD_5IN65F_SendData((Color_seven[k]<<4) |Color_seven[k]);
+            }
+        }
+    }
+    EPD_5IN65F_SendCommand(0x04);//0x04
+    EPD_5IN65F_BusyHigh();
+    EPD_5IN65F_SendCommand(0x12);//0x12
+    EPD_5IN65F_BusyHigh();
+    EPD_5IN65F_SendCommand(0x02);  //0x02
+    EPD_5IN65F_BusyLow();
+	DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_5IN65F_Display(const UBYTE *image)
+{
+    unsigned long i,j;
+    EPD_5IN65F_SendCommand(0x61);//Set Resolution setting
+    EPD_5IN65F_SendData(0x02);
+    EPD_5IN65F_SendData(0x58);
+    EPD_5IN65F_SendData(0x01);
+    EPD_5IN65F_SendData(0xC0);
+    EPD_5IN65F_SendCommand(0x10);
+    for(i=0; i<EPD_5IN65F_HEIGHT; i++) {
+        for(j=0; j<EPD_5IN65F_WIDTH/2; j++)
+            EPD_5IN65F_SendData(image[j+((EPD_5IN65F_WIDTH/2)*i)]);
+    }
+    EPD_5IN65F_SendCommand(0x04);//0x04
+    EPD_5IN65F_BusyHigh();
+    EPD_5IN65F_SendCommand(0x12);//0x12
+    EPD_5IN65F_BusyHigh();
+    EPD_5IN65F_SendCommand(0x02);  //0x02
+    EPD_5IN65F_BusyLow();
+	DEV_Delay_ms(200);
+	
+}
+
+/******************************************************************************
+function :	Sends the part image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_5IN65F_Display_part(const UBYTE *image, UWORD xstart, UWORD ystart, 
+								UWORD image_width, UWORD image_heigh)
+{
+    unsigned long i,j;
+    EPD_5IN65F_SendCommand(0x61);//Set Resolution setting
+    EPD_5IN65F_SendData(0x02);
+    EPD_5IN65F_SendData(0x58);
+    EPD_5IN65F_SendData(0x01);
+    EPD_5IN65F_SendData(0xC0);
+    EPD_5IN65F_SendCommand(0x10);
+    for(i=0; i<EPD_5IN65F_HEIGHT; i++) {
+        for(j=0; j< EPD_5IN65F_WIDTH/2; j++) {
+						if(i<image_heigh+ystart && i>=ystart && j<(image_width+xstart)/2 && j>=xstart/2) {
+							EPD_5IN65F_SendData(image[(j-xstart/2) + (image_width/2*(i-ystart))]);
+						}
+						else {
+							EPD_5IN65F_SendData(0x11);
+						}
+				}
+    }
+    EPD_5IN65F_SendCommand(0x04);//0x04
+    EPD_5IN65F_BusyHigh();
+    EPD_5IN65F_SendCommand(0x12);//0x12
+    EPD_5IN65F_BusyHigh();
+    EPD_5IN65F_SendCommand(0x02);  //0x02
+    EPD_5IN65F_BusyLow();
+	DEV_Delay_ms(200);
+	
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_5IN65F_Sleep(void)
+{
+    DEV_Delay_ms(100);
+    EPD_5IN65F_SendCommand(0x07);
+    EPD_5IN65F_SendData(0xA5);
+    DEV_Delay_ms(100);
+	DEV_Digital_Write(EPD_RST_PIN, 0); // Reset
+}
+

+ 61 - 0
luat/packages/epaper/EPD_5in65f.h

@@ -0,0 +1,61 @@
+/*****************************************************************************
+* | File      	:   EPD_5in65f.h
+* | Author      :   Waveshare team
+* | Function    :   5.65inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-07-07
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_5IN65F_H__
+#define __EPD_5IN65F_H__
+
+#include "DEV_Config.h"
+
+/**********************************
+Color Index
+**********************************/
+#define EPD_5IN65F_BLACK   0x0	/// 000
+#define EPD_5IN65F_WHITE   0x1	///	001
+#define EPD_5IN65F_GREEN   0x2	///	010
+#define EPD_5IN65F_BLUE    0x3	///	011
+#define EPD_5IN65F_RED     0x4	///	100
+#define EPD_5IN65F_YELLOW  0x5	///	101
+#define EPD_5IN65F_ORANGE  0x6	///	110
+#define EPD_5IN65F_CLEAN   0x7	///	111   unavailable  Afterimage
+
+#define EPD_5IN65F_WIDTH       600
+#define EPD_5IN65F_HEIGHT      448
+
+void EPD_5IN65F_Clear(UBYTE color);
+void EPD_5IN65F_Show7Block(void);
+void EPD_5IN65F_Sleep(void);
+void EPD_5IN65F_Display(const UBYTE *image);
+void EPD_5IN65F_Init(void);
+void EPD_5IN65F_Display_part(const UBYTE *image, UWORD xstart, UWORD ystart, UWORD image_width, UWORD image_heigh);
+
+#endif
+
+
+

+ 270 - 0
luat/packages/epaper/EPD_5in83.c

@@ -0,0 +1,270 @@
+/*****************************************************************************
+* | File      	:   EPD_5in83.c
+* | Author      :   Waveshare team
+* | Function    :   5.83inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_5IN83_Reset()
+*    EPD_SendCommand() => EPD_5IN83_SendCommand()
+*    EPD_SendData() => EPD_5IN83_SendData()
+*    EPD_WaitUntilIdle() => EPD_5IN83_ReadBusy()
+*    EPD_SetFullReg() => EPD_5IN83_SetFullReg()
+*    EPD_SetPartReg() => EPD_5IN83_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_5IN83_TurnOnDisplay()
+*    EPD_Init() => EPD_5IN83_Init()
+*    EPD_Clear() => EPD_5IN83_Clear()
+*    EPD_Display() => EPD_5IN83_Display()
+*    EPD_Sleep() => EPD_5IN83_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_5in83.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_5IN83_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_5IN83_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_5IN83_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_5IN83_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_5IN83_TurnOnDisplay(void)
+{
+    EPD_5IN83_SendCommand(0x12); // DISPLAY_REFRESH
+    DEV_Delay_ms(100);
+    EPD_5IN83_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_5IN83_Init(void)
+{
+    EPD_5IN83_Reset();
+
+    EPD_5IN83_SendCommand(0x01); // POWER_SETTING
+    EPD_5IN83_SendData(0x37);
+    EPD_5IN83_SendData(0x00);
+
+    EPD_5IN83_SendCommand(0x00); // PANEL_SETTING
+    EPD_5IN83_SendData(0xCF);
+    EPD_5IN83_SendData(0x08);
+
+    EPD_5IN83_SendCommand(0x06); // BOOSTER_SOFT_START
+    EPD_5IN83_SendData(0xc7);
+    EPD_5IN83_SendData(0xcc);
+    EPD_5IN83_SendData(0x28);
+
+    EPD_5IN83_SendCommand(0x04); // POWER_ON
+    EPD_5IN83_ReadBusy();
+
+    EPD_5IN83_SendCommand(0x30); // PLL_CONTROL
+    EPD_5IN83_SendData(0x3c);
+
+    EPD_5IN83_SendCommand(0x41); // TEMPERATURE_CALIBRATION
+    EPD_5IN83_SendData(0x00);
+
+    EPD_5IN83_SendCommand(0x50); // VCOM_AND_DATA_INTERVAL_SETTING
+    EPD_5IN83_SendData(0x77);
+
+    EPD_5IN83_SendCommand(0x60); // TCON_SETTING
+    EPD_5IN83_SendData(0x22);
+
+    EPD_5IN83_SendCommand(0x61); // TCON_RESOLUTION
+    EPD_5IN83_SendData(EPD_5IN83_WIDTH >> 8); // source 600
+    EPD_5IN83_SendData(EPD_5IN83_WIDTH & 0xff);
+    EPD_5IN83_SendData(EPD_5IN83_HEIGHT >> 8); // gate 448
+    EPD_5IN83_SendData(EPD_5IN83_HEIGHT & 0xff);
+
+    EPD_5IN83_SendCommand(0x82); // VCM_DC_SETTING
+    EPD_5IN83_SendData(0x1E); // decide by LUT file
+
+    EPD_5IN83_SendCommand(0xe5); // FLASH MODE
+    EPD_5IN83_SendData(0x03);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_5IN83_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_5IN83_WIDTH % 8 == 0)? (EPD_5IN83_WIDTH / 8 ): (EPD_5IN83_WIDTH / 8 + 1);
+    Height = EPD_5IN83_HEIGHT;
+
+    EPD_5IN83_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            for(UBYTE k = 0; k < 4; k++) {
+                EPD_5IN83_SendData(0x33);
+            }
+        }
+    }
+		EPD_5IN83_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_5IN83_Display(UBYTE *Image)
+{
+    UBYTE Data_Black, Data;
+    UWORD Width, Height;
+    Width = (EPD_5IN83_WIDTH % 8 == 0)? (EPD_5IN83_WIDTH / 8 ): (EPD_5IN83_WIDTH / 8 + 1);
+    Height = EPD_5IN83_HEIGHT;
+
+    EPD_5IN83_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            Data_Black = ~Image[i + j * Width];
+            for(UBYTE k = 0; k < 8; k++) {
+                if(Data_Black & 0x80)
+                    Data = 0x00;
+                else
+                    Data = 0x03;
+                Data <<= 4;
+                Data_Black <<= 1;
+                k++;
+                if(Data_Black & 0x80)
+                    Data |= 0x00;
+                else
+                    Data |= 0x03;
+                Data_Black <<= 1;
+                EPD_5IN83_SendData(Data);
+            }
+        }
+    }
+    EPD_5IN83_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_5IN83_Sleep(void)
+{
+    EPD_5IN83_SendCommand(0x02); // POWER_OFF
+    EPD_5IN83_ReadBusy();
+    EPD_5IN83_SendCommand(0x07); // DEEP_SLEEP
+    EPD_5IN83_SendData(0XA5);
+}
+

+ 101 - 0
luat/packages/epaper/EPD_5in83.h

@@ -0,0 +1,101 @@
+/*****************************************************************************
+* | File      	:   EPD_5in83.h
+* | Author      :   Waveshare team
+* | Function    :   5.83inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_5IN83_Reset()
+*    EPD_SendCommand() => EPD_5IN83_SendCommand()
+*    EPD_SendData() => EPD_5IN83_SendData()
+*    EPD_WaitUntilIdle() => EPD_5IN83_ReadBusy()
+*    EPD_SetFullReg() => EPD_5IN83_SetFullReg()
+*    EPD_SetPartReg() => EPD_5IN83_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_5IN83_TurnOnDisplay()
+*    EPD_Init() => EPD_5IN83_Init()
+*    EPD_Clear() => EPD_5IN83_Clear()
+*    EPD_Display() => EPD_5IN83_Display()
+*    EPD_Sleep() => EPD_5IN83_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_5IN83_H_
+#define __EPD_5IN83_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_5IN83_WIDTH       600
+#define EPD_5IN83_HEIGHT      448
+
+void EPD_5IN83_Init(void);
+void EPD_5IN83_Clear(void);
+void EPD_5IN83_Display(UBYTE *Image);
+void EPD_5IN83_Sleep(void);
+
+#endif

+ 196 - 0
luat/packages/epaper/EPD_5in83_V2.c

@@ -0,0 +1,196 @@
+/*****************************************************************************
+* | File      	:   EPD_5in83_V2.c
+* | Author      :   Waveshare team
+* | Function    :   5.83inch e-paper V2
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-12-09
+* | Info        :
+* -----------------------------------------------------------------------------
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_5in83_V2.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_5in83_V2_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(3);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_5in83_V2_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_5in83_V2_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_5in83_V2_ReadBusy(void)
+{
+	Debug("e-Paper busy\r\n");
+	do {
+		EPD_5in83_V2_SendCommand(0x71);
+		DEV_Delay_ms(50);    
+	}
+	while(!DEV_Digital_Read(EPD_BUSY_PIN));   
+	Debug("e-Paper busy release\r\n");
+	DEV_Delay_ms(50);    
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_5in83_V2_TurnOnDisplay(void)
+{
+	EPD_5in83_V2_SendCommand(0x12);	//DISPLAY REFRESH 	
+	DEV_Delay_ms(100);					//!!!The delay here is necessary, 200uS at least!!!     
+	EPD_5in83_V2_ReadBusy();			//waiting for the electronic paper IC to release the idle signal
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_5in83_V2_Init(void)
+{
+    EPD_5in83_V2_Reset();
+
+	EPD_5in83_V2_SendCommand(0x01);			//POWER SETTING
+	EPD_5in83_V2_SendData (0x07);
+	EPD_5in83_V2_SendData (0x07);    //VGH=20V,VGL=-20V
+	EPD_5in83_V2_SendData (0x3f);		//VDH=15V
+	EPD_5in83_V2_SendData (0x3f);		//VDL=-15V
+
+	EPD_5in83_V2_SendCommand(0x04); //POWER ON
+	DEV_Delay_ms(100);  
+	EPD_5in83_V2_ReadBusy();        //waiting for the electronic paper IC to release the idle signal
+
+	EPD_5in83_V2_SendCommand(0X00);			//PANNEL SETTING
+	EPD_5in83_V2_SendData(0x1F);   //KW-3f   KWR-2F	BWROTP 0f	BWOTP 1f
+
+	EPD_5in83_V2_SendCommand(0x61);        	//tres			
+	EPD_5in83_V2_SendData (0x02);		//source 648
+	EPD_5in83_V2_SendData (0x88);
+	EPD_5in83_V2_SendData (0x01);		//gate 480
+	EPD_5in83_V2_SendData (0xE0);
+
+	EPD_5in83_V2_SendCommand(0X15);		
+	EPD_5in83_V2_SendData(0x00);		
+
+	EPD_5in83_V2_SendCommand(0X50);			//VCOM AND DATA INTERVAL SETTING
+	EPD_5in83_V2_SendData(0x10);
+	EPD_5in83_V2_SendData(0x07);
+
+	EPD_5in83_V2_SendCommand(0X60);			//TCON SETTING
+	EPD_5in83_V2_SendData(0x22);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_5in83_V2_Clear(void)
+{
+    UWORD Width, Height, i;
+    Width = (EPD_5in83_V2_WIDTH % 8 == 0)? (EPD_5in83_V2_WIDTH / 8 ): (EPD_5in83_V2_WIDTH / 8 + 1);
+    Height = EPD_5in83_V2_HEIGHT;
+
+	EPD_5in83_V2_SendCommand(0x10);
+	for(i=0; i<Width*Height; i++) {
+		EPD_5in83_V2_SendData(0x00);  
+	}
+	EPD_5in83_V2_SendCommand(0x13);
+	for(i=0; i<Width*Height; i++) {
+		EPD_5in83_V2_SendData(0x00);  
+	}
+	EPD_5in83_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_5in83_V2_Display(UBYTE *Image)
+{
+    UWORD Width, Height, i, j;
+    Width = (EPD_5in83_V2_WIDTH % 8 == 0)? (EPD_5in83_V2_WIDTH / 8 ): (EPD_5in83_V2_WIDTH / 8 + 1);
+    Height = EPD_5in83_V2_HEIGHT;
+
+	EPD_5in83_V2_SendCommand(0x10);
+	for(i=0;i<Height;i++) {
+		for(j=0; j<Width; j++) {
+			EPD_5in83_V2_SendData(0x00);  
+		}
+	}
+	EPD_5in83_V2_SendCommand(0x13);
+	for(i=0;i<Height;i++) {
+		for(j=0; j<Width; j++) {
+			EPD_5in83_V2_SendData(~Image[i*Width + j]);  
+		}
+	}
+    EPD_5in83_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_5in83_V2_Sleep(void)
+{
+	EPD_5in83_V2_SendCommand(0X02);  	//power off
+	EPD_5in83_V2_ReadBusy();			//waiting for the electronic paper IC to release the idle signal
+	EPD_5in83_V2_SendCommand(0X07);		//deep sleep
+	EPD_5in83_V2_SendData(0xA5);
+}
+

+ 44 - 0
luat/packages/epaper/EPD_5in83_V2.h

@@ -0,0 +1,44 @@
+/*****************************************************************************
+* | File      	:   EPD_5in83_V2.h
+* | Author      :   Waveshare team
+* | Function    :   5.83inch e-paper V2
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-12-09
+* | Info        :
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_5in83_V2_H_
+#define __EPD_5in83_V2_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_5in83_V2_WIDTH       648
+#define EPD_5in83_V2_HEIGHT      480
+
+void EPD_5in83_V2_Init(void);
+void EPD_5in83_V2_Clear(void);
+void EPD_5in83_V2_Display(UBYTE *Image);
+void EPD_5in83_V2_Sleep(void);
+
+#endif

+ 312 - 0
luat/packages/epaper/EPD_5in83b_V2.c

@@ -0,0 +1,312 @@
+/*****************************************************************************
+* | File      	:	EPD_5in83b_V2.c
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-07-04
+* | Info        :
+******************************************************************************
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files(the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_5in83b_V2.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_5IN83B_V2_Reset(void)
+{
+	DEV_Digital_Write(EPD_RST_PIN, 1);
+	DEV_Delay_ms(200);
+	DEV_Digital_Write(EPD_RST_PIN, 0);
+	DEV_Delay_ms(1);
+	DEV_Digital_Write(EPD_RST_PIN, 1);
+	DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_5IN83B_V2_SendCommand(UBYTE Reg)
+{
+	DEV_Digital_Write(EPD_DC_PIN, 0);
+	DEV_Digital_Write(EPD_CS_PIN, 0);
+	DEV_SPI_WriteByte(Reg);
+	DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_5IN83B_V2_SendData(UBYTE Data)
+{
+	DEV_Digital_Write(EPD_CS_PIN, 0);
+	DEV_Digital_Write(EPD_DC_PIN, 1);
+	DEV_SPI_WriteByte(Data);
+	DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_5IN83B_V2_WaitUntilIdle(void)
+{
+  Debug("e-Paper busy\r\n");
+	UBYTE busy;
+	do
+	{
+		EPD_5IN83B_V2_SendCommand(0x71);
+		busy = DEV_Digital_Read(EPD_BUSY_PIN);
+		busy =!(busy & 0x01);
+	}
+	while(busy);   
+	DEV_Delay_ms(200);     
+  Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_5IN83B_V2_TurnOnDisplay(void)
+{
+	EPD_5IN83B_V2_SendCommand(0x12);			//DISPLAY REFRESH 	
+	DEV_Delay_ms(100);	        //!!!The delay here is necessary, 200uS at least!!!     
+	EPD_5IN83B_V2_WaitUntilIdle();        //waiting for the electronic paper IC to release the idle signal
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+UBYTE EPD_5IN83B_V2_Init(void)
+{
+	EPD_5IN83B_V2_Reset();
+	EPD_5IN83B_V2_WaitUntilIdle();
+	EPD_5IN83B_V2_SendCommand(0x01);			//POWER SETTING
+	EPD_5IN83B_V2_SendData (0x07);
+	EPD_5IN83B_V2_SendData (0x07);    //VGH=20V,VGL=-20V
+	EPD_5IN83B_V2_SendData (0x3f);		//VDH=15V
+	EPD_5IN83B_V2_SendData (0x3f);		//VDL=-15V
+
+	EPD_5IN83B_V2_SendCommand(0x04); //POWER ON
+	DEV_Delay_ms(100);  
+	EPD_5IN83B_V2_WaitUntilIdle();        //waiting for the electronic paper IC to release the idle signal
+
+	EPD_5IN83B_V2_SendCommand(0X00);			//PANNEL SETTING
+	EPD_5IN83B_V2_SendData(0x0F);   //KW-3f   KWR-2F	BWROTP 0f	BWOTP 1f
+
+	EPD_5IN83B_V2_SendCommand(0x61);        	//tres			
+	EPD_5IN83B_V2_SendData (0x02);		//source 648
+	EPD_5IN83B_V2_SendData (0x88);
+	EPD_5IN83B_V2_SendData (0x01);		//gate 480
+	EPD_5IN83B_V2_SendData (0xe0);
+
+	EPD_5IN83B_V2_SendCommand(0X15);		
+	EPD_5IN83B_V2_SendData(0x00);		
+
+	EPD_5IN83B_V2_SendCommand(0X50);			//VCOM AND DATA INTERVAL SETTING
+	EPD_5IN83B_V2_SendData(0x11);
+	EPD_5IN83B_V2_SendData(0x07);
+
+	EPD_5IN83B_V2_SendCommand(0X60);			//TCON SETTING
+	EPD_5IN83B_V2_SendData(0x22);
+
+	return 0;
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_5IN83B_V2_Clear(void)
+{
+	UWORD Width, Height;
+	Width =(EPD_5IN83B_V2_WIDTH % 8 == 0)?(EPD_5IN83B_V2_WIDTH / 8 ):(EPD_5IN83B_V2_WIDTH / 8 + 1);
+	Height = EPD_5IN83B_V2_HEIGHT;
+	UWORD i;
+	EPD_5IN83B_V2_SendCommand(0x10);
+	for(i=0; i<Width*Height; i++) {
+		EPD_5IN83B_V2_SendData(0xff);
+
+	}
+	EPD_5IN83B_V2_SendCommand(0x13);
+	for(i=0; i<Width*Height; i++)	{
+		EPD_5IN83B_V2_SendData(0x00);
+
+	}
+	EPD_5IN83B_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_5IN83B_V2_Clear_C(UBYTE color)
+{
+	UWORD Width, Height;
+	Width =(EPD_5IN83B_V2_WIDTH % 8 == 0)?(EPD_5IN83B_V2_WIDTH / 8 ):(EPD_5IN83B_V2_WIDTH / 8 + 1);
+	Height = EPD_5IN83B_V2_HEIGHT;
+	UWORD i;
+	if(color == 0) {
+	EPD_5IN83B_V2_SendCommand(0x10);
+	for(i=0; i<Width*Height; i++) {
+		EPD_5IN83B_V2_SendData(0xff);
+
+	}
+	EPD_5IN83B_V2_SendCommand(0x13);
+	for(i=0; i<Width*Height; i++)	{
+		EPD_5IN83B_V2_SendData(0x00);
+
+	}
+}
+	else if(color == 1) {
+	EPD_5IN83B_V2_SendCommand(0x10);
+	for(i=0; i<Width*Height; i++) {
+		EPD_5IN83B_V2_SendData(0xff);
+
+	}
+	EPD_5IN83B_V2_SendCommand(0x13);
+	for(i=0; i<Width*Height; i++)	{
+		EPD_5IN83B_V2_SendData(0xff);
+
+	}
+}
+	else if(color == 2) {
+	EPD_5IN83B_V2_SendCommand(0x10);
+	for(i=0; i<Width*Height; i++) {
+		EPD_5IN83B_V2_SendData(0x00);
+
+	}
+	EPD_5IN83B_V2_SendCommand(0x13);
+	for(i=0; i<Width*Height; i++)	{
+		EPD_5IN83B_V2_SendData(0x00);
+
+	}
+}
+	EPD_5IN83B_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_5IN83B_V2_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+	UDOUBLE Width, Height;
+	Width =(EPD_5IN83B_V2_WIDTH % 8 == 0)?(EPD_5IN83B_V2_WIDTH / 8 ):(EPD_5IN83B_V2_WIDTH / 8 + 1);
+	Height = EPD_5IN83B_V2_HEIGHT;
+	//send black data
+	EPD_5IN83B_V2_SendCommand(0x10);
+	for (UDOUBLE j = 0; j < Height; j++) {
+		for (UDOUBLE i = 0; i < Width; i++) {
+			EPD_5IN83B_V2_SendData(blackimage[i + j * Width]);
+		}
+	}
+	//send red data
+	EPD_5IN83B_V2_SendCommand(0x13);
+	for (UDOUBLE j = 0; j < Height; j++) {
+		for (UDOUBLE i = 0; i < Width; i++) {
+			EPD_5IN83B_V2_SendData(~ryimage[i + j * Width]);
+		}
+	}
+	EPD_5IN83B_V2_TurnOnDisplay();
+}
+
+void EPD_5IN83B_V2_DisplayPicture(const UBYTE *blackimage,UBYTE Block)
+{
+	UDOUBLE Width, Height;
+	Width =(EPD_5IN83B_V2_WIDTH % 8 == 0)?(EPD_5IN83B_V2_WIDTH / 8 ):(EPD_5IN83B_V2_WIDTH / 8 + 1);
+	Height = EPD_5IN83B_V2_HEIGHT;
+
+	if(Block == 0){
+		EPD_5IN83B_V2_SendCommand(0x10);
+    for (UDOUBLE j = 0; j < Height/4; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_5IN83B_V2_SendData(blackimage[i + j * Width]);
+        }
+    }		
+	}else if(Block == 1){
+		for (UDOUBLE j = 0; j < Height/4; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_5IN83B_V2_SendData(blackimage[i + j * Width]);
+        }
+    }
+	}else if(Block == 2){
+		for (UDOUBLE j = 0; j < Height/4; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_5IN83B_V2_SendData(blackimage[i + j * Width]);
+        }
+    }
+	}else if(Block == 3){
+		for (UDOUBLE j = 0; j < Height/4; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_5IN83B_V2_SendData(blackimage[i + j * Width]);
+        }
+    }
+	}
+	else if(Block == 4){
+		EPD_5IN83B_V2_SendCommand(0x13);
+    for (UDOUBLE j = 0; j < Height/4; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_5IN83B_V2_SendData(~blackimage[i + j * Width]);
+        }
+    }
+	}else if(Block == 5){
+		for (UDOUBLE j = 0; j < Height/4; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_5IN83B_V2_SendData(~blackimage[i + j * Width]);
+        }
+    }
+	}else if(Block == 6){
+		for (UDOUBLE j = 0; j < Height/4; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_5IN83B_V2_SendData(~blackimage[i + j * Width]);
+        }
+    }
+	}else if(Block == 7){
+		for (UDOUBLE j = 0; j < Height/4; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_5IN83B_V2_SendData(~blackimage[i + j * Width]);
+        }
+    }
+		EPD_5IN83B_V2_TurnOnDisplay();
+	}
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_5IN83B_V2_Sleep(void)
+{
+	EPD_5IN83B_V2_SendCommand(0X02);  	//power off
+	EPD_5IN83B_V2_WaitUntilIdle();        //waiting for the electronic paper IC to release the idle signal
+	EPD_5IN83B_V2_SendCommand(0X07);  	//deep sleep
+	EPD_5IN83B_V2_SendData(0xA5);
+}

+ 47 - 0
luat/packages/epaper/EPD_5in83b_V2.h

@@ -0,0 +1,47 @@
+/*****************************************************************************
+* | File      	:	EPD_5in83b_V2.h
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-07-04
+* | Info        :   
+******************************************************************************
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _EPD_5IN83B_V2_h_
+#define _EPD_5IN83B_V2_h_
+
+#include "DEV_Config.h"
+
+
+// Display resolution
+#define EPD_5IN83B_V2_WIDTH       648
+#define EPD_5IN83B_V2_HEIGHT      480
+
+UBYTE EPD_5IN83B_V2_Init(void);
+void EPD_5IN83B_V2_Clear(void);
+void EPD_5IN83B_V2_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_5IN83B_V2_Sleep(void);
+void EPD_5IN83B_V2_DisplayPicture(const UBYTE *blackimage,UBYTE Block);
+void EPD_5IN83B_V2_Clear_C(UBYTE color);	
+#endif

+ 337 - 0
luat/packages/epaper/EPD_5in83bc.c

@@ -0,0 +1,337 @@
+/*****************************************************************************
+* | File      	:   EPD_5IN83BC.c
+* | Author      :   Waveshare team
+* | Function    :   5.83inch e-paper b&c
+* | Info        :
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_5IN83BC_Reset()
+*    EPD_SendCommand() => EPD_5IN83BC_SendCommand()
+*    EPD_SendData() => EPD_5IN83BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_5IN83BC_ReadBusy()
+*    EPD_Init() => EPD_5IN83BC_Init()
+*    EPD_Clear() => EPD_5IN83BC_Clear()
+*    EPD_Display() => EPD_5IN83BC_Display()
+*    EPD_Sleep() => EPD_5IN83BC_Sleep()
+* 2.Remove:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define IMAGE_PROCESS                               0x13
+*   #define LUT_FOR_VCOM                                0x20
+*   #define LUT_BLUE                                    0x21
+*   #define LUT_WHITE                                   0x22
+*   #define LUT_GRAY_1                                  0x23
+*   #define LUT_GRAY_2                                  0x24
+*   #define LUT_RED_0                                   0x25
+*   #define LUT_RED_1                                   0x26
+*   #define LUT_RED_2                                   0x27
+*   #define LUT_RED_3                                   0x28
+*   #define LUT_XON                                     0x29
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_CALIBRATION                     0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SPI_FLASH_CONTROL                           0x65
+*   #define REVISION                                    0x70
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASUREMENT_VCOM                       0x80
+*   #define READ_VCOM_VALUE                             0x81
+*   #define VCM_DC_SETTING                              0x82
+* 3.add:
+*   EPD_5IN83BC_DisplayHalfScreen()
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_5in83bc.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_5IN83BC_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_5IN83BC_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_5IN83BC_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_5IN83BC_ReadBusy(void)
+{
+    UBYTE busy;
+    Debug("e-Paper busy\r\n");
+    do {
+        EPD_5IN83BC_SendCommand(0x71);
+        busy = DEV_Digital_Read(EPD_BUSY_PIN);
+        busy =!(busy & 0x01);
+    } while(busy);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_5IN83BC_TurnOnDisplay(void)
+{
+    EPD_5IN83BC_SendCommand(0x04); // POWER ON
+    EPD_5IN83BC_ReadBusy();
+    EPD_5IN83BC_SendCommand(0x12); // display refresh
+    DEV_Delay_ms(100);
+    EPD_5IN83BC_ReadBusy();
+
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_5IN83BC_Init(void)
+{
+    EPD_5IN83BC_Reset();
+
+    EPD_5IN83BC_SendCommand(0x01); // POWER_SETTING
+    EPD_5IN83BC_SendData(0x37);
+    EPD_5IN83BC_SendData(0x00);
+
+    EPD_5IN83BC_SendCommand(0x00); // PANEL_SETTING
+    EPD_5IN83BC_SendData(0xCF);
+    EPD_5IN83BC_SendData(0x08);
+
+    EPD_5IN83BC_SendCommand(0x30); // PLL_CONTROL
+    EPD_5IN83BC_SendData(0x3A); //PLL:  0-15:0x3C, 15+:0x3A
+
+    EPD_5IN83BC_SendCommand(0x82); // VCM_DC_SETTING
+    EPD_5IN83BC_SendData(0x28); //all temperature  range
+
+    EPD_5IN83BC_SendCommand(0x06); // BOOSTER_SOFT_START
+    EPD_5IN83BC_SendData (0xc7);
+    EPD_5IN83BC_SendData (0xcc);
+    EPD_5IN83BC_SendData (0x15);
+
+    EPD_5IN83BC_SendCommand(0x50); // VCOM AND DATA INTERVAL SETTING
+    EPD_5IN83BC_SendData(0x77);
+
+    EPD_5IN83BC_SendCommand(0x60); // TCON_SETTING
+    EPD_5IN83BC_SendData(0x22);
+
+    EPD_5IN83BC_SendCommand(0x65); // FLASH CONTROL
+    EPD_5IN83BC_SendData(0x00);
+
+    EPD_5IN83BC_SendCommand(0x61); // TCON_RESOLUTION
+    EPD_5IN83BC_SendData (0x02); // source 600
+    EPD_5IN83BC_SendData (0x58);
+    EPD_5IN83BC_SendData (0x01); // gate 448
+    EPD_5IN83BC_SendData (0xc0);
+
+    EPD_5IN83BC_SendCommand(0xe5); // FLASH MODE
+    EPD_5IN83BC_SendData(0x03);
+
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_5IN83BC_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_5IN83BC_WIDTH % 8 == 0)? (EPD_5IN83BC_WIDTH / 8): (EPD_5IN83BC_WIDTH / 8 + 1);
+    Height = EPD_5IN83BC_HEIGHT;
+
+    EPD_5IN83BC_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            for(UBYTE k = 0; k < 4; k++) {
+                EPD_5IN83BC_SendData(0x33);
+            }
+        }
+    }
+
+    EPD_5IN83BC_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_5IN83BC_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UBYTE Data_Black, Data_RY, Data;
+    UDOUBLE i, j, Width, Height;
+    Width = (EPD_5IN83BC_WIDTH % 8 == 0)? (EPD_5IN83BC_WIDTH / 8 ): (EPD_5IN83BC_WIDTH / 8 + 1);
+    Height = EPD_5IN83BC_HEIGHT;
+
+    EPD_5IN83BC_SendCommand(0x10);
+    for (j = 0; j < Height; j++) {
+        for (i = 0; i < Width; i++) {
+            Data_Black = blackimage[i + j * Width];
+            Data_RY = ryimage[i + j * Width]; // red or yellow
+            for(UBYTE k = 0; k < 8; k++) {
+                if ((Data_RY & 0x80) == 0x00) {
+                    Data = 0x04;                //red
+                } else if ((Data_Black & 0x80) == 0x00) {
+                    Data = 0x00;               //black
+                } else {
+                    Data = 0x03;                //white
+                }
+                Data = (Data << 4) & 0xFF;
+                Data_Black = (Data_Black << 1) & 0xFF;
+                Data_RY = (Data_RY << 1) & 0xFF;
+                k += 1;
+
+                if((Data_RY & 0x80) == 0x00) {
+                    Data |= 0x04;              //red
+                } else if ((Data_Black & 0x80) == 0x00) {
+                    Data |= 0x00;              //black
+                } else {
+                    Data |= 0x03;              //white
+                }
+                Data_Black = (Data_Black << 1) & 0xFF;
+                Data_RY = (Data_RY << 1) & 0xFF;
+                EPD_5IN83BC_SendData(Data);
+            }
+        }
+    }
+
+    EPD_5IN83BC_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_5IN83BC_DisplayHalfScreen(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UBYTE Data_Black, Data_RY, Data;
+    UDOUBLE i, j, Width, Height;
+    Width = (EPD_5IN83BC_WIDTH % 8 == 0)? (EPD_5IN83BC_WIDTH / 8 ): (EPD_5IN83BC_WIDTH / 8 + 1);
+    Height = EPD_5IN83BC_HEIGHT;
+
+    EPD_5IN83BC_SendCommand(0x10);
+    for (j = 0; j < Height / 2; j++) {
+        for (i = 0; i < Width; i++) {
+            Data_Black = blackimage[i + j * Width];
+            Data_RY = ryimage[i + j * Width]; // red or yellow
+            for(UBYTE k = 0; k < 8; k++) {
+                if ((Data_RY & 0x80) == 0x00) {
+                    Data = 0x04;                //red
+                } else if ((Data_Black & 0x80) == 0x00) {
+                    Data = 0x00;               //black
+                } else {
+                    Data = 0x03;                //white
+                }
+                Data = (Data << 4) & 0xFF;
+                Data_Black = (Data_Black << 1) & 0xFF;
+                Data_RY = (Data_RY << 1) & 0xFF;
+                k += 1;
+
+                if((Data_RY & 0x80) == 0x00) {
+                    Data |= 0x04;              //red
+                } else if ((Data_Black & 0x80) == 0x00) {
+                    Data |= 0x00;              //black
+                } else {
+                    Data |= 0x03;              //white
+                }
+                Data_Black = (Data_Black << 1) & 0xFF;
+                Data_RY = (Data_RY << 1) & 0xFF;
+                EPD_5IN83BC_SendData(Data);
+            }
+        }
+    }
+		
+		for (j = 0; j < Height / 2; j++) {
+        for (i = 0; i < Width; i++) {
+            for(UBYTE k = 0; k < 4; k++) {
+                EPD_5IN83BC_SendData(0x33);
+            }
+        }
+    }
+
+    EPD_5IN83BC_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_5IN83BC_Sleep(void)
+{
+    EPD_5IN83BC_SendCommand(0x02); // POWER_OFF
+    EPD_5IN83BC_ReadBusy();
+    EPD_5IN83BC_SendCommand(0x07); // DEEP_SLEEP
+    EPD_5IN83BC_SendData(0XA5);
+}

+ 100 - 0
luat/packages/epaper/EPD_5in83bc.h

@@ -0,0 +1,100 @@
+/*****************************************************************************
+* | File      	:   EPD_5IN83BC.h
+* | Author      :   Waveshare team
+* | Function    :   5.83inch e-paper b&c
+* | Info        :
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_5IN83BC_Reset()
+*    EPD_SendCommand() => EPD_5IN83BC_SendCommand()
+*    EPD_SendData() => EPD_5IN83BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_5IN83BC_ReadBusy()
+*    EPD_Init() => EPD_5IN83BC_Init()
+*    EPD_Clear() => EPD_5IN83BC_Clear()
+*    EPD_Display() => EPD_5IN83BC_Display()
+*    EPD_Sleep() => EPD_5IN83BC_Sleep()
+* 2.Remove:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define IMAGE_PROCESS                               0x13
+*   #define LUT_FOR_VCOM                                0x20
+*   #define LUT_BLUE                                    0x21
+*   #define LUT_WHITE                                   0x22
+*   #define LUT_GRAY_1                                  0x23
+*   #define LUT_GRAY_2                                  0x24
+*   #define LUT_RED_0                                   0x25
+*   #define LUT_RED_1                                   0x26
+*   #define LUT_RED_2                                   0x27
+*   #define LUT_RED_3                                   0x28
+*   #define LUT_XON                                     0x29
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_CALIBRATION                     0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SPI_FLASH_CONTROL                           0x65
+*   #define REVISION                                    0x70
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASUREMENT_VCOM                       0x80
+*   #define READ_VCOM_VALUE                             0x81
+*   #define VCM_DC_SETTING                              0x82
+* 3.add:
+*   EPD_5IN83BC_DisplayHalfScreen()
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_5IN83BC_H_
+#define __EPD_5IN83BC_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_5IN83BC_WIDTH       600
+#define EPD_5IN83BC_HEIGHT      448
+
+void EPD_5IN83BC_Init(void);
+void EPD_5IN83BC_Clear(void);
+void EPD_5IN83BC_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_5IN83BC_DisplayHalfScreen(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_5IN83BC_Sleep(void);
+
+#endif

+ 271 - 0
luat/packages/epaper/EPD_7in5.c

@@ -0,0 +1,271 @@
+/*****************************************************************************
+* | File      	:   EPD_7IN5.c
+* | Author      :   Waveshare team
+* | Function    :   7.5inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_7IN5_Reset()
+*    EPD_SendCommand() => EPD_7IN5_SendCommand()
+*    EPD_SendData() => EPD_7IN5_SendData()
+*    EPD_WaitUntilIdle() => EPD_7IN5_ReadBusy()
+*    EPD_SetFullReg() => EPD_7IN5_SetFullReg()
+*    EPD_SetPartReg() => EPD_7IN5_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_7IN5_TurnOnDisplay()
+*    EPD_Init() => EPD_7IN5_Init()
+*    EPD_Clear() => EPD_7IN5_Clear()
+*    EPD_Display() => EPD_7IN5_Display()
+*    EPD_Sleep() => EPD_7IN5_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_7in5.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_7IN5_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_7IN5_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_7IN5_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_7IN5_ReadBusy(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN) == 0) {      //LOW: idle, HIGH: busy
+        DEV_Delay_ms(100);
+    }
+    Debug("e-Paper busy release\r\n");
+}
+
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_7IN5_TurnOnDisplay(void)
+{
+    EPD_7IN5_SendCommand(0x12); // DISPLAY_REFRESH
+    DEV_Delay_ms(100);
+    EPD_7IN5_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_7IN5_Init(void)
+{
+    EPD_7IN5_Reset();
+
+		EPD_7IN5_SendCommand(0x01); // POWER_SETTING
+    EPD_7IN5_SendData(0x37);
+    EPD_7IN5_SendData(0x00);
+
+    EPD_7IN5_SendCommand(0x00); // PANEL_SETTING
+    EPD_7IN5_SendData(0xCF);
+    EPD_7IN5_SendData(0x08);
+
+    EPD_7IN5_SendCommand(0x06); // BOOSTER_SOFT_START
+    EPD_7IN5_SendData(0xc7);
+    EPD_7IN5_SendData(0xcc);
+    EPD_7IN5_SendData(0x28);
+
+    EPD_7IN5_SendCommand(0x04); // POWER_ON
+    EPD_7IN5_ReadBusy();
+
+    EPD_7IN5_SendCommand(0x30); // PLL_CONTROL
+    EPD_7IN5_SendData(0x3c);
+
+    EPD_7IN5_SendCommand(0x41); // TEMPERATURE_CALIBRATION
+    EPD_7IN5_SendData(0x00);
+
+    EPD_7IN5_SendCommand(0x50); // VCOM_AND_DATA_INTERVAL_SETTING
+    EPD_7IN5_SendData(0x77);
+
+    EPD_7IN5_SendCommand(0x60); // TCON_SETTING
+    EPD_7IN5_SendData(0x22);
+
+    EPD_7IN5_SendCommand(0x61); // TCON_RESOLUTION
+    EPD_7IN5_SendData(EPD_7IN5_WIDTH >> 8); // source 640
+    EPD_7IN5_SendData(EPD_7IN5_WIDTH & 0xff);
+    EPD_7IN5_SendData(EPD_7IN5_HEIGHT >> 8); // gate 384
+    EPD_7IN5_SendData(EPD_7IN5_HEIGHT & 0xff);
+
+    EPD_7IN5_SendCommand(0x82); // VCM_DC_SETTING
+    EPD_7IN5_SendData(0x1E); // decide by LUT file
+
+    EPD_7IN5_SendCommand(0xe5); // FLASH MODE
+    EPD_7IN5_SendData(0x03);
+
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_7IN5_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_7IN5_WIDTH % 8 == 0)? (EPD_7IN5_WIDTH / 8 ): (EPD_7IN5_WIDTH / 8 + 1);
+    Height = EPD_7IN5_HEIGHT;
+
+    EPD_7IN5_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            for(UBYTE k = 0; k < 4; k++) {
+                EPD_7IN5_SendData(0x33);
+            }
+        }
+    }
+    EPD_7IN5_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_7IN5_Display(UBYTE *Image)
+{
+    UBYTE Data_Black, Data;
+    UWORD Width, Height;
+    Width = (EPD_7IN5_WIDTH % 8 == 0)? (EPD_7IN5_WIDTH / 8 ): (EPD_7IN5_WIDTH / 8 + 1);
+    Height = EPD_7IN5_HEIGHT;
+
+    EPD_7IN5_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            Data_Black = ~Image[i + j * Width];
+            for(UBYTE k = 0; k < 8; k++) {
+                if(Data_Black & 0x80)
+                    Data = 0x00;
+                else
+                    Data = 0x03;
+                Data <<= 4;
+                Data_Black <<= 1;
+                k++;
+                if(Data_Black & 0x80)
+                    Data |= 0x00;
+                else
+                    Data |= 0x03;
+                Data_Black <<= 1;
+                EPD_7IN5_SendData(Data);
+            }
+        }
+    }
+    EPD_7IN5_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_7IN5_Sleep(void)
+{
+    EPD_7IN5_SendCommand(0x02); // POWER_OFF
+    EPD_7IN5_ReadBusy();
+    EPD_7IN5_SendCommand(0x07); // DEEP_SLEEP
+    EPD_7IN5_SendData(0XA5);;
+}

+ 101 - 0
luat/packages/epaper/EPD_7in5.h

@@ -0,0 +1,101 @@
+/*****************************************************************************
+* | File      	:   EPD_7IN5.h
+* | Author      :   Waveshare team
+* | Function    :   7.5inch e-paper
+* | Info        :
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_7IN5_Reset()
+*    EPD_SendCommand() => EPD_7IN5_SendCommand()
+*    EPD_SendData() => EPD_7IN5_SendData()
+*    EPD_WaitUntilIdle() => EPD_7IN5_ReadBusy()
+*    EPD_SetFullReg() => EPD_7IN5_SetFullReg()
+*    EPD_SetPartReg() => EPD_7IN5_SetPartReg()
+*    EPD_TurnOnDisplay() => EPD_7IN5_TurnOnDisplay()
+*    EPD_Init() => EPD_7IN5_Init()
+*    EPD_Clear() => EPD_7IN5_Clear()
+*    EPD_Display() => EPD_7IN5_Display()
+*    EPD_Sleep() => EPD_7IN5_Sleep()
+* 2.remove commands define:
+*    #define PANEL_SETTING                               0x00
+*    #define POWER_SETTING                               0x01
+*    #define POWER_OFF                                   0x02
+*    #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*    #define POWER_ON                                    0x04
+*    #define POWER_ON_MEASURE                            0x05
+*    #define BOOSTER_SOFT_START                          0x06
+*    #define DEEP_SLEEP                                  0x07
+*    #define DATA_START_TRANSMISSION_1                   0x10
+*    #define DATA_STOP                                   0x11
+*    #define DISPLAY_REFRESH                             0x12
+*    #define DATA_START_TRANSMISSION_2                   0x13
+*    #define VCOM_LUT                                    0x20
+*    #define W2W_LUT                                     0x21
+*    #define B2W_LUT                                     0x22
+*    #define W2B_LUT                                     0x23
+*    #define B2B_LUT                                     0x24
+*    #define PLL_CONTROL                                 0x30
+*    #define TEMPERATURE_SENSOR_CALIBRATION              0x40
+*    #define TEMPERATURE_SENSOR_SELECTION                0x41
+*    #define TEMPERATURE_SENSOR_WRITE                    0x42
+*    #define TEMPERATURE_SENSOR_READ                     0x43
+*    #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*    #define LOW_POWER_DETECTION                         0x51
+*    #define TCON_SETTING                                0x60
+*    #define RESOLUTION_SETTING                          0x61
+*    #define GET_STATUS                                  0x71
+*    #define AUTO_MEASURE_VCOM                           0x80
+*    #define READ_VCOM_VALUE                             0x81
+*    #define VCM_DC_SETTING                              0x82
+*    #define PARTIAL_WINDOW                              0x90
+*    #define PARTIAL_IN                                  0x91
+*    #define PARTIAL_OUT                                 0x92
+*    #define PROGRAM_MODE                                0xA0
+*    #define ACTIVE_PROGRAM                              0xA1
+*    #define READ_OTP_DATA                               0xA2
+*    #define POWER_SAVING                                0xE3
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_7IN5_H_
+#define __EPD_7IN5_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_7IN5_WIDTH       640
+#define EPD_7IN5_HEIGHT      384
+
+void EPD_7IN5_Init(void);
+void EPD_7IN5_Clear(void);
+void EPD_7IN5_Display(UBYTE *Image);
+void EPD_7IN5_Sleep(void);
+
+#endif

+ 292 - 0
luat/packages/epaper/EPD_7in5_HD.c

@@ -0,0 +1,292 @@
+/*****************************************************************************
+* | File      	:	EPD_7in5_HD.c
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-04-25
+* | Info        :
+*****************************************************************************
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files(the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_7in5_HD.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_7IN5_HD_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function : send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_7IN5_HD_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_7IN5_HD_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_7IN5_HD_WaitUntilIdle(void)
+{
+    Debug("e-Paper busy\r\n");
+    do{
+        DEV_Delay_ms(10);
+    }while(DEV_Digital_Read(EPD_BUSY_PIN) == 1);   
+    DEV_Delay_ms(200);      
+    Debug("e-Paper busy release\r\n");
+    
+}
+
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_7IN5_HD_Init(void)
+{
+    EPD_7IN5_HD_Reset();
+    
+    EPD_7IN5_HD_WaitUntilIdle();
+    EPD_7IN5_HD_SendCommand(0x12);  //SWRESET
+    EPD_7IN5_HD_WaitUntilIdle();
+    
+    EPD_7IN5_HD_SendCommand(0x46);  // Auto Write Red RAM
+    EPD_7IN5_HD_SendData(0xf7);
+    EPD_7IN5_HD_WaitUntilIdle();
+    EPD_7IN5_HD_SendCommand(0x47);  // Auto Write  B/W RAM
+    EPD_7IN5_HD_SendData(0xf7);
+    EPD_7IN5_HD_WaitUntilIdle();
+
+
+    EPD_7IN5_HD_SendCommand(0x0C);  // Soft start setting
+    EPD_7IN5_HD_SendData(0xAE);
+    EPD_7IN5_HD_SendData(0xC7);
+    EPD_7IN5_HD_SendData(0xC3);
+    EPD_7IN5_HD_SendData(0xC0);
+    EPD_7IN5_HD_SendData(0x40); 
+
+
+    EPD_7IN5_HD_SendCommand(0x01);  // Set MUX as 527
+    EPD_7IN5_HD_SendData(0xAF);
+    EPD_7IN5_HD_SendData(0x02);
+    EPD_7IN5_HD_SendData(0x01);//0x01
+
+
+    EPD_7IN5_HD_SendCommand(0x11);  // Data entry mode      
+    EPD_7IN5_HD_SendData(0x01);
+
+    EPD_7IN5_HD_SendCommand(0x44); 
+    EPD_7IN5_HD_SendData(0x00); // RAM x address start at 0
+    EPD_7IN5_HD_SendData(0x00); 
+    EPD_7IN5_HD_SendData(0x6F); 
+    EPD_7IN5_HD_SendData(0x03); 
+    EPD_7IN5_HD_SendCommand(0x45); 
+    EPD_7IN5_HD_SendData(0xAF); 
+    EPD_7IN5_HD_SendData(0x02);
+    EPD_7IN5_HD_SendData(0x00); 
+    EPD_7IN5_HD_SendData(0x00);
+
+
+    EPD_7IN5_HD_SendCommand(0x3C); // VBD
+    EPD_7IN5_HD_SendData(0x05); // LUT1, for white
+
+    EPD_7IN5_HD_SendCommand(0x18);
+    EPD_7IN5_HD_SendData(0X80);
+
+
+    EPD_7IN5_HD_SendCommand(0x22);
+    EPD_7IN5_HD_SendData(0XB1); //Load Temperature and waveform setting.
+    EPD_7IN5_HD_SendCommand(0x20);
+    EPD_7IN5_HD_WaitUntilIdle();
+    
+    EPD_7IN5_HD_SendCommand(0x4E); // set RAM x address count to 0;
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendCommand(0x4F); 
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendData(0x00);
+    // return 0;
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_7IN5_HD_Clear(void)
+{
+    UDOUBLE Width, Height;
+    Width =(EPD_7IN5_HD_WIDTH % 8 == 0)?(EPD_7IN5_HD_WIDTH / 8 ):(EPD_7IN5_HD_WIDTH / 8 + 1);
+    Height = EPD_7IN5_HD_HEIGHT;
+    
+    EPD_7IN5_HD_SendCommand(0x4F); 
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendCommand(0x24);
+    UDOUBLE i;
+    for(i=0; i<58080; i++) {
+        EPD_7IN5_HD_SendData(0xff);
+    }
+ 
+    EPD_7IN5_HD_SendCommand(0x26);
+    for(i=0; i<Height*Width; i++){
+        EPD_7IN5_HD_SendData(0xff);
+    }
+    EPD_7IN5_HD_SendCommand(0x22);
+    EPD_7IN5_HD_SendData(0xF7);//Load LUT from MCU(0x32)
+    EPD_7IN5_HD_SendCommand(0x20);
+    DEV_Delay_ms(10);
+    EPD_7IN5_HD_WaitUntilIdle();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_7IN5_HD_Display(const UBYTE *blackimage)
+{
+    UDOUBLE Width, Height;
+    Width =(EPD_7IN5_HD_WIDTH % 8 == 0)?(EPD_7IN5_HD_WIDTH / 8 ):(EPD_7IN5_HD_WIDTH / 8 + 1);
+    Height = EPD_7IN5_HD_HEIGHT;
+    
+    EPD_7IN5_HD_SendCommand(0x4F); 
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendCommand(0x24);
+
+    UDOUBLE i;
+    for (UDOUBLE j = 0; j < Height; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5_HD_SendData(blackimage[i + j * Width]);
+        }
+    }
+    
+    EPD_7IN5_HD_SendCommand(0x26);
+    for(i=0; i<Height*Width; i++)	{
+        EPD_7IN5_HD_SendData(0xff);
+    }
+    EPD_7IN5_HD_SendCommand(0x22);
+    EPD_7IN5_HD_SendData(0xF7);//Load LUT from MCU(0x32)
+    EPD_7IN5_HD_SendCommand(0x20);
+    DEV_Delay_ms(10);
+    EPD_7IN5_HD_WaitUntilIdle();
+}
+void EPD_7IN5_HD_WritePicture(const UBYTE *blackimage, UBYTE Block)
+{
+	UDOUBLE Width, Height;
+  Width =(EPD_7IN5_HD_WIDTH % 8 == 0)?(EPD_7IN5_HD_WIDTH / 8 ):(EPD_7IN5_HD_WIDTH / 8 + 1);
+  Height = EPD_7IN5_HD_HEIGHT;
+	if(Block == 0){
+	  EPD_7IN5_HD_SendCommand(0x4F); 
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendCommand(0x24);
+    for (UDOUBLE j = 0; j < Height/2; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5_HD_SendData(blackimage[i + j * Width]);
+        }
+    }
+	}else if(Block == 1){
+		for (UDOUBLE j = 0; j < Height/2; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5_HD_SendData(blackimage[i + j * Width]);
+        }
+    }
+		EPD_7IN5_HD_SendCommand(0x22);
+    EPD_7IN5_HD_SendData(0xF7);//Load LUT from MCU(0x32)
+    EPD_7IN5_HD_SendCommand(0x20);
+    DEV_Delay_ms(10);
+    EPD_7IN5_HD_WaitUntilIdle();
+	}
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:	image_width and start_X :Must be a multiple of 8
+******************************************************************************/
+void EPD_7IN5_HD_DisplayImage(const UBYTE *blackimage,UDOUBLE start_X, UDOUBLE start_Y, UDOUBLE image_width, UDOUBLE image_high)
+{
+    UDOUBLE Width, Height;
+    Width =(EPD_7IN5_HD_WIDTH % 8 == 0)?(EPD_7IN5_HD_WIDTH / 8 ):(EPD_7IN5_HD_WIDTH / 8 + 1);
+    Height = EPD_7IN5_HD_HEIGHT;
+		
+	  EPD_7IN5_HD_SendCommand(0x4F); 
+    EPD_7IN5_HD_SendData(0x00);
+    EPD_7IN5_HD_SendData(0x00);
+		//send black data
+	
+		
+    EPD_7IN5_HD_SendCommand(0x24);
+    for (UDOUBLE j = 0; j < Height; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+						if((i>=start_X/8) && (i<(start_X+image_width)/8) && (j>=start_Y) && (j<(start_Y+image_high))){
+							EPD_7IN5_HD_SendData(~blackimage[i-start_X/8 + (j - start_Y) * image_width/8]);
+						}else{
+							EPD_7IN5_HD_SendData(0xff);
+						}
+						
+        }
+    }
+		EPD_7IN5_HD_SendCommand(0x22);
+    EPD_7IN5_HD_SendData(0xF7);//Load LUT from MCU(0x32)
+    EPD_7IN5_HD_SendCommand(0x20);
+    DEV_Delay_ms(10);
+    EPD_7IN5_HD_WaitUntilIdle();
+}
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_7IN5_HD_Sleep(void)
+{
+    EPD_7IN5_HD_SendCommand(0x10);
+    EPD_7IN5_HD_SendData(0x01);
+}

+ 47 - 0
luat/packages/epaper/EPD_7in5_HD.h

@@ -0,0 +1,47 @@
+/*****************************************************************************
+* | File      	:	EPD_7in5_HD.h
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V1.0
+* | Date        :   2020-04-25
+* | Info        :   
+*****************************************************************************
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _EPD_7IN5_HD_H_
+#define _EPD_7IN5_HD_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_7IN5_HD_WIDTH       880
+#define EPD_7IN5_HD_HEIGHT      528
+
+void EPD_7IN5_HD_Init(void);
+void EPD_7IN5_HD_Clear(void);
+void EPD_7IN5_HD_ClearBlack(void);
+void EPD_7IN5_HD_Display(const UBYTE *blackimage);
+void EPD_7IN5_HD_Sleep(void);
+void EPD_7IN5_HD_WritePicture(const UBYTE *blackimage, UBYTE Block);
+void EPD_7IN5_HD_DisplayImage(const UBYTE *blackimage,UDOUBLE start_X, UDOUBLE start_Y, UDOUBLE image_width, UDOUBLE image_high);
+#endif

+ 230 - 0
luat/packages/epaper/EPD_7in5_V2.c

@@ -0,0 +1,230 @@
+/*****************************************************************************
+* | File      	:	EPD_7in5.c
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V2.0
+* | Date        :   2018-11-09
+* | Info        :
+*****************************************************************************
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files(the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_7in5_V2.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+static void EPD_WaitUntilIdle(void)
+{
+    Debug("e-Paper busy\r\n");
+    unsigned char busy;
+	do{
+		EPD_SendCommand(0x71);
+		busy = DEV_Digital_Read(EPD_BUSY_PIN);
+		busy =!(busy & 0x01);        
+	}while(busy);   
+	DEV_Delay_ms(200);      
+    Debug("e-Paper busy release\r\n");
+		
+}
+
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_7IN5_V2_TurnOnDisplay(void)
+{
+    EPD_SendCommand(0x12);			//DISPLAY REFRESH
+    DEV_Delay_ms(100);	        //!!!The delay here is necessary, 200uS at least!!!
+    EPD_WaitUntilIdle();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+UBYTE EPD_7IN5_V2_Init(void)
+{
+    EPD_Reset();
+
+    EPD_SendCommand(0x01);			//POWER SETTING
+    EPD_SendData(0x07);
+    EPD_SendData(0x07);    //VGH=20V,VGL=-20V
+    EPD_SendData(0x3f);		//VDH=15V
+    EPD_SendData(0x3f);		//VDL=-15V
+
+    EPD_SendCommand(0x04); //POWER ON
+    DEV_Delay_ms(100);
+    EPD_WaitUntilIdle();
+
+    EPD_SendCommand(0X00);			//PANNEL SETTING
+    EPD_SendData(0x1F);   //KW-3f   KWR-2F	BWROTP 0f	BWOTP 1f
+
+    EPD_SendCommand(0x61);        	//tres
+    EPD_SendData(0x03);		//source 800
+    EPD_SendData(0x20);
+    EPD_SendData(0x01);		//gate 480
+    EPD_SendData(0xE0);
+
+    EPD_SendCommand(0X15);
+    EPD_SendData(0x00);
+
+    EPD_SendCommand(0X50);			//VCOM AND DATA INTERVAL SETTING
+    EPD_SendData(0x10);
+    EPD_SendData(0x07);
+
+    EPD_SendCommand(0X60);			//TCON SETTING
+    EPD_SendData(0x22);
+
+    return 0;
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_7IN5_V2_Clear(void)
+{
+    UWORD Width, Height;
+    Width =(EPD_7IN5_V2_WIDTH % 8 == 0)?(EPD_7IN5_V2_WIDTH / 8 ):(EPD_7IN5_V2_WIDTH / 8 + 1);
+    Height = EPD_7IN5_V2_HEIGHT;
+
+    UWORD i;
+    EPD_SendCommand(0x10);
+    for(i=0; i<Height*Width; i++) {
+        EPD_SendData(0x00);
+    }
+    EPD_SendCommand(0x13);
+    for(i=0; i<Height*Width; i++)	{
+        EPD_SendData(0x00);
+    }
+    EPD_7IN5_V2_TurnOnDisplay();
+}
+
+void EPD_7IN5_V2_ClearBlack(void)
+{
+    UWORD Width, Height;
+    Width =(EPD_7IN5_V2_WIDTH % 8 == 0)?(EPD_7IN5_V2_WIDTH / 8 ):(EPD_7IN5_V2_WIDTH / 8 + 1);
+    Height = EPD_7IN5_V2_HEIGHT;
+
+    UWORD i;
+    EPD_SendCommand(0x13);
+    for(i=0; i<Height*Width; i++)	{
+        EPD_SendData(0xFF);
+    }
+    EPD_7IN5_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_7IN5_V2_Display(const UBYTE *blackimage)
+{
+    UDOUBLE Width, Height;
+    Width =(EPD_7IN5_V2_WIDTH % 8 == 0)?(EPD_7IN5_V2_WIDTH / 8 ):(EPD_7IN5_V2_WIDTH / 8 + 1);
+    Height = EPD_7IN5_V2_HEIGHT;
+    
+	//send black data
+    EPD_SendCommand(0x13);
+    for (UDOUBLE j = 0; j < Height; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_SendData(~blackimage[i + j * Width]);
+        }
+    }
+    EPD_7IN5_V2_TurnOnDisplay();
+}
+
+void EPD_7IN5_V2_WritePicture(const UBYTE *blackimage, UBYTE Block)
+{
+
+	UDOUBLE Width, Height;
+	Width =(EPD_7IN5_V2_WIDTH % 8 == 0)?(EPD_7IN5_V2_WIDTH / 8 ):(EPD_7IN5_V2_WIDTH / 8 + 1);
+	Height = EPD_7IN5_V2_HEIGHT;
+	
+	if(Block == 0){
+		EPD_SendCommand(0x13);
+	}
+	for (UDOUBLE j = 0; j < Height/2; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_SendData(~blackimage[i + j * Width]);
+        }
+	}
+	if(Block == 1){
+		EPD_7IN5_V2_TurnOnDisplay();
+	}
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_7IN5_V2_Sleep(void)
+{
+    EPD_SendCommand(0X02);  	//power off
+    EPD_WaitUntilIdle();
+    EPD_SendCommand(0X07);  	//deep sleep
+    EPD_SendData(0xA5);
+}

+ 50 - 0
luat/packages/epaper/EPD_7in5_V2.h

@@ -0,0 +1,50 @@
+/*****************************************************************************
+* | File      	:	EPD_7in5_V2.h
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V2.0
+* | Date        :   2018-11-09
+* | Info        :   
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _EPD_7IN5_V2_H_
+#define _EPD_7IN5_V2_H_
+
+#include "DEV_Config.h"
+
+
+// Display resolution
+#define EPD_7IN5_V2_WIDTH       800
+#define EPD_7IN5_V2_HEIGHT      480
+
+UBYTE EPD_7IN5_V2_Init(void);
+void EPD_7IN5_V2_Clear(void);
+void EPD_7IN5_V2_ClearBlack(void);
+void EPD_7IN5_V2_Display(const UBYTE *blackimage);
+void EPD_7IN5_V2_Sleep(void);
+void EPD_7IN5_V2_WritePicture(const UBYTE *blackimage, UBYTE Block);
+
+#endif

+ 363 - 0
luat/packages/epaper/EPD_7in5b_HD.c

@@ -0,0 +1,363 @@
+/*****************************************************************************
+* | File      	:	EPD_7IN5B_HD_7in5.c
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   HD.0
+* | Date        :   2018-11-09
+* | Info        :
+******************************************************************************
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files(the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_7in5b_HD.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_7IN5B_HD_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_7IN5B_HD_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_7IN5B_HD_SendData(UBYTE Data)
+{
+    
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_7IN5B_HD_WaitUntilIdle(void)
+{
+    Debug("e-Paper busy\r\n");
+    while(DEV_Digital_Read(EPD_BUSY_PIN)){
+        //DEV_Delay_ms(10);
+    }
+    DEV_Delay_ms(200);      
+    Debug("e-Paper busy release\r\n");
+}
+
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_7IN5B_HD_TurnOnDisplay(void)
+{
+    EPD_7IN5B_HD_SendCommand(0x22);
+    EPD_7IN5B_HD_SendData(0xC7);    //Load LUT from MCU(0x32)
+    EPD_7IN5B_HD_SendCommand(0x20);
+    DEV_Delay_ms(200);      //!!!The delay here is necessary, 200uS at least!!!     
+    EPD_7IN5B_HD_WaitUntilIdle();       //waiting for the electronic paper IC to release the idle signal
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+UBYTE EPD_7IN5B_HD_Init(void)
+{
+    EPD_7IN5B_HD_Reset();
+
+    EPD_7IN5B_HD_SendCommand(0x12); 		  //SWRESET
+    EPD_7IN5B_HD_WaitUntilIdle();        //waiting for the electronic paper IC to release the idle signal
+
+    EPD_7IN5B_HD_SendCommand(0x46);  // Auto Write RAM
+    EPD_7IN5B_HD_SendData(0xF7);
+    EPD_7IN5B_HD_WaitUntilIdle();        //waiting for the electronic paper IC to release the idle signal
+
+    EPD_7IN5B_HD_SendCommand(0x47);  // Auto Write RAM
+    EPD_7IN5B_HD_SendData(0xF7);
+    EPD_7IN5B_HD_WaitUntilIdle();        //waiting for the electronic paper IC to release the idle signal
+
+    EPD_7IN5B_HD_SendCommand(0x0C);  // Soft start setting
+    EPD_7IN5B_HD_SendData(0xAE);
+    EPD_7IN5B_HD_SendData(0xC7);
+    EPD_7IN5B_HD_SendData(0xC3);
+    EPD_7IN5B_HD_SendData(0xC0);
+    EPD_7IN5B_HD_SendData(0x40);   
+
+    EPD_7IN5B_HD_SendCommand(0x01);  // Set MUX as 527
+    EPD_7IN5B_HD_SendData(0xAF);
+    EPD_7IN5B_HD_SendData(0x02);
+    EPD_7IN5B_HD_SendData(0x01);
+
+    EPD_7IN5B_HD_SendCommand(0x11);  // Data entry mode
+    EPD_7IN5B_HD_SendData(0x01);
+
+    EPD_7IN5B_HD_SendCommand(0x44);
+    EPD_7IN5B_HD_SendData(0x00); // RAM x address start at 0
+    EPD_7IN5B_HD_SendData(0x00);
+    EPD_7IN5B_HD_SendData(0x6F); // RAM x address end at 36Fh -> 879
+    EPD_7IN5B_HD_SendData(0x03);
+    EPD_7IN5B_HD_SendCommand(0x45);
+    EPD_7IN5B_HD_SendData(0xAF); // RAM y address start at 20Fh;
+    EPD_7IN5B_HD_SendData(0x02);
+    EPD_7IN5B_HD_SendData(0x00); // RAM y address end at 00h;
+    EPD_7IN5B_HD_SendData(0x00);
+
+    EPD_7IN5B_HD_SendCommand(0x3C); // VBD
+    EPD_7IN5B_HD_SendData(0x01); // LUT1, for white
+
+    EPD_7IN5B_HD_SendCommand(0x18);
+    EPD_7IN5B_HD_SendData(0X80);
+    EPD_7IN5B_HD_SendCommand(0x22);
+    EPD_7IN5B_HD_SendData(0XB1);	//Load Temperature and waveform setting.
+    EPD_7IN5B_HD_SendCommand(0x20);
+    EPD_7IN5B_HD_WaitUntilIdle();        //waiting for the electronic paper IC to release the idle signal
+
+    EPD_7IN5B_HD_SendCommand(0x4E); 
+    EPD_7IN5B_HD_SendData(0x00);
+    EPD_7IN5B_HD_SendData(0x00);
+    EPD_7IN5B_HD_SendCommand(0x4F); 
+    EPD_7IN5B_HD_SendData(0xAF);
+    EPD_7IN5B_HD_SendData(0x02);
+    return 0;
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_7IN5B_HD_Clear(void)
+{
+    UWORD Width, Height;
+    Width =(EPD_7IN5B_HD_WIDTH % 8 == 0)?(EPD_7IN5B_HD_WIDTH / 8 ):(EPD_7IN5B_HD_WIDTH / 8 + 1);
+    Height = EPD_7IN5B_HD_HEIGHT;
+    EPD_7IN5B_HD_SendCommand(0x4F); 
+    EPD_7IN5B_HD_SendData(0xAf);
+    EPD_7IN5B_HD_SendData(0x02);
+    UWORD i;
+    EPD_7IN5B_HD_SendCommand(0x24);
+    for(i=0; i<Width*Height; i++) {
+        EPD_7IN5B_HD_SendData(0xff);
+
+    }
+    EPD_7IN5B_HD_SendCommand(0x26);
+    for(i=0; i<Width*Height; i++)	{
+        EPD_7IN5B_HD_SendData(0x00);
+
+    }
+    EPD_7IN5B_HD_TurnOnDisplay();
+}
+
+void EPD_7IN5B_HD_ClearRed(void)
+{
+    UWORD Width, Height;
+    Width =(EPD_7IN5B_HD_WIDTH % 8 == 0)?(EPD_7IN5B_HD_WIDTH / 8 ):(EPD_7IN5B_HD_WIDTH / 8 + 1);
+    Height = EPD_7IN5B_HD_HEIGHT;
+
+    UWORD i;
+    EPD_7IN5B_HD_SendCommand(0x4F); 
+    EPD_7IN5B_HD_SendData(0xAF);
+    EPD_7IN5B_HD_SendData(0x02);
+    
+    EPD_7IN5B_HD_SendCommand(0x24);
+    for(i=0; i<Width*Height; i++) {
+        EPD_7IN5B_HD_SendData(0xff);
+
+    }
+    EPD_7IN5B_HD_SendCommand(0x26);
+    for(i=0; i<Width*Height; i++)	{
+        EPD_7IN5B_HD_SendData(0xff);
+
+    }
+    EPD_7IN5B_HD_TurnOnDisplay();
+}
+
+void EPD_7IN5B_HD_ClearBlack(void)
+{
+    UWORD Width, Height;
+    Width =(EPD_7IN5B_HD_WIDTH % 8 == 0)?(EPD_7IN5B_HD_WIDTH / 8 ):(EPD_7IN5B_HD_WIDTH / 8 + 1);
+    Height = EPD_7IN5B_HD_HEIGHT;
+
+    UWORD i;
+    EPD_7IN5B_HD_SendCommand(0x4F); 
+    EPD_7IN5B_HD_SendData(0xAF);
+    EPD_7IN5B_HD_SendData(0x02);
+    
+    EPD_7IN5B_HD_SendCommand(0x24);
+    for(i=0; i<Width*Height; i++) {
+        EPD_7IN5B_HD_SendData(0x00);
+
+    }
+    EPD_7IN5B_HD_SendCommand(0x26);
+    for(i=0; i<Width*Height; i++)	{
+        EPD_7IN5B_HD_SendData(0x00);
+
+    }
+    EPD_7IN5B_HD_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_7IN5B_HD_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UDOUBLE Width, Height;
+    Width =(EPD_7IN5B_HD_WIDTH % 8 == 0)?(EPD_7IN5B_HD_WIDTH / 8 ):(EPD_7IN5B_HD_WIDTH / 8 + 1);
+    Height = EPD_7IN5B_HD_HEIGHT;
+    EPD_7IN5B_HD_SendCommand(0x4F); 
+    EPD_7IN5B_HD_SendData(0xAF);
+    EPD_7IN5B_HD_SendData(0x02);
+ //send black data
+    EPD_7IN5B_HD_SendCommand(0x24);
+    for (UDOUBLE j = 0; j < Height; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5B_HD_SendData(blackimage[i + j * Width]);
+        }
+    }
+ 
+
+    //send red data
+    EPD_7IN5B_HD_SendCommand(0x26);
+    for (UDOUBLE j = 0; j < Height; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5B_HD_SendData(~ryimage[i + j * Width]);
+        }
+    }
+    EPD_7IN5B_HD_TurnOnDisplay();
+}
+
+
+void EPD_7IN5B_HD_DisplayPicture(const UBYTE *blackimage,UBYTE Block)
+{
+	UDOUBLE Width, Height;
+	Width =(EPD_7IN5B_HD_WIDTH % 8 == 0)?(EPD_7IN5B_HD_WIDTH / 8 ):(EPD_7IN5B_HD_WIDTH / 8 + 1);
+	Height = EPD_7IN5B_HD_HEIGHT;
+
+	if(Block == 0){
+		EPD_7IN5B_HD_SendCommand(0x4F); 
+		EPD_7IN5B_HD_SendData(0xAF);
+		EPD_7IN5B_HD_SendData(0x02);
+		EPD_7IN5B_HD_SendCommand(0x24);
+    for (UDOUBLE j = 0; j < Height/2; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5B_HD_SendData(blackimage[i + j * Width]);
+        }
+    }
+		
+	}else if(Block == 1){
+		for (UDOUBLE j = 0; j < Height/2; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5B_HD_SendData(blackimage[i + j * Width]);
+        }
+    }
+	}else if(Block == 2){
+		EPD_7IN5B_HD_SendCommand(0x26);
+    for (UDOUBLE j = 0; j < Height/2; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5B_HD_SendData(~blackimage[i + j * Width]);
+        }
+    }
+	}else if(Block == 3){
+		for (UDOUBLE j = 0; j < Height/2; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5B_HD_SendData(~blackimage[i + j * Width]);
+        }
+    }
+		EPD_7IN5B_HD_TurnOnDisplay();
+	}
+}
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:	image_width and start_X :Must be a multiple of 8
+******************************************************************************/
+void EPD_7IN5B_HD_DisplayImage(const UBYTE *blackimage, const UBYTE *ryimage,UDOUBLE start_X, UDOUBLE start_Y, UDOUBLE image_width, UDOUBLE image_high)
+{
+    UDOUBLE Width, Height;
+    Width =(EPD_7IN5B_HD_WIDTH % 8 == 0)?(EPD_7IN5B_HD_WIDTH / 8 ):(EPD_7IN5B_HD_WIDTH / 8 + 1);
+    Height = EPD_7IN5B_HD_HEIGHT;
+		
+    EPD_7IN5B_HD_SendCommand(0x4F); 
+    EPD_7IN5B_HD_SendData(0xAF);
+    EPD_7IN5B_HD_SendData(0x02);
+		//send black data
+	
+		
+    EPD_7IN5B_HD_SendCommand(0x24);
+    for (UDOUBLE j = 0; j < Height; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+						if((i>=start_X/8) && (i<(start_X+image_width)/8) && (j>=start_Y) && (j<(start_Y+image_high))){
+							EPD_7IN5B_HD_SendData(blackimage[i-start_X/8 + (j - start_Y) * image_width/8]);
+						}else{
+							EPD_7IN5B_HD_SendData(0xff);
+						}
+						
+        }
+    }
+ 
+
+    //send red data
+    EPD_7IN5B_HD_SendCommand(0x26);
+    for (UDOUBLE j = 0; j < Height; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+						if((i>=start_X/8) && (i<(start_X+image_width)/8) && (j>=start_Y) && (j<(start_Y+image_high))){
+							EPD_7IN5B_HD_SendData(~ryimage[i-start_X/8 + (j - start_Y) * image_width/8]);
+						}else{
+							EPD_7IN5B_HD_SendData(0x00);
+						}
+						
+        }
+    }
+    EPD_7IN5B_HD_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_7IN5B_HD_Sleep(void)
+{
+    EPD_7IN5B_HD_SendCommand(0x10);  	//deep sleep
+    EPD_7IN5B_HD_SendData(0x01);
+}

+ 51 - 0
luat/packages/epaper/EPD_7in5b_HD.h

@@ -0,0 +1,51 @@
+/*****************************************************************************
+* | File      	:	EPD_7in5_HD.h
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   EPD_7in5_HD.0
+* | Date        :   2020-04-27
+* | Info        :   
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _EPD_7IN5B_HD_H_
+#define _EPD_7IN5B_HD_H_
+
+#include "DEV_Config.h"
+
+
+// Display resolution
+#define EPD_7IN5B_HD_WIDTH       880
+#define EPD_7IN5B_HD_HEIGHT      528
+
+UBYTE EPD_7IN5B_HD_Init(void);
+void EPD_7IN5B_HD_Clear(void);
+void EPD_7IN5B_HD_ClearRed(void);
+void EPD_7IN5B_HD_ClearBlack(void);
+void EPD_7IN5B_HD_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_7IN5B_HD_Sleep(void);
+void EPD_7IN5B_HD_DisplayPicture(const UBYTE *blackimage,UBYTE Block);
+void EPD_7IN5B_HD_DisplayImage(const UBYTE *blackimage, const UBYTE *ryimage,UDOUBLE start_X, UDOUBLE start_Y, UDOUBLE image_width, UDOUBLE image_high);
+#endif

+ 286 - 0
luat/packages/epaper/EPD_7in5b_V2.c

@@ -0,0 +1,286 @@
+/*****************************************************************************
+* | File      	:	EPD_7IN5b_V2.c
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V2.1
+* | Date        :   2020-11-30
+* | Info        :
+******************************************************************************
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files(the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_7in5b_V2.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_7IN5B_V2_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_7IN5B_V2_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_7IN5B_V2_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_7IN5B_V2_WaitUntilIdle(void)
+{
+	Debug("e-Paper busy\r\n");
+	unsigned char busy;
+	do	{
+		EPD_7IN5B_V2_SendCommand(0x71);
+		busy = DEV_Digital_Read(EPD_BUSY_PIN);
+		busy =!(busy & 0x01);        
+	}while(busy);
+	DEV_Delay_ms(200);      
+	Debug("e-Paper busy release\r\n");
+		
+}
+
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_7IN5B_V2_TurnOnDisplay(void)
+{
+    EPD_7IN5B_V2_SendCommand(0x12);			//DISPLAY REFRESH
+    DEV_Delay_ms(100);	        //!!!The delay here is necessary, 200uS at least!!!
+    EPD_7IN5B_V2_WaitUntilIdle();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+UBYTE EPD_7IN5B_V2_Init(void)
+{
+    EPD_7IN5B_V2_Reset();
+
+    EPD_7IN5B_V2_SendCommand(0x01);			//POWER SETTING
+    EPD_7IN5B_V2_SendData(0x07);
+    EPD_7IN5B_V2_SendData(0x07);    //VGH=20V,VGL=-20V
+    EPD_7IN5B_V2_SendData(0x3f);		//VDH=15V
+    EPD_7IN5B_V2_SendData(0x3f);		//VDL=-15V
+
+    EPD_7IN5B_V2_SendCommand(0x04); //POWER ON
+    DEV_Delay_ms(100);
+    EPD_7IN5B_V2_WaitUntilIdle();
+
+    EPD_7IN5B_V2_SendCommand(0X00);			//PANNEL SETTING
+    EPD_7IN5B_V2_SendData(0x0F);   //KW-3f   KWR-2F	BWROTP 0f	BWOTP 1f
+
+    EPD_7IN5B_V2_SendCommand(0x61);        	//tres
+    EPD_7IN5B_V2_SendData(0x03);		//source 800
+    EPD_7IN5B_V2_SendData(0x20);
+    EPD_7IN5B_V2_SendData(0x01);		//gate 480
+    EPD_7IN5B_V2_SendData(0xE0);
+
+    EPD_7IN5B_V2_SendCommand(0X15);
+    EPD_7IN5B_V2_SendData(0x00);
+
+    EPD_7IN5B_V2_SendCommand(0X50);			//VCOM AND DATA INTERVAL SETTING
+    EPD_7IN5B_V2_SendData(0x11);
+    EPD_7IN5B_V2_SendData(0x07);
+
+    EPD_7IN5B_V2_SendCommand(0X60);			//TCON SETTING
+    EPD_7IN5B_V2_SendData(0x22);
+	
+	EPD_7IN5B_V2_SendCommand(0X82);
+	EPD_7IN5B_V2_SendData(0x08);
+	EPD_7IN5B_V2_SendCommand(0X30);
+	EPD_7IN5B_V2_SendData(0x06);
+				
+    EPD_7IN5B_V2_SendCommand(0x65);  // Resolution setting
+    EPD_7IN5B_V2_SendData(0x00);
+    EPD_7IN5B_V2_SendData(0x00);//800*480
+    EPD_7IN5B_V2_SendData(0x00);
+    EPD_7IN5B_V2_SendData(0x00);
+
+    return 0;
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_7IN5B_V2_Clear(void)
+{
+    UWORD Width, Height;
+    Width =(EPD_7IN5B_V2_WIDTH % 8 == 0)?(EPD_7IN5B_V2_WIDTH / 8 ):(EPD_7IN5B_V2_WIDTH / 8 + 1);
+    Height = EPD_7IN5B_V2_HEIGHT;
+
+    UWORD i;
+    EPD_7IN5B_V2_SendCommand(0x10);
+    for(i=0; i<Width*Height; i++) {
+        EPD_7IN5B_V2_SendData(0xff);
+
+    }
+    EPD_7IN5B_V2_SendCommand(0x13);
+    for(i=0; i<Width*Height; i++)	{
+        EPD_7IN5B_V2_SendData(0x00);
+
+    }
+    EPD_7IN5B_V2_TurnOnDisplay();
+}
+
+void EPD_7IN5B_V2_ClearRed(void)
+{
+    UWORD Width, Height;
+    Width =(EPD_7IN5B_V2_WIDTH % 8 == 0)?(EPD_7IN5B_V2_WIDTH / 8 ):(EPD_7IN5B_V2_WIDTH / 8 + 1);
+    Height = EPD_7IN5B_V2_HEIGHT;
+
+    UWORD i;
+    EPD_7IN5B_V2_SendCommand(0x10);
+    for(i=0; i<Width*Height; i++) {
+        EPD_7IN5B_V2_SendData(0xff);
+
+    }
+    EPD_7IN5B_V2_SendCommand(0x13);
+    for(i=0; i<Width*Height; i++)	{
+        EPD_7IN5B_V2_SendData(0xff);
+
+    }
+    EPD_7IN5B_V2_TurnOnDisplay();
+}
+
+void EPD_7IN5B_V2_ClearBlack(void)
+{
+    UWORD Width, Height;
+    Width =(EPD_7IN5B_V2_WIDTH % 8 == 0)?(EPD_7IN5B_V2_WIDTH / 8 ):(EPD_7IN5B_V2_WIDTH / 8 + 1);
+    Height = EPD_7IN5B_V2_HEIGHT;
+
+    UWORD i;
+    EPD_7IN5B_V2_SendCommand(0x10);
+    for(i=0; i<Width*Height; i++) {
+        EPD_7IN5B_V2_SendData(0x00);
+
+    }
+    EPD_7IN5B_V2_SendCommand(0x13);
+    for(i=0; i<Width*Height; i++)	{
+        EPD_7IN5B_V2_SendData(0x00);
+
+    }
+    EPD_7IN5B_V2_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_7IN5B_V2_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UDOUBLE Width, Height;
+    Width =(EPD_7IN5B_V2_WIDTH % 8 == 0)?(EPD_7IN5B_V2_WIDTH / 8 ):(EPD_7IN5B_V2_WIDTH / 8 + 1);
+    Height = EPD_7IN5B_V2_HEIGHT;
+
+ //send black data
+    EPD_7IN5B_V2_SendCommand(0x10);
+    for (UDOUBLE j = 0; j < Height; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5B_V2_SendData(blackimage[i + j * Width]);
+        }
+    }
+    EPD_7IN5B_V2_SendCommand(0x92); 
+
+    //send red data
+    EPD_7IN5B_V2_SendCommand(0x13);
+    for (UDOUBLE j = 0; j < Height; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+            EPD_7IN5B_V2_SendData(~ryimage[i + j * Width]);
+        }
+    }
+    EPD_7IN5B_V2_TurnOnDisplay();
+}
+
+//0 1 is a black area and 2 3 is a red area
+void EPD_7IN5B_V2_WritePicture(const UBYTE *blackimage, UBYTE Block)
+{
+
+	UDOUBLE Width, Height;
+	Width =(EPD_7IN5B_V2_WIDTH % 8 == 0)?(EPD_7IN5B_V2_WIDTH / 8 ):(EPD_7IN5B_V2_WIDTH / 8 + 1);
+	Height = EPD_7IN5B_V2_HEIGHT;
+	
+	if(Block == 0){
+		EPD_7IN5B_V2_SendCommand(0x10);
+	}else if(Block == 2){
+		EPD_7IN5B_V2_SendCommand(0x92); 
+    EPD_7IN5B_V2_SendCommand(0x13);
+	}
+	for (UDOUBLE j = 0; j < Height/2; j++) {
+        for (UDOUBLE i = 0; i < Width; i++) {
+						if(Block>=2){
+							EPD_7IN5B_V2_SendData(~blackimage[i + j * Width]);
+						}else{
+							EPD_7IN5B_V2_SendData(blackimage[i + j * Width]);
+						}
+        }
+	}
+	if(Block == 3){
+		EPD_7IN5B_V2_TurnOnDisplay();
+	}
+}
+
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_7IN5B_V2_Sleep(void)
+{
+    EPD_7IN5B_V2_SendCommand(0X02);  	//power off
+    EPD_7IN5B_V2_WaitUntilIdle();
+    EPD_7IN5B_V2_SendCommand(0X07);  	//deep sleep
+    EPD_7IN5B_V2_SendData(0xA5);
+}

+ 50 - 0
luat/packages/epaper/EPD_7in5b_V2.h

@@ -0,0 +1,50 @@
+/*****************************************************************************
+* | File      	:	EPD_7in5b_V2.h
+* | Author      :   Waveshare team
+* | Function    :   Electronic paper driver
+* | Info        :
+*----------------
+* |	This version:   V2.1
+* | Date        :   2020-11-30
+* | Info        :   
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef _EPD_7IN5B_V2_H_
+#define _EPD_7IN5B_V2_H_
+
+#include "DEV_Config.h"
+
+
+// Display resolution
+#define EPD_7IN5B_V2_WIDTH       800
+#define EPD_7IN5B_V2_HEIGHT      480
+
+UBYTE EPD_7IN5B_V2_Init(void);
+void EPD_7IN5B_V2_Clear(void);
+void EPD_7IN5B_V2_ClearRed(void);
+void EPD_7IN5B_V2_ClearBlack(void);
+void EPD_7IN5B_V2_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_7IN5B_V2_Sleep(void);
+void EPD_7IN5B_V2_WritePicture(const UBYTE *blackimage, UBYTE Block);
+#endif

+ 331 - 0
luat/packages/epaper/EPD_7in5bc.c

@@ -0,0 +1,331 @@
+/*****************************************************************************
+* | File      	:   EPD_7IN5BC.h
+* | Author      :   Waveshare team
+* | Function    :   7.5inch e-paper b&c
+* | Info        :
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_7IN5BC_Reset()
+*    EPD_SendCommand() => EPD_7IN5BC_SendCommand()
+*    EPD_SendData() => EPD_7IN5BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_7IN5BC_ReadBusy()
+*    EPD_Init() => EPD_7IN5BC_Init()
+*    EPD_Clear() => EPD_7IN5BC_Clear()
+*    EPD_Display() => EPD_7IN5BC_Display()
+*    EPD_Sleep() => EPD_7IN5BC_Sleep()
+* 2.Remove:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define IMAGE_PROCESS                               0x13
+*   #define LUT_FOR_VCOM                                0x20
+*   #define LUT_BLUE                                    0x21
+*   #define LUT_WHITE                                   0x22
+*   #define LUT_GRAY_1                                  0x23
+*   #define LUT_GRAY_2                                  0x24
+*   #define LUT_RED_0                                   0x25
+*   #define LUT_RED_1                                   0x26
+*   #define LUT_RED_2                                   0x27
+*   #define LUT_RED_3                                   0x28
+*   #define LUT_XON                                     0x29
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_CALIBRATION                     0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SPI_FLASH_CONTROL                           0x65
+*   #define REVISION                                    0x70
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASUREMENT_VCOM                       0x80
+*   #define READ_VCOM_VALUE                             0x81
+*   #define VCM_DC_SETTING                              0x82
+* 3.add:
+*   EPD_7IN5BC_DisplayHalfScreen()
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#include "EPD_7in5bc.h"
+#include "Debug.h"
+
+/******************************************************************************
+function :	Software reset
+parameter:
+******************************************************************************/
+static void EPD_7IN5BC_Reset(void)
+{
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+    DEV_Digital_Write(EPD_RST_PIN, 0);
+    DEV_Delay_ms(2);
+    DEV_Digital_Write(EPD_RST_PIN, 1);
+    DEV_Delay_ms(200);
+}
+
+/******************************************************************************
+function :	send command
+parameter:
+     Reg : Command register
+******************************************************************************/
+static void EPD_7IN5BC_SendCommand(UBYTE Reg)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 0);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Reg);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	send data
+parameter:
+    Data : Write data
+******************************************************************************/
+static void EPD_7IN5BC_SendData(UBYTE Data)
+{
+    DEV_Digital_Write(EPD_DC_PIN, 1);
+    DEV_Digital_Write(EPD_CS_PIN, 0);
+    DEV_SPI_WriteByte(Data);
+    DEV_Digital_Write(EPD_CS_PIN, 1);
+}
+
+/******************************************************************************
+function :	Wait until the busy_pin goes LOW
+parameter:
+******************************************************************************/
+void EPD_7IN5BC_ReadBusy(void)
+{
+    UBYTE busy;
+    Debug("e-Paper busy\r\n");
+    do {
+        EPD_7IN5BC_SendCommand(0x71);
+        busy = DEV_Digital_Read(EPD_BUSY_PIN);
+        busy =!(busy & 0x01);
+    } while(busy);
+    Debug("e-Paper busy release\r\n");
+}
+
+/******************************************************************************
+function :	Turn On Display
+parameter:
+******************************************************************************/
+static void EPD_7IN5BC_TurnOnDisplay(void)
+{
+    EPD_7IN5BC_SendCommand(0x04); // POWER ON
+    EPD_7IN5BC_ReadBusy();
+    EPD_7IN5BC_SendCommand(0x12); // display refresh
+    DEV_Delay_ms(100);
+    EPD_7IN5BC_ReadBusy();
+}
+
+/******************************************************************************
+function :	Initialize the e-Paper register
+parameter:
+******************************************************************************/
+void EPD_7IN5BC_Init(void)
+{
+    EPD_7IN5BC_Reset();
+
+    EPD_7IN5BC_SendCommand(0x01); // POWER_SETTING
+    EPD_7IN5BC_SendData(0x37);
+    EPD_7IN5BC_SendData(0x00);
+
+    EPD_7IN5BC_SendCommand(0x00); // PANEL_SETTING
+    EPD_7IN5BC_SendData(0xCF);
+    EPD_7IN5BC_SendData(0x08);
+
+    EPD_7IN5BC_SendCommand(0x30); // PLL_CONTROL
+    EPD_7IN5BC_SendData(0x3A); // PLL:  0-15:0x3C, 15+:0x3A
+
+    EPD_7IN5BC_SendCommand(0x82); // VCM_DC_SETTING
+    EPD_7IN5BC_SendData(0x28); //all temperature  range
+
+    EPD_7IN5BC_SendCommand(0x06); // BOOSTER_SOFT_START
+    EPD_7IN5BC_SendData (0xc7);
+    EPD_7IN5BC_SendData (0xcc);
+    EPD_7IN5BC_SendData (0x15);
+
+    EPD_7IN5BC_SendCommand(0x50); // VCOM AND DATA INTERVAL SETTING
+    EPD_7IN5BC_SendData(0x77);
+
+    EPD_7IN5BC_SendCommand(0x60); // TCON_SETTING
+    EPD_7IN5BC_SendData(0x22);
+
+    EPD_7IN5BC_SendCommand(0x65); // FLASH CONTROL
+    EPD_7IN5BC_SendData(0x00);
+
+    EPD_7IN5BC_SendCommand(0x61);  // TCON_RESOLUTION
+    EPD_7IN5BC_SendData(EPD_7IN5BC_WIDTH >> 8); // source 640
+    EPD_7IN5BC_SendData(EPD_7IN5BC_WIDTH & 0xff);
+    EPD_7IN5BC_SendData(EPD_7IN5BC_HEIGHT >> 8); // gate 384
+    EPD_7IN5BC_SendData(EPD_7IN5BC_HEIGHT & 0xff);
+
+    EPD_7IN5BC_SendCommand(0xe5); // FLASH MODE
+    EPD_7IN5BC_SendData(0x03);
+}
+
+/******************************************************************************
+function :	Clear screen
+parameter:
+******************************************************************************/
+void EPD_7IN5BC_Clear(void)
+{
+    UWORD Width, Height;
+    Width = (EPD_7IN5BC_WIDTH % 8 == 0)? (EPD_7IN5BC_WIDTH / 8): (EPD_7IN5BC_WIDTH / 8 + 1);
+    Height = EPD_7IN5BC_HEIGHT;
+
+    EPD_7IN5BC_SendCommand(0x10);
+    for (UWORD j = 0; j < Height; j++) {
+        for (UWORD i = 0; i < Width; i++) {
+            for(UBYTE k = 0; k < 4; k++) {
+                EPD_7IN5BC_SendData(0x33);
+            }
+        }
+    }
+
+    EPD_7IN5BC_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Sends the image buffer in RAM to e-Paper and displays
+parameter:
+******************************************************************************/
+void EPD_7IN5BC_Display(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UBYTE Data_Black, Data_RY, Data;
+    UDOUBLE i, j, Width, Height;
+    Width = (EPD_7IN5BC_WIDTH % 8 == 0)? (EPD_7IN5BC_WIDTH / 8 ): (EPD_7IN5BC_WIDTH / 8 + 1);
+    Height = EPD_7IN5BC_HEIGHT;
+
+    EPD_7IN5BC_SendCommand(0x10);
+    for (j = 0; j < Height; j++) {
+        for (i = 0; i < Width; i++) {
+            Data_Black = blackimage[i + j * Width];
+            Data_RY = ryimage[i + j * Width]; // red or yellow
+            for(UBYTE k = 0; k < 8; k++) {
+                if ((Data_RY & 0x80) == 0x00) {
+                    Data = 0x04;                //red
+                } else if ((Data_Black & 0x80) == 0x00) {
+                    Data = 0x00;               //black
+                } else {
+                    Data = 0x03;                //white
+                }
+                Data = (Data << 4) & 0xFF;
+                Data_Black = (Data_Black << 1) & 0xFF;
+                Data_RY = (Data_RY << 1) & 0xFF;
+                k += 1;
+
+                if((Data_RY & 0x80) == 0x00) {
+                    Data |= 0x04;              //red
+                } else if ((Data_Black & 0x80) == 0x00) {
+                    Data |= 0x00;              //black
+                } else {
+                    Data |= 0x03;              //white
+                }
+                Data_Black = (Data_Black << 1) & 0xFF;
+                Data_RY = (Data_RY << 1) & 0xFF;
+                EPD_7IN5BC_SendData(Data);
+            }
+        }
+    }
+
+    EPD_7IN5BC_TurnOnDisplay();
+}
+
+void EPD_7IN5BC_DisplayHalfScreen(const UBYTE *blackimage, const UBYTE *ryimage)
+{
+    UBYTE Data_Black, Data_RY, Data;
+    UDOUBLE i, j, Width, Height;
+    Width = (EPD_7IN5BC_WIDTH % 8 == 0)? (EPD_7IN5BC_WIDTH / 8 ): (EPD_7IN5BC_WIDTH / 8 + 1);
+    Height = EPD_7IN5BC_HEIGHT;
+
+    EPD_7IN5BC_SendCommand(0x10);
+    for (j = 0; j < Height / 2; j++) {
+        for (i = 0; i < Width; i++) {
+            Data_Black = blackimage[i + j * Width];
+            Data_RY = ryimage[i + j * Width]; // red or yellow
+            for(UBYTE k = 0; k < 8; k++) {
+                if ((Data_RY & 0x80) == 0x00) {
+                    Data = 0x04;                //red
+                } else if ((Data_Black & 0x80) == 0x00) {
+                    Data = 0x00;               //black
+                } else {
+                    Data = 0x03;                //white
+                }
+                Data = (Data << 4) & 0xFF;
+                Data_Black = (Data_Black << 1) & 0xFF;
+                Data_RY = (Data_RY << 1) & 0xFF;
+                k += 1;
+
+                if((Data_RY & 0x80) == 0x00) {
+                    Data |= 0x04;              //red
+                } else if ((Data_Black & 0x80) == 0x00) {
+                    Data |= 0x00;              //black
+                } else {
+                    Data |= 0x03;              //white
+                }
+                Data_Black = (Data_Black << 1) & 0xFF;
+                Data_RY = (Data_RY << 1) & 0xFF;
+                EPD_7IN5BC_SendData(Data);
+            }
+        }
+    }
+		
+		for (j = 0; j < Height / 2; j++) {
+        for (i = 0; i < Width; i++) {
+           for(UBYTE k = 0; k < 4; k++) {
+                EPD_7IN5BC_SendData(Data);
+            } 
+        }
+    }
+
+    EPD_7IN5BC_TurnOnDisplay();
+}
+
+/******************************************************************************
+function :	Enter sleep mode
+parameter:
+******************************************************************************/
+void EPD_7IN5BC_Sleep(void)
+{
+    EPD_7IN5BC_SendCommand(0x02); // POWER_OFF
+    EPD_7IN5BC_ReadBusy();
+    EPD_7IN5BC_SendCommand(0x07); // DEEP_SLEEP
+    EPD_7IN5BC_SendData(0XA5);
+}

+ 100 - 0
luat/packages/epaper/EPD_7in5bc.h

@@ -0,0 +1,100 @@
+/*****************************************************************************
+* | File      	:   EPD_7IN5BC.h
+* | Author      :   Waveshare team
+* | Function    :   7.5inch e-paper b&c
+* | Info        :
+* |	This version:   V3.0
+* | Date        :   2019-06-13
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-06-13):
+* 1.Change:
+*    EPD_Reset() => EPD_7IN5BC_Reset()
+*    EPD_SendCommand() => EPD_7IN5BC_SendCommand()
+*    EPD_SendData() => EPD_7IN5BC_SendData()
+*    EPD_WaitUntilIdle() => EPD_7IN5BC_ReadBusy()
+*    EPD_Init() => EPD_7IN5BC_Init()
+*    EPD_Clear() => EPD_7IN5BC_Clear()
+*    EPD_Display() => EPD_7IN5BC_Display()
+*    EPD_Sleep() => EPD_7IN5BC_Sleep()
+* 2.Remove:
+*   #define PANEL_SETTING                               0x00
+*   #define POWER_SETTING                               0x01
+*   #define POWER_OFF                                   0x02
+*   #define POWER_OFF_SEQUENCE_SETTING                  0x03
+*   #define POWER_ON                                    0x04
+*   #define POWER_ON_MEASURE                            0x05
+*   #define BOOSTER_SOFT_START                          0x06
+*   #define DEEP_SLEEP                                  0x07
+*   #define DATA_START_TRANSMISSION_1                   0x10
+*   #define DATA_STOP                                   0x11
+*   #define DISPLAY_REFRESH                             0x12
+*   #define IMAGE_PROCESS                               0x13
+*   #define LUT_FOR_VCOM                                0x20
+*   #define LUT_BLUE                                    0x21
+*   #define LUT_WHITE                                   0x22
+*   #define LUT_GRAY_1                                  0x23
+*   #define LUT_GRAY_2                                  0x24
+*   #define LUT_RED_0                                   0x25
+*   #define LUT_RED_1                                   0x26
+*   #define LUT_RED_2                                   0x27
+*   #define LUT_RED_3                                   0x28
+*   #define LUT_XON                                     0x29
+*   #define PLL_CONTROL                                 0x30
+*   #define TEMPERATURE_SENSOR_COMMAND                  0x40
+*   #define TEMPERATURE_CALIBRATION                     0x41
+*   #define TEMPERATURE_SENSOR_WRITE                    0x42
+*   #define TEMPERATURE_SENSOR_READ                     0x43
+*   #define VCOM_AND_DATA_INTERVAL_SETTING              0x50
+*   #define LOW_POWER_DETECTION                         0x51
+*   #define TCON_SETTING                                0x60
+*   #define TCON_RESOLUTION                             0x61
+*   #define SPI_FLASH_CONTROL                           0x65
+*   #define REVISION                                    0x70
+*   #define GET_STATUS                                  0x71
+*   #define AUTO_MEASUREMENT_VCOM                       0x80
+*   #define READ_VCOM_VALUE                             0x81
+*   #define VCM_DC_SETTING                              0x82
+* 3.add:
+*   EPD_7IN5BC_DisplayHalfScreen()
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-09):
+* 1.Remove:ImageBuff[EPD_HEIGHT * EPD_WIDTH / 8]
+* 2.Change:EPD_Display(UBYTE *Image)
+*   Need to pass parameters: pointer to cached data
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documnetation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to  whom the Software is
+# furished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+# THE SOFTWARE.
+#
+******************************************************************************/
+#ifndef __EPD_7IN5BC_H_
+#define __EPD_7IN5BC_H_
+
+#include "DEV_Config.h"
+
+// Display resolution
+#define EPD_7IN5BC_WIDTH       640
+#define EPD_7IN5BC_HEIGHT      384
+
+void EPD_7IN5BC_Init(void);
+void EPD_7IN5BC_Clear(void);
+void EPD_7IN5BC_Display(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_7IN5BC_DisplayHalfScreen(const UBYTE *blackimage, const UBYTE *ryimage);
+void EPD_7IN5BC_Sleep(void);
+
+#endif

+ 868 - 0
luat/packages/epaper/GUI_Paint.c

@@ -0,0 +1,868 @@
+/******************************************************************************
+* | File      	:   GUI_Paint.c
+* | Author      :   Waveshare electronics
+* | Function    :	Achieve drawing: draw points, lines, boxes, circles and
+*                   their size, solid dotted line, solid rectangle hollow
+*                   rectangle, solid circle hollow circle.
+* | Info        :
+*   Achieve display characters: Display a single character, string, number
+*   Achieve time display: adaptive size display time minutes and seconds
+*----------------
+* |	This version:   V3.1
+* | Date        :   2020-07-08
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.1(2020-07-08):
+* 1.Change: Paint_SetScale(UBYTE scale)
+*		 Add scale 7 for 5.65f e-Parper
+* 2.Change: Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color)
+*		 Add the branch for scale 7
+* 3.Change: Paint_Clear(UWORD Color)
+*		 Add the branch for scale 7
+*
+* -----------------------------------------------------------------------------
+* V3.0(2019-04-18):
+* 1.Change: 
+*    Paint_DrawPoint(..., DOT_STYLE DOT_STYLE)
+* => Paint_DrawPoint(..., DOT_STYLE Dot_Style)
+*    Paint_DrawLine(..., LINE_STYLE Line_Style, DOT_PIXEL Dot_Pixel)
+* => Paint_DrawLine(..., DOT_PIXEL Line_width, LINE_STYLE Line_Style)
+*    Paint_DrawRectangle(..., DRAW_FILL Filled, DOT_PIXEL Dot_Pixel)
+* => Paint_DrawRectangle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
+*    Paint_DrawCircle(..., DRAW_FILL Draw_Fill, DOT_PIXEL Dot_Pixel)
+* => Paint_DrawCircle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Filll)
+*
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-15):
+* 1.add: Paint_NewImage()
+*    Create an image's properties
+* 2.add: Paint_SelectImage()
+*    Select the picture to be drawn
+* 3.add: Paint_SetRotate()
+*    Set the direction of the cache    
+* 4.add: Paint_RotateImage() 
+*    Can flip the picture, Support 0-360 degrees, 
+*    but only 90.180.270 rotation is better
+* 4.add: Paint_SetMirroring() 
+*    Can Mirroring the picture, horizontal, vertical, origin
+* 5.add: Paint_DrawString_CN() 
+*    Can display Chinese(GB1312)   
+*
+* ----------------------------------------------------------------------------- 
+* V1.0(2018-07-17):
+*   Create library
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documnetation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to  whom the Software is
+* furished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+* THE SOFTWARE.
+*
+******************************************************************************/
+#include "GUI_Paint.h"
+#include "DEV_Config.h"
+#include "Debug.h"
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h> //memset()
+#include <math.h>
+
+PAINT Paint;
+
+/******************************************************************************
+function: Create Image
+parameter:
+    image   :   Pointer to the image cache
+    width   :   The width of the picture
+    Height  :   The height of the picture
+    Color   :   Whether the picture is inverted
+******************************************************************************/
+void Paint_NewImage(UBYTE *image, UWORD Width, UWORD Height, UWORD Rotate, UWORD Color)
+{
+    Paint.Image = NULL;
+    Paint.Image = image;
+
+    Paint.WidthMemory = Width;
+    Paint.HeightMemory = Height;
+    Paint.Color = Color;    
+	Paint.Scale = 2;
+		
+    Paint.WidthByte = (Width % 8 == 0)? (Width / 8 ): (Width / 8 + 1);
+    Paint.HeightByte = Height;    
+//    printf("WidthByte = %d, HeightByte = %d\r\n", Paint.WidthByte, Paint.HeightByte);
+//    printf(" EPD_WIDTH / 8 = %d\r\n",  122 / 8);
+   
+    Paint.Rotate = Rotate;
+    Paint.Mirror = MIRROR_NONE;
+    
+    if(Rotate == ROTATE_0 || Rotate == ROTATE_180) {
+        Paint.Width = Width;
+        Paint.Height = Height;
+    } else {
+        Paint.Width = Height;
+        Paint.Height = Width;
+    }
+}
+
+/******************************************************************************
+function: Select Image
+parameter:
+    image : Pointer to the image cache
+******************************************************************************/
+void Paint_SelectImage(UBYTE *image)
+{
+    Paint.Image = image;
+}
+
+/******************************************************************************
+function: Select Image Rotate
+parameter:
+    Rotate : 0,90,180,270
+******************************************************************************/
+void Paint_SetRotate(UWORD Rotate)
+{
+    if(Rotate == ROTATE_0 || Rotate == ROTATE_90 || Rotate == ROTATE_180 || Rotate == ROTATE_270) {
+        Debug("Set image Rotate %d\r\n", Rotate);
+        Paint.Rotate = Rotate;
+    } else {
+        Debug("rotate = 0, 90, 180, 270\r\n");
+    }
+}
+
+void Paint_SetScale(UBYTE scale)
+{
+    if(scale == 2){
+        Paint.Scale = scale;
+        Paint.WidthByte = (Paint.WidthMemory % 8 == 0)? (Paint.WidthMemory / 8 ): (Paint.WidthMemory / 8 + 1);
+    }else if(scale == 4){
+        Paint.Scale = scale;
+        Paint.WidthByte = (Paint.WidthMemory % 4 == 0)? (Paint.WidthMemory / 4 ): (Paint.WidthMemory / 4 + 1);
+    }else if(scale == 7){//Only applicable with 5in65 e-Paper
+				Paint.Scale = scale;
+				Paint.WidthByte = (Paint.WidthMemory % 2 == 0)? (Paint.WidthMemory / 2 ): (Paint.WidthMemory / 2 + 1);;
+		}else{
+        Debug("Set Scale Input parameter error\r\n");
+        Debug("Scale Only support: 2 4 7\r\n");
+    }
+}
+/******************************************************************************
+function:	Select Image mirror
+parameter:
+    mirror   :Not mirror,Horizontal mirror,Vertical mirror,Origin mirror
+******************************************************************************/
+void Paint_SetMirroring(UBYTE mirror)
+{
+    if(mirror == MIRROR_NONE || mirror == MIRROR_HORIZONTAL || 
+        mirror == MIRROR_VERTICAL || mirror == MIRROR_ORIGIN) {
+        Debug("mirror image x:%s, y:%s\r\n",(mirror & 0x01)? "mirror":"none", ((mirror >> 1) & 0x01)? "mirror":"none");
+        Paint.Mirror = mirror;
+    } else {
+        Debug("mirror should be MIRROR_NONE, MIRROR_HORIZONTAL, \
+        MIRROR_VERTICAL or MIRROR_ORIGIN\r\n");
+    }    
+}
+
+/******************************************************************************
+function: Draw Pixels
+parameter:
+    Xpoint : At point X
+    Ypoint : At point Y
+    Color  : Painted colors
+******************************************************************************/
+void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color)
+{
+    if(Xpoint > Paint.Width || Ypoint > Paint.Height){
+        Debug("Exceeding display boundaries\r\n");
+        return;
+    }      
+    UWORD X, Y;
+
+    switch(Paint.Rotate) {
+    case 0:
+        X = Xpoint;
+        Y = Ypoint;  
+        break;
+    case 90:
+        X = Paint.WidthMemory - Ypoint - 1;
+        Y = Xpoint;
+        break;
+    case 180:
+        X = Paint.WidthMemory - Xpoint - 1;
+        Y = Paint.HeightMemory - Ypoint - 1;
+        break;
+    case 270:
+        X = Ypoint;
+        Y = Paint.HeightMemory - Xpoint - 1;
+        break;
+    default:
+        return;
+    }
+    
+    switch(Paint.Mirror) {
+    case MIRROR_NONE:
+        break;
+    case MIRROR_HORIZONTAL:
+        X = Paint.WidthMemory - X - 1;
+        break;
+    case MIRROR_VERTICAL:
+        Y = Paint.HeightMemory - Y - 1;
+        break;
+    case MIRROR_ORIGIN:
+        X = Paint.WidthMemory - X - 1;
+        Y = Paint.HeightMemory - Y - 1;
+        break;
+    default:
+        return;
+    }
+
+    if(X > Paint.WidthMemory || Y > Paint.HeightMemory){
+        Debug("Exceeding display boundaries\r\n");
+        return;
+    }
+    
+    if(Paint.Scale == 2){
+        UDOUBLE Addr = X / 8 + Y * Paint.WidthByte;
+        UBYTE Rdata = Paint.Image[Addr];
+        if(Color == BLACK)
+            Paint.Image[Addr] = Rdata & ~(0x80 >> (X % 8));
+        else
+            Paint.Image[Addr] = Rdata | (0x80 >> (X % 8));
+    }else if(Paint.Scale == 4){
+        UDOUBLE Addr = X / 4 + Y * Paint.WidthByte;
+        Color = Color % 4;//Guaranteed color scale is 4  --- 0~3
+        UBYTE Rdata = Paint.Image[Addr];
+        
+        Rdata = Rdata & (~(0xC0 >> ((X % 4)*2)));
+        Paint.Image[Addr] = Rdata | ((Color << 6) >> ((X % 4)*2));
+    }else if(Paint.Scale == 7){
+		UDOUBLE Addr = X / 2  + Y * Paint.WidthByte;
+		UBYTE Rdata = Paint.Image[Addr];
+		Rdata = Rdata & (~(0xF0 >> ((X % 2)*4)));//Clear first, then set value
+		Paint.Image[Addr] = Rdata | ((Color << 4) >> ((X % 2)*4));
+		//printf("Add =  %d ,data = %d\r\n",Addr,Rdata);
+		}
+}
+
+/******************************************************************************
+function: Clear the color of the picture
+parameter:
+    Color : Painted colors
+******************************************************************************/
+void Paint_Clear(UWORD Color)
+{
+	if(Paint.Scale == 2 || Paint.Scale == 4){
+		for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
+			for (UWORD X = 0; X < Paint.WidthByte; X++ ) {//8 pixel =  1 byte
+				UDOUBLE Addr = X + Y*Paint.WidthByte;
+				Paint.Image[Addr] = Color;
+			}
+		}		
+	}else if(Paint.Scale == 7){
+		for (UWORD Y = 0; Y < Paint.HeightByte; Y++) {
+			for (UWORD X = 0; X < Paint.WidthByte; X++ ) {
+				UDOUBLE Addr = X + Y*Paint.WidthByte;
+				Paint.Image[Addr] = (Color<<4)|Color;
+			}
+		}		
+	}
+}
+
+/******************************************************************************
+function: Clear the color of a window
+parameter:
+    Xstart : x starting point
+    Ystart : Y starting point
+    Xend   : x end point
+    Yend   : y end point
+    Color  : Painted colors
+******************************************************************************/
+void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color)
+{
+    UWORD X, Y;
+    for (Y = Ystart; Y < Yend; Y++) {
+        for (X = Xstart; X < Xend; X++) {//8 pixel =  1 byte
+            Paint_SetPixel(X, Y, Color);
+        }
+    }
+}
+
+/******************************************************************************
+function: Draw Point(Xpoint, Ypoint) Fill the color
+parameter:
+    Xpoint		: The Xpoint coordinate of the point
+    Ypoint		: The Ypoint coordinate of the point
+    Color		: Painted color
+    Dot_Pixel	: point size
+    Dot_Style	: point Style
+******************************************************************************/
+void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color,
+                     DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_Style)
+{
+    if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
+        Debug("Paint_DrawPoint Input exceeds the normal display range\r\n");
+				printf("Xpoint = %d , Paint.Width = %d  \r\n ",Xpoint,Paint.Width);
+				printf("Ypoint = %d , Paint.Height = %d  \r\n ",Ypoint,Paint.Height);
+        return;
+    }
+
+    int16_t XDir_Num , YDir_Num;
+    if (Dot_Style == DOT_FILL_AROUND) {
+        for (XDir_Num = 0; XDir_Num < 2 * Dot_Pixel - 1; XDir_Num++) {
+            for (YDir_Num = 0; YDir_Num < 2 * Dot_Pixel - 1; YDir_Num++) {
+                if(Xpoint + XDir_Num - Dot_Pixel < 0 || Ypoint + YDir_Num - Dot_Pixel < 0)
+                    break;
+                // printf("x = %d, y = %d\r\n", Xpoint + XDir_Num - Dot_Pixel, Ypoint + YDir_Num - Dot_Pixel);
+                Paint_SetPixel(Xpoint + XDir_Num - Dot_Pixel, Ypoint + YDir_Num - Dot_Pixel, Color);
+            }
+        }
+    } else {
+        for (XDir_Num = 0; XDir_Num <  Dot_Pixel; XDir_Num++) {
+            for (YDir_Num = 0; YDir_Num <  Dot_Pixel; YDir_Num++) {
+                Paint_SetPixel(Xpoint + XDir_Num - 1, Ypoint + YDir_Num - 1, Color);
+            }
+        }
+    }
+}
+
+/******************************************************************************
+function: Draw a line of arbitrary slope
+parameter:
+    Xstart :Starting Xpoint point coordinates
+    Ystart :Starting Xpoint point coordinates
+    Xend   :End point Xpoint coordinate
+    Yend   :End point Ypoint coordinate
+    Color  :The color of the line segment
+    Line_width : Line width
+    Line_Style: Solid and dotted lines
+******************************************************************************/
+void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend,
+                    UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style)
+{
+    if (Xstart > Paint.Width || Ystart > Paint.Height ||
+        Xend > Paint.Width || Yend > Paint.Height) {
+        Debug("Paint_DrawLine Input exceeds the normal display range\r\n");
+        return;
+    }
+
+    UWORD Xpoint = Xstart;
+    UWORD Ypoint = Ystart;
+    int dx = (int)Xend - (int)Xstart >= 0 ? Xend - Xstart : Xstart - Xend;
+    int dy = (int)Yend - (int)Ystart <= 0 ? Yend - Ystart : Ystart - Yend;
+
+    // Increment direction, 1 is positive, -1 is counter;
+    int XAddway = Xstart < Xend ? 1 : -1;
+    int YAddway = Ystart < Yend ? 1 : -1;
+
+    //Cumulative error
+    int Esp = dx + dy;
+    char Dotted_Len = 0;
+
+    for (;;) {
+        Dotted_Len++;
+        //Painted dotted line, 2 point is really virtual
+        if (Line_Style == LINE_STYLE_DOTTED && Dotted_Len % 3 == 0) {
+            //Debug("LINE_DOTTED\r\n");
+            Paint_DrawPoint(Xpoint, Ypoint, IMAGE_BACKGROUND, Line_width, DOT_STYLE_DFT);
+            Dotted_Len = 0;
+        } else {
+            Paint_DrawPoint(Xpoint, Ypoint, Color, Line_width, DOT_STYLE_DFT);
+        }
+        if (2 * Esp >= dy) {
+            if (Xpoint == Xend)
+                break;
+            Esp += dy;
+            Xpoint += XAddway;
+        }
+        if (2 * Esp <= dx) {
+            if (Ypoint == Yend)
+                break;
+            Esp += dx;
+            Ypoint += YAddway;
+        }
+    }
+}
+
+/******************************************************************************
+function: Draw a rectangle
+parameter:
+    Xstart :Rectangular  Starting Xpoint point coordinates
+    Ystart :Rectangular  Starting Xpoint point coordinates
+    Xend   :Rectangular  End point Xpoint coordinate
+    Yend   :Rectangular  End point Ypoint coordinate
+    Color  :The color of the Rectangular segment
+    Line_width: Line width
+    Draw_Fill : Whether to fill the inside of the rectangle
+******************************************************************************/
+void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend,
+                         UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
+{
+    if (Xstart > Paint.Width || Ystart > Paint.Height ||
+        Xend > Paint.Width || Yend > Paint.Height) {
+        Debug("Input exceeds the normal display range\r\n");
+        return;
+    }
+
+    if (Draw_Fill) {
+        UWORD Ypoint;
+        for(Ypoint = Ystart; Ypoint < Yend; Ypoint++) {
+            Paint_DrawLine(Xstart, Ypoint, Xend, Ypoint, Color , Line_width, LINE_STYLE_SOLID);
+        }
+    } else {
+        Paint_DrawLine(Xstart, Ystart, Xend, Ystart, Color, Line_width, LINE_STYLE_SOLID);
+        Paint_DrawLine(Xstart, Ystart, Xstart, Yend, Color, Line_width, LINE_STYLE_SOLID);
+        Paint_DrawLine(Xend, Yend, Xend, Ystart, Color, Line_width, LINE_STYLE_SOLID);
+        Paint_DrawLine(Xend, Yend, Xstart, Yend, Color, Line_width, LINE_STYLE_SOLID);
+    }
+}
+
+/******************************************************************************
+function: Use the 8-point method to draw a circle of the
+            specified size at the specified position->
+parameter:
+    X_Center  :Center X coordinate
+    Y_Center  :Center Y coordinate
+    Radius    :circle Radius
+    Color     :The color of the :circle segment
+    Line_width: Line width
+    Draw_Fill : Whether to fill the inside of the Circle
+******************************************************************************/
+void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius,
+                      UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
+{
+    if (X_Center > Paint.Width || Y_Center >= Paint.Height) {
+        Debug("Paint_DrawCircle Input exceeds the normal display range\r\n");
+        return;
+    }
+
+    //Draw a circle from(0, R) as a starting point
+    int16_t XCurrent, YCurrent;
+    XCurrent = 0;
+    YCurrent = Radius;
+
+    //Cumulative error,judge the next point of the logo
+    int16_t Esp = 3 - (Radius << 1 );
+
+    int16_t sCountY;
+    if (Draw_Fill == DRAW_FILL_FULL) {
+        while (XCurrent <= YCurrent ) { //Realistic circles
+            for (sCountY = XCurrent; sCountY <= YCurrent; sCountY ++ ) {
+                Paint_DrawPoint(X_Center + XCurrent, Y_Center + sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//1
+                Paint_DrawPoint(X_Center - XCurrent, Y_Center + sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//2
+                Paint_DrawPoint(X_Center - sCountY, Y_Center + XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//3
+                Paint_DrawPoint(X_Center - sCountY, Y_Center - XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//4
+                Paint_DrawPoint(X_Center - XCurrent, Y_Center - sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//5
+                Paint_DrawPoint(X_Center + XCurrent, Y_Center - sCountY, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//6
+                Paint_DrawPoint(X_Center + sCountY, Y_Center - XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);//7
+                Paint_DrawPoint(X_Center + sCountY, Y_Center + XCurrent, Color, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+            }
+            if (Esp < 0 )
+                Esp += 4 * XCurrent + 6;
+            else {
+                Esp += 10 + 4 * (XCurrent - YCurrent );
+                YCurrent --;
+            }
+            XCurrent ++;
+        }
+    } else { //Draw a hollow circle
+        while (XCurrent <= YCurrent ) {
+            Paint_DrawPoint(X_Center + XCurrent, Y_Center + YCurrent, Color, Line_width, DOT_STYLE_DFT);//1
+            Paint_DrawPoint(X_Center - XCurrent, Y_Center + YCurrent, Color, Line_width, DOT_STYLE_DFT);//2
+            Paint_DrawPoint(X_Center - YCurrent, Y_Center + XCurrent, Color, Line_width, DOT_STYLE_DFT);//3
+            Paint_DrawPoint(X_Center - YCurrent, Y_Center - XCurrent, Color, Line_width, DOT_STYLE_DFT);//4
+            Paint_DrawPoint(X_Center - XCurrent, Y_Center - YCurrent, Color, Line_width, DOT_STYLE_DFT);//5
+            Paint_DrawPoint(X_Center + XCurrent, Y_Center - YCurrent, Color, Line_width, DOT_STYLE_DFT);//6
+            Paint_DrawPoint(X_Center + YCurrent, Y_Center - XCurrent, Color, Line_width, DOT_STYLE_DFT);//7
+            Paint_DrawPoint(X_Center + YCurrent, Y_Center + XCurrent, Color, Line_width, DOT_STYLE_DFT);//0
+
+            if (Esp < 0 )
+                Esp += 4 * XCurrent + 6;
+            else {
+                Esp += 10 + 4 * (XCurrent - YCurrent );
+                YCurrent --;
+            }
+            XCurrent ++;
+        }
+    }
+}
+
+/******************************************************************************
+function: Show English characters
+parameter:
+    Xpoint           :X coordinate
+    Ypoint           :Y coordinate
+    Acsii_Char       :To display the English characters
+    Font             :A structure pointer that displays a character size
+    Color_Foreground : Select the foreground color
+    Color_Background : Select the background color
+******************************************************************************/
+void Paint_DrawChar(UWORD Xpoint, UWORD Ypoint, const char Acsii_Char,
+                    sFONT* Font, UWORD Color_Foreground, UWORD Color_Background)
+{
+    UWORD Page, Column;
+
+    if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
+        Debug("Paint_DrawChar Input exceeds the normal display range\r\n");
+        return;
+    }
+
+    uint32_t Char_Offset = (Acsii_Char - ' ') * Font->Height * (Font->Width / 8 + (Font->Width % 8 ? 1 : 0));
+    const unsigned char *ptr = &Font->table[Char_Offset];
+
+    for (Page = 0; Page < Font->Height; Page ++ ) {
+        for (Column = 0; Column < Font->Width; Column ++ ) {
+
+            //To determine whether the font background color and screen background color is consistent
+            if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan
+                if (*ptr & (0x80 >> (Column % 8)))
+                    Paint_SetPixel(Xpoint + Column, Ypoint + Page, Color_Foreground);
+                    // Paint_DrawPoint(Xpoint + Column, Ypoint + Page, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+            } else {
+                if (*ptr & (0x80 >> (Column % 8))) {
+                    Paint_SetPixel(Xpoint + Column, Ypoint + Page, Color_Foreground);
+                    // Paint_DrawPoint(Xpoint + Column, Ypoint + Page, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+                } else {
+                    Paint_SetPixel(Xpoint + Column, Ypoint + Page, Color_Background);
+                    // Paint_DrawPoint(Xpoint + Column, Ypoint + Page, Color_Background, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+                }
+            }
+            //One pixel is 8 bits
+            if (Column % 8 == 7)
+                ptr++;
+        }// Write a line
+        if (Font->Width % 8 != 0)
+            ptr++;
+    }// Write all
+}
+
+/******************************************************************************
+function:	Display the string
+parameter:
+    Xstart           :X coordinate
+    Ystart           :Y coordinate
+    pString          :The first address of the English string to be displayed
+    Font             :A structure pointer that displays a character size
+    Color_Foreground : Select the foreground color
+    Color_Background : Select the background color
+******************************************************************************/
+void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString,
+                         sFONT* Font, UWORD Color_Foreground, UWORD Color_Background)
+{
+    UWORD Xpoint = Xstart;
+    UWORD Ypoint = Ystart;
+
+    if (Xstart > Paint.Width || Ystart > Paint.Height) {
+        Debug("Paint_DrawString_EN Input exceeds the normal display range\r\n");
+        return;
+    }
+
+    while (* pString != '\0') {
+        //if X direction filled , reposition to(Xstart,Ypoint),Ypoint is Y direction plus the Height of the character
+        if ((Xpoint + Font->Width ) > Paint.Width ) {
+            Xpoint = Xstart;
+            Ypoint += Font->Height;
+        }
+
+        // If the Y direction is full, reposition to(Xstart, Ystart)
+        if ((Ypoint  + Font->Height ) > Paint.Height ) {
+            Xpoint = Xstart;
+            Ypoint = Ystart;
+        }
+        Paint_DrawChar(Xpoint, Ypoint, * pString, Font, Color_Background, Color_Foreground);
+
+        //The next character of the address
+        pString ++;
+
+        //The next word of the abscissa increases the font of the broadband
+        Xpoint += Font->Width;
+    }
+}
+
+
+/******************************************************************************
+function: Display the string
+parameter:
+    Xstart  :X coordinate
+    Ystart  :Y coordinate
+    pString :The first address of the Chinese string and English
+              string to be displayed
+    Font    :A structure pointer that displays a character size
+    Color_Foreground : Select the foreground color
+    Color_Background : Select the background color
+******************************************************************************/
+void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font,
+                        UWORD Color_Foreground, UWORD Color_Background)
+{
+    const char* p_text = pString;
+    int x = Xstart, y = Ystart;
+    int i, j,Num;
+
+    /* Send the string character by character on EPD */
+    while (*p_text != 0) {
+        if(*p_text <= 0x7F) {  //ASCII < 126
+            for(Num = 0; Num < font->size; Num++) {
+                if(*p_text== font->table[Num].index[0]) {
+                    const char* ptr = &font->table[Num].matrix[0];
+
+                    for (j = 0; j < font->Height; j++) {
+                        for (i = 0; i < font->Width; i++) {
+                            if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan
+                                if (*ptr & (0x80 >> (i % 8))) {
+                                    Paint_SetPixel(x + i, y + j, Color_Foreground);
+                                    // Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+                                }
+                            } else {
+                                if (*ptr & (0x80 >> (i % 8))) {
+                                    Paint_SetPixel(x + i, y + j, Color_Foreground);
+                                    // Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+                                } else {
+                                    Paint_SetPixel(x + i, y + j, Color_Background);
+                                    // Paint_DrawPoint(x + i, y + j, Color_Background, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+                                }
+                            }
+                            if (i % 8 == 7) {
+                                ptr++;
+                            }
+                        }
+                        if (font->Width % 8 != 0) {
+                            ptr++;
+                        }
+                    }
+                    break;
+                }
+            }
+            /* Point on the next character */
+            p_text += 1;
+            /* Decrement the column position by 16 */
+            x += font->ASCII_Width;
+        } else {        //Chinese
+            for(Num = 0; Num < font->size; Num++) {
+                if((*p_text== font->table[Num].index[0]) && (*(p_text+1) == font->table[Num].index[1])) {
+                    const char* ptr = &font->table[Num].matrix[0];
+
+                    for (j = 0; j < font->Height; j++) {
+                        for (i = 0; i < font->Width; i++) {
+                            if (FONT_BACKGROUND == Color_Background) { //this process is to speed up the scan
+                                if (*ptr & (0x80 >> (i % 8))) {
+                                    Paint_SetPixel(x + i, y + j, Color_Foreground);
+                                    // Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+                                }
+                            } else {
+                                if (*ptr & (0x80 >> (i % 8))) {
+                                    Paint_SetPixel(x + i, y + j, Color_Foreground);
+                                    // Paint_DrawPoint(x + i, y + j, Color_Foreground, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+                                } else {
+                                    Paint_SetPixel(x + i, y + j, Color_Background);
+                                    // Paint_DrawPoint(x + i, y + j, Color_Background, DOT_PIXEL_DFT, DOT_STYLE_DFT);
+                                }
+                            }
+                            if (i % 8 == 7) {
+                                ptr++;
+                            }
+                        }
+                        if (font->Width % 8 != 0) {
+                            ptr++;
+                        }
+                    }
+                    break;
+                }
+            }
+            /* Point on the next character */
+            p_text += 2;
+            /* Decrement the column position by 16 */
+            x += font->Width;
+        }
+    }
+}
+
+/******************************************************************************
+function:	Display nummber
+parameter:
+    Xstart           :X coordinate
+    Ystart           : Y coordinate
+    Nummber          : The number displayed
+    Font             :A structure pointer that displays a character size
+    Color_Foreground : Select the foreground color
+    Color_Background : Select the background color
+******************************************************************************/
+#define  ARRAY_LEN 255
+void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber,
+                   sFONT* Font, UWORD Color_Foreground, UWORD Color_Background)
+{
+
+    int16_t Num_Bit = 0, Str_Bit = 0;
+    uint8_t Str_Array[ARRAY_LEN] = {0}, Num_Array[ARRAY_LEN] = {0};
+    uint8_t *pStr = Str_Array;
+
+    if (Xpoint > Paint.Width || Ypoint > Paint.Height) {
+        Debug("Paint_DisNum Input exceeds the normal display range\r\n");
+        return;
+    }
+
+    //Converts a number to a string
+    while (Nummber) {
+        Num_Array[Num_Bit] = Nummber % 10 + '0';
+        Num_Bit++;
+        Nummber /= 10;
+    }
+
+    //The string is inverted
+    while (Num_Bit > 0) {
+        Str_Array[Str_Bit] = Num_Array[Num_Bit - 1];
+        Str_Bit ++;
+        Num_Bit --;
+    }
+
+    //show
+    Paint_DrawString_EN(Xpoint, Ypoint, (const char*)pStr, Font, Color_Background, Color_Foreground);
+}
+
+/******************************************************************************
+function:	Display time
+parameter:
+    Xstart           :X coordinate
+    Ystart           : Y coordinate
+    pTime            : Time-related structures
+    Font             :A structure pointer that displays a character size
+    Color_Foreground : Select the foreground color
+    Color_Background : Select the background color
+******************************************************************************/
+void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font,
+                    UWORD Color_Foreground, UWORD Color_Background)
+{
+    uint8_t value[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
+
+    UWORD Dx = Font->Width;
+
+    //Write data into the cache
+    Paint_DrawChar(Xstart                           , Ystart, value[pTime->Hour / 10], Font, Color_Background, Color_Foreground);
+    Paint_DrawChar(Xstart + Dx                      , Ystart, value[pTime->Hour % 10], Font, Color_Background, Color_Foreground);
+    Paint_DrawChar(Xstart + Dx  + Dx / 4 + Dx / 2   , Ystart, ':'                    , Font, Color_Background, Color_Foreground);
+    Paint_DrawChar(Xstart + Dx * 2 + Dx / 2         , Ystart, value[pTime->Min / 10] , Font, Color_Background, Color_Foreground);
+    Paint_DrawChar(Xstart + Dx * 3 + Dx / 2         , Ystart, value[pTime->Min % 10] , Font, Color_Background, Color_Foreground);
+    Paint_DrawChar(Xstart + Dx * 4 + Dx / 2 - Dx / 4, Ystart, ':'                    , Font, Color_Background, Color_Foreground);
+    Paint_DrawChar(Xstart + Dx * 5                  , Ystart, value[pTime->Sec / 10] , Font, Color_Background, Color_Foreground);
+    Paint_DrawChar(Xstart + Dx * 6                  , Ystart, value[pTime->Sec % 10] , Font, Color_Background, Color_Foreground);
+}
+
+/******************************************************************************
+function:	Display monochrome bitmap
+parameter:
+    image_buffer :A picture data converted to a bitmap
+info:
+    Use a computer to convert the image into a corresponding array,
+    and then embed the array directly into Imagedata.cpp as a .c file.
+******************************************************************************/
+void Paint_DrawBitMap(const unsigned char* image_buffer)
+{
+    UWORD x, y;
+    UDOUBLE Addr = 0;
+
+    for (y = 0; y < Paint.HeightByte; y++) {
+        for (x = 0; x < Paint.WidthByte; x++) {//8 pixel =  1 byte
+            Addr = x + y * Paint.WidthByte;
+            Paint.Image[Addr] = (unsigned char)image_buffer[Addr];
+        }
+    }
+}
+
+///******************************************************************************
+//function:	SDisplay half of monochrome bitmap
+//parameter:
+//	Region : 1 Upper half
+//					 2 Lower half
+//info:
+//******************************************************************************/
+//void Paint_DrawBitMap_Half(const unsigned char* image_buffer, UBYTE Region)
+//{
+//    UWORD x, y;
+//    UDOUBLE Addr = 0;
+//		
+//		if(Region == 1){
+//			for (y = 0; y < Paint.HeightByte; y++) {
+//					for (x = 0; x < Paint.WidthByte; x++) {//8 pixel =  1 byte
+//							Addr = x + y * Paint.WidthByte;
+//							Paint.Image[Addr] = (unsigned char)image_buffer[Addr];
+//					}
+//			}
+//		}else{
+//			for (y = 0; y < Paint.HeightByte; y++) {
+//					for (x = 0; x < Paint.WidthByte; x++) {//8 pixel =  1 byte
+//							Addr = x + y * Paint.WidthByte ;
+//							Paint.Image[Addr] = \
+//							(unsigned char)image_buffer[Addr+ (Paint.HeightByte)*Paint.WidthByte];
+//					}
+//			}
+//		}
+//}
+
+///******************************************************************************
+//function:	SDisplay half of monochrome bitmap
+//parameter:
+//	Region : 1 Upper half
+//					 2 Lower half
+//info:
+//******************************************************************************/
+//void Paint_DrawBitMap_OneQuarter(const unsigned char* image_buffer, UBYTE Region)
+//{
+//    UWORD x, y;
+//    UDOUBLE Addr = 0;
+//		
+//		if(Region == 1){
+//			for (y = 0; y < Paint.HeightByte; y++) {
+//					for (x = 0; x < Paint.WidthByte; x++) {//8 pixel =  1 byte
+//							Addr = x + y * Paint.WidthByte;
+//							Paint.Image[Addr] = (unsigned char)image_buffer[Addr];
+//					}
+//			}
+//		}else if(Region == 2){
+//			for (y = 0; y < Paint.HeightByte; y++) {
+//					for (x = 0; x < Paint.WidthByte; x++) {//8 pixel =  1 byte
+//							Addr = x + y * Paint.WidthByte ;
+//							Paint.Image[Addr] = \
+//							(unsigned char)image_buffer[Addr+ (Paint.HeightByte)*Paint.WidthByte];
+//					}
+//			}
+//		}else if(Region == 3){
+//			for (y = 0; y < Paint.HeightByte; y++) {
+//					for (x = 0; x < Paint.WidthByte; x++) {//8 pixel =  1 byte
+//							Addr = x + y * Paint.WidthByte ;
+//							Paint.Image[Addr] = \
+//							(unsigned char)image_buffer[Addr+ (Paint.HeightByte)*Paint.WidthByte*2];
+//					}
+//			}
+//		}else if(Region == 4){
+//			for (y = 0; y < Paint.HeightByte; y++) {
+//					for (x = 0; x < Paint.WidthByte; x++) {//8 pixel =  1 byte
+//							Addr = x + y * Paint.WidthByte ;
+//							Paint.Image[Addr] = \
+//							(unsigned char)image_buffer[Addr+ (Paint.HeightByte)*Paint.WidthByte*3];
+//					}
+//			}
+//		}
+//}
+
+void Paint_DrawBitMap_Block(const unsigned char* image_buffer, UBYTE Region)
+{
+    UWORD x, y;
+    UDOUBLE Addr = 0;
+		for (y = 0; y < Paint.HeightByte; y++) {
+				for (x = 0; x < Paint.WidthByte; x++) {//8 pixel =  1 byte
+						Addr = x + y * Paint.WidthByte ;
+						Paint.Image[Addr] = \
+						(unsigned char)image_buffer[Addr+ (Paint.HeightByte)*Paint.WidthByte*(Region - 1)];
+				}
+		}
+}
+

+ 212 - 0
luat/packages/epaper/GUI_Paint.h

@@ -0,0 +1,212 @@
+/******************************************************************************
+* | File      	:   GUI_Paint.h
+* | Author      :   Waveshare electronics
+* | Function    :	Achieve drawing: draw points, lines, boxes, circles and
+*                   their size, solid dotted line, solid rectangle hollow
+*                   rectangle, solid circle hollow circle.
+* | Info        :
+*   Achieve display characters: Display a single character, string, number
+*   Achieve time display: adaptive size display time minutes and seconds
+*----------------
+* |	This version:   V3.0
+* | Date        :   2019-04-18
+* | Info        :
+* -----------------------------------------------------------------------------
+* V3.0(2019-04-18):
+* 1.Change: 
+*    Paint_DrawPoint(..., DOT_STYLE DOT_STYLE)
+* => Paint_DrawPoint(..., DOT_STYLE Dot_Style)
+*    Paint_DrawLine(..., LINE_STYLE Line_Style, DOT_PIXEL Dot_Pixel)
+* => Paint_DrawLine(..., DOT_PIXEL Line_width, LINE_STYLE Line_Style)
+*    Paint_DrawRectangle(..., DRAW_FILL Filled, DOT_PIXEL Dot_Pixel)
+* => Paint_DrawRectangle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Fill)
+*    Paint_DrawCircle(..., DRAW_FILL Draw_Fill, DOT_PIXEL Dot_Pixel)
+* => Paint_DrawCircle(..., DOT_PIXEL Line_width, DRAW_FILL Draw_Filll)
+*
+* -----------------------------------------------------------------------------
+* V2.0(2018-11-15):
+* 1.add: Paint_NewImage()
+*    Create an image's properties
+* 2.add: Paint_SelectImage()
+*    Select the picture to be drawn
+* 3.add: Paint_SetRotate()
+*    Set the direction of the cache    
+* 4.add: Paint_RotateImage() 
+*    Can flip the picture, Support 0-360 degrees, 
+*    but only 90.180.270 rotation is better
+* 4.add: Paint_SetMirroring() 
+*    Can Mirroring the picture, horizontal, vertical, origin
+* 5.add: Paint_DrawString_CN() 
+*    Can display Chinese(GB1312)   
+*
+* ----------------------------------------------------------------------------- 
+* V1.0(2018-07-17):
+*   Create library
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy
+* of this software and associated documnetation files (the "Software"), to deal
+* in the Software without restriction, including without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to permit persons to  whom the Software is
+* furished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS OR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+* THE SOFTWARE.
+*
+******************************************************************************/
+#ifndef __GUI_PAINT_H
+#define __GUI_PAINT_H
+
+#include "DEV_Config.h"
+#include "../Fonts/fonts.h"
+
+/**
+ * Image attributes
+**/
+typedef struct {
+    UBYTE *Image;
+    UWORD Width;
+    UWORD Height;
+    UWORD WidthMemory;
+    UWORD HeightMemory;
+    UWORD Color;
+    UWORD Rotate;
+    UWORD Mirror;
+    UWORD WidthByte;
+    UWORD HeightByte;
+    UWORD Scale;
+} PAINT;
+extern PAINT Paint;
+
+/**
+ * Display rotate
+**/
+#define ROTATE_0            0
+#define ROTATE_90           90
+#define ROTATE_180          180
+#define ROTATE_270          270
+
+/**
+ * Display Flip
+**/
+typedef enum {
+    MIRROR_NONE  = 0x00,
+    MIRROR_HORIZONTAL = 0x01,
+    MIRROR_VERTICAL = 0x02,
+    MIRROR_ORIGIN = 0x03,
+} MIRROR_IMAGE;
+#define MIRROR_IMAGE_DFT MIRROR_NONE
+
+/**
+ * image color
+**/
+#define WHITE          0xFF
+#define BLACK          0x00
+#define RED            BLACK
+
+#define IMAGE_BACKGROUND    WHITE
+#define FONT_FOREGROUND     BLACK
+#define FONT_BACKGROUND     WHITE
+
+//4 Gray level
+#define  GRAY1 0x03 //Blackest
+#define  GRAY2 0x02
+#define  GRAY3 0x01 //gray
+#define  GRAY4 0x00 //white
+/**
+ * The size of the point
+**/
+typedef enum {
+    DOT_PIXEL_1X1  = 1,		// 1 x 1
+    DOT_PIXEL_2X2  , 		// 2 X 2
+    DOT_PIXEL_3X3  ,		// 3 X 3
+    DOT_PIXEL_4X4  ,		// 4 X 4
+    DOT_PIXEL_5X5  , 		// 5 X 5
+    DOT_PIXEL_6X6  , 		// 6 X 6
+    DOT_PIXEL_7X7  , 		// 7 X 7
+    DOT_PIXEL_8X8  , 		// 8 X 8
+} DOT_PIXEL;
+#define DOT_PIXEL_DFT  DOT_PIXEL_1X1  //Default dot pilex
+
+/**
+ * Point size fill style
+**/
+typedef enum {
+    DOT_FILL_AROUND  = 1,		// dot pixel 1 x 1
+    DOT_FILL_RIGHTUP  , 		// dot pixel 2 X 2
+} DOT_STYLE;
+#define DOT_STYLE_DFT  DOT_FILL_AROUND  //Default dot pilex
+
+/**
+ * Line style, solid or dashed
+**/
+typedef enum {
+    LINE_STYLE_SOLID = 0,
+    LINE_STYLE_DOTTED,
+} LINE_STYLE;
+
+/**
+ * Whether the graphic is filled
+**/
+typedef enum {
+    DRAW_FILL_EMPTY = 0,
+    DRAW_FILL_FULL,
+} DRAW_FILL;
+
+/**
+ * Custom structure of a time attribute
+**/
+typedef struct {
+    UWORD Year;  //0000
+    UBYTE  Month; //1 - 12
+    UBYTE  Day;   //1 - 30
+    UBYTE  Hour;  //0 - 23
+    UBYTE  Min;   //0 - 59
+    UBYTE  Sec;   //0 - 59
+} PAINT_TIME;
+extern PAINT_TIME sPaint_time;
+
+//init and Clear
+void Paint_NewImage(UBYTE *image, UWORD Width, UWORD Height, UWORD Rotate, UWORD Color);
+void Paint_SelectImage(UBYTE *image);
+void Paint_SetRotate(UWORD Rotate);
+void Paint_SetMirroring(UBYTE mirror);
+void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color);
+void Paint_SetScale(UBYTE scale);
+
+void Paint_Clear(UWORD Color);
+void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color);
+
+//Drawing
+void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_FillWay);
+void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, LINE_STYLE Line_Style);
+void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill);
+void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill);
+
+//Display string
+void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Acsii_Char, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
+void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
+void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Foreground, UWORD Color_Background);
+void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, int32_t Nummber, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
+void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background);
+
+//pic
+void Paint_DrawBitMap(const unsigned char* image_buffer);
+//void Paint_DrawBitMap_Half(const unsigned char* image_buffer, UBYTE Region);
+//void Paint_DrawBitMap_OneQuarter(const unsigned char* image_buffer, UBYTE Region);
+//void Paint_DrawBitMap_OneEighth(const unsigned char* image_buffer, UBYTE Region);
+void Paint_DrawBitMap_Block(const unsigned char* image_buffer, UBYTE Region);
+#endif
+
+
+
+
+

+ 187 - 0
luat/packages/epaper/epd.c

@@ -0,0 +1,187 @@
+
+
+#include "epd.h"
+
+static UBYTE cur_model = MODEL_1in54f;
+
+void EPD_Model(UBYTE model) {
+    cur_model = model;
+}
+
+int EPD_Init(UBYTE mode) {
+    switch (cur_model)
+    {
+    case MODEL_1in02d:
+        EPD_1IN02_Init();
+        break;
+    case MODEL_1in54:
+        EPD_1IN54_Init(mode);
+        break;
+    case MODEL_1in54b_V2:
+        EPD_1IN54B_V2_Init();
+        break;
+    case MODEL_1in54b:
+        EPD_1IN54B_Init();
+        break;
+    case MODEL_1in54c:
+        EPD_1IN54C_Init();
+        break;
+    case MODEL_1in54f:
+        EPD_1IN54FF_Init();
+        break;
+    case MODEL_2in7:
+        EPD_2IN7_Init();
+        break;
+    case MODEL_2in7b:
+        EPD_2IN7B_Init();
+        break;
+    case MODEL_2in9:
+        EPD_2IN9_Init(mode);
+        break;
+    case MODEL_2in9b_V3:
+        EPD_2IN9B_V3_Init();
+        break;
+    case MODEL_2in9bc:
+        EPD_2IN9BC_Init();
+        break;
+    case MODEL_2in9d:
+        EPD_2IN9D_Init();
+        break;
+    
+    default:
+        return -1;
+    }
+    return 0;
+}
+void EPD_Clear(void) {
+    switch (cur_model)
+    {
+    case MODEL_1in02d:
+        EPD_1IN02_Clear();
+        break;
+    case MODEL_1in54:
+        EPD_1IN54_Clear();
+        break;
+    case MODEL_1in54b_V2:
+        EPD_1IN54B_V2_Clear();
+        break;
+    case MODEL_1in54b:
+        EPD_1IN54B_Clear();
+        break;
+    case MODEL_1in54c:
+        EPD_1IN54C_Clear();
+        break;
+    case MODEL_1in54f:
+        EPD_1IN54FF_Clear();
+        break;
+    case MODEL_2in7:
+        EPD_2IN7_Clear();
+        break;
+    case MODEL_2in7b:
+        EPD_2IN7B_Clear();
+        break;
+    case MODEL_2in9:
+        EPD_2IN9_Clear();
+        break;
+    case MODEL_2in9b_V3:
+        EPD_2IN9B_V3_Clear();
+        break;
+    case MODEL_2in9bc:
+        EPD_2IN9BC_Clear();
+        break;
+    case MODEL_2in9d:
+        EPD_2IN9D_Clear();
+        break;
+    
+    default:
+        break;
+    }
+}
+void EPD_Display(UBYTE *Image, UBYTE *Image2) {
+    switch (cur_model)
+    {
+    case MODEL_1in02d:
+        EPD_1IN02_Display(Image);
+        break;
+    case MODEL_1in54:
+        EPD_1IN54_Display(Image);
+        break;
+    case MODEL_1in54b_V2:
+        EPD_1IN54B_V2_Display(Image, Image2);
+        break;
+    case MODEL_1in54b:
+        EPD_1IN54B_Display(Image, Image2);
+        break;
+    case MODEL_1in54c:
+        EPD_1IN54C_Display(Image, Image2);
+        break;
+    case MODEL_1in54f:
+        EPD_1IN54FF_Display(Image);
+        break;
+    case MODEL_2in7:
+        EPD_2IN7_Display(Image);
+        break;
+    case MODEL_2in7b:
+        EPD_2IN7B_Display(Image, Image2);
+        break;
+    case MODEL_2in9:
+        EPD_2IN9_Display(Image);
+        break;
+    case MODEL_2in9b_V3:
+        EPD_2IN9B_V3_Display(Image, Image2);
+        break;
+    case MODEL_2in9bc:
+        EPD_2IN9BC_Display(Image, Image2);
+        break;
+    case MODEL_2in9d:
+        EPD_2IN9D_Display(Image);
+        break;
+    
+    default:
+        break;
+    }
+}
+void EPD_Sleep(void) {
+    switch (cur_model)
+    {
+    case MODEL_1in02d:
+        EPD_1IN02_Sleep();
+        break;
+    case MODEL_1in54:
+        EPD_1IN54_Sleep();
+        break;
+    case MODEL_1in54b_V2:
+        EPD_1IN54B_V2_Sleep();
+        break;
+    case MODEL_1in54b:
+        EPD_1IN54B_Sleep();
+        break;
+    case MODEL_1in54c:
+        EPD_1IN54C_Sleep();
+        break;
+    case MODEL_1in54f:
+        EPD_1IN54FF_Sleep();
+        break;
+    case MODEL_2in7:
+        EPD_2IN7_Sleep();
+        break;
+    case MODEL_2in7b:
+        EPD_2IN7B_Sleep();
+        break;
+    case MODEL_2in9:
+        EPD_2IN9_Sleep();
+        break;
+    case MODEL_2in9b_V3:
+        EPD_2IN9B_V3_Sleep();
+        break;
+    case MODEL_2in9bc:
+        EPD_2IN9BC_Sleep();
+        break;
+    case MODEL_2in9d:
+        EPD_2IN9D_Sleep();
+        break;
+    
+    default:
+        break;
+    }
+}

+ 47 - 0
luat/packages/epaper/epd.h

@@ -0,0 +1,47 @@
+
+#ifndef EPD_EPD
+#define EPD_EPD
+
+#include "stdio.h"
+#include "Debug.h"
+#include "DEV_Config.h"
+
+void EPD_Model(UBYTE model);
+int EPD_Init(UBYTE Mode);
+void EPD_Clear(void);
+void EPD_Display(UBYTE *Image, UBYTE *Image2);
+void EPD_Sleep(void);
+
+enum EPD_MODEL {
+    MODEL_1in02d,
+    MODEL_1in54,
+    MODEL_1in54b,
+    MODEL_1in54b_V2,
+    MODEL_1in54c,
+    MODEL_1in54f,
+    MODEL_2in7,
+    MODEL_2in7b,
+    MODEL_2in9,
+    MODEL_2in9_V2,
+    MODEL_2in9bc,
+    MODEL_2in9b_V3,
+    MODEL_2in9d,
+};
+
+
+#include "EPD_1in02d.h"
+#include "EPD_1in54.h"
+#include "EPD_1in54b.h"
+#include "EPD_1in54b_V2.h"
+#include "EPD_1in54c.h"
+#include "EPD_1in54f.h"
+#include "EPD_2in7.h"
+#include "EPD_2in7b.h"
+#include "EPD_2in9.h"
+#include "EPD_2in9_V2.h"
+#include "EPD_2in9bc.h"
+#include "EPD_2in9b_V3.h"
+#include "EPD_2in9d.h"
+
+
+#endif

+ 10 - 0
luat/packages/iconv/SConscript

@@ -0,0 +1,10 @@
+from building import *
+
+cwd = GetCurrentDir()
+src = Glob('*.c')
+
+CPPPATH = [cwd]
+
+group = DefineGroup('iconv', src, depend = [], CPPPATH = CPPPATH)
+
+Return('group')

+ 92 - 0
luat/packages/iconv/gb2312_to_ucs2.c

@@ -0,0 +1,92 @@
+/**************************************************************************
+ *              Copyright (C), AirM2M Tech. Co., Ltd.
+ *
+ * Name:    gb2312_to_ucs2.c
+ * Author:  liweiqiang
+ * Version: V0.1
+ * Date:    2013/11/26
+ *
+ * Description:
+ *          gb2312 ת»» ucs2
+ **************************************************************************/
+
+#include "stdio.h"
+#include "errno.h"
+#include "luat_base.h"
+
+#include "gb2312_to_ucs2_table.h"
+
+#define u16 uint16_t
+#define u8 uint8_t
+
+size_t iconv_gb2312_to_ucs2_endian(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft, int endian)
+{
+    u16 offset,gb2312;
+    char *gbbuf = *_inbuf;
+    u16 *ucs2buf = (u16*)*_outbuf;
+    u16 ucs2;
+    size_t ucs2len = 0;
+    size_t inlen = *inbytesleft;
+    size_t outlen = *outbytesleft;
+    size_t ret = 0;
+    
+    while(inlen > 0)
+    {
+        if(ucs2len+2 > outlen)
+        {
+            errno = E2BIG;
+            ret = -1;
+            goto gb2312_to_ucs2_exit;
+        }
+
+        gb2312 = *gbbuf++;
+
+        if(gb2312 < 0x80)
+        {
+            ucs2 = gb2312;
+            inlen--;
+        }
+        else if(inlen >= 2)
+        {
+            gb2312 = (gb2312<<8) + ((*gbbuf++)&0x00ff);
+            inlen -= 2;
+            
+            offset = ((gb2312>>8) - 0xA0)*94/*(0xFE-0xA1+1)*/ + ((gb2312&0x00ff) - 0xA1);
+            ucs2 = gb2312_to_ucs2_table[offset];
+        }
+        else
+        {
+            break;
+        }
+
+        if(endian == 1)
+            ucs2 = (ucs2<<8)|(ucs2>>8);
+
+        *ucs2buf++ = ucs2;
+        ucs2len += 2;
+    }
+
+    if(inlen > 0)
+    {
+        errno = EINVAL;
+        ret = -1;
+    }
+
+gb2312_to_ucs2_exit:
+    *_inbuf = gbbuf;
+
+    *inbytesleft = inlen;
+    *outbytesleft -= ucs2len;
+
+    return ret;
+}
+
+size_t iconv_gb2312_to_ucs2(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft)
+{
+    return iconv_gb2312_to_ucs2_endian(_inbuf, inbytesleft, _outbuf, outbytesleft, 0);
+}
+
+size_t iconv_gb2312_to_ucs2be(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft)
+{
+    return iconv_gb2312_to_ucs2_endian(_inbuf, inbytesleft, _outbuf, outbytesleft, 1);
+}

+ 8277 - 0
luat/packages/iconv/gb2312_to_ucs2_table.h

@@ -0,0 +1,8277 @@
+#include "luat_base.h"
+#define u16 uint16_t
+#define u8 uint8_t
+const u16 gb2312_to_ucs2_table[] = {
+    /* 0xA0A1   */ 0x724E,
+    /* 0xA0A2   */ 0x724F,
+    /* 0xA0A3   */ 0x7250,
+    /* 0xA0A4   */ 0x7251,
+    /* 0xA0A5   */ 0x7253,
+    /* 0xA0A6   */ 0x7254,
+    /* 0xA0A7   */ 0x7255,
+    /* 0xA0A8   */ 0x7257,
+    /* 0xA0A9   */ 0x7258,
+    /* 0xA0AA   */ 0x725A,
+    /* 0xA0AB   */ 0x725C,
+    /* 0xA0AC   */ 0x725E,
+    /* 0xA0AD   */ 0x7260,
+    /* 0xA0AE   */ 0x7263,
+    /* 0xA0AF   */ 0x7264,
+    /* 0xA0B0   */ 0x7265,
+    /* 0xA0B1   */ 0x7268,
+    /* 0xA0B2   */ 0x726A,
+    /* 0xA0B3   */ 0x726B,
+    /* 0xA0B4   */ 0x726C,
+    /* 0xA0B5   */ 0x726D,
+    /* 0xA0B6   */ 0x7270,
+    /* 0xA0B7   */ 0x7271,
+    /* 0xA0B8   */ 0x7273,
+    /* 0xA0B9   */ 0x7274,
+    /* 0xA0BA   */ 0x7276,
+    /* 0xA0BB   */ 0x7277,
+    /* 0xA0BC   */ 0x7278,
+    /* 0xA0BD   */ 0x727B,
+    /* 0xA0BE   */ 0x727C,
+    /* 0xA0BF   */ 0x727D,
+    /* 0xA0C0   */ 0x7282,
+    /* 0xA0C1   */ 0x7283,
+    /* 0xA0C2   */ 0x7285,
+    /* 0xA0C3   */ 0x7286,
+    /* 0xA0C4   */ 0x7287,
+    /* 0xA0C5   */ 0x7288,
+    /* 0xA0C6   */ 0x7289,
+    /* 0xA0C7   */ 0x728C,
+    /* 0xA0C8   */ 0x728E,
+    /* 0xA0C9   */ 0x7290,
+    /* 0xA0CA   */ 0x7291,
+    /* 0xA0CB   */ 0x7293,
+    /* 0xA0CC   */ 0x7294,
+    /* 0xA0CD   */ 0x7295,
+    /* 0xA0CE   */ 0x7296,
+    /* 0xA0CF   */ 0x7297,
+    /* 0xA0D0   */ 0x7298,
+    /* 0xA0D1   */ 0x7299,
+    /* 0xA0D2   */ 0x729A,
+    /* 0xA0D3   */ 0x729B,
+    /* 0xA0D4   */ 0x729C,
+    /* 0xA0D5   */ 0x729D,
+    /* 0xA0D6   */ 0x729E,
+    /* 0xA0D7   */ 0x72A0,
+    /* 0xA0D8   */ 0x72A1,
+    /* 0xA0D9   */ 0x72A2,
+    /* 0xA0DA   */ 0x72A3,
+    /* 0xA0DB   */ 0x72A4,
+    /* 0xA0DC   */ 0x72A5,
+    /* 0xA0DD   */ 0x72A6,
+    /* 0xA0DE   */ 0x72A7,
+    /* 0xA0DF   */ 0x72A8,
+    /* 0xA0E0   */ 0x72A9,
+    /* 0xA0E1   */ 0x72AA,
+    /* 0xA0E2   */ 0x72AB,
+    /* 0xA0E3   */ 0x72AE,
+    /* 0xA0E4   */ 0x72B1,
+    /* 0xA0E5   */ 0x72B2,
+    /* 0xA0E6   */ 0x72B3,
+    /* 0xA0E7   */ 0x72B5,
+    /* 0xA0E8   */ 0x72BA,
+    /* 0xA0E9   */ 0x72BB,
+    /* 0xA0EA   */ 0x72BC,
+    /* 0xA0EB   */ 0x72BD,
+    /* 0xA0EC   */ 0x72BE,
+    /* 0xA0ED   */ 0x72BF,
+    /* 0xA0EE   */ 0x72C0,
+    /* 0xA0EF   */ 0x72C5,
+    /* 0xA0F0   */ 0x72C6,
+    /* 0xA0F1   */ 0x72C7,
+    /* 0xA0F2   */ 0x72C9,
+    /* 0xA0F3   */ 0x72CA,
+    /* 0xA0F4   */ 0x72CB,
+    /* 0xA0F5   */ 0x72CC,
+    /* 0xA0F6   */ 0x72CF,
+    /* 0xA0F7   */ 0x72D1,
+    /* 0xA0F8   */ 0x72D3,
+    /* 0xA0F9   */ 0x72D4,
+    /* 0xA0FA   */ 0x72D5,
+    /* 0xA0FB   */ 0x72D6,
+    /* 0xA0FC   */ 0x72D8,
+    /* 0xA0FD   */ 0x72DA,
+    /* 0xA0FE   */ 0x72DB,
+    /* 0xA1A1   */ 0x3000,
+    /* 0xA1A2   */ 0x3001,
+    /* 0xA1A3   */ 0x3002,
+    /* 0xA1A4   */ 0x00B7,
+    /* 0xA1A5   */ 0x02C9,
+    /* 0xA1A6   */ 0x02C7,
+    /* 0xA1A7   */ 0x00A8,
+    /* 0xA1A8   */ 0x3003,
+    /* 0xA1A9   */ 0x3005,
+    /* 0xA1AA   */ 0x2014,
+    /* 0xA1AB   */ 0xFF5E,
+    /* 0xA1AC   */ 0x2016,
+    /* 0xA1AD   */ 0x2026,
+    /* 0xA1AE   */ 0x2018,
+    /* 0xA1AF   */ 0x2019,
+    /* 0xA1B0   */ 0x201C,
+    /* 0xA1B1   */ 0x201D,
+    /* 0xA1B2   */ 0x3014,
+    /* 0xA1B3   */ 0x3015,
+    /* 0xA1B4   */ 0x3008,
+    /* 0xA1B5   */ 0x3009,
+    /* 0xA1B6   */ 0x300A,
+    /* 0xA1B7   */ 0x300B,
+    /* 0xA1B8   */ 0x300C,
+    /* 0xA1B9   */ 0x300D,
+    /* 0xA1BA   */ 0x300E,
+    /* 0xA1BB   */ 0x300F,
+    /* 0xA1BC   */ 0x3016,
+    /* 0xA1BD   */ 0x3017,
+    /* 0xA1BE   */ 0x3010,
+    /* 0xA1BF   */ 0x3011,
+    /* 0xA1C0   */ 0x00B1,
+    /* 0xA1C1   */ 0x00D7,
+    /* 0xA1C2   */ 0x00F7,
+    /* 0xA1C3   */ 0x2236,
+    /* 0xA1C4   */ 0x2227,
+    /* 0xA1C5   */ 0x2228,
+    /* 0xA1C6   */ 0x2211,
+    /* 0xA1C7   */ 0x220F,
+    /* 0xA1C8   */ 0x222A,
+    /* 0xA1C9   */ 0x2229,
+    /* 0xA1CA   */ 0x2208,
+    /* 0xA1CB   */ 0x2237,
+    /* 0xA1CC   */ 0x221A,
+    /* 0xA1CD   */ 0x22A5,
+    /* 0xA1CE   */ 0x2225,
+    /* 0xA1CF   */ 0x2220,
+    /* 0xA1D0   */ 0x2312,
+    /* 0xA1D1   */ 0x2299,
+    /* 0xA1D2   */ 0x222B,
+    /* 0xA1D3   */ 0x222E,
+    /* 0xA1D4   */ 0x2261,
+    /* 0xA1D5   */ 0x224C,
+    /* 0xA1D6   */ 0x2248,
+    /* 0xA1D7   */ 0x223D,
+    /* 0xA1D8   */ 0x221D,
+    /* 0xA1D9   */ 0x2260,
+    /* 0xA1DA   */ 0x226E,
+    /* 0xA1DB   */ 0x226F,
+    /* 0xA1DC   */ 0x2264,
+    /* 0xA1DD   */ 0x2265,
+    /* 0xA1DE   */ 0x221E,
+    /* 0xA1DF   */ 0x2235,
+    /* 0xA1E0   */ 0x2234,
+    /* 0xA1E1   */ 0x2642,
+    /* 0xA1E2   */ 0x2640,
+    /* 0xA1E3   */ 0x00B0,
+    /* 0xA1E4   */ 0x2032,
+    /* 0xA1E5   */ 0x2033,
+    /* 0xA1E6   */ 0x2103,
+    /* 0xA1E7   */ 0xFF04,
+    /* 0xA1E8   */ 0x00A4,
+    /* 0xA1E9   */ 0xFFE0,
+    /* 0xA1EA   */ 0xFFE1,
+    /* 0xA1EB   */ 0x2030,
+    /* 0xA1EC   */ 0x00A7,
+    /* 0xA1ED   */ 0x2116,
+    /* 0xA1EE   */ 0x2606,
+    /* 0xA1EF   */ 0x2605,
+    /* 0xA1F0   */ 0x25CB,
+    /* 0xA1F1   */ 0x25CF,
+    /* 0xA1F2   */ 0x25CE,
+    /* 0xA1F3   */ 0x25C7,
+    /* 0xA1F4   */ 0x25C6,
+    /* 0xA1F5   */ 0x25A1,
+    /* 0xA1F6   */ 0x25A0,
+    /* 0xA1F7   */ 0x25B3,
+    /* 0xA1F8   */ 0x25B2,
+    /* 0xA1F9   */ 0x203B,
+    /* 0xA1FA   */ 0x2192,
+    /* 0xA1FB   */ 0x2190,
+    /* 0xA1FC   */ 0x2191,
+    /* 0xA1FD   */ 0x2193,
+    /* 0xA1FE   */ 0x3013,
+    /* 0xA2A1   */ 0x2170,
+    /* 0xA2A2   */ 0x2171,
+    /* 0xA2A3   */ 0x2172,
+    /* 0xA2A4   */ 0x2173,
+    /* 0xA2A5   */ 0x2174,
+    /* 0xA2A6   */ 0x2175,
+    /* 0xA2A7   */ 0x2176,
+    /* 0xA2A8   */ 0x2177,
+    /* 0xA2A9   */ 0x2178,
+    /* 0xA2AA   */ 0x2179,
+    /* 0xA2AB   */ 0xE766,
+    /* 0xA2AC   */ 0xE767,
+    /* 0xA2AD   */ 0xE768,
+    /* 0xA2AE   */ 0xE769,
+    /* 0xA2AF   */ 0xE76A,
+    /* 0xA2B0   */ 0xE76B,
+    /* 0xA2B1   */ 0x2488,
+    /* 0xA2B2   */ 0x2489,
+    /* 0xA2B3   */ 0x248A,
+    /* 0xA2B4   */ 0x248B,
+    /* 0xA2B5   */ 0x248C,
+    /* 0xA2B6   */ 0x248D,
+    /* 0xA2B7   */ 0x248E,
+    /* 0xA2B8   */ 0x248F,
+    /* 0xA2B9   */ 0x2490,
+    /* 0xA2BA   */ 0x2491,
+    /* 0xA2BB   */ 0x2492,
+    /* 0xA2BC   */ 0x2493,
+    /* 0xA2BD   */ 0x2494,
+    /* 0xA2BE   */ 0x2495,
+    /* 0xA2BF   */ 0x2496,
+    /* 0xA2C0   */ 0x2497,
+    /* 0xA2C1   */ 0x2498,
+    /* 0xA2C2   */ 0x2499,
+    /* 0xA2C3   */ 0x249A,
+    /* 0xA2C4   */ 0x249B,
+    /* 0xA2C5   */ 0x2474,
+    /* 0xA2C6   */ 0x2475,
+    /* 0xA2C7   */ 0x2476,
+    /* 0xA2C8   */ 0x2477,
+    /* 0xA2C9   */ 0x2478,
+    /* 0xA2CA   */ 0x2479,
+    /* 0xA2CB   */ 0x247A,
+    /* 0xA2CC   */ 0x247B,
+    /* 0xA2CD   */ 0x247C,
+    /* 0xA2CE   */ 0x247D,
+    /* 0xA2CF   */ 0x247E,
+    /* 0xA2D0   */ 0x247F,
+    /* 0xA2D1   */ 0x2480,
+    /* 0xA2D2   */ 0x2481,
+    /* 0xA2D3   */ 0x2482,
+    /* 0xA2D4   */ 0x2483,
+    /* 0xA2D5   */ 0x2484,
+    /* 0xA2D6   */ 0x2485,
+    /* 0xA2D7   */ 0x2486,
+    /* 0xA2D8   */ 0x2487,
+    /* 0xA2D9   */ 0x2460,
+    /* 0xA2DA   */ 0x2461,
+    /* 0xA2DB   */ 0x2462,
+    /* 0xA2DC   */ 0x2463,
+    /* 0xA2DD   */ 0x2464,
+    /* 0xA2DE   */ 0x2465,
+    /* 0xA2DF   */ 0x2466,
+    /* 0xA2E0   */ 0x2467,
+    /* 0xA2E1   */ 0x2468,
+    /* 0xA2E2   */ 0x2469,
+    /* 0xA2E3   */ 0xE76C,
+    /* 0xA2E4   */ 0xE76D,
+    /* 0xA2E5   */ 0x3220,
+    /* 0xA2E6   */ 0x3221,
+    /* 0xA2E7   */ 0x3222,
+    /* 0xA2E8   */ 0x3223,
+    /* 0xA2E9   */ 0x3224,
+    /* 0xA2EA   */ 0x3225,
+    /* 0xA2EB   */ 0x3226,
+    /* 0xA2EC   */ 0x3227,
+    /* 0xA2ED   */ 0x3228,
+    /* 0xA2EE   */ 0x3229,
+    /* 0xA2EF   */ 0xE76E,
+    /* 0xA2F0   */ 0xE76F,
+    /* 0xA2F1   */ 0x2160,
+    /* 0xA2F2   */ 0x2161,
+    /* 0xA2F3   */ 0x2162,
+    /* 0xA2F4   */ 0x2163,
+    /* 0xA2F5   */ 0x2164,
+    /* 0xA2F6   */ 0x2165,
+    /* 0xA2F7   */ 0x2166,
+    /* 0xA2F8   */ 0x2167,
+    /* 0xA2F9   */ 0x2168,
+    /* 0xA2FA   */ 0x2169,
+    /* 0xA2FB   */ 0x216A,
+    /* 0xA2FC   */ 0x216B,
+    /* 0xA2FD   */ 0xE770,
+    /* 0xA2FE   */ 0xE771,
+    /* 0xA3A1   */ 0xFF01,
+    /* 0xA3A2   */ 0xFF02,
+    /* 0xA3A3   */ 0xFF03,
+    /* 0xA3A4   */ 0xFFE5,
+    /* 0xA3A5   */ 0xFF05,
+    /* 0xA3A6   */ 0xFF06,
+    /* 0xA3A7   */ 0xFF07,
+    /* 0xA3A8   */ 0xFF08,
+    /* 0xA3A9   */ 0xFF09,
+    /* 0xA3AA   */ 0xFF0A,
+    /* 0xA3AB   */ 0xFF0B,
+    /* 0xA3AC   */ 0xFF0C,
+    /* 0xA3AD   */ 0xFF0D,
+    /* 0xA3AE   */ 0xFF0E,
+    /* 0xA3AF   */ 0xFF0F,
+    /* 0xA3B0   */ 0xFF10,
+    /* 0xA3B1   */ 0xFF11,
+    /* 0xA3B2   */ 0xFF12,
+    /* 0xA3B3   */ 0xFF13,
+    /* 0xA3B4   */ 0xFF14,
+    /* 0xA3B5   */ 0xFF15,
+    /* 0xA3B6   */ 0xFF16,
+    /* 0xA3B7   */ 0xFF17,
+    /* 0xA3B8   */ 0xFF18,
+    /* 0xA3B9   */ 0xFF19,
+    /* 0xA3BA   */ 0xFF1A,
+    /* 0xA3BB   */ 0xFF1B,
+    /* 0xA3BC   */ 0xFF1C,
+    /* 0xA3BD   */ 0xFF1D,
+    /* 0xA3BE   */ 0xFF1E,
+    /* 0xA3BF   */ 0xFF1F,
+    /* 0xA3C0   */ 0xFF20,
+    /* 0xA3C1   */ 0xFF21,
+    /* 0xA3C2   */ 0xFF22,
+    /* 0xA3C3   */ 0xFF23,
+    /* 0xA3C4   */ 0xFF24,
+    /* 0xA3C5   */ 0xFF25,
+    /* 0xA3C6   */ 0xFF26,
+    /* 0xA3C7   */ 0xFF27,
+    /* 0xA3C8   */ 0xFF28,
+    /* 0xA3C9   */ 0xFF29,
+    /* 0xA3CA   */ 0xFF2A,
+    /* 0xA3CB   */ 0xFF2B,
+    /* 0xA3CC   */ 0xFF2C,
+    /* 0xA3CD   */ 0xFF2D,
+    /* 0xA3CE   */ 0xFF2E,
+    /* 0xA3CF   */ 0xFF2F,
+    /* 0xA3D0   */ 0xFF30,
+    /* 0xA3D1   */ 0xFF31,
+    /* 0xA3D2   */ 0xFF32,
+    /* 0xA3D3   */ 0xFF33,
+    /* 0xA3D4   */ 0xFF34,
+    /* 0xA3D5   */ 0xFF35,
+    /* 0xA3D6   */ 0xFF36,
+    /* 0xA3D7   */ 0xFF37,
+    /* 0xA3D8   */ 0xFF38,
+    /* 0xA3D9   */ 0xFF39,
+    /* 0xA3DA   */ 0xFF3A,
+    /* 0xA3DB   */ 0xFF3B,
+    /* 0xA3DC   */ 0xFF3C,
+    /* 0xA3DD   */ 0xFF3D,
+    /* 0xA3DE   */ 0xFF3E,
+    /* 0xA3DF   */ 0xFF3F,
+    /* 0xA3E0   */ 0xFF40,
+    /* 0xA3E1   */ 0xFF41,
+    /* 0xA3E2   */ 0xFF42,
+    /* 0xA3E3   */ 0xFF43,
+    /* 0xA3E4   */ 0xFF44,
+    /* 0xA3E5   */ 0xFF45,
+    /* 0xA3E6   */ 0xFF46,
+    /* 0xA3E7   */ 0xFF47,
+    /* 0xA3E8   */ 0xFF48,
+    /* 0xA3E9   */ 0xFF49,
+    /* 0xA3EA   */ 0xFF4A,
+    /* 0xA3EB   */ 0xFF4B,
+    /* 0xA3EC   */ 0xFF4C,
+    /* 0xA3ED   */ 0xFF4D,
+    /* 0xA3EE   */ 0xFF4E,
+    /* 0xA3EF   */ 0xFF4F,
+    /* 0xA3F0   */ 0xFF50,
+    /* 0xA3F1   */ 0xFF51,
+    /* 0xA3F2   */ 0xFF52,
+    /* 0xA3F3   */ 0xFF53,
+    /* 0xA3F4   */ 0xFF54,
+    /* 0xA3F5   */ 0xFF55,
+    /* 0xA3F6   */ 0xFF56,
+    /* 0xA3F7   */ 0xFF57,
+    /* 0xA3F8   */ 0xFF58,
+    /* 0xA3F9   */ 0xFF59,
+    /* 0xA3FA   */ 0xFF5A,
+    /* 0xA3FB   */ 0xFF5B,
+    /* 0xA3FC   */ 0xFF5C,
+    /* 0xA3FD   */ 0xFF5D,
+    /* 0xA3FE   */ 0xFFE3,
+    /* 0xA4A1   */ 0x3041,
+    /* 0xA4A2   */ 0x3042,
+    /* 0xA4A3   */ 0x3043,
+    /* 0xA4A4   */ 0x3044,
+    /* 0xA4A5   */ 0x3045,
+    /* 0xA4A6   */ 0x3046,
+    /* 0xA4A7   */ 0x3047,
+    /* 0xA4A8   */ 0x3048,
+    /* 0xA4A9   */ 0x3049,
+    /* 0xA4AA   */ 0x304A,
+    /* 0xA4AB   */ 0x304B,
+    /* 0xA4AC   */ 0x304C,
+    /* 0xA4AD   */ 0x304D,
+    /* 0xA4AE   */ 0x304E,
+    /* 0xA4AF   */ 0x304F,
+    /* 0xA4B0   */ 0x3050,
+    /* 0xA4B1   */ 0x3051,
+    /* 0xA4B2   */ 0x3052,
+    /* 0xA4B3   */ 0x3053,
+    /* 0xA4B4   */ 0x3054,
+    /* 0xA4B5   */ 0x3055,
+    /* 0xA4B6   */ 0x3056,
+    /* 0xA4B7   */ 0x3057,
+    /* 0xA4B8   */ 0x3058,
+    /* 0xA4B9   */ 0x3059,
+    /* 0xA4BA   */ 0x305A,
+    /* 0xA4BB   */ 0x305B,
+    /* 0xA4BC   */ 0x305C,
+    /* 0xA4BD   */ 0x305D,
+    /* 0xA4BE   */ 0x305E,
+    /* 0xA4BF   */ 0x305F,
+    /* 0xA4C0   */ 0x3060,
+    /* 0xA4C1   */ 0x3061,
+    /* 0xA4C2   */ 0x3062,
+    /* 0xA4C3   */ 0x3063,
+    /* 0xA4C4   */ 0x3064,
+    /* 0xA4C5   */ 0x3065,
+    /* 0xA4C6   */ 0x3066,
+    /* 0xA4C7   */ 0x3067,
+    /* 0xA4C8   */ 0x3068,
+    /* 0xA4C9   */ 0x3069,
+    /* 0xA4CA   */ 0x306A,
+    /* 0xA4CB   */ 0x306B,
+    /* 0xA4CC   */ 0x306C,
+    /* 0xA4CD   */ 0x306D,
+    /* 0xA4CE   */ 0x306E,
+    /* 0xA4CF   */ 0x306F,
+    /* 0xA4D0   */ 0x3070,
+    /* 0xA4D1   */ 0x3071,
+    /* 0xA4D2   */ 0x3072,
+    /* 0xA4D3   */ 0x3073,
+    /* 0xA4D4   */ 0x3074,
+    /* 0xA4D5   */ 0x3075,
+    /* 0xA4D6   */ 0x3076,
+    /* 0xA4D7   */ 0x3077,
+    /* 0xA4D8   */ 0x3078,
+    /* 0xA4D9   */ 0x3079,
+    /* 0xA4DA   */ 0x307A,
+    /* 0xA4DB   */ 0x307B,
+    /* 0xA4DC   */ 0x307C,
+    /* 0xA4DD   */ 0x307D,
+    /* 0xA4DE   */ 0x307E,
+    /* 0xA4DF   */ 0x307F,
+    /* 0xA4E0   */ 0x3080,
+    /* 0xA4E1   */ 0x3081,
+    /* 0xA4E2   */ 0x3082,
+    /* 0xA4E3   */ 0x3083,
+    /* 0xA4E4   */ 0x3084,
+    /* 0xA4E5   */ 0x3085,
+    /* 0xA4E6   */ 0x3086,
+    /* 0xA4E7   */ 0x3087,
+    /* 0xA4E8   */ 0x3088,
+    /* 0xA4E9   */ 0x3089,
+    /* 0xA4EA   */ 0x308A,
+    /* 0xA4EB   */ 0x308B,
+    /* 0xA4EC   */ 0x308C,
+    /* 0xA4ED   */ 0x308D,
+    /* 0xA4EE   */ 0x308E,
+    /* 0xA4EF   */ 0x308F,
+    /* 0xA4F0   */ 0x3090,
+    /* 0xA4F1   */ 0x3091,
+    /* 0xA4F2   */ 0x3092,
+    /* 0xA4F3   */ 0x3093,
+    /* 0xA4F4   */ 0xE772,
+    /* 0xA4F5   */ 0xE773,
+    /* 0xA4F6   */ 0xE774,
+    /* 0xA4F7   */ 0xE775,
+    /* 0xA4F8   */ 0xE776,
+    /* 0xA4F9   */ 0xE777,
+    /* 0xA4FA   */ 0xE778,
+    /* 0xA4FB   */ 0xE779,
+    /* 0xA4FC   */ 0xE77A,
+    /* 0xA4FD   */ 0xE77B,
+    /* 0xA4FE   */ 0xE77C,
+    /* 0xA5A1   */ 0x30A1,
+    /* 0xA5A2   */ 0x30A2,
+    /* 0xA5A3   */ 0x30A3,
+    /* 0xA5A4   */ 0x30A4,
+    /* 0xA5A5   */ 0x30A5,
+    /* 0xA5A6   */ 0x30A6,
+    /* 0xA5A7   */ 0x30A7,
+    /* 0xA5A8   */ 0x30A8,
+    /* 0xA5A9   */ 0x30A9,
+    /* 0xA5AA   */ 0x30AA,
+    /* 0xA5AB   */ 0x30AB,
+    /* 0xA5AC   */ 0x30AC,
+    /* 0xA5AD   */ 0x30AD,
+    /* 0xA5AE   */ 0x30AE,
+    /* 0xA5AF   */ 0x30AF,
+    /* 0xA5B0   */ 0x30B0,
+    /* 0xA5B1   */ 0x30B1,
+    /* 0xA5B2   */ 0x30B2,
+    /* 0xA5B3   */ 0x30B3,
+    /* 0xA5B4   */ 0x30B4,
+    /* 0xA5B5   */ 0x30B5,
+    /* 0xA5B6   */ 0x30B6,
+    /* 0xA5B7   */ 0x30B7,
+    /* 0xA5B8   */ 0x30B8,
+    /* 0xA5B9   */ 0x30B9,
+    /* 0xA5BA   */ 0x30BA,
+    /* 0xA5BB   */ 0x30BB,
+    /* 0xA5BC   */ 0x30BC,
+    /* 0xA5BD   */ 0x30BD,
+    /* 0xA5BE   */ 0x30BE,
+    /* 0xA5BF   */ 0x30BF,
+    /* 0xA5C0   */ 0x30C0,
+    /* 0xA5C1   */ 0x30C1,
+    /* 0xA5C2   */ 0x30C2,
+    /* 0xA5C3   */ 0x30C3,
+    /* 0xA5C4   */ 0x30C4,
+    /* 0xA5C5   */ 0x30C5,
+    /* 0xA5C6   */ 0x30C6,
+    /* 0xA5C7   */ 0x30C7,
+    /* 0xA5C8   */ 0x30C8,
+    /* 0xA5C9   */ 0x30C9,
+    /* 0xA5CA   */ 0x30CA,
+    /* 0xA5CB   */ 0x30CB,
+    /* 0xA5CC   */ 0x30CC,
+    /* 0xA5CD   */ 0x30CD,
+    /* 0xA5CE   */ 0x30CE,
+    /* 0xA5CF   */ 0x30CF,
+    /* 0xA5D0   */ 0x30D0,
+    /* 0xA5D1   */ 0x30D1,
+    /* 0xA5D2   */ 0x30D2,
+    /* 0xA5D3   */ 0x30D3,
+    /* 0xA5D4   */ 0x30D4,
+    /* 0xA5D5   */ 0x30D5,
+    /* 0xA5D6   */ 0x30D6,
+    /* 0xA5D7   */ 0x30D7,
+    /* 0xA5D8   */ 0x30D8,
+    /* 0xA5D9   */ 0x30D9,
+    /* 0xA5DA   */ 0x30DA,
+    /* 0xA5DB   */ 0x30DB,
+    /* 0xA5DC   */ 0x30DC,
+    /* 0xA5DD   */ 0x30DD,
+    /* 0xA5DE   */ 0x30DE,
+    /* 0xA5DF   */ 0x30DF,
+    /* 0xA5E0   */ 0x30E0,
+    /* 0xA5E1   */ 0x30E1,
+    /* 0xA5E2   */ 0x30E2,
+    /* 0xA5E3   */ 0x30E3,
+    /* 0xA5E4   */ 0x30E4,
+    /* 0xA5E5   */ 0x30E5,
+    /* 0xA5E6   */ 0x30E6,
+    /* 0xA5E7   */ 0x30E7,
+    /* 0xA5E8   */ 0x30E8,
+    /* 0xA5E9   */ 0x30E9,
+    /* 0xA5EA   */ 0x30EA,
+    /* 0xA5EB   */ 0x30EB,
+    /* 0xA5EC   */ 0x30EC,
+    /* 0xA5ED   */ 0x30ED,
+    /* 0xA5EE   */ 0x30EE,
+    /* 0xA5EF   */ 0x30EF,
+    /* 0xA5F0   */ 0x30F0,
+    /* 0xA5F1   */ 0x30F1,
+    /* 0xA5F2   */ 0x30F2,
+    /* 0xA5F3   */ 0x30F3,
+    /* 0xA5F4   */ 0x30F4,
+    /* 0xA5F5   */ 0x30F5,
+    /* 0xA5F6   */ 0x30F6,
+    /* 0xA5F7   */ 0xE77D,
+    /* 0xA5F8   */ 0xE77E,
+    /* 0xA5F9   */ 0xE77F,
+    /* 0xA5FA   */ 0xE780,
+    /* 0xA5FB   */ 0xE781,
+    /* 0xA5FC   */ 0xE782,
+    /* 0xA5FD   */ 0xE783,
+    /* 0xA5FE   */ 0xE784,
+    /* 0xA6A1   */ 0x0391,
+    /* 0xA6A2   */ 0x0392,
+    /* 0xA6A3   */ 0x0393,
+    /* 0xA6A4   */ 0x0394,
+    /* 0xA6A5   */ 0x0395,
+    /* 0xA6A6   */ 0x0396,
+    /* 0xA6A7   */ 0x0397,
+    /* 0xA6A8   */ 0x0398,
+    /* 0xA6A9   */ 0x0399,
+    /* 0xA6AA   */ 0x039A,
+    /* 0xA6AB   */ 0x039B,
+    /* 0xA6AC   */ 0x039C,
+    /* 0xA6AD   */ 0x039D,
+    /* 0xA6AE   */ 0x039E,
+    /* 0xA6AF   */ 0x039F,
+    /* 0xA6B0   */ 0x03A0,
+    /* 0xA6B1   */ 0x03A1,
+    /* 0xA6B2   */ 0x03A3,
+    /* 0xA6B3   */ 0x03A4,
+    /* 0xA6B4   */ 0x03A5,
+    /* 0xA6B5   */ 0x03A6,
+    /* 0xA6B6   */ 0x03A7,
+    /* 0xA6B7   */ 0x03A8,
+    /* 0xA6B8   */ 0x03A9,
+    /* 0xA6B9   */ 0xE785,
+    /* 0xA6BA   */ 0xE786,
+    /* 0xA6BB   */ 0xE787,
+    /* 0xA6BC   */ 0xE788,
+    /* 0xA6BD   */ 0xE789,
+    /* 0xA6BE   */ 0xE78A,
+    /* 0xA6BF   */ 0xE78B,
+    /* 0xA6C0   */ 0xE78C,
+    /* 0xA6C1   */ 0x03B1,
+    /* 0xA6C2   */ 0x03B2,
+    /* 0xA6C3   */ 0x03B3,
+    /* 0xA6C4   */ 0x03B4,
+    /* 0xA6C5   */ 0x03B5,
+    /* 0xA6C6   */ 0x03B6,
+    /* 0xA6C7   */ 0x03B7,
+    /* 0xA6C8   */ 0x03B8,
+    /* 0xA6C9   */ 0x03B9,
+    /* 0xA6CA   */ 0x03BA,
+    /* 0xA6CB   */ 0x03BB,
+    /* 0xA6CC   */ 0x03BC,
+    /* 0xA6CD   */ 0x03BD,
+    /* 0xA6CE   */ 0x03BE,
+    /* 0xA6CF   */ 0x03BF,
+    /* 0xA6D0   */ 0x03C0,
+    /* 0xA6D1   */ 0x03C1,
+    /* 0xA6D2   */ 0x03C3,
+    /* 0xA6D3   */ 0x03C4,
+    /* 0xA6D4   */ 0x03C5,
+    /* 0xA6D5   */ 0x03C6,
+    /* 0xA6D6   */ 0x03C7,
+    /* 0xA6D7   */ 0x03C8,
+    /* 0xA6D8   */ 0x03C9,
+    /* 0xA6D9   */ 0xE78D,
+    /* 0xA6DA   */ 0xE78E,
+    /* 0xA6DB   */ 0xE78F,
+    /* 0xA6DC   */ 0xE790,
+    /* 0xA6DD   */ 0xE791,
+    /* 0xA6DE   */ 0xE792,
+    /* 0xA6DF   */ 0xE793,
+    /* 0xA6E0   */ 0xFE35,
+    /* 0xA6E1   */ 0xFE36,
+    /* 0xA6E2   */ 0xFE39,
+    /* 0xA6E3   */ 0xFE3A,
+    /* 0xA6E4   */ 0xFE3F,
+    /* 0xA6E5   */ 0xFE40,
+    /* 0xA6E6   */ 0xFE3D,
+    /* 0xA6E7   */ 0xFE3E,
+    /* 0xA6E8   */ 0xFE41,
+    /* 0xA6E9   */ 0xFE42,
+    /* 0xA6EA   */ 0xFE43,
+    /* 0xA6EB   */ 0xFE44,
+    /* 0xA6EC   */ 0xE794,
+    /* 0xA6ED   */ 0xE795,
+    /* 0xA6EE   */ 0xFE3B,
+    /* 0xA6EF   */ 0xFE3C,
+    /* 0xA6F0   */ 0xFE37,
+    /* 0xA6F1   */ 0xFE38,
+    /* 0xA6F2   */ 0xFE31,
+    /* 0xA6F3   */ 0xE796,
+    /* 0xA6F4   */ 0xFE33,
+    /* 0xA6F5   */ 0xFE34,
+    /* 0xA6F6   */ 0xE797,
+    /* 0xA6F7   */ 0xE798,
+    /* 0xA6F8   */ 0xE799,
+    /* 0xA6F9   */ 0xE79A,
+    /* 0xA6FA   */ 0xE79B,
+    /* 0xA6FB   */ 0xE79C,
+    /* 0xA6FC   */ 0xE79D,
+    /* 0xA6FD   */ 0xE79E,
+    /* 0xA6FE   */ 0xE79F,
+    /* 0xA7A1   */ 0x0410,
+    /* 0xA7A2   */ 0x0411,
+    /* 0xA7A3   */ 0x0412,
+    /* 0xA7A4   */ 0x0413,
+    /* 0xA7A5   */ 0x0414,
+    /* 0xA7A6   */ 0x0415,
+    /* 0xA7A7   */ 0x0401,
+    /* 0xA7A8   */ 0x0416,
+    /* 0xA7A9   */ 0x0417,
+    /* 0xA7AA   */ 0x0418,
+    /* 0xA7AB   */ 0x0419,
+    /* 0xA7AC   */ 0x041A,
+    /* 0xA7AD   */ 0x041B,
+    /* 0xA7AE   */ 0x041C,
+    /* 0xA7AF   */ 0x041D,
+    /* 0xA7B0   */ 0x041E,
+    /* 0xA7B1   */ 0x041F,
+    /* 0xA7B2   */ 0x0420,
+    /* 0xA7B3   */ 0x0421,
+    /* 0xA7B4   */ 0x0422,
+    /* 0xA7B5   */ 0x0423,
+    /* 0xA7B6   */ 0x0424,
+    /* 0xA7B7   */ 0x0425,
+    /* 0xA7B8   */ 0x0426,
+    /* 0xA7B9   */ 0x0427,
+    /* 0xA7BA   */ 0x0428,
+    /* 0xA7BB   */ 0x0429,
+    /* 0xA7BC   */ 0x042A,
+    /* 0xA7BD   */ 0x042B,
+    /* 0xA7BE   */ 0x042C,
+    /* 0xA7BF   */ 0x042D,
+    /* 0xA7C0   */ 0x042E,
+    /* 0xA7C1   */ 0x042F,
+    /* 0xA7C2   */ 0xE7A0,
+    /* 0xA7C3   */ 0xE7A1,
+    /* 0xA7C4   */ 0xE7A2,
+    /* 0xA7C5   */ 0xE7A3,
+    /* 0xA7C6   */ 0xE7A4,
+    /* 0xA7C7   */ 0xE7A5,
+    /* 0xA7C8   */ 0xE7A6,
+    /* 0xA7C9   */ 0xE7A7,
+    /* 0xA7CA   */ 0xE7A8,
+    /* 0xA7CB   */ 0xE7A9,
+    /* 0xA7CC   */ 0xE7AA,
+    /* 0xA7CD   */ 0xE7AB,
+    /* 0xA7CE   */ 0xE7AC,
+    /* 0xA7CF   */ 0xE7AD,
+    /* 0xA7D0   */ 0xE7AE,
+    /* 0xA7D1   */ 0x0430,
+    /* 0xA7D2   */ 0x0431,
+    /* 0xA7D3   */ 0x0432,
+    /* 0xA7D4   */ 0x0433,
+    /* 0xA7D5   */ 0x0434,
+    /* 0xA7D6   */ 0x0435,
+    /* 0xA7D7   */ 0x0451,
+    /* 0xA7D8   */ 0x0436,
+    /* 0xA7D9   */ 0x0437,
+    /* 0xA7DA   */ 0x0438,
+    /* 0xA7DB   */ 0x0439,
+    /* 0xA7DC   */ 0x043A,
+    /* 0xA7DD   */ 0x043B,
+    /* 0xA7DE   */ 0x043C,
+    /* 0xA7DF   */ 0x043D,
+    /* 0xA7E0   */ 0x043E,
+    /* 0xA7E1   */ 0x043F,
+    /* 0xA7E2   */ 0x0440,
+    /* 0xA7E3   */ 0x0441,
+    /* 0xA7E4   */ 0x0442,
+    /* 0xA7E5   */ 0x0443,
+    /* 0xA7E6   */ 0x0444,
+    /* 0xA7E7   */ 0x0445,
+    /* 0xA7E8   */ 0x0446,
+    /* 0xA7E9   */ 0x0447,
+    /* 0xA7EA   */ 0x0448,
+    /* 0xA7EB   */ 0x0449,
+    /* 0xA7EC   */ 0x044A,
+    /* 0xA7ED   */ 0x044B,
+    /* 0xA7EE   */ 0x044C,
+    /* 0xA7EF   */ 0x044D,
+    /* 0xA7F0   */ 0x044E,
+    /* 0xA7F1   */ 0x044F,
+    /* 0xA7F2   */ 0xE7AF,
+    /* 0xA7F3   */ 0xE7B0,
+    /* 0xA7F4   */ 0xE7B1,
+    /* 0xA7F5   */ 0xE7B2,
+    /* 0xA7F6   */ 0xE7B3,
+    /* 0xA7F7   */ 0xE7B4,
+    /* 0xA7F8   */ 0xE7B5,
+    /* 0xA7F9   */ 0xE7B6,
+    /* 0xA7FA   */ 0xE7B7,
+    /* 0xA7FB   */ 0xE7B8,
+    /* 0xA7FC   */ 0xE7B9,
+    /* 0xA7FD   */ 0xE7BA,
+    /* 0xA7FE   */ 0xE7BB,
+    /* 0xA8A1   */ 0x0101,
+    /* 0xA8A2   */ 0x00E1,
+    /* 0xA8A3   */ 0x01CE,
+    /* 0xA8A4   */ 0x00E0,
+    /* 0xA8A5   */ 0x0113,
+    /* 0xA8A6   */ 0x00E9,
+    /* 0xA8A7   */ 0x011B,
+    /* 0xA8A8   */ 0x00E8,
+    /* 0xA8A9   */ 0x012B,
+    /* 0xA8AA   */ 0x00ED,
+    /* 0xA8AB   */ 0x01D0,
+    /* 0xA8AC   */ 0x00EC,
+    /* 0xA8AD   */ 0x014D,
+    /* 0xA8AE   */ 0x00F3,
+    /* 0xA8AF   */ 0x01D2,
+    /* 0xA8B0   */ 0x00F2,
+    /* 0xA8B1   */ 0x016B,
+    /* 0xA8B2   */ 0x00FA,
+    /* 0xA8B3   */ 0x01D4,
+    /* 0xA8B4   */ 0x00F9,
+    /* 0xA8B5   */ 0x01D6,
+    /* 0xA8B6   */ 0x01D8,
+    /* 0xA8B7   */ 0x01DA,
+    /* 0xA8B8   */ 0x01DC,
+    /* 0xA8B9   */ 0x00FC,
+    /* 0xA8BA   */ 0x00EA,
+    /* 0xA8BB   */ 0x0251,
+    /* 0xA8BC   */ 0xE7C7,
+    /* 0xA8BD   */ 0x0144,
+    /* 0xA8BE   */ 0x0148,
+    /* 0xA8BF   */ 0xE7C8,
+    /* 0xA8C0   */ 0x0261,
+    /* 0xA8C1   */ 0xE7C9,
+    /* 0xA8C2   */ 0xE7CA,
+    /* 0xA8C3   */ 0xE7CB,
+    /* 0xA8C4   */ 0xE7CC,
+    /* 0xA8C5   */ 0x3105,
+    /* 0xA8C6   */ 0x3106,
+    /* 0xA8C7   */ 0x3107,
+    /* 0xA8C8   */ 0x3108,
+    /* 0xA8C9   */ 0x3109,
+    /* 0xA8CA   */ 0x310A,
+    /* 0xA8CB   */ 0x310B,
+    /* 0xA8CC   */ 0x310C,
+    /* 0xA8CD   */ 0x310D,
+    /* 0xA8CE   */ 0x310E,
+    /* 0xA8CF   */ 0x310F,
+    /* 0xA8D0   */ 0x3110,
+    /* 0xA8D1   */ 0x3111,
+    /* 0xA8D2   */ 0x3112,
+    /* 0xA8D3   */ 0x3113,
+    /* 0xA8D4   */ 0x3114,
+    /* 0xA8D5   */ 0x3115,
+    /* 0xA8D6   */ 0x3116,
+    /* 0xA8D7   */ 0x3117,
+    /* 0xA8D8   */ 0x3118,
+    /* 0xA8D9   */ 0x3119,
+    /* 0xA8DA   */ 0x311A,
+    /* 0xA8DB   */ 0x311B,
+    /* 0xA8DC   */ 0x311C,
+    /* 0xA8DD   */ 0x311D,
+    /* 0xA8DE   */ 0x311E,
+    /* 0xA8DF   */ 0x311F,
+    /* 0xA8E0   */ 0x3120,
+    /* 0xA8E1   */ 0x3121,
+    /* 0xA8E2   */ 0x3122,
+    /* 0xA8E3   */ 0x3123,
+    /* 0xA8E4   */ 0x3124,
+    /* 0xA8E5   */ 0x3125,
+    /* 0xA8E6   */ 0x3126,
+    /* 0xA8E7   */ 0x3127,
+    /* 0xA8E8   */ 0x3128,
+    /* 0xA8E9   */ 0x3129,
+    /* 0xA8EA   */ 0xE7CD,
+    /* 0xA8EB   */ 0xE7CE,
+    /* 0xA8EC   */ 0xE7CF,
+    /* 0xA8ED   */ 0xE7D0,
+    /* 0xA8EE   */ 0xE7D1,
+    /* 0xA8EF   */ 0xE7D2,
+    /* 0xA8F0   */ 0xE7D3,
+    /* 0xA8F1   */ 0xE7D4,
+    /* 0xA8F2   */ 0xE7D5,
+    /* 0xA8F3   */ 0xE7D6,
+    /* 0xA8F4   */ 0xE7D7,
+    /* 0xA8F5   */ 0xE7D8,
+    /* 0xA8F6   */ 0xE7D9,
+    /* 0xA8F7   */ 0xE7DA,
+    /* 0xA8F8   */ 0xE7DB,
+    /* 0xA8F9   */ 0xE7DC,
+    /* 0xA8FA   */ 0xE7DD,
+    /* 0xA8FB   */ 0xE7DE,
+    /* 0xA8FC   */ 0xE7DF,
+    /* 0xA8FD   */ 0xE7E0,
+    /* 0xA8FE   */ 0xE7E1,
+    /* 0xA9A1   */ 0xE7FE,
+    /* 0xA9A2   */ 0xE7FF,
+    /* 0xA9A3   */ 0xE800,
+    /* 0xA9A4   */ 0x2500,
+    /* 0xA9A5   */ 0x2501,
+    /* 0xA9A6   */ 0x2502,
+    /* 0xA9A7   */ 0x2503,
+    /* 0xA9A8   */ 0x2504,
+    /* 0xA9A9   */ 0x2505,
+    /* 0xA9AA   */ 0x2506,
+    /* 0xA9AB   */ 0x2507,
+    /* 0xA9AC   */ 0x2508,
+    /* 0xA9AD   */ 0x2509,
+    /* 0xA9AE   */ 0x250A,
+    /* 0xA9AF   */ 0x250B,
+    /* 0xA9B0   */ 0x250C,
+    /* 0xA9B1   */ 0x250D,
+    /* 0xA9B2   */ 0x250E,
+    /* 0xA9B3   */ 0x250F,
+    /* 0xA9B4   */ 0x2510,
+    /* 0xA9B5   */ 0x2511,
+    /* 0xA9B6   */ 0x2512,
+    /* 0xA9B7   */ 0x2513,
+    /* 0xA9B8   */ 0x2514,
+    /* 0xA9B9   */ 0x2515,
+    /* 0xA9BA   */ 0x2516,
+    /* 0xA9BB   */ 0x2517,
+    /* 0xA9BC   */ 0x2518,
+    /* 0xA9BD   */ 0x2519,
+    /* 0xA9BE   */ 0x251A,
+    /* 0xA9BF   */ 0x251B,
+    /* 0xA9C0   */ 0x251C,
+    /* 0xA9C1   */ 0x251D,
+    /* 0xA9C2   */ 0x251E,
+    /* 0xA9C3   */ 0x251F,
+    /* 0xA9C4   */ 0x2520,
+    /* 0xA9C5   */ 0x2521,
+    /* 0xA9C6   */ 0x2522,
+    /* 0xA9C7   */ 0x2523,
+    /* 0xA9C8   */ 0x2524,
+    /* 0xA9C9   */ 0x2525,
+    /* 0xA9CA   */ 0x2526,
+    /* 0xA9CB   */ 0x2527,
+    /* 0xA9CC   */ 0x2528,
+    /* 0xA9CD   */ 0x2529,
+    /* 0xA9CE   */ 0x252A,
+    /* 0xA9CF   */ 0x252B,
+    /* 0xA9D0   */ 0x252C,
+    /* 0xA9D1   */ 0x252D,
+    /* 0xA9D2   */ 0x252E,
+    /* 0xA9D3   */ 0x252F,
+    /* 0xA9D4   */ 0x2530,
+    /* 0xA9D5   */ 0x2531,
+    /* 0xA9D6   */ 0x2532,
+    /* 0xA9D7   */ 0x2533,
+    /* 0xA9D8   */ 0x2534,
+    /* 0xA9D9   */ 0x2535,
+    /* 0xA9DA   */ 0x2536,
+    /* 0xA9DB   */ 0x2537,
+    /* 0xA9DC   */ 0x2538,
+    /* 0xA9DD   */ 0x2539,
+    /* 0xA9DE   */ 0x253A,
+    /* 0xA9DF   */ 0x253B,
+    /* 0xA9E0   */ 0x253C,
+    /* 0xA9E1   */ 0x253D,
+    /* 0xA9E2   */ 0x253E,
+    /* 0xA9E3   */ 0x253F,
+    /* 0xA9E4   */ 0x2540,
+    /* 0xA9E5   */ 0x2541,
+    /* 0xA9E6   */ 0x2542,
+    /* 0xA9E7   */ 0x2543,
+    /* 0xA9E8   */ 0x2544,
+    /* 0xA9E9   */ 0x2545,
+    /* 0xA9EA   */ 0x2546,
+    /* 0xA9EB   */ 0x2547,
+    /* 0xA9EC   */ 0x2548,
+    /* 0xA9ED   */ 0x2549,
+    /* 0xA9EE   */ 0x254A,
+    /* 0xA9EF   */ 0x254B,
+    /* 0xA9F0   */ 0xE801,
+    /* 0xA9F1   */ 0xE802,
+    /* 0xA9F2   */ 0xE803,
+    /* 0xA9F3   */ 0xE804,
+    /* 0xA9F4   */ 0xE805,
+    /* 0xA9F5   */ 0xE806,
+    /* 0xA9F6   */ 0xE807,
+    /* 0xA9F7   */ 0xE808,
+    /* 0xA9F8   */ 0xE809,
+    /* 0xA9F9   */ 0xE80A,
+    /* 0xA9FA   */ 0xE80B,
+    /* 0xA9FB   */ 0xE80C,
+    /* 0xA9FC   */ 0xE80D,
+    /* 0xA9FD   */ 0xE80E,
+    /* 0xA9FE   */ 0xE80F,
+    /* 0xAAA1   */ 0xE000,
+    /* 0xAAA2   */ 0xE001,
+    /* 0xAAA3   */ 0xE002,
+    /* 0xAAA4   */ 0xE003,
+    /* 0xAAA5   */ 0xE004,
+    /* 0xAAA6   */ 0xE005,
+    /* 0xAAA7   */ 0xE006,
+    /* 0xAAA8   */ 0xE007,
+    /* 0xAAA9   */ 0xE008,
+    /* 0xAAAA   */ 0xE009,
+    /* 0xAAAB   */ 0xE00A,
+    /* 0xAAAC   */ 0xE00B,
+    /* 0xAAAD   */ 0xE00C,
+    /* 0xAAAE   */ 0xE00D,
+    /* 0xAAAF   */ 0xE00E,
+    /* 0xAAB0   */ 0xE00F,
+    /* 0xAAB1   */ 0xE010,
+    /* 0xAAB2   */ 0xE011,
+    /* 0xAAB3   */ 0xE012,
+    /* 0xAAB4   */ 0xE013,
+    /* 0xAAB5   */ 0xE014,
+    /* 0xAAB6   */ 0xE015,
+    /* 0xAAB7   */ 0xE016,
+    /* 0xAAB8   */ 0xE017,
+    /* 0xAAB9   */ 0xE018,
+    /* 0xAABA   */ 0xE019,
+    /* 0xAABB   */ 0xE01A,
+    /* 0xAABC   */ 0xE01B,
+    /* 0xAABD   */ 0xE01C,
+    /* 0xAABE   */ 0xE01D,
+    /* 0xAABF   */ 0xE01E,
+    /* 0xAAC0   */ 0xE01F,
+    /* 0xAAC1   */ 0xE020,
+    /* 0xAAC2   */ 0xE021,
+    /* 0xAAC3   */ 0xE022,
+    /* 0xAAC4   */ 0xE023,
+    /* 0xAAC5   */ 0xE024,
+    /* 0xAAC6   */ 0xE025,
+    /* 0xAAC7   */ 0xE026,
+    /* 0xAAC8   */ 0xE027,
+    /* 0xAAC9   */ 0xE028,
+    /* 0xAACA   */ 0xE029,
+    /* 0xAACB   */ 0xE02A,
+    /* 0xAACC   */ 0xE02B,
+    /* 0xAACD   */ 0xE02C,
+    /* 0xAACE   */ 0xE02D,
+    /* 0xAACF   */ 0xE02E,
+    /* 0xAAD0   */ 0xE02F,
+    /* 0xAAD1   */ 0xE030,
+    /* 0xAAD2   */ 0xE031,
+    /* 0xAAD3   */ 0xE032,
+    /* 0xAAD4   */ 0xE033,
+    /* 0xAAD5   */ 0xE034,
+    /* 0xAAD6   */ 0xE035,
+    /* 0xAAD7   */ 0xE036,
+    /* 0xAAD8   */ 0xE037,
+    /* 0xAAD9   */ 0xE038,
+    /* 0xAADA   */ 0xE039,
+    /* 0xAADB   */ 0xE03A,
+    /* 0xAADC   */ 0xE03B,
+    /* 0xAADD   */ 0xE03C,
+    /* 0xAADE   */ 0xE03D,
+    /* 0xAADF   */ 0xE03E,
+    /* 0xAAE0   */ 0xE03F,
+    /* 0xAAE1   */ 0xE040,
+    /* 0xAAE2   */ 0xE041,
+    /* 0xAAE3   */ 0xE042,
+    /* 0xAAE4   */ 0xE043,
+    /* 0xAAE5   */ 0xE044,
+    /* 0xAAE6   */ 0xE045,
+    /* 0xAAE7   */ 0xE046,
+    /* 0xAAE8   */ 0xE047,
+    /* 0xAAE9   */ 0xE048,
+    /* 0xAAEA   */ 0xE049,
+    /* 0xAAEB   */ 0xE04A,
+    /* 0xAAEC   */ 0xE04B,
+    /* 0xAAED   */ 0xE04C,
+    /* 0xAAEE   */ 0xE04D,
+    /* 0xAAEF   */ 0xE04E,
+    /* 0xAAF0   */ 0xE04F,
+    /* 0xAAF1   */ 0xE050,
+    /* 0xAAF2   */ 0xE051,
+    /* 0xAAF3   */ 0xE052,
+    /* 0xAAF4   */ 0xE053,
+    /* 0xAAF5   */ 0xE054,
+    /* 0xAAF6   */ 0xE055,
+    /* 0xAAF7   */ 0xE056,
+    /* 0xAAF8   */ 0xE057,
+    /* 0xAAF9   */ 0xE058,
+    /* 0xAAFA   */ 0xE059,
+    /* 0xAAFB   */ 0xE05A,
+    /* 0xAAFC   */ 0xE05B,
+    /* 0xAAFD   */ 0xE05C,
+    /* 0xAAFE   */ 0xE05D,
+    /* 0xABA1   */ 0xE05E,
+    /* 0xABA2   */ 0xE05F,
+    /* 0xABA3   */ 0xE060,
+    /* 0xABA4   */ 0xE061,
+    /* 0xABA5   */ 0xE062,
+    /* 0xABA6   */ 0xE063,
+    /* 0xABA7   */ 0xE064,
+    /* 0xABA8   */ 0xE065,
+    /* 0xABA9   */ 0xE066,
+    /* 0xABAA   */ 0xE067,
+    /* 0xABAB   */ 0xE068,
+    /* 0xABAC   */ 0xE069,
+    /* 0xABAD   */ 0xE06A,
+    /* 0xABAE   */ 0xE06B,
+    /* 0xABAF   */ 0xE06C,
+    /* 0xABB0   */ 0xE06D,
+    /* 0xABB1   */ 0xE06E,
+    /* 0xABB2   */ 0xE06F,
+    /* 0xABB3   */ 0xE070,
+    /* 0xABB4   */ 0xE071,
+    /* 0xABB5   */ 0xE072,
+    /* 0xABB6   */ 0xE073,
+    /* 0xABB7   */ 0xE074,
+    /* 0xABB8   */ 0xE075,
+    /* 0xABB9   */ 0xE076,
+    /* 0xABBA   */ 0xE077,
+    /* 0xABBB   */ 0xE078,
+    /* 0xABBC   */ 0xE079,
+    /* 0xABBD   */ 0xE07A,
+    /* 0xABBE   */ 0xE07B,
+    /* 0xABBF   */ 0xE07C,
+    /* 0xABC0   */ 0xE07D,
+    /* 0xABC1   */ 0xE07E,
+    /* 0xABC2   */ 0xE07F,
+    /* 0xABC3   */ 0xE080,
+    /* 0xABC4   */ 0xE081,
+    /* 0xABC5   */ 0xE082,
+    /* 0xABC6   */ 0xE083,
+    /* 0xABC7   */ 0xE084,
+    /* 0xABC8   */ 0xE085,
+    /* 0xABC9   */ 0xE086,
+    /* 0xABCA   */ 0xE087,
+    /* 0xABCB   */ 0xE088,
+    /* 0xABCC   */ 0xE089,
+    /* 0xABCD   */ 0xE08A,
+    /* 0xABCE   */ 0xE08B,
+    /* 0xABCF   */ 0xE08C,
+    /* 0xABD0   */ 0xE08D,
+    /* 0xABD1   */ 0xE08E,
+    /* 0xABD2   */ 0xE08F,
+    /* 0xABD3   */ 0xE090,
+    /* 0xABD4   */ 0xE091,
+    /* 0xABD5   */ 0xE092,
+    /* 0xABD6   */ 0xE093,
+    /* 0xABD7   */ 0xE094,
+    /* 0xABD8   */ 0xE095,
+    /* 0xABD9   */ 0xE096,
+    /* 0xABDA   */ 0xE097,
+    /* 0xABDB   */ 0xE098,
+    /* 0xABDC   */ 0xE099,
+    /* 0xABDD   */ 0xE09A,
+    /* 0xABDE   */ 0xE09B,
+    /* 0xABDF   */ 0xE09C,
+    /* 0xABE0   */ 0xE09D,
+    /* 0xABE1   */ 0xE09E,
+    /* 0xABE2   */ 0xE09F,
+    /* 0xABE3   */ 0xE0A0,
+    /* 0xABE4   */ 0xE0A1,
+    /* 0xABE5   */ 0xE0A2,
+    /* 0xABE6   */ 0xE0A3,
+    /* 0xABE7   */ 0xE0A4,
+    /* 0xABE8   */ 0xE0A5,
+    /* 0xABE9   */ 0xE0A6,
+    /* 0xABEA   */ 0xE0A7,
+    /* 0xABEB   */ 0xE0A8,
+    /* 0xABEC   */ 0xE0A9,
+    /* 0xABED   */ 0xE0AA,
+    /* 0xABEE   */ 0xE0AB,
+    /* 0xABEF   */ 0xE0AC,
+    /* 0xABF0   */ 0xE0AD,
+    /* 0xABF1   */ 0xE0AE,
+    /* 0xABF2   */ 0xE0AF,
+    /* 0xABF3   */ 0xE0B0,
+    /* 0xABF4   */ 0xE0B1,
+    /* 0xABF5   */ 0xE0B2,
+    /* 0xABF6   */ 0xE0B3,
+    /* 0xABF7   */ 0xE0B4,
+    /* 0xABF8   */ 0xE0B5,
+    /* 0xABF9   */ 0xE0B6,
+    /* 0xABFA   */ 0xE0B7,
+    /* 0xABFB   */ 0xE0B8,
+    /* 0xABFC   */ 0xE0B9,
+    /* 0xABFD   */ 0xE0BA,
+    /* 0xABFE   */ 0xE0BB,
+    /* 0xACA1   */ 0xE0BC,
+    /* 0xACA2   */ 0xE0BD,
+    /* 0xACA3   */ 0xE0BE,
+    /* 0xACA4   */ 0xE0BF,
+    /* 0xACA5   */ 0xE0C0,
+    /* 0xACA6   */ 0xE0C1,
+    /* 0xACA7   */ 0xE0C2,
+    /* 0xACA8   */ 0xE0C3,
+    /* 0xACA9   */ 0xE0C4,
+    /* 0xACAA   */ 0xE0C5,
+    /* 0xACAB   */ 0xE0C6,
+    /* 0xACAC   */ 0xE0C7,
+    /* 0xACAD   */ 0xE0C8,
+    /* 0xACAE   */ 0xE0C9,
+    /* 0xACAF   */ 0xE0CA,
+    /* 0xACB0   */ 0xE0CB,
+    /* 0xACB1   */ 0xE0CC,
+    /* 0xACB2   */ 0xE0CD,
+    /* 0xACB3   */ 0xE0CE,
+    /* 0xACB4   */ 0xE0CF,
+    /* 0xACB5   */ 0xE0D0,
+    /* 0xACB6   */ 0xE0D1,
+    /* 0xACB7   */ 0xE0D2,
+    /* 0xACB8   */ 0xE0D3,
+    /* 0xACB9   */ 0xE0D4,
+    /* 0xACBA   */ 0xE0D5,
+    /* 0xACBB   */ 0xE0D6,
+    /* 0xACBC   */ 0xE0D7,
+    /* 0xACBD   */ 0xE0D8,
+    /* 0xACBE   */ 0xE0D9,
+    /* 0xACBF   */ 0xE0DA,
+    /* 0xACC0   */ 0xE0DB,
+    /* 0xACC1   */ 0xE0DC,
+    /* 0xACC2   */ 0xE0DD,
+    /* 0xACC3   */ 0xE0DE,
+    /* 0xACC4   */ 0xE0DF,
+    /* 0xACC5   */ 0xE0E0,
+    /* 0xACC6   */ 0xE0E1,
+    /* 0xACC7   */ 0xE0E2,
+    /* 0xACC8   */ 0xE0E3,
+    /* 0xACC9   */ 0xE0E4,
+    /* 0xACCA   */ 0xE0E5,
+    /* 0xACCB   */ 0xE0E6,
+    /* 0xACCC   */ 0xE0E7,
+    /* 0xACCD   */ 0xE0E8,
+    /* 0xACCE   */ 0xE0E9,
+    /* 0xACCF   */ 0xE0EA,
+    /* 0xACD0   */ 0xE0EB,
+    /* 0xACD1   */ 0xE0EC,
+    /* 0xACD2   */ 0xE0ED,
+    /* 0xACD3   */ 0xE0EE,
+    /* 0xACD4   */ 0xE0EF,
+    /* 0xACD5   */ 0xE0F0,
+    /* 0xACD6   */ 0xE0F1,
+    /* 0xACD7   */ 0xE0F2,
+    /* 0xACD8   */ 0xE0F3,
+    /* 0xACD9   */ 0xE0F4,
+    /* 0xACDA   */ 0xE0F5,
+    /* 0xACDB   */ 0xE0F6,
+    /* 0xACDC   */ 0xE0F7,
+    /* 0xACDD   */ 0xE0F8,
+    /* 0xACDE   */ 0xE0F9,
+    /* 0xACDF   */ 0xE0FA,
+    /* 0xACE0   */ 0xE0FB,
+    /* 0xACE1   */ 0xE0FC,
+    /* 0xACE2   */ 0xE0FD,
+    /* 0xACE3   */ 0xE0FE,
+    /* 0xACE4   */ 0xE0FF,
+    /* 0xACE5   */ 0xE100,
+    /* 0xACE6   */ 0xE101,
+    /* 0xACE7   */ 0xE102,
+    /* 0xACE8   */ 0xE103,
+    /* 0xACE9   */ 0xE104,
+    /* 0xACEA   */ 0xE105,
+    /* 0xACEB   */ 0xE106,
+    /* 0xACEC   */ 0xE107,
+    /* 0xACED   */ 0xE108,
+    /* 0xACEE   */ 0xE109,
+    /* 0xACEF   */ 0xE10A,
+    /* 0xACF0   */ 0xE10B,
+    /* 0xACF1   */ 0xE10C,
+    /* 0xACF2   */ 0xE10D,
+    /* 0xACF3   */ 0xE10E,
+    /* 0xACF4   */ 0xE10F,
+    /* 0xACF5   */ 0xE110,
+    /* 0xACF6   */ 0xE111,
+    /* 0xACF7   */ 0xE112,
+    /* 0xACF8   */ 0xE113,
+    /* 0xACF9   */ 0xE114,
+    /* 0xACFA   */ 0xE115,
+    /* 0xACFB   */ 0xE116,
+    /* 0xACFC   */ 0xE117,
+    /* 0xACFD   */ 0xE118,
+    /* 0xACFE   */ 0xE119,
+    /* 0xADA1   */ 0xE11A,
+    /* 0xADA2   */ 0xE11B,
+    /* 0xADA3   */ 0xE11C,
+    /* 0xADA4   */ 0xE11D,
+    /* 0xADA5   */ 0xE11E,
+    /* 0xADA6   */ 0xE11F,
+    /* 0xADA7   */ 0xE120,
+    /* 0xADA8   */ 0xE121,
+    /* 0xADA9   */ 0xE122,
+    /* 0xADAA   */ 0xE123,
+    /* 0xADAB   */ 0xE124,
+    /* 0xADAC   */ 0xE125,
+    /* 0xADAD   */ 0xE126,
+    /* 0xADAE   */ 0xE127,
+    /* 0xADAF   */ 0xE128,
+    /* 0xADB0   */ 0xE129,
+    /* 0xADB1   */ 0xE12A,
+    /* 0xADB2   */ 0xE12B,
+    /* 0xADB3   */ 0xE12C,
+    /* 0xADB4   */ 0xE12D,
+    /* 0xADB5   */ 0xE12E,
+    /* 0xADB6   */ 0xE12F,
+    /* 0xADB7   */ 0xE130,
+    /* 0xADB8   */ 0xE131,
+    /* 0xADB9   */ 0xE132,
+    /* 0xADBA   */ 0xE133,
+    /* 0xADBB   */ 0xE134,
+    /* 0xADBC   */ 0xE135,
+    /* 0xADBD   */ 0xE136,
+    /* 0xADBE   */ 0xE137,
+    /* 0xADBF   */ 0xE138,
+    /* 0xADC0   */ 0xE139,
+    /* 0xADC1   */ 0xE13A,
+    /* 0xADC2   */ 0xE13B,
+    /* 0xADC3   */ 0xE13C,
+    /* 0xADC4   */ 0xE13D,
+    /* 0xADC5   */ 0xE13E,
+    /* 0xADC6   */ 0xE13F,
+    /* 0xADC7   */ 0xE140,
+    /* 0xADC8   */ 0xE141,
+    /* 0xADC9   */ 0xE142,
+    /* 0xADCA   */ 0xE143,
+    /* 0xADCB   */ 0xE144,
+    /* 0xADCC   */ 0xE145,
+    /* 0xADCD   */ 0xE146,
+    /* 0xADCE   */ 0xE147,
+    /* 0xADCF   */ 0xE148,
+    /* 0xADD0   */ 0xE149,
+    /* 0xADD1   */ 0xE14A,
+    /* 0xADD2   */ 0xE14B,
+    /* 0xADD3   */ 0xE14C,
+    /* 0xADD4   */ 0xE14D,
+    /* 0xADD5   */ 0xE14E,
+    /* 0xADD6   */ 0xE14F,
+    /* 0xADD7   */ 0xE150,
+    /* 0xADD8   */ 0xE151,
+    /* 0xADD9   */ 0xE152,
+    /* 0xADDA   */ 0xE153,
+    /* 0xADDB   */ 0xE154,
+    /* 0xADDC   */ 0xE155,
+    /* 0xADDD   */ 0xE156,
+    /* 0xADDE   */ 0xE157,
+    /* 0xADDF   */ 0xE158,
+    /* 0xADE0   */ 0xE159,
+    /* 0xADE1   */ 0xE15A,
+    /* 0xADE2   */ 0xE15B,
+    /* 0xADE3   */ 0xE15C,
+    /* 0xADE4   */ 0xE15D,
+    /* 0xADE5   */ 0xE15E,
+    /* 0xADE6   */ 0xE15F,
+    /* 0xADE7   */ 0xE160,
+    /* 0xADE8   */ 0xE161,
+    /* 0xADE9   */ 0xE162,
+    /* 0xADEA   */ 0xE163,
+    /* 0xADEB   */ 0xE164,
+    /* 0xADEC   */ 0xE165,
+    /* 0xADED   */ 0xE166,
+    /* 0xADEE   */ 0xE167,
+    /* 0xADEF   */ 0xE168,
+    /* 0xADF0   */ 0xE169,
+    /* 0xADF1   */ 0xE16A,
+    /* 0xADF2   */ 0xE16B,
+    /* 0xADF3   */ 0xE16C,
+    /* 0xADF4   */ 0xE16D,
+    /* 0xADF5   */ 0xE16E,
+    /* 0xADF6   */ 0xE16F,
+    /* 0xADF7   */ 0xE170,
+    /* 0xADF8   */ 0xE171,
+    /* 0xADF9   */ 0xE172,
+    /* 0xADFA   */ 0xE173,
+    /* 0xADFB   */ 0xE174,
+    /* 0xADFC   */ 0xE175,
+    /* 0xADFD   */ 0xE176,
+    /* 0xADFE   */ 0xE177,
+    /* 0xAEA1   */ 0xE178,
+    /* 0xAEA2   */ 0xE179,
+    /* 0xAEA3   */ 0xE17A,
+    /* 0xAEA4   */ 0xE17B,
+    /* 0xAEA5   */ 0xE17C,
+    /* 0xAEA6   */ 0xE17D,
+    /* 0xAEA7   */ 0xE17E,
+    /* 0xAEA8   */ 0xE17F,
+    /* 0xAEA9   */ 0xE180,
+    /* 0xAEAA   */ 0xE181,
+    /* 0xAEAB   */ 0xE182,
+    /* 0xAEAC   */ 0xE183,
+    /* 0xAEAD   */ 0xE184,
+    /* 0xAEAE   */ 0xE185,
+    /* 0xAEAF   */ 0xE186,
+    /* 0xAEB0   */ 0xE187,
+    /* 0xAEB1   */ 0xE188,
+    /* 0xAEB2   */ 0xE189,
+    /* 0xAEB3   */ 0xE18A,
+    /* 0xAEB4   */ 0xE18B,
+    /* 0xAEB5   */ 0xE18C,
+    /* 0xAEB6   */ 0xE18D,
+    /* 0xAEB7   */ 0xE18E,
+    /* 0xAEB8   */ 0xE18F,
+    /* 0xAEB9   */ 0xE190,
+    /* 0xAEBA   */ 0xE191,
+    /* 0xAEBB   */ 0xE192,
+    /* 0xAEBC   */ 0xE193,
+    /* 0xAEBD   */ 0xE194,
+    /* 0xAEBE   */ 0xE195,
+    /* 0xAEBF   */ 0xE196,
+    /* 0xAEC0   */ 0xE197,
+    /* 0xAEC1   */ 0xE198,
+    /* 0xAEC2   */ 0xE199,
+    /* 0xAEC3   */ 0xE19A,
+    /* 0xAEC4   */ 0xE19B,
+    /* 0xAEC5   */ 0xE19C,
+    /* 0xAEC6   */ 0xE19D,
+    /* 0xAEC7   */ 0xE19E,
+    /* 0xAEC8   */ 0xE19F,
+    /* 0xAEC9   */ 0xE1A0,
+    /* 0xAECA   */ 0xE1A1,
+    /* 0xAECB   */ 0xE1A2,
+    /* 0xAECC   */ 0xE1A3,
+    /* 0xAECD   */ 0xE1A4,
+    /* 0xAECE   */ 0xE1A5,
+    /* 0xAECF   */ 0xE1A6,
+    /* 0xAED0   */ 0xE1A7,
+    /* 0xAED1   */ 0xE1A8,
+    /* 0xAED2   */ 0xE1A9,
+    /* 0xAED3   */ 0xE1AA,
+    /* 0xAED4   */ 0xE1AB,
+    /* 0xAED5   */ 0xE1AC,
+    /* 0xAED6   */ 0xE1AD,
+    /* 0xAED7   */ 0xE1AE,
+    /* 0xAED8   */ 0xE1AF,
+    /* 0xAED9   */ 0xE1B0,
+    /* 0xAEDA   */ 0xE1B1,
+    /* 0xAEDB   */ 0xE1B2,
+    /* 0xAEDC   */ 0xE1B3,
+    /* 0xAEDD   */ 0xE1B4,
+    /* 0xAEDE   */ 0xE1B5,
+    /* 0xAEDF   */ 0xE1B6,
+    /* 0xAEE0   */ 0xE1B7,
+    /* 0xAEE1   */ 0xE1B8,
+    /* 0xAEE2   */ 0xE1B9,
+    /* 0xAEE3   */ 0xE1BA,
+    /* 0xAEE4   */ 0xE1BB,
+    /* 0xAEE5   */ 0xE1BC,
+    /* 0xAEE6   */ 0xE1BD,
+    /* 0xAEE7   */ 0xE1BE,
+    /* 0xAEE8   */ 0xE1BF,
+    /* 0xAEE9   */ 0xE1C0,
+    /* 0xAEEA   */ 0xE1C1,
+    /* 0xAEEB   */ 0xE1C2,
+    /* 0xAEEC   */ 0xE1C3,
+    /* 0xAEED   */ 0xE1C4,
+    /* 0xAEEE   */ 0xE1C5,
+    /* 0xAEEF   */ 0xE1C6,
+    /* 0xAEF0   */ 0xE1C7,
+    /* 0xAEF1   */ 0xE1C8,
+    /* 0xAEF2   */ 0xE1C9,
+    /* 0xAEF3   */ 0xE1CA,
+    /* 0xAEF4   */ 0xE1CB,
+    /* 0xAEF5   */ 0xE1CC,
+    /* 0xAEF6   */ 0xE1CD,
+    /* 0xAEF7   */ 0xE1CE,
+    /* 0xAEF8   */ 0xE1CF,
+    /* 0xAEF9   */ 0xE1D0,
+    /* 0xAEFA   */ 0xE1D1,
+    /* 0xAEFB   */ 0xE1D2,
+    /* 0xAEFC   */ 0xE1D3,
+    /* 0xAEFD   */ 0xE1D4,
+    /* 0xAEFE   */ 0xE1D5,
+    /* 0xAFA1   */ 0xE1D6,
+    /* 0xAFA2   */ 0xE1D7,
+    /* 0xAFA3   */ 0xE1D8,
+    /* 0xAFA4   */ 0xE1D9,
+    /* 0xAFA5   */ 0xE1DA,
+    /* 0xAFA6   */ 0xE1DB,
+    /* 0xAFA7   */ 0xE1DC,
+    /* 0xAFA8   */ 0xE1DD,
+    /* 0xAFA9   */ 0xE1DE,
+    /* 0xAFAA   */ 0xE1DF,
+    /* 0xAFAB   */ 0xE1E0,
+    /* 0xAFAC   */ 0xE1E1,
+    /* 0xAFAD   */ 0xE1E2,
+    /* 0xAFAE   */ 0xE1E3,
+    /* 0xAFAF   */ 0xE1E4,
+    /* 0xAFB0   */ 0xE1E5,
+    /* 0xAFB1   */ 0xE1E6,
+    /* 0xAFB2   */ 0xE1E7,
+    /* 0xAFB3   */ 0xE1E8,
+    /* 0xAFB4   */ 0xE1E9,
+    /* 0xAFB5   */ 0xE1EA,
+    /* 0xAFB6   */ 0xE1EB,
+    /* 0xAFB7   */ 0xE1EC,
+    /* 0xAFB8   */ 0xE1ED,
+    /* 0xAFB9   */ 0xE1EE,
+    /* 0xAFBA   */ 0xE1EF,
+    /* 0xAFBB   */ 0xE1F0,
+    /* 0xAFBC   */ 0xE1F1,
+    /* 0xAFBD   */ 0xE1F2,
+    /* 0xAFBE   */ 0xE1F3,
+    /* 0xAFBF   */ 0xE1F4,
+    /* 0xAFC0   */ 0xE1F5,
+    /* 0xAFC1   */ 0xE1F6,
+    /* 0xAFC2   */ 0xE1F7,
+    /* 0xAFC3   */ 0xE1F8,
+    /* 0xAFC4   */ 0xE1F9,
+    /* 0xAFC5   */ 0xE1FA,
+    /* 0xAFC6   */ 0xE1FB,
+    /* 0xAFC7   */ 0xE1FC,
+    /* 0xAFC8   */ 0xE1FD,
+    /* 0xAFC9   */ 0xE1FE,
+    /* 0xAFCA   */ 0xE1FF,
+    /* 0xAFCB   */ 0xE200,
+    /* 0xAFCC   */ 0xE201,
+    /* 0xAFCD   */ 0xE202,
+    /* 0xAFCE   */ 0xE203,
+    /* 0xAFCF   */ 0xE204,
+    /* 0xAFD0   */ 0xE205,
+    /* 0xAFD1   */ 0xE206,
+    /* 0xAFD2   */ 0xE207,
+    /* 0xAFD3   */ 0xE208,
+    /* 0xAFD4   */ 0xE209,
+    /* 0xAFD5   */ 0xE20A,
+    /* 0xAFD6   */ 0xE20B,
+    /* 0xAFD7   */ 0xE20C,
+    /* 0xAFD8   */ 0xE20D,
+    /* 0xAFD9   */ 0xE20E,
+    /* 0xAFDA   */ 0xE20F,
+    /* 0xAFDB   */ 0xE210,
+    /* 0xAFDC   */ 0xE211,
+    /* 0xAFDD   */ 0xE212,
+    /* 0xAFDE   */ 0xE213,
+    /* 0xAFDF   */ 0xE214,
+    /* 0xAFE0   */ 0xE215,
+    /* 0xAFE1   */ 0xE216,
+    /* 0xAFE2   */ 0xE217,
+    /* 0xAFE3   */ 0xE218,
+    /* 0xAFE4   */ 0xE219,
+    /* 0xAFE5   */ 0xE21A,
+    /* 0xAFE6   */ 0xE21B,
+    /* 0xAFE7   */ 0xE21C,
+    /* 0xAFE8   */ 0xE21D,
+    /* 0xAFE9   */ 0xE21E,
+    /* 0xAFEA   */ 0xE21F,
+    /* 0xAFEB   */ 0xE220,
+    /* 0xAFEC   */ 0xE221,
+    /* 0xAFED   */ 0xE222,
+    /* 0xAFEE   */ 0xE223,
+    /* 0xAFEF   */ 0xE224,
+    /* 0xAFF0   */ 0xE225,
+    /* 0xAFF1   */ 0xE226,
+    /* 0xAFF2   */ 0xE227,
+    /* 0xAFF3   */ 0xE228,
+    /* 0xAFF4   */ 0xE229,
+    /* 0xAFF5   */ 0xE22A,
+    /* 0xAFF6   */ 0xE22B,
+    /* 0xAFF7   */ 0xE22C,
+    /* 0xAFF8   */ 0xE22D,
+    /* 0xAFF9   */ 0xE22E,
+    /* 0xAFFA   */ 0xE22F,
+    /* 0xAFFB   */ 0xE230,
+    /* 0xAFFC   */ 0xE231,
+    /* 0xAFFD   */ 0xE232,
+    /* 0xAFFE   */ 0xE233,
+    /* 0xB0A1 ?? */ 0x554A,
+    /* 0xB0A2 ?? */ 0x963F,
+    /* 0xB0A3 ?? */ 0x57C3,
+    /* 0xB0A4 ?? */ 0x6328,
+    /* 0xB0A5 ?? */ 0x54CE,
+    /* 0xB0A6 ?? */ 0x5509,
+    /* 0xB0A7 ?? */ 0x54C0,
+    /* 0xB0A8 ?? */ 0x7691,
+    /* 0xB0A9 ?? */ 0x764C,
+    /* 0xB0AA ?? */ 0x853C,
+    /* 0xB0AB ?? */ 0x77EE,
+    /* 0xB0AC ?? */ 0x827E,
+    /* 0xB0AD ?? */ 0x788D,
+    /* 0xB0AE ?? */ 0x7231,
+    /* 0xB0AF ?? */ 0x9698,
+    /* 0xB0B0 ?? */ 0x978D,
+    /* 0xB0B1 ?? */ 0x6C28,
+    /* 0xB0B2 ?? */ 0x5B89,
+    /* 0xB0B3 ?? */ 0x4FFA,
+    /* 0xB0B4 ?? */ 0x6309,
+    /* 0xB0B5 ?? */ 0x6697,
+    /* 0xB0B6 ?? */ 0x5CB8,
+    /* 0xB0B7 ?? */ 0x80FA,
+    /* 0xB0B8 ?? */ 0x6848,
+    /* 0xB0B9 ?? */ 0x80AE,
+    /* 0xB0BA ?? */ 0x6602,
+    /* 0xB0BB ?? */ 0x76CE,
+    /* 0xB0BC ?? */ 0x51F9,
+    /* 0xB0BD ?? */ 0x6556,
+    /* 0xB0BE ?? */ 0x71AC,
+    /* 0xB0BF ?? */ 0x7FF1,
+    /* 0xB0C0 ?? */ 0x8884,
+    /* 0xB0C1 ?? */ 0x50B2,
+    /* 0xB0C2 ?? */ 0x5965,
+    /* 0xB0C3 ?? */ 0x61CA,
+    /* 0xB0C4 ?? */ 0x6FB3,
+    /* 0xB0C5 ?? */ 0x82AD,
+    /* 0xB0C6 ?? */ 0x634C,
+    /* 0xB0C7 ?? */ 0x6252,
+    /* 0xB0C8 ?? */ 0x53ED,
+    /* 0xB0C9 ?? */ 0x5427,
+    /* 0xB0CA ?? */ 0x7B06,
+    /* 0xB0CB ?? */ 0x516B,
+    /* 0xB0CC ?? */ 0x75A4,
+    /* 0xB0CD ?? */ 0x5DF4,
+    /* 0xB0CE ?? */ 0x62D4,
+    /* 0xB0CF ?? */ 0x8DCB,
+    /* 0xB0D0 ?? */ 0x9776,
+    /* 0xB0D1 ?? */ 0x628A,
+    /* 0xB0D2 ?? */ 0x8019,
+    /* 0xB0D3 ?? */ 0x575D,
+    /* 0xB0D4 ?? */ 0x9738,
+    /* 0xB0D5 ?? */ 0x7F62,
+    /* 0xB0D6 ?? */ 0x7238,
+    /* 0xB0D7 ?? */ 0x767D,
+    /* 0xB0D8 ?? */ 0x67CF,
+    /* 0xB0D9 ?? */ 0x767E,
+    /* 0xB0DA ?? */ 0x6446,
+    /* 0xB0DB ?? */ 0x4F70,
+    /* 0xB0DC ?? */ 0x8D25,
+    /* 0xB0DD ?? */ 0x62DC,
+    /* 0xB0DE ?? */ 0x7A17,
+    /* 0xB0DF ?? */ 0x6591,
+    /* 0xB0E0 ?? */ 0x73ED,
+    /* 0xB0E1 ?? */ 0x642C,
+    /* 0xB0E2 ?? */ 0x6273,
+    /* 0xB0E3 ?? */ 0x822C,
+    /* 0xB0E4 ?? */ 0x9881,
+    /* 0xB0E5 ?? */ 0x677F,
+    /* 0xB0E6 ?? */ 0x7248,
+    /* 0xB0E7 ?? */ 0x626E,
+    /* 0xB0E8 ?? */ 0x62CC,
+    /* 0xB0E9 ?? */ 0x4F34,
+    /* 0xB0EA ?? */ 0x74E3,
+    /* 0xB0EB ?? */ 0x534A,
+    /* 0xB0EC ?? */ 0x529E,
+    /* 0xB0ED ?? */ 0x7ECA,
+    /* 0xB0EE ?? */ 0x90A6,
+    /* 0xB0EF ?? */ 0x5E2E,
+    /* 0xB0F0 ?? */ 0x6886,
+    /* 0xB0F1 ?? */ 0x699C,
+    /* 0xB0F2 ?? */ 0x8180,
+    /* 0xB0F3 ?? */ 0x7ED1,
+    /* 0xB0F4 ?? */ 0x68D2,
+    /* 0xB0F5 ?? */ 0x78C5,
+    /* 0xB0F6 ?? */ 0x868C,
+    /* 0xB0F7 ?? */ 0x9551,
+    /* 0xB0F8 ?? */ 0x508D,
+    /* 0xB0F9 ?? */ 0x8C24,
+    /* 0xB0FA ?? */ 0x82DE,
+    /* 0xB0FB ?? */ 0x80DE,
+    /* 0xB0FC ?? */ 0x5305,
+    /* 0xB0FD ?? */ 0x8912,
+    /* 0xB0FE ?? */ 0x5265,
+    /* 0xB1A1 ?? */ 0x8584,
+    /* 0xB1A2 ?? */ 0x96F9,
+    /* 0xB1A3 ?? */ 0x4FDD,
+    /* 0xB1A4 ?? */ 0x5821,
+    /* 0xB1A5 ?? */ 0x9971,
+    /* 0xB1A6 ?? */ 0x5B9D,
+    /* 0xB1A7 ?? */ 0x62B1,
+    /* 0xB1A8 ?? */ 0x62A5,
+    /* 0xB1A9 ?? */ 0x66B4,
+    /* 0xB1AA ?? */ 0x8C79,
+    /* 0xB1AB ?? */ 0x9C8D,
+    /* 0xB1AC ?? */ 0x7206,
+    /* 0xB1AD ?? */ 0x676F,
+    /* 0xB1AE ?? */ 0x7891,
+    /* 0xB1AF ?? */ 0x60B2,
+    /* 0xB1B0 ?? */ 0x5351,
+    /* 0xB1B1 ?? */ 0x5317,
+    /* 0xB1B2 ?? */ 0x8F88,
+    /* 0xB1B3 ?? */ 0x80CC,
+    /* 0xB1B4 ?? */ 0x8D1D,
+    /* 0xB1B5 ?? */ 0x94A1,
+    /* 0xB1B6 ?? */ 0x500D,
+    /* 0xB1B7 ?? */ 0x72C8,
+    /* 0xB1B8 ?? */ 0x5907,
+    /* 0xB1B9 ?? */ 0x60EB,
+    /* 0xB1BA ?? */ 0x7119,
+    /* 0xB1BB ?? */ 0x88AB,
+    /* 0xB1BC ?? */ 0x5954,
+    /* 0xB1BD ?? */ 0x82EF,
+    /* 0xB1BE ?? */ 0x672C,
+    /* 0xB1BF ?? */ 0x7B28,
+    /* 0xB1C0 ?? */ 0x5D29,
+    /* 0xB1C1 ?? */ 0x7EF7,
+    /* 0xB1C2 ?? */ 0x752D,
+    /* 0xB1C3 ?? */ 0x6CF5,
+    /* 0xB1C4 ?? */ 0x8E66,
+    /* 0xB1C5 ?? */ 0x8FF8,
+    /* 0xB1C6 ?? */ 0x903C,
+    /* 0xB1C7 ?? */ 0x9F3B,
+    /* 0xB1C8 ?? */ 0x6BD4,
+    /* 0xB1C9 ?? */ 0x9119,
+    /* 0xB1CA ?? */ 0x7B14,
+    /* 0xB1CB ?? */ 0x5F7C,
+    /* 0xB1CC ?? */ 0x78A7,
+    /* 0xB1CD ?? */ 0x84D6,
+    /* 0xB1CE ?? */ 0x853D,
+    /* 0xB1CF ?? */ 0x6BD5,
+    /* 0xB1D0 ?? */ 0x6BD9,
+    /* 0xB1D1 ?? */ 0x6BD6,
+    /* 0xB1D2 ?? */ 0x5E01,
+    /* 0xB1D3 ?? */ 0x5E87,
+    /* 0xB1D4 ?? */ 0x75F9,
+    /* 0xB1D5 ?? */ 0x95ED,
+    /* 0xB1D6 ?? */ 0x655D,
+    /* 0xB1D7 ?? */ 0x5F0A,
+    /* 0xB1D8 ?? */ 0x5FC5,
+    /* 0xB1D9 ?? */ 0x8F9F,
+    /* 0xB1DA ?? */ 0x58C1,
+    /* 0xB1DB ?? */ 0x81C2,
+    /* 0xB1DC ?? */ 0x907F,
+    /* 0xB1DD ?? */ 0x965B,
+    /* 0xB1DE ?? */ 0x97AD,
+    /* 0xB1DF ?? */ 0x8FB9,
+    /* 0xB1E0 ?? */ 0x7F16,
+    /* 0xB1E1 ?? */ 0x8D2C,
+    /* 0xB1E2 ?? */ 0x6241,
+    /* 0xB1E3 ?? */ 0x4FBF,
+    /* 0xB1E4 ?? */ 0x53D8,
+    /* 0xB1E5 ?? */ 0x535E,
+    /* 0xB1E6 ?? */ 0x8FA8,
+    /* 0xB1E7 ?? */ 0x8FA9,
+    /* 0xB1E8 ?? */ 0x8FAB,
+    /* 0xB1E9 ?? */ 0x904D,
+    /* 0xB1EA ?? */ 0x6807,
+    /* 0xB1EB ?? */ 0x5F6A,
+    /* 0xB1EC ?? */ 0x8198,
+    /* 0xB1ED ?? */ 0x8868,
+    /* 0xB1EE ?? */ 0x9CD6,
+    /* 0xB1EF ?? */ 0x618B,
+    /* 0xB1F0 ?? */ 0x522B,
+    /* 0xB1F1 ?? */ 0x762A,
+    /* 0xB1F2 ?? */ 0x5F6C,
+    /* 0xB1F3 ?? */ 0x658C,
+    /* 0xB1F4 ?? */ 0x6FD2,
+    /* 0xB1F5 ?? */ 0x6EE8,
+    /* 0xB1F6 ?? */ 0x5BBE,
+    /* 0xB1F7 ?? */ 0x6448,
+    /* 0xB1F8 ?? */ 0x5175,
+    /* 0xB1F9 ?? */ 0x51B0,
+    /* 0xB1FA ?? */ 0x67C4,
+    /* 0xB1FB ?? */ 0x4E19,
+    /* 0xB1FC ?? */ 0x79C9,
+    /* 0xB1FD ?? */ 0x997C,
+    /* 0xB1FE ?? */ 0x70B3,
+    /* 0xB2A1 ?? */ 0x75C5,
+    /* 0xB2A2 ?? */ 0x5E76,
+    /* 0xB2A3 ?? */ 0x73BB,
+    /* 0xB2A4 ?? */ 0x83E0,
+    /* 0xB2A5 ?? */ 0x64AD,
+    /* 0xB2A6 ?? */ 0x62E8,
+    /* 0xB2A7 ?? */ 0x94B5,
+    /* 0xB2A8 ?? */ 0x6CE2,
+    /* 0xB2A9 ?? */ 0x535A,
+    /* 0xB2AA ?? */ 0x52C3,
+    /* 0xB2AB ?? */ 0x640F,
+    /* 0xB2AC ?? */ 0x94C2,
+    /* 0xB2AD ?? */ 0x7B94,
+    /* 0xB2AE ?? */ 0x4F2F,
+    /* 0xB2AF ?? */ 0x5E1B,
+    /* 0xB2B0 ?? */ 0x8236,
+    /* 0xB2B1 ?? */ 0x8116,
+    /* 0xB2B2 ?? */ 0x818A,
+    /* 0xB2B3 ?? */ 0x6E24,
+    /* 0xB2B4 ?? */ 0x6CCA,
+    /* 0xB2B5 ?? */ 0x9A73,
+    /* 0xB2B6 ?? */ 0x6355,
+    /* 0xB2B7 ?? */ 0x535C,
+    /* 0xB2B8 ?? */ 0x54FA,
+    /* 0xB2B9 ?? */ 0x8865,
+    /* 0xB2BA ?? */ 0x57E0,
+    /* 0xB2BB ?? */ 0x4E0D,
+    /* 0xB2BC ?? */ 0x5E03,
+    /* 0xB2BD ?? */ 0x6B65,
+    /* 0xB2BE ?? */ 0x7C3F,
+    /* 0xB2BF ?? */ 0x90E8,
+    /* 0xB2C0 ?? */ 0x6016,
+    /* 0xB2C1 ?? */ 0x64E6,
+    /* 0xB2C2 ?? */ 0x731C,
+    /* 0xB2C3 ?? */ 0x88C1,
+    /* 0xB2C4 ?? */ 0x6750,
+    /* 0xB2C5 ?? */ 0x624D,
+    /* 0xB2C6 ?? */ 0x8D22,
+    /* 0xB2C7 ?? */ 0x776C,
+    /* 0xB2C8 ?? */ 0x8E29,
+    /* 0xB2C9 ?? */ 0x91C7,
+    /* 0xB2CA ?? */ 0x5F69,
+    /* 0xB2CB ?? */ 0x83DC,
+    /* 0xB2CC ?? */ 0x8521,
+    /* 0xB2CD ?? */ 0x9910,
+    /* 0xB2CE ?? */ 0x53C2,
+    /* 0xB2CF ?? */ 0x8695,
+    /* 0xB2D0 ?? */ 0x6B8B,
+    /* 0xB2D1 ?? */ 0x60ED,
+    /* 0xB2D2 ?? */ 0x60E8,
+    /* 0xB2D3 ?? */ 0x707F,
+    /* 0xB2D4 ?? */ 0x82CD,
+    /* 0xB2D5 ?? */ 0x8231,
+    /* 0xB2D6 ?? */ 0x4ED3,
+    /* 0xB2D7 ?? */ 0x6CA7,
+    /* 0xB2D8 ?? */ 0x85CF,
+    /* 0xB2D9 ?? */ 0x64CD,
+    /* 0xB2DA ?? */ 0x7CD9,
+    /* 0xB2DB ?? */ 0x69FD,
+    /* 0xB2DC ?? */ 0x66F9,
+    /* 0xB2DD ?? */ 0x8349,
+    /* 0xB2DE ?? */ 0x5395,
+    /* 0xB2DF ?? */ 0x7B56,
+    /* 0xB2E0 ?? */ 0x4FA7,
+    /* 0xB2E1 ?? */ 0x518C,
+    /* 0xB2E2 ?? */ 0x6D4B,
+    /* 0xB2E3 ?? */ 0x5C42,
+    /* 0xB2E4 ?? */ 0x8E6D,
+    /* 0xB2E5 ?? */ 0x63D2,
+    /* 0xB2E6 ?? */ 0x53C9,
+    /* 0xB2E7 ?? */ 0x832C,
+    /* 0xB2E8 ?? */ 0x8336,
+    /* 0xB2E9 ?? */ 0x67E5,
+    /* 0xB2EA ?? */ 0x78B4,
+    /* 0xB2EB ?? */ 0x643D,
+    /* 0xB2EC ?? */ 0x5BDF,
+    /* 0xB2ED ?? */ 0x5C94,
+    /* 0xB2EE ?? */ 0x5DEE,
+    /* 0xB2EF ?? */ 0x8BE7,
+    /* 0xB2F0 ?? */ 0x62C6,
+    /* 0xB2F1 ?? */ 0x67F4,
+    /* 0xB2F2 ?? */ 0x8C7A,
+    /* 0xB2F3 ?? */ 0x6400,
+    /* 0xB2F4 ?? */ 0x63BA,
+    /* 0xB2F5 ?? */ 0x8749,
+    /* 0xB2F6 ?? */ 0x998B,
+    /* 0xB2F7 ?? */ 0x8C17,
+    /* 0xB2F8 ?? */ 0x7F20,
+    /* 0xB2F9 ?? */ 0x94F2,
+    /* 0xB2FA ?? */ 0x4EA7,
+    /* 0xB2FB ?? */ 0x9610,
+    /* 0xB2FC ?? */ 0x98A4,
+    /* 0xB2FD ?? */ 0x660C,
+    /* 0xB2FE ?? */ 0x7316,
+    /* 0xB3A1 ?? */ 0x573A,
+    /* 0xB3A2 ?? */ 0x5C1D,
+    /* 0xB3A3 ?? */ 0x5E38,
+    /* 0xB3A4 ?? */ 0x957F,
+    /* 0xB3A5 ?? */ 0x507F,
+    /* 0xB3A6 ?? */ 0x80A0,
+    /* 0xB3A7 ?? */ 0x5382,
+    /* 0xB3A8 ?? */ 0x655E,
+    /* 0xB3A9 ?? */ 0x7545,
+    /* 0xB3AA ?? */ 0x5531,
+    /* 0xB3AB ?? */ 0x5021,
+    /* 0xB3AC ?? */ 0x8D85,
+    /* 0xB3AD ?? */ 0x6284,
+    /* 0xB3AE ?? */ 0x949E,
+    /* 0xB3AF ?? */ 0x671D,
+    /* 0xB3B0 ?? */ 0x5632,
+    /* 0xB3B1 ?? */ 0x6F6E,
+    /* 0xB3B2 ?? */ 0x5DE2,
+    /* 0xB3B3 ?? */ 0x5435,
+    /* 0xB3B4 ?? */ 0x7092,
+    /* 0xB3B5 ?? */ 0x8F66,
+    /* 0xB3B6 ?? */ 0x626F,
+    /* 0xB3B7 ?? */ 0x64A4,
+    /* 0xB3B8 ?? */ 0x63A3,
+    /* 0xB3B9 ?? */ 0x5F7B,
+    /* 0xB3BA ?? */ 0x6F88,
+    /* 0xB3BB ?? */ 0x90F4,
+    /* 0xB3BC ?? */ 0x81E3,
+    /* 0xB3BD ?? */ 0x8FB0,
+    /* 0xB3BE ?? */ 0x5C18,
+    /* 0xB3BF ?? */ 0x6668,
+    /* 0xB3C0 ?? */ 0x5FF1,
+    /* 0xB3C1 ?? */ 0x6C89,
+    /* 0xB3C2 ?? */ 0x9648,
+    /* 0xB3C3 ?? */ 0x8D81,
+    /* 0xB3C4 ?? */ 0x886C,
+    /* 0xB3C5 ?? */ 0x6491,
+    /* 0xB3C6 ?? */ 0x79F0,
+    /* 0xB3C7 ?? */ 0x57CE,
+    /* 0xB3C8 ?? */ 0x6A59,
+    /* 0xB3C9 ?? */ 0x6210,
+    /* 0xB3CA ?? */ 0x5448,
+    /* 0xB3CB ?? */ 0x4E58,
+    /* 0xB3CC ?? */ 0x7A0B,
+    /* 0xB3CD ?? */ 0x60E9,
+    /* 0xB3CE ?? */ 0x6F84,
+    /* 0xB3CF ?? */ 0x8BDA,
+    /* 0xB3D0 ?? */ 0x627F,
+    /* 0xB3D1 ?? */ 0x901E,
+    /* 0xB3D2 ?? */ 0x9A8B,
+    /* 0xB3D3 ?? */ 0x79E4,
+    /* 0xB3D4 ?? */ 0x5403,
+    /* 0xB3D5 ?? */ 0x75F4,
+    /* 0xB3D6 ?? */ 0x6301,
+    /* 0xB3D7 ?? */ 0x5319,
+    /* 0xB3D8 ?? */ 0x6C60,
+    /* 0xB3D9 ?? */ 0x8FDF,
+    /* 0xB3DA ?? */ 0x5F1B,
+    /* 0xB3DB ?? */ 0x9A70,
+    /* 0xB3DC ?? */ 0x803B,
+    /* 0xB3DD ?? */ 0x9F7F,
+    /* 0xB3DE ?? */ 0x4F88,
+    /* 0xB3DF ?? */ 0x5C3A,
+    /* 0xB3E0 ?? */ 0x8D64,
+    /* 0xB3E1 ?? */ 0x7FC5,
+    /* 0xB3E2 ?? */ 0x65A5,
+    /* 0xB3E3 ?? */ 0x70BD,
+    /* 0xB3E4 ?? */ 0x5145,
+    /* 0xB3E5 ?? */ 0x51B2,
+    /* 0xB3E6 ?? */ 0x866B,
+    /* 0xB3E7 ?? */ 0x5D07,
+    /* 0xB3E8 ?? */ 0x5BA0,
+    /* 0xB3E9 ?? */ 0x62BD,
+    /* 0xB3EA ?? */ 0x916C,
+    /* 0xB3EB ?? */ 0x7574,
+    /* 0xB3EC ?? */ 0x8E0C,
+    /* 0xB3ED ?? */ 0x7A20,
+    /* 0xB3EE ?? */ 0x6101,
+    /* 0xB3EF ?? */ 0x7B79,
+    /* 0xB3F0 ?? */ 0x4EC7,
+    /* 0xB3F1 ?? */ 0x7EF8,
+    /* 0xB3F2 ?? */ 0x7785,
+    /* 0xB3F3 ?? */ 0x4E11,
+    /* 0xB3F4 ?? */ 0x81ED,
+    /* 0xB3F5 ?? */ 0x521D,
+    /* 0xB3F6 ?? */ 0x51FA,
+    /* 0xB3F7 ?? */ 0x6A71,
+    /* 0xB3F8 ?? */ 0x53A8,
+    /* 0xB3F9 ?? */ 0x8E87,
+    /* 0xB3FA ?? */ 0x9504,
+    /* 0xB3FB ?? */ 0x96CF,
+    /* 0xB3FC ?? */ 0x6EC1,
+    /* 0xB3FD ?? */ 0x9664,
+    /* 0xB3FE ?? */ 0x695A,
+    /* 0xB4A1 ?? */ 0x7840,
+    /* 0xB4A2 ?? */ 0x50A8,
+    /* 0xB4A3 ?? */ 0x77D7,
+    /* 0xB4A4 ?? */ 0x6410,
+    /* 0xB4A5 ?? */ 0x89E6,
+    /* 0xB4A6 ?? */ 0x5904,
+    /* 0xB4A7 ?? */ 0x63E3,
+    /* 0xB4A8 ?? */ 0x5DDD,
+    /* 0xB4A9 ?? */ 0x7A7F,
+    /* 0xB4AA ?? */ 0x693D,
+    /* 0xB4AB ?? */ 0x4F20,
+    /* 0xB4AC ?? */ 0x8239,
+    /* 0xB4AD ?? */ 0x5598,
+    /* 0xB4AE ?? */ 0x4E32,
+    /* 0xB4AF ?? */ 0x75AE,
+    /* 0xB4B0 ?? */ 0x7A97,
+    /* 0xB4B1 ?? */ 0x5E62,
+    /* 0xB4B2 ?? */ 0x5E8A,
+    /* 0xB4B3 ?? */ 0x95EF,
+    /* 0xB4B4 ?? */ 0x521B,
+    /* 0xB4B5 ?? */ 0x5439,
+    /* 0xB4B6 ?? */ 0x708A,
+    /* 0xB4B7 ?? */ 0x6376,
+    /* 0xB4B8 ?? */ 0x9524,
+    /* 0xB4B9 ?? */ 0x5782,
+    /* 0xB4BA ?? */ 0x6625,
+    /* 0xB4BB ?? */ 0x693F,
+    /* 0xB4BC ?? */ 0x9187,
+    /* 0xB4BD ?? */ 0x5507,
+    /* 0xB4BE ?? */ 0x6DF3,
+    /* 0xB4BF ?? */ 0x7EAF,
+    /* 0xB4C0 ?? */ 0x8822,
+    /* 0xB4C1 ?? */ 0x6233,
+    /* 0xB4C2 ?? */ 0x7EF0,
+    /* 0xB4C3 ?? */ 0x75B5,
+    /* 0xB4C4 ?? */ 0x8328,
+    /* 0xB4C5 ?? */ 0x78C1,
+    /* 0xB4C6 ?? */ 0x96CC,
+    /* 0xB4C7 ?? */ 0x8F9E,
+    /* 0xB4C8 ?? */ 0x6148,
+    /* 0xB4C9 ?? */ 0x74F7,
+    /* 0xB4CA ?? */ 0x8BCD,
+    /* 0xB4CB ?? */ 0x6B64,
+    /* 0xB4CC ?? */ 0x523A,
+    /* 0xB4CD ?? */ 0x8D50,
+    /* 0xB4CE ?? */ 0x6B21,
+    /* 0xB4CF ?? */ 0x806A,
+    /* 0xB4D0 ?? */ 0x8471,
+    /* 0xB4D1 ?? */ 0x56F1,
+    /* 0xB4D2 ?? */ 0x5306,
+    /* 0xB4D3 ?? */ 0x4ECE,
+    /* 0xB4D4 ?? */ 0x4E1B,
+    /* 0xB4D5 ?? */ 0x51D1,
+    /* 0xB4D6 ?? */ 0x7C97,
+    /* 0xB4D7 ?? */ 0x918B,
+    /* 0xB4D8 ?? */ 0x7C07,
+    /* 0xB4D9 ?? */ 0x4FC3,
+    /* 0xB4DA ?? */ 0x8E7F,
+    /* 0xB4DB ?? */ 0x7BE1,
+    /* 0xB4DC ?? */ 0x7A9C,
+    /* 0xB4DD ?? */ 0x6467,
+    /* 0xB4DE ?? */ 0x5D14,
+    /* 0xB4DF ?? */ 0x50AC,
+    /* 0xB4E0 ?? */ 0x8106,
+    /* 0xB4E1 ?? */ 0x7601,
+    /* 0xB4E2 ?? */ 0x7CB9,
+    /* 0xB4E3 ?? */ 0x6DEC,
+    /* 0xB4E4 ?? */ 0x7FE0,
+    /* 0xB4E5 ?? */ 0x6751,
+    /* 0xB4E6 ?? */ 0x5B58,
+    /* 0xB4E7 ?? */ 0x5BF8,
+    /* 0xB4E8 ?? */ 0x78CB,
+    /* 0xB4E9 ?? */ 0x64AE,
+    /* 0xB4EA ?? */ 0x6413,
+    /* 0xB4EB ?? */ 0x63AA,
+    /* 0xB4EC ?? */ 0x632B,
+    /* 0xB4ED ?? */ 0x9519,
+    /* 0xB4EE ?? */ 0x642D,
+    /* 0xB4EF ?? */ 0x8FBE,
+    /* 0xB4F0 ?? */ 0x7B54,
+    /* 0xB4F1 ?? */ 0x7629,
+    /* 0xB4F2 ?? */ 0x6253,
+    /* 0xB4F3 ?? */ 0x5927,
+    /* 0xB4F4 ?? */ 0x5446,
+    /* 0xB4F5 ?? */ 0x6B79,
+    /* 0xB4F6 ?? */ 0x50A3,
+    /* 0xB4F7 ?? */ 0x6234,
+    /* 0xB4F8 ?? */ 0x5E26,
+    /* 0xB4F9 ?? */ 0x6B86,
+    /* 0xB4FA ?? */ 0x4EE3,
+    /* 0xB4FB ?? */ 0x8D37,
+    /* 0xB4FC ?? */ 0x888B,
+    /* 0xB4FD ?? */ 0x5F85,
+    /* 0xB4FE ?? */ 0x902E,
+    /* 0xB5A1 ?? */ 0x6020,
+    /* 0xB5A2 ?? */ 0x803D,
+    /* 0xB5A3 ?? */ 0x62C5,
+    /* 0xB5A4 ?? */ 0x4E39,
+    /* 0xB5A5 ?? */ 0x5355,
+    /* 0xB5A6 ?? */ 0x90F8,
+    /* 0xB5A7 ?? */ 0x63B8,
+    /* 0xB5A8 ?? */ 0x80C6,
+    /* 0xB5A9 ?? */ 0x65E6,
+    /* 0xB5AA ?? */ 0x6C2E,
+    /* 0xB5AB ?? */ 0x4F46,
+    /* 0xB5AC ?? */ 0x60EE,
+    /* 0xB5AD ?? */ 0x6DE1,
+    /* 0xB5AE ?? */ 0x8BDE,
+    /* 0xB5AF ?? */ 0x5F39,
+    /* 0xB5B0 ?? */ 0x86CB,
+    /* 0xB5B1 ?? */ 0x5F53,
+    /* 0xB5B2 ?? */ 0x6321,
+    /* 0xB5B3 ?? */ 0x515A,
+    /* 0xB5B4 ?? */ 0x8361,
+    /* 0xB5B5 ?? */ 0x6863,
+    /* 0xB5B6 ?? */ 0x5200,
+    /* 0xB5B7 ?? */ 0x6363,
+    /* 0xB5B8 ?? */ 0x8E48,
+    /* 0xB5B9 ?? */ 0x5012,
+    /* 0xB5BA ?? */ 0x5C9B,
+    /* 0xB5BB ?? */ 0x7977,
+    /* 0xB5BC ?? */ 0x5BFC,
+    /* 0xB5BD ?? */ 0x5230,
+    /* 0xB5BE ?? */ 0x7A3B,
+    /* 0xB5BF ?? */ 0x60BC,
+    /* 0xB5C0 ?? */ 0x9053,
+    /* 0xB5C1 ?? */ 0x76D7,
+    /* 0xB5C2 ?? */ 0x5FB7,
+    /* 0xB5C3 ?? */ 0x5F97,
+    /* 0xB5C4 ?? */ 0x7684,
+    /* 0xB5C5 ?? */ 0x8E6C,
+    /* 0xB5C6 ?? */ 0x706F,
+    /* 0xB5C7 ?? */ 0x767B,
+    /* 0xB5C8 ?? */ 0x7B49,
+    /* 0xB5C9 ?? */ 0x77AA,
+    /* 0xB5CA ?? */ 0x51F3,
+    /* 0xB5CB ?? */ 0x9093,
+    /* 0xB5CC ?? */ 0x5824,
+    /* 0xB5CD ?? */ 0x4F4E,
+    /* 0xB5CE ?? */ 0x6EF4,
+    /* 0xB5CF ?? */ 0x8FEA,
+    /* 0xB5D0 ?? */ 0x654C,
+    /* 0xB5D1 ?? */ 0x7B1B,
+    /* 0xB5D2 ?? */ 0x72C4,
+    /* 0xB5D3 ?? */ 0x6DA4,
+    /* 0xB5D4 ?? */ 0x7FDF,
+    /* 0xB5D5 ?? */ 0x5AE1,
+    /* 0xB5D6 ?? */ 0x62B5,
+    /* 0xB5D7 ?? */ 0x5E95,
+    /* 0xB5D8 ?? */ 0x5730,
+    /* 0xB5D9 ?? */ 0x8482,
+    /* 0xB5DA ?? */ 0x7B2C,
+    /* 0xB5DB ?? */ 0x5E1D,
+    /* 0xB5DC ?? */ 0x5F1F,
+    /* 0xB5DD ?? */ 0x9012,
+    /* 0xB5DE ?? */ 0x7F14,
+    /* 0xB5DF ?? */ 0x98A0,
+    /* 0xB5E0 ?? */ 0x6382,
+    /* 0xB5E1 ?? */ 0x6EC7,
+    /* 0xB5E2 ?? */ 0x7898,
+    /* 0xB5E3 ?? */ 0x70B9,
+    /* 0xB5E4 ?? */ 0x5178,
+    /* 0xB5E5 ?? */ 0x975B,
+    /* 0xB5E6 ?? */ 0x57AB,
+    /* 0xB5E7 ?? */ 0x7535,
+    /* 0xB5E8 ?? */ 0x4F43,
+    /* 0xB5E9 ?? */ 0x7538,
+    /* 0xB5EA ?? */ 0x5E97,
+    /* 0xB5EB ?? */ 0x60E6,
+    /* 0xB5EC ?? */ 0x5960,
+    /* 0xB5ED ?? */ 0x6DC0,
+    /* 0xB5EE ?? */ 0x6BBF,
+    /* 0xB5EF ?? */ 0x7889,
+    /* 0xB5F0 ?? */ 0x53FC,
+    /* 0xB5F1 ?? */ 0x96D5,
+    /* 0xB5F2 ?? */ 0x51CB,
+    /* 0xB5F3 ?? */ 0x5201,
+    /* 0xB5F4 ?? */ 0x6389,
+    /* 0xB5F5 ?? */ 0x540A,
+    /* 0xB5F6 ?? */ 0x9493,
+    /* 0xB5F7 ?? */ 0x8C03,
+    /* 0xB5F8 ?? */ 0x8DCC,
+    /* 0xB5F9 ?? */ 0x7239,
+    /* 0xB5FA ?? */ 0x789F,
+    /* 0xB5FB ?? */ 0x8776,
+    /* 0xB5FC ?? */ 0x8FED,
+    /* 0xB5FD ?? */ 0x8C0D,
+    /* 0xB5FE ?? */ 0x53E0,
+    /* 0xB6A1 ?? */ 0x4E01,
+    /* 0xB6A2 ?? */ 0x76EF,
+    /* 0xB6A3 ?? */ 0x53EE,
+    /* 0xB6A4 ?? */ 0x9489,
+    /* 0xB6A5 ?? */ 0x9876,
+    /* 0xB6A6 ?? */ 0x9F0E,
+    /* 0xB6A7 ?? */ 0x952D,
+    /* 0xB6A8 ?? */ 0x5B9A,
+    /* 0xB6A9 ?? */ 0x8BA2,
+    /* 0xB6AA ?? */ 0x4E22,
+    /* 0xB6AB ?? */ 0x4E1C,
+    /* 0xB6AC ?? */ 0x51AC,
+    /* 0xB6AD ?? */ 0x8463,
+    /* 0xB6AE ?? */ 0x61C2,
+    /* 0xB6AF ?? */ 0x52A8,
+    /* 0xB6B0 ?? */ 0x680B,
+    /* 0xB6B1 ?? */ 0x4F97,
+    /* 0xB6B2 ?? */ 0x606B,
+    /* 0xB6B3 ?? */ 0x51BB,
+    /* 0xB6B4 ?? */ 0x6D1E,
+    /* 0xB6B5 ?? */ 0x515C,
+    /* 0xB6B6 ?? */ 0x6296,
+    /* 0xB6B7 ?? */ 0x6597,
+    /* 0xB6B8 ?? */ 0x9661,
+    /* 0xB6B9 ?? */ 0x8C46,
+    /* 0xB6BA ?? */ 0x9017,
+    /* 0xB6BB ?? */ 0x75D8,
+    /* 0xB6BC ?? */ 0x90FD,
+    /* 0xB6BD ?? */ 0x7763,
+    /* 0xB6BE ?? */ 0x6BD2,
+    /* 0xB6BF ?? */ 0x728A,
+    /* 0xB6C0 ?? */ 0x72EC,
+    /* 0xB6C1 ?? */ 0x8BFB,
+    /* 0xB6C2 ?? */ 0x5835,
+    /* 0xB6C3 ?? */ 0x7779,
+    /* 0xB6C4 ?? */ 0x8D4C,
+    /* 0xB6C5 ?? */ 0x675C,
+    /* 0xB6C6 ?? */ 0x9540,
+    /* 0xB6C7 ?? */ 0x809A,
+    /* 0xB6C8 ?? */ 0x5EA6,
+    /* 0xB6C9 ?? */ 0x6E21,
+    /* 0xB6CA ?? */ 0x5992,
+    /* 0xB6CB ?? */ 0x7AEF,
+    /* 0xB6CC ?? */ 0x77ED,
+    /* 0xB6CD ?? */ 0x953B,
+    /* 0xB6CE ?? */ 0x6BB5,
+    /* 0xB6CF ?? */ 0x65AD,
+    /* 0xB6D0 ?? */ 0x7F0E,
+    /* 0xB6D1 ?? */ 0x5806,
+    /* 0xB6D2 ?? */ 0x5151,
+    /* 0xB6D3 ?? */ 0x961F,
+    /* 0xB6D4 ?? */ 0x5BF9,
+    /* 0xB6D5 ?? */ 0x58A9,
+    /* 0xB6D6 ?? */ 0x5428,
+    /* 0xB6D7 ?? */ 0x8E72,
+    /* 0xB6D8 ?? */ 0x6566,
+    /* 0xB6D9 ?? */ 0x987F,
+    /* 0xB6DA ?? */ 0x56E4,
+    /* 0xB6DB ?? */ 0x949D,
+    /* 0xB6DC ?? */ 0x76FE,
+    /* 0xB6DD ?? */ 0x9041,
+    /* 0xB6DE ?? */ 0x6387,
+    /* 0xB6DF ?? */ 0x54C6,
+    /* 0xB6E0 ?? */ 0x591A,
+    /* 0xB6E1 ?? */ 0x593A,
+    /* 0xB6E2 ?? */ 0x579B,
+    /* 0xB6E3 ?? */ 0x8EB2,
+    /* 0xB6E4 ?? */ 0x6735,
+    /* 0xB6E5 ?? */ 0x8DFA,
+    /* 0xB6E6 ?? */ 0x8235,
+    /* 0xB6E7 ?? */ 0x5241,
+    /* 0xB6E8 ?? */ 0x60F0,
+    /* 0xB6E9 ?? */ 0x5815,
+    /* 0xB6EA ?? */ 0x86FE,
+    /* 0xB6EB ?? */ 0x5CE8,
+    /* 0xB6EC ?? */ 0x9E45,
+    /* 0xB6ED ?? */ 0x4FC4,
+    /* 0xB6EE ?? */ 0x989D,
+    /* 0xB6EF ?? */ 0x8BB9,
+    /* 0xB6F0 ?? */ 0x5A25,
+    /* 0xB6F1 ?? */ 0x6076,
+    /* 0xB6F2 ?? */ 0x5384,
+    /* 0xB6F3 ?? */ 0x627C,
+    /* 0xB6F4 ?? */ 0x904F,
+    /* 0xB6F5 ?? */ 0x9102,
+    /* 0xB6F6 ?? */ 0x997F,
+    /* 0xB6F7 ?? */ 0x6069,
+    /* 0xB6F8 ?? */ 0x800C,
+    /* 0xB6F9 ?? */ 0x513F,
+    /* 0xB6FA ?? */ 0x8033,
+    /* 0xB6FB ?? */ 0x5C14,
+    /* 0xB6FC ?? */ 0x9975,
+    /* 0xB6FD ?? */ 0x6D31,
+    /* 0xB6FE ?? */ 0x4E8C,
+    /* 0xB7A1 ?? */ 0x8D30,
+    /* 0xB7A2 ?? */ 0x53D1,
+    /* 0xB7A3 ?? */ 0x7F5A,
+    /* 0xB7A4 ?? */ 0x7B4F,
+    /* 0xB7A5 ?? */ 0x4F10,
+    /* 0xB7A6 ?? */ 0x4E4F,
+    /* 0xB7A7 ?? */ 0x9600,
+    /* 0xB7A8 ?? */ 0x6CD5,
+    /* 0xB7A9 ?? */ 0x73D0,
+    /* 0xB7AA ?? */ 0x85E9,
+    /* 0xB7AB ?? */ 0x5E06,
+    /* 0xB7AC ?? */ 0x756A,
+    /* 0xB7AD ?? */ 0x7FFB,
+    /* 0xB7AE ?? */ 0x6A0A,
+    /* 0xB7AF ?? */ 0x77FE,
+    /* 0xB7B0 ?? */ 0x9492,
+    /* 0xB7B1 ?? */ 0x7E41,
+    /* 0xB7B2 ?? */ 0x51E1,
+    /* 0xB7B3 ?? */ 0x70E6,
+    /* 0xB7B4 ?? */ 0x53CD,
+    /* 0xB7B5 ?? */ 0x8FD4,
+    /* 0xB7B6 ?? */ 0x8303,
+    /* 0xB7B7 ?? */ 0x8D29,
+    /* 0xB7B8 ?? */ 0x72AF,
+    /* 0xB7B9 ?? */ 0x996D,
+    /* 0xB7BA ?? */ 0x6CDB,
+    /* 0xB7BB ?? */ 0x574A,
+    /* 0xB7BC ?? */ 0x82B3,
+    /* 0xB7BD ?? */ 0x65B9,
+    /* 0xB7BE ?? */ 0x80AA,
+    /* 0xB7BF ?? */ 0x623F,
+    /* 0xB7C0 ?? */ 0x9632,
+    /* 0xB7C1 ?? */ 0x59A8,
+    /* 0xB7C2 ?? */ 0x4EFF,
+    /* 0xB7C3 ?? */ 0x8BBF,
+    /* 0xB7C4 ?? */ 0x7EBA,
+    /* 0xB7C5 ?? */ 0x653E,
+    /* 0xB7C6 ?? */ 0x83F2,
+    /* 0xB7C7 ?? */ 0x975E,
+    /* 0xB7C8 ?? */ 0x5561,
+    /* 0xB7C9 ?? */ 0x98DE,
+    /* 0xB7CA ?? */ 0x80A5,
+    /* 0xB7CB ?? */ 0x532A,
+    /* 0xB7CC ?? */ 0x8BFD,
+    /* 0xB7CD ?? */ 0x5420,
+    /* 0xB7CE ?? */ 0x80BA,
+    /* 0xB7CF ?? */ 0x5E9F,
+    /* 0xB7D0 ?? */ 0x6CB8,
+    /* 0xB7D1 ?? */ 0x8D39,
+    /* 0xB7D2 ?? */ 0x82AC,
+    /* 0xB7D3 ?? */ 0x915A,
+    /* 0xB7D4 ?? */ 0x5429,
+    /* 0xB7D5 ?? */ 0x6C1B,
+    /* 0xB7D6 ?? */ 0x5206,
+    /* 0xB7D7 ?? */ 0x7EB7,
+    /* 0xB7D8 ?? */ 0x575F,
+    /* 0xB7D9 ?? */ 0x711A,
+    /* 0xB7DA ?? */ 0x6C7E,
+    /* 0xB7DB ?? */ 0x7C89,
+    /* 0xB7DC ?? */ 0x594B,
+    /* 0xB7DD ?? */ 0x4EFD,
+    /* 0xB7DE ?? */ 0x5FFF,
+    /* 0xB7DF ?? */ 0x6124,
+    /* 0xB7E0 ?? */ 0x7CAA,
+    /* 0xB7E1 ?? */ 0x4E30,
+    /* 0xB7E2 ?? */ 0x5C01,
+    /* 0xB7E3 ?? */ 0x67AB,
+    /* 0xB7E4 ?? */ 0x8702,
+    /* 0xB7E5 ?? */ 0x5CF0,
+    /* 0xB7E6 ?? */ 0x950B,
+    /* 0xB7E7 ?? */ 0x98CE,
+    /* 0xB7E8 ?? */ 0x75AF,
+    /* 0xB7E9 ?? */ 0x70FD,
+    /* 0xB7EA ?? */ 0x9022,
+    /* 0xB7EB ?? */ 0x51AF,
+    /* 0xB7EC ?? */ 0x7F1D,
+    /* 0xB7ED ?? */ 0x8BBD,
+    /* 0xB7EE ?? */ 0x5949,
+    /* 0xB7EF ?? */ 0x51E4,
+    /* 0xB7F0 ?? */ 0x4F5B,
+    /* 0xB7F1 ?? */ 0x5426,
+    /* 0xB7F2 ?? */ 0x592B,
+    /* 0xB7F3 ?? */ 0x6577,
+    /* 0xB7F4 ?? */ 0x80A4,
+    /* 0xB7F5 ?? */ 0x5B75,
+    /* 0xB7F6 ?? */ 0x6276,
+    /* 0xB7F7 ?? */ 0x62C2,
+    /* 0xB7F8 ?? */ 0x8F90,
+    /* 0xB7F9 ?? */ 0x5E45,
+    /* 0xB7FA ?? */ 0x6C1F,
+    /* 0xB7FB ?? */ 0x7B26,
+    /* 0xB7FC ?? */ 0x4F0F,
+    /* 0xB7FD ?? */ 0x4FD8,
+    /* 0xB7FE ?? */ 0x670D,
+    /* 0xB8A1 ?? */ 0x6D6E,
+    /* 0xB8A2 ?? */ 0x6DAA,
+    /* 0xB8A3 ?? */ 0x798F,
+    /* 0xB8A4 ?? */ 0x88B1,
+    /* 0xB8A5 ?? */ 0x5F17,
+    /* 0xB8A6 ?? */ 0x752B,
+    /* 0xB8A7 ?? */ 0x629A,
+    /* 0xB8A8 ?? */ 0x8F85,
+    /* 0xB8A9 ?? */ 0x4FEF,
+    /* 0xB8AA ?? */ 0x91DC,
+    /* 0xB8AB ?? */ 0x65A7,
+    /* 0xB8AC ?? */ 0x812F,
+    /* 0xB8AD ?? */ 0x8151,
+    /* 0xB8AE ?? */ 0x5E9C,
+    /* 0xB8AF ?? */ 0x8150,
+    /* 0xB8B0 ?? */ 0x8D74,
+    /* 0xB8B1 ?? */ 0x526F,
+    /* 0xB8B2 ?? */ 0x8986,
+    /* 0xB8B3 ?? */ 0x8D4B,
+    /* 0xB8B4 ?? */ 0x590D,
+    /* 0xB8B5 ?? */ 0x5085,
+    /* 0xB8B6 ?? */ 0x4ED8,
+    /* 0xB8B7 ?? */ 0x961C,
+    /* 0xB8B8 ?? */ 0x7236,
+    /* 0xB8B9 ?? */ 0x8179,
+    /* 0xB8BA ?? */ 0x8D1F,
+    /* 0xB8BB ?? */ 0x5BCC,
+    /* 0xB8BC ?? */ 0x8BA3,
+    /* 0xB8BD ?? */ 0x9644,
+    /* 0xB8BE ?? */ 0x5987,
+    /* 0xB8BF ?? */ 0x7F1A,
+    /* 0xB8C0 ?? */ 0x5490,
+    /* 0xB8C1 ?? */ 0x5676,
+    /* 0xB8C2 ?? */ 0x560E,
+    /* 0xB8C3 ?? */ 0x8BE5,
+    /* 0xB8C4 ?? */ 0x6539,
+    /* 0xB8C5 ?? */ 0x6982,
+    /* 0xB8C6 ?? */ 0x9499,
+    /* 0xB8C7 ?? */ 0x76D6,
+    /* 0xB8C8 ?? */ 0x6E89,
+    /* 0xB8C9 ?? */ 0x5E72,
+    /* 0xB8CA ?? */ 0x7518,
+    /* 0xB8CB ?? */ 0x6746,
+    /* 0xB8CC ?? */ 0x67D1,
+    /* 0xB8CD ?? */ 0x7AFF,
+    /* 0xB8CE ?? */ 0x809D,
+    /* 0xB8CF ?? */ 0x8D76,
+    /* 0xB8D0 ?? */ 0x611F,
+    /* 0xB8D1 ?? */ 0x79C6,
+    /* 0xB8D2 ?? */ 0x6562,
+    /* 0xB8D3 ?? */ 0x8D63,
+    /* 0xB8D4 ?? */ 0x5188,
+    /* 0xB8D5 ?? */ 0x521A,
+    /* 0xB8D6 ?? */ 0x94A2,
+    /* 0xB8D7 ?? */ 0x7F38,
+    /* 0xB8D8 ?? */ 0x809B,
+    /* 0xB8D9 ?? */ 0x7EB2,
+    /* 0xB8DA ?? */ 0x5C97,
+    /* 0xB8DB ?? */ 0x6E2F,
+    /* 0xB8DC ?? */ 0x6760,
+    /* 0xB8DD ?? */ 0x7BD9,
+    /* 0xB8DE ?? */ 0x768B,
+    /* 0xB8DF ?? */ 0x9AD8,
+    /* 0xB8E0 ?? */ 0x818F,
+    /* 0xB8E1 ?? */ 0x7F94,
+    /* 0xB8E2 ?? */ 0x7CD5,
+    /* 0xB8E3 ?? */ 0x641E,
+    /* 0xB8E4 ?? */ 0x9550,
+    /* 0xB8E5 ?? */ 0x7A3F,
+    /* 0xB8E6 ?? */ 0x544A,
+    /* 0xB8E7 ?? */ 0x54E5,
+    /* 0xB8E8 ?? */ 0x6B4C,
+    /* 0xB8E9 ?? */ 0x6401,
+    /* 0xB8EA ?? */ 0x6208,
+    /* 0xB8EB ?? */ 0x9E3D,
+    /* 0xB8EC ?? */ 0x80F3,
+    /* 0xB8ED ?? */ 0x7599,
+    /* 0xB8EE ?? */ 0x5272,
+    /* 0xB8EF ?? */ 0x9769,
+    /* 0xB8F0 ?? */ 0x845B,
+    /* 0xB8F1 ?? */ 0x683C,
+    /* 0xB8F2 ?? */ 0x86E4,
+    /* 0xB8F3 ?? */ 0x9601,
+    /* 0xB8F4 ?? */ 0x9694,
+    /* 0xB8F5 ?? */ 0x94EC,
+    /* 0xB8F6 ?? */ 0x4E2A,
+    /* 0xB8F7 ?? */ 0x5404,
+    /* 0xB8F8 ?? */ 0x7ED9,
+    /* 0xB8F9 ?? */ 0x6839,
+    /* 0xB8FA ?? */ 0x8DDF,
+    /* 0xB8FB ?? */ 0x8015,
+    /* 0xB8FC ?? */ 0x66F4,
+    /* 0xB8FD ?? */ 0x5E9A,
+    /* 0xB8FE ?? */ 0x7FB9,
+    /* 0xB9A1 ?? */ 0x57C2,
+    /* 0xB9A2 ?? */ 0x803F,
+    /* 0xB9A3 ?? */ 0x6897,
+    /* 0xB9A4 ?? */ 0x5DE5,
+    /* 0xB9A5 ?? */ 0x653B,
+    /* 0xB9A6 ?? */ 0x529F,
+    /* 0xB9A7 ?? */ 0x606D,
+    /* 0xB9A8 ?? */ 0x9F9A,
+    /* 0xB9A9 ?? */ 0x4F9B,
+    /* 0xB9AA ?? */ 0x8EAC,
+    /* 0xB9AB ?? */ 0x516C,
+    /* 0xB9AC ?? */ 0x5BAB,
+    /* 0xB9AD ?? */ 0x5F13,
+    /* 0xB9AE ?? */ 0x5DE9,
+    /* 0xB9AF ?? */ 0x6C5E,
+    /* 0xB9B0 ?? */ 0x62F1,
+    /* 0xB9B1 ?? */ 0x8D21,
+    /* 0xB9B2 ?? */ 0x5171,
+    /* 0xB9B3 ?? */ 0x94A9,
+    /* 0xB9B4 ?? */ 0x52FE,
+    /* 0xB9B5 ?? */ 0x6C9F,
+    /* 0xB9B6 ?? */ 0x82DF,
+    /* 0xB9B7 ?? */ 0x72D7,
+    /* 0xB9B8 ?? */ 0x57A2,
+    /* 0xB9B9 ?? */ 0x6784,
+    /* 0xB9BA ?? */ 0x8D2D,
+    /* 0xB9BB ?? */ 0x591F,
+    /* 0xB9BC ?? */ 0x8F9C,
+    /* 0xB9BD ?? */ 0x83C7,
+    /* 0xB9BE ?? */ 0x5495,
+    /* 0xB9BF ?? */ 0x7B8D,
+    /* 0xB9C0 ?? */ 0x4F30,
+    /* 0xB9C1 ?? */ 0x6CBD,
+    /* 0xB9C2 ?? */ 0x5B64,
+    /* 0xB9C3 ?? */ 0x59D1,
+    /* 0xB9C4 ?? */ 0x9F13,
+    /* 0xB9C5 ?? */ 0x53E4,
+    /* 0xB9C6 ?? */ 0x86CA,
+    /* 0xB9C7 ?? */ 0x9AA8,
+    /* 0xB9C8 ?? */ 0x8C37,
+    /* 0xB9C9 ?? */ 0x80A1,
+    /* 0xB9CA ?? */ 0x6545,
+    /* 0xB9CB ?? */ 0x987E,
+    /* 0xB9CC ?? */ 0x56FA,
+    /* 0xB9CD ?? */ 0x96C7,
+    /* 0xB9CE ?? */ 0x522E,
+    /* 0xB9CF ?? */ 0x74DC,
+    /* 0xB9D0 ?? */ 0x5250,
+    /* 0xB9D1 ?? */ 0x5BE1,
+    /* 0xB9D2 ?? */ 0x6302,
+    /* 0xB9D3 ?? */ 0x8902,
+    /* 0xB9D4 ?? */ 0x4E56,
+    /* 0xB9D5 ?? */ 0x62D0,
+    /* 0xB9D6 ?? */ 0x602A,
+    /* 0xB9D7 ?? */ 0x68FA,
+    /* 0xB9D8 ?? */ 0x5173,
+    /* 0xB9D9 ?? */ 0x5B98,
+    /* 0xB9DA ?? */ 0x51A0,
+    /* 0xB9DB ?? */ 0x89C2,
+    /* 0xB9DC ?? */ 0x7BA1,
+    /* 0xB9DD ?? */ 0x9986,
+    /* 0xB9DE ?? */ 0x7F50,
+    /* 0xB9DF ?? */ 0x60EF,
+    /* 0xB9E0 ?? */ 0x704C,
+    /* 0xB9E1 ?? */ 0x8D2F,
+    /* 0xB9E2 ?? */ 0x5149,
+    /* 0xB9E3 ?? */ 0x5E7F,
+    /* 0xB9E4 ?? */ 0x901B,
+    /* 0xB9E5 ?? */ 0x7470,
+    /* 0xB9E6 ?? */ 0x89C4,
+    /* 0xB9E7 ?? */ 0x572D,
+    /* 0xB9E8 ?? */ 0x7845,
+    /* 0xB9E9 ?? */ 0x5F52,
+    /* 0xB9EA ?? */ 0x9F9F,
+    /* 0xB9EB ?? */ 0x95FA,
+    /* 0xB9EC ?? */ 0x8F68,
+    /* 0xB9ED ?? */ 0x9B3C,
+    /* 0xB9EE ?? */ 0x8BE1,
+    /* 0xB9EF ?? */ 0x7678,
+    /* 0xB9F0 ?? */ 0x6842,
+    /* 0xB9F1 ?? */ 0x67DC,
+    /* 0xB9F2 ?? */ 0x8DEA,
+    /* 0xB9F3 ?? */ 0x8D35,
+    /* 0xB9F4 ?? */ 0x523D,
+    /* 0xB9F5 ?? */ 0x8F8A,
+    /* 0xB9F6 ?? */ 0x6EDA,
+    /* 0xB9F7 ?? */ 0x68CD,
+    /* 0xB9F8 ?? */ 0x9505,
+    /* 0xB9F9 ?? */ 0x90ED,
+    /* 0xB9FA ?? */ 0x56FD,
+    /* 0xB9FB ?? */ 0x679C,
+    /* 0xB9FC ?? */ 0x88F9,
+    /* 0xB9FD ?? */ 0x8FC7,
+    /* 0xB9FE ?? */ 0x54C8,
+    /* 0xBAA1 ?? */ 0x9AB8,
+    /* 0xBAA2 ?? */ 0x5B69,
+    /* 0xBAA3 ?? */ 0x6D77,
+    /* 0xBAA4 ?? */ 0x6C26,
+    /* 0xBAA5 ?? */ 0x4EA5,
+    /* 0xBAA6 ?? */ 0x5BB3,
+    /* 0xBAA7 ?? */ 0x9A87,
+    /* 0xBAA8 ?? */ 0x9163,
+    /* 0xBAA9 ?? */ 0x61A8,
+    /* 0xBAAA ?? */ 0x90AF,
+    /* 0xBAAB ?? */ 0x97E9,
+    /* 0xBAAC ?? */ 0x542B,
+    /* 0xBAAD ?? */ 0x6DB5,
+    /* 0xBAAE ?? */ 0x5BD2,
+    /* 0xBAAF ?? */ 0x51FD,
+    /* 0xBAB0 ?? */ 0x558A,
+    /* 0xBAB1 ?? */ 0x7F55,
+    /* 0xBAB2 ?? */ 0x7FF0,
+    /* 0xBAB3 ?? */ 0x64BC,
+    /* 0xBAB4 ?? */ 0x634D,
+    /* 0xBAB5 ?? */ 0x65F1,
+    /* 0xBAB6 ?? */ 0x61BE,
+    /* 0xBAB7 ?? */ 0x608D,
+    /* 0xBAB8 ?? */ 0x710A,
+    /* 0xBAB9 ?? */ 0x6C57,
+    /* 0xBABA ?? */ 0x6C49,
+    /* 0xBABB ?? */ 0x592F,
+    /* 0xBABC ?? */ 0x676D,
+    /* 0xBABD ?? */ 0x822A,
+    /* 0xBABE ?? */ 0x58D5,
+    /* 0xBABF ?? */ 0x568E,
+    /* 0xBAC0 ?? */ 0x8C6A,
+    /* 0xBAC1 ?? */ 0x6BEB,
+    /* 0xBAC2 ?? */ 0x90DD,
+    /* 0xBAC3 ?? */ 0x597D,
+    /* 0xBAC4 ?? */ 0x8017,
+    /* 0xBAC5 ?? */ 0x53F7,
+    /* 0xBAC6 ?? */ 0x6D69,
+    /* 0xBAC7 ?? */ 0x5475,
+    /* 0xBAC8 ?? */ 0x559D,
+    /* 0xBAC9 ?? */ 0x8377,
+    /* 0xBACA ?? */ 0x83CF,
+    /* 0xBACB ?? */ 0x6838,
+    /* 0xBACC ?? */ 0x79BE,
+    /* 0xBACD ?? */ 0x548C,
+    /* 0xBACE ?? */ 0x4F55,
+    /* 0xBACF ?? */ 0x5408,
+    /* 0xBAD0 ?? */ 0x76D2,
+    /* 0xBAD1 ?? */ 0x8C89,
+    /* 0xBAD2 ?? */ 0x9602,
+    /* 0xBAD3 ?? */ 0x6CB3,
+    /* 0xBAD4 ?? */ 0x6DB8,
+    /* 0xBAD5 ?? */ 0x8D6B,
+    /* 0xBAD6 ?? */ 0x8910,
+    /* 0xBAD7 ?? */ 0x9E64,
+    /* 0xBAD8 ?? */ 0x8D3A,
+    /* 0xBAD9 ?? */ 0x563F,
+    /* 0xBADA ?? */ 0x9ED1,
+    /* 0xBADB ?? */ 0x75D5,
+    /* 0xBADC ?? */ 0x5F88,
+    /* 0xBADD ?? */ 0x72E0,
+    /* 0xBADE ?? */ 0x6068,
+    /* 0xBADF ?? */ 0x54FC,
+    /* 0xBAE0 ?? */ 0x4EA8,
+    /* 0xBAE1 ?? */ 0x6A2A,
+    /* 0xBAE2 ?? */ 0x8861,
+    /* 0xBAE3 ?? */ 0x6052,
+    /* 0xBAE4 ?? */ 0x8F70,
+    /* 0xBAE5 ?? */ 0x54C4,
+    /* 0xBAE6 ?? */ 0x70D8,
+    /* 0xBAE7 ?? */ 0x8679,
+    /* 0xBAE8 ?? */ 0x9E3F,
+    /* 0xBAE9 ?? */ 0x6D2A,
+    /* 0xBAEA ?? */ 0x5B8F,
+    /* 0xBAEB ?? */ 0x5F18,
+    /* 0xBAEC ?? */ 0x7EA2,
+    /* 0xBAED ?? */ 0x5589,
+    /* 0xBAEE ?? */ 0x4FAF,
+    /* 0xBAEF ?? */ 0x7334,
+    /* 0xBAF0 ?? */ 0x543C,
+    /* 0xBAF1 ?? */ 0x539A,
+    /* 0xBAF2 ?? */ 0x5019,
+    /* 0xBAF3 ?? */ 0x540E,
+    /* 0xBAF4 ?? */ 0x547C,
+    /* 0xBAF5 ?? */ 0x4E4E,
+    /* 0xBAF6 ?? */ 0x5FFD,
+    /* 0xBAF7 ?? */ 0x745A,
+    /* 0xBAF8 ?? */ 0x58F6,
+    /* 0xBAF9 ?? */ 0x846B,
+    /* 0xBAFA ?? */ 0x80E1,
+    /* 0xBAFB ?? */ 0x8774,
+    /* 0xBAFC ?? */ 0x72D0,
+    /* 0xBAFD ?? */ 0x7CCA,
+    /* 0xBAFE ?? */ 0x6E56,
+    /* 0xBBA1 ?? */ 0x5F27,
+    /* 0xBBA2 ?? */ 0x864E,
+    /* 0xBBA3 ?? */ 0x552C,
+    /* 0xBBA4 ?? */ 0x62A4,
+    /* 0xBBA5 ?? */ 0x4E92,
+    /* 0xBBA6 ?? */ 0x6CAA,
+    /* 0xBBA7 ?? */ 0x6237,
+    /* 0xBBA8 ?? */ 0x82B1,
+    /* 0xBBA9 ?? */ 0x54D7,
+    /* 0xBBAA ?? */ 0x534E,
+    /* 0xBBAB ?? */ 0x733E,
+    /* 0xBBAC ?? */ 0x6ED1,
+    /* 0xBBAD ?? */ 0x753B,
+    /* 0xBBAE ?? */ 0x5212,
+    /* 0xBBAF ?? */ 0x5316,
+    /* 0xBBB0 ?? */ 0x8BDD,
+    /* 0xBBB1 ?? */ 0x69D0,
+    /* 0xBBB2 ?? */ 0x5F8A,
+    /* 0xBBB3 ?? */ 0x6000,
+    /* 0xBBB4 ?? */ 0x6DEE,
+    /* 0xBBB5 ?? */ 0x574F,
+    /* 0xBBB6 ?? */ 0x6B22,
+    /* 0xBBB7 ?? */ 0x73AF,
+    /* 0xBBB8 ?? */ 0x6853,
+    /* 0xBBB9 ?? */ 0x8FD8,
+    /* 0xBBBA ?? */ 0x7F13,
+    /* 0xBBBB ?? */ 0x6362,
+    /* 0xBBBC ?? */ 0x60A3,
+    /* 0xBBBD ?? */ 0x5524,
+    /* 0xBBBE ?? */ 0x75EA,
+    /* 0xBBBF ?? */ 0x8C62,
+    /* 0xBBC0 ?? */ 0x7115,
+    /* 0xBBC1 ?? */ 0x6DA3,
+    /* 0xBBC2 ?? */ 0x5BA6,
+    /* 0xBBC3 ?? */ 0x5E7B,
+    /* 0xBBC4 ?? */ 0x8352,
+    /* 0xBBC5 ?? */ 0x614C,
+    /* 0xBBC6 ?? */ 0x9EC4,
+    /* 0xBBC7 ?? */ 0x78FA,
+    /* 0xBBC8 ?? */ 0x8757,
+    /* 0xBBC9 ?? */ 0x7C27,
+    /* 0xBBCA ?? */ 0x7687,
+    /* 0xBBCB ?? */ 0x51F0,
+    /* 0xBBCC ?? */ 0x60F6,
+    /* 0xBBCD ?? */ 0x714C,
+    /* 0xBBCE ?? */ 0x6643,
+    /* 0xBBCF ?? */ 0x5E4C,
+    /* 0xBBD0 ?? */ 0x604D,
+    /* 0xBBD1 ?? */ 0x8C0E,
+    /* 0xBBD2 ?? */ 0x7070,
+    /* 0xBBD3 ?? */ 0x6325,
+    /* 0xBBD4 ?? */ 0x8F89,
+    /* 0xBBD5 ?? */ 0x5FBD,
+    /* 0xBBD6 ?? */ 0x6062,
+    /* 0xBBD7 ?? */ 0x86D4,
+    /* 0xBBD8 ?? */ 0x56DE,
+    /* 0xBBD9 ?? */ 0x6BC1,
+    /* 0xBBDA ?? */ 0x6094,
+    /* 0xBBDB ?? */ 0x6167,
+    /* 0xBBDC ?? */ 0x5349,
+    /* 0xBBDD ?? */ 0x60E0,
+    /* 0xBBDE ?? */ 0x6666,
+    /* 0xBBDF ?? */ 0x8D3F,
+    /* 0xBBE0 ?? */ 0x79FD,
+    /* 0xBBE1 ?? */ 0x4F1A,
+    /* 0xBBE2 ?? */ 0x70E9,
+    /* 0xBBE3 ?? */ 0x6C47,
+    /* 0xBBE4 ?? */ 0x8BB3,
+    /* 0xBBE5 ?? */ 0x8BF2,
+    /* 0xBBE6 ?? */ 0x7ED8,
+    /* 0xBBE7 ?? */ 0x8364,
+    /* 0xBBE8 ?? */ 0x660F,
+    /* 0xBBE9 ?? */ 0x5A5A,
+    /* 0xBBEA ?? */ 0x9B42,
+    /* 0xBBEB ?? */ 0x6D51,
+    /* 0xBBEC ?? */ 0x6DF7,
+    /* 0xBBED ?? */ 0x8C41,
+    /* 0xBBEE ?? */ 0x6D3B,
+    /* 0xBBEF ?? */ 0x4F19,
+    /* 0xBBF0 ?? */ 0x706B,
+    /* 0xBBF1 ?? */ 0x83B7,
+    /* 0xBBF2 ?? */ 0x6216,
+    /* 0xBBF3 ?? */ 0x60D1,
+    /* 0xBBF4 ?? */ 0x970D,
+    /* 0xBBF5 ?? */ 0x8D27,
+    /* 0xBBF6 ?? */ 0x7978,
+    /* 0xBBF7 ?? */ 0x51FB,
+    /* 0xBBF8 ?? */ 0x573E,
+    /* 0xBBF9 ?? */ 0x57FA,
+    /* 0xBBFA ?? */ 0x673A,
+    /* 0xBBFB ?? */ 0x7578,
+    /* 0xBBFC ?? */ 0x7A3D,
+    /* 0xBBFD ?? */ 0x79EF,
+    /* 0xBBFE ?? */ 0x7B95,
+    /* 0xBCA1 ?? */ 0x808C,
+    /* 0xBCA2 ?? */ 0x9965,
+    /* 0xBCA3 ?? */ 0x8FF9,
+    /* 0xBCA4 ?? */ 0x6FC0,
+    /* 0xBCA5 ?? */ 0x8BA5,
+    /* 0xBCA6 ?? */ 0x9E21,
+    /* 0xBCA7 ?? */ 0x59EC,
+    /* 0xBCA8 ?? */ 0x7EE9,
+    /* 0xBCA9 ?? */ 0x7F09,
+    /* 0xBCAA ?? */ 0x5409,
+    /* 0xBCAB ?? */ 0x6781,
+    /* 0xBCAC ?? */ 0x68D8,
+    /* 0xBCAD ?? */ 0x8F91,
+    /* 0xBCAE ?? */ 0x7C4D,
+    /* 0xBCAF ?? */ 0x96C6,
+    /* 0xBCB0 ?? */ 0x53CA,
+    /* 0xBCB1 ?? */ 0x6025,
+    /* 0xBCB2 ?? */ 0x75BE,
+    /* 0xBCB3 ?? */ 0x6C72,
+    /* 0xBCB4 ?? */ 0x5373,
+    /* 0xBCB5 ?? */ 0x5AC9,
+    /* 0xBCB6 ?? */ 0x7EA7,
+    /* 0xBCB7 ?? */ 0x6324,
+    /* 0xBCB8 ?? */ 0x51E0,
+    /* 0xBCB9 ?? */ 0x810A,
+    /* 0xBCBA ?? */ 0x5DF1,
+    /* 0xBCBB ?? */ 0x84DF,
+    /* 0xBCBC ?? */ 0x6280,
+    /* 0xBCBD ?? */ 0x5180,
+    /* 0xBCBE ?? */ 0x5B63,
+    /* 0xBCBF ?? */ 0x4F0E,
+    /* 0xBCC0 ?? */ 0x796D,
+    /* 0xBCC1 ?? */ 0x5242,
+    /* 0xBCC2 ?? */ 0x60B8,
+    /* 0xBCC3 ?? */ 0x6D4E,
+    /* 0xBCC4 ?? */ 0x5BC4,
+    /* 0xBCC5 ?? */ 0x5BC2,
+    /* 0xBCC6 ?? */ 0x8BA1,
+    /* 0xBCC7 ?? */ 0x8BB0,
+    /* 0xBCC8 ?? */ 0x65E2,
+    /* 0xBCC9 ?? */ 0x5FCC,
+    /* 0xBCCA ?? */ 0x9645,
+    /* 0xBCCB ?? */ 0x5993,
+    /* 0xBCCC ?? */ 0x7EE7,
+    /* 0xBCCD ?? */ 0x7EAA,
+    /* 0xBCCE ?? */ 0x5609,
+    /* 0xBCCF ?? */ 0x67B7,
+    /* 0xBCD0 ?? */ 0x5939,
+    /* 0xBCD1 ?? */ 0x4F73,
+    /* 0xBCD2 ?? */ 0x5BB6,
+    /* 0xBCD3 ?? */ 0x52A0,
+    /* 0xBCD4 ?? */ 0x835A,
+    /* 0xBCD5 ?? */ 0x988A,
+    /* 0xBCD6 ?? */ 0x8D3E,
+    /* 0xBCD7 ?? */ 0x7532,
+    /* 0xBCD8 ?? */ 0x94BE,
+    /* 0xBCD9 ?? */ 0x5047,
+    /* 0xBCDA ?? */ 0x7A3C,
+    /* 0xBCDB ?? */ 0x4EF7,
+    /* 0xBCDC ?? */ 0x67B6,
+    /* 0xBCDD ?? */ 0x9A7E,
+    /* 0xBCDE ?? */ 0x5AC1,
+    /* 0xBCDF ?? */ 0x6B7C,
+    /* 0xBCE0 ?? */ 0x76D1,
+    /* 0xBCE1 ?? */ 0x575A,
+    /* 0xBCE2 ?? */ 0x5C16,
+    /* 0xBCE3 ?? */ 0x7B3A,
+    /* 0xBCE4 ?? */ 0x95F4,
+    /* 0xBCE5 ?? */ 0x714E,
+    /* 0xBCE6 ?? */ 0x517C,
+    /* 0xBCE7 ?? */ 0x80A9,
+    /* 0xBCE8 ?? */ 0x8270,
+    /* 0xBCE9 ?? */ 0x5978,
+    /* 0xBCEA ?? */ 0x7F04,
+    /* 0xBCEB ?? */ 0x8327,
+    /* 0xBCEC ?? */ 0x68C0,
+    /* 0xBCED ?? */ 0x67EC,
+    /* 0xBCEE ?? */ 0x78B1,
+    /* 0xBCEF ?? */ 0x7877,
+    /* 0xBCF0 ?? */ 0x62E3,
+    /* 0xBCF1 ?? */ 0x6361,
+    /* 0xBCF2 ?? */ 0x7B80,
+    /* 0xBCF3 ?? */ 0x4FED,
+    /* 0xBCF4 ?? */ 0x526A,
+    /* 0xBCF5 ?? */ 0x51CF,
+    /* 0xBCF6 ?? */ 0x8350,
+    /* 0xBCF7 ?? */ 0x69DB,
+    /* 0xBCF8 ?? */ 0x9274,
+    /* 0xBCF9 ?? */ 0x8DF5,
+    /* 0xBCFA ?? */ 0x8D31,
+    /* 0xBCFB ?? */ 0x89C1,
+    /* 0xBCFC ?? */ 0x952E,
+    /* 0xBCFD ?? */ 0x7BAD,
+    /* 0xBCFE ?? */ 0x4EF6,
+    /* 0xBDA1 ?? */ 0x5065,
+    /* 0xBDA2 ?? */ 0x8230,
+    /* 0xBDA3 ?? */ 0x5251,
+    /* 0xBDA4 ?? */ 0x996F,
+    /* 0xBDA5 ?? */ 0x6E10,
+    /* 0xBDA6 ?? */ 0x6E85,
+    /* 0xBDA7 ?? */ 0x6DA7,
+    /* 0xBDA8 ?? */ 0x5EFA,
+    /* 0xBDA9 ?? */ 0x50F5,
+    /* 0xBDAA ?? */ 0x59DC,
+    /* 0xBDAB ?? */ 0x5C06,
+    /* 0xBDAC ?? */ 0x6D46,
+    /* 0xBDAD ?? */ 0x6C5F,
+    /* 0xBDAE ?? */ 0x7586,
+    /* 0xBDAF ?? */ 0x848B,
+    /* 0xBDB0 ?? */ 0x6868,
+    /* 0xBDB1 ?? */ 0x5956,
+    /* 0xBDB2 ?? */ 0x8BB2,
+    /* 0xBDB3 ?? */ 0x5320,
+    /* 0xBDB4 ?? */ 0x9171,
+    /* 0xBDB5 ?? */ 0x964D,
+    /* 0xBDB6 ?? */ 0x8549,
+    /* 0xBDB7 ?? */ 0x6912,
+    /* 0xBDB8 ?? */ 0x7901,
+    /* 0xBDB9 ?? */ 0x7126,
+    /* 0xBDBA ?? */ 0x80F6,
+    /* 0xBDBB ?? */ 0x4EA4,
+    /* 0xBDBC ?? */ 0x90CA,
+    /* 0xBDBD ?? */ 0x6D47,
+    /* 0xBDBE ?? */ 0x9A84,
+    /* 0xBDBF ?? */ 0x5A07,
+    /* 0xBDC0 ?? */ 0x56BC,
+    /* 0xBDC1 ?? */ 0x6405,
+    /* 0xBDC2 ?? */ 0x94F0,
+    /* 0xBDC3 ?? */ 0x77EB,
+    /* 0xBDC4 ?? */ 0x4FA5,
+    /* 0xBDC5 ?? */ 0x811A,
+    /* 0xBDC6 ?? */ 0x72E1,
+    /* 0xBDC7 ?? */ 0x89D2,
+    /* 0xBDC8 ?? */ 0x997A,
+    /* 0xBDC9 ?? */ 0x7F34,
+    /* 0xBDCA ?? */ 0x7EDE,
+    /* 0xBDCB ?? */ 0x527F,
+    /* 0xBDCC ?? */ 0x6559,
+    /* 0xBDCD ?? */ 0x9175,
+    /* 0xBDCE ?? */ 0x8F7F,
+    /* 0xBDCF ?? */ 0x8F83,
+    /* 0xBDD0 ?? */ 0x53EB,
+    /* 0xBDD1 ?? */ 0x7A96,
+    /* 0xBDD2 ?? */ 0x63ED,
+    /* 0xBDD3 ?? */ 0x63A5,
+    /* 0xBDD4 ?? */ 0x7686,
+    /* 0xBDD5 ?? */ 0x79F8,
+    /* 0xBDD6 ?? */ 0x8857,
+    /* 0xBDD7 ?? */ 0x9636,
+    /* 0xBDD8 ?? */ 0x622A,
+    /* 0xBDD9 ?? */ 0x52AB,
+    /* 0xBDDA ?? */ 0x8282,
+    /* 0xBDDB ?? */ 0x6854,
+    /* 0xBDDC ?? */ 0x6770,
+    /* 0xBDDD ?? */ 0x6377,
+    /* 0xBDDE ?? */ 0x776B,
+    /* 0xBDDF ?? */ 0x7AED,
+    /* 0xBDE0 ?? */ 0x6D01,
+    /* 0xBDE1 ?? */ 0x7ED3,
+    /* 0xBDE2 ?? */ 0x89E3,
+    /* 0xBDE3 ?? */ 0x59D0,
+    /* 0xBDE4 ?? */ 0x6212,
+    /* 0xBDE5 ?? */ 0x85C9,
+    /* 0xBDE6 ?? */ 0x82A5,
+    /* 0xBDE7 ?? */ 0x754C,
+    /* 0xBDE8 ?? */ 0x501F,
+    /* 0xBDE9 ?? */ 0x4ECB,
+    /* 0xBDEA ?? */ 0x75A5,
+    /* 0xBDEB ?? */ 0x8BEB,
+    /* 0xBDEC ?? */ 0x5C4A,
+    /* 0xBDED ?? */ 0x5DFE,
+    /* 0xBDEE ?? */ 0x7B4B,
+    /* 0xBDEF ?? */ 0x65A4,
+    /* 0xBDF0 ?? */ 0x91D1,
+    /* 0xBDF1 ?? */ 0x4ECA,
+    /* 0xBDF2 ?? */ 0x6D25,
+    /* 0xBDF3 ?? */ 0x895F,
+    /* 0xBDF4 ?? */ 0x7D27,
+    /* 0xBDF5 ?? */ 0x9526,
+    /* 0xBDF6 ?? */ 0x4EC5,
+    /* 0xBDF7 ?? */ 0x8C28,
+    /* 0xBDF8 ?? */ 0x8FDB,
+    /* 0xBDF9 ?? */ 0x9773,
+    /* 0xBDFA ?? */ 0x664B,
+    /* 0xBDFB ?? */ 0x7981,
+    /* 0xBDFC ?? */ 0x8FD1,
+    /* 0xBDFD ?? */ 0x70EC,
+    /* 0xBDFE ?? */ 0x6D78,
+    /* 0xBEA1 ?? */ 0x5C3D,
+    /* 0xBEA2 ?? */ 0x52B2,
+    /* 0xBEA3 ?? */ 0x8346,
+    /* 0xBEA4 ?? */ 0x5162,
+    /* 0xBEA5 ?? */ 0x830E,
+    /* 0xBEA6 ?? */ 0x775B,
+    /* 0xBEA7 ?? */ 0x6676,
+    /* 0xBEA8 ?? */ 0x9CB8,
+    /* 0xBEA9 ?? */ 0x4EAC,
+    /* 0xBEAA ?? */ 0x60CA,
+    /* 0xBEAB ?? */ 0x7CBE,
+    /* 0xBEAC ?? */ 0x7CB3,
+    /* 0xBEAD ?? */ 0x7ECF,
+    /* 0xBEAE ?? */ 0x4E95,
+    /* 0xBEAF ?? */ 0x8B66,
+    /* 0xBEB0 ?? */ 0x666F,
+    /* 0xBEB1 ?? */ 0x9888,
+    /* 0xBEB2 ?? */ 0x9759,
+    /* 0xBEB3 ?? */ 0x5883,
+    /* 0xBEB4 ?? */ 0x656C,
+    /* 0xBEB5 ?? */ 0x955C,
+    /* 0xBEB6 ?? */ 0x5F84,
+    /* 0xBEB7 ?? */ 0x75C9,
+    /* 0xBEB8 ?? */ 0x9756,
+    /* 0xBEB9 ?? */ 0x7ADF,
+    /* 0xBEBA ?? */ 0x7ADE,
+    /* 0xBEBB ?? */ 0x51C0,
+    /* 0xBEBC ?? */ 0x70AF,
+    /* 0xBEBD ?? */ 0x7A98,
+    /* 0xBEBE ?? */ 0x63EA,
+    /* 0xBEBF ?? */ 0x7A76,
+    /* 0xBEC0 ?? */ 0x7EA0,
+    /* 0xBEC1 ?? */ 0x7396,
+    /* 0xBEC2 ?? */ 0x97ED,
+    /* 0xBEC3 ?? */ 0x4E45,
+    /* 0xBEC4 ?? */ 0x7078,
+    /* 0xBEC5 ?? */ 0x4E5D,
+    /* 0xBEC6 ?? */ 0x9152,
+    /* 0xBEC7 ?? */ 0x53A9,
+    /* 0xBEC8 ?? */ 0x6551,
+    /* 0xBEC9 ?? */ 0x65E7,
+    /* 0xBECA ?? */ 0x81FC,
+    /* 0xBECB ?? */ 0x8205,
+    /* 0xBECC ?? */ 0x548E,
+    /* 0xBECD ?? */ 0x5C31,
+    /* 0xBECE ?? */ 0x759A,
+    /* 0xBECF ?? */ 0x97A0,
+    /* 0xBED0 ?? */ 0x62D8,
+    /* 0xBED1 ?? */ 0x72D9,
+    /* 0xBED2 ?? */ 0x75BD,
+    /* 0xBED3 ?? */ 0x5C45,
+    /* 0xBED4 ?? */ 0x9A79,
+    /* 0xBED5 ?? */ 0x83CA,
+    /* 0xBED6 ?? */ 0x5C40,
+    /* 0xBED7 ?? */ 0x5480,
+    /* 0xBED8 ?? */ 0x77E9,
+    /* 0xBED9 ?? */ 0x4E3E,
+    /* 0xBEDA ?? */ 0x6CAE,
+    /* 0xBEDB ?? */ 0x805A,
+    /* 0xBEDC ?? */ 0x62D2,
+    /* 0xBEDD ?? */ 0x636E,
+    /* 0xBEDE ?? */ 0x5DE8,
+    /* 0xBEDF ?? */ 0x5177,
+    /* 0xBEE0 ?? */ 0x8DDD,
+    /* 0xBEE1 ?? */ 0x8E1E,
+    /* 0xBEE2 ?? */ 0x952F,
+    /* 0xBEE3 ?? */ 0x4FF1,
+    /* 0xBEE4 ?? */ 0x53E5,
+    /* 0xBEE5 ?? */ 0x60E7,
+    /* 0xBEE6 ?? */ 0x70AC,
+    /* 0xBEE7 ?? */ 0x5267,
+    /* 0xBEE8 ?? */ 0x6350,
+    /* 0xBEE9 ?? */ 0x9E43,
+    /* 0xBEEA ?? */ 0x5A1F,
+    /* 0xBEEB ?? */ 0x5026,
+    /* 0xBEEC ?? */ 0x7737,
+    /* 0xBEED ?? */ 0x5377,
+    /* 0xBEEE ?? */ 0x7EE2,
+    /* 0xBEEF ?? */ 0x6485,
+    /* 0xBEF0 ?? */ 0x652B,
+    /* 0xBEF1 ?? */ 0x6289,
+    /* 0xBEF2 ?? */ 0x6398,
+    /* 0xBEF3 ?? */ 0x5014,
+    /* 0xBEF4 ?? */ 0x7235,
+    /* 0xBEF5 ?? */ 0x89C9,
+    /* 0xBEF6 ?? */ 0x51B3,
+    /* 0xBEF7 ?? */ 0x8BC0,
+    /* 0xBEF8 ?? */ 0x7EDD,
+    /* 0xBEF9 ?? */ 0x5747,
+    /* 0xBEFA ?? */ 0x83CC,
+    /* 0xBEFB ?? */ 0x94A7,
+    /* 0xBEFC ?? */ 0x519B,
+    /* 0xBEFD ?? */ 0x541B,
+    /* 0xBEFE ?? */ 0x5CFB,
+    /* 0xBFA1 ?? */ 0x4FCA,
+    /* 0xBFA2 ?? */ 0x7AE3,
+    /* 0xBFA3 ?? */ 0x6D5A,
+    /* 0xBFA4 ?? */ 0x90E1,
+    /* 0xBFA5 ?? */ 0x9A8F,
+    /* 0xBFA6 ?? */ 0x5580,
+    /* 0xBFA7 ?? */ 0x5496,
+    /* 0xBFA8 ?? */ 0x5361,
+    /* 0xBFA9 ?? */ 0x54AF,
+    /* 0xBFAA ?? */ 0x5F00,
+    /* 0xBFAB ?? */ 0x63E9,
+    /* 0xBFAC ?? */ 0x6977,
+    /* 0xBFAD ?? */ 0x51EF,
+    /* 0xBFAE ?? */ 0x6168,
+    /* 0xBFAF ?? */ 0x520A,
+    /* 0xBFB0 ?? */ 0x582A,
+    /* 0xBFB1 ?? */ 0x52D8,
+    /* 0xBFB2 ?? */ 0x574E,
+    /* 0xBFB3 ?? */ 0x780D,
+    /* 0xBFB4 ?? */ 0x770B,
+    /* 0xBFB5 ?? */ 0x5EB7,
+    /* 0xBFB6 ?? */ 0x6177,
+    /* 0xBFB7 ?? */ 0x7CE0,
+    /* 0xBFB8 ?? */ 0x625B,
+    /* 0xBFB9 ?? */ 0x6297,
+    /* 0xBFBA ?? */ 0x4EA2,
+    /* 0xBFBB ?? */ 0x7095,
+    /* 0xBFBC ?? */ 0x8003,
+    /* 0xBFBD ?? */ 0x62F7,
+    /* 0xBFBE ?? */ 0x70E4,
+    /* 0xBFBF ?? */ 0x9760,
+    /* 0xBFC0 ?? */ 0x5777,
+    /* 0xBFC1 ?? */ 0x82DB,
+    /* 0xBFC2 ?? */ 0x67EF,
+    /* 0xBFC3 ?? */ 0x68F5,
+    /* 0xBFC4 ?? */ 0x78D5,
+    /* 0xBFC5 ?? */ 0x9897,
+    /* 0xBFC6 ?? */ 0x79D1,
+    /* 0xBFC7 ?? */ 0x58F3,
+    /* 0xBFC8 ?? */ 0x54B3,
+    /* 0xBFC9 ?? */ 0x53EF,
+    /* 0xBFCA ?? */ 0x6E34,
+    /* 0xBFCB ?? */ 0x514B,
+    /* 0xBFCC ?? */ 0x523B,
+    /* 0xBFCD ?? */ 0x5BA2,
+    /* 0xBFCE ?? */ 0x8BFE,
+    /* 0xBFCF ?? */ 0x80AF,
+    /* 0xBFD0 ?? */ 0x5543,
+    /* 0xBFD1 ?? */ 0x57A6,
+    /* 0xBFD2 ?? */ 0x6073,
+    /* 0xBFD3 ?? */ 0x5751,
+    /* 0xBFD4 ?? */ 0x542D,
+    /* 0xBFD5 ?? */ 0x7A7A,
+    /* 0xBFD6 ?? */ 0x6050,
+    /* 0xBFD7 ?? */ 0x5B54,
+    /* 0xBFD8 ?? */ 0x63A7,
+    /* 0xBFD9 ?? */ 0x62A0,
+    /* 0xBFDA ?? */ 0x53E3,
+    /* 0xBFDB ?? */ 0x6263,
+    /* 0xBFDC ?? */ 0x5BC7,
+    /* 0xBFDD ?? */ 0x67AF,
+    /* 0xBFDE ?? */ 0x54ED,
+    /* 0xBFDF ?? */ 0x7A9F,
+    /* 0xBFE0 ?? */ 0x82E6,
+    /* 0xBFE1 ?? */ 0x9177,
+    /* 0xBFE2 ?? */ 0x5E93,
+    /* 0xBFE3 ?? */ 0x88E4,
+    /* 0xBFE4 ?? */ 0x5938,
+    /* 0xBFE5 ?? */ 0x57AE,
+    /* 0xBFE6 ?? */ 0x630E,
+    /* 0xBFE7 ?? */ 0x8DE8,
+    /* 0xBFE8 ?? */ 0x80EF,
+    /* 0xBFE9 ?? */ 0x5757,
+    /* 0xBFEA ?? */ 0x7B77,
+    /* 0xBFEB ?? */ 0x4FA9,
+    /* 0xBFEC ?? */ 0x5FEB,
+    /* 0xBFED ?? */ 0x5BBD,
+    /* 0xBFEE ?? */ 0x6B3E,
+    /* 0xBFEF ?? */ 0x5321,
+    /* 0xBFF0 ?? */ 0x7B50,
+    /* 0xBFF1 ?? */ 0x72C2,
+    /* 0xBFF2 ?? */ 0x6846,
+    /* 0xBFF3 ?? */ 0x77FF,
+    /* 0xBFF4 ?? */ 0x7736,
+    /* 0xBFF5 ?? */ 0x65F7,
+    /* 0xBFF6 ?? */ 0x51B5,
+    /* 0xBFF7 ?? */ 0x4E8F,
+    /* 0xBFF8 ?? */ 0x76D4,
+    /* 0xBFF9 ?? */ 0x5CBF,
+    /* 0xBFFA ?? */ 0x7AA5,
+    /* 0xBFFB ?? */ 0x8475,
+    /* 0xBFFC ?? */ 0x594E,
+    /* 0xBFFD ?? */ 0x9B41,
+    /* 0xBFFE ?? */ 0x5080,
+    /* 0xC0A1 ?? */ 0x9988,
+    /* 0xC0A2 ?? */ 0x6127,
+    /* 0xC0A3 ?? */ 0x6E83,
+    /* 0xC0A4 ?? */ 0x5764,
+    /* 0xC0A5 ?? */ 0x6606,
+    /* 0xC0A6 ?? */ 0x6346,
+    /* 0xC0A7 ?? */ 0x56F0,
+    /* 0xC0A8 ?? */ 0x62EC,
+    /* 0xC0A9 ?? */ 0x6269,
+    /* 0xC0AA ?? */ 0x5ED3,
+    /* 0xC0AB ?? */ 0x9614,
+    /* 0xC0AC ?? */ 0x5783,
+    /* 0xC0AD ?? */ 0x62C9,
+    /* 0xC0AE ?? */ 0x5587,
+    /* 0xC0AF ?? */ 0x8721,
+    /* 0xC0B0 ?? */ 0x814A,
+    /* 0xC0B1 ?? */ 0x8FA3,
+    /* 0xC0B2 ?? */ 0x5566,
+    /* 0xC0B3 ?? */ 0x83B1,
+    /* 0xC0B4 ?? */ 0x6765,
+    /* 0xC0B5 ?? */ 0x8D56,
+    /* 0xC0B6 ?? */ 0x84DD,
+    /* 0xC0B7 ?? */ 0x5A6A,
+    /* 0xC0B8 ?? */ 0x680F,
+    /* 0xC0B9 ?? */ 0x62E6,
+    /* 0xC0BA ?? */ 0x7BEE,
+    /* 0xC0BB ?? */ 0x9611,
+    /* 0xC0BC ?? */ 0x5170,
+    /* 0xC0BD ?? */ 0x6F9C,
+    /* 0xC0BE ?? */ 0x8C30,
+    /* 0xC0BF ?? */ 0x63FD,
+    /* 0xC0C0 ?? */ 0x89C8,
+    /* 0xC0C1 ?? */ 0x61D2,
+    /* 0xC0C2 ?? */ 0x7F06,
+    /* 0xC0C3 ?? */ 0x70C2,
+    /* 0xC0C4 ?? */ 0x6EE5,
+    /* 0xC0C5 ?? */ 0x7405,
+    /* 0xC0C6 ?? */ 0x6994,
+    /* 0xC0C7 ?? */ 0x72FC,
+    /* 0xC0C8 ?? */ 0x5ECA,
+    /* 0xC0C9 ?? */ 0x90CE,
+    /* 0xC0CA ?? */ 0x6717,
+    /* 0xC0CB ?? */ 0x6D6A,
+    /* 0xC0CC ?? */ 0x635E,
+    /* 0xC0CD ?? */ 0x52B3,
+    /* 0xC0CE ?? */ 0x7262,
+    /* 0xC0CF ?? */ 0x8001,
+    /* 0xC0D0 ?? */ 0x4F6C,
+    /* 0xC0D1 ?? */ 0x59E5,
+    /* 0xC0D2 ?? */ 0x916A,
+    /* 0xC0D3 ?? */ 0x70D9,
+    /* 0xC0D4 ?? */ 0x6D9D,
+    /* 0xC0D5 ?? */ 0x52D2,
+    /* 0xC0D6 ?? */ 0x4E50,
+    /* 0xC0D7 ?? */ 0x96F7,
+    /* 0xC0D8 ?? */ 0x956D,
+    /* 0xC0D9 ?? */ 0x857E,
+    /* 0xC0DA ?? */ 0x78CA,
+    /* 0xC0DB ?? */ 0x7D2F,
+    /* 0xC0DC ?? */ 0x5121,
+    /* 0xC0DD ?? */ 0x5792,
+    /* 0xC0DE ?? */ 0x64C2,
+    /* 0xC0DF ?? */ 0x808B,
+    /* 0xC0E0 ?? */ 0x7C7B,
+    /* 0xC0E1 ?? */ 0x6CEA,
+    /* 0xC0E2 ?? */ 0x68F1,
+    /* 0xC0E3 ?? */ 0x695E,
+    /* 0xC0E4 ?? */ 0x51B7,
+    /* 0xC0E5 ?? */ 0x5398,
+    /* 0xC0E6 ?? */ 0x68A8,
+    /* 0xC0E7 ?? */ 0x7281,
+    /* 0xC0E8 ?? */ 0x9ECE,
+    /* 0xC0E9 ?? */ 0x7BF1,
+    /* 0xC0EA ?? */ 0x72F8,
+    /* 0xC0EB ?? */ 0x79BB,
+    /* 0xC0EC ?? */ 0x6F13,
+    /* 0xC0ED ?? */ 0x7406,
+    /* 0xC0EE ?? */ 0x674E,
+    /* 0xC0EF ?? */ 0x91CC,
+    /* 0xC0F0 ?? */ 0x9CA4,
+    /* 0xC0F1 ?? */ 0x793C,
+    /* 0xC0F2 ?? */ 0x8389,
+    /* 0xC0F3 ?? */ 0x8354,
+    /* 0xC0F4 ?? */ 0x540F,
+    /* 0xC0F5 ?? */ 0x6817,
+    /* 0xC0F6 ?? */ 0x4E3D,
+    /* 0xC0F7 ?? */ 0x5389,
+    /* 0xC0F8 ?? */ 0x52B1,
+    /* 0xC0F9 ?? */ 0x783E,
+    /* 0xC0FA ?? */ 0x5386,
+    /* 0xC0FB ?? */ 0x5229,
+    /* 0xC0FC ?? */ 0x5088,
+    /* 0xC0FD ?? */ 0x4F8B,
+    /* 0xC0FE ?? */ 0x4FD0,
+    /* 0xC1A1 ?? */ 0x75E2,
+    /* 0xC1A2 ?? */ 0x7ACB,
+    /* 0xC1A3 ?? */ 0x7C92,
+    /* 0xC1A4 ?? */ 0x6CA5,
+    /* 0xC1A5 ?? */ 0x96B6,
+    /* 0xC1A6 ?? */ 0x529B,
+    /* 0xC1A7 ?? */ 0x7483,
+    /* 0xC1A8 ?? */ 0x54E9,
+    /* 0xC1A9 ?? */ 0x4FE9,
+    /* 0xC1AA ?? */ 0x8054,
+    /* 0xC1AB ?? */ 0x83B2,
+    /* 0xC1AC ?? */ 0x8FDE,
+    /* 0xC1AD ?? */ 0x9570,
+    /* 0xC1AE ?? */ 0x5EC9,
+    /* 0xC1AF ?? */ 0x601C,
+    /* 0xC1B0 ?? */ 0x6D9F,
+    /* 0xC1B1 ?? */ 0x5E18,
+    /* 0xC1B2 ?? */ 0x655B,
+    /* 0xC1B3 ?? */ 0x8138,
+    /* 0xC1B4 ?? */ 0x94FE,
+    /* 0xC1B5 ?? */ 0x604B,
+    /* 0xC1B6 ?? */ 0x70BC,
+    /* 0xC1B7 ?? */ 0x7EC3,
+    /* 0xC1B8 ?? */ 0x7CAE,
+    /* 0xC1B9 ?? */ 0x51C9,
+    /* 0xC1BA ?? */ 0x6881,
+    /* 0xC1BB ?? */ 0x7CB1,
+    /* 0xC1BC ?? */ 0x826F,
+    /* 0xC1BD ?? */ 0x4E24,
+    /* 0xC1BE ?? */ 0x8F86,
+    /* 0xC1BF ?? */ 0x91CF,
+    /* 0xC1C0 ?? */ 0x667E,
+    /* 0xC1C1 ?? */ 0x4EAE,
+    /* 0xC1C2 ?? */ 0x8C05,
+    /* 0xC1C3 ?? */ 0x64A9,
+    /* 0xC1C4 ?? */ 0x804A,
+    /* 0xC1C5 ?? */ 0x50DA,
+    /* 0xC1C6 ?? */ 0x7597,
+    /* 0xC1C7 ?? */ 0x71CE,
+    /* 0xC1C8 ?? */ 0x5BE5,
+    /* 0xC1C9 ?? */ 0x8FBD,
+    /* 0xC1CA ?? */ 0x6F66,
+    /* 0xC1CB ?? */ 0x4E86,
+    /* 0xC1CC ?? */ 0x6482,
+    /* 0xC1CD ?? */ 0x9563,
+    /* 0xC1CE ?? */ 0x5ED6,
+    /* 0xC1CF ?? */ 0x6599,
+    /* 0xC1D0 ?? */ 0x5217,
+    /* 0xC1D1 ?? */ 0x88C2,
+    /* 0xC1D2 ?? */ 0x70C8,
+    /* 0xC1D3 ?? */ 0x52A3,
+    /* 0xC1D4 ?? */ 0x730E,
+    /* 0xC1D5 ?? */ 0x7433,
+    /* 0xC1D6 ?? */ 0x6797,
+    /* 0xC1D7 ?? */ 0x78F7,
+    /* 0xC1D8 ?? */ 0x9716,
+    /* 0xC1D9 ?? */ 0x4E34,
+    /* 0xC1DA ?? */ 0x90BB,
+    /* 0xC1DB ?? */ 0x9CDE,
+    /* 0xC1DC ?? */ 0x6DCB,
+    /* 0xC1DD ?? */ 0x51DB,
+    /* 0xC1DE ?? */ 0x8D41,
+    /* 0xC1DF ?? */ 0x541D,
+    /* 0xC1E0 ?? */ 0x62CE,
+    /* 0xC1E1 ?? */ 0x73B2,
+    /* 0xC1E2 ?? */ 0x83F1,
+    /* 0xC1E3 ?? */ 0x96F6,
+    /* 0xC1E4 ?? */ 0x9F84,
+    /* 0xC1E5 ?? */ 0x94C3,
+    /* 0xC1E6 ?? */ 0x4F36,
+    /* 0xC1E7 ?? */ 0x7F9A,
+    /* 0xC1E8 ?? */ 0x51CC,
+    /* 0xC1E9 ?? */ 0x7075,
+    /* 0xC1EA ?? */ 0x9675,
+    /* 0xC1EB ?? */ 0x5CAD,
+    /* 0xC1EC ?? */ 0x9886,
+    /* 0xC1ED ?? */ 0x53E6,
+    /* 0xC1EE ?? */ 0x4EE4,
+    /* 0xC1EF ?? */ 0x6E9C,
+    /* 0xC1F0 ?? */ 0x7409,
+    /* 0xC1F1 ?? */ 0x69B4,
+    /* 0xC1F2 ?? */ 0x786B,
+    /* 0xC1F3 ?? */ 0x998F,
+    /* 0xC1F4 ?? */ 0x7559,
+    /* 0xC1F5 ?? */ 0x5218,
+    /* 0xC1F6 ?? */ 0x7624,
+    /* 0xC1F7 ?? */ 0x6D41,
+    /* 0xC1F8 ?? */ 0x67F3,
+    /* 0xC1F9 ?? */ 0x516D,
+    /* 0xC1FA ?? */ 0x9F99,
+    /* 0xC1FB ?? */ 0x804B,
+    /* 0xC1FC ?? */ 0x5499,
+    /* 0xC1FD ?? */ 0x7B3C,
+    /* 0xC1FE ?? */ 0x7ABF,
+    /* 0xC2A1 ? */ 0x9686,
+    /* 0xC2A2 ? */ 0x5784,
+    /* 0xC2A3 ? */ 0x62E2,
+    /* 0xC2A4 �� */ 0x9647,
+    /* 0xC2A5 ? */ 0x697C,
+    /* 0xC2A6 ? */ 0x5A04,
+    /* 0xC2A7 �� */ 0x6402,
+    /* 0xC2A8 �� */ 0x7BD3,
+    /* 0xC2A9 ? */ 0x6F0F,
+    /* 0xC2AA ? */ 0x964B,
+    /* 0xC2AB ? */ 0x82A6,
+    /* 0xC2AC ? */ 0x5362,
+    /* 0xC2AD ? */ 0x9885,
+    /* 0xC2AE ? */ 0x5E90,
+    /* 0xC2AF ? */ 0x7089,
+    /* 0xC2B0 �� */ 0x63B3,
+    /* 0xC2B1 �� */ 0x5364,
+    /* 0xC2B2 ? */ 0x864F,
+    /* 0xC2B3 ? */ 0x9C81,
+    /* 0xC2B4 ? */ 0x9E93,
+    /* 0xC2B5 ? */ 0x788C,
+    /* 0xC2B6 ? */ 0x9732,
+    /* 0xC2B7 �� */ 0x8DEF,
+    /* 0xC2B8 ? */ 0x8D42,
+    /* 0xC2B9 ? */ 0x9E7F,
+    /* 0xC2BA ? */ 0x6F5E,
+    /* 0xC2BB ? */ 0x7984,
+    /* 0xC2BC ? */ 0x5F55,
+    /* 0xC2BD ? */ 0x9646,
+    /* 0xC2BE ? */ 0x622E,
+    /* 0xC2BF ? */ 0x9A74,
+    /* 0xC2C0 ?? */ 0x5415,
+    /* 0xC2C1 ?? */ 0x94DD,
+    /* 0xC2C2 ?? */ 0x4FA3,
+    /* 0xC2C3 ?? */ 0x65C5,
+    /* 0xC2C4 ?? */ 0x5C65,
+    /* 0xC2C5 ?? */ 0x5C61,
+    /* 0xC2C6 ?? */ 0x7F15,
+    /* 0xC2C7 ?? */ 0x8651,
+    /* 0xC2C8 ?? */ 0x6C2F,
+    /* 0xC2C9 ?? */ 0x5F8B,
+    /* 0xC2CA ?? */ 0x7387,
+    /* 0xC2CB ?? */ 0x6EE4,
+    /* 0xC2CC ?? */ 0x7EFF,
+    /* 0xC2CD ?? */ 0x5CE6,
+    /* 0xC2CE ?? */ 0x631B,
+    /* 0xC2CF ?? */ 0x5B6A,
+    /* 0xC2D0 ?? */ 0x6EE6,
+    /* 0xC2D1 ?? */ 0x5375,
+    /* 0xC2D2 ?? */ 0x4E71,
+    /* 0xC2D3 ?? */ 0x63A0,
+    /* 0xC2D4 ?? */ 0x7565,
+    /* 0xC2D5 ?? */ 0x62A1,
+    /* 0xC2D6 ?? */ 0x8F6E,
+    /* 0xC2D7 ?? */ 0x4F26,
+    /* 0xC2D8 ?? */ 0x4ED1,
+    /* 0xC2D9 ?? */ 0x6CA6,
+    /* 0xC2DA ?? */ 0x7EB6,
+    /* 0xC2DB ?? */ 0x8BBA,
+    /* 0xC2DC ?? */ 0x841D,
+    /* 0xC2DD ?? */ 0x87BA,
+    /* 0xC2DE ?? */ 0x7F57,
+    /* 0xC2DF ?? */ 0x903B,
+    /* 0xC2E0 ?? */ 0x9523,
+    /* 0xC2E1 ?? */ 0x7BA9,
+    /* 0xC2E2 ?? */ 0x9AA1,
+    /* 0xC2E3 ?? */ 0x88F8,
+    /* 0xC2E4 ?? */ 0x843D,
+    /* 0xC2E5 ?? */ 0x6D1B,
+    /* 0xC2E6 ?? */ 0x9A86,
+    /* 0xC2E7 ?? */ 0x7EDC,
+    /* 0xC2E8 ?? */ 0x5988,
+    /* 0xC2E9 ?? */ 0x9EBB,
+    /* 0xC2EA ?? */ 0x739B,
+    /* 0xC2EB ?? */ 0x7801,
+    /* 0xC2EC ?? */ 0x8682,
+    /* 0xC2ED ?? */ 0x9A6C,
+    /* 0xC2EE ?? */ 0x9A82,
+    /* 0xC2EF ?? */ 0x561B,
+    /* 0xC2F0 ?? */ 0x5417,
+    /* 0xC2F1 ?? */ 0x57CB,
+    /* 0xC2F2 ?? */ 0x4E70,
+    /* 0xC2F3 ?? */ 0x9EA6,
+    /* 0xC2F4 ?? */ 0x5356,
+    /* 0xC2F5 ?? */ 0x8FC8,
+    /* 0xC2F6 ?? */ 0x8109,
+    /* 0xC2F7 ?? */ 0x7792,
+    /* 0xC2F8 ?? */ 0x9992,
+    /* 0xC2F9 ?? */ 0x86EE,
+    /* 0xC2FA ?? */ 0x6EE1,
+    /* 0xC2FB ?? */ 0x8513,
+    /* 0xC2FC ?? */ 0x66FC,
+    /* 0xC2FD ?? */ 0x6162,
+    /* 0xC2FE ?? */ 0x6F2B,
+    /* 0xC3A1 �� */ 0x8C29,
+    /* 0xC3A2 ? */ 0x8292,
+    /* 0xC3A3 ? */ 0x832B,
+    /* 0xC3A4 ? */ 0x76F2,
+    /* 0xC3A5 ? */ 0x6C13,
+    /* 0xC3A6 ? */ 0x5FD9,
+    /* 0xC3A7 ? */ 0x83BD,
+    /* 0xC3A8 �� */ 0x732B,
+    /* 0xC3A9 �� */ 0x8305,
+    /* 0xC3AA �� */ 0x951A,
+    /* 0xC3AB ? */ 0x6BDB,
+    /* 0xC3AC �� */ 0x77DB,
+    /* 0xC3AD �� */ 0x94C6,
+    /* 0xC3AE ? */ 0x536F,
+    /* 0xC3AF ? */ 0x8302,
+    /* 0xC3B0 ? */ 0x5192,
+    /* 0xC3B1 ? */ 0x5E3D,
+    /* 0xC3B2 �� */ 0x8C8C,
+    /* 0xC3B3 �� */ 0x8D38,
+    /* 0xC3B4 ? */ 0x4E48,
+    /* 0xC3B5 ? */ 0x73AB,
+    /* 0xC3B6 ? */ 0x679A,
+    /* 0xC3B7 �� */ 0x6885,
+    /* 0xC3B8 ? */ 0x9176,
+    /* 0xC3B9 �� */ 0x9709,
+    /* 0xC3BA �� */ 0x7164,
+    /* 0xC3BB ? */ 0x6CA1,
+    /* 0xC3BC �� */ 0x7709,
+    /* 0xC3BD ? */ 0x5A92,
+    /* 0xC3BE ? */ 0x9541,
+    /* 0xC3BF ? */ 0x6BCF,
+    /* 0xC3C0 ?? */ 0x7F8E,
+    /* 0xC3C1 ?? */ 0x6627,
+    /* 0xC3C2 ?? */ 0x5BD0,
+    /* 0xC3C3 ?? */ 0x59B9,
+    /* 0xC3C4 ?? */ 0x5A9A,
+    /* 0xC3C5 ?? */ 0x95E8,
+    /* 0xC3C6 ?? */ 0x95F7,
+    /* 0xC3C7 ?? */ 0x4EEC,
+    /* 0xC3C8 ?? */ 0x840C,
+    /* 0xC3C9 ?? */ 0x8499,
+    /* 0xC3CA ?? */ 0x6AAC,
+    /* 0xC3CB ?? */ 0x76DF,
+    /* 0xC3CC ?? */ 0x9530,
+    /* 0xC3CD ?? */ 0x731B,
+    /* 0xC3CE ?? */ 0x68A6,
+    /* 0xC3CF ?? */ 0x5B5F,
+    /* 0xC3D0 ?? */ 0x772F,
+    /* 0xC3D1 ?? */ 0x919A,
+    /* 0xC3D2 ?? */ 0x9761,
+    /* 0xC3D3 ?? */ 0x7CDC,
+    /* 0xC3D4 ?? */ 0x8FF7,
+    /* 0xC3D5 ?? */ 0x8C1C,
+    /* 0xC3D6 ?? */ 0x5F25,
+    /* 0xC3D7 ?? */ 0x7C73,
+    /* 0xC3D8 ?? */ 0x79D8,
+    /* 0xC3D9 ?? */ 0x89C5,
+    /* 0xC3DA ?? */ 0x6CCC,
+    /* 0xC3DB ?? */ 0x871C,
+    /* 0xC3DC ?? */ 0x5BC6,
+    /* 0xC3DD ?? */ 0x5E42,
+    /* 0xC3DE ?? */ 0x68C9,
+    /* 0xC3DF ?? */ 0x7720,
+    /* 0xC3E0 ?? */ 0x7EF5,
+    /* 0xC3E1 ?? */ 0x5195,
+    /* 0xC3E2 ?? */ 0x514D,
+    /* 0xC3E3 ?? */ 0x52C9,
+    /* 0xC3E4 ?? */ 0x5A29,
+    /* 0xC3E5 ?? */ 0x7F05,
+    /* 0xC3E6 ?? */ 0x9762,
+    /* 0xC3E7 ?? */ 0x82D7,
+    /* 0xC3E8 ?? */ 0x63CF,
+    /* 0xC3E9 ?? */ 0x7784,
+    /* 0xC3EA ?? */ 0x85D0,
+    /* 0xC3EB ?? */ 0x79D2,
+    /* 0xC3EC ?? */ 0x6E3A,
+    /* 0xC3ED ?? */ 0x5E99,
+    /* 0xC3EE ?? */ 0x5999,
+    /* 0xC3EF ?? */ 0x8511,
+    /* 0xC3F0 ?? */ 0x706D,
+    /* 0xC3F1 ?? */ 0x6C11,
+    /* 0xC3F2 ?? */ 0x62BF,
+    /* 0xC3F3 ?? */ 0x76BF,
+    /* 0xC3F4 ?? */ 0x654F,
+    /* 0xC3F5 ?? */ 0x60AF,
+    /* 0xC3F6 ?? */ 0x95FD,
+    /* 0xC3F7 ?? */ 0x660E,
+    /* 0xC3F8 ?? */ 0x879F,
+    /* 0xC3F9 ?? */ 0x9E23,
+    /* 0xC3FA ?? */ 0x94ED,
+    /* 0xC3FB ?? */ 0x540D,
+    /* 0xC3FC ?? */ 0x547D,
+    /* 0xC3FD ?? */ 0x8C2C,
+    /* 0xC3FE ?? */ 0x6478,
+    /* 0xC4A1 ? */ 0x6479,
+    /* 0xC4A2 ? */ 0x8611,
+    /* 0xC4A3 ? */ 0x6A21,
+    /* 0xC4A4 ? */ 0x819C,
+    /* 0xC4A5 ? */ 0x78E8,
+    /* 0xC4A6 ? */ 0x6469,
+    /* 0xC4A7 ? */ 0x9B54,
+    /* 0xC4A8 ? */ 0x62B9,
+    /* 0xC4A9 ? */ 0x672B,
+    /* 0xC4AA ? */ 0x83AB,
+    /* 0xC4AB �� */ 0x58A8,
+    /* 0xC4AC ? */ 0x9ED8,
+    /* 0xC4AD ? */ 0x6CAB,
+    /* 0xC4AE ? */ 0x6F20,
+    /* 0xC4AF ? */ 0x5BDE,
+    /* 0xC4B0 ? */ 0x964C,
+    /* 0xC4B1 ? */ 0x8C0B,
+    /* 0xC4B2 ? */ 0x725F,
+    /* 0xC4B3 ? */ 0x67D0,
+    /* 0xC4B4 ? */ 0x62C7,
+    /* 0xC4B5 ? */ 0x7261,
+    /* 0xC4B6 ? */ 0x4EA9,
+    /* 0xC4B7 ? */ 0x59C6,
+    /* 0xC4B8 ? */ 0x6BCD,
+    /* 0xC4B9 ? */ 0x5893,
+    /* 0xC4BA ? */ 0x66AE,
+    /* 0xC4BB ? */ 0x5E55,
+    /* 0xC4BC ? */ 0x52DF,
+    /* 0xC4BD ? */ 0x6155,
+    /* 0xC4BE ? */ 0x6728,
+    /* 0xC4BF ? */ 0x76EE,
+    /* 0xC4C0 ?? */ 0x7766,
+    /* 0xC4C1 ?? */ 0x7267,
+    /* 0xC4C2 ?? */ 0x7A46,
+    /* 0xC4C3 ?? */ 0x62FF,
+    /* 0xC4C4 ?? */ 0x54EA,
+    /* 0xC4C5 ?? */ 0x5450,
+    /* 0xC4C6 ?? */ 0x94A0,
+    /* 0xC4C7 ?? */ 0x90A3,
+    /* 0xC4C8 ?? */ 0x5A1C,
+    /* 0xC4C9 ?? */ 0x7EB3,
+    /* 0xC4CA ?? */ 0x6C16,
+    /* 0xC4CB ?? */ 0x4E43,
+    /* 0xC4CC ?? */ 0x5976,
+    /* 0xC4CD ?? */ 0x8010,
+    /* 0xC4CE ?? */ 0x5948,
+    /* 0xC4CF ?? */ 0x5357,
+    /* 0xC4D0 ?? */ 0x7537,
+    /* 0xC4D1 ?? */ 0x96BE,
+    /* 0xC4D2 ?? */ 0x56CA,
+    /* 0xC4D3 ?? */ 0x6320,
+    /* 0xC4D4 ?? */ 0x8111,
+    /* 0xC4D5 ?? */ 0x607C,
+    /* 0xC4D6 ?? */ 0x95F9,
+    /* 0xC4D7 ?? */ 0x6DD6,
+    /* 0xC4D8 ?? */ 0x5462,
+    /* 0xC4D9 ?? */ 0x9981,
+    /* 0xC4DA ?? */ 0x5185,
+    /* 0xC4DB ?? */ 0x5AE9,
+    /* 0xC4DC ?? */ 0x80FD,
+    /* 0xC4DD ?? */ 0x59AE,
+    /* 0xC4DE ?? */ 0x9713,
+    /* 0xC4DF ?? */ 0x502A,
+    /* 0xC4E0 ?? */ 0x6CE5,
+    /* 0xC4E1 ?? */ 0x5C3C,
+    /* 0xC4E2 ?? */ 0x62DF,
+    /* 0xC4E3 ?? */ 0x4F60,
+    /* 0xC4E4 ?? */ 0x533F,
+    /* 0xC4E5 ?? */ 0x817B,
+    /* 0xC4E6 ?? */ 0x9006,
+    /* 0xC4E7 ?? */ 0x6EBA,
+    /* 0xC4E8 ?? */ 0x852B,
+    /* 0xC4E9 ?? */ 0x62C8,
+    /* 0xC4EA ?? */ 0x5E74,
+    /* 0xC4EB ?? */ 0x78BE,
+    /* 0xC4EC ?? */ 0x64B5,
+    /* 0xC4ED ?? */ 0x637B,
+    /* 0xC4EE ?? */ 0x5FF5,
+    /* 0xC4EF ?? */ 0x5A18,
+    /* 0xC4F0 ?? */ 0x917F,
+    /* 0xC4F1 ?? */ 0x9E1F,
+    /* 0xC4F2 ?? */ 0x5C3F,
+    /* 0xC4F3 ?? */ 0x634F,
+    /* 0xC4F4 ?? */ 0x8042,
+    /* 0xC4F5 ?? */ 0x5B7D,
+    /* 0xC4F6 ?? */ 0x556E,
+    /* 0xC4F7 ?? */ 0x954A,
+    /* 0xC4F8 ?? */ 0x954D,
+    /* 0xC4F9 ?? */ 0x6D85,
+    /* 0xC4FA ?? */ 0x60A8,
+    /* 0xC4FB ?? */ 0x67E0,
+    /* 0xC4FC ?? */ 0x72DE,
+    /* 0xC4FD ?? */ 0x51DD,
+    /* 0xC4FE ?? */ 0x5B81,
+    /* 0xC5A1 ? */ 0x62E7,
+    /* 0xC5A2 ? */ 0x6CDE,
+    /* 0xC5A3 ? */ 0x725B,
+    /* 0xC5A4 ? */ 0x626D,
+    /* 0xC5A5 ? */ 0x94AE,
+    /* 0xC5A6 ? */ 0x7EBD,
+    /* 0xC5A7 ? */ 0x8113,
+    /* 0xC5A8 ? */ 0x6D53,
+    /* 0xC5A9 ? */ 0x519C,
+    /* 0xC5AA ? */ 0x5F04,
+    /* 0xC5AB �� */ 0x5974,
+    /* 0xC5AC ? */ 0x52AA,
+    /* 0xC5AD ? */ 0x6012,
+    /* 0xC5AE ? */ 0x5973,
+    /* 0xC5AF ? */ 0x6696,
+    /* 0xC5B0 ? */ 0x8650,
+    /* 0xC5B1 ? */ 0x759F,
+    /* 0xC5B2 ? */ 0x632A,
+    /* 0xC5B3 ? */ 0x61E6,
+    /* 0xC5B4 ? */ 0x7CEF,
+    /* 0xC5B5 ? */ 0x8BFA,
+    /* 0xC5B6 ? */ 0x54E6,
+    /* 0xC5B7 ? */ 0x6B27,
+    /* 0xC5B8 ? */ 0x9E25,
+    /* 0xC5B9 ? */ 0x6BB4,
+    /* 0xC5BA ? */ 0x85D5,
+    /* 0xC5BB ? */ 0x5455,
+    /* 0xC5BC ? */ 0x5076,
+    /* 0xC5BD ? */ 0x6CA4,
+    /* 0xC5BE ? */ 0x556A,
+    /* 0xC5BF ? */ 0x8DB4,
+    /* 0xC5C0 ?? */ 0x722C,
+    /* 0xC5C1 ?? */ 0x5E15,
+    /* 0xC5C2 ?? */ 0x6015,
+    /* 0xC5C3 ?? */ 0x7436,
+    /* 0xC5C4 ?? */ 0x62CD,
+    /* 0xC5C5 ?? */ 0x6392,
+    /* 0xC5C6 ?? */ 0x724C,
+    /* 0xC5C7 ?? */ 0x5F98,
+    /* 0xC5C8 ?? */ 0x6E43,
+    /* 0xC5C9 ?? */ 0x6D3E,
+    /* 0xC5CA ?? */ 0x6500,
+    /* 0xC5CB ?? */ 0x6F58,
+    /* 0xC5CC ?? */ 0x76D8,
+    /* 0xC5CD ?? */ 0x78D0,
+    /* 0xC5CE ?? */ 0x76FC,
+    /* 0xC5CF ?? */ 0x7554,
+    /* 0xC5D0 ?? */ 0x5224,
+    /* 0xC5D1 ?? */ 0x53DB,
+    /* 0xC5D2 ?? */ 0x4E53,
+    /* 0xC5D3 ?? */ 0x5E9E,
+    /* 0xC5D4 ?? */ 0x65C1,
+    /* 0xC5D5 ?? */ 0x802A,
+    /* 0xC5D6 ?? */ 0x80D6,
+    /* 0xC5D7 ?? */ 0x629B,
+    /* 0xC5D8 ?? */ 0x5486,
+    /* 0xC5D9 ?? */ 0x5228,
+    /* 0xC5DA ?? */ 0x70AE,
+    /* 0xC5DB ?? */ 0x888D,
+    /* 0xC5DC ?? */ 0x8DD1,
+    /* 0xC5DD ?? */ 0x6CE1,
+    /* 0xC5DE ?? */ 0x5478,
+    /* 0xC5DF ?? */ 0x80DA,
+    /* 0xC5E0 ?? */ 0x57F9,
+    /* 0xC5E1 ?? */ 0x88F4,
+    /* 0xC5E2 ?? */ 0x8D54,
+    /* 0xC5E3 ?? */ 0x966A,
+    /* 0xC5E4 ?? */ 0x914D,
+    /* 0xC5E5 ?? */ 0x4F69,
+    /* 0xC5E6 ?? */ 0x6C9B,
+    /* 0xC5E7 ?? */ 0x55B7,
+    /* 0xC5E8 ?? */ 0x76C6,
+    /* 0xC5E9 ?? */ 0x7830,
+    /* 0xC5EA ?? */ 0x62A8,
+    /* 0xC5EB ?? */ 0x70F9,
+    /* 0xC5EC ?? */ 0x6F8E,
+    /* 0xC5ED ?? */ 0x5F6D,
+    /* 0xC5EE ?? */ 0x84EC,
+    /* 0xC5EF ?? */ 0x68DA,
+    /* 0xC5F0 ?? */ 0x787C,
+    /* 0xC5F1 ?? */ 0x7BF7,
+    /* 0xC5F2 ?? */ 0x81A8,
+    /* 0xC5F3 ?? */ 0x670B,
+    /* 0xC5F4 ?? */ 0x9E4F,
+    /* 0xC5F5 ?? */ 0x6367,
+    /* 0xC5F6 ?? */ 0x78B0,
+    /* 0xC5F7 ?? */ 0x576F,
+    /* 0xC5F8 ?? */ 0x7812,
+    /* 0xC5F9 ?? */ 0x9739,
+    /* 0xC5FA ?? */ 0x6279,
+    /* 0xC5FB ?? */ 0x62AB,
+    /* 0xC5FC ?? */ 0x5288,
+    /* 0xC5FD ?? */ 0x7435,
+    /* 0xC5FE ?? */ 0x6BD7,
+    /* 0xC6A1 ? */ 0x5564,
+    /* 0xC6A2 ? */ 0x813E,
+    /* 0xC6A3 ? */ 0x75B2,
+    /* 0xC6A4 ? */ 0x76AE,
+    /* 0xC6A5 ? */ 0x5339,
+    /* 0xC6A6 ? */ 0x75DE,
+    /* 0xC6A7 ? */ 0x50FB,
+    /* 0xC6A8 ? */ 0x5C41,
+    /* 0xC6A9 ? */ 0x8B6C,
+    /* 0xC6AA ? */ 0x7BC7,
+    /* 0xC6AB ? */ 0x504F,
+    /* 0xC6AC ? */ 0x7247,
+    /* 0xC6AD ? */ 0x9A97,
+    /* 0xC6AE ? */ 0x98D8,
+    /* 0xC6AF ? */ 0x6F02,
+    /* 0xC6B0 ? */ 0x74E2,
+    /* 0xC6B1 ? */ 0x7968,
+    /* 0xC6B2 ? */ 0x6487,
+    /* 0xC6B3 ? */ 0x77A5,
+    /* 0xC6B4 ? */ 0x62FC,
+    /* 0xC6B5 ? */ 0x9891,
+    /* 0xC6B6 ? */ 0x8D2B,
+    /* 0xC6B7 ? */ 0x54C1,
+    /* 0xC6B8 ? */ 0x8058,
+    /* 0xC6B9 ? */ 0x4E52,
+    /* 0xC6BA ? */ 0x576A,
+    /* 0xC6BB ? */ 0x82F9,
+    /* 0xC6BC ? */ 0x840D,
+    /* 0xC6BD ? */ 0x5E73,
+    /* 0xC6BE ? */ 0x51ED,
+    /* 0xC6BF ? */ 0x74F6,
+    /* 0xC6C0 ?? */ 0x8BC4,
+    /* 0xC6C1 ?? */ 0x5C4F,
+    /* 0xC6C2 ?? */ 0x5761,
+    /* 0xC6C3 ?? */ 0x6CFC,
+    /* 0xC6C4 ?? */ 0x9887,
+    /* 0xC6C5 ?? */ 0x5A46,
+    /* 0xC6C6 ?? */ 0x7834,
+    /* 0xC6C7 ?? */ 0x9B44,
+    /* 0xC6C8 ?? */ 0x8FEB,
+    /* 0xC6C9 ?? */ 0x7C95,
+    /* 0xC6CA ?? */ 0x5256,
+    /* 0xC6CB ?? */ 0x6251,
+    /* 0xC6CC ?? */ 0x94FA,
+    /* 0xC6CD ?? */ 0x4EC6,
+    /* 0xC6CE ?? */ 0x8386,
+    /* 0xC6CF ?? */ 0x8461,
+    /* 0xC6D0 ?? */ 0x83E9,
+    /* 0xC6D1 ?? */ 0x84B2,
+    /* 0xC6D2 ?? */ 0x57D4,
+    /* 0xC6D3 ?? */ 0x6734,
+    /* 0xC6D4 ?? */ 0x5703,
+    /* 0xC6D5 ?? */ 0x666E,
+    /* 0xC6D6 ?? */ 0x6D66,
+    /* 0xC6D7 ?? */ 0x8C31,
+    /* 0xC6D8 ?? */ 0x66DD,
+    /* 0xC6D9 ?? */ 0x7011,
+    /* 0xC6DA ?? */ 0x671F,
+    /* 0xC6DB ?? */ 0x6B3A,
+    /* 0xC6DC ?? */ 0x6816,
+    /* 0xC6DD ?? */ 0x621A,
+    /* 0xC6DE ?? */ 0x59BB,
+    /* 0xC6DF ?? */ 0x4E03,
+    /* 0xC6E0 ?? */ 0x51C4,
+    /* 0xC6E1 ?? */ 0x6F06,
+    /* 0xC6E2 ?? */ 0x67D2,
+    /* 0xC6E3 ?? */ 0x6C8F,
+    /* 0xC6E4 ?? */ 0x5176,
+    /* 0xC6E5 ?? */ 0x68CB,
+    /* 0xC6E6 ?? */ 0x5947,
+    /* 0xC6E7 ?? */ 0x6B67,
+    /* 0xC6E8 ?? */ 0x7566,
+    /* 0xC6E9 ?? */ 0x5D0E,
+    /* 0xC6EA ?? */ 0x8110,
+    /* 0xC6EB ?? */ 0x9F50,
+    /* 0xC6EC ?? */ 0x65D7,
+    /* 0xC6ED ?? */ 0x7948,
+    /* 0xC6EE ?? */ 0x7941,
+    /* 0xC6EF ?? */ 0x9A91,
+    /* 0xC6F0 ?? */ 0x8D77,
+    /* 0xC6F1 ?? */ 0x5C82,
+    /* 0xC6F2 ?? */ 0x4E5E,
+    /* 0xC6F3 ?? */ 0x4F01,
+    /* 0xC6F4 ?? */ 0x542F,
+    /* 0xC6F5 ?? */ 0x5951,
+    /* 0xC6F6 ?? */ 0x780C,
+    /* 0xC6F7 ?? */ 0x5668,
+    /* 0xC6F8 ?? */ 0x6C14,
+    /* 0xC6F9 ?? */ 0x8FC4,
+    /* 0xC6FA ?? */ 0x5F03,
+    /* 0xC6FB ?? */ 0x6C7D,
+    /* 0xC6FC ?? */ 0x6CE3,
+    /* 0xC6FD ?? */ 0x8BAB,
+    /* 0xC6FE ?? */ 0x6390,
+    /* 0xC7A1 ? */ 0x6070,
+    /* 0xC7A2 ? */ 0x6D3D,
+    /* 0xC7A3 ? */ 0x7275,
+    /* 0xC7A4 ? */ 0x6266,
+    /* 0xC7A5 ? */ 0x948E,
+    /* 0xC7A6 ? */ 0x94C5,
+    /* 0xC7A7 ? */ 0x5343,
+    /* 0xC7A8 ? */ 0x8FC1,
+    /* 0xC7A9 ? */ 0x7B7E,
+    /* 0xC7AA ? */ 0x4EDF,
+    /* 0xC7AB ? */ 0x8C26,
+    /* 0xC7AC ? */ 0x4E7E,
+    /* 0xC7AD ? */ 0x9ED4,
+    /* 0xC7AE ? */ 0x94B1,
+    /* 0xC7AF ? */ 0x94B3,
+    /* 0xC7B0 ? */ 0x524D,
+    /* 0xC7B1 ? */ 0x6F5C,
+    /* 0xC7B2 ? */ 0x9063,
+    /* 0xC7B3 ? */ 0x6D45,
+    /* 0xC7B4 ? */ 0x8C34,
+    /* 0xC7B5 ? */ 0x5811,
+    /* 0xC7B6 ? */ 0x5D4C,
+    /* 0xC7B7 ? */ 0x6B20,
+    /* 0xC7B8 ? */ 0x6B49,
+    /* 0xC7B9 ? */ 0x67AA,
+    /* 0xC7BA ? */ 0x545B,
+    /* 0xC7BB ? */ 0x8154,
+    /* 0xC7BC ? */ 0x7F8C,
+    /* 0xC7BD ? */ 0x5899,
+    /* 0xC7BE ? */ 0x8537,
+    /* 0xC7BF ? */ 0x5F3A,
+    /* 0xC7C0 ?? */ 0x62A2,
+    /* 0xC7C1 ?? */ 0x6A47,
+    /* 0xC7C2 ?? */ 0x9539,
+    /* 0xC7C3 ?? */ 0x6572,
+    /* 0xC7C4 ?? */ 0x6084,
+    /* 0xC7C5 ?? */ 0x6865,
+    /* 0xC7C6 ?? */ 0x77A7,
+    /* 0xC7C7 ?? */ 0x4E54,
+    /* 0xC7C8 ?? */ 0x4FA8,
+    /* 0xC7C9 ?? */ 0x5DE7,
+    /* 0xC7CA ?? */ 0x9798,
+    /* 0xC7CB ?? */ 0x64AC,
+    /* 0xC7CC ?? */ 0x7FD8,
+    /* 0xC7CD ?? */ 0x5CED,
+    /* 0xC7CE ?? */ 0x4FCF,
+    /* 0xC7CF ?? */ 0x7A8D,
+    /* 0xC7D0 ?? */ 0x5207,
+    /* 0xC7D1 ?? */ 0x8304,
+    /* 0xC7D2 ?? */ 0x4E14,
+    /* 0xC7D3 ?? */ 0x602F,
+    /* 0xC7D4 ?? */ 0x7A83,
+    /* 0xC7D5 ?? */ 0x94A6,
+    /* 0xC7D6 ?? */ 0x4FB5,
+    /* 0xC7D7 ?? */ 0x4EB2,
+    /* 0xC7D8 ?? */ 0x79E6,
+    /* 0xC7D9 ?? */ 0x7434,
+    /* 0xC7DA ?? */ 0x52E4,
+    /* 0xC7DB ?? */ 0x82B9,
+    /* 0xC7DC ?? */ 0x64D2,
+    /* 0xC7DD ?? */ 0x79BD,
+    /* 0xC7DE ?? */ 0x5BDD,
+    /* 0xC7DF ?? */ 0x6C81,
+    /* 0xC7E0 ?? */ 0x9752,
+    /* 0xC7E1 ?? */ 0x8F7B,
+    /* 0xC7E2 ?? */ 0x6C22,
+    /* 0xC7E3 ?? */ 0x503E,
+    /* 0xC7E4 ?? */ 0x537F,
+    /* 0xC7E5 ?? */ 0x6E05,
+    /* 0xC7E6 ?? */ 0x64CE,
+    /* 0xC7E7 ?? */ 0x6674,
+    /* 0xC7E8 ?? */ 0x6C30,
+    /* 0xC7E9 ?? */ 0x60C5,
+    /* 0xC7EA ?? */ 0x9877,
+    /* 0xC7EB ?? */ 0x8BF7,
+    /* 0xC7EC ?? */ 0x5E86,
+    /* 0xC7ED ?? */ 0x743C,
+    /* 0xC7EE ?? */ 0x7A77,
+    /* 0xC7EF ?? */ 0x79CB,
+    /* 0xC7F0 ?? */ 0x4E18,
+    /* 0xC7F1 ?? */ 0x90B1,
+    /* 0xC7F2 ?? */ 0x7403,
+    /* 0xC7F3 ?? */ 0x6C42,
+    /* 0xC7F4 ?? */ 0x56DA,
+    /* 0xC7F5 ?? */ 0x914B,
+    /* 0xC7F6 ?? */ 0x6CC5,
+    /* 0xC7F7 ?? */ 0x8D8B,
+    /* 0xC7F8 ?? */ 0x533A,
+    /* 0xC7F9 ?? */ 0x86C6,
+    /* 0xC7FA ?? */ 0x66F2,
+    /* 0xC7FB ?? */ 0x8EAF,
+    /* 0xC7FC ?? */ 0x5C48,
+    /* 0xC7FD ?? */ 0x9A71,
+    /* 0xC7FE ?? */ 0x6E20,
+    /* 0xC8A1 ? */ 0x53D6,
+    /* 0xC8A2 ? */ 0x5A36,
+    /* 0xC8A3 ? */ 0x9F8B,
+    /* 0xC8A4 ? */ 0x8DA3,
+    /* 0xC8A5 ? */ 0x53BB,
+    /* 0xC8A6 ? */ 0x5708,
+    /* 0xC8A7 ? */ 0x98A7,
+    /* 0xC8A8 ? */ 0x6743,
+    /* 0xC8A9 ? */ 0x919B,
+    /* 0xC8AA ? */ 0x6CC9,
+    /* 0xC8AB ? */ 0x5168,
+    /* 0xC8AC ? */ 0x75CA,
+    /* 0xC8AD ? */ 0x62F3,
+    /* 0xC8AE ? */ 0x72AC,
+    /* 0xC8AF ? */ 0x5238,
+    /* 0xC8B0 ? */ 0x529D,
+    /* 0xC8B1 ? */ 0x7F3A,
+    /* 0xC8B2 ? */ 0x7094,
+    /* 0xC8B3 ? */ 0x7638,
+    /* 0xC8B4 ? */ 0x5374,
+    /* 0xC8B5 ? */ 0x9E4A,
+    /* 0xC8B6 ? */ 0x69B7,
+    /* 0xC8B7 ? */ 0x786E,
+    /* 0xC8B8 ? */ 0x96C0,
+    /* 0xC8B9 ? */ 0x88D9,
+    /* 0xC8BA ? */ 0x7FA4,
+    /* 0xC8BB ? */ 0x7136,
+    /* 0xC8BC ? */ 0x71C3,
+    /* 0xC8BD ? */ 0x5189,
+    /* 0xC8BE ? */ 0x67D3,
+    /* 0xC8BF ? */ 0x74E4,
+    /* 0xC8C0 ?? */ 0x58E4,
+    /* 0xC8C1 ?? */ 0x6518,
+    /* 0xC8C2 ?? */ 0x56B7,
+    /* 0xC8C3 ?? */ 0x8BA9,
+    /* 0xC8C4 ?? */ 0x9976,
+    /* 0xC8C5 ?? */ 0x6270,
+    /* 0xC8C6 ?? */ 0x7ED5,
+    /* 0xC8C7 ?? */ 0x60F9,
+    /* 0xC8C8 ?? */ 0x70ED,
+    /* 0xC8C9 ?? */ 0x58EC,
+    /* 0xC8CA ?? */ 0x4EC1,
+    /* 0xC8CB ?? */ 0x4EBA,
+    /* 0xC8CC ?? */ 0x5FCD,
+    /* 0xC8CD ?? */ 0x97E7,
+    /* 0xC8CE ?? */ 0x4EFB,
+    /* 0xC8CF ?? */ 0x8BA4,
+    /* 0xC8D0 ?? */ 0x5203,
+    /* 0xC8D1 ?? */ 0x598A,
+    /* 0xC8D2 ?? */ 0x7EAB,
+    /* 0xC8D3 ?? */ 0x6254,
+    /* 0xC8D4 ?? */ 0x4ECD,
+    /* 0xC8D5 ?? */ 0x65E5,
+    /* 0xC8D6 ?? */ 0x620E,
+    /* 0xC8D7 ?? */ 0x8338,
+    /* 0xC8D8 ?? */ 0x84C9,
+    /* 0xC8D9 ?? */ 0x8363,
+    /* 0xC8DA ?? */ 0x878D,
+    /* 0xC8DB ?? */ 0x7194,
+    /* 0xC8DC ?? */ 0x6EB6,
+    /* 0xC8DD ?? */ 0x5BB9,
+    /* 0xC8DE ?? */ 0x7ED2,
+    /* 0xC8DF ?? */ 0x5197,
+    /* 0xC8E0 ?? */ 0x63C9,
+    /* 0xC8E1 ?? */ 0x67D4,
+    /* 0xC8E2 ?? */ 0x8089,
+    /* 0xC8E3 ?? */ 0x8339,
+    /* 0xC8E4 ?? */ 0x8815,
+    /* 0xC8E5 ?? */ 0x5112,
+    /* 0xC8E6 ?? */ 0x5B7A,
+    /* 0xC8E7 ?? */ 0x5982,
+    /* 0xC8E8 ?? */ 0x8FB1,
+    /* 0xC8E9 ?? */ 0x4E73,
+    /* 0xC8EA ?? */ 0x6C5D,
+    /* 0xC8EB ?? */ 0x5165,
+    /* 0xC8EC ?? */ 0x8925,
+    /* 0xC8ED ?? */ 0x8F6F,
+    /* 0xC8EE ?? */ 0x962E,
+    /* 0xC8EF ?? */ 0x854A,
+    /* 0xC8F0 ?? */ 0x745E,
+    /* 0xC8F1 ?? */ 0x9510,
+    /* 0xC8F2 ?? */ 0x95F0,
+    /* 0xC8F3 ?? */ 0x6DA6,
+    /* 0xC8F4 ?? */ 0x82E5,
+    /* 0xC8F5 ?? */ 0x5F31,
+    /* 0xC8F6 ?? */ 0x6492,
+    /* 0xC8F7 ?? */ 0x6D12,
+    /* 0xC8F8 ?? */ 0x8428,
+    /* 0xC8F9 ?? */ 0x816E,
+    /* 0xC8FA ?? */ 0x9CC3,
+    /* 0xC8FB ?? */ 0x585E,
+    /* 0xC8FC ?? */ 0x8D5B,
+    /* 0xC8FD ?? */ 0x4E09,
+    /* 0xC8FE ?? */ 0x53C1,
+    /* 0xC9A1 �� */ 0x4F1E,
+    /* 0xC9A2 ? */ 0x6563,
+    /* 0xC9A3 ? */ 0x6851,
+    /* 0xC9A4 ? */ 0x55D3,
+    /* 0xC9A5 ? */ 0x4E27,
+    /* 0xC9A6 ? */ 0x6414,
+    /* 0xC9A7 ? */ 0x9A9A,
+    /* 0xC9A8 ? */ 0x626B,
+    /* 0xC9A9 ? */ 0x5AC2,
+    /* 0xC9AA ? */ 0x745F,
+    /* 0xC9AB ? */ 0x8272,
+    /* 0xC9AC ? */ 0x6DA9,
+    /* 0xC9AD ? */ 0x68EE,
+    /* 0xC9AE ? */ 0x50E7,
+    /* 0xC9AF ? */ 0x838E,
+    /* 0xC9B0 ? */ 0x7802,
+    /* 0xC9B1 ? */ 0x6740,
+    /* 0xC9B2 ? */ 0x5239,
+    /* 0xC9B3 ? */ 0x6C99,
+    /* 0xC9B4 ? */ 0x7EB1,
+    /* 0xC9B5 ? */ 0x50BB,
+    /* 0xC9B6 ? */ 0x5565,
+    /* 0xC9B7 ? */ 0x715E,
+    /* 0xC9B8 ? */ 0x7B5B,
+    /* 0xC9B9 ? */ 0x6652,
+    /* 0xC9BA ? */ 0x73CA,
+    /* 0xC9BB ? */ 0x82EB,
+    /* 0xC9BC ? */ 0x6749,
+    /* 0xC9BD ? */ 0x5C71,
+    /* 0xC9BE ? */ 0x5220,
+    /* 0xC9BF ? */ 0x717D,
+    /* 0xC9C0 ?? */ 0x886B,
+    /* 0xC9C1 ?? */ 0x95EA,
+    /* 0xC9C2 ?? */ 0x9655,
+    /* 0xC9C3 ?? */ 0x64C5,
+    /* 0xC9C4 ?? */ 0x8D61,
+    /* 0xC9C5 ?? */ 0x81B3,
+    /* 0xC9C6 ?? */ 0x5584,
+    /* 0xC9C7 ?? */ 0x6C55,
+    /* 0xC9C8 ?? */ 0x6247,
+    /* 0xC9C9 ?? */ 0x7F2E,
+    /* 0xC9CA ?? */ 0x5892,
+    /* 0xC9CB ?? */ 0x4F24,
+    /* 0xC9CC ?? */ 0x5546,
+    /* 0xC9CD ?? */ 0x8D4F,
+    /* 0xC9CE ?? */ 0x664C,
+    /* 0xC9CF ?? */ 0x4E0A,
+    /* 0xC9D0 ?? */ 0x5C1A,
+    /* 0xC9D1 ?? */ 0x88F3,
+    /* 0xC9D2 ?? */ 0x68A2,
+    /* 0xC9D3 ?? */ 0x634E,
+    /* 0xC9D4 ?? */ 0x7A0D,
+    /* 0xC9D5 ?? */ 0x70E7,
+    /* 0xC9D6 ?? */ 0x828D,
+    /* 0xC9D7 ?? */ 0x52FA,
+    /* 0xC9D8 ?? */ 0x97F6,
+    /* 0xC9D9 ?? */ 0x5C11,
+    /* 0xC9DA ?? */ 0x54E8,
+    /* 0xC9DB ?? */ 0x90B5,
+    /* 0xC9DC ?? */ 0x7ECD,
+    /* 0xC9DD ?? */ 0x5962,
+    /* 0xC9DE ?? */ 0x8D4A,
+    /* 0xC9DF ?? */ 0x86C7,
+    /* 0xC9E0 ?? */ 0x820C,
+    /* 0xC9E1 ?? */ 0x820D,
+    /* 0xC9E2 ?? */ 0x8D66,
+    /* 0xC9E3 ?? */ 0x6444,
+    /* 0xC9E4 ?? */ 0x5C04,
+    /* 0xC9E5 ?? */ 0x6151,
+    /* 0xC9E6 ?? */ 0x6D89,
+    /* 0xC9E7 ?? */ 0x793E,
+    /* 0xC9E8 ?? */ 0x8BBE,
+    /* 0xC9E9 ?? */ 0x7837,
+    /* 0xC9EA ?? */ 0x7533,
+    /* 0xC9EB ?? */ 0x547B,
+    /* 0xC9EC ?? */ 0x4F38,
+    /* 0xC9ED ?? */ 0x8EAB,
+    /* 0xC9EE ?? */ 0x6DF1,
+    /* 0xC9EF ?? */ 0x5A20,
+    /* 0xC9F0 ?? */ 0x7EC5,
+    /* 0xC9F1 ?? */ 0x795E,
+    /* 0xC9F2 ?? */ 0x6C88,
+    /* 0xC9F3 ?? */ 0x5BA1,
+    /* 0xC9F4 ?? */ 0x5A76,
+    /* 0xC9F5 ?? */ 0x751A,
+    /* 0xC9F6 ?? */ 0x80BE,
+    /* 0xC9F7 ?? */ 0x614E,
+    /* 0xC9F8 ?? */ 0x6E17,
+    /* 0xC9F9 ?? */ 0x58F0,
+    /* 0xC9FA ?? */ 0x751F,
+    /* 0xC9FB ?? */ 0x7525,
+    /* 0xC9FC ?? */ 0x7272,
+    /* 0xC9FD ?? */ 0x5347,
+    /* 0xC9FE ?? */ 0x7EF3,
+    /* 0xCAA1 ? */ 0x7701,
+    /* 0xCAA2 ? */ 0x76DB,
+    /* 0xCAA3 ? */ 0x5269,
+    /* 0xCAA4 ? */ 0x80DC,
+    /* 0xCAA5 ? */ 0x5723,
+    /* 0xCAA6 ? */ 0x5E08,
+    /* 0xCAA7 ? */ 0x5931,
+    /* 0xCAA8 ? */ 0x72EE,
+    /* 0xCAA9 ? */ 0x65BD,
+    /* 0xCAAA ? */ 0x6E7F,
+    /* 0xCAAB ? */ 0x8BD7,
+    /* 0xCAAC ? */ 0x5C38,
+    /* 0xCAAD ? */ 0x8671,
+    /* 0xCAAE ? */ 0x5341,
+    /* 0xCAAF ? */ 0x77F3,
+    /* 0xCAB0 ? */ 0x62FE,
+    /* 0xCAB1 ? */ 0x65F6,
+    /* 0xCAB2 ? */ 0x4EC0,
+    /* 0xCAB3 ? */ 0x98DF,
+    /* 0xCAB4 ? */ 0x8680,
+    /* 0xCAB5 ? */ 0x5B9E,
+    /* 0xCAB6 ? */ 0x8BC6,
+    /* 0xCAB7 ? */ 0x53F2,
+    /* 0xCAB8 ? */ 0x77E2,
+    /* 0xCAB9 ? */ 0x4F7F,
+    /* 0xCABA ? */ 0x5C4E,
+    /* 0xCABB ? */ 0x9A76,
+    /* 0xCABC ? */ 0x59CB,
+    /* 0xCABD ? */ 0x5F0F,
+    /* 0xCABE ? */ 0x793A,
+    /* 0xCABF ? */ 0x58EB,
+    /* 0xCAC0 ?? */ 0x4E16,
+    /* 0xCAC1 ?? */ 0x67FF,
+    /* 0xCAC2 ?? */ 0x4E8B,
+    /* 0xCAC3 ?? */ 0x62ED,
+    /* 0xCAC4 ?? */ 0x8A93,
+    /* 0xCAC5 ?? */ 0x901D,
+    /* 0xCAC6 ?? */ 0x52BF,
+    /* 0xCAC7 ?? */ 0x662F,
+    /* 0xCAC8 ?? */ 0x55DC,
+    /* 0xCAC9 ?? */ 0x566C,
+    /* 0xCACA ?? */ 0x9002,
+    /* 0xCACB ?? */ 0x4ED5,
+    /* 0xCACC ?? */ 0x4F8D,
+    /* 0xCACD ?? */ 0x91CA,
+    /* 0xCACE ?? */ 0x9970,
+    /* 0xCACF ?? */ 0x6C0F,
+    /* 0xCAD0 ?? */ 0x5E02,
+    /* 0xCAD1 ?? */ 0x6043,
+    /* 0xCAD2 ?? */ 0x5BA4,
+    /* 0xCAD3 ?? */ 0x89C6,
+    /* 0xCAD4 ?? */ 0x8BD5,
+    /* 0xCAD5 ?? */ 0x6536,
+    /* 0xCAD6 ?? */ 0x624B,
+    /* 0xCAD7 ?? */ 0x9996,
+    /* 0xCAD8 ?? */ 0x5B88,
+    /* 0xCAD9 ?? */ 0x5BFF,
+    /* 0xCADA ?? */ 0x6388,
+    /* 0xCADB ?? */ 0x552E,
+    /* 0xCADC ?? */ 0x53D7,
+    /* 0xCADD ?? */ 0x7626,
+    /* 0xCADE ?? */ 0x517D,
+    /* 0xCADF ?? */ 0x852C,
+    /* 0xCAE0 ?? */ 0x67A2,
+    /* 0xCAE1 ?? */ 0x68B3,
+    /* 0xCAE2 ?? */ 0x6B8A,
+    /* 0xCAE3 ?? */ 0x6292,
+    /* 0xCAE4 ?? */ 0x8F93,
+    /* 0xCAE5 ?? */ 0x53D4,
+    /* 0xCAE6 ?? */ 0x8212,
+    /* 0xCAE7 ?? */ 0x6DD1,
+    /* 0xCAE8 ?? */ 0x758F,
+    /* 0xCAE9 ?? */ 0x4E66,
+    /* 0xCAEA ?? */ 0x8D4E,
+    /* 0xCAEB ?? */ 0x5B70,
+    /* 0xCAEC ?? */ 0x719F,
+    /* 0xCAED ?? */ 0x85AF,
+    /* 0xCAEE ?? */ 0x6691,
+    /* 0xCAEF ?? */ 0x66D9,
+    /* 0xCAF0 ?? */ 0x7F72,
+    /* 0xCAF1 ?? */ 0x8700,
+    /* 0xCAF2 ?? */ 0x9ECD,
+    /* 0xCAF3 ?? */ 0x9F20,
+    /* 0xCAF4 ?? */ 0x5C5E,
+    /* 0xCAF5 ?? */ 0x672F,
+    /* 0xCAF6 ?? */ 0x8FF0,
+    /* 0xCAF7 ?? */ 0x6811,
+    /* 0xCAF8 ?? */ 0x675F,
+    /* 0xCAF9 ?? */ 0x620D,
+    /* 0xCAFA ?? */ 0x7AD6,
+    /* 0xCAFB ?? */ 0x5885,
+    /* 0xCAFC ?? */ 0x5EB6,
+    /* 0xCAFD ?? */ 0x6570,
+    /* 0xCAFE ?? */ 0x6F31,
+    /* 0xCBA1 ? */ 0x6055,
+    /* 0xCBA2 ? */ 0x5237,
+    /* 0xCBA3 ? */ 0x800D,
+    /* 0xCBA4 ? */ 0x6454,
+    /* 0xCBA5 ? */ 0x8870,
+    /* 0xCBA6 ? */ 0x7529,
+    /* 0xCBA7 ? */ 0x5E05,
+    /* 0xCBA8 ? */ 0x6813,
+    /* 0xCBA9 ? */ 0x62F4,
+    /* 0xCBAA ? */ 0x971C,
+    /* 0xCBAB ? */ 0x53CC,
+    /* 0xCBAC ? */ 0x723D,
+    /* 0xCBAD ? */ 0x8C01,
+    /* 0xCBAE ? */ 0x6C34,
+    /* 0xCBAF ? */ 0x7761,
+    /* 0xCBB0 ? */ 0x7A0E,
+    /* 0xCBB1 ? */ 0x542E,
+    /* 0xCBB2 ? */ 0x77AC,
+    /* 0xCBB3 ? */ 0x987A,
+    /* 0xCBB4 ? */ 0x821C,
+    /* 0xCBB5 ? */ 0x8BF4,
+    /* 0xCBB6 ? */ 0x7855,
+    /* 0xCBB7 ? */ 0x6714,
+    /* 0xCBB8 ? */ 0x70C1,
+    /* 0xCBB9 ? */ 0x65AF,
+    /* 0xCBBA ? */ 0x6495,
+    /* 0xCBBB ? */ 0x5636,
+    /* 0xCBBC ? */ 0x601D,
+    /* 0xCBBD ? */ 0x79C1,
+    /* 0xCBBE ? */ 0x53F8,
+    /* 0xCBBF ? */ 0x4E1D,
+    /* 0xCBC0 ?? */ 0x6B7B,
+    /* 0xCBC1 ?? */ 0x8086,
+    /* 0xCBC2 ?? */ 0x5BFA,
+    /* 0xCBC3 ?? */ 0x55E3,
+    /* 0xCBC4 ?? */ 0x56DB,
+    /* 0xCBC5 ?? */ 0x4F3A,
+    /* 0xCBC6 ?? */ 0x4F3C,
+    /* 0xCBC7 ?? */ 0x9972,
+    /* 0xCBC8 ?? */ 0x5DF3,
+    /* 0xCBC9 ?? */ 0x677E,
+    /* 0xCBCA ?? */ 0x8038,
+    /* 0xCBCB ?? */ 0x6002,
+    /* 0xCBCC ?? */ 0x9882,
+    /* 0xCBCD ?? */ 0x9001,
+    /* 0xCBCE ?? */ 0x5B8B,
+    /* 0xCBCF ?? */ 0x8BBC,
+    /* 0xCBD0 ?? */ 0x8BF5,
+    /* 0xCBD1 ?? */ 0x641C,
+    /* 0xCBD2 ?? */ 0x8258,
+    /* 0xCBD3 ?? */ 0x64DE,
+    /* 0xCBD4 ?? */ 0x55FD,
+    /* 0xCBD5 ?? */ 0x82CF,
+    /* 0xCBD6 ?? */ 0x9165,
+    /* 0xCBD7 ?? */ 0x4FD7,
+    /* 0xCBD8 ?? */ 0x7D20,
+    /* 0xCBD9 ?? */ 0x901F,
+    /* 0xCBDA ?? */ 0x7C9F,
+    /* 0xCBDB ?? */ 0x50F3,
+    /* 0xCBDC ?? */ 0x5851,
+    /* 0xCBDD ?? */ 0x6EAF,
+    /* 0xCBDE ?? */ 0x5BBF,
+    /* 0xCBDF ?? */ 0x8BC9,
+    /* 0xCBE0 ?? */ 0x8083,
+    /* 0xCBE1 ?? */ 0x9178,
+    /* 0xCBE2 ?? */ 0x849C,
+    /* 0xCBE3 ?? */ 0x7B97,
+    /* 0xCBE4 ?? */ 0x867D,
+    /* 0xCBE5 ?? */ 0x968B,
+    /* 0xCBE6 ?? */ 0x968F,
+    /* 0xCBE7 ?? */ 0x7EE5,
+    /* 0xCBE8 ?? */ 0x9AD3,
+    /* 0xCBE9 ?? */ 0x788E,
+    /* 0xCBEA ?? */ 0x5C81,
+    /* 0xCBEB ?? */ 0x7A57,
+    /* 0xCBEC ?? */ 0x9042,
+    /* 0xCBED ?? */ 0x96A7,
+    /* 0xCBEE ?? */ 0x795F,
+    /* 0xCBEF ?? */ 0x5B59,
+    /* 0xCBF0 ?? */ 0x635F,
+    /* 0xCBF1 ?? */ 0x7B0B,
+    /* 0xCBF2 ?? */ 0x84D1,
+    /* 0xCBF3 ?? */ 0x68AD,
+    /* 0xCBF4 ?? */ 0x5506,
+    /* 0xCBF5 ?? */ 0x7F29,
+    /* 0xCBF6 ?? */ 0x7410,
+    /* 0xCBF7 ?? */ 0x7D22,
+    /* 0xCBF8 ?? */ 0x9501,
+    /* 0xCBF9 ?? */ 0x6240,
+    /* 0xCBFA ?? */ 0x584C,
+    /* 0xCBFB ?? */ 0x4ED6,
+    /* 0xCBFC ?? */ 0x5B83,
+    /* 0xCBFD ?? */ 0x5979,
+    /* 0xCBFE ?? */ 0x5854,
+    /* 0xCCA1 ? */ 0x736D,
+    /* 0xCCA2 ? */ 0x631E,
+    /* 0xCCA3 ? */ 0x8E4B,
+    /* 0xCCA4 ? */ 0x8E0F,
+    /* 0xCCA5 ? */ 0x80CE,
+    /* 0xCCA6 ? */ 0x82D4,
+    /* 0xCCA7 ? */ 0x62AC,
+    /* 0xCCA8 ? */ 0x53F0,
+    /* 0xCCA9 ? */ 0x6CF0,
+    /* 0xCCAA ? */ 0x915E,
+    /* 0xCCAB ? */ 0x592A,
+    /* 0xCCAC ? */ 0x6001,
+    /* 0xCCAD ? */ 0x6C70,
+    /* 0xCCAE ? */ 0x574D,
+    /* 0xCCAF ? */ 0x644A,
+    /* 0xCCB0 ? */ 0x8D2A,
+    /* 0xCCB1 ? */ 0x762B,
+    /* 0xCCB2 ? */ 0x6EE9,
+    /* 0xCCB3 ? */ 0x575B,
+    /* 0xCCB4 ? */ 0x6A80,
+    /* 0xCCB5 ? */ 0x75F0,
+    /* 0xCCB6 ? */ 0x6F6D,
+    /* 0xCCB7 ? */ 0x8C2D,
+    /* 0xCCB8 ? */ 0x8C08,
+    /* 0xCCB9 ? */ 0x5766,
+    /* 0xCCBA ? */ 0x6BEF,
+    /* 0xCCBB ? */ 0x8892,
+    /* 0xCCBC ? */ 0x78B3,
+    /* 0xCCBD ? */ 0x63A2,
+    /* 0xCCBE ? */ 0x53F9,
+    /* 0xCCBF ? */ 0x70AD,
+    /* 0xCCC0 ?? */ 0x6C64,
+    /* 0xCCC1 ?? */ 0x5858,
+    /* 0xCCC2 ?? */ 0x642A,
+    /* 0xCCC3 ?? */ 0x5802,
+    /* 0xCCC4 ?? */ 0x68E0,
+    /* 0xCCC5 ?? */ 0x819B,
+    /* 0xCCC6 ?? */ 0x5510,
+    /* 0xCCC7 ?? */ 0x7CD6,
+    /* 0xCCC8 ?? */ 0x5018,
+    /* 0xCCC9 ?? */ 0x8EBA,
+    /* 0xCCCA ?? */ 0x6DCC,
+    /* 0xCCCB ?? */ 0x8D9F,
+    /* 0xCCCC ?? */ 0x70EB,
+    /* 0xCCCD ?? */ 0x638F,
+    /* 0xCCCE ?? */ 0x6D9B,
+    /* 0xCCCF ?? */ 0x6ED4,
+    /* 0xCCD0 ?? */ 0x7EE6,
+    /* 0xCCD1 ?? */ 0x8404,
+    /* 0xCCD2 ?? */ 0x6843,
+    /* 0xCCD3 ?? */ 0x9003,
+    /* 0xCCD4 ?? */ 0x6DD8,
+    /* 0xCCD5 ?? */ 0x9676,
+    /* 0xCCD6 ?? */ 0x8BA8,
+    /* 0xCCD7 ?? */ 0x5957,
+    /* 0xCCD8 ?? */ 0x7279,
+    /* 0xCCD9 ?? */ 0x85E4,
+    /* 0xCCDA ?? */ 0x817E,
+    /* 0xCCDB ?? */ 0x75BC,
+    /* 0xCCDC ?? */ 0x8A8A,
+    /* 0xCCDD ?? */ 0x68AF,
+    /* 0xCCDE ?? */ 0x5254,
+    /* 0xCCDF ?? */ 0x8E22,
+    /* 0xCCE0 ?? */ 0x9511,
+    /* 0xCCE1 ?? */ 0x63D0,
+    /* 0xCCE2 ?? */ 0x9898,
+    /* 0xCCE3 ?? */ 0x8E44,
+    /* 0xCCE4 ?? */ 0x557C,
+    /* 0xCCE5 ?? */ 0x4F53,
+    /* 0xCCE6 ?? */ 0x66FF,
+    /* 0xCCE7 ?? */ 0x568F,
+    /* 0xCCE8 ?? */ 0x60D5,
+    /* 0xCCE9 ?? */ 0x6D95,
+    /* 0xCCEA ?? */ 0x5243,
+    /* 0xCCEB ?? */ 0x5C49,
+    /* 0xCCEC ?? */ 0x5929,
+    /* 0xCCED ?? */ 0x6DFB,
+    /* 0xCCEE ?? */ 0x586B,
+    /* 0xCCEF ?? */ 0x7530,
+    /* 0xCCF0 ?? */ 0x751C,
+    /* 0xCCF1 ?? */ 0x606C,
+    /* 0xCCF2 ?? */ 0x8214,
+    /* 0xCCF3 ?? */ 0x8146,
+    /* 0xCCF4 ?? */ 0x6311,
+    /* 0xCCF5 ?? */ 0x6761,
+    /* 0xCCF6 ?? */ 0x8FE2,
+    /* 0xCCF7 ?? */ 0x773A,
+    /* 0xCCF8 ?? */ 0x8DF3,
+    /* 0xCCF9 ?? */ 0x8D34,
+    /* 0xCCFA ?? */ 0x94C1,
+    /* 0xCCFB ?? */ 0x5E16,
+    /* 0xCCFC ?? */ 0x5385,
+    /* 0xCCFD ?? */ 0x542C,
+    /* 0xCCFE ?? */ 0x70C3,
+    /* 0xCDA1 ? */ 0x6C40,
+    /* 0xCDA2 ? */ 0x5EF7,
+    /* 0xCDA3 ? */ 0x505C,
+    /* 0xCDA4 ? */ 0x4EAD,
+    /* 0xCDA5 ? */ 0x5EAD,
+    /* 0xCDA6 ? */ 0x633A,
+    /* 0xCDA7 ? */ 0x8247,
+    /* 0xCDA8 ? */ 0x901A,
+    /* 0xCDA9 ? */ 0x6850,
+    /* 0xCDAA ? */ 0x916E,
+    /* 0xCDAB ? */ 0x77B3,
+    /* 0xCDAC ? */ 0x540C,
+    /* 0xCDAD ? */ 0x94DC,
+    /* 0xCDAE ? */ 0x5F64,
+    /* 0xCDAF ? */ 0x7AE5,
+    /* 0xCDB0 ? */ 0x6876,
+    /* 0xCDB1 ? */ 0x6345,
+    /* 0xCDB2 ? */ 0x7B52,
+    /* 0xCDB3 ? */ 0x7EDF,
+    /* 0xCDB4 ? */ 0x75DB,
+    /* 0xCDB5 ? */ 0x5077,
+    /* 0xCDB6 ? */ 0x6295,
+    /* 0xCDB7 ? */ 0x5934,
+    /* 0xCDB8 ? */ 0x900F,
+    /* 0xCDB9 ? */ 0x51F8,
+    /* 0xCDBA ? */ 0x79C3,
+    /* 0xCDBB ? */ 0x7A81,
+    /* 0xCDBC ? */ 0x56FE,
+    /* 0xCDBD ? */ 0x5F92,
+    /* 0xCDBE ? */ 0x9014,
+    /* 0xCDBF ? */ 0x6D82,
+    /* 0xCDC0 ?? */ 0x5C60,
+    /* 0xCDC1 ?? */ 0x571F,
+    /* 0xCDC2 ?? */ 0x5410,
+    /* 0xCDC3 ?? */ 0x5154,
+    /* 0xCDC4 ?? */ 0x6E4D,
+    /* 0xCDC5 ?? */ 0x56E2,
+    /* 0xCDC6 ?? */ 0x63A8,
+    /* 0xCDC7 ?? */ 0x9893,
+    /* 0xCDC8 ?? */ 0x817F,
+    /* 0xCDC9 ?? */ 0x8715,
+    /* 0xCDCA ?? */ 0x892A,
+    /* 0xCDCB ?? */ 0x9000,
+    /* 0xCDCC ?? */ 0x541E,
+    /* 0xCDCD ?? */ 0x5C6F,
+    /* 0xCDCE ?? */ 0x81C0,
+    /* 0xCDCF ?? */ 0x62D6,
+    /* 0xCDD0 ?? */ 0x6258,
+    /* 0xCDD1 ?? */ 0x8131,
+    /* 0xCDD2 ?? */ 0x9E35,
+    /* 0xCDD3 ?? */ 0x9640,
+    /* 0xCDD4 ?? */ 0x9A6E,
+    /* 0xCDD5 ?? */ 0x9A7C,
+    /* 0xCDD6 ?? */ 0x692D,
+    /* 0xCDD7 ?? */ 0x59A5,
+    /* 0xCDD8 ?? */ 0x62D3,
+    /* 0xCDD9 ?? */ 0x553E,
+    /* 0xCDDA ?? */ 0x6316,
+    /* 0xCDDB ?? */ 0x54C7,
+    /* 0xCDDC ?? */ 0x86D9,
+    /* 0xCDDD ?? */ 0x6D3C,
+    /* 0xCDDE ?? */ 0x5A03,
+    /* 0xCDDF ?? */ 0x74E6,
+    /* 0xCDE0 ?? */ 0x889C,
+    /* 0xCDE1 ?? */ 0x6B6A,
+    /* 0xCDE2 ?? */ 0x5916,
+    /* 0xCDE3 ?? */ 0x8C4C,
+    /* 0xCDE4 ?? */ 0x5F2F,
+    /* 0xCDE5 ?? */ 0x6E7E,
+    /* 0xCDE6 ?? */ 0x73A9,
+    /* 0xCDE7 ?? */ 0x987D,
+    /* 0xCDE8 ?? */ 0x4E38,
+    /* 0xCDE9 ?? */ 0x70F7,
+    /* 0xCDEA ?? */ 0x5B8C,
+    /* 0xCDEB ?? */ 0x7897,
+    /* 0xCDEC ?? */ 0x633D,
+    /* 0xCDED ?? */ 0x665A,
+    /* 0xCDEE ?? */ 0x7696,
+    /* 0xCDEF ?? */ 0x60CB,
+    /* 0xCDF0 ?? */ 0x5B9B,
+    /* 0xCDF1 ?? */ 0x5A49,
+    /* 0xCDF2 ?? */ 0x4E07,
+    /* 0xCDF3 ?? */ 0x8155,
+    /* 0xCDF4 ?? */ 0x6C6A,
+    /* 0xCDF5 ?? */ 0x738B,
+    /* 0xCDF6 ?? */ 0x4EA1,
+    /* 0xCDF7 ?? */ 0x6789,
+    /* 0xCDF8 ?? */ 0x7F51,
+    /* 0xCDF9 ?? */ 0x5F80,
+    /* 0xCDFA ?? */ 0x65FA,
+    /* 0xCDFB ?? */ 0x671B,
+    /* 0xCDFC ?? */ 0x5FD8,
+    /* 0xCDFD ?? */ 0x5984,
+    /* 0xCDFE ?? */ 0x5A01,
+    /* 0xCEA1 �� */ 0x5DCD,
+    /* 0xCEA2 ? */ 0x5FAE,
+    /* 0xCEA3 �� */ 0x5371,
+    /* 0xCEA4 �� */ 0x97E6,
+    /* 0xCEA5 �� */ 0x8FDD,
+    /* 0xCEA6 �� */ 0x6845,
+    /* 0xCEA7 �� */ 0x56F4,
+    /* 0xCEA8 �� */ 0x552F,
+    /* 0xCEA9 �� */ 0x60DF,
+    /* 0xCEAA ? */ 0x4E3A,
+    /* 0xCEAB ? */ 0x6F4D,
+    /* 0xCEAC ? */ 0x7EF4,
+    /* 0xCEAD ? */ 0x82C7,
+    /* 0xCEAE ? */ 0x840E,
+    /* 0xCEAF ? */ 0x59D4,
+    /* 0xCEB0 ? */ 0x4F1F,
+    /* 0xCEB1 �� */ 0x4F2A,
+    /* 0xCEB2 �� */ 0x5C3E,
+    /* 0xCEB3 �� */ 0x7EAC,
+    /* 0xCEB4 �� */ 0x672A,
+    /* 0xCEB5 �� */ 0x851A,
+    /* 0xCEB6 �� */ 0x5473,
+    /* 0xCEB7 �� */ 0x754F,
+    /* 0xCEB8 �� */ 0x80C3,
+    /* 0xCEB9 �� */ 0x5582,
+    /* 0xCEBA �� */ 0x9B4F,
+    /* 0xCEBB �� */ 0x4F4D,
+    /* 0xCEBC �� */ 0x6E2D,
+    /* 0xCEBD �� */ 0x8C13,
+    /* 0xCEBE �� */ 0x5C09,
+    /* 0xCEBF �� */ 0x6170,
+    /* 0xCEC0 ?? */ 0x536B,
+    /* 0xCEC1 ?? */ 0x761F,
+    /* 0xCEC2 ?? */ 0x6E29,
+    /* 0xCEC3 ?? */ 0x868A,
+    /* 0xCEC4 ?? */ 0x6587,
+    /* 0xCEC5 ?? */ 0x95FB,
+    /* 0xCEC6 ?? */ 0x7EB9,
+    /* 0xCEC7 ?? */ 0x543B,
+    /* 0xCEC8 ?? */ 0x7A33,
+    /* 0xCEC9 ?? */ 0x7D0A,
+    /* 0xCECA ?? */ 0x95EE,
+    /* 0xCECB ?? */ 0x55E1,
+    /* 0xCECC ?? */ 0x7FC1,
+    /* 0xCECD ?? */ 0x74EE,
+    /* 0xCECE ?? */ 0x631D,
+    /* 0xCECF ?? */ 0x8717,
+    /* 0xCED0 ?? */ 0x6DA1,
+    /* 0xCED1 ?? */ 0x7A9D,
+    /* 0xCED2 ?? */ 0x6211,
+    /* 0xCED3 ?? */ 0x65A1,
+    /* 0xCED4 ?? */ 0x5367,
+    /* 0xCED5 ?? */ 0x63E1,
+    /* 0xCED6 ?? */ 0x6C83,
+    /* 0xCED7 ?? */ 0x5DEB,
+    /* 0xCED8 ?? */ 0x545C,
+    /* 0xCED9 ?? */ 0x94A8,
+    /* 0xCEDA ?? */ 0x4E4C,
+    /* 0xCEDB ?? */ 0x6C61,
+    /* 0xCEDC ?? */ 0x8BEC,
+    /* 0xCEDD ?? */ 0x5C4B,
+    /* 0xCEDE ?? */ 0x65E0,
+    /* 0xCEDF ?? */ 0x829C,
+    /* 0xCEE0 ?? */ 0x68A7,
+    /* 0xCEE1 ?? */ 0x543E,
+    /* 0xCEE2 ?? */ 0x5434,
+    /* 0xCEE3 ?? */ 0x6BCB,
+    /* 0xCEE4 ?? */ 0x6B66,
+    /* 0xCEE5 ?? */ 0x4E94,
+    /* 0xCEE6 ?? */ 0x6342,
+    /* 0xCEE7 ?? */ 0x5348,
+    /* 0xCEE8 ?? */ 0x821E,
+    /* 0xCEE9 ?? */ 0x4F0D,
+    /* 0xCEEA ?? */ 0x4FAE,
+    /* 0xCEEB ?? */ 0x575E,
+    /* 0xCEEC ?? */ 0x620A,
+    /* 0xCEED ?? */ 0x96FE,
+    /* 0xCEEE ?? */ 0x6664,
+    /* 0xCEEF ?? */ 0x7269,
+    /* 0xCEF0 ?? */ 0x52FF,
+    /* 0xCEF1 ?? */ 0x52A1,
+    /* 0xCEF2 ?? */ 0x609F,
+    /* 0xCEF3 ?? */ 0x8BEF,
+    /* 0xCEF4 ?? */ 0x6614,
+    /* 0xCEF5 ?? */ 0x7199,
+    /* 0xCEF6 ?? */ 0x6790,
+    /* 0xCEF7 ?? */ 0x897F,
+    /* 0xCEF8 ?? */ 0x7852,
+    /* 0xCEF9 ?? */ 0x77FD,
+    /* 0xCEFA ?? */ 0x6670,
+    /* 0xCEFB ?? */ 0x563B,
+    /* 0xCEFC ?? */ 0x5438,
+    /* 0xCEFD ?? */ 0x9521,
+    /* 0xCEFE ?? */ 0x727A,
+    /* 0xCFA1 ? */ 0x7A00,
+    /* 0xCFA2 ? */ 0x606F,
+    /* 0xCFA3 ? */ 0x5E0C,
+    /* 0xCFA4 ? */ 0x6089,
+    /* 0xCFA5 ? */ 0x819D,
+    /* 0xCFA6 ? */ 0x5915,
+    /* 0xCFA7 ? */ 0x60DC,
+    /* 0xCFA8 ? */ 0x7184,
+    /* 0xCFA9 ? */ 0x70EF,
+    /* 0xCFAA ? */ 0x6EAA,
+    /* 0xCFAB ? */ 0x6C50,
+    /* 0xCFAC ? */ 0x7280,
+    /* 0xCFAD ? */ 0x6A84,
+    /* 0xCFAE ? */ 0x88AD,
+    /* 0xCFAF ? */ 0x5E2D,
+    /* 0xCFB0 ? */ 0x4E60,
+    /* 0xCFB1 ? */ 0x5AB3,
+    /* 0xCFB2 ? */ 0x559C,
+    /* 0xCFB3 ? */ 0x94E3,
+    /* 0xCFB4 ? */ 0x6D17,
+    /* 0xCFB5 ? */ 0x7CFB,
+    /* 0xCFB6 ? */ 0x9699,
+    /* 0xCFB7 ? */ 0x620F,
+    /* 0xCFB8 ? */ 0x7EC6,
+    /* 0xCFB9 ? */ 0x778E,
+    /* 0xCFBA ? */ 0x867E,
+    /* 0xCFBB ? */ 0x5323,
+    /* 0xCFBC ? */ 0x971E,
+    /* 0xCFBD ? */ 0x8F96,
+    /* 0xCFBE ? */ 0x6687,
+    /* 0xCFBF ? */ 0x5CE1,
+    /* 0xCFC0 ?? */ 0x4FA0,
+    /* 0xCFC1 ?? */ 0x72ED,
+    /* 0xCFC2 ?? */ 0x4E0B,
+    /* 0xCFC3 ?? */ 0x53A6,
+    /* 0xCFC4 ?? */ 0x590F,
+    /* 0xCFC5 ?? */ 0x5413,
+    /* 0xCFC6 ?? */ 0x6380,
+    /* 0xCFC7 ?? */ 0x9528,
+    /* 0xCFC8 ?? */ 0x5148,
+    /* 0xCFC9 ?? */ 0x4ED9,
+    /* 0xCFCA ?? */ 0x9C9C,
+    /* 0xCFCB ?? */ 0x7EA4,
+    /* 0xCFCC ?? */ 0x54B8,
+    /* 0xCFCD ?? */ 0x8D24,
+    /* 0xCFCE ?? */ 0x8854,
+    /* 0xCFCF ?? */ 0x8237,
+    /* 0xCFD0 ?? */ 0x95F2,
+    /* 0xCFD1 ?? */ 0x6D8E,
+    /* 0xCFD2 ?? */ 0x5F26,
+    /* 0xCFD3 ?? */ 0x5ACC,
+    /* 0xCFD4 ?? */ 0x663E,
+    /* 0xCFD5 ?? */ 0x9669,
+    /* 0xCFD6 ?? */ 0x73B0,
+    /* 0xCFD7 ?? */ 0x732E,
+    /* 0xCFD8 ?? */ 0x53BF,
+    /* 0xCFD9 ?? */ 0x817A,
+    /* 0xCFDA ?? */ 0x9985,
+    /* 0xCFDB ?? */ 0x7FA1,
+    /* 0xCFDC ?? */ 0x5BAA,
+    /* 0xCFDD ?? */ 0x9677,
+    /* 0xCFDE ?? */ 0x9650,
+    /* 0xCFDF ?? */ 0x7EBF,
+    /* 0xCFE0 ?? */ 0x76F8,
+    /* 0xCFE1 ?? */ 0x53A2,
+    /* 0xCFE2 ?? */ 0x9576,
+    /* 0xCFE3 ?? */ 0x9999,
+    /* 0xCFE4 ?? */ 0x7BB1,
+    /* 0xCFE5 ?? */ 0x8944,
+    /* 0xCFE6 ?? */ 0x6E58,
+    /* 0xCFE7 ?? */ 0x4E61,
+    /* 0xCFE8 ?? */ 0x7FD4,
+    /* 0xCFE9 ?? */ 0x7965,
+    /* 0xCFEA ?? */ 0x8BE6,
+    /* 0xCFEB ?? */ 0x60F3,
+    /* 0xCFEC ?? */ 0x54CD,
+    /* 0xCFED ?? */ 0x4EAB,
+    /* 0xCFEE ?? */ 0x9879,
+    /* 0xCFEF ?? */ 0x5DF7,
+    /* 0xCFF0 ?? */ 0x6A61,
+    /* 0xCFF1 ?? */ 0x50CF,
+    /* 0xCFF2 ?? */ 0x5411,
+    /* 0xCFF3 ?? */ 0x8C61,
+    /* 0xCFF4 ?? */ 0x8427,
+    /* 0xCFF5 ?? */ 0x785D,
+    /* 0xCFF6 ?? */ 0x9704,
+    /* 0xCFF7 ?? */ 0x524A,
+    /* 0xCFF8 ?? */ 0x54EE,
+    /* 0xCFF9 ?? */ 0x56A3,
+    /* 0xCFFA ?? */ 0x9500,
+    /* 0xCFFB ?? */ 0x6D88,
+    /* 0xCFFC ?? */ 0x5BB5,
+    /* 0xCFFD ?? */ 0x6DC6,
+    /* 0xCFFE ?? */ 0x6653,
+    /* 0xD0A1 �� */ 0x5C0F,
+    /* 0xD0A2 �� */ 0x5B5D,
+    /* 0xD0A3 �� */ 0x6821,
+    /* 0xD0A4 �� */ 0x8096,
+    /* 0xD0A5 �� */ 0x5578,
+    /* 0xD0A6 �� */ 0x7B11,
+    /* 0xD0A7 �� */ 0x6548,
+    /* 0xD0A8 �� */ 0x6954,
+    /* 0xD0A9 �� */ 0x4E9B,
+    /* 0xD0AA �� */ 0x6B47,
+    /* 0xD0AB �� */ 0x874E,
+    /* 0xD0AC �� */ 0x978B,
+    /* 0xD0AD �� */ 0x534F,
+    /* 0xD0AE �� */ 0x631F,
+    /* 0xD0AF �� */ 0x643A,
+    /* 0xD0B0 �� */ 0x90AA,
+    /* 0xD0B1 �� */ 0x659C,
+    /* 0xD0B2 �� */ 0x80C1,
+    /* 0xD0B3 �� */ 0x8C10,
+    /* 0xD0B4 �� */ 0x5199,
+    /* 0xD0B5 �� */ 0x68B0,
+    /* 0xD0B6 �� */ 0x5378,
+    /* 0xD0B7 �� */ 0x87F9,
+    /* 0xD0B8 �� */ 0x61C8,
+    /* 0xD0B9 �� */ 0x6CC4,
+    /* 0xD0BA �� */ 0x6CFB,
+    /* 0xD0BB �� */ 0x8C22,
+    /* 0xD0BC �� */ 0x5C51,
+    /* 0xD0BD �� */ 0x85AA,
+    /* 0xD0BE �� */ 0x82AF,
+    /* 0xD0BF �� */ 0x950C,
+    /* 0xD0C0 ?? */ 0x6B23,
+    /* 0xD0C1 ?? */ 0x8F9B,
+    /* 0xD0C2 ?? */ 0x65B0,
+    /* 0xD0C3 ?? */ 0x5FFB,
+    /* 0xD0C4 ?? */ 0x5FC3,
+    /* 0xD0C5 ?? */ 0x4FE1,
+    /* 0xD0C6 ?? */ 0x8845,
+    /* 0xD0C7 ?? */ 0x661F,
+    /* 0xD0C8 ?? */ 0x8165,
+    /* 0xD0C9 ?? */ 0x7329,
+    /* 0xD0CA ?? */ 0x60FA,
+    /* 0xD0CB ?? */ 0x5174,
+    /* 0xD0CC ?? */ 0x5211,
+    /* 0xD0CD ?? */ 0x578B,
+    /* 0xD0CE ?? */ 0x5F62,
+    /* 0xD0CF ?? */ 0x90A2,
+    /* 0xD0D0 ?? */ 0x884C,
+    /* 0xD0D1 ?? */ 0x9192,
+    /* 0xD0D2 ?? */ 0x5E78,
+    /* 0xD0D3 ?? */ 0x674F,
+    /* 0xD0D4 ?? */ 0x6027,
+    /* 0xD0D5 ?? */ 0x59D3,
+    /* 0xD0D6 ?? */ 0x5144,
+    /* 0xD0D7 ?? */ 0x51F6,
+    /* 0xD0D8 ?? */ 0x80F8,
+    /* 0xD0D9 ?? */ 0x5308,
+    /* 0xD0DA ?? */ 0x6C79,
+    /* 0xD0DB ?? */ 0x96C4,
+    /* 0xD0DC ?? */ 0x718A,
+    /* 0xD0DD ?? */ 0x4F11,
+    /* 0xD0DE ?? */ 0x4FEE,
+    /* 0xD0DF ?? */ 0x7F9E,
+    /* 0xD0E0 ?? */ 0x673D,
+    /* 0xD0E1 ?? */ 0x55C5,
+    /* 0xD0E2 ?? */ 0x9508,
+    /* 0xD0E3 ?? */ 0x79C0,
+    /* 0xD0E4 ?? */ 0x8896,
+    /* 0xD0E5 ?? */ 0x7EE3,
+    /* 0xD0E6 ?? */ 0x589F,
+    /* 0xD0E7 ?? */ 0x620C,
+    /* 0xD0E8 ?? */ 0x9700,
+    /* 0xD0E9 ?? */ 0x865A,
+    /* 0xD0EA ?? */ 0x5618,
+    /* 0xD0EB ?? */ 0x987B,
+    /* 0xD0EC ?? */ 0x5F90,
+    /* 0xD0ED ?? */ 0x8BB8,
+    /* 0xD0EE ?? */ 0x84C4,
+    /* 0xD0EF ?? */ 0x9157,
+    /* 0xD0F0 ?? */ 0x53D9,
+    /* 0xD0F1 ?? */ 0x65ED,
+    /* 0xD0F2 ?? */ 0x5E8F,
+    /* 0xD0F3 ?? */ 0x755C,
+    /* 0xD0F4 ?? */ 0x6064,
+    /* 0xD0F5 ?? */ 0x7D6E,
+    /* 0xD0F6 ?? */ 0x5A7F,
+    /* 0xD0F7 ?? */ 0x7EEA,
+    /* 0xD0F8 ?? */ 0x7EED,
+    /* 0xD0F9 ?? */ 0x8F69,
+    /* 0xD0FA ?? */ 0x55A7,
+    /* 0xD0FB ?? */ 0x5BA3,
+    /* 0xD0FC ?? */ 0x60AC,
+    /* 0xD0FD ?? */ 0x65CB,
+    /* 0xD0FE ?? */ 0x7384,
+    /* 0xD1A1 ? */ 0x9009,
+    /* 0xD1A2 ? */ 0x7663,
+    /* 0xD1A3 ? */ 0x7729,
+    /* 0xD1A4 ? */ 0x7EDA,
+    /* 0xD1A5 ? */ 0x9774,
+    /* 0xD1A6 ? */ 0x859B,
+    /* 0xD1A7 ? */ 0x5B66,
+    /* 0xD1A8 ? */ 0x7A74,
+    /* 0xD1A9 ? */ 0x96EA,
+    /* 0xD1AA ? */ 0x8840,
+    /* 0xD1AB ? */ 0x52CB,
+    /* 0xD1AC ? */ 0x718F,
+    /* 0xD1AD ? */ 0x5FAA,
+    /* 0xD1AE ? */ 0x65EC,
+    /* 0xD1AF ? */ 0x8BE2,
+    /* 0xD1B0 ? */ 0x5BFB,
+    /* 0xD1B1 ? */ 0x9A6F,
+    /* 0xD1B2 ? */ 0x5DE1,
+    /* 0xD1B3 ? */ 0x6B89,
+    /* 0xD1B4 ? */ 0x6C5B,
+    /* 0xD1B5 ? */ 0x8BAD,
+    /* 0xD1B6 ? */ 0x8BAF,
+    /* 0xD1B7 ? */ 0x900A,
+    /* 0xD1B8 ? */ 0x8FC5,
+    /* 0xD1B9 ? */ 0x538B,
+    /* 0xD1BA ? */ 0x62BC,
+    /* 0xD1BB ? */ 0x9E26,
+    /* 0xD1BC ? */ 0x9E2D,
+    /* 0xD1BD ? */ 0x5440,
+    /* 0xD1BE ? */ 0x4E2B,
+    /* 0xD1BF ? */ 0x82BD,
+    /* 0xD1C0 ?? */ 0x7259,
+    /* 0xD1C1 ?? */ 0x869C,
+    /* 0xD1C2 ?? */ 0x5D16,
+    /* 0xD1C3 ?? */ 0x8859,
+    /* 0xD1C4 ?? */ 0x6DAF,
+    /* 0xD1C5 ?? */ 0x96C5,
+    /* 0xD1C6 ?? */ 0x54D1,
+    /* 0xD1C7 ?? */ 0x4E9A,
+    /* 0xD1C8 ?? */ 0x8BB6,
+    /* 0xD1C9 ?? */ 0x7109,
+    /* 0xD1CA ?? */ 0x54BD,
+    /* 0xD1CB ?? */ 0x9609,
+    /* 0xD1CC ?? */ 0x70DF,
+    /* 0xD1CD ?? */ 0x6DF9,
+    /* 0xD1CE ?? */ 0x76D0,
+    /* 0xD1CF ?? */ 0x4E25,
+    /* 0xD1D0 ?? */ 0x7814,
+    /* 0xD1D1 ?? */ 0x8712,
+    /* 0xD1D2 ?? */ 0x5CA9,
+    /* 0xD1D3 ?? */ 0x5EF6,
+    /* 0xD1D4 ?? */ 0x8A00,
+    /* 0xD1D5 ?? */ 0x989C,
+    /* 0xD1D6 ?? */ 0x960E,
+    /* 0xD1D7 ?? */ 0x708E,
+    /* 0xD1D8 ?? */ 0x6CBF,
+    /* 0xD1D9 ?? */ 0x5944,
+    /* 0xD1DA ?? */ 0x63A9,
+    /* 0xD1DB ?? */ 0x773C,
+    /* 0xD1DC ?? */ 0x884D,
+    /* 0xD1DD ?? */ 0x6F14,
+    /* 0xD1DE ?? */ 0x8273,
+    /* 0xD1DF ?? */ 0x5830,
+    /* 0xD1E0 ?? */ 0x71D5,
+    /* 0xD1E1 ?? */ 0x538C,
+    /* 0xD1E2 ?? */ 0x781A,
+    /* 0xD1E3 ?? */ 0x96C1,
+    /* 0xD1E4 ?? */ 0x5501,
+    /* 0xD1E5 ?? */ 0x5F66,
+    /* 0xD1E6 ?? */ 0x7130,
+    /* 0xD1E7 ?? */ 0x5BB4,
+    /* 0xD1E8 ?? */ 0x8C1A,
+    /* 0xD1E9 ?? */ 0x9A8C,
+    /* 0xD1EA ?? */ 0x6B83,
+    /* 0xD1EB ?? */ 0x592E,
+    /* 0xD1EC ?? */ 0x9E2F,
+    /* 0xD1ED ?? */ 0x79E7,
+    /* 0xD1EE ?? */ 0x6768,
+    /* 0xD1EF ?? */ 0x626C,
+    /* 0xD1F0 ?? */ 0x4F6F,
+    /* 0xD1F1 ?? */ 0x75A1,
+    /* 0xD1F2 ?? */ 0x7F8A,
+    /* 0xD1F3 ?? */ 0x6D0B,
+    /* 0xD1F4 ?? */ 0x9633,
+    /* 0xD1F5 ?? */ 0x6C27,
+    /* 0xD1F6 ?? */ 0x4EF0,
+    /* 0xD1F7 ?? */ 0x75D2,
+    /* 0xD1F8 ?? */ 0x517B,
+    /* 0xD1F9 ?? */ 0x6837,
+    /* 0xD1FA ?? */ 0x6F3E,
+    /* 0xD1FB ?? */ 0x9080,
+    /* 0xD1FC ?? */ 0x8170,
+    /* 0xD1FD ?? */ 0x5996,
+    /* 0xD1FE ?? */ 0x7476,
+    /* 0xD2A1 ? */ 0x6447,
+    /* 0xD2A2 ? */ 0x5C27,
+    /* 0xD2A3 ? */ 0x9065,
+    /* 0xD2A4 ? */ 0x7A91,
+    /* 0xD2A5 ? */ 0x8C23,
+    /* 0xD2A6 ? */ 0x59DA,
+    /* 0xD2A7 ? */ 0x54AC,
+    /* 0xD2A8 ? */ 0x8200,
+    /* 0xD2A9 ? */ 0x836F,
+    /* 0xD2AA ? */ 0x8981,
+    /* 0xD2AB ? */ 0x8000,
+    /* 0xD2AC ? */ 0x6930,
+    /* 0xD2AD ? */ 0x564E,
+    /* 0xD2AE ? */ 0x8036,
+    /* 0xD2AF ? */ 0x7237,
+    /* 0xD2B0 ? */ 0x91CE,
+    /* 0xD2B1 ? */ 0x51B6,
+    /* 0xD2B2 ? */ 0x4E5F,
+    /* 0xD2B3 ? */ 0x9875,
+    /* 0xD2B4 ? */ 0x6396,
+    /* 0xD2B5 ? */ 0x4E1A,
+    /* 0xD2B6 ? */ 0x53F6,
+    /* 0xD2B7 ? */ 0x66F3,
+    /* 0xD2B8 ? */ 0x814B,
+    /* 0xD2B9 ? */ 0x591C,
+    /* 0xD2BA ? */ 0x6DB2,
+    /* 0xD2BB ? */ 0x4E00,
+    /* 0xD2BC ? */ 0x58F9,
+    /* 0xD2BD ? */ 0x533B,
+    /* 0xD2BE ? */ 0x63D6,
+    /* 0xD2BF ? */ 0x94F1,
+    /* 0xD2C0 ?? */ 0x4F9D,
+    /* 0xD2C1 ?? */ 0x4F0A,
+    /* 0xD2C2 ?? */ 0x8863,
+    /* 0xD2C3 ?? */ 0x9890,
+    /* 0xD2C4 ?? */ 0x5937,
+    /* 0xD2C5 ?? */ 0x9057,
+    /* 0xD2C6 ?? */ 0x79FB,
+    /* 0xD2C7 ?? */ 0x4EEA,
+    /* 0xD2C8 ?? */ 0x80F0,
+    /* 0xD2C9 ?? */ 0x7591,
+    /* 0xD2CA ?? */ 0x6C82,
+    /* 0xD2CB ?? */ 0x5B9C,
+    /* 0xD2CC ?? */ 0x59E8,
+    /* 0xD2CD ?? */ 0x5F5D,
+    /* 0xD2CE ?? */ 0x6905,
+    /* 0xD2CF ?? */ 0x8681,
+    /* 0xD2D0 ?? */ 0x501A,
+    /* 0xD2D1 ?? */ 0x5DF2,
+    /* 0xD2D2 ?? */ 0x4E59,
+    /* 0xD2D3 ?? */ 0x77E3,
+    /* 0xD2D4 ?? */ 0x4EE5,
+    /* 0xD2D5 ?? */ 0x827A,
+    /* 0xD2D6 ?? */ 0x6291,
+    /* 0xD2D7 ?? */ 0x6613,
+    /* 0xD2D8 ?? */ 0x9091,
+    /* 0xD2D9 ?? */ 0x5C79,
+    /* 0xD2DA ?? */ 0x4EBF,
+    /* 0xD2DB ?? */ 0x5F79,
+    /* 0xD2DC ?? */ 0x81C6,
+    /* 0xD2DD ?? */ 0x9038,
+    /* 0xD2DE ?? */ 0x8084,
+    /* 0xD2DF ?? */ 0x75AB,
+    /* 0xD2E0 ?? */ 0x4EA6,
+    /* 0xD2E1 ?? */ 0x88D4,
+    /* 0xD2E2 ?? */ 0x610F,
+    /* 0xD2E3 ?? */ 0x6BC5,
+    /* 0xD2E4 ?? */ 0x5FC6,
+    /* 0xD2E5 ?? */ 0x4E49,
+    /* 0xD2E6 ?? */ 0x76CA,
+    /* 0xD2E7 ?? */ 0x6EA2,
+    /* 0xD2E8 ?? */ 0x8BE3,
+    /* 0xD2E9 ?? */ 0x8BAE,
+    /* 0xD2EA ?? */ 0x8C0A,
+    /* 0xD2EB ?? */ 0x8BD1,
+    /* 0xD2EC ?? */ 0x5F02,
+    /* 0xD2ED ?? */ 0x7FFC,
+    /* 0xD2EE ?? */ 0x7FCC,
+    /* 0xD2EF ?? */ 0x7ECE,
+    /* 0xD2F0 ?? */ 0x8335,
+    /* 0xD2F1 ?? */ 0x836B,
+    /* 0xD2F2 ?? */ 0x56E0,
+    /* 0xD2F3 ?? */ 0x6BB7,
+    /* 0xD2F4 ?? */ 0x97F3,
+    /* 0xD2F5 ?? */ 0x9634,
+    /* 0xD2F6 ?? */ 0x59FB,
+    /* 0xD2F7 ?? */ 0x541F,
+    /* 0xD2F8 ?? */ 0x94F6,
+    /* 0xD2F9 ?? */ 0x6DEB,
+    /* 0xD2FA ?? */ 0x5BC5,
+    /* 0xD2FB ?? */ 0x996E,
+    /* 0xD2FC ?? */ 0x5C39,
+    /* 0xD2FD ?? */ 0x5F15,
+    /* 0xD2FE ?? */ 0x9690,
+    /* 0xD3A1 ? */ 0x5370,
+    /* 0xD3A2 ? */ 0x82F1,
+    /* 0xD3A3 ? */ 0x6A31,
+    /* 0xD3A4 ? */ 0x5A74,
+    /* 0xD3A5 ? */ 0x9E70,
+    /* 0xD3A6 ? */ 0x5E94,
+    /* 0xD3A7 ? */ 0x7F28,
+    /* 0xD3A8 ? */ 0x83B9,
+    /* 0xD3A9 ? */ 0x8424,
+    /* 0xD3AA ? */ 0x8425,
+    /* 0xD3AB ? */ 0x8367,
+    /* 0xD3AC ? */ 0x8747,
+    /* 0xD3AD ? */ 0x8FCE,
+    /* 0xD3AE ? */ 0x8D62,
+    /* 0xD3AF ? */ 0x76C8,
+    /* 0xD3B0 ? */ 0x5F71,
+    /* 0xD3B1 ? */ 0x9896,
+    /* 0xD3B2 ? */ 0x786C,
+    /* 0xD3B3 ? */ 0x6620,
+    /* 0xD3B4 ? */ 0x54DF,
+    /* 0xD3B5 ? */ 0x62E5,
+    /* 0xD3B6 ? */ 0x4F63,
+    /* 0xD3B7 ? */ 0x81C3,
+    /* 0xD3B8 ? */ 0x75C8,
+    /* 0xD3B9 ? */ 0x5EB8,
+    /* 0xD3BA ? */ 0x96CD,
+    /* 0xD3BB ? */ 0x8E0A,
+    /* 0xD3BC ? */ 0x86F9,
+    /* 0xD3BD ? */ 0x548F,
+    /* 0xD3BE ? */ 0x6CF3,
+    /* 0xD3BF ? */ 0x6D8C,
+    /* 0xD3C0 ?? */ 0x6C38,
+    /* 0xD3C1 ?? */ 0x607F,
+    /* 0xD3C2 ?? */ 0x52C7,
+    /* 0xD3C3 ?? */ 0x7528,
+    /* 0xD3C4 ?? */ 0x5E7D,
+    /* 0xD3C5 ?? */ 0x4F18,
+    /* 0xD3C6 ?? */ 0x60A0,
+    /* 0xD3C7 ?? */ 0x5FE7,
+    /* 0xD3C8 ?? */ 0x5C24,
+    /* 0xD3C9 ?? */ 0x7531,
+    /* 0xD3CA ?? */ 0x90AE,
+    /* 0xD3CB ?? */ 0x94C0,
+    /* 0xD3CC ?? */ 0x72B9,
+    /* 0xD3CD ?? */ 0x6CB9,
+    /* 0xD3CE ?? */ 0x6E38,
+    /* 0xD3CF ?? */ 0x9149,
+    /* 0xD3D0 ?? */ 0x6709,
+    /* 0xD3D1 ?? */ 0x53CB,
+    /* 0xD3D2 ?? */ 0x53F3,
+    /* 0xD3D3 ?? */ 0x4F51,
+    /* 0xD3D4 ?? */ 0x91C9,
+    /* 0xD3D5 ?? */ 0x8BF1,
+    /* 0xD3D6 ?? */ 0x53C8,
+    /* 0xD3D7 ?? */ 0x5E7C,
+    /* 0xD3D8 ?? */ 0x8FC2,
+    /* 0xD3D9 ?? */ 0x6DE4,
+    /* 0xD3DA ?? */ 0x4E8E,
+    /* 0xD3DB ?? */ 0x76C2,
+    /* 0xD3DC ?? */ 0x6986,
+    /* 0xD3DD ?? */ 0x865E,
+    /* 0xD3DE ?? */ 0x611A,
+    /* 0xD3DF ?? */ 0x8206,
+    /* 0xD3E0 ?? */ 0x4F59,
+    /* 0xD3E1 ?? */ 0x4FDE,
+    /* 0xD3E2 ?? */ 0x903E,
+    /* 0xD3E3 ?? */ 0x9C7C,
+    /* 0xD3E4 ?? */ 0x6109,
+    /* 0xD3E5 ?? */ 0x6E1D,
+    /* 0xD3E6 ?? */ 0x6E14,
+    /* 0xD3E7 ?? */ 0x9685,
+    /* 0xD3E8 ?? */ 0x4E88,
+    /* 0xD3E9 ?? */ 0x5A31,
+    /* 0xD3EA ?? */ 0x96E8,
+    /* 0xD3EB ?? */ 0x4E0E,
+    /* 0xD3EC ?? */ 0x5C7F,
+    /* 0xD3ED ?? */ 0x79B9,
+    /* 0xD3EE ?? */ 0x5B87,
+    /* 0xD3EF ?? */ 0x8BED,
+    /* 0xD3F0 ?? */ 0x7FBD,
+    /* 0xD3F1 ?? */ 0x7389,
+    /* 0xD3F2 ?? */ 0x57DF,
+    /* 0xD3F3 ?? */ 0x828B,
+    /* 0xD3F4 ?? */ 0x90C1,
+    /* 0xD3F5 ?? */ 0x5401,
+    /* 0xD3F6 ?? */ 0x9047,
+    /* 0xD3F7 ?? */ 0x55BB,
+    /* 0xD3F8 ?? */ 0x5CEA,
+    /* 0xD3F9 ?? */ 0x5FA1,
+    /* 0xD3FA ?? */ 0x6108,
+    /* 0xD3FB ?? */ 0x6B32,
+    /* 0xD3FC ?? */ 0x72F1,
+    /* 0xD3FD ?? */ 0x80B2,
+    /* 0xD3FE ?? */ 0x8A89,
+    /* 0xD4A1 ? */ 0x6D74,
+    /* 0xD4A2 ? */ 0x5BD3,
+    /* 0xD4A3 ? */ 0x88D5,
+    /* 0xD4A4 ? */ 0x9884,
+    /* 0xD4A5 ? */ 0x8C6B,
+    /* 0xD4A6 ? */ 0x9A6D,
+    /* 0xD4A7 ? */ 0x9E33,
+    /* 0xD4A8 ? */ 0x6E0A,
+    /* 0xD4A9 ? */ 0x51A4,
+    /* 0xD4AA ? */ 0x5143,
+    /* 0xD4AB ? */ 0x57A3,
+    /* 0xD4AC ? */ 0x8881,
+    /* 0xD4AD ? */ 0x539F,
+    /* 0xD4AE ? */ 0x63F4,
+    /* 0xD4AF ? */ 0x8F95,
+    /* 0xD4B0 ? */ 0x56ED,
+    /* 0xD4B1 ? */ 0x5458,
+    /* 0xD4B2 ? */ 0x5706,
+    /* 0xD4B3 ? */ 0x733F,
+    /* 0xD4B4 ? */ 0x6E90,
+    /* 0xD4B5 ? */ 0x7F18,
+    /* 0xD4B6 ? */ 0x8FDC,
+    /* 0xD4B7 ? */ 0x82D1,
+    /* 0xD4B8 ? */ 0x613F,
+    /* 0xD4B9 ? */ 0x6028,
+    /* 0xD4BA ? */ 0x9662,
+    /* 0xD4BB ? */ 0x66F0,
+    /* 0xD4BC ? */ 0x7EA6,
+    /* 0xD4BD ? */ 0x8D8A,
+    /* 0xD4BE ? */ 0x8DC3,
+    /* 0xD4BF ? */ 0x94A5,
+    /* 0xD4C0 ?? */ 0x5CB3,
+    /* 0xD4C1 ?? */ 0x7CA4,
+    /* 0xD4C2 ?? */ 0x6708,
+    /* 0xD4C3 ?? */ 0x60A6,
+    /* 0xD4C4 ?? */ 0x9605,
+    /* 0xD4C5 ?? */ 0x8018,
+    /* 0xD4C6 ?? */ 0x4E91,
+    /* 0xD4C7 ?? */ 0x90E7,
+    /* 0xD4C8 ?? */ 0x5300,
+    /* 0xD4C9 ?? */ 0x9668,
+    /* 0xD4CA ?? */ 0x5141,
+    /* 0xD4CB ?? */ 0x8FD0,
+    /* 0xD4CC ?? */ 0x8574,
+    /* 0xD4CD ?? */ 0x915D,
+    /* 0xD4CE ?? */ 0x6655,
+    /* 0xD4CF ?? */ 0x97F5,
+    /* 0xD4D0 ?? */ 0x5B55,
+    /* 0xD4D1 ?? */ 0x531D,
+    /* 0xD4D2 ?? */ 0x7838,
+    /* 0xD4D3 ?? */ 0x6742,
+    /* 0xD4D4 ?? */ 0x683D,
+    /* 0xD4D5 ?? */ 0x54C9,
+    /* 0xD4D6 ?? */ 0x707E,
+    /* 0xD4D7 ?? */ 0x5BB0,
+    /* 0xD4D8 ?? */ 0x8F7D,
+    /* 0xD4D9 ?? */ 0x518D,
+    /* 0xD4DA ?? */ 0x5728,
+    /* 0xD4DB ?? */ 0x54B1,
+    /* 0xD4DC ?? */ 0x6512,
+    /* 0xD4DD ?? */ 0x6682,
+    /* 0xD4DE ?? */ 0x8D5E,
+    /* 0xD4DF ?? */ 0x8D43,
+    /* 0xD4E0 ?? */ 0x810F,
+    /* 0xD4E1 ?? */ 0x846C,
+    /* 0xD4E2 ?? */ 0x906D,
+    /* 0xD4E3 ?? */ 0x7CDF,
+    /* 0xD4E4 ?? */ 0x51FF,
+    /* 0xD4E5 ?? */ 0x85FB,
+    /* 0xD4E6 ?? */ 0x67A3,
+    /* 0xD4E7 ?? */ 0x65E9,
+    /* 0xD4E8 ?? */ 0x6FA1,
+    /* 0xD4E9 ?? */ 0x86A4,
+    /* 0xD4EA ?? */ 0x8E81,
+    /* 0xD4EB ?? */ 0x566A,
+    /* 0xD4EC ?? */ 0x9020,
+    /* 0xD4ED ?? */ 0x7682,
+    /* 0xD4EE ?? */ 0x7076,
+    /* 0xD4EF ?? */ 0x71E5,
+    /* 0xD4F0 ?? */ 0x8D23,
+    /* 0xD4F1 ?? */ 0x62E9,
+    /* 0xD4F2 ?? */ 0x5219,
+    /* 0xD4F3 ?? */ 0x6CFD,
+    /* 0xD4F4 ?? */ 0x8D3C,
+    /* 0xD4F5 ?? */ 0x600E,
+    /* 0xD4F6 ?? */ 0x589E,
+    /* 0xD4F7 ?? */ 0x618E,
+    /* 0xD4F8 ?? */ 0x66FE,
+    /* 0xD4F9 ?? */ 0x8D60,
+    /* 0xD4FA ?? */ 0x624E,
+    /* 0xD4FB ?? */ 0x55B3,
+    /* 0xD4FC ?? */ 0x6E23,
+    /* 0xD4FD ?? */ 0x672D,
+    /* 0xD4FE ?? */ 0x8F67,
+    /* 0xD5A1 ? */ 0x94E1,
+    /* 0xD5A2 ? */ 0x95F8,
+    /* 0xD5A3 ? */ 0x7728,
+    /* 0xD5A4 ? */ 0x6805,
+    /* 0xD5A5 ? */ 0x69A8,
+    /* 0xD5A6 ? */ 0x548B,
+    /* 0xD5A7 ? */ 0x4E4D,
+    /* 0xD5A8 ? */ 0x70B8,
+    /* 0xD5A9 ? */ 0x8BC8,
+    /* 0xD5AA ? */ 0x6458,
+    /* 0xD5AB ? */ 0x658B,
+    /* 0xD5AC ? */ 0x5B85,
+    /* 0xD5AD ? */ 0x7A84,
+    /* 0xD5AE ? */ 0x503A,
+    /* 0xD5AF ? */ 0x5BE8,
+    /* 0xD5B0 ? */ 0x77BB,
+    /* 0xD5B1 ? */ 0x6BE1,
+    /* 0xD5B2 ? */ 0x8A79,
+    /* 0xD5B3 ? */ 0x7C98,
+    /* 0xD5B4 ? */ 0x6CBE,
+    /* 0xD5B5 ? */ 0x76CF,
+    /* 0xD5B6 ? */ 0x65A9,
+    /* 0xD5B7 ? */ 0x8F97,
+    /* 0xD5B8 ? */ 0x5D2D,
+    /* 0xD5B9 ? */ 0x5C55,
+    /* 0xD5BA ? */ 0x8638,
+    /* 0xD5BB ? */ 0x6808,
+    /* 0xD5BC ? */ 0x5360,
+    /* 0xD5BD ? */ 0x6218,
+    /* 0xD5BE ? */ 0x7AD9,
+    /* 0xD5BF ? */ 0x6E5B,
+    /* 0xD5C0 ?? */ 0x7EFD,
+    /* 0xD5C1 ?? */ 0x6A1F,
+    /* 0xD5C2 ?? */ 0x7AE0,
+    /* 0xD5C3 ?? */ 0x5F70,
+    /* 0xD5C4 ?? */ 0x6F33,
+    /* 0xD5C5 ?? */ 0x5F20,
+    /* 0xD5C6 ?? */ 0x638C,
+    /* 0xD5C7 ?? */ 0x6DA8,
+    /* 0xD5C8 ?? */ 0x6756,
+    /* 0xD5C9 ?? */ 0x4E08,
+    /* 0xD5CA ?? */ 0x5E10,
+    /* 0xD5CB ?? */ 0x8D26,
+    /* 0xD5CC ?? */ 0x4ED7,
+    /* 0xD5CD ?? */ 0x80C0,
+    /* 0xD5CE ?? */ 0x7634,
+    /* 0xD5CF ?? */ 0x969C,
+    /* 0xD5D0 ?? */ 0x62DB,
+    /* 0xD5D1 ?? */ 0x662D,
+    /* 0xD5D2 ?? */ 0x627E,
+    /* 0xD5D3 ?? */ 0x6CBC,
+    /* 0xD5D4 ?? */ 0x8D75,
+    /* 0xD5D5 ?? */ 0x7167,
+    /* 0xD5D6 ?? */ 0x7F69,
+    /* 0xD5D7 ?? */ 0x5146,
+    /* 0xD5D8 ?? */ 0x8087,
+    /* 0xD5D9 ?? */ 0x53EC,
+    /* 0xD5DA ?? */ 0x906E,
+    /* 0xD5DB ?? */ 0x6298,
+    /* 0xD5DC ?? */ 0x54F2,
+    /* 0xD5DD ?? */ 0x86F0,
+    /* 0xD5DE ?? */ 0x8F99,
+    /* 0xD5DF ?? */ 0x8005,
+    /* 0xD5E0 ?? */ 0x9517,
+    /* 0xD5E1 ?? */ 0x8517,
+    /* 0xD5E2 ?? */ 0x8FD9,
+    /* 0xD5E3 ?? */ 0x6D59,
+    /* 0xD5E4 ?? */ 0x73CD,
+    /* 0xD5E5 ?? */ 0x659F,
+    /* 0xD5E6 ?? */ 0x771F,
+    /* 0xD5E7 ?? */ 0x7504,
+    /* 0xD5E8 ?? */ 0x7827,
+    /* 0xD5E9 ?? */ 0x81FB,
+    /* 0xD5EA ?? */ 0x8D1E,
+    /* 0xD5EB ?? */ 0x9488,
+    /* 0xD5EC ?? */ 0x4FA6,
+    /* 0xD5ED ?? */ 0x6795,
+    /* 0xD5EE ?? */ 0x75B9,
+    /* 0xD5EF ?? */ 0x8BCA,
+    /* 0xD5F0 ?? */ 0x9707,
+    /* 0xD5F1 ?? */ 0x632F,
+    /* 0xD5F2 ?? */ 0x9547,
+    /* 0xD5F3 ?? */ 0x9635,
+    /* 0xD5F4 ?? */ 0x84B8,
+    /* 0xD5F5 ?? */ 0x6323,
+    /* 0xD5F6 ?? */ 0x7741,
+    /* 0xD5F7 ?? */ 0x5F81,
+    /* 0xD5F8 ?? */ 0x72F0,
+    /* 0xD5F9 ?? */ 0x4E89,
+    /* 0xD5FA ?? */ 0x6014,
+    /* 0xD5FB ?? */ 0x6574,
+    /* 0xD5FC ?? */ 0x62EF,
+    /* 0xD5FD ?? */ 0x6B63,
+    /* 0xD5FE ?? */ 0x653F,
+    /* 0xD6A1 ? */ 0x5E27,
+    /* 0xD6A2 ? */ 0x75C7,
+    /* 0xD6A3 ? */ 0x90D1,
+    /* 0xD6A4 ? */ 0x8BC1,
+    /* 0xD6A5 ? */ 0x829D,
+    /* 0xD6A6 ? */ 0x679D,
+    /* 0xD6A7 ? */ 0x652F,
+    /* 0xD6A8 ? */ 0x5431,
+    /* 0xD6A9 ? */ 0x8718,
+    /* 0xD6AA ? */ 0x77E5,
+    /* 0xD6AB ? */ 0x80A2,
+    /* 0xD6AC ? */ 0x8102,
+    /* 0xD6AD ? */ 0x6C41,
+    /* 0xD6AE ? */ 0x4E4B,
+    /* 0xD6AF ? */ 0x7EC7,
+    /* 0xD6B0 ? */ 0x804C,
+    /* 0xD6B1 ? */ 0x76F4,
+    /* 0xD6B2 ? */ 0x690D,
+    /* 0xD6B3 ? */ 0x6B96,
+    /* 0xD6B4 ? */ 0x6267,
+    /* 0xD6B5 ? */ 0x503C,
+    /* 0xD6B6 ? */ 0x4F84,
+    /* 0xD6B7 ? */ 0x5740,
+    /* 0xD6B8 ? */ 0x6307,
+    /* 0xD6B9 ? */ 0x6B62,
+    /* 0xD6BA ? */ 0x8DBE,
+    /* 0xD6BB ? */ 0x53EA,
+    /* 0xD6BC ? */ 0x65E8,
+    /* 0xD6BD ? */ 0x7EB8,
+    /* 0xD6BE ? */ 0x5FD7,
+    /* 0xD6BF ? */ 0x631A,
+    /* 0xD6C0 ?? */ 0x63B7,
+    /* 0xD6C1 ?? */ 0x81F3,
+    /* 0xD6C2 ?? */ 0x81F4,
+    /* 0xD6C3 ?? */ 0x7F6E,
+    /* 0xD6C4 ?? */ 0x5E1C,
+    /* 0xD6C5 ?? */ 0x5CD9,
+    /* 0xD6C6 ?? */ 0x5236,
+    /* 0xD6C7 ?? */ 0x667A,
+    /* 0xD6C8 ?? */ 0x79E9,
+    /* 0xD6C9 ?? */ 0x7A1A,
+    /* 0xD6CA ?? */ 0x8D28,
+    /* 0xD6CB ?? */ 0x7099,
+    /* 0xD6CC ?? */ 0x75D4,
+    /* 0xD6CD ?? */ 0x6EDE,
+    /* 0xD6CE ?? */ 0x6CBB,
+    /* 0xD6CF ?? */ 0x7A92,
+    /* 0xD6D0 ?? */ 0x4E2D,
+    /* 0xD6D1 ?? */ 0x76C5,
+    /* 0xD6D2 ?? */ 0x5FE0,
+    /* 0xD6D3 ?? */ 0x949F,
+    /* 0xD6D4 ?? */ 0x8877,
+    /* 0xD6D5 ?? */ 0x7EC8,
+    /* 0xD6D6 ?? */ 0x79CD,
+    /* 0xD6D7 ?? */ 0x80BF,
+    /* 0xD6D8 ?? */ 0x91CD,
+    /* 0xD6D9 ?? */ 0x4EF2,
+    /* 0xD6DA ?? */ 0x4F17,
+    /* 0xD6DB ?? */ 0x821F,
+    /* 0xD6DC ?? */ 0x5468,
+    /* 0xD6DD ?? */ 0x5DDE,
+    /* 0xD6DE ?? */ 0x6D32,
+    /* 0xD6DF ?? */ 0x8BCC,
+    /* 0xD6E0 ?? */ 0x7CA5,
+    /* 0xD6E1 ?? */ 0x8F74,
+    /* 0xD6E2 ?? */ 0x8098,
+    /* 0xD6E3 ?? */ 0x5E1A,
+    /* 0xD6E4 ?? */ 0x5492,
+    /* 0xD6E5 ?? */ 0x76B1,
+    /* 0xD6E6 ?? */ 0x5B99,
+    /* 0xD6E7 ?? */ 0x663C,
+    /* 0xD6E8 ?? */ 0x9AA4,
+    /* 0xD6E9 ?? */ 0x73E0,
+    /* 0xD6EA ?? */ 0x682A,
+    /* 0xD6EB ?? */ 0x86DB,
+    /* 0xD6EC ?? */ 0x6731,
+    /* 0xD6ED ?? */ 0x732A,
+    /* 0xD6EE ?? */ 0x8BF8,
+    /* 0xD6EF ?? */ 0x8BDB,
+    /* 0xD6F0 ?? */ 0x9010,
+    /* 0xD6F1 ?? */ 0x7AF9,
+    /* 0xD6F2 ?? */ 0x70DB,
+    /* 0xD6F3 ?? */ 0x716E,
+    /* 0xD6F4 ?? */ 0x62C4,
+    /* 0xD6F5 ?? */ 0x77A9,
+    /* 0xD6F6 ?? */ 0x5631,
+    /* 0xD6F7 ?? */ 0x4E3B,
+    /* 0xD6F8 ?? */ 0x8457,
+    /* 0xD6F9 ?? */ 0x67F1,
+    /* 0xD6FA ?? */ 0x52A9,
+    /* 0xD6FB ?? */ 0x86C0,
+    /* 0xD6FC ?? */ 0x8D2E,
+    /* 0xD6FD ?? */ 0x94F8,
+    /* 0xD6FE ?? */ 0x7B51,
+    /* 0xD7A1 ? */ 0x4F4F,
+    /* 0xD7A2 ? */ 0x6CE8,
+    /* 0xD7A3 ? */ 0x795D,
+    /* 0xD7A4 ? */ 0x9A7B,
+    /* 0xD7A5 ? */ 0x6293,
+    /* 0xD7A6 ? */ 0x722A,
+    /* 0xD7A7 ? */ 0x62FD,
+    /* 0xD7A8 ? */ 0x4E13,
+    /* 0xD7A9 ? */ 0x7816,
+    /* 0xD7AA ? */ 0x8F6C,
+    /* 0xD7AB ? */ 0x64B0,
+    /* 0xD7AC ? */ 0x8D5A,
+    /* 0xD7AD ? */ 0x7BC6,
+    /* 0xD7AE ? */ 0x6869,
+    /* 0xD7AF ? */ 0x5E84,
+    /* 0xD7B0 ? */ 0x88C5,
+    /* 0xD7B1 ? */ 0x5986,
+    /* 0xD7B2 ? */ 0x649E,
+    /* 0xD7B3 ? */ 0x58EE,
+    /* 0xD7B4 ? */ 0x72B6,
+    /* 0xD7B5 ? */ 0x690E,
+    /* 0xD7B6 ? */ 0x9525,
+    /* 0xD7B7 ? */ 0x8FFD,
+    /* 0xD7B8 ? */ 0x8D58,
+    /* 0xD7B9 ? */ 0x5760,
+    /* 0xD7BA ? */ 0x7F00,
+    /* 0xD7BB ? */ 0x8C06,
+    /* 0xD7BC ? */ 0x51C6,
+    /* 0xD7BD ? */ 0x6349,
+    /* 0xD7BE ? */ 0x62D9,
+    /* 0xD7BF ? */ 0x5353,
+    /* 0xD7C0 ?? */ 0x684C,
+    /* 0xD7C1 ?? */ 0x7422,
+    /* 0xD7C2 ?? */ 0x8301,
+    /* 0xD7C3 ?? */ 0x914C,
+    /* 0xD7C4 ?? */ 0x5544,
+    /* 0xD7C5 ?? */ 0x7740,
+    /* 0xD7C6 ?? */ 0x707C,
+    /* 0xD7C7 ?? */ 0x6D4A,
+    /* 0xD7C8 ?? */ 0x5179,
+    /* 0xD7C9 ?? */ 0x54A8,
+    /* 0xD7CA ?? */ 0x8D44,
+    /* 0xD7CB ?? */ 0x59FF,
+    /* 0xD7CC ?? */ 0x6ECB,
+    /* 0xD7CD ?? */ 0x6DC4,
+    /* 0xD7CE ?? */ 0x5B5C,
+    /* 0xD7CF ?? */ 0x7D2B,
+    /* 0xD7D0 ?? */ 0x4ED4,
+    /* 0xD7D1 ?? */ 0x7C7D,
+    /* 0xD7D2 ?? */ 0x6ED3,
+    /* 0xD7D3 ?? */ 0x5B50,
+    /* 0xD7D4 ?? */ 0x81EA,
+    /* 0xD7D5 ?? */ 0x6E0D,
+    /* 0xD7D6 ?? */ 0x5B57,
+    /* 0xD7D7 ?? */ 0x9B03,
+    /* 0xD7D8 ?? */ 0x68D5,
+    /* 0xD7D9 ?? */ 0x8E2A,
+    /* 0xD7DA ?? */ 0x5B97,
+    /* 0xD7DB ?? */ 0x7EFC,
+    /* 0xD7DC ?? */ 0x603B,
+    /* 0xD7DD ?? */ 0x7EB5,
+    /* 0xD7DE ?? */ 0x90B9,
+    /* 0xD7DF ?? */ 0x8D70,
+    /* 0xD7E0 ?? */ 0x594F,
+    /* 0xD7E1 ?? */ 0x63CD,
+    /* 0xD7E2 ?? */ 0x79DF,
+    /* 0xD7E3 ?? */ 0x8DB3,
+    /* 0xD7E4 ?? */ 0x5352,
+    /* 0xD7E5 ?? */ 0x65CF,
+    /* 0xD7E6 ?? */ 0x7956,
+    /* 0xD7E7 ?? */ 0x8BC5,
+    /* 0xD7E8 ?? */ 0x963B,
+    /* 0xD7E9 ?? */ 0x7EC4,
+    /* 0xD7EA ?? */ 0x94BB,
+    /* 0xD7EB ?? */ 0x7E82,
+    /* 0xD7EC ?? */ 0x5634,
+    /* 0xD7ED ?? */ 0x9189,
+    /* 0xD7EE ?? */ 0x6700,
+    /* 0xD7EF ?? */ 0x7F6A,
+    /* 0xD7F0 ?? */ 0x5C0A,
+    /* 0xD7F1 ?? */ 0x9075,
+    /* 0xD7F2 ?? */ 0x6628,
+    /* 0xD7F3 ?? */ 0x5DE6,
+    /* 0xD7F4 ?? */ 0x4F50,
+    /* 0xD7F5 ?? */ 0x67DE,
+    /* 0xD7F6 ?? */ 0x505A,
+    /* 0xD7F7 ?? */ 0x4F5C,
+    /* 0xD7F8 ?? */ 0x5750,
+    /* 0xD7F9 ?? */ 0x5EA7,
+    0x0000,     /* 0xD7FA   */
+    0x0000,     /* 0xD7FB   */
+    0x0000,     /* 0xD7FC   */
+    0x0000,     /* 0xD7FD   */
+    0x0000,     /* 0xD7FE   */
+    0x4E8D,     /* 0xD8A1   */
+    0x4E0C,     /* 0xD8A2   */
+    0x5140,     /* 0xD8A3   */
+    0x4E10,     /* 0xD8A4   */
+    0x5EFF,     /* 0xD8A5   */
+    0x5345,     /* 0xD8A6   */
+    0x4E15,     /* 0xD8A7   */
+    0x4E98,     /* 0xD8A8   */
+    0x4E1E,     /* 0xD8A9   */
+    0x9B32,     /* 0xD8AA   */
+    0x5B6C,     /* 0xD8AB   */
+    0x5669,     /* 0xD8AC   */
+    0x4E28,     /* 0xD8AD   */
+    0x79BA,     /* 0xD8AE   */
+    0x4E3F,     /* 0xD8AF   */
+    0x5315,     /* 0xD8B0   */
+    0x4E47,     /* 0xD8B1   */
+    0x592D,     /* 0xD8B2   */
+    0x723B,     /* 0xD8B3   */
+    0x536E,     /* 0xD8B4   */
+    0x6C10,     /* 0xD8B5   */
+    0x56DF,     /* 0xD8B6   */
+    0x80E4,     /* 0xD8B7   */
+    0x9997,     /* 0xD8B8   */
+    0x6BD3,     /* 0xD8B9   */
+    0x777E,     /* 0xD8BA   */
+    0x9F17,     /* 0xD8BB   */
+    0x4E36,     /* 0xD8BC   */
+    0x4E9F,     /* 0xD8BD   */
+    0x9F10,     /* 0xD8BE   */
+    0x4E5C,     /* 0xD8BF   */
+    0x4E69,     /* 0xD8C0   */
+    0x4E93,     /* 0xD8C1   */
+    0x8288,     /* 0xD8C2   */
+    0x5B5B,     /* 0xD8C3   */
+    0x556C,     /* 0xD8C4   */
+    0x560F,     /* 0xD8C5   */
+    0x4EC4,     /* 0xD8C6   */
+    0x538D,     /* 0xD8C7   */
+    0x539D,     /* 0xD8C8   */
+    0x53A3,     /* 0xD8C9   */
+    0x53A5,     /* 0xD8CA   */
+    0x53AE,     /* 0xD8CB   */
+    0x9765,     /* 0xD8CC   */
+    0x8D5D,     /* 0xD8CD   */
+    0x531A,     /* 0xD8CE   */
+    0x53F5,     /* 0xD8CF   */
+    0x5326,     /* 0xD8D0   */
+    0x532E,     /* 0xD8D1   */
+    0x533E,     /* 0xD8D2   */
+    0x8D5C,     /* 0xD8D3   */
+    0x5366,     /* 0xD8D4   */
+    0x5363,     /* 0xD8D5   */
+    0x5202,     /* 0xD8D6   */
+    0x5208,     /* 0xD8D7   */
+    0x520E,     /* 0xD8D8   */
+    0x522D,     /* 0xD8D9   */
+    0x5233,     /* 0xD8DA   */
+    0x523F,     /* 0xD8DB   */
+    0x5240,     /* 0xD8DC   */
+    0x524C,     /* 0xD8DD   */
+    0x525E,     /* 0xD8DE   */
+    0x5261,     /* 0xD8DF   */
+    0x525C,     /* 0xD8E0   */
+    0x84AF,     /* 0xD8E1   */
+    0x527D,     /* 0xD8E2   */
+    0x5282,     /* 0xD8E3   */
+    0x5281,     /* 0xD8E4   */
+    0x5290,     /* 0xD8E5   */
+    0x5293,     /* 0xD8E6   */
+    0x5182,     /* 0xD8E7   */
+    0x7F54,     /* 0xD8E8   */
+    0x4EBB,     /* 0xD8E9   */
+    0x4EC3,     /* 0xD8EA   */
+    0x4EC9,     /* 0xD8EB   */
+    0x4EC2,     /* 0xD8EC   */
+    0x4EE8,     /* 0xD8ED   */
+    0x4EE1,     /* 0xD8EE   */
+    0x4EEB,     /* 0xD8EF   */
+    0x4EDE,     /* 0xD8F0   */
+    0x4F1B,     /* 0xD8F1   */
+    0x4EF3,     /* 0xD8F2   */
+    0x4F22,     /* 0xD8F3   */
+    0x4F64,     /* 0xD8F4   */
+    0x4EF5,     /* 0xD8F5   */
+    0x4F25,     /* 0xD8F6   */
+    0x4F27,     /* 0xD8F7   */
+    0x4F09,     /* 0xD8F8   */
+    0x4F2B,     /* 0xD8F9   */
+    0x4F5E,     /* 0xD8FA   */
+    0x4F67,     /* 0xD8FB   */
+    0x6538,     /* 0xD8FC   */
+    0x4F5A,     /* 0xD8FD   */
+    0x4F5D,     /* 0xD8FE   */
+    0x4F5F,     /* 0xD9A1   */
+    0x4F57,     /* 0xD9A2   */
+    0x4F32,     /* 0xD9A3   */
+    0x4F3D,     /* 0xD9A4   */
+    0x4F76,     /* 0xD9A5   */
+    0x4F74,     /* 0xD9A6   */
+    0x4F91,     /* 0xD9A7   */
+    0x4F89,     /* 0xD9A8   */
+    0x4F83,     /* 0xD9A9   */
+    0x4F8F,     /* 0xD9AA   */
+    0x4F7E,     /* 0xD9AB   */
+    0x4F7B,     /* 0xD9AC   */
+    0x4FAA,     /* 0xD9AD   */
+    0x4F7C,     /* 0xD9AE   */
+    0x4FAC,     /* 0xD9AF   */
+    0x4F94,     /* 0xD9B0   */
+    0x4FE6,     /* 0xD9B1   */
+    0x4FE8,     /* 0xD9B2   */
+    0x4FEA,     /* 0xD9B3   */
+    0x4FC5,     /* 0xD9B4   */
+    0x4FDA,     /* 0xD9B5   */
+    0x4FE3,     /* 0xD9B6   */
+    0x4FDC,     /* 0xD9B7   */
+    0x4FD1,     /* 0xD9B8   */
+    0x4FDF,     /* 0xD9B9   */
+    0x4FF8,     /* 0xD9BA   */
+    0x5029,     /* 0xD9BB   */
+    0x504C,     /* 0xD9BC   */
+    0x4FF3,     /* 0xD9BD   */
+    0x502C,     /* 0xD9BE   */
+    0x500F,     /* 0xD9BF   */
+    0x502E,     /* 0xD9C0   */
+    0x502D,     /* 0xD9C1   */
+    0x4FFE,     /* 0xD9C2   */
+    0x501C,     /* 0xD9C3   */
+    0x500C,     /* 0xD9C4   */
+    0x5025,     /* 0xD9C5   */
+    0x5028,     /* 0xD9C6   */
+    0x507E,     /* 0xD9C7   */
+    0x5043,     /* 0xD9C8   */
+    0x5055,     /* 0xD9C9   */
+    0x5048,     /* 0xD9CA   */
+    0x504E,     /* 0xD9CB   */
+    0x506C,     /* 0xD9CC   */
+    0x507B,     /* 0xD9CD   */
+    0x50A5,     /* 0xD9CE   */
+    0x50A7,     /* 0xD9CF   */
+    0x50A9,     /* 0xD9D0   */
+    0x50BA,     /* 0xD9D1   */
+    0x50D6,     /* 0xD9D2   */
+    0x5106,     /* 0xD9D3   */
+    0x50ED,     /* 0xD9D4   */
+    0x50EC,     /* 0xD9D5   */
+    0x50E6,     /* 0xD9D6   */
+    0x50EE,     /* 0xD9D7   */
+    0x5107,     /* 0xD9D8   */
+    0x510B,     /* 0xD9D9   */
+    0x4EDD,     /* 0xD9DA   */
+    0x6C3D,     /* 0xD9DB   */
+    0x4F58,     /* 0xD9DC   */
+    0x4F65,     /* 0xD9DD   */
+    0x4FCE,     /* 0xD9DE   */
+    0x9FA0,     /* 0xD9DF   */
+    0x6C46,     /* 0xD9E0   */
+    0x7C74,     /* 0xD9E1   */
+    0x516E,     /* 0xD9E2   */
+    0x5DFD,     /* 0xD9E3   */
+    0x9EC9,     /* 0xD9E4   */
+    0x9998,     /* 0xD9E5   */
+    0x5181,     /* 0xD9E6   */
+    0x5914,     /* 0xD9E7   */
+    0x52F9,     /* 0xD9E8   */
+    0x530D,     /* 0xD9E9   */
+    0x8A07,     /* 0xD9EA   */
+    0x5310,     /* 0xD9EB   */
+    0x51EB,     /* 0xD9EC   */
+    0x5919,     /* 0xD9ED   */
+    0x5155,     /* 0xD9EE   */
+    0x4EA0,     /* 0xD9EF   */
+    0x5156,     /* 0xD9F0   */
+    0x4EB3,     /* 0xD9F1   */
+    0x886E,     /* 0xD9F2   */
+    0x88A4,     /* 0xD9F3   */
+    0x4EB5,     /* 0xD9F4   */
+    0x8114,     /* 0xD9F5   */
+    0x88D2,     /* 0xD9F6   */
+    0x7980,     /* 0xD9F7   */
+    0x5B34,     /* 0xD9F8   */
+    0x8803,     /* 0xD9F9   */
+    0x7FB8,     /* 0xD9FA   */
+    0x51AB,     /* 0xD9FB   */
+    0x51B1,     /* 0xD9FC   */
+    0x51BD,     /* 0xD9FD   */
+    0x51BC,     /* 0xD9FE   */
+    0x51C7,     /* 0xDAA1   */
+    0x5196,     /* 0xDAA2   */
+    0x51A2,     /* 0xDAA3   */
+    0x51A5,     /* 0xDAA4   */
+    0x8BA0,     /* 0xDAA5   */
+    0x8BA6,     /* 0xDAA6   */
+    0x8BA7,     /* 0xDAA7   */
+    0x8BAA,     /* 0xDAA8   */
+    0x8BB4,     /* 0xDAA9   */
+    0x8BB5,     /* 0xDAAA   */
+    0x8BB7,     /* 0xDAAB   */
+    0x8BC2,     /* 0xDAAC   */
+    0x8BC3,     /* 0xDAAD   */
+    0x8BCB,     /* 0xDAAE   */
+    0x8BCF,     /* 0xDAAF   */
+    0x8BCE,     /* 0xDAB0   */
+    0x8BD2,     /* 0xDAB1   */
+    0x8BD3,     /* 0xDAB2   */
+    0x8BD4,     /* 0xDAB3   */
+    0x8BD6,     /* 0xDAB4   */
+    0x8BD8,     /* 0xDAB5   */
+    0x8BD9,     /* 0xDAB6   */
+    0x8BDC,     /* 0xDAB7   */
+    0x8BDF,     /* 0xDAB8   */
+    0x8BE0,     /* 0xDAB9   */
+    0x8BE4,     /* 0xDABA   */
+    0x8BE8,     /* 0xDABB   */
+    0x8BE9,     /* 0xDABC   */
+    0x8BEE,     /* 0xDABD   */
+    0x8BF0,     /* 0xDABE   */
+    0x8BF3,     /* 0xDABF   */
+    0x8BF6,     /* 0xDAC0   */
+    0x8BF9,     /* 0xDAC1   */
+    0x8BFC,     /* 0xDAC2   */
+    0x8BFF,     /* 0xDAC3   */
+    0x8C00,     /* 0xDAC4   */
+    0x8C02,     /* 0xDAC5   */
+    0x8C04,     /* 0xDAC6   */
+    0x8C07,     /* 0xDAC7   */
+    0x8C0C,     /* 0xDAC8   */
+    0x8C0F,     /* 0xDAC9   */
+    0x8C11,     /* 0xDACA   */
+    0x8C12,     /* 0xDACB   */
+    0x8C14,     /* 0xDACC   */
+    0x8C15,     /* 0xDACD   */
+    0x8C16,     /* 0xDACE   */
+    0x8C19,     /* 0xDACF   */
+    0x8C1B,     /* 0xDAD0   */
+    0x8C18,     /* 0xDAD1   */
+    0x8C1D,     /* 0xDAD2   */
+    0x8C1F,     /* 0xDAD3   */
+    0x8C20,     /* 0xDAD4   */
+    0x8C21,     /* 0xDAD5   */
+    0x8C25,     /* 0xDAD6   */
+    0x8C27,     /* 0xDAD7   */
+    0x8C2A,     /* 0xDAD8   */
+    0x8C2B,     /* 0xDAD9   */
+    0x8C2E,     /* 0xDADA   */
+    0x8C2F,     /* 0xDADB   */
+    0x8C32,     /* 0xDADC   */
+    0x8C33,     /* 0xDADD   */
+    0x8C35,     /* 0xDADE   */
+    0x8C36,     /* 0xDADF   */
+    0x5369,     /* 0xDAE0   */
+    0x537A,     /* 0xDAE1   */
+    0x961D,     /* 0xDAE2   */
+    0x9622,     /* 0xDAE3   */
+    0x9621,     /* 0xDAE4   */
+    0x9631,     /* 0xDAE5   */
+    0x962A,     /* 0xDAE6   */
+    0x963D,     /* 0xDAE7   */
+    0x963C,     /* 0xDAE8   */
+    0x9642,     /* 0xDAE9   */
+    0x9649,     /* 0xDAEA   */
+    0x9654,     /* 0xDAEB   */
+    0x965F,     /* 0xDAEC   */
+    0x9667,     /* 0xDAED   */
+    0x966C,     /* 0xDAEE   */
+    0x9672,     /* 0xDAEF   */
+    0x9674,     /* 0xDAF0   */
+    0x9688,     /* 0xDAF1   */
+    0x968D,     /* 0xDAF2   */
+    0x9697,     /* 0xDAF3   */
+    0x96B0,     /* 0xDAF4   */
+    0x9097,     /* 0xDAF5   */
+    0x909B,     /* 0xDAF6   */
+    0x909D,     /* 0xDAF7   */
+    0x9099,     /* 0xDAF8   */
+    0x90AC,     /* 0xDAF9   */
+    0x90A1,     /* 0xDAFA   */
+    0x90B4,     /* 0xDAFB   */
+    0x90B3,     /* 0xDAFC   */
+    0x90B6,     /* 0xDAFD   */
+    0x90BA,     /* 0xDAFE   */
+    0x90B8,     /* 0xDBA1   */
+    0x90B0,     /* 0xDBA2   */
+    0x90CF,     /* 0xDBA3   */
+    0x90C5,     /* 0xDBA4   */
+    0x90BE,     /* 0xDBA5   */
+    0x90D0,     /* 0xDBA6   */
+    0x90C4,     /* 0xDBA7   */
+    0x90C7,     /* 0xDBA8   */
+    0x90D3,     /* 0xDBA9   */
+    0x90E6,     /* 0xDBAA   */
+    0x90E2,     /* 0xDBAB   */
+    0x90DC,     /* 0xDBAC   */
+    0x90D7,     /* 0xDBAD   */
+    0x90DB,     /* 0xDBAE   */
+    0x90EB,     /* 0xDBAF   */
+    0x90EF,     /* 0xDBB0   */
+    0x90FE,     /* 0xDBB1   */
+    0x9104,     /* 0xDBB2   */
+    0x9122,     /* 0xDBB3   */
+    0x911E,     /* 0xDBB4   */
+    0x9123,     /* 0xDBB5   */
+    0x9131,     /* 0xDBB6   */
+    0x912F,     /* 0xDBB7   */
+    0x9139,     /* 0xDBB8   */
+    0x9143,     /* 0xDBB9   */
+    0x9146,     /* 0xDBBA   */
+    0x520D,     /* 0xDBBB   */
+    0x5942,     /* 0xDBBC   */
+    0x52A2,     /* 0xDBBD   */
+    0x52AC,     /* 0xDBBE   */
+    0x52AD,     /* 0xDBBF   */
+    0x52BE,     /* 0xDBC0   */
+    0x54FF,     /* 0xDBC1   */
+    0x52D0,     /* 0xDBC2   */
+    0x52D6,     /* 0xDBC3   */
+    0x52F0,     /* 0xDBC4   */
+    0x53DF,     /* 0xDBC5   */
+    0x71EE,     /* 0xDBC6   */
+    0x77CD,     /* 0xDBC7   */
+    0x5EF4,     /* 0xDBC8   */
+    0x51F5,     /* 0xDBC9   */
+    0x51FC,     /* 0xDBCA   */
+    0x9B2F,     /* 0xDBCB   */
+    0x53B6,     /* 0xDBCC   */
+    0x5F01,     /* 0xDBCD   */
+    0x755A,     /* 0xDBCE   */
+    0x5DEF,     /* 0xDBCF   */
+    0x574C,     /* 0xDBD0   */
+    0x57A9,     /* 0xDBD1   */
+    0x57A1,     /* 0xDBD2   */
+    0x587E,     /* 0xDBD3   */
+    0x58BC,     /* 0xDBD4   */
+    0x58C5,     /* 0xDBD5   */
+    0x58D1,     /* 0xDBD6   */
+    0x5729,     /* 0xDBD7   */
+    0x572C,     /* 0xDBD8   */
+    0x572A,     /* 0xDBD9   */
+    0x5733,     /* 0xDBDA   */
+    0x5739,     /* 0xDBDB   */
+    0x572E,     /* 0xDBDC   */
+    0x572F,     /* 0xDBDD   */
+    0x575C,     /* 0xDBDE   */
+    0x573B,     /* 0xDBDF   */
+    0x5742,     /* 0xDBE0   */
+    0x5769,     /* 0xDBE1   */
+    0x5785,     /* 0xDBE2   */
+    0x576B,     /* 0xDBE3   */
+    0x5786,     /* 0xDBE4   */
+    0x577C,     /* 0xDBE5   */
+    0x577B,     /* 0xDBE6   */
+    0x5768,     /* 0xDBE7   */
+    0x576D,     /* 0xDBE8   */
+    0x5776,     /* 0xDBE9   */
+    0x5773,     /* 0xDBEA   */
+    0x57AD,     /* 0xDBEB   */
+    0x57A4,     /* 0xDBEC   */
+    0x578C,     /* 0xDBED   */
+    0x57B2,     /* 0xDBEE   */
+    0x57CF,     /* 0xDBEF   */
+    0x57A7,     /* 0xDBF0   */
+    0x57B4,     /* 0xDBF1   */
+    0x5793,     /* 0xDBF2   */
+    0x57A0,     /* 0xDBF3   */
+    0x57D5,     /* 0xDBF4   */
+    0x57D8,     /* 0xDBF5   */
+    0x57DA,     /* 0xDBF6   */
+    0x57D9,     /* 0xDBF7   */
+    0x57D2,     /* 0xDBF8   */
+    0x57B8,     /* 0xDBF9   */
+    0x57F4,     /* 0xDBFA   */
+    0x57EF,     /* 0xDBFB   */
+    0x57F8,     /* 0xDBFC   */
+    0x57E4,     /* 0xDBFD   */
+    0x57DD,     /* 0xDBFE   */
+    0x580B,     /* 0xDCA1   */
+    0x580D,     /* 0xDCA2   */
+    0x57FD,     /* 0xDCA3   */
+    0x57ED,     /* 0xDCA4   */
+    0x5800,     /* 0xDCA5   */
+    0x581E,     /* 0xDCA6   */
+    0x5819,     /* 0xDCA7   */
+    0x5844,     /* 0xDCA8   */
+    0x5820,     /* 0xDCA9   */
+    0x5865,     /* 0xDCAA   */
+    0x586C,     /* 0xDCAB   */
+    0x5881,     /* 0xDCAC   */
+    0x5889,     /* 0xDCAD   */
+    0x589A,     /* 0xDCAE   */
+    0x5880,     /* 0xDCAF   */
+    0x99A8,     /* 0xDCB0   */
+    0x9F19,     /* 0xDCB1   */
+    0x61FF,     /* 0xDCB2   */
+    0x8279,     /* 0xDCB3   */
+    0x827D,     /* 0xDCB4   */
+    0x827F,     /* 0xDCB5   */
+    0x828F,     /* 0xDCB6   */
+    0x828A,     /* 0xDCB7   */
+    0x82A8,     /* 0xDCB8   */
+    0x8284,     /* 0xDCB9   */
+    0x828E,     /* 0xDCBA   */
+    0x8291,     /* 0xDCBB   */
+    0x8297,     /* 0xDCBC   */
+    0x8299,     /* 0xDCBD   */
+    0x82AB,     /* 0xDCBE   */
+    0x82B8,     /* 0xDCBF   */
+    0x82BE,     /* 0xDCC0   */
+    0x82B0,     /* 0xDCC1   */
+    0x82C8,     /* 0xDCC2   */
+    0x82CA,     /* 0xDCC3   */
+    0x82E3,     /* 0xDCC4   */
+    0x8298,     /* 0xDCC5   */
+    0x82B7,     /* 0xDCC6   */
+    0x82AE,     /* 0xDCC7   */
+    0x82CB,     /* 0xDCC8   */
+    0x82CC,     /* 0xDCC9   */
+    0x82C1,     /* 0xDCCA   */
+    0x82A9,     /* 0xDCCB   */
+    0x82B4,     /* 0xDCCC   */
+    0x82A1,     /* 0xDCCD   */
+    0x82AA,     /* 0xDCCE   */
+    0x829F,     /* 0xDCCF   */
+    0x82C4,     /* 0xDCD0   */
+    0x82CE,     /* 0xDCD1   */
+    0x82A4,     /* 0xDCD2   */
+    0x82E1,     /* 0xDCD3   */
+    0x8309,     /* 0xDCD4   */
+    0x82F7,     /* 0xDCD5   */
+    0x82E4,     /* 0xDCD6   */
+    0x830F,     /* 0xDCD7   */
+    0x8307,     /* 0xDCD8   */
+    0x82DC,     /* 0xDCD9   */
+    0x82F4,     /* 0xDCDA   */
+    0x82D2,     /* 0xDCDB   */
+    0x82D8,     /* 0xDCDC   */
+    0x830C,     /* 0xDCDD   */
+    0x82FB,     /* 0xDCDE   */
+    0x82D3,     /* 0xDCDF   */
+    0x8311,     /* 0xDCE0   */
+    0x831A,     /* 0xDCE1   */
+    0x8306,     /* 0xDCE2   */
+    0x8314,     /* 0xDCE3   */
+    0x8315,     /* 0xDCE4   */
+    0x82E0,     /* 0xDCE5   */
+    0x82D5,     /* 0xDCE6   */
+    0x831C,     /* 0xDCE7   */
+    0x8351,     /* 0xDCE8   */
+    0x835B,     /* 0xDCE9   */
+    0x835C,     /* 0xDCEA   */
+    0x8308,     /* 0xDCEB   */
+    0x8392,     /* 0xDCEC   */
+    0x833C,     /* 0xDCED   */
+    0x8334,     /* 0xDCEE   */
+    0x8331,     /* 0xDCEF   */
+    0x839B,     /* 0xDCF0   */
+    0x835E,     /* 0xDCF1   */
+    0x832F,     /* 0xDCF2   */
+    0x834F,     /* 0xDCF3   */
+    0x8347,     /* 0xDCF4   */
+    0x8343,     /* 0xDCF5   */
+    0x835F,     /* 0xDCF6   */
+    0x8340,     /* 0xDCF7   */
+    0x8317,     /* 0xDCF8   */
+    0x8360,     /* 0xDCF9   */
+    0x832D,     /* 0xDCFA   */
+    0x833A,     /* 0xDCFB   */
+    0x8333,     /* 0xDCFC   */
+    0x8366,     /* 0xDCFD   */
+    0x8365,     /* 0xDCFE   */
+    0x8368,     /* 0xDDA1   */
+    0x831B,     /* 0xDDA2   */
+    0x8369,     /* 0xDDA3   */
+    0x836C,     /* 0xDDA4   */
+    0x836A,     /* 0xDDA5   */
+    0x836D,     /* 0xDDA6   */
+    0x836E,     /* 0xDDA7   */
+    0x83B0,     /* 0xDDA8   */
+    0x8378,     /* 0xDDA9   */
+    0x83B3,     /* 0xDDAA   */
+    0x83B4,     /* 0xDDAB   */
+    0x83A0,     /* 0xDDAC   */
+    0x83AA,     /* 0xDDAD   */
+    0x8393,     /* 0xDDAE   */
+    0x839C,     /* 0xDDAF   */
+    0x8385,     /* 0xDDB0   */
+    0x837C,     /* 0xDDB1   */
+    0x83B6,     /* 0xDDB2   */
+    0x83A9,     /* 0xDDB3   */
+    0x837D,     /* 0xDDB4   */
+    0x83B8,     /* 0xDDB5   */
+    0x837B,     /* 0xDDB6   */
+    0x8398,     /* 0xDDB7   */
+    0x839E,     /* 0xDDB8   */
+    0x83A8,     /* 0xDDB9   */
+    0x83BA,     /* 0xDDBA   */
+    0x83BC,     /* 0xDDBB   */
+    0x83C1,     /* 0xDDBC   */
+    0x8401,     /* 0xDDBD   */
+    0x83E5,     /* 0xDDBE   */
+    0x83D8,     /* 0xDDBF   */
+    0x5807,     /* 0xDDC0   */
+    0x8418,     /* 0xDDC1   */
+    0x840B,     /* 0xDDC2   */
+    0x83DD,     /* 0xDDC3   */
+    0x83FD,     /* 0xDDC4   */
+    0x83D6,     /* 0xDDC5   */
+    0x841C,     /* 0xDDC6   */
+    0x8438,     /* 0xDDC7   */
+    0x8411,     /* 0xDDC8   */
+    0x8406,     /* 0xDDC9   */
+    0x83D4,     /* 0xDDCA   */
+    0x83DF,     /* 0xDDCB   */
+    0x840F,     /* 0xDDCC   */
+    0x8403,     /* 0xDDCD   */
+    0x83F8,     /* 0xDDCE   */
+    0x83F9,     /* 0xDDCF   */
+    0x83EA,     /* 0xDDD0   */
+    0x83C5,     /* 0xDDD1   */
+    0x83C0,     /* 0xDDD2   */
+    0x8426,     /* 0xDDD3   */
+    0x83F0,     /* 0xDDD4   */
+    0x83E1,     /* 0xDDD5   */
+    0x845C,     /* 0xDDD6   */
+    0x8451,     /* 0xDDD7   */
+    0x845A,     /* 0xDDD8   */
+    0x8459,     /* 0xDDD9   */
+    0x8473,     /* 0xDDDA   */
+    0x8487,     /* 0xDDDB   */
+    0x8488,     /* 0xDDDC   */
+    0x847A,     /* 0xDDDD   */
+    0x8489,     /* 0xDDDE   */
+    0x8478,     /* 0xDDDF   */
+    0x843C,     /* 0xDDE0   */
+    0x8446,     /* 0xDDE1   */
+    0x8469,     /* 0xDDE2   */
+    0x8476,     /* 0xDDE3   */
+    0x848C,     /* 0xDDE4   */
+    0x848E,     /* 0xDDE5   */
+    0x8431,     /* 0xDDE6   */
+    0x846D,     /* 0xDDE7   */
+    0x84C1,     /* 0xDDE8   */
+    0x84CD,     /* 0xDDE9   */
+    0x84D0,     /* 0xDDEA   */
+    0x84E6,     /* 0xDDEB   */
+    0x84BD,     /* 0xDDEC   */
+    0x84D3,     /* 0xDDED   */
+    0x84CA,     /* 0xDDEE   */
+    0x84BF,     /* 0xDDEF   */
+    0x84BA,     /* 0xDDF0   */
+    0x84E0,     /* 0xDDF1   */
+    0x84A1,     /* 0xDDF2   */
+    0x84B9,     /* 0xDDF3   */
+    0x84B4,     /* 0xDDF4   */
+    0x8497,     /* 0xDDF5   */
+    0x84E5,     /* 0xDDF6   */
+    0x84E3,     /* 0xDDF7   */
+    0x850C,     /* 0xDDF8   */
+    0x750D,     /* 0xDDF9   */
+    0x8538,     /* 0xDDFA   */
+    0x84F0,     /* 0xDDFB   */
+    0x8539,     /* 0xDDFC   */
+    0x851F,     /* 0xDDFD   */
+    0x853A,     /* 0xDDFE   */
+    0x8556,     /* 0xDEA1   */
+    0x853B,     /* 0xDEA2   */
+    0x84FF,     /* 0xDEA3   */
+    0x84FC,     /* 0xDEA4   */
+    0x8559,     /* 0xDEA5   */
+    0x8548,     /* 0xDEA6   */
+    0x8568,     /* 0xDEA7   */
+    0x8564,     /* 0xDEA8   */
+    0x855E,     /* 0xDEA9   */
+    0x857A,     /* 0xDEAA   */
+    0x77A2,     /* 0xDEAB   */
+    0x8543,     /* 0xDEAC   */
+    0x8572,     /* 0xDEAD   */
+    0x857B,     /* 0xDEAE   */
+    0x85A4,     /* 0xDEAF   */
+    0x85A8,     /* 0xDEB0   */
+    0x8587,     /* 0xDEB1   */
+    0x858F,     /* 0xDEB2   */
+    0x8579,     /* 0xDEB3   */
+    0x85AE,     /* 0xDEB4   */
+    0x859C,     /* 0xDEB5   */
+    0x8585,     /* 0xDEB6   */
+    0x85B9,     /* 0xDEB7   */
+    0x85B7,     /* 0xDEB8   */
+    0x85B0,     /* 0xDEB9   */
+    0x85D3,     /* 0xDEBA   */
+    0x85C1,     /* 0xDEBB   */
+    0x85DC,     /* 0xDEBC   */
+    0x85FF,     /* 0xDEBD   */
+    0x8627,     /* 0xDEBE   */
+    0x8605,     /* 0xDEBF   */
+    0x8629,     /* 0xDEC0   */
+    0x8616,     /* 0xDEC1   */
+    0x863C,     /* 0xDEC2   */
+    0x5EFE,     /* 0xDEC3   */
+    0x5F08,     /* 0xDEC4   */
+    0x593C,     /* 0xDEC5   */
+    0x5941,     /* 0xDEC6   */
+    0x8037,     /* 0xDEC7   */
+    0x5955,     /* 0xDEC8   */
+    0x595A,     /* 0xDEC9   */
+    0x5958,     /* 0xDECA   */
+    0x530F,     /* 0xDECB   */
+    0x5C22,     /* 0xDECC   */
+    0x5C25,     /* 0xDECD   */
+    0x5C2C,     /* 0xDECE   */
+    0x5C34,     /* 0xDECF   */
+    0x624C,     /* 0xDED0   */
+    0x626A,     /* 0xDED1   */
+    0x629F,     /* 0xDED2   */
+    0x62BB,     /* 0xDED3   */
+    0x62CA,     /* 0xDED4   */
+    0x62DA,     /* 0xDED5   */
+    0x62D7,     /* 0xDED6   */
+    0x62EE,     /* 0xDED7   */
+    0x6322,     /* 0xDED8   */
+    0x62F6,     /* 0xDED9   */
+    0x6339,     /* 0xDEDA   */
+    0x634B,     /* 0xDEDB   */
+    0x6343,     /* 0xDEDC   */
+    0x63AD,     /* 0xDEDD   */
+    0x63F6,     /* 0xDEDE   */
+    0x6371,     /* 0xDEDF   */
+    0x637A,     /* 0xDEE0   */
+    0x638E,     /* 0xDEE1   */
+    0x63B4,     /* 0xDEE2   */
+    0x636D,     /* 0xDEE3   */
+    0x63AC,     /* 0xDEE4   */
+    0x638A,     /* 0xDEE5   */
+    0x6369,     /* 0xDEE6   */
+    0x63AE,     /* 0xDEE7   */
+    0x63BC,     /* 0xDEE8   */
+    0x63F2,     /* 0xDEE9   */
+    0x63F8,     /* 0xDEEA   */
+    0x63E0,     /* 0xDEEB   */
+    0x63FF,     /* 0xDEEC   */
+    0x63C4,     /* 0xDEED   */
+    0x63DE,     /* 0xDEEE   */
+    0x63CE,     /* 0xDEEF   */
+    0x6452,     /* 0xDEF0   */
+    0x63C6,     /* 0xDEF1   */
+    0x63BE,     /* 0xDEF2   */
+    0x6445,     /* 0xDEF3   */
+    0x6441,     /* 0xDEF4   */
+    0x640B,     /* 0xDEF5   */
+    0x641B,     /* 0xDEF6   */
+    0x6420,     /* 0xDEF7   */
+    0x640C,     /* 0xDEF8   */
+    0x6426,     /* 0xDEF9   */
+    0x6421,     /* 0xDEFA   */
+    0x645E,     /* 0xDEFB   */
+    0x6484,     /* 0xDEFC   */
+    0x646D,     /* 0xDEFD   */
+    0x6496,     /* 0xDEFE   */
+    0x647A,     /* 0xDFA1   */
+    0x64B7,     /* 0xDFA2   */
+    0x64B8,     /* 0xDFA3   */
+    0x6499,     /* 0xDFA4   */
+    0x64BA,     /* 0xDFA5   */
+    0x64C0,     /* 0xDFA6   */
+    0x64D0,     /* 0xDFA7   */
+    0x64D7,     /* 0xDFA8   */
+    0x64E4,     /* 0xDFA9   */
+    0x64E2,     /* 0xDFAA   */
+    0x6509,     /* 0xDFAB   */
+    0x6525,     /* 0xDFAC   */
+    0x652E,     /* 0xDFAD   */
+    0x5F0B,     /* 0xDFAE   */
+    0x5FD2,     /* 0xDFAF   */
+    0x7519,     /* 0xDFB0   */
+    0x5F11,     /* 0xDFB1   */
+    0x535F,     /* 0xDFB2   */
+    0x53F1,     /* 0xDFB3   */
+    0x53FD,     /* 0xDFB4   */
+    0x53E9,     /* 0xDFB5   */
+    0x53E8,     /* 0xDFB6   */
+    0x53FB,     /* 0xDFB7   */
+    0x5412,     /* 0xDFB8   */
+    0x5416,     /* 0xDFB9   */
+    0x5406,     /* 0xDFBA   */
+    0x544B,     /* 0xDFBB   */
+    0x5452,     /* 0xDFBC   */
+    0x5453,     /* 0xDFBD   */
+    0x5454,     /* 0xDFBE   */
+    0x5456,     /* 0xDFBF   */
+    0x5443,     /* 0xDFC0   */
+    0x5421,     /* 0xDFC1   */
+    0x5457,     /* 0xDFC2   */
+    0x5459,     /* 0xDFC3   */
+    0x5423,     /* 0xDFC4   */
+    0x5432,     /* 0xDFC5   */
+    0x5482,     /* 0xDFC6   */
+    0x5494,     /* 0xDFC7   */
+    0x5477,     /* 0xDFC8   */
+    0x5471,     /* 0xDFC9   */
+    0x5464,     /* 0xDFCA   */
+    0x549A,     /* 0xDFCB   */
+    0x549B,     /* 0xDFCC   */
+    0x5484,     /* 0xDFCD   */
+    0x5476,     /* 0xDFCE   */
+    0x5466,     /* 0xDFCF   */
+    0x549D,     /* 0xDFD0   */
+    0x54D0,     /* 0xDFD1   */
+    0x54AD,     /* 0xDFD2   */
+    0x54C2,     /* 0xDFD3   */
+    0x54B4,     /* 0xDFD4   */
+    0x54D2,     /* 0xDFD5   */
+    0x54A7,     /* 0xDFD6   */
+    0x54A6,     /* 0xDFD7   */
+    0x54D3,     /* 0xDFD8   */
+    0x54D4,     /* 0xDFD9   */
+    0x5472,     /* 0xDFDA   */
+    0x54A3,     /* 0xDFDB   */
+    0x54D5,     /* 0xDFDC   */
+    0x54BB,     /* 0xDFDD   */
+    0x54BF,     /* 0xDFDE   */
+    0x54CC,     /* 0xDFDF   */
+    0x54D9,     /* 0xDFE0   */
+    0x54DA,     /* 0xDFE1   */
+    0x54DC,     /* 0xDFE2   */
+    0x54A9,     /* 0xDFE3   */
+    0x54AA,     /* 0xDFE4   */
+    0x54A4,     /* 0xDFE5   */
+    0x54DD,     /* 0xDFE6   */
+    0x54CF,     /* 0xDFE7   */
+    0x54DE,     /* 0xDFE8   */
+    0x551B,     /* 0xDFE9   */
+    0x54E7,     /* 0xDFEA   */
+    0x5520,     /* 0xDFEB   */
+    0x54FD,     /* 0xDFEC   */
+    0x5514,     /* 0xDFED   */
+    0x54F3,     /* 0xDFEE   */
+    0x5522,     /* 0xDFEF   */
+    0x5523,     /* 0xDFF0   */
+    0x550F,     /* 0xDFF1   */
+    0x5511,     /* 0xDFF2   */
+    0x5527,     /* 0xDFF3   */
+    0x552A,     /* 0xDFF4   */
+    0x5567,     /* 0xDFF5   */
+    0x558F,     /* 0xDFF6   */
+    0x55B5,     /* 0xDFF7   */
+    0x5549,     /* 0xDFF8   */
+    0x556D,     /* 0xDFF9   */
+    0x5541,     /* 0xDFFA   */
+    0x5555,     /* 0xDFFB   */
+    0x553F,     /* 0xDFFC   */
+    0x5550,     /* 0xDFFD   */
+    0x553C,     /* 0xDFFE   */
+    0x5537,     /* 0xE0A1   */
+    0x5556,     /* 0xE0A2   */
+    0x5575,     /* 0xE0A3   */
+    0x5576,     /* 0xE0A4   */
+    0x5577,     /* 0xE0A5   */
+    0x5533,     /* 0xE0A6   */
+    0x5530,     /* 0xE0A7   */
+    0x555C,     /* 0xE0A8   */
+    0x558B,     /* 0xE0A9   */
+    0x55D2,     /* 0xE0AA   */
+    0x5583,     /* 0xE0AB   */
+    0x55B1,     /* 0xE0AC   */
+    0x55B9,     /* 0xE0AD   */
+    0x5588,     /* 0xE0AE   */
+    0x5581,     /* 0xE0AF   */
+    0x559F,     /* 0xE0B0   */
+    0x557E,     /* 0xE0B1   */
+    0x55D6,     /* 0xE0B2   */
+    0x5591,     /* 0xE0B3   */
+    0x557B,     /* 0xE0B4   */
+    0x55DF,     /* 0xE0B5   */
+    0x55BD,     /* 0xE0B6   */
+    0x55BE,     /* 0xE0B7   */
+    0x5594,     /* 0xE0B8   */
+    0x5599,     /* 0xE0B9   */
+    0x55EA,     /* 0xE0BA   */
+    0x55F7,     /* 0xE0BB   */
+    0x55C9,     /* 0xE0BC   */
+    0x561F,     /* 0xE0BD   */
+    0x55D1,     /* 0xE0BE   */
+    0x55EB,     /* 0xE0BF   */
+    0x55EC,     /* 0xE0C0   */
+    0x55D4,     /* 0xE0C1   */
+    0x55E6,     /* 0xE0C2   */
+    0x55DD,     /* 0xE0C3   */
+    0x55C4,     /* 0xE0C4   */
+    0x55EF,     /* 0xE0C5   */
+    0x55E5,     /* 0xE0C6   */
+    0x55F2,     /* 0xE0C7   */
+    0x55F3,     /* 0xE0C8   */
+    0x55CC,     /* 0xE0C9   */
+    0x55CD,     /* 0xE0CA   */
+    0x55E8,     /* 0xE0CB   */
+    0x55F5,     /* 0xE0CC   */
+    0x55E4,     /* 0xE0CD   */
+    0x8F94,     /* 0xE0CE   */
+    0x561E,     /* 0xE0CF   */
+    0x5608,     /* 0xE0D0   */
+    0x560C,     /* 0xE0D1   */
+    0x5601,     /* 0xE0D2   */
+    0x5624,     /* 0xE0D3   */
+    0x5623,     /* 0xE0D4   */
+    0x55FE,     /* 0xE0D5   */
+    0x5600,     /* 0xE0D6   */
+    0x5627,     /* 0xE0D7   */
+    0x562D,     /* 0xE0D8   */
+    0x5658,     /* 0xE0D9   */
+    0x5639,     /* 0xE0DA   */
+    0x5657,     /* 0xE0DB   */
+    0x562C,     /* 0xE0DC   */
+    0x564D,     /* 0xE0DD   */
+    0x5662,     /* 0xE0DE   */
+    0x5659,     /* 0xE0DF   */
+    0x565C,     /* 0xE0E0   */
+    0x564C,     /* 0xE0E1   */
+    0x5654,     /* 0xE0E2   */
+    0x5686,     /* 0xE0E3   */
+    0x5664,     /* 0xE0E4   */
+    0x5671,     /* 0xE0E5   */
+    0x566B,     /* 0xE0E6   */
+    0x567B,     /* 0xE0E7   */
+    0x567C,     /* 0xE0E8   */
+    0x5685,     /* 0xE0E9   */
+    0x5693,     /* 0xE0EA   */
+    0x56AF,     /* 0xE0EB   */
+    0x56D4,     /* 0xE0EC   */
+    0x56D7,     /* 0xE0ED   */
+    0x56DD,     /* 0xE0EE   */
+    0x56E1,     /* 0xE0EF   */
+    0x56F5,     /* 0xE0F0   */
+    0x56EB,     /* 0xE0F1   */
+    0x56F9,     /* 0xE0F2   */
+    0x56FF,     /* 0xE0F3   */
+    0x5704,     /* 0xE0F4   */
+    0x570A,     /* 0xE0F5   */
+    0x5709,     /* 0xE0F6   */
+    0x571C,     /* 0xE0F7   */
+    0x5E0F,     /* 0xE0F8   */
+    0x5E19,     /* 0xE0F9   */
+    0x5E14,     /* 0xE0FA   */
+    0x5E11,     /* 0xE0FB   */
+    0x5E31,     /* 0xE0FC   */
+    0x5E3B,     /* 0xE0FD   */
+    0x5E3C,     /* 0xE0FE   */
+    0x5E37,     /* 0xE1A1   */
+    0x5E44,     /* 0xE1A2   */
+    0x5E54,     /* 0xE1A3   */
+    0x5E5B,     /* 0xE1A4   */
+    0x5E5E,     /* 0xE1A5   */
+    0x5E61,     /* 0xE1A6   */
+    0x5C8C,     /* 0xE1A7   */
+    0x5C7A,     /* 0xE1A8   */
+    0x5C8D,     /* 0xE1A9   */
+    0x5C90,     /* 0xE1AA   */
+    0x5C96,     /* 0xE1AB   */
+    0x5C88,     /* 0xE1AC   */
+    0x5C98,     /* 0xE1AD   */
+    0x5C99,     /* 0xE1AE   */
+    0x5C91,     /* 0xE1AF   */
+    0x5C9A,     /* 0xE1B0   */
+    0x5C9C,     /* 0xE1B1   */
+    0x5CB5,     /* 0xE1B2   */
+    0x5CA2,     /* 0xE1B3   */
+    0x5CBD,     /* 0xE1B4   */
+    0x5CAC,     /* 0xE1B5   */
+    0x5CAB,     /* 0xE1B6   */
+    0x5CB1,     /* 0xE1B7   */
+    0x5CA3,     /* 0xE1B8   */
+    0x5CC1,     /* 0xE1B9   */
+    0x5CB7,     /* 0xE1BA   */
+    0x5CC4,     /* 0xE1BB   */
+    0x5CD2,     /* 0xE1BC   */
+    0x5CE4,     /* 0xE1BD   */
+    0x5CCB,     /* 0xE1BE   */
+    0x5CE5,     /* 0xE1BF   */
+    0x5D02,     /* 0xE1C0   */
+    0x5D03,     /* 0xE1C1   */
+    0x5D27,     /* 0xE1C2   */
+    0x5D26,     /* 0xE1C3   */
+    0x5D2E,     /* 0xE1C4   */
+    0x5D24,     /* 0xE1C5   */
+    0x5D1E,     /* 0xE1C6   */
+    0x5D06,     /* 0xE1C7   */
+    0x5D1B,     /* 0xE1C8   */
+    0x5D58,     /* 0xE1C9   */
+    0x5D3E,     /* 0xE1CA   */
+    0x5D34,     /* 0xE1CB   */
+    0x5D3D,     /* 0xE1CC   */
+    0x5D6C,     /* 0xE1CD   */
+    0x5D5B,     /* 0xE1CE   */
+    0x5D6F,     /* 0xE1CF   */
+    0x5D5D,     /* 0xE1D0   */
+    0x5D6B,     /* 0xE1D1   */
+    0x5D4B,     /* 0xE1D2   */
+    0x5D4A,     /* 0xE1D3   */
+    0x5D69,     /* 0xE1D4   */
+    0x5D74,     /* 0xE1D5   */
+    0x5D82,     /* 0xE1D6   */
+    0x5D99,     /* 0xE1D7   */
+    0x5D9D,     /* 0xE1D8   */
+    0x8C73,     /* 0xE1D9   */
+    0x5DB7,     /* 0xE1DA   */
+    0x5DC5,     /* 0xE1DB   */
+    0x5F73,     /* 0xE1DC   */
+    0x5F77,     /* 0xE1DD   */
+    0x5F82,     /* 0xE1DE   */
+    0x5F87,     /* 0xE1DF   */
+    0x5F89,     /* 0xE1E0   */
+    0x5F8C,     /* 0xE1E1   */
+    0x5F95,     /* 0xE1E2   */
+    0x5F99,     /* 0xE1E3   */
+    0x5F9C,     /* 0xE1E4   */
+    0x5FA8,     /* 0xE1E5   */
+    0x5FAD,     /* 0xE1E6   */
+    0x5FB5,     /* 0xE1E7   */
+    0x5FBC,     /* 0xE1E8   */
+    0x8862,     /* 0xE1E9   */
+    0x5F61,     /* 0xE1EA   */
+    0x72AD,     /* 0xE1EB   */
+    0x72B0,     /* 0xE1EC   */
+    0x72B4,     /* 0xE1ED   */
+    0x72B7,     /* 0xE1EE   */
+    0x72B8,     /* 0xE1EF   */
+    0x72C3,     /* 0xE1F0   */
+    0x72C1,     /* 0xE1F1   */
+    0x72CE,     /* 0xE1F2   */
+    0x72CD,     /* 0xE1F3   */
+    0x72D2,     /* 0xE1F4   */
+    0x72E8,     /* 0xE1F5   */
+    0x72EF,     /* 0xE1F6   */
+    0x72E9,     /* 0xE1F7   */
+    0x72F2,     /* 0xE1F8   */
+    0x72F4,     /* 0xE1F9   */
+    0x72F7,     /* 0xE1FA   */
+    0x7301,     /* 0xE1FB   */
+    0x72F3,     /* 0xE1FC   */
+    0x7303,     /* 0xE1FD   */
+    0x72FA,     /* 0xE1FE   */
+    0x72FB,     /* 0xE2A1   */
+    0x7317,     /* 0xE2A2   */
+    0x7313,     /* 0xE2A3   */
+    0x7321,     /* 0xE2A4   */
+    0x730A,     /* 0xE2A5   */
+    0x731E,     /* 0xE2A6   */
+    0x731D,     /* 0xE2A7   */
+    0x7315,     /* 0xE2A8   */
+    0x7322,     /* 0xE2A9   */
+    0x7339,     /* 0xE2AA   */
+    0x7325,     /* 0xE2AB   */
+    0x732C,     /* 0xE2AC   */
+    0x7338,     /* 0xE2AD   */
+    0x7331,     /* 0xE2AE   */
+    0x7350,     /* 0xE2AF   */
+    0x734D,     /* 0xE2B0   */
+    0x7357,     /* 0xE2B1   */
+    0x7360,     /* 0xE2B2   */
+    0x736C,     /* 0xE2B3   */
+    0x736F,     /* 0xE2B4   */
+    0x737E,     /* 0xE2B5   */
+    0x821B,     /* 0xE2B6   */
+    0x5925,     /* 0xE2B7   */
+    0x98E7,     /* 0xE2B8   */
+    0x5924,     /* 0xE2B9   */
+    0x5902,     /* 0xE2BA   */
+    0x9963,     /* 0xE2BB   */
+    0x9967,     /* 0xE2BC   */
+    0x9968,     /* 0xE2BD   */
+    0x9969,     /* 0xE2BE   */
+    0x996A,     /* 0xE2BF   */
+    0x996B,     /* 0xE2C0   */
+    0x996C,     /* 0xE2C1   */
+    0x9974,     /* 0xE2C2   */
+    0x9977,     /* 0xE2C3   */
+    0x997D,     /* 0xE2C4   */
+    0x9980,     /* 0xE2C5   */
+    0x9984,     /* 0xE2C6   */
+    0x9987,     /* 0xE2C7   */
+    0x998A,     /* 0xE2C8   */
+    0x998D,     /* 0xE2C9   */
+    0x9990,     /* 0xE2CA   */
+    0x9991,     /* 0xE2CB   */
+    0x9993,     /* 0xE2CC   */
+    0x9994,     /* 0xE2CD   */
+    0x9995,     /* 0xE2CE   */
+    0x5E80,     /* 0xE2CF   */
+    0x5E91,     /* 0xE2D0   */
+    0x5E8B,     /* 0xE2D1   */
+    0x5E96,     /* 0xE2D2   */
+    0x5EA5,     /* 0xE2D3   */
+    0x5EA0,     /* 0xE2D4   */
+    0x5EB9,     /* 0xE2D5   */
+    0x5EB5,     /* 0xE2D6   */
+    0x5EBE,     /* 0xE2D7   */
+    0x5EB3,     /* 0xE2D8   */
+    0x8D53,     /* 0xE2D9   */
+    0x5ED2,     /* 0xE2DA   */
+    0x5ED1,     /* 0xE2DB   */
+    0x5EDB,     /* 0xE2DC   */
+    0x5EE8,     /* 0xE2DD   */
+    0x5EEA,     /* 0xE2DE   */
+    0x81BA,     /* 0xE2DF   */
+    0x5FC4,     /* 0xE2E0   */
+    0x5FC9,     /* 0xE2E1   */
+    0x5FD6,     /* 0xE2E2   */
+    0x5FCF,     /* 0xE2E3   */
+    0x6003,     /* 0xE2E4   */
+    0x5FEE,     /* 0xE2E5   */
+    0x6004,     /* 0xE2E6   */
+    0x5FE1,     /* 0xE2E7   */
+    0x5FE4,     /* 0xE2E8   */
+    0x5FFE,     /* 0xE2E9   */
+    0x6005,     /* 0xE2EA   */
+    0x6006,     /* 0xE2EB   */
+    0x5FEA,     /* 0xE2EC   */
+    0x5FED,     /* 0xE2ED   */
+    0x5FF8,     /* 0xE2EE   */
+    0x6019,     /* 0xE2EF   */
+    0x6035,     /* 0xE2F0   */
+    0x6026,     /* 0xE2F1   */
+    0x601B,     /* 0xE2F2   */
+    0x600F,     /* 0xE2F3   */
+    0x600D,     /* 0xE2F4   */
+    0x6029,     /* 0xE2F5   */
+    0x602B,     /* 0xE2F6   */
+    0x600A,     /* 0xE2F7   */
+    0x603F,     /* 0xE2F8   */
+    0x6021,     /* 0xE2F9   */
+    0x6078,     /* 0xE2FA   */
+    0x6079,     /* 0xE2FB   */
+    0x607B,     /* 0xE2FC   */
+    0x607A,     /* 0xE2FD   */
+    0x6042,     /* 0xE2FE   */
+    0x606A,     /* 0xE3A1   */
+    0x607D,     /* 0xE3A2   */
+    0x6096,     /* 0xE3A3   */
+    0x609A,     /* 0xE3A4   */
+    0x60AD,     /* 0xE3A5   */
+    0x609D,     /* 0xE3A6   */
+    0x6083,     /* 0xE3A7   */
+    0x6092,     /* 0xE3A8   */
+    0x608C,     /* 0xE3A9   */
+    0x609B,     /* 0xE3AA   */
+    0x60EC,     /* 0xE3AB   */
+    0x60BB,     /* 0xE3AC   */
+    0x60B1,     /* 0xE3AD   */
+    0x60DD,     /* 0xE3AE   */
+    0x60D8,     /* 0xE3AF   */
+    0x60C6,     /* 0xE3B0   */
+    0x60DA,     /* 0xE3B1   */
+    0x60B4,     /* 0xE3B2   */
+    0x6120,     /* 0xE3B3   */
+    0x6126,     /* 0xE3B4   */
+    0x6115,     /* 0xE3B5   */
+    0x6123,     /* 0xE3B6   */
+    0x60F4,     /* 0xE3B7   */
+    0x6100,     /* 0xE3B8   */
+    0x610E,     /* 0xE3B9   */
+    0x612B,     /* 0xE3BA   */
+    0x614A,     /* 0xE3BB   */
+    0x6175,     /* 0xE3BC   */
+    0x61AC,     /* 0xE3BD   */
+    0x6194,     /* 0xE3BE   */
+    0x61A7,     /* 0xE3BF   */
+    0x61B7,     /* 0xE3C0   */
+    0x61D4,     /* 0xE3C1   */
+    0x61F5,     /* 0xE3C2   */
+    0x5FDD,     /* 0xE3C3   */
+    0x96B3,     /* 0xE3C4   */
+    0x95E9,     /* 0xE3C5   */
+    0x95EB,     /* 0xE3C6   */
+    0x95F1,     /* 0xE3C7   */
+    0x95F3,     /* 0xE3C8   */
+    0x95F5,     /* 0xE3C9   */
+    0x95F6,     /* 0xE3CA   */
+    0x95FC,     /* 0xE3CB   */
+    0x95FE,     /* 0xE3CC   */
+    0x9603,     /* 0xE3CD   */
+    0x9604,     /* 0xE3CE   */
+    0x9606,     /* 0xE3CF   */
+    0x9608,     /* 0xE3D0   */
+    0x960A,     /* 0xE3D1   */
+    0x960B,     /* 0xE3D2   */
+    0x960C,     /* 0xE3D3   */
+    0x960D,     /* 0xE3D4   */
+    0x960F,     /* 0xE3D5   */
+    0x9612,     /* 0xE3D6   */
+    0x9615,     /* 0xE3D7   */
+    0x9616,     /* 0xE3D8   */
+    0x9617,     /* 0xE3D9   */
+    0x9619,     /* 0xE3DA   */
+    0x961A,     /* 0xE3DB   */
+    0x4E2C,     /* 0xE3DC   */
+    0x723F,     /* 0xE3DD   */
+    0x6215,     /* 0xE3DE   */
+    0x6C35,     /* 0xE3DF   */
+    0x6C54,     /* 0xE3E0   */
+    0x6C5C,     /* 0xE3E1   */
+    0x6C4A,     /* 0xE3E2   */
+    0x6CA3,     /* 0xE3E3   */
+    0x6C85,     /* 0xE3E4   */
+    0x6C90,     /* 0xE3E5   */
+    0x6C94,     /* 0xE3E6   */
+    0x6C8C,     /* 0xE3E7   */
+    0x6C68,     /* 0xE3E8   */
+    0x6C69,     /* 0xE3E9   */
+    0x6C74,     /* 0xE3EA   */
+    0x6C76,     /* 0xE3EB   */
+    0x6C86,     /* 0xE3EC   */
+    0x6CA9,     /* 0xE3ED   */
+    0x6CD0,     /* 0xE3EE   */
+    0x6CD4,     /* 0xE3EF   */
+    0x6CAD,     /* 0xE3F0   */
+    0x6CF7,     /* 0xE3F1   */
+    0x6CF8,     /* 0xE3F2   */
+    0x6CF1,     /* 0xE3F3   */
+    0x6CD7,     /* 0xE3F4   */
+    0x6CB2,     /* 0xE3F5   */
+    0x6CE0,     /* 0xE3F6   */
+    0x6CD6,     /* 0xE3F7   */
+    0x6CFA,     /* 0xE3F8   */
+    0x6CEB,     /* 0xE3F9   */
+    0x6CEE,     /* 0xE3FA   */
+    0x6CB1,     /* 0xE3FB   */
+    0x6CD3,     /* 0xE3FC   */
+    0x6CEF,     /* 0xE3FD   */
+    0x6CFE,     /* 0xE3FE   */
+    0x6D39,     /* 0xE4A1   */
+    0x6D27,     /* 0xE4A2   */
+    0x6D0C,     /* 0xE4A3   */
+    0x6D43,     /* 0xE4A4   */
+    0x6D48,     /* 0xE4A5   */
+    0x6D07,     /* 0xE4A6   */
+    0x6D04,     /* 0xE4A7   */
+    0x6D19,     /* 0xE4A8   */
+    0x6D0E,     /* 0xE4A9   */
+    0x6D2B,     /* 0xE4AA   */
+    0x6D4D,     /* 0xE4AB   */
+    0x6D2E,     /* 0xE4AC   */
+    0x6D35,     /* 0xE4AD   */
+    0x6D1A,     /* 0xE4AE   */
+    0x6D4F,     /* 0xE4AF   */
+    0x6D52,     /* 0xE4B0   */
+    0x6D54,     /* 0xE4B1   */
+    0x6D33,     /* 0xE4B2   */
+    0x6D91,     /* 0xE4B3   */
+    0x6D6F,     /* 0xE4B4   */
+    0x6D9E,     /* 0xE4B5   */
+    0x6DA0,     /* 0xE4B6   */
+    0x6D5E,     /* 0xE4B7   */
+    0x6D93,     /* 0xE4B8   */
+    0x6D94,     /* 0xE4B9   */
+    0x6D5C,     /* 0xE4BA   */
+    0x6D60,     /* 0xE4BB   */
+    0x6D7C,     /* 0xE4BC   */
+    0x6D63,     /* 0xE4BD   */
+    0x6E1A,     /* 0xE4BE   */
+    0x6DC7,     /* 0xE4BF   */
+    0x6DC5,     /* 0xE4C0   */
+    0x6DDE,     /* 0xE4C1   */
+    0x6E0E,     /* 0xE4C2   */
+    0x6DBF,     /* 0xE4C3   */
+    0x6DE0,     /* 0xE4C4   */
+    0x6E11,     /* 0xE4C5   */
+    0x6DE6,     /* 0xE4C6   */
+    0x6DDD,     /* 0xE4C7   */
+    0x6DD9,     /* 0xE4C8   */
+    0x6E16,     /* 0xE4C9   */
+    0x6DAB,     /* 0xE4CA   */
+    0x6E0C,     /* 0xE4CB   */
+    0x6DAE,     /* 0xE4CC   */
+    0x6E2B,     /* 0xE4CD   */
+    0x6E6E,     /* 0xE4CE   */
+    0x6E4E,     /* 0xE4CF   */
+    0x6E6B,     /* 0xE4D0   */
+    0x6EB2,     /* 0xE4D1   */
+    0x6E5F,     /* 0xE4D2   */
+    0x6E86,     /* 0xE4D3   */
+    0x6E53,     /* 0xE4D4   */
+    0x6E54,     /* 0xE4D5   */
+    0x6E32,     /* 0xE4D6   */
+    0x6E25,     /* 0xE4D7   */
+    0x6E44,     /* 0xE4D8   */
+    0x6EDF,     /* 0xE4D9   */
+    0x6EB1,     /* 0xE4DA   */
+    0x6E98,     /* 0xE4DB   */
+    0x6EE0,     /* 0xE4DC   */
+    0x6F2D,     /* 0xE4DD   */
+    0x6EE2,     /* 0xE4DE   */
+    0x6EA5,     /* 0xE4DF   */
+    0x6EA7,     /* 0xE4E0   */
+    0x6EBD,     /* 0xE4E1   */
+    0x6EBB,     /* 0xE4E2   */
+    0x6EB7,     /* 0xE4E3   */
+    0x6ED7,     /* 0xE4E4   */
+    0x6EB4,     /* 0xE4E5   */
+    0x6ECF,     /* 0xE4E6   */
+    0x6E8F,     /* 0xE4E7   */
+    0x6EC2,     /* 0xE4E8   */
+    0x6E9F,     /* 0xE4E9   */
+    0x6F62,     /* 0xE4EA   */
+    0x6F46,     /* 0xE4EB   */
+    0x6F47,     /* 0xE4EC   */
+    0x6F24,     /* 0xE4ED   */
+    0x6F15,     /* 0xE4EE   */
+    0x6EF9,     /* 0xE4EF   */
+    0x6F2F,     /* 0xE4F0   */
+    0x6F36,     /* 0xE4F1   */
+    0x6F4B,     /* 0xE4F2   */
+    0x6F74,     /* 0xE4F3   */
+    0x6F2A,     /* 0xE4F4   */
+    0x6F09,     /* 0xE4F5   */
+    0x6F29,     /* 0xE4F6   */
+    0x6F89,     /* 0xE4F7   */
+    0x6F8D,     /* 0xE4F8   */
+    0x6F8C,     /* 0xE4F9   */
+    0x6F78,     /* 0xE4FA   */
+    0x6F72,     /* 0xE4FB   */
+    0x6F7C,     /* 0xE4FC   */
+    0x6F7A,     /* 0xE4FD   */
+    0x6FD1,     /* 0xE4FE   */
+    0x6FC9,     /* 0xE5A1   */
+    0x6FA7,     /* 0xE5A2   */
+    0x6FB9,     /* 0xE5A3   */
+    0x6FB6,     /* 0xE5A4   */
+    0x6FC2,     /* 0xE5A5   */
+    0x6FE1,     /* 0xE5A6   */
+    0x6FEE,     /* 0xE5A7   */
+    0x6FDE,     /* 0xE5A8   */
+    0x6FE0,     /* 0xE5A9   */
+    0x6FEF,     /* 0xE5AA   */
+    0x701A,     /* 0xE5AB   */
+    0x7023,     /* 0xE5AC   */
+    0x701B,     /* 0xE5AD   */
+    0x7039,     /* 0xE5AE   */
+    0x7035,     /* 0xE5AF   */
+    0x704F,     /* 0xE5B0   */
+    0x705E,     /* 0xE5B1   */
+    0x5B80,     /* 0xE5B2   */
+    0x5B84,     /* 0xE5B3   */
+    0x5B95,     /* 0xE5B4   */
+    0x5B93,     /* 0xE5B5   */
+    0x5BA5,     /* 0xE5B6   */
+    0x5BB8,     /* 0xE5B7   */
+    0x752F,     /* 0xE5B8   */
+    0x9A9E,     /* 0xE5B9   */
+    0x6434,     /* 0xE5BA   */
+    0x5BE4,     /* 0xE5BB   */
+    0x5BEE,     /* 0xE5BC   */
+    0x8930,     /* 0xE5BD   */
+    0x5BF0,     /* 0xE5BE   */
+    0x8E47,     /* 0xE5BF   */
+    0x8B07,     /* 0xE5C0   */
+    0x8FB6,     /* 0xE5C1   */
+    0x8FD3,     /* 0xE5C2   */
+    0x8FD5,     /* 0xE5C3   */
+    0x8FE5,     /* 0xE5C4   */
+    0x8FEE,     /* 0xE5C5   */
+    0x8FE4,     /* 0xE5C6   */
+    0x8FE9,     /* 0xE5C7   */
+    0x8FE6,     /* 0xE5C8   */
+    0x8FF3,     /* 0xE5C9   */
+    0x8FE8,     /* 0xE5CA   */
+    0x9005,     /* 0xE5CB   */
+    0x9004,     /* 0xE5CC   */
+    0x900B,     /* 0xE5CD   */
+    0x9026,     /* 0xE5CE   */
+    0x9011,     /* 0xE5CF   */
+    0x900D,     /* 0xE5D0   */
+    0x9016,     /* 0xE5D1   */
+    0x9021,     /* 0xE5D2   */
+    0x9035,     /* 0xE5D3   */
+    0x9036,     /* 0xE5D4   */
+    0x902D,     /* 0xE5D5   */
+    0x902F,     /* 0xE5D6   */
+    0x9044,     /* 0xE5D7   */
+    0x9051,     /* 0xE5D8   */
+    0x9052,     /* 0xE5D9   */
+    0x9050,     /* 0xE5DA   */
+    0x9068,     /* 0xE5DB   */
+    0x9058,     /* 0xE5DC   */
+    0x9062,     /* 0xE5DD   */
+    0x905B,     /* 0xE5DE   */
+    0x66B9,     /* 0xE5DF   */
+    0x9074,     /* 0xE5E0   */
+    0x907D,     /* 0xE5E1   */
+    0x9082,     /* 0xE5E2   */
+    0x9088,     /* 0xE5E3   */
+    0x9083,     /* 0xE5E4   */
+    0x908B,     /* 0xE5E5   */
+    0x5F50,     /* 0xE5E6   */
+    0x5F57,     /* 0xE5E7   */
+    0x5F56,     /* 0xE5E8   */
+    0x5F58,     /* 0xE5E9   */
+    0x5C3B,     /* 0xE5EA   */
+    0x54AB,     /* 0xE5EB   */
+    0x5C50,     /* 0xE5EC   */
+    0x5C59,     /* 0xE5ED   */
+    0x5B71,     /* 0xE5EE   */
+    0x5C63,     /* 0xE5EF   */
+    0x5C66,     /* 0xE5F0   */
+    0x7FBC,     /* 0xE5F1   */
+    0x5F2A,     /* 0xE5F2   */
+    0x5F29,     /* 0xE5F3   */
+    0x5F2D,     /* 0xE5F4   */
+    0x8274,     /* 0xE5F5   */
+    0x5F3C,     /* 0xE5F6   */
+    0x9B3B,     /* 0xE5F7   */
+    0x5C6E,     /* 0xE5F8   */
+    0x5981,     /* 0xE5F9   */
+    0x5983,     /* 0xE5FA   */
+    0x598D,     /* 0xE5FB   */
+    0x59A9,     /* 0xE5FC   */
+    0x59AA,     /* 0xE5FD   */
+    0x59A3,     /* 0xE5FE   */
+    0x5997,     /* 0xE6A1   */
+    0x59CA,     /* 0xE6A2   */
+    0x59AB,     /* 0xE6A3   */
+    0x599E,     /* 0xE6A4   */
+    0x59A4,     /* 0xE6A5   */
+    0x59D2,     /* 0xE6A6   */
+    0x59B2,     /* 0xE6A7   */
+    0x59AF,     /* 0xE6A8   */
+    0x59D7,     /* 0xE6A9   */
+    0x59BE,     /* 0xE6AA   */
+    0x5A05,     /* 0xE6AB   */
+    0x5A06,     /* 0xE6AC   */
+    0x59DD,     /* 0xE6AD   */
+    0x5A08,     /* 0xE6AE   */
+    0x59E3,     /* 0xE6AF   */
+    0x59D8,     /* 0xE6B0   */
+    0x59F9,     /* 0xE6B1   */
+    0x5A0C,     /* 0xE6B2   */
+    0x5A09,     /* 0xE6B3   */
+    0x5A32,     /* 0xE6B4   */
+    0x5A34,     /* 0xE6B5   */
+    0x5A11,     /* 0xE6B6   */
+    0x5A23,     /* 0xE6B7   */
+    0x5A13,     /* 0xE6B8   */
+    0x5A40,     /* 0xE6B9   */
+    0x5A67,     /* 0xE6BA   */
+    0x5A4A,     /* 0xE6BB   */
+    0x5A55,     /* 0xE6BC   */
+    0x5A3C,     /* 0xE6BD   */
+    0x5A62,     /* 0xE6BE   */
+    0x5A75,     /* 0xE6BF   */
+    0x80EC,     /* 0xE6C0   */
+    0x5AAA,     /* 0xE6C1   */
+    0x5A9B,     /* 0xE6C2   */
+    0x5A77,     /* 0xE6C3   */
+    0x5A7A,     /* 0xE6C4   */
+    0x5ABE,     /* 0xE6C5   */
+    0x5AEB,     /* 0xE6C6   */
+    0x5AB2,     /* 0xE6C7   */
+    0x5AD2,     /* 0xE6C8   */
+    0x5AD4,     /* 0xE6C9   */
+    0x5AB8,     /* 0xE6CA   */
+    0x5AE0,     /* 0xE6CB   */
+    0x5AE3,     /* 0xE6CC   */
+    0x5AF1,     /* 0xE6CD   */
+    0x5AD6,     /* 0xE6CE   */
+    0x5AE6,     /* 0xE6CF   */
+    0x5AD8,     /* 0xE6D0   */
+    0x5ADC,     /* 0xE6D1   */
+    0x5B09,     /* 0xE6D2   */
+    0x5B17,     /* 0xE6D3   */
+    0x5B16,     /* 0xE6D4   */
+    0x5B32,     /* 0xE6D5   */
+    0x5B37,     /* 0xE6D6   */
+    0x5B40,     /* 0xE6D7   */
+    0x5C15,     /* 0xE6D8   */
+    0x5C1C,     /* 0xE6D9   */
+    0x5B5A,     /* 0xE6DA   */
+    0x5B65,     /* 0xE6DB   */
+    0x5B73,     /* 0xE6DC   */
+    0x5B51,     /* 0xE6DD   */
+    0x5B53,     /* 0xE6DE   */
+    0x5B62,     /* 0xE6DF   */
+    0x9A75,     /* 0xE6E0   */
+    0x9A77,     /* 0xE6E1   */
+    0x9A78,     /* 0xE6E2   */
+    0x9A7A,     /* 0xE6E3   */
+    0x9A7F,     /* 0xE6E4   */
+    0x9A7D,     /* 0xE6E5   */
+    0x9A80,     /* 0xE6E6   */
+    0x9A81,     /* 0xE6E7   */
+    0x9A85,     /* 0xE6E8   */
+    0x9A88,     /* 0xE6E9   */
+    0x9A8A,     /* 0xE6EA   */
+    0x9A90,     /* 0xE6EB   */
+    0x9A92,     /* 0xE6EC   */
+    0x9A93,     /* 0xE6ED   */
+    0x9A96,     /* 0xE6EE   */
+    0x9A98,     /* 0xE6EF   */
+    0x9A9B,     /* 0xE6F0   */
+    0x9A9C,     /* 0xE6F1   */
+    0x9A9D,     /* 0xE6F2   */
+    0x9A9F,     /* 0xE6F3   */
+    0x9AA0,     /* 0xE6F4   */
+    0x9AA2,     /* 0xE6F5   */
+    0x9AA3,     /* 0xE6F6   */
+    0x9AA5,     /* 0xE6F7   */
+    0x9AA7,     /* 0xE6F8   */
+    0x7E9F,     /* 0xE6F9   */
+    0x7EA1,     /* 0xE6FA   */
+    0x7EA3,     /* 0xE6FB   */
+    0x7EA5,     /* 0xE6FC   */
+    0x7EA8,     /* 0xE6FD   */
+    0x7EA9,     /* 0xE6FE   */
+    0x7EAD,     /* 0xE7A1   */
+    0x7EB0,     /* 0xE7A2   */
+    0x7EBE,     /* 0xE7A3   */
+    0x7EC0,     /* 0xE7A4   */
+    0x7EC1,     /* 0xE7A5   */
+    0x7EC2,     /* 0xE7A6   */
+    0x7EC9,     /* 0xE7A7   */
+    0x7ECB,     /* 0xE7A8   */
+    0x7ECC,     /* 0xE7A9   */
+    0x7ED0,     /* 0xE7AA   */
+    0x7ED4,     /* 0xE7AB   */
+    0x7ED7,     /* 0xE7AC   */
+    0x7EDB,     /* 0xE7AD   */
+    0x7EE0,     /* 0xE7AE   */
+    0x7EE1,     /* 0xE7AF   */
+    0x7EE8,     /* 0xE7B0   */
+    0x7EEB,     /* 0xE7B1   */
+    0x7EEE,     /* 0xE7B2   */
+    0x7EEF,     /* 0xE7B3   */
+    0x7EF1,     /* 0xE7B4   */
+    0x7EF2,     /* 0xE7B5   */
+    0x7F0D,     /* 0xE7B6   */
+    0x7EF6,     /* 0xE7B7   */
+    0x7EFA,     /* 0xE7B8   */
+    0x7EFB,     /* 0xE7B9   */
+    0x7EFE,     /* 0xE7BA   */
+    0x7F01,     /* 0xE7BB   */
+    0x7F02,     /* 0xE7BC   */
+    0x7F03,     /* 0xE7BD   */
+    0x7F07,     /* 0xE7BE   */
+    0x7F08,     /* 0xE7BF   */
+    0x7F0B,     /* 0xE7C0   */
+    0x7F0C,     /* 0xE7C1   */
+    0x7F0F,     /* 0xE7C2   */
+    0x7F11,     /* 0xE7C3   */
+    0x7F12,     /* 0xE7C4   */
+    0x7F17,     /* 0xE7C5   */
+    0x7F19,     /* 0xE7C6   */
+    0x7F1C,     /* 0xE7C7   */
+    0x7F1B,     /* 0xE7C8   */
+    0x7F1F,     /* 0xE7C9   */
+    0x7F21,     /* 0xE7CA   */
+    0x7F22,     /* 0xE7CB   */
+    0x7F23,     /* 0xE7CC   */
+    0x7F24,     /* 0xE7CD   */
+    0x7F25,     /* 0xE7CE   */
+    0x7F26,     /* 0xE7CF   */
+    0x7F27,     /* 0xE7D0   */
+    0x7F2A,     /* 0xE7D1   */
+    0x7F2B,     /* 0xE7D2   */
+    0x7F2C,     /* 0xE7D3   */
+    0x7F2D,     /* 0xE7D4   */
+    0x7F2F,     /* 0xE7D5   */
+    0x7F30,     /* 0xE7D6   */
+    0x7F31,     /* 0xE7D7   */
+    0x7F32,     /* 0xE7D8   */
+    0x7F33,     /* 0xE7D9   */
+    0x7F35,     /* 0xE7DA   */
+    0x5E7A,     /* 0xE7DB   */
+    0x757F,     /* 0xE7DC   */
+    0x5DDB,     /* 0xE7DD   */
+    0x753E,     /* 0xE7DE   */
+    0x9095,     /* 0xE7DF   */
+    0x738E,     /* 0xE7E0   */
+    0x7391,     /* 0xE7E1   */
+    0x73AE,     /* 0xE7E2   */
+    0x73A2,     /* 0xE7E3   */
+    0x739F,     /* 0xE7E4   */
+    0x73CF,     /* 0xE7E5   */
+    0x73C2,     /* 0xE7E6   */
+    0x73D1,     /* 0xE7E7   */
+    0x73B7,     /* 0xE7E8   */
+    0x73B3,     /* 0xE7E9   */
+    0x73C0,     /* 0xE7EA   */
+    0x73C9,     /* 0xE7EB   */
+    0x73C8,     /* 0xE7EC   */
+    0x73E5,     /* 0xE7ED   */
+    0x73D9,     /* 0xE7EE   */
+    0x987C,     /* 0xE7EF   */
+    0x740A,     /* 0xE7F0   */
+    0x73E9,     /* 0xE7F1   */
+    0x73E7,     /* 0xE7F2   */
+    0x73DE,     /* 0xE7F3   */
+    0x73BA,     /* 0xE7F4   */
+    0x73F2,     /* 0xE7F5   */
+    0x740F,     /* 0xE7F6   */
+    0x742A,     /* 0xE7F7   */
+    0x745B,     /* 0xE7F8   */
+    0x7426,     /* 0xE7F9   */
+    0x7425,     /* 0xE7FA   */
+    0x7428,     /* 0xE7FB   */
+    0x7430,     /* 0xE7FC   */
+    0x742E,     /* 0xE7FD   */
+    0x742C,     /* 0xE7FE   */
+    0x741B,     /* 0xE8A1   */
+    0x741A,     /* 0xE8A2   */
+    0x7441,     /* 0xE8A3   */
+    0x745C,     /* 0xE8A4   */
+    0x7457,     /* 0xE8A5   */
+    0x7455,     /* 0xE8A6   */
+    0x7459,     /* 0xE8A7   */
+    0x7477,     /* 0xE8A8   */
+    0x746D,     /* 0xE8A9   */
+    0x747E,     /* 0xE8AA   */
+    0x749C,     /* 0xE8AB   */
+    0x748E,     /* 0xE8AC   */
+    0x7480,     /* 0xE8AD   */
+    0x7481,     /* 0xE8AE   */
+    0x7487,     /* 0xE8AF   */
+    0x748B,     /* 0xE8B0   */
+    0x749E,     /* 0xE8B1   */
+    0x74A8,     /* 0xE8B2   */
+    0x74A9,     /* 0xE8B3   */
+    0x7490,     /* 0xE8B4   */
+    0x74A7,     /* 0xE8B5   */
+    0x74D2,     /* 0xE8B6   */
+    0x74BA,     /* 0xE8B7   */
+    0x97EA,     /* 0xE8B8   */
+    0x97EB,     /* 0xE8B9   */
+    0x97EC,     /* 0xE8BA   */
+    0x674C,     /* 0xE8BB   */
+    0x6753,     /* 0xE8BC   */
+    0x675E,     /* 0xE8BD   */
+    0x6748,     /* 0xE8BE   */
+    0x6769,     /* 0xE8BF   */
+    0x67A5,     /* 0xE8C0   */
+    0x6787,     /* 0xE8C1   */
+    0x676A,     /* 0xE8C2   */
+    0x6773,     /* 0xE8C3   */
+    0x6798,     /* 0xE8C4   */
+    0x67A7,     /* 0xE8C5   */
+    0x6775,     /* 0xE8C6   */
+    0x67A8,     /* 0xE8C7   */
+    0x679E,     /* 0xE8C8   */
+    0x67AD,     /* 0xE8C9   */
+    0x678B,     /* 0xE8CA   */
+    0x6777,     /* 0xE8CB   */
+    0x677C,     /* 0xE8CC   */
+    0x67F0,     /* 0xE8CD   */
+    0x6809,     /* 0xE8CE   */
+    0x67D8,     /* 0xE8CF   */
+    0x680A,     /* 0xE8D0   */
+    0x67E9,     /* 0xE8D1   */
+    0x67B0,     /* 0xE8D2   */
+    0x680C,     /* 0xE8D3   */
+    0x67D9,     /* 0xE8D4   */
+    0x67B5,     /* 0xE8D5   */
+    0x67DA,     /* 0xE8D6   */
+    0x67B3,     /* 0xE8D7   */
+    0x67DD,     /* 0xE8D8   */
+    0x6800,     /* 0xE8D9   */
+    0x67C3,     /* 0xE8DA   */
+    0x67B8,     /* 0xE8DB   */
+    0x67E2,     /* 0xE8DC   */
+    0x680E,     /* 0xE8DD   */
+    0x67C1,     /* 0xE8DE   */
+    0x67FD,     /* 0xE8DF   */
+    0x6832,     /* 0xE8E0   */
+    0x6833,     /* 0xE8E1   */
+    0x6860,     /* 0xE8E2   */
+    0x6861,     /* 0xE8E3   */
+    0x684E,     /* 0xE8E4   */
+    0x6862,     /* 0xE8E5   */
+    0x6844,     /* 0xE8E6   */
+    0x6864,     /* 0xE8E7   */
+    0x6883,     /* 0xE8E8   */
+    0x681D,     /* 0xE8E9   */
+    0x6855,     /* 0xE8EA   */
+    0x6866,     /* 0xE8EB   */
+    0x6841,     /* 0xE8EC   */
+    0x6867,     /* 0xE8ED   */
+    0x6840,     /* 0xE8EE   */
+    0x683E,     /* 0xE8EF   */
+    0x684A,     /* 0xE8F0   */
+    0x6849,     /* 0xE8F1   */
+    0x6829,     /* 0xE8F2   */
+    0x68B5,     /* 0xE8F3   */
+    0x688F,     /* 0xE8F4   */
+    0x6874,     /* 0xE8F5   */
+    0x6877,     /* 0xE8F6   */
+    0x6893,     /* 0xE8F7   */
+    0x686B,     /* 0xE8F8   */
+    0x68C2,     /* 0xE8F9   */
+    0x696E,     /* 0xE8FA   */
+    0x68FC,     /* 0xE8FB   */
+    0x691F,     /* 0xE8FC   */
+    0x6920,     /* 0xE8FD   */
+    0x68F9,     /* 0xE8FE   */
+    0x6924,     /* 0xE9A1   */
+    0x68F0,     /* 0xE9A2   */
+    0x690B,     /* 0xE9A3   */
+    0x6901,     /* 0xE9A4   */
+    0x6957,     /* 0xE9A5   */
+    0x68E3,     /* 0xE9A6   */
+    0x6910,     /* 0xE9A7   */
+    0x6971,     /* 0xE9A8   */
+    0x6939,     /* 0xE9A9   */
+    0x6960,     /* 0xE9AA   */
+    0x6942,     /* 0xE9AB   */
+    0x695D,     /* 0xE9AC   */
+    0x6984,     /* 0xE9AD   */
+    0x696B,     /* 0xE9AE   */
+    0x6980,     /* 0xE9AF   */
+    0x6998,     /* 0xE9B0   */
+    0x6978,     /* 0xE9B1   */
+    0x6934,     /* 0xE9B2   */
+    0x69CC,     /* 0xE9B3   */
+    0x6987,     /* 0xE9B4   */
+    0x6988,     /* 0xE9B5   */
+    0x69CE,     /* 0xE9B6   */
+    0x6989,     /* 0xE9B7   */
+    0x6966,     /* 0xE9B8   */
+    0x6963,     /* 0xE9B9   */
+    0x6979,     /* 0xE9BA   */
+    0x699B,     /* 0xE9BB   */
+    0x69A7,     /* 0xE9BC   */
+    0x69BB,     /* 0xE9BD   */
+    0x69AB,     /* 0xE9BE   */
+    0x69AD,     /* 0xE9BF   */
+    0x69D4,     /* 0xE9C0   */
+    0x69B1,     /* 0xE9C1   */
+    0x69C1,     /* 0xE9C2   */
+    0x69CA,     /* 0xE9C3   */
+    0x69DF,     /* 0xE9C4   */
+    0x6995,     /* 0xE9C5   */
+    0x69E0,     /* 0xE9C6   */
+    0x698D,     /* 0xE9C7   */
+    0x69FF,     /* 0xE9C8   */
+    0x6A2F,     /* 0xE9C9   */
+    0x69ED,     /* 0xE9CA   */
+    0x6A17,     /* 0xE9CB   */
+    0x6A18,     /* 0xE9CC   */
+    0x6A65,     /* 0xE9CD   */
+    0x69F2,     /* 0xE9CE   */
+    0x6A44,     /* 0xE9CF   */
+    0x6A3E,     /* 0xE9D0   */
+    0x6AA0,     /* 0xE9D1   */
+    0x6A50,     /* 0xE9D2   */
+    0x6A5B,     /* 0xE9D3   */
+    0x6A35,     /* 0xE9D4   */
+    0x6A8E,     /* 0xE9D5   */
+    0x6A79,     /* 0xE9D6   */
+    0x6A3D,     /* 0xE9D7   */
+    0x6A28,     /* 0xE9D8   */
+    0x6A58,     /* 0xE9D9   */
+    0x6A7C,     /* 0xE9DA   */
+    0x6A91,     /* 0xE9DB   */
+    0x6A90,     /* 0xE9DC   */
+    0x6AA9,     /* 0xE9DD   */
+    0x6A97,     /* 0xE9DE   */
+    0x6AAB,     /* 0xE9DF   */
+    0x7337,     /* 0xE9E0   */
+    0x7352,     /* 0xE9E1   */
+    0x6B81,     /* 0xE9E2   */
+    0x6B82,     /* 0xE9E3   */
+    0x6B87,     /* 0xE9E4   */
+    0x6B84,     /* 0xE9E5   */
+    0x6B92,     /* 0xE9E6   */
+    0x6B93,     /* 0xE9E7   */
+    0x6B8D,     /* 0xE9E8   */
+    0x6B9A,     /* 0xE9E9   */
+    0x6B9B,     /* 0xE9EA   */
+    0x6BA1,     /* 0xE9EB   */
+    0x6BAA,     /* 0xE9EC   */
+    0x8F6B,     /* 0xE9ED   */
+    0x8F6D,     /* 0xE9EE   */
+    0x8F71,     /* 0xE9EF   */
+    0x8F72,     /* 0xE9F0   */
+    0x8F73,     /* 0xE9F1   */
+    0x8F75,     /* 0xE9F2   */
+    0x8F76,     /* 0xE9F3   */
+    0x8F78,     /* 0xE9F4   */
+    0x8F77,     /* 0xE9F5   */
+    0x8F79,     /* 0xE9F6   */
+    0x8F7A,     /* 0xE9F7   */
+    0x8F7C,     /* 0xE9F8   */
+    0x8F7E,     /* 0xE9F9   */
+    0x8F81,     /* 0xE9FA   */
+    0x8F82,     /* 0xE9FB   */
+    0x8F84,     /* 0xE9FC   */
+    0x8F87,     /* 0xE9FD   */
+    0x8F8B,     /* 0xE9FE   */
+    0x8F8D,     /* 0xEAA1   */
+    0x8F8E,     /* 0xEAA2   */
+    0x8F8F,     /* 0xEAA3   */
+    0x8F98,     /* 0xEAA4   */
+    0x8F9A,     /* 0xEAA5   */
+    0x8ECE,     /* 0xEAA6   */
+    0x620B,     /* 0xEAA7   */
+    0x6217,     /* 0xEAA8   */
+    0x621B,     /* 0xEAA9   */
+    0x621F,     /* 0xEAAA   */
+    0x6222,     /* 0xEAAB   */
+    0x6221,     /* 0xEAAC   */
+    0x6225,     /* 0xEAAD   */
+    0x6224,     /* 0xEAAE   */
+    0x622C,     /* 0xEAAF   */
+    0x81E7,     /* 0xEAB0   */
+    0x74EF,     /* 0xEAB1   */
+    0x74F4,     /* 0xEAB2   */
+    0x74FF,     /* 0xEAB3   */
+    0x750F,     /* 0xEAB4   */
+    0x7511,     /* 0xEAB5   */
+    0x7513,     /* 0xEAB6   */
+    0x6534,     /* 0xEAB7   */
+    0x65EE,     /* 0xEAB8   */
+    0x65EF,     /* 0xEAB9   */
+    0x65F0,     /* 0xEABA   */
+    0x660A,     /* 0xEABB   */
+    0x6619,     /* 0xEABC   */
+    0x6772,     /* 0xEABD   */
+    0x6603,     /* 0xEABE   */
+    0x6615,     /* 0xEABF   */
+    0x6600,     /* 0xEAC0   */
+    0x7085,     /* 0xEAC1   */
+    0x66F7,     /* 0xEAC2   */
+    0x661D,     /* 0xEAC3   */
+    0x6634,     /* 0xEAC4   */
+    0x6631,     /* 0xEAC5   */
+    0x6636,     /* 0xEAC6   */
+    0x6635,     /* 0xEAC7   */
+    0x8006,     /* 0xEAC8   */
+    0x665F,     /* 0xEAC9   */
+    0x6654,     /* 0xEACA   */
+    0x6641,     /* 0xEACB   */
+    0x664F,     /* 0xEACC   */
+    0x6656,     /* 0xEACD   */
+    0x6661,     /* 0xEACE   */
+    0x6657,     /* 0xEACF   */
+    0x6677,     /* 0xEAD0   */
+    0x6684,     /* 0xEAD1   */
+    0x668C,     /* 0xEAD2   */
+    0x66A7,     /* 0xEAD3   */
+    0x669D,     /* 0xEAD4   */
+    0x66BE,     /* 0xEAD5   */
+    0x66DB,     /* 0xEAD6   */
+    0x66DC,     /* 0xEAD7   */
+    0x66E6,     /* 0xEAD8   */
+    0x66E9,     /* 0xEAD9   */
+    0x8D32,     /* 0xEADA   */
+    0x8D33,     /* 0xEADB   */
+    0x8D36,     /* 0xEADC   */
+    0x8D3B,     /* 0xEADD   */
+    0x8D3D,     /* 0xEADE   */
+    0x8D40,     /* 0xEADF   */
+    0x8D45,     /* 0xEAE0   */
+    0x8D46,     /* 0xEAE1   */
+    0x8D48,     /* 0xEAE2   */
+    0x8D49,     /* 0xEAE3   */
+    0x8D47,     /* 0xEAE4   */
+    0x8D4D,     /* 0xEAE5   */
+    0x8D55,     /* 0xEAE6   */
+    0x8D59,     /* 0xEAE7   */
+    0x89C7,     /* 0xEAE8   */
+    0x89CA,     /* 0xEAE9   */
+    0x89CB,     /* 0xEAEA   */
+    0x89CC,     /* 0xEAEB   */
+    0x89CE,     /* 0xEAEC   */
+    0x89CF,     /* 0xEAED   */
+    0x89D0,     /* 0xEAEE   */
+    0x89D1,     /* 0xEAEF   */
+    0x726E,     /* 0xEAF0   */
+    0x729F,     /* 0xEAF1   */
+    0x725D,     /* 0xEAF2   */
+    0x7266,     /* 0xEAF3   */
+    0x726F,     /* 0xEAF4   */
+    0x727E,     /* 0xEAF5   */
+    0x727F,     /* 0xEAF6   */
+    0x7284,     /* 0xEAF7   */
+    0x728B,     /* 0xEAF8   */
+    0x728D,     /* 0xEAF9   */
+    0x728F,     /* 0xEAFA   */
+    0x7292,     /* 0xEAFB   */
+    0x6308,     /* 0xEAFC   */
+    0x6332,     /* 0xEAFD   */
+    0x63B0,     /* 0xEAFE   */
+    0x643F,     /* 0xEBA1   */
+    0x64D8,     /* 0xEBA2   */
+    0x8004,     /* 0xEBA3   */
+    0x6BEA,     /* 0xEBA4   */
+    0x6BF3,     /* 0xEBA5   */
+    0x6BFD,     /* 0xEBA6   */
+    0x6BF5,     /* 0xEBA7   */
+    0x6BF9,     /* 0xEBA8   */
+    0x6C05,     /* 0xEBA9   */
+    0x6C07,     /* 0xEBAA   */
+    0x6C06,     /* 0xEBAB   */
+    0x6C0D,     /* 0xEBAC   */
+    0x6C15,     /* 0xEBAD   */
+    0x6C18,     /* 0xEBAE   */
+    0x6C19,     /* 0xEBAF   */
+    0x6C1A,     /* 0xEBB0   */
+    0x6C21,     /* 0xEBB1   */
+    0x6C29,     /* 0xEBB2   */
+    0x6C24,     /* 0xEBB3   */
+    0x6C2A,     /* 0xEBB4   */
+    0x6C32,     /* 0xEBB5   */
+    0x6535,     /* 0xEBB6   */
+    0x6555,     /* 0xEBB7   */
+    0x656B,     /* 0xEBB8   */
+    0x724D,     /* 0xEBB9   */
+    0x7252,     /* 0xEBBA   */
+    0x7256,     /* 0xEBBB   */
+    0x7230,     /* 0xEBBC   */
+    0x8662,     /* 0xEBBD   */
+    0x5216,     /* 0xEBBE   */
+    0x809F,     /* 0xEBBF   */
+    0x809C,     /* 0xEBC0   */
+    0x8093,     /* 0xEBC1   */
+    0x80BC,     /* 0xEBC2   */
+    0x670A,     /* 0xEBC3   */
+    0x80BD,     /* 0xEBC4   */
+    0x80B1,     /* 0xEBC5   */
+    0x80AB,     /* 0xEBC6   */
+    0x80AD,     /* 0xEBC7   */
+    0x80B4,     /* 0xEBC8   */
+    0x80B7,     /* 0xEBC9   */
+    0x80E7,     /* 0xEBCA   */
+    0x80E8,     /* 0xEBCB   */
+    0x80E9,     /* 0xEBCC   */
+    0x80EA,     /* 0xEBCD   */
+    0x80DB,     /* 0xEBCE   */
+    0x80C2,     /* 0xEBCF   */
+    0x80C4,     /* 0xEBD0   */
+    0x80D9,     /* 0xEBD1   */
+    0x80CD,     /* 0xEBD2   */
+    0x80D7,     /* 0xEBD3   */
+    0x6710,     /* 0xEBD4   */
+    0x80DD,     /* 0xEBD5   */
+    0x80EB,     /* 0xEBD6   */
+    0x80F1,     /* 0xEBD7   */
+    0x80F4,     /* 0xEBD8   */
+    0x80ED,     /* 0xEBD9   */
+    0x810D,     /* 0xEBDA   */
+    0x810E,     /* 0xEBDB   */
+    0x80F2,     /* 0xEBDC   */
+    0x80FC,     /* 0xEBDD   */
+    0x6715,     /* 0xEBDE   */
+    0x8112,     /* 0xEBDF   */
+    0x8C5A,     /* 0xEBE0   */
+    0x8136,     /* 0xEBE1   */
+    0x811E,     /* 0xEBE2   */
+    0x812C,     /* 0xEBE3   */
+    0x8118,     /* 0xEBE4   */
+    0x8132,     /* 0xEBE5   */
+    0x8148,     /* 0xEBE6   */
+    0x814C,     /* 0xEBE7   */
+    0x8153,     /* 0xEBE8   */
+    0x8174,     /* 0xEBE9   */
+    0x8159,     /* 0xEBEA   */
+    0x815A,     /* 0xEBEB   */
+    0x8171,     /* 0xEBEC   */
+    0x8160,     /* 0xEBED   */
+    0x8169,     /* 0xEBEE   */
+    0x817C,     /* 0xEBEF   */
+    0x817D,     /* 0xEBF0   */
+    0x816D,     /* 0xEBF1   */
+    0x8167,     /* 0xEBF2   */
+    0x584D,     /* 0xEBF3   */
+    0x5AB5,     /* 0xEBF4   */
+    0x8188,     /* 0xEBF5   */
+    0x8182,     /* 0xEBF6   */
+    0x8191,     /* 0xEBF7   */
+    0x6ED5,     /* 0xEBF8   */
+    0x81A3,     /* 0xEBF9   */
+    0x81AA,     /* 0xEBFA   */
+    0x81CC,     /* 0xEBFB   */
+    0x6726,     /* 0xEBFC   */
+    0x81CA,     /* 0xEBFD   */
+    0x81BB,     /* 0xEBFE   */
+    0x81C1,     /* 0xECA1   */
+    0x81A6,     /* 0xECA2   */
+    0x6B24,     /* 0xECA3   */
+    0x6B37,     /* 0xECA4   */
+    0x6B39,     /* 0xECA5   */
+    0x6B43,     /* 0xECA6   */
+    0x6B46,     /* 0xECA7   */
+    0x6B59,     /* 0xECA8   */
+    0x98D1,     /* 0xECA9   */
+    0x98D2,     /* 0xECAA   */
+    0x98D3,     /* 0xECAB   */
+    0x98D5,     /* 0xECAC   */
+    0x98D9,     /* 0xECAD   */
+    0x98DA,     /* 0xECAE   */
+    0x6BB3,     /* 0xECAF   */
+    0x5F40,     /* 0xECB0   */
+    0x6BC2,     /* 0xECB1   */
+    0x89F3,     /* 0xECB2   */
+    0x6590,     /* 0xECB3   */
+    0x9F51,     /* 0xECB4   */
+    0x6593,     /* 0xECB5   */
+    0x65BC,     /* 0xECB6   */
+    0x65C6,     /* 0xECB7   */
+    0x65C4,     /* 0xECB8   */
+    0x65C3,     /* 0xECB9   */
+    0x65CC,     /* 0xECBA   */
+    0x65CE,     /* 0xECBB   */
+    0x65D2,     /* 0xECBC   */
+    0x65D6,     /* 0xECBD   */
+    0x7080,     /* 0xECBE   */
+    0x709C,     /* 0xECBF   */
+    0x7096,     /* 0xECC0   */
+    0x709D,     /* 0xECC1   */
+    0x70BB,     /* 0xECC2   */
+    0x70C0,     /* 0xECC3   */
+    0x70B7,     /* 0xECC4   */
+    0x70AB,     /* 0xECC5   */
+    0x70B1,     /* 0xECC6   */
+    0x70E8,     /* 0xECC7   */
+    0x70CA,     /* 0xECC8   */
+    0x7110,     /* 0xECC9   */
+    0x7113,     /* 0xECCA   */
+    0x7116,     /* 0xECCB   */
+    0x712F,     /* 0xECCC   */
+    0x7131,     /* 0xECCD   */
+    0x7173,     /* 0xECCE   */
+    0x715C,     /* 0xECCF   */
+    0x7168,     /* 0xECD0   */
+    0x7145,     /* 0xECD1   */
+    0x7172,     /* 0xECD2   */
+    0x714A,     /* 0xECD3   */
+    0x7178,     /* 0xECD4   */
+    0x717A,     /* 0xECD5   */
+    0x7198,     /* 0xECD6   */
+    0x71B3,     /* 0xECD7   */
+    0x71B5,     /* 0xECD8   */
+    0x71A8,     /* 0xECD9   */
+    0x71A0,     /* 0xECDA   */
+    0x71E0,     /* 0xECDB   */
+    0x71D4,     /* 0xECDC   */
+    0x71E7,     /* 0xECDD   */
+    0x71F9,     /* 0xECDE   */
+    0x721D,     /* 0xECDF   */
+    0x7228,     /* 0xECE0   */
+    0x706C,     /* 0xECE1   */
+    0x7118,     /* 0xECE2   */
+    0x7166,     /* 0xECE3   */
+    0x71B9,     /* 0xECE4   */
+    0x623E,     /* 0xECE5   */
+    0x623D,     /* 0xECE6   */
+    0x6243,     /* 0xECE7   */
+    0x6248,     /* 0xECE8   */
+    0x6249,     /* 0xECE9   */
+    0x793B,     /* 0xECEA   */
+    0x7940,     /* 0xECEB   */
+    0x7946,     /* 0xECEC   */
+    0x7949,     /* 0xECED   */
+    0x795B,     /* 0xECEE   */
+    0x795C,     /* 0xECEF   */
+    0x7953,     /* 0xECF0   */
+    0x795A,     /* 0xECF1   */
+    0x7962,     /* 0xECF2   */
+    0x7957,     /* 0xECF3   */
+    0x7960,     /* 0xECF4   */
+    0x796F,     /* 0xECF5   */
+    0x7967,     /* 0xECF6   */
+    0x797A,     /* 0xECF7   */
+    0x7985,     /* 0xECF8   */
+    0x798A,     /* 0xECF9   */
+    0x799A,     /* 0xECFA   */
+    0x79A7,     /* 0xECFB   */
+    0x79B3,     /* 0xECFC   */
+    0x5FD1,     /* 0xECFD   */
+    0x5FD0,     /* 0xECFE   */
+    0x603C,     /* 0xEDA1   */
+    0x605D,     /* 0xEDA2   */
+    0x605A,     /* 0xEDA3   */
+    0x6067,     /* 0xEDA4   */
+    0x6041,     /* 0xEDA5   */
+    0x6059,     /* 0xEDA6   */
+    0x6063,     /* 0xEDA7   */
+    0x60AB,     /* 0xEDA8   */
+    0x6106,     /* 0xEDA9   */
+    0x610D,     /* 0xEDAA   */
+    0x615D,     /* 0xEDAB   */
+    0x61A9,     /* 0xEDAC   */
+    0x619D,     /* 0xEDAD   */
+    0x61CB,     /* 0xEDAE   */
+    0x61D1,     /* 0xEDAF   */
+    0x6206,     /* 0xEDB0   */
+    0x8080,     /* 0xEDB1   */
+    0x807F,     /* 0xEDB2   */
+    0x6C93,     /* 0xEDB3   */
+    0x6CF6,     /* 0xEDB4   */
+    0x6DFC,     /* 0xEDB5   */
+    0x77F6,     /* 0xEDB6   */
+    0x77F8,     /* 0xEDB7   */
+    0x7800,     /* 0xEDB8   */
+    0x7809,     /* 0xEDB9   */
+    0x7817,     /* 0xEDBA   */
+    0x7818,     /* 0xEDBB   */
+    0x7811,     /* 0xEDBC   */
+    0x65AB,     /* 0xEDBD   */
+    0x782D,     /* 0xEDBE   */
+    0x781C,     /* 0xEDBF   */
+    0x781D,     /* 0xEDC0   */
+    0x7839,     /* 0xEDC1   */
+    0x783A,     /* 0xEDC2   */
+    0x783B,     /* 0xEDC3   */
+    0x781F,     /* 0xEDC4   */
+    0x783C,     /* 0xEDC5   */
+    0x7825,     /* 0xEDC6   */
+    0x782C,     /* 0xEDC7   */
+    0x7823,     /* 0xEDC8   */
+    0x7829,     /* 0xEDC9   */
+    0x784E,     /* 0xEDCA   */
+    0x786D,     /* 0xEDCB   */
+    0x7856,     /* 0xEDCC   */
+    0x7857,     /* 0xEDCD   */
+    0x7826,     /* 0xEDCE   */
+    0x7850,     /* 0xEDCF   */
+    0x7847,     /* 0xEDD0   */
+    0x784C,     /* 0xEDD1   */
+    0x786A,     /* 0xEDD2   */
+    0x789B,     /* 0xEDD3   */
+    0x7893,     /* 0xEDD4   */
+    0x789A,     /* 0xEDD5   */
+    0x7887,     /* 0xEDD6   */
+    0x789C,     /* 0xEDD7   */
+    0x78A1,     /* 0xEDD8   */
+    0x78A3,     /* 0xEDD9   */
+    0x78B2,     /* 0xEDDA   */
+    0x78B9,     /* 0xEDDB   */
+    0x78A5,     /* 0xEDDC   */
+    0x78D4,     /* 0xEDDD   */
+    0x78D9,     /* 0xEDDE   */
+    0x78C9,     /* 0xEDDF   */
+    0x78EC,     /* 0xEDE0   */
+    0x78F2,     /* 0xEDE1   */
+    0x7905,     /* 0xEDE2   */
+    0x78F4,     /* 0xEDE3   */
+    0x7913,     /* 0xEDE4   */
+    0x7924,     /* 0xEDE5   */
+    0x791E,     /* 0xEDE6   */
+    0x7934,     /* 0xEDE7   */
+    0x9F9B,     /* 0xEDE8   */
+    0x9EF9,     /* 0xEDE9   */
+    0x9EFB,     /* 0xEDEA   */
+    0x9EFC,     /* 0xEDEB   */
+    0x76F1,     /* 0xEDEC   */
+    0x7704,     /* 0xEDED   */
+    0x770D,     /* 0xEDEE   */
+    0x76F9,     /* 0xEDEF   */
+    0x7707,     /* 0xEDF0   */
+    0x7708,     /* 0xEDF1   */
+    0x771A,     /* 0xEDF2   */
+    0x7722,     /* 0xEDF3   */
+    0x7719,     /* 0xEDF4   */
+    0x772D,     /* 0xEDF5   */
+    0x7726,     /* 0xEDF6   */
+    0x7735,     /* 0xEDF7   */
+    0x7738,     /* 0xEDF8   */
+    0x7750,     /* 0xEDF9   */
+    0x7751,     /* 0xEDFA   */
+    0x7747,     /* 0xEDFB   */
+    0x7743,     /* 0xEDFC   */
+    0x775A,     /* 0xEDFD   */
+    0x7768,     /* 0xEDFE   */
+    0x7762,     /* 0xEEA1   */
+    0x7765,     /* 0xEEA2   */
+    0x777F,     /* 0xEEA3   */
+    0x778D,     /* 0xEEA4   */
+    0x777D,     /* 0xEEA5   */
+    0x7780,     /* 0xEEA6   */
+    0x778C,     /* 0xEEA7   */
+    0x7791,     /* 0xEEA8   */
+    0x779F,     /* 0xEEA9   */
+    0x77A0,     /* 0xEEAA   */
+    0x77B0,     /* 0xEEAB   */
+    0x77B5,     /* 0xEEAC   */
+    0x77BD,     /* 0xEEAD   */
+    0x753A,     /* 0xEEAE   */
+    0x7540,     /* 0xEEAF   */
+    0x754E,     /* 0xEEB0   */
+    0x754B,     /* 0xEEB1   */
+    0x7548,     /* 0xEEB2   */
+    0x755B,     /* 0xEEB3   */
+    0x7572,     /* 0xEEB4   */
+    0x7579,     /* 0xEEB5   */
+    0x7583,     /* 0xEEB6   */
+    0x7F58,     /* 0xEEB7   */
+    0x7F61,     /* 0xEEB8   */
+    0x7F5F,     /* 0xEEB9   */
+    0x8A48,     /* 0xEEBA   */
+    0x7F68,     /* 0xEEBB   */
+    0x7F74,     /* 0xEEBC   */
+    0x7F71,     /* 0xEEBD   */
+    0x7F79,     /* 0xEEBE   */
+    0x7F81,     /* 0xEEBF   */
+    0x7F7E,     /* 0xEEC0   */
+    0x76CD,     /* 0xEEC1   */
+    0x76E5,     /* 0xEEC2   */
+    0x8832,     /* 0xEEC3   */
+    0x9485,     /* 0xEEC4   */
+    0x9486,     /* 0xEEC5   */
+    0x9487,     /* 0xEEC6   */
+    0x948B,     /* 0xEEC7   */
+    0x948A,     /* 0xEEC8   */
+    0x948C,     /* 0xEEC9   */
+    0x948D,     /* 0xEECA   */
+    0x948F,     /* 0xEECB   */
+    0x9490,     /* 0xEECC   */
+    0x9494,     /* 0xEECD   */
+    0x9497,     /* 0xEECE   */
+    0x9495,     /* 0xEECF   */
+    0x949A,     /* 0xEED0   */
+    0x949B,     /* 0xEED1   */
+    0x949C,     /* 0xEED2   */
+    0x94A3,     /* 0xEED3   */
+    0x94A4,     /* 0xEED4   */
+    0x94AB,     /* 0xEED5   */
+    0x94AA,     /* 0xEED6   */
+    0x94AD,     /* 0xEED7   */
+    0x94AC,     /* 0xEED8   */
+    0x94AF,     /* 0xEED9   */
+    0x94B0,     /* 0xEEDA   */
+    0x94B2,     /* 0xEEDB   */
+    0x94B4,     /* 0xEEDC   */
+    0x94B6,     /* 0xEEDD   */
+    0x94B7,     /* 0xEEDE   */
+    0x94B8,     /* 0xEEDF   */
+    0x94B9,     /* 0xEEE0   */
+    0x94BA,     /* 0xEEE1   */
+    0x94BC,     /* 0xEEE2   */
+    0x94BD,     /* 0xEEE3   */
+    0x94BF,     /* 0xEEE4   */
+    0x94C4,     /* 0xEEE5   */
+    0x94C8,     /* 0xEEE6   */
+    0x94C9,     /* 0xEEE7   */
+    0x94CA,     /* 0xEEE8   */
+    0x94CB,     /* 0xEEE9   */
+    0x94CC,     /* 0xEEEA   */
+    0x94CD,     /* 0xEEEB   */
+    0x94CE,     /* 0xEEEC   */
+    0x94D0,     /* 0xEEED   */
+    0x94D1,     /* 0xEEEE   */
+    0x94D2,     /* 0xEEEF   */
+    0x94D5,     /* 0xEEF0   */
+    0x94D6,     /* 0xEEF1   */
+    0x94D7,     /* 0xEEF2   */
+    0x94D9,     /* 0xEEF3   */
+    0x94D8,     /* 0xEEF4   */
+    0x94DB,     /* 0xEEF5   */
+    0x94DE,     /* 0xEEF6   */
+    0x94DF,     /* 0xEEF7   */
+    0x94E0,     /* 0xEEF8   */
+    0x94E2,     /* 0xEEF9   */
+    0x94E4,     /* 0xEEFA   */
+    0x94E5,     /* 0xEEFB   */
+    0x94E7,     /* 0xEEFC   */
+    0x94E8,     /* 0xEEFD   */
+    0x94EA,     /* 0xEEFE   */
+    0x94E9,     /* 0xEFA1   */
+    0x94EB,     /* 0xEFA2   */
+    0x94EE,     /* 0xEFA3   */
+    0x94EF,     /* 0xEFA4   */
+    0x94F3,     /* 0xEFA5   */
+    0x94F4,     /* 0xEFA6   */
+    0x94F5,     /* 0xEFA7   */
+    0x94F7,     /* 0xEFA8   */
+    0x94F9,     /* 0xEFA9   */
+    0x94FC,     /* 0xEFAA   */
+    0x94FD,     /* 0xEFAB   */
+    0x94FF,     /* 0xEFAC   */
+    0x9503,     /* 0xEFAD   */
+    0x9502,     /* 0xEFAE   */
+    0x9506,     /* 0xEFAF   */
+    0x9507,     /* 0xEFB0   */
+    0x9509,     /* 0xEFB1   */
+    0x950A,     /* 0xEFB2   */
+    0x950D,     /* 0xEFB3   */
+    0x950E,     /* 0xEFB4   */
+    0x950F,     /* 0xEFB5   */
+    0x9512,     /* 0xEFB6   */
+    0x9513,     /* 0xEFB7   */
+    0x9514,     /* 0xEFB8   */
+    0x9515,     /* 0xEFB9   */
+    0x9516,     /* 0xEFBA   */
+    0x9518,     /* 0xEFBB   */
+    0x951B,     /* 0xEFBC   */
+    0x951D,     /* 0xEFBD   */
+    0x951E,     /* 0xEFBE   */
+    0x951F,     /* 0xEFBF   */
+    0x9522,     /* 0xEFC0   */
+    0x952A,     /* 0xEFC1   */
+    0x952B,     /* 0xEFC2   */
+    0x9529,     /* 0xEFC3   */
+    0x952C,     /* 0xEFC4   */
+    0x9531,     /* 0xEFC5   */
+    0x9532,     /* 0xEFC6   */
+    0x9534,     /* 0xEFC7   */
+    0x9536,     /* 0xEFC8   */
+    0x9537,     /* 0xEFC9   */
+    0x9538,     /* 0xEFCA   */
+    0x953C,     /* 0xEFCB   */
+    0x953E,     /* 0xEFCC   */
+    0x953F,     /* 0xEFCD   */
+    0x9542,     /* 0xEFCE   */
+    0x9535,     /* 0xEFCF   */
+    0x9544,     /* 0xEFD0   */
+    0x9545,     /* 0xEFD1   */
+    0x9546,     /* 0xEFD2   */
+    0x9549,     /* 0xEFD3   */
+    0x954C,     /* 0xEFD4   */
+    0x954E,     /* 0xEFD5   */
+    0x954F,     /* 0xEFD6   */
+    0x9552,     /* 0xEFD7   */
+    0x9553,     /* 0xEFD8   */
+    0x9554,     /* 0xEFD9   */
+    0x9556,     /* 0xEFDA   */
+    0x9557,     /* 0xEFDB   */
+    0x9558,     /* 0xEFDC   */
+    0x9559,     /* 0xEFDD   */
+    0x955B,     /* 0xEFDE   */
+    0x955E,     /* 0xEFDF   */
+    0x955F,     /* 0xEFE0   */
+    0x955D,     /* 0xEFE1   */
+    0x9561,     /* 0xEFE2   */
+    0x9562,     /* 0xEFE3   */
+    0x9564,     /* 0xEFE4   */
+    0x9565,     /* 0xEFE5   */
+    0x9566,     /* 0xEFE6   */
+    0x9567,     /* 0xEFE7   */
+    0x9568,     /* 0xEFE8   */
+    0x9569,     /* 0xEFE9   */
+    0x956A,     /* 0xEFEA   */
+    0x956B,     /* 0xEFEB   */
+    0x956C,     /* 0xEFEC   */
+    0x956F,     /* 0xEFED   */
+    0x9571,     /* 0xEFEE   */
+    0x9572,     /* 0xEFEF   */
+    0x9573,     /* 0xEFF0   */
+    0x953A,     /* 0xEFF1   */
+    0x77E7,     /* 0xEFF2   */
+    0x77EC,     /* 0xEFF3   */
+    0x96C9,     /* 0xEFF4   */
+    0x79D5,     /* 0xEFF5   */
+    0x79ED,     /* 0xEFF6   */
+    0x79E3,     /* 0xEFF7   */
+    0x79EB,     /* 0xEFF8   */
+    0x7A06,     /* 0xEFF9   */
+    0x5D47,     /* 0xEFFA   */
+    0x7A03,     /* 0xEFFB   */
+    0x7A02,     /* 0xEFFC   */
+    0x7A1E,     /* 0xEFFD   */
+    0x7A14,     /* 0xEFFE   */
+    0x7A39,     /* 0xF0A1   */
+    0x7A37,     /* 0xF0A2   */
+    0x7A51,     /* 0xF0A3   */
+    0x9ECF,     /* 0xF0A4   */
+    0x99A5,     /* 0xF0A5   */
+    0x7A70,     /* 0xF0A6   */
+    0x7688,     /* 0xF0A7   */
+    0x768E,     /* 0xF0A8   */
+    0x7693,     /* 0xF0A9   */
+    0x7699,     /* 0xF0AA   */
+    0x76A4,     /* 0xF0AB   */
+    0x74DE,     /* 0xF0AC   */
+    0x74E0,     /* 0xF0AD   */
+    0x752C,     /* 0xF0AE   */
+    0x9E20,     /* 0xF0AF   */
+    0x9E22,     /* 0xF0B0   */
+    0x9E28,     /* 0xF0B1   */
+    0x9E29,     /* 0xF0B2   */
+    0x9E2A,     /* 0xF0B3   */
+    0x9E2B,     /* 0xF0B4   */
+    0x9E2C,     /* 0xF0B5   */
+    0x9E32,     /* 0xF0B6   */
+    0x9E31,     /* 0xF0B7   */
+    0x9E36,     /* 0xF0B8   */
+    0x9E38,     /* 0xF0B9   */
+    0x9E37,     /* 0xF0BA   */
+    0x9E39,     /* 0xF0BB   */
+    0x9E3A,     /* 0xF0BC   */
+    0x9E3E,     /* 0xF0BD   */
+    0x9E41,     /* 0xF0BE   */
+    0x9E42,     /* 0xF0BF   */
+    0x9E44,     /* 0xF0C0   */
+    0x9E46,     /* 0xF0C1   */
+    0x9E47,     /* 0xF0C2   */
+    0x9E48,     /* 0xF0C3   */
+    0x9E49,     /* 0xF0C4   */
+    0x9E4B,     /* 0xF0C5   */
+    0x9E4C,     /* 0xF0C6   */
+    0x9E4E,     /* 0xF0C7   */
+    0x9E51,     /* 0xF0C8   */
+    0x9E55,     /* 0xF0C9   */
+    0x9E57,     /* 0xF0CA   */
+    0x9E5A,     /* 0xF0CB   */
+    0x9E5B,     /* 0xF0CC   */
+    0x9E5C,     /* 0xF0CD   */
+    0x9E5E,     /* 0xF0CE   */
+    0x9E63,     /* 0xF0CF   */
+    0x9E66,     /* 0xF0D0   */
+    0x9E67,     /* 0xF0D1   */
+    0x9E68,     /* 0xF0D2   */
+    0x9E69,     /* 0xF0D3   */
+    0x9E6A,     /* 0xF0D4   */
+    0x9E6B,     /* 0xF0D5   */
+    0x9E6C,     /* 0xF0D6   */
+    0x9E71,     /* 0xF0D7   */
+    0x9E6D,     /* 0xF0D8   */
+    0x9E73,     /* 0xF0D9   */
+    0x7592,     /* 0xF0DA   */
+    0x7594,     /* 0xF0DB   */
+    0x7596,     /* 0xF0DC   */
+    0x75A0,     /* 0xF0DD   */
+    0x759D,     /* 0xF0DE   */
+    0x75AC,     /* 0xF0DF   */
+    0x75A3,     /* 0xF0E0   */
+    0x75B3,     /* 0xF0E1   */
+    0x75B4,     /* 0xF0E2   */
+    0x75B8,     /* 0xF0E3   */
+    0x75C4,     /* 0xF0E4   */
+    0x75B1,     /* 0xF0E5   */
+    0x75B0,     /* 0xF0E6   */
+    0x75C3,     /* 0xF0E7   */
+    0x75C2,     /* 0xF0E8   */
+    0x75D6,     /* 0xF0E9   */
+    0x75CD,     /* 0xF0EA   */
+    0x75E3,     /* 0xF0EB   */
+    0x75E8,     /* 0xF0EC   */
+    0x75E6,     /* 0xF0ED   */
+    0x75E4,     /* 0xF0EE   */
+    0x75EB,     /* 0xF0EF   */
+    0x75E7,     /* 0xF0F0   */
+    0x7603,     /* 0xF0F1   */
+    0x75F1,     /* 0xF0F2   */
+    0x75FC,     /* 0xF0F3   */
+    0x75FF,     /* 0xF0F4   */
+    0x7610,     /* 0xF0F5   */
+    0x7600,     /* 0xF0F6   */
+    0x7605,     /* 0xF0F7   */
+    0x760C,     /* 0xF0F8   */
+    0x7617,     /* 0xF0F9   */
+    0x760A,     /* 0xF0FA   */
+    0x7625,     /* 0xF0FB   */
+    0x7618,     /* 0xF0FC   */
+    0x7615,     /* 0xF0FD   */
+    0x7619,     /* 0xF0FE   */
+    0x761B,     /* 0xF1A1   */
+    0x763C,     /* 0xF1A2   */
+    0x7622,     /* 0xF1A3   */
+    0x7620,     /* 0xF1A4   */
+    0x7640,     /* 0xF1A5   */
+    0x762D,     /* 0xF1A6   */
+    0x7630,     /* 0xF1A7   */
+    0x763F,     /* 0xF1A8   */
+    0x7635,     /* 0xF1A9   */
+    0x7643,     /* 0xF1AA   */
+    0x763E,     /* 0xF1AB   */
+    0x7633,     /* 0xF1AC   */
+    0x764D,     /* 0xF1AD   */
+    0x765E,     /* 0xF1AE   */
+    0x7654,     /* 0xF1AF   */
+    0x765C,     /* 0xF1B0   */
+    0x7656,     /* 0xF1B1   */
+    0x766B,     /* 0xF1B2   */
+    0x766F,     /* 0xF1B3   */
+    0x7FCA,     /* 0xF1B4   */
+    0x7AE6,     /* 0xF1B5   */
+    0x7A78,     /* 0xF1B6   */
+    0x7A79,     /* 0xF1B7   */
+    0x7A80,     /* 0xF1B8   */
+    0x7A86,     /* 0xF1B9   */
+    0x7A88,     /* 0xF1BA   */
+    0x7A95,     /* 0xF1BB   */
+    0x7AA6,     /* 0xF1BC   */
+    0x7AA0,     /* 0xF1BD   */
+    0x7AAC,     /* 0xF1BE   */
+    0x7AA8,     /* 0xF1BF   */
+    0x7AAD,     /* 0xF1C0   */
+    0x7AB3,     /* 0xF1C1   */
+    0x8864,     /* 0xF1C2   */
+    0x8869,     /* 0xF1C3   */
+    0x8872,     /* 0xF1C4   */
+    0x887D,     /* 0xF1C5   */
+    0x887F,     /* 0xF1C6   */
+    0x8882,     /* 0xF1C7   */
+    0x88A2,     /* 0xF1C8   */
+    0x88C6,     /* 0xF1C9   */
+    0x88B7,     /* 0xF1CA   */
+    0x88BC,     /* 0xF1CB   */
+    0x88C9,     /* 0xF1CC   */
+    0x88E2,     /* 0xF1CD   */
+    0x88CE,     /* 0xF1CE   */
+    0x88E3,     /* 0xF1CF   */
+    0x88E5,     /* 0xF1D0   */
+    0x88F1,     /* 0xF1D1   */
+    0x891A,     /* 0xF1D2   */
+    0x88FC,     /* 0xF1D3   */
+    0x88E8,     /* 0xF1D4   */
+    0x88FE,     /* 0xF1D5   */
+    0x88F0,     /* 0xF1D6   */
+    0x8921,     /* 0xF1D7   */
+    0x8919,     /* 0xF1D8   */
+    0x8913,     /* 0xF1D9   */
+    0x891B,     /* 0xF1DA   */
+    0x890A,     /* 0xF1DB   */
+    0x8934,     /* 0xF1DC   */
+    0x892B,     /* 0xF1DD   */
+    0x8936,     /* 0xF1DE   */
+    0x8941,     /* 0xF1DF   */
+    0x8966,     /* 0xF1E0   */
+    0x897B,     /* 0xF1E1   */
+    0x758B,     /* 0xF1E2   */
+    0x80E5,     /* 0xF1E3   */
+    0x76B2,     /* 0xF1E4   */
+    0x76B4,     /* 0xF1E5   */
+    0x77DC,     /* 0xF1E6   */
+    0x8012,     /* 0xF1E7   */
+    0x8014,     /* 0xF1E8   */
+    0x8016,     /* 0xF1E9   */
+    0x801C,     /* 0xF1EA   */
+    0x8020,     /* 0xF1EB   */
+    0x8022,     /* 0xF1EC   */
+    0x8025,     /* 0xF1ED   */
+    0x8026,     /* 0xF1EE   */
+    0x8027,     /* 0xF1EF   */
+    0x8029,     /* 0xF1F0   */
+    0x8028,     /* 0xF1F1   */
+    0x8031,     /* 0xF1F2   */
+    0x800B,     /* 0xF1F3   */
+    0x8035,     /* 0xF1F4   */
+    0x8043,     /* 0xF1F5   */
+    0x8046,     /* 0xF1F6   */
+    0x804D,     /* 0xF1F7   */
+    0x8052,     /* 0xF1F8   */
+    0x8069,     /* 0xF1F9   */
+    0x8071,     /* 0xF1FA   */
+    0x8983,     /* 0xF1FB   */
+    0x9878,     /* 0xF1FC   */
+    0x9880,     /* 0xF1FD   */
+    0x9883,     /* 0xF1FE   */
+    0x9889,     /* 0xF2A1   */
+    0x988C,     /* 0xF2A2   */
+    0x988D,     /* 0xF2A3   */
+    0x988F,     /* 0xF2A4   */
+    0x9894,     /* 0xF2A5   */
+    0x989A,     /* 0xF2A6   */
+    0x989B,     /* 0xF2A7   */
+    0x989E,     /* 0xF2A8   */
+    0x989F,     /* 0xF2A9   */
+    0x98A1,     /* 0xF2AA   */
+    0x98A2,     /* 0xF2AB   */
+    0x98A5,     /* 0xF2AC   */
+    0x98A6,     /* 0xF2AD   */
+    0x864D,     /* 0xF2AE   */
+    0x8654,     /* 0xF2AF   */
+    0x866C,     /* 0xF2B0   */
+    0x866E,     /* 0xF2B1   */
+    0x867F,     /* 0xF2B2   */
+    0x867A,     /* 0xF2B3   */
+    0x867C,     /* 0xF2B4   */
+    0x867B,     /* 0xF2B5   */
+    0x86A8,     /* 0xF2B6   */
+    0x868D,     /* 0xF2B7   */
+    0x868B,     /* 0xF2B8   */
+    0x86AC,     /* 0xF2B9   */
+    0x869D,     /* 0xF2BA   */
+    0x86A7,     /* 0xF2BB   */
+    0x86A3,     /* 0xF2BC   */
+    0x86AA,     /* 0xF2BD   */
+    0x8693,     /* 0xF2BE   */
+    0x86A9,     /* 0xF2BF   */
+    0x86B6,     /* 0xF2C0   */
+    0x86C4,     /* 0xF2C1   */
+    0x86B5,     /* 0xF2C2   */
+    0x86CE,     /* 0xF2C3   */
+    0x86B0,     /* 0xF2C4   */
+    0x86BA,     /* 0xF2C5   */
+    0x86B1,     /* 0xF2C6   */
+    0x86AF,     /* 0xF2C7   */
+    0x86C9,     /* 0xF2C8   */
+    0x86CF,     /* 0xF2C9   */
+    0x86B4,     /* 0xF2CA   */
+    0x86E9,     /* 0xF2CB   */
+    0x86F1,     /* 0xF2CC   */
+    0x86F2,     /* 0xF2CD   */
+    0x86ED,     /* 0xF2CE   */
+    0x86F3,     /* 0xF2CF   */
+    0x86D0,     /* 0xF2D0   */
+    0x8713,     /* 0xF2D1   */
+    0x86DE,     /* 0xF2D2   */
+    0x86F4,     /* 0xF2D3   */
+    0x86DF,     /* 0xF2D4   */
+    0x86D8,     /* 0xF2D5   */
+    0x86D1,     /* 0xF2D6   */
+    0x8703,     /* 0xF2D7   */
+    0x8707,     /* 0xF2D8   */
+    0x86F8,     /* 0xF2D9   */
+    0x8708,     /* 0xF2DA   */
+    0x870A,     /* 0xF2DB   */
+    0x870D,     /* 0xF2DC   */
+    0x8709,     /* 0xF2DD   */
+    0x8723,     /* 0xF2DE   */
+    0x873B,     /* 0xF2DF   */
+    0x871E,     /* 0xF2E0   */
+    0x8725,     /* 0xF2E1   */
+    0x872E,     /* 0xF2E2   */
+    0x871A,     /* 0xF2E3   */
+    0x873E,     /* 0xF2E4   */
+    0x8748,     /* 0xF2E5   */
+    0x8734,     /* 0xF2E6   */
+    0x8731,     /* 0xF2E7   */
+    0x8729,     /* 0xF2E8   */
+    0x8737,     /* 0xF2E9   */
+    0x873F,     /* 0xF2EA   */
+    0x8782,     /* 0xF2EB   */
+    0x8722,     /* 0xF2EC   */
+    0x877D,     /* 0xF2ED   */
+    0x877E,     /* 0xF2EE   */
+    0x877B,     /* 0xF2EF   */
+    0x8760,     /* 0xF2F0   */
+    0x8770,     /* 0xF2F1   */
+    0x874C,     /* 0xF2F2   */
+    0x876E,     /* 0xF2F3   */
+    0x878B,     /* 0xF2F4   */
+    0x8753,     /* 0xF2F5   */
+    0x8763,     /* 0xF2F6   */
+    0x877C,     /* 0xF2F7   */
+    0x8764,     /* 0xF2F8   */
+    0x8759,     /* 0xF2F9   */
+    0x8765,     /* 0xF2FA   */
+    0x8793,     /* 0xF2FB   */
+    0x87AF,     /* 0xF2FC   */
+    0x87A8,     /* 0xF2FD   */
+    0x87D2,     /* 0xF2FE   */
+    0x87C6,     /* 0xF3A1   */
+    0x8788,     /* 0xF3A2   */
+    0x8785,     /* 0xF3A3   */
+    0x87AD,     /* 0xF3A4   */
+    0x8797,     /* 0xF3A5   */
+    0x8783,     /* 0xF3A6   */
+    0x87AB,     /* 0xF3A7   */
+    0x87E5,     /* 0xF3A8   */
+    0x87AC,     /* 0xF3A9   */
+    0x87B5,     /* 0xF3AA   */
+    0x87B3,     /* 0xF3AB   */
+    0x87CB,     /* 0xF3AC   */
+    0x87D3,     /* 0xF3AD   */
+    0x87BD,     /* 0xF3AE   */
+    0x87D1,     /* 0xF3AF   */
+    0x87C0,     /* 0xF3B0   */
+    0x87CA,     /* 0xF3B1   */
+    0x87DB,     /* 0xF3B2   */
+    0x87EA,     /* 0xF3B3   */
+    0x87E0,     /* 0xF3B4   */
+    0x87EE,     /* 0xF3B5   */
+    0x8816,     /* 0xF3B6   */
+    0x8813,     /* 0xF3B7   */
+    0x87FE,     /* 0xF3B8   */
+    0x880A,     /* 0xF3B9   */
+    0x881B,     /* 0xF3BA   */
+    0x8821,     /* 0xF3BB   */
+    0x8839,     /* 0xF3BC   */
+    0x883C,     /* 0xF3BD   */
+    0x7F36,     /* 0xF3BE   */
+    0x7F42,     /* 0xF3BF   */
+    0x7F44,     /* 0xF3C0   */
+    0x7F45,     /* 0xF3C1   */
+    0x8210,     /* 0xF3C2   */
+    0x7AFA,     /* 0xF3C3   */
+    0x7AFD,     /* 0xF3C4   */
+    0x7B08,     /* 0xF3C5   */
+    0x7B03,     /* 0xF3C6   */
+    0x7B04,     /* 0xF3C7   */
+    0x7B15,     /* 0xF3C8   */
+    0x7B0A,     /* 0xF3C9   */
+    0x7B2B,     /* 0xF3CA   */
+    0x7B0F,     /* 0xF3CB   */
+    0x7B47,     /* 0xF3CC   */
+    0x7B38,     /* 0xF3CD   */
+    0x7B2A,     /* 0xF3CE   */
+    0x7B19,     /* 0xF3CF   */
+    0x7B2E,     /* 0xF3D0   */
+    0x7B31,     /* 0xF3D1   */
+    0x7B20,     /* 0xF3D2   */
+    0x7B25,     /* 0xF3D3   */
+    0x7B24,     /* 0xF3D4   */
+    0x7B33,     /* 0xF3D5   */
+    0x7B3E,     /* 0xF3D6   */
+    0x7B1E,     /* 0xF3D7   */
+    0x7B58,     /* 0xF3D8   */
+    0x7B5A,     /* 0xF3D9   */
+    0x7B45,     /* 0xF3DA   */
+    0x7B75,     /* 0xF3DB   */
+    0x7B4C,     /* 0xF3DC   */
+    0x7B5D,     /* 0xF3DD   */
+    0x7B60,     /* 0xF3DE   */
+    0x7B6E,     /* 0xF3DF   */
+    0x7B7B,     /* 0xF3E0   */
+    0x7B62,     /* 0xF3E1   */
+    0x7B72,     /* 0xF3E2   */
+    0x7B71,     /* 0xF3E3   */
+    0x7B90,     /* 0xF3E4   */
+    0x7BA6,     /* 0xF3E5   */
+    0x7BA7,     /* 0xF3E6   */
+    0x7BB8,     /* 0xF3E7   */
+    0x7BAC,     /* 0xF3E8   */
+    0x7B9D,     /* 0xF3E9   */
+    0x7BA8,     /* 0xF3EA   */
+    0x7B85,     /* 0xF3EB   */
+    0x7BAA,     /* 0xF3EC   */
+    0x7B9C,     /* 0xF3ED   */
+    0x7BA2,     /* 0xF3EE   */
+    0x7BAB,     /* 0xF3EF   */
+    0x7BB4,     /* 0xF3F0   */
+    0x7BD1,     /* 0xF3F1   */
+    0x7BC1,     /* 0xF3F2   */
+    0x7BCC,     /* 0xF3F3   */
+    0x7BDD,     /* 0xF3F4   */
+    0x7BDA,     /* 0xF3F5   */
+    0x7BE5,     /* 0xF3F6   */
+    0x7BE6,     /* 0xF3F7   */
+    0x7BEA,     /* 0xF3F8   */
+    0x7C0C,     /* 0xF3F9   */
+    0x7BFE,     /* 0xF3FA   */
+    0x7BFC,     /* 0xF3FB   */
+    0x7C0F,     /* 0xF3FC   */
+    0x7C16,     /* 0xF3FD   */
+    0x7C0B,     /* 0xF3FE   */
+    0x7C1F,     /* 0xF4A1   */
+    0x7C2A,     /* 0xF4A2   */
+    0x7C26,     /* 0xF4A3   */
+    0x7C38,     /* 0xF4A4   */
+    0x7C41,     /* 0xF4A5   */
+    0x7C40,     /* 0xF4A6   */
+    0x81FE,     /* 0xF4A7   */
+    0x8201,     /* 0xF4A8   */
+    0x8202,     /* 0xF4A9   */
+    0x8204,     /* 0xF4AA   */
+    0x81EC,     /* 0xF4AB   */
+    0x8844,     /* 0xF4AC   */
+    0x8221,     /* 0xF4AD   */
+    0x8222,     /* 0xF4AE   */
+    0x8223,     /* 0xF4AF   */
+    0x822D,     /* 0xF4B0   */
+    0x822F,     /* 0xF4B1   */
+    0x8228,     /* 0xF4B2   */
+    0x822B,     /* 0xF4B3   */
+    0x8238,     /* 0xF4B4   */
+    0x823B,     /* 0xF4B5   */
+    0x8233,     /* 0xF4B6   */
+    0x8234,     /* 0xF4B7   */
+    0x823E,     /* 0xF4B8   */
+    0x8244,     /* 0xF4B9   */
+    0x8249,     /* 0xF4BA   */
+    0x824B,     /* 0xF4BB   */
+    0x824F,     /* 0xF4BC   */
+    0x825A,     /* 0xF4BD   */
+    0x825F,     /* 0xF4BE   */
+    0x8268,     /* 0xF4BF   */
+    0x887E,     /* 0xF4C0   */
+    0x8885,     /* 0xF4C1   */
+    0x8888,     /* 0xF4C2   */
+    0x88D8,     /* 0xF4C3   */
+    0x88DF,     /* 0xF4C4   */
+    0x895E,     /* 0xF4C5   */
+    0x7F9D,     /* 0xF4C6   */
+    0x7F9F,     /* 0xF4C7   */
+    0x7FA7,     /* 0xF4C8   */
+    0x7FAF,     /* 0xF4C9   */
+    0x7FB0,     /* 0xF4CA   */
+    0x7FB2,     /* 0xF4CB   */
+    0x7C7C,     /* 0xF4CC   */
+    0x6549,     /* 0xF4CD   */
+    0x7C91,     /* 0xF4CE   */
+    0x7C9D,     /* 0xF4CF   */
+    0x7C9C,     /* 0xF4D0   */
+    0x7C9E,     /* 0xF4D1   */
+    0x7CA2,     /* 0xF4D2   */
+    0x7CB2,     /* 0xF4D3   */
+    0x7CBC,     /* 0xF4D4   */
+    0x7CBD,     /* 0xF4D5   */
+    0x7CC1,     /* 0xF4D6   */
+    0x7CC7,     /* 0xF4D7   */
+    0x7CCC,     /* 0xF4D8   */
+    0x7CCD,     /* 0xF4D9   */
+    0x7CC8,     /* 0xF4DA   */
+    0x7CC5,     /* 0xF4DB   */
+    0x7CD7,     /* 0xF4DC   */
+    0x7CE8,     /* 0xF4DD   */
+    0x826E,     /* 0xF4DE   */
+    0x66A8,     /* 0xF4DF   */
+    0x7FBF,     /* 0xF4E0   */
+    0x7FCE,     /* 0xF4E1   */
+    0x7FD5,     /* 0xF4E2   */
+    0x7FE5,     /* 0xF4E3   */
+    0x7FE1,     /* 0xF4E4   */
+    0x7FE6,     /* 0xF4E5   */
+    0x7FE9,     /* 0xF4E6   */
+    0x7FEE,     /* 0xF4E7   */
+    0x7FF3,     /* 0xF4E8   */
+    0x7CF8,     /* 0xF4E9   */
+    0x7D77,     /* 0xF4EA   */
+    0x7DA6,     /* 0xF4EB   */
+    0x7DAE,     /* 0xF4EC   */
+    0x7E47,     /* 0xF4ED   */
+    0x7E9B,     /* 0xF4EE   */
+    0x9EB8,     /* 0xF4EF   */
+    0x9EB4,     /* 0xF4F0   */
+    0x8D73,     /* 0xF4F1   */
+    0x8D84,     /* 0xF4F2   */
+    0x8D94,     /* 0xF4F3   */
+    0x8D91,     /* 0xF4F4   */
+    0x8DB1,     /* 0xF4F5   */
+    0x8D67,     /* 0xF4F6   */
+    0x8D6D,     /* 0xF4F7   */
+    0x8C47,     /* 0xF4F8   */
+    0x8C49,     /* 0xF4F9   */
+    0x914A,     /* 0xF4FA   */
+    0x9150,     /* 0xF4FB   */
+    0x914E,     /* 0xF4FC   */
+    0x914F,     /* 0xF4FD   */
+    0x9164,     /* 0xF4FE   */
+    0x9162,     /* 0xF5A1   */
+    0x9161,     /* 0xF5A2   */
+    0x9170,     /* 0xF5A3   */
+    0x9169,     /* 0xF5A4   */
+    0x916F,     /* 0xF5A5   */
+    0x917D,     /* 0xF5A6   */
+    0x917E,     /* 0xF5A7   */
+    0x9172,     /* 0xF5A8   */
+    0x9174,     /* 0xF5A9   */
+    0x9179,     /* 0xF5AA   */
+    0x918C,     /* 0xF5AB   */
+    0x9185,     /* 0xF5AC   */
+    0x9190,     /* 0xF5AD   */
+    0x918D,     /* 0xF5AE   */
+    0x9191,     /* 0xF5AF   */
+    0x91A2,     /* 0xF5B0   */
+    0x91A3,     /* 0xF5B1   */
+    0x91AA,     /* 0xF5B2   */
+    0x91AD,     /* 0xF5B3   */
+    0x91AE,     /* 0xF5B4   */
+    0x91AF,     /* 0xF5B5   */
+    0x91B5,     /* 0xF5B6   */
+    0x91B4,     /* 0xF5B7   */
+    0x91BA,     /* 0xF5B8   */
+    0x8C55,     /* 0xF5B9   */
+    0x9E7E,     /* 0xF5BA   */
+    0x8DB8,     /* 0xF5BB   */
+    0x8DEB,     /* 0xF5BC   */
+    0x8E05,     /* 0xF5BD   */
+    0x8E59,     /* 0xF5BE   */
+    0x8E69,     /* 0xF5BF   */
+    0x8DB5,     /* 0xF5C0   */
+    0x8DBF,     /* 0xF5C1   */
+    0x8DBC,     /* 0xF5C2   */
+    0x8DBA,     /* 0xF5C3   */
+    0x8DC4,     /* 0xF5C4   */
+    0x8DD6,     /* 0xF5C5   */
+    0x8DD7,     /* 0xF5C6   */
+    0x8DDA,     /* 0xF5C7   */
+    0x8DDE,     /* 0xF5C8   */
+    0x8DCE,     /* 0xF5C9   */
+    0x8DCF,     /* 0xF5CA   */
+    0x8DDB,     /* 0xF5CB   */
+    0x8DC6,     /* 0xF5CC   */
+    0x8DEC,     /* 0xF5CD   */
+    0x8DF7,     /* 0xF5CE   */
+    0x8DF8,     /* 0xF5CF   */
+    0x8DE3,     /* 0xF5D0   */
+    0x8DF9,     /* 0xF5D1   */
+    0x8DFB,     /* 0xF5D2   */
+    0x8DE4,     /* 0xF5D3   */
+    0x8E09,     /* 0xF5D4   */
+    0x8DFD,     /* 0xF5D5   */
+    0x8E14,     /* 0xF5D6   */
+    0x8E1D,     /* 0xF5D7   */
+    0x8E1F,     /* 0xF5D8   */
+    0x8E2C,     /* 0xF5D9   */
+    0x8E2E,     /* 0xF5DA   */
+    0x8E23,     /* 0xF5DB   */
+    0x8E2F,     /* 0xF5DC   */
+    0x8E3A,     /* 0xF5DD   */
+    0x8E40,     /* 0xF5DE   */
+    0x8E39,     /* 0xF5DF   */
+    0x8E35,     /* 0xF5E0   */
+    0x8E3D,     /* 0xF5E1   */
+    0x8E31,     /* 0xF5E2   */
+    0x8E49,     /* 0xF5E3   */
+    0x8E41,     /* 0xF5E4   */
+    0x8E42,     /* 0xF5E5   */
+    0x8E51,     /* 0xF5E6   */
+    0x8E52,     /* 0xF5E7   */
+    0x8E4A,     /* 0xF5E8   */
+    0x8E70,     /* 0xF5E9   */
+    0x8E76,     /* 0xF5EA   */
+    0x8E7C,     /* 0xF5EB   */
+    0x8E6F,     /* 0xF5EC   */
+    0x8E74,     /* 0xF5ED   */
+    0x8E85,     /* 0xF5EE   */
+    0x8E8F,     /* 0xF5EF   */
+    0x8E94,     /* 0xF5F0   */
+    0x8E90,     /* 0xF5F1   */
+    0x8E9C,     /* 0xF5F2   */
+    0x8E9E,     /* 0xF5F3   */
+    0x8C78,     /* 0xF5F4   */
+    0x8C82,     /* 0xF5F5   */
+    0x8C8A,     /* 0xF5F6   */
+    0x8C85,     /* 0xF5F7   */
+    0x8C98,     /* 0xF5F8   */
+    0x8C94,     /* 0xF5F9   */
+    0x659B,     /* 0xF5FA   */
+    0x89D6,     /* 0xF5FB   */
+    0x89DE,     /* 0xF5FC   */
+    0x89DA,     /* 0xF5FD   */
+    0x89DC,     /* 0xF5FE   */
+    0x89E5,     /* 0xF6A1   */
+    0x89EB,     /* 0xF6A2   */
+    0x89EF,     /* 0xF6A3   */
+    0x8A3E,     /* 0xF6A4   */
+    0x8B26,     /* 0xF6A5   */
+    0x9753,     /* 0xF6A6   */
+    0x96E9,     /* 0xF6A7   */
+    0x96F3,     /* 0xF6A8   */
+    0x96EF,     /* 0xF6A9   */
+    0x9706,     /* 0xF6AA   */
+    0x9701,     /* 0xF6AB   */
+    0x9708,     /* 0xF6AC   */
+    0x970F,     /* 0xF6AD   */
+    0x970E,     /* 0xF6AE   */
+    0x972A,     /* 0xF6AF   */
+    0x972D,     /* 0xF6B0   */
+    0x9730,     /* 0xF6B1   */
+    0x973E,     /* 0xF6B2   */
+    0x9F80,     /* 0xF6B3   */
+    0x9F83,     /* 0xF6B4   */
+    0x9F85,     /* 0xF6B5   */
+    0x9F86,     /* 0xF6B6   */
+    0x9F87,     /* 0xF6B7   */
+    0x9F88,     /* 0xF6B8   */
+    0x9F89,     /* 0xF6B9   */
+    0x9F8A,     /* 0xF6BA   */
+    0x9F8C,     /* 0xF6BB   */
+    0x9EFE,     /* 0xF6BC   */
+    0x9F0B,     /* 0xF6BD   */
+    0x9F0D,     /* 0xF6BE   */
+    0x96B9,     /* 0xF6BF   */
+    0x96BC,     /* 0xF6C0   */
+    0x96BD,     /* 0xF6C1   */
+    0x96CE,     /* 0xF6C2   */
+    0x96D2,     /* 0xF6C3   */
+    0x77BF,     /* 0xF6C4   */
+    0x96E0,     /* 0xF6C5   */
+    0x928E,     /* 0xF6C6   */
+    0x92AE,     /* 0xF6C7   */
+    0x92C8,     /* 0xF6C8   */
+    0x933E,     /* 0xF6C9   */
+    0x936A,     /* 0xF6CA   */
+    0x93CA,     /* 0xF6CB   */
+    0x938F,     /* 0xF6CC   */
+    0x943E,     /* 0xF6CD   */
+    0x946B,     /* 0xF6CE   */
+    0x9C7F,     /* 0xF6CF   */
+    0x9C82,     /* 0xF6D0   */
+    0x9C85,     /* 0xF6D1   */
+    0x9C86,     /* 0xF6D2   */
+    0x9C87,     /* 0xF6D3   */
+    0x9C88,     /* 0xF6D4   */
+    0x7A23,     /* 0xF6D5   */
+    0x9C8B,     /* 0xF6D6   */
+    0x9C8E,     /* 0xF6D7   */
+    0x9C90,     /* 0xF6D8   */
+    0x9C91,     /* 0xF6D9   */
+    0x9C92,     /* 0xF6DA   */
+    0x9C94,     /* 0xF6DB   */
+    0x9C95,     /* 0xF6DC   */
+    0x9C9A,     /* 0xF6DD   */
+    0x9C9B,     /* 0xF6DE   */
+    0x9C9E,     /* 0xF6DF   */
+    0x9C9F,     /* 0xF6E0   */
+    0x9CA0,     /* 0xF6E1   */
+    0x9CA1,     /* 0xF6E2   */
+    0x9CA2,     /* 0xF6E3   */
+    0x9CA3,     /* 0xF6E4   */
+    0x9CA5,     /* 0xF6E5   */
+    0x9CA6,     /* 0xF6E6   */
+    0x9CA7,     /* 0xF6E7   */
+    0x9CA8,     /* 0xF6E8   */
+    0x9CA9,     /* 0xF6E9   */
+    0x9CAB,     /* 0xF6EA   */
+    0x9CAD,     /* 0xF6EB   */
+    0x9CAE,     /* 0xF6EC   */
+    0x9CB0,     /* 0xF6ED   */
+    0x9CB1,     /* 0xF6EE   */
+    0x9CB2,     /* 0xF6EF   */
+    0x9CB3,     /* 0xF6F0   */
+    0x9CB4,     /* 0xF6F1   */
+    0x9CB5,     /* 0xF6F2   */
+    0x9CB6,     /* 0xF6F3   */
+    0x9CB7,     /* 0xF6F4   */
+    0x9CBA,     /* 0xF6F5   */
+    0x9CBB,     /* 0xF6F6   */
+    0x9CBC,     /* 0xF6F7   */
+    0x9CBD,     /* 0xF6F8   */
+    0x9CC4,     /* 0xF6F9   */
+    0x9CC5,     /* 0xF6FA   */
+    0x9CC6,     /* 0xF6FB   */
+    0x9CC7,     /* 0xF6FC   */
+    0x9CCA,     /* 0xF6FD   */
+    0x9CCB,     /* 0xF6FE   */
+    0x9CCC,     /* 0xF7A1   */
+    0x9CCD,     /* 0xF7A2   */
+    0x9CCE,     /* 0xF7A3   */
+    0x9CCF,     /* 0xF7A4   */
+    0x9CD0,     /* 0xF7A5   */
+    0x9CD3,     /* 0xF7A6   */
+    0x9CD4,     /* 0xF7A7   */
+    0x9CD5,     /* 0xF7A8   */
+    0x9CD7,     /* 0xF7A9   */
+    0x9CD8,     /* 0xF7AA   */
+    0x9CD9,     /* 0xF7AB   */
+    0x9CDC,     /* 0xF7AC   */
+    0x9CDD,     /* 0xF7AD   */
+    0x9CDF,     /* 0xF7AE   */
+    0x9CE2,     /* 0xF7AF   */
+    0x977C,     /* 0xF7B0   */
+    0x9785,     /* 0xF7B1   */
+    0x9791,     /* 0xF7B2   */
+    0x9792,     /* 0xF7B3   */
+    0x9794,     /* 0xF7B4   */
+    0x97AF,     /* 0xF7B5   */
+    0x97AB,     /* 0xF7B6   */
+    0x97A3,     /* 0xF7B7   */
+    0x97B2,     /* 0xF7B8   */
+    0x97B4,     /* 0xF7B9   */
+    0x9AB1,     /* 0xF7BA   */
+    0x9AB0,     /* 0xF7BB   */
+    0x9AB7,     /* 0xF7BC   */
+    0x9E58,     /* 0xF7BD   */
+    0x9AB6,     /* 0xF7BE   */
+    0x9ABA,     /* 0xF7BF   */
+    0x9ABC,     /* 0xF7C0   */
+    0x9AC1,     /* 0xF7C1   */
+    0x9AC0,     /* 0xF7C2   */
+    0x9AC5,     /* 0xF7C3   */
+    0x9AC2,     /* 0xF7C4   */
+    0x9ACB,     /* 0xF7C5   */
+    0x9ACC,     /* 0xF7C6   */
+    0x9AD1,     /* 0xF7C7   */
+    0x9B45,     /* 0xF7C8   */
+    0x9B43,     /* 0xF7C9   */
+    0x9B47,     /* 0xF7CA   */
+    0x9B49,     /* 0xF7CB   */
+    0x9B48,     /* 0xF7CC   */
+    0x9B4D,     /* 0xF7CD   */
+    0x9B51,     /* 0xF7CE   */
+    0x98E8,     /* 0xF7CF   */
+    0x990D,     /* 0xF7D0   */
+    0x992E,     /* 0xF7D1   */
+    0x9955,     /* 0xF7D2   */
+    0x9954,     /* 0xF7D3   */
+    0x9ADF,     /* 0xF7D4   */
+    0x9AE1,     /* 0xF7D5   */
+    0x9AE6,     /* 0xF7D6   */
+    0x9AEF,     /* 0xF7D7   */
+    0x9AEB,     /* 0xF7D8   */
+    0x9AFB,     /* 0xF7D9   */
+    0x9AED,     /* 0xF7DA   */
+    0x9AF9,     /* 0xF7DB   */
+    0x9B08,     /* 0xF7DC   */
+    0x9B0F,     /* 0xF7DD   */
+    0x9B13,     /* 0xF7DE   */
+    0x9B1F,     /* 0xF7DF   */
+    0x9B23,     /* 0xF7E0   */
+    0x9EBD,     /* 0xF7E1   */
+    0x9EBE,     /* 0xF7E2   */
+    0x7E3B,     /* 0xF7E3   */
+    0x9E82,     /* 0xF7E4   */
+    0x9E87,     /* 0xF7E5   */
+    0x9E88,     /* 0xF7E6   */
+    0x9E8B,     /* 0xF7E7   */
+    0x9E92,     /* 0xF7E8   */
+    0x93D6,     /* 0xF7E9   */
+    0x9E9D,     /* 0xF7EA   */
+    0x9E9F,     /* 0xF7EB   */
+    0x9EDB,     /* 0xF7EC   */
+    0x9EDC,     /* 0xF7ED   */
+    0x9EDD,     /* 0xF7EE   */
+    0x9EE0,     /* 0xF7EF   */
+    0x9EDF,     /* 0xF7F0   */
+    0x9EE2,     /* 0xF7F1   */
+    0x9EE9,     /* 0xF7F2   */
+    0x9EE7,     /* 0xF7F3   */
+    0x9EE5,     /* 0xF7F4   */
+    0x9EEA,     /* 0xF7F5   */
+    0x9EEF,     /* 0xF7F6   */
+    0x9F22,     /* 0xF7F7   */
+    0x9F2C,     /* 0xF7F8   */
+    0x9F2F,     /* 0xF7F9   */
+    0x9F39,     /* 0xF7FA   */
+    0x9F37,     /* 0xF7FB   */
+    0x9F3D,     /* 0xF7FC   */
+    0x9F3E,     /* 0xF7FD   */
+    0x9F44,     /* 0xF7FE   */
+};

+ 77 - 0
luat/packages/iconv/iconv.c

@@ -0,0 +1,77 @@
+/**************************************************************************
+ *              Copyright (C), AirM2M Tech. Co., Ltd.
+ *
+ * Name:    iconv.c
+ * Author:  liweiqiang
+ * Version: V0.1
+ * Date:    2013/7/15
+ *
+ * Description:
+ *          字符编码转换
+ **************************************************************************/
+
+#include <string.h>
+#include "iconv.h"
+#include "prv_iconv.h"
+
+typedef struct builtin_iconv_map_tag
+{
+    const char      *from;
+    const char      *to;
+    const iconv_fct fct;
+}builtin_iconv_map;
+
+static const builtin_iconv_map iconv_map[] =
+{
+    {"ucs2",    "gb2312",   iconv_ucs2_to_gb2312},
+/*+\NEW\liweiqiang\2013.11.26\完善gb2312<->ucs2(ucs2be)编码转换*/
+    {"ucs2be",  "gb2312",   iconv_ucs2be_to_gb2312},
+    {"gb2312",  "ucs2",     iconv_gb2312_to_ucs2},
+    {"gb2312",  "ucs2be",   iconv_gb2312_to_ucs2be},
+/*-\NEW\liweiqiang\2013.11.26\完善gb2312<->ucs2(ucs2be)编码转换*/
+/*+\NEW\liweiqiang\2013.7.19\增加utf8<->ucs2,ucs2be编码转换*/
+    {"utf8",    "ucs2",     iconv_utf8_to_ucs2},
+    {"utf8",    "ucs2be",   iconv_utf8_to_ucs2be},
+    {"ucs2",    "utf8",     iconv_ucs2_to_utf8},
+    {"ucs2be",    "utf8",     iconv_ucs2be_to_utf8},
+/*-\NEW\liweiqiang\2013.7.19\增加utf8<->ucs2,ucs2be编码转换*/
+};
+
+iconv_t iconv_open (const char *__tocode, const char *__fromcode)
+{
+    size_t i;
+
+    for(i = 0; i < sizeof(iconv_map)/sizeof(iconv_map[0]); i++)
+    {
+        if(strcmp(iconv_map[i].from, __fromcode) == 0 &&
+            strcmp(iconv_map[i].to, __tocode) == 0)
+        {
+            return (iconv_t)&iconv_map[i];
+        }
+    }
+
+    return (iconv_t)-1;
+}
+
+size_t iconv (iconv_t __cd, char ** __inbuf,
+		     size_t * __inbytesleft,
+		     char ** __outbuf,
+		     size_t * __outbytesleft)
+{
+    builtin_iconv_map *_map_cd = (builtin_iconv_map *)__cd;
+
+    if(__inbuf == NULL || *__inbuf == NULL)
+        return (size_t)-1;
+
+    if(_map_cd < &iconv_map[0] &&
+        _map_cd > &iconv_map[sizeof(iconv_map)/sizeof(iconv_map[0])])
+        return (size_t)-1;
+
+    return _map_cd->fct(__inbuf, __inbytesleft, __outbuf, __outbytesleft);
+}
+
+int iconv_close (iconv_t __cd)
+{
+    return 0;
+}
+

+ 36 - 0
luat/packages/iconv/iconv.h

@@ -0,0 +1,36 @@
+/**************************************************************************
+ *              Copyright (C), AirM2M Tech. Co., Ltd.
+ *
+ * Name:    iconv.h
+ * Author:  liweiqiang
+ * Version: V0.1
+ * Date:    2013/7/15
+ *
+ * Description:
+ *          字符编码转换
+ **************************************************************************/
+
+#ifndef __ICONV_H__
+#define __ICONV_H__
+
+#include "stddef.h"
+
+/* Identifier for conversion method from one codeset to another.  */
+typedef void *iconv_t;
+
+/* Allocate descriptor for code conversion from codeset FROMCODE to
+   codeset TOCODE.  */
+extern iconv_t iconv_open (const char *__tocode, const char *__fromcode);
+
+/* Convert at most *INBYTESLEFT bytes from *INBUF according to the
+   code conversion algorithm specified by CD and place up to
+   *OUTBYTESLEFT bytes in buffer at *OUTBUF.  */
+extern size_t iconv (iconv_t __cd, char ** __inbuf,
+		     size_t * __inbytesleft,
+		     char ** __outbuf,
+		     size_t * __outbytesleft);
+
+/* Free resources allocated for descriptor CD for code conversion.  */
+extern int iconv_close (iconv_t __cd);
+
+#endif/*__ICONV_H__*/

+ 39 - 0
luat/packages/iconv/prv_iconv.h

@@ -0,0 +1,39 @@
+/**************************************************************************
+ *              Copyright (C), AirM2M Tech. Co., Ltd.
+ *
+ * Name:    prv_iconv.h
+ * Author:  liweiqiang
+ * Version: V0.1
+ * Date:    2013/7/15
+ *
+ * Description:
+ *          字符编码转换内部声明文件
+ **************************************************************************/
+
+#ifndef __PRV_ICONV_H__
+#define __PRV_ICONV_H__
+
+/* 编码转换处理函数 iconv */
+typedef size_t (*iconv_fct) (char ** __inbuf,
+                      size_t * __inbytesleft,
+                      char ** __outbuf,
+                      size_t * __outbytesleft);
+
+size_t iconv_ucs2_to_gb2312(char **, size_t *, char **, size_t *);
+/*+\NEW\liweiqiang\2013.11.26\完善gb2312<->ucs2(ucs2be)编码转换*/
+size_t iconv_ucs2be_to_gb2312(char **, size_t *, char **, size_t *);
+size_t iconv_gb2312_to_ucs2(char **, size_t *, char **, size_t *);
+size_t iconv_gb2312_to_ucs2be(char **, size_t *, char **, size_t *);
+/*-\NEW\liweiqiang\2013.11.26\完善gb2312<->ucs2(ucs2be)编码转换*/
+
+/*+\NEW\liweiqiang\2013.7.19\增加utf8<->ucs2,ucs2be编码转换*/
+size_t iconv_utf8_to_ucs2(char **, size_t *, char **, size_t *);
+
+size_t iconv_utf8_to_ucs2be(char **, size_t *, char **, size_t *);
+
+size_t iconv_ucs2_to_utf8(char **, size_t *, char **, size_t *);
+
+size_t iconv_ucs2be_to_utf8(char **, size_t *, char **, size_t *);
+/*-\NEW\liweiqiang\2013.7.19\增加utf8<->ucs2,ucs2be编码转换*/
+
+#endif/*__PRV_ICONV_H__*/

+ 203 - 0
luat/packages/iconv/ucs2_to_gb2312.c

@@ -0,0 +1,203 @@
+/**************************************************************************
+ *              Copyright (C), AirM2M Tech. Co., Ltd.
+ *
+ * Name:    ucs2_to_gb2312.c
+ * Author:  liweiqiang
+ * Version: V0.1
+ * Date:    2013/7/15
+ *
+ * Description:
+ *          ucs2 ת»» gb2312
+ **************************************************************************/
+
+#include "stdio.h"
+#include "errno.h"
+#include "luat_base.h"
+#define u16 uint16_t
+#define u8 uint8_t
+
+#include "ucs2_to_gb2312_table.h"
+
+#include "ucs2_to_gb2312_offset.h"
+
+const u8 number_of_bit_1[256] = 
+{
+    0x00, 0x01, 0x01, 0x02, 0x01, 0x02, 0x02, 0x03,
+    0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
+    0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+    0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+    0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07,
+    0x01, 0x02, 0x02, 0x03, 0x02, 0x03, 0x03, 0x04,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+    0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07,
+    0x02, 0x03, 0x03, 0x04, 0x03, 0x04, 0x04, 0x05,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06,
+    0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07,
+    0x03, 0x04, 0x04, 0x05, 0x04, 0x05, 0x05, 0x06, 
+    0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07,
+    0x04, 0x05, 0x05, 0x06, 0x05, 0x06, 0x06, 0x07,
+    0x05, 0x06, 0x06, 0x07, 0x06, 0x07, 0x07, 0x08,
+};
+
+/* 0x4E00 <= ucs2 < 0xA000 */ 
+static u16 get_ucs2_offset(u16 ucs2)
+{
+    u16   offset, page, tmp;
+    u8    *mirror_ptr, ch;
+
+    page = (ucs2>>8) - 0x4E;
+    ucs2 &= 0xFF;
+
+    tmp        = ucs2>>6; /* now 0 <= tmp < 4  */ 
+    offset     = ucs2_index_table_4E00_9FFF[page][tmp];  
+    mirror_ptr = (u8*)&ucs2_mirror_4E00_9FFF[page][tmp<<3]; /* [0, 8, 16, 24] */ 
+
+    tmp = ucs2&0x3F; /* mod 64 */ 
+
+    while(tmp >= 8)
+    {
+        offset += number_of_bit_1[*mirror_ptr];
+        mirror_ptr++;
+        tmp -= 8;
+    }
+
+    ch = *mirror_ptr;
+    if(ch&(0x1<<tmp))
+    {   /* Ok , this ucs2 can be covert to GB2312. */ 
+        while(tmp) 
+        { 
+            if(ch&0x1)
+            offset++;
+            ch>>=1;
+            tmp--;
+        }
+        return offset;
+    }
+
+    return (u16)(-1);
+}
+
+/*+\NEW\liweiqiang\2013.11.26\ÍêÉÆgb2312<->ucs2(ucs2be)±àÂëת»»*/
+size_t iconv_ucs2_to_gb2312_endian(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft, int endian)
+{
+    u16 offset, gb2312 = 0xA1A1; 
+    u16 ucs2;
+    size_t gb_length = 0;
+    u16 *ucs2buf = (u16*)*_inbuf;
+    char *outbuf = (char *)*_outbuf;
+    size_t inlen = *inbytesleft/2;
+    size_t outlen = *outbytesleft;
+    size_t ret = 0;
+
+    while(inlen > 0)
+    {
+        if(gb_length+2 > outlen)
+        {
+            errno = E2BIG;
+            ret = -1;
+            goto ucs2_to_gb2312_exit;
+        }
+
+        ucs2 = *ucs2buf++;
+
+        if(endian == 1)
+            ucs2 = (ucs2<<8)|(ucs2>>8);
+
+        gb2312 = 0xA1A1;
+        //End 7205
+  
+        if(0x80 > ucs2)
+        {
+            // can be convert to ASCII char
+            *outbuf++ = (u8)ucs2;
+            gb_length++;
+        }
+        else
+        {
+            if((0x4E00 <= ucs2) && (0xA000 > ucs2))
+            {
+                offset = get_ucs2_offset(ucs2);
+                if((u16)(-1) != offset)
+                {
+                    gb2312 = ucs2_to_gb2312_table[offset];
+                }
+            }
+            else
+            {
+                u16 u16count = sizeof(tab_UCS2_to_GBK)/4;
+                u16 ui = 0;
+                for(ui=0;ui<u16count;ui++)
+                {
+                    if(ucs2 == tab_UCS2_to_GBK[ui][0])
+                    {
+                        gb2312 = tab_UCS2_to_GBK[ui][1];
+                    }
+                }
+                
+            }
+#if 0
+            else
+            {
+                // Is chinese symbol ?
+                // try search another table
+                for( offset = 0; offset < 94 * 16; offset++ )
+                {
+                    if( ucs2 == gb2312_to_ucs2_table[ offset ] )
+                    {
+                        gb2312 = offset / 94 + 0xA0;             
+                        gb2312 = (gb2312 << 8) + (offset % 94 + 0xA1);
+                        break;
+                    }
+                }
+            }
+#endif
+ 
+            *outbuf++ = (u8)(gb2312>>8);
+            *outbuf++ = (u8)(gb2312);
+            gb_length += 2;
+        }
+        
+        inlen--;
+    }
+
+    if(inlen > 0)
+    {
+        errno = EINVAL;
+        ret = -1;
+    }
+
+ucs2_to_gb2312_exit:
+    *inbytesleft = inlen;
+    *outbytesleft -= gb_length;
+
+    return ret;
+}
+
+size_t iconv_ucs2_to_gb2312(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft)
+{
+    return iconv_ucs2_to_gb2312_endian(_inbuf, inbytesleft, _outbuf, outbytesleft, 0);
+}
+
+size_t iconv_ucs2be_to_gb2312(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft)
+{
+    return iconv_ucs2_to_gb2312_endian(_inbuf, inbytesleft, _outbuf, outbytesleft, 1);
+}
+/*-\NEW\liweiqiang\2013.11.26\ÍêÉÆgb2312<->ucs2(ucs2be)±àÂëת»»*/
+

+ 581 - 0
luat/packages/iconv/ucs2_to_gb2312_offset.h

@@ -0,0 +1,581 @@
+const u16 number_of_ucs2_4E00_9FFF = 0x1a6b;
+const u8 ucs2_mirror_4E00_9FFF[ 0xA0 - 0x4E ][256 >> 3] = 
+{
+    {
+        0x8b, 0x7f, 0x7b, 0x7f, 0xb4, 0x3d, 0x55, 0xef, 
+        0xa8, 0xfb, 0x5d, 0xf3, 0x43, 0x02, 0x0b, 0x40, 
+        0x40, 0xfb, 0x3e, 0x8d, 0xf7, 0x7b, 0x2c, 0x8c, 
+        0xff, 0x6e, 0xfa, 0xe3, 0x3a, 0x1d, 0xed, 0xa8, 
+    },
+    {
+        0x02, 0xe6, 0x83, 0xcf, 0xf5, 0x8c, 0x55, 0x35, 
+        0x48, 0xe0, 0xab, 0xff, 0xb9, 0x92, 0x59, 0xd8, 
+        0x18, 0xab, 0x92, 0x28, 0xe9, 0xd7, 0x20, 0x80, 
+        0x38, 0xc4, 0x83, 0xf5, 0x4a, 0xe7, 0x0a, 0x45, 
+    },
+    {
+        0x00, 0xb0, 0x14, 0x97, 0x62, 0x77, 0x00, 0x54, 
+        0x88, 0xd1, 0x20, 0x14, 0x20, 0x10, 0xc0, 0xc8, 
+        0x21, 0x21, 0x00, 0x00, 0xa8, 0x13, 0x04, 0x0c, 
+        0x00, 0x80, 0x40, 0x04, 0xc0, 0x70, 0x28, 0x08, 
+    },
+    {
+        0xc0, 0x08, 0x04, 0x00, 0x02, 0x00, 0x00, 0x80, 
+        0x7b, 0x2b, 0x72, 0x14, 0x24, 0x79, 0xfb, 0x3b, 
+        0x27, 0x33, 0xe4, 0x1a, 0x35, 0x98, 0xef, 0x38, 
+        0xd1, 0x9a, 0x02, 0x28, 0x13, 0xa8, 0x69, 0xbf, 
+    },
+    {
+        0xcf, 0x65, 0xc6, 0x2f, 0x11, 0x6b, 0xc9, 0xaf, 
+        0x0f, 0x34, 0x53, 0x50, 0xa2, 0x86, 0x04, 0xa0, 
+        0x06, 0x01, 0x09, 0xe8, 0x0f, 0x3f, 0x0e, 0xc0, 
+        0x88, 0x0a, 0x45, 0x81, 0x10, 0x00, 0x01, 0xc6, 
+    },
+    {
+        0x61, 0xa1, 0xe1, 0x26, 0x4b, 0x44, 0x00, 0xce, 
+        0xaa, 0xc7, 0xee, 0xd4, 0xdf, 0xca, 0xbb, 0x85, 
+        0x74, 0x3a, 0x20, 0xa5, 0x6c, 0x43, 0x40, 0x88, 
+        0x06, 0x3f, 0xd2, 0x8b, 0x79, 0xff, 0xef, 0x3b, 
+    },
+    {
+        0x5a, 0xf7, 0xef, 0xe8, 0xcb, 0xfb, 0x36, 0x5b, 
+        0x49, 0x0d, 0xfd, 0x1b, 0x54, 0x01, 0xee, 0x39, 
+        0x55, 0xd8, 0x75, 0x2e, 0xd8, 0xbf, 0x1a, 0xa9, 
+        0xd7, 0xf3, 0xbf, 0xf6, 0xe0, 0x67, 0x0c, 0xb4, 
+    },
+    {
+        0xc2, 0x82, 0x13, 0x08, 0x9d, 0xd4, 0x8b, 0xd0, 
+        0x5a, 0x06, 0x61, 0x10, 0xf2, 0x74, 0xe0, 0x59, 
+        0x9f, 0x8f, 0x12, 0xb3, 0x80, 0x00, 0xaa, 0x6a, 
+        0x30, 0x32, 0x5e, 0xb0, 0x7a, 0x9d, 0xac, 0x60, 
+    },
+    {
+        0x03, 0xd3, 0x00, 0xc9, 0x98, 0x30, 0x56, 0x8a, 
+        0x00, 0x70, 0x90, 0x13, 0x14, 0x1f, 0x42, 0x18, 
+        0x60, 0xc0, 0x08, 0x00, 0x08, 0x80, 0x80, 0x10, 
+        0x00, 0x04, 0x90, 0xec, 0x17, 0x28, 0x33, 0xe6, 
+    },
+    {
+        0x58, 0x07, 0x00, 0x90, 0x08, 0xf7, 0x09, 0x4e, 
+        0x85, 0xf4, 0x83, 0xfc, 0x53, 0xaf, 0xc8, 0x18, 
+        0x7c, 0x18, 0x0c, 0x08, 0xdf, 0x6a, 0x14, 0x01, 
+        0x0c, 0xc8, 0x34, 0xa7, 0x11, 0xa0, 0x10, 0x27, 
+    },
+    {
+        0xc5, 0x28, 0x22, 0x42, 0x13, 0x04, 0x21, 0x00, 
+        0x10, 0x30, 0x12, 0x41, 0x20, 0x18, 0x00, 0x40, 
+        0x2b, 0x02, 0x0c, 0xc6, 0x00, 0x03, 0x00, 0x10, 
+        0x22, 0x00, 0x22, 0x00, 0x10, 0x58, 0x49, 0x02, 
+    },
+    {
+        0x94, 0xa0, 0x70, 0x96, 0xb0, 0xee, 0x92, 0x17, 
+        0x96, 0xcb, 0xf2, 0x05, 0x25, 0x00, 0x58, 0x23, 
+        0xde, 0x25, 0xcc, 0x42, 0x38, 0xcf, 0x04, 0x4a, 
+        0x40, 0x0c, 0x9f, 0x35, 0x28, 0x11, 0x00, 0x8a, 
+    },
+    {
+        0xfa, 0x13, 0x0a, 0x91, 0x29, 0x02, 0x56, 0x10, 
+        0x41, 0x06, 0x20, 0x04, 0x84, 0x04, 0xf0, 0x84, 
+        0x00, 0x00, 0x04, 0x0c, 0x00, 0x04, 0x2c, 0x41, 
+        0x06, 0x12, 0x54, 0x11, 0x4b, 0x0a, 0x02, 0x00, 
+    },
+    {
+        0x00, 0x02, 0xc0, 0x00, 0x00, 0x00, 0x94, 0x00, 
+        0x01, 0x00, 0xbb, 0xbf, 0x7c, 0x16, 0x2b, 0x24, 
+        0xbb, 0x9b, 0xa8, 0x7f, 0x7f, 0x0c, 0x79, 0xe3, 
+        0xf4, 0x10, 0x0d, 0xe0, 0x32, 0x41, 0x01, 0x9f, 
+    },
+    {
+        0x52, 0x86, 0x72, 0x35, 0xb4, 0x10, 0x12, 0xff, 
+        0x27, 0xcf, 0x23, 0x42, 0x6b, 0xc0, 0x02, 0x86, 
+        0x06, 0x31, 0xd3, 0x1f, 0x0c, 0x3a, 0xaa, 0xa1, 
+        0x12, 0x08, 0x04, 0x02, 0x72, 0x25, 0x01, 0x08, 
+    },
+    {
+        0xcc, 0x40, 0x50, 0x48, 0xd0, 0x62, 0x10, 0x60, 
+        0x80, 0x1c, 0x00, 0x29, 0x00, 0x9a, 0x10, 0x00, 
+        0x04, 0x00, 0x00, 0x22, 0x00, 0x00, 0x80, 0x00, 
+        0x20, 0x20, 0x00, 0x68, 0xe6, 0xcb, 0x9e, 0x60, 
+    },
+    {
+        0x6e, 0x91, 0x73, 0x3f, 0xc0, 0x60, 0x82, 0x39, 
+        0x34, 0x10, 0x30, 0x48, 0x06, 0x00, 0x5c, 0xbd, 
+        0xd1, 0x8c, 0xfb, 0xd6, 0xe1, 0x20, 0xe8, 0x43, 
+        0x00, 0x06, 0x4e, 0x08, 0x00, 0x05, 0xd0, 0xc4, 
+    },
+    {
+        0x1f, 0x8d, 0xaa, 0x89, 0xe1, 0xa6, 0x02, 0x16, 
+        0x01, 0x00, 0xed, 0x21, 0x56, 0x36, 0x8b, 0x1a, 
+        0xb7, 0x1f, 0xa5, 0x13, 0x02, 0x65, 0xa0, 0x30, 
+        0x78, 0xb2, 0xc7, 0x23, 0x93, 0x6c, 0x22, 0xe9, 
+    },
+    {
+        0x7f, 0xe4, 0x74, 0x3a, 0xe3, 0x8f, 0x20, 0x98, 
+        0x0e, 0x28, 0x25, 0x26, 0x9c, 0xbf, 0x49, 0xbf, 
+        0x18, 0x32, 0x54, 0xac, 0x49, 0xb9, 0x16, 0x19, 
+        0x60, 0x0c, 0x22, 0xb5, 0xc1, 0xfb, 0x59, 0x06, 
+    },
+    {
+        0x43, 0xe3, 0x20, 0x84, 0xd9, 0x08, 0x00, 0x80, 
+        0x00, 0x55, 0x22, 0x20, 0x84, 0x01, 0xa1, 0x00, 
+        0x00, 0x48, 0x10, 0x20, 0x80, 0x13, 0x80, 0x40, 
+        0x04, 0x0d, 0x16, 0x00, 0x40, 0x00, 0x20, 0x80, 
+    },
+    {
+        0x40, 0xfd, 0xe7, 0x8d, 0x36, 0x54, 0x98, 0xe0, 
+        0x8b, 0x7b, 0x1e, 0x09, 0xc8, 0xfe, 0x49, 0xd2, 
+        0x11, 0x06, 0xee, 0x8d, 0x37, 0x19, 0x22, 0xba, 
+        0xf4, 0x77, 0xdd, 0x9f, 0xec, 0xf3, 0xda, 0xf0, 
+    },
+    {
+        0x86, 0x43, 0x42, 0xec, 0x3f, 0x8d, 0x04, 0x26, 
+        0x6c, 0xfa, 0x21, 0xc0, 0x8e, 0x62, 0xc2, 0x0c, 
+        0x85, 0xd7, 0x45, 0x01, 0xad, 0x77, 0x99, 0x55, 
+        0x50, 0xe2, 0x45, 0x40, 0x0b, 0x26, 0x54, 0xa1, 
+    },
+    {
+        0x27, 0x98, 0x19, 0x58, 0x43, 0x34, 0x10, 0xa4, 
+        0xf2, 0x05, 0x14, 0x41, 0x80, 0x22, 0x00, 0x07, 
+        0xb4, 0x00, 0x66, 0x42, 0x10, 0x72, 0xa1, 0x15, 
+        0x25, 0x60, 0x85, 0x41, 0x54, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x01, 0x02, 0x04, 0x01, 0x20, 0xc8, 0x70, 0xcb, 
+        0x20, 0x93, 0x62, 0x6a, 0x4c, 0x18, 0x95, 0x00, 
+        0x80, 0x18, 0x8b, 0x9a, 0xb2, 0xaa, 0x01, 0x32, 
+        0x7a, 0xd8, 0xc4, 0x00, 0xe5, 0xf3, 0xc3, 0x04, 
+    },
+    {
+        0x4d, 0xd4, 0x38, 0xa2, 0xa1, 0xa1, 0x72, 0x50, 
+        0x0a, 0x98, 0xfc, 0x84, 0x52, 0xc1, 0xd1, 0x44, 
+        0x94, 0x10, 0xc2, 0x20, 0x80, 0x41, 0x10, 0x42, 
+        0x00, 0x00, 0x00, 0x3a, 0x40, 0x02, 0x9d, 0xd2, 
+    },
+    {
+        0x01, 0x2f, 0xb1, 0xa8, 0x40, 0xbd, 0x32, 0x24, 
+        0x4d, 0xd3, 0x4b, 0xd0, 0x23, 0xa7, 0xad, 0xd0, 
+        0x92, 0x0a, 0xa1, 0x75, 0xac, 0xad, 0xe9, 0x01, 
+        0x1a, 0x80, 0x1f, 0x77, 0x25, 0x92, 0x1b, 0xa0, 
+    },
+    {
+        0xa1, 0xdf, 0xca, 0x20, 0x02, 0x06, 0x8c, 0x73, 
+        0x7f, 0x57, 0x3b, 0x00, 0xff, 0x0b, 0xd0, 0x00, 
+        0x6a, 0x80, 0x88, 0x00, 0xc4, 0xa1, 0x29, 0x00, 
+        0x05, 0x2a, 0x24, 0x05, 0x09, 0x40, 0x23, 0x16, 
+    },
+    {
+        0x22, 0x68, 0x05, 0x80, 0x11, 0x20, 0x11, 0xa2, 
+        0x04, 0x00, 0x90, 0x64, 0x49, 0x48, 0x82, 0x13, 
+        0xd5, 0x23, 0x30, 0x19, 0x80, 0x29, 0x92, 0x08, 
+        0x02, 0x54, 0x11, 0x88, 0x01, 0x20, 0x04, 0xa0, 
+    },
+    {
+        0x00, 0x04, 0x80, 0x81, 0x02, 0x85, 0x22, 0x60, 
+        0x90, 0x00, 0x01, 0x0b, 0x22, 0x00, 0x02, 0x12, 
+        0x11, 0x40, 0x83, 0x00, 0x01, 0x1a, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x84, 0x46, 
+        0xc8, 0x12, 0x00, 0x02, 0xfc, 0x04, 0x00, 0x1a, 
+        0xde, 0x2e, 0x4c, 0x0c, 0x02, 0x04, 0xb8, 0x80, 
+        0x26, 0xa8, 0xfc, 0x0a, 0x02, 0x8c, 0x28, 0x22, 
+    },
+    {
+        0xe0, 0xa0, 0x7b, 0x8f, 0xd6, 0xc7, 0x35, 0x21, 
+        0xc7, 0x06, 0xb1, 0xf8, 0x13, 0x07, 0x55, 0x62, 
+        0x6e, 0x93, 0x19, 0x8a, 0xfa, 0x6e, 0x0e, 0xfb, 
+        0x30, 0x16, 0xf9, 0x48, 0x2f, 0xcd, 0xeb, 0x7d, 
+    },
+    {
+        0x92, 0x58, 0x84, 0x4e, 0xa0, 0x4c, 0x2e, 0x7a, 
+        0xea, 0xed, 0x1e, 0x56, 0x49, 0xc6, 0x90, 0x11, 
+        0x24, 0x53, 0x3a, 0xe8, 0xdb, 0xcf, 0x24, 0x81, 
+        0xf1, 0x18, 0x42, 0x63, 0x53, 0x58, 0x8a, 0x1a, 
+    },
+    {
+        0x20, 0x74, 0xd3, 0x24, 0x3b, 0xaa, 0x14, 0x05, 
+        0x18, 0x60, 0x58, 0x89, 0x00, 0x48, 0x00, 0xc0, 
+        0x68, 0x82, 0x01, 0x91, 0xa4, 0x84, 0xd6, 0x2c, 
+        0x86, 0x88, 0xba, 0xc4, 0x77, 0x03, 0x10, 0x02, 
+    },
+    {
+        0x44, 0x82, 0x38, 0x00, 0x11, 0xae, 0x4a, 0x40, 
+        0xc0, 0x28, 0x00, 0x51, 0x44, 0x60, 0x14, 0x15, 
+        0x10, 0x73, 0x00, 0x10, 0x82, 0x00, 0x48, 0x02, 
+        0x05, 0x02, 0x06, 0x40, 0x03, 0xc0, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x02, 0x0c, 0x08, 0x00, 0x20, 0x02, 
+        0x00, 0x90, 0x00, 0x40, 0x00, 0xb8, 0x61, 0xd1, 
+        0x21, 0x46, 0x74, 0x32, 0x00, 0xf8, 0x8a, 0x3b, 
+        0x0f, 0x05, 0x00, 0x8b, 0xd0, 0xbb, 0x80, 0x22, 
+    },
+    {
+        0x00, 0x06, 0x69, 0x07, 0x40, 0x80, 0x43, 0x00, 
+        0x20, 0x54, 0x00, 0x50, 0xd0, 0x41, 0x0c, 0x25, 
+        0x10, 0x84, 0x10, 0x83, 0x01, 0x11, 0x28, 0x02, 
+        0x08, 0x40, 0x30, 0x00, 0xa1, 0x40, 0x00, 0x02, 
+    },
+    {
+        0x40, 0x00, 0x00, 0x20, 0x00, 0x15, 0xe3, 0xab, 
+        0x80, 0x31, 0x44, 0xaa, 0xc6, 0xc2, 0x24, 0xc6, 
+        0x13, 0xac, 0x04, 0x80, 0x00, 0xb0, 0xd1, 0x03, 
+        0x1e, 0x61, 0x85, 0x42, 0x03, 0xf3, 0x9f, 0x1d, 
+    },
+    {
+        0x0a, 0x44, 0xe8, 0x78, 0x26, 0x5e, 0x92, 0xc3, 
+        0x00, 0x20, 0x85, 0x00, 0x01, 0xb0, 0x00, 0x40, 
+        0x90, 0x4a, 0x42, 0x88, 0x04, 0xca, 0x8d, 0x0c, 
+        0x05, 0xa7, 0x03, 0x42, 0xa1, 0x22, 0x04, 0x00, 
+    },
+    {
+        0x68, 0x86, 0x01, 0x0c, 0x64, 0x55, 0x79, 0x10, 
+        0x02, 0x00, 0xa0, 0xde, 0x00, 0x20, 0xc1, 0x40, 
+        0x8b, 0x48, 0x01, 0x50, 0x80, 0x03, 0x00, 0x04, 
+        0x00, 0x00, 0x04, 0x50, 0x5d, 0xc0, 0xd0, 0x80, 
+    },
+    {
+        0x10, 0xa0, 0x0a, 0x97, 0x20, 0xbb, 0xaf, 0x4d, 
+        0x21, 0xd9, 0x10, 0x1e, 0x60, 0x04, 0x14, 0x83, 
+        0x48, 0x88, 0xd6, 0xa6, 0x3b, 0xd8, 0x3f, 0x73, 
+        0xbc, 0x27, 0x74, 0x49, 0xdc, 0x0d, 0x13, 0x92, 
+    },
+    {
+        0x2b, 0x14, 0xa1, 0x8b, 0x75, 0x2e, 0x39, 0xd1, 
+        0x09, 0x30, 0x50, 0x50, 0x08, 0x88, 0x00, 0x69, 
+        0xd4, 0x49, 0x4a, 0x02, 0x10, 0x40, 0x16, 0x80, 
+        0x64, 0xe5, 0xd7, 0x89, 0x20, 0xc0, 0x16, 0x53, 
+    },
+    {
+        0x92, 0x2b, 0x00, 0x86, 0x45, 0xa3, 0xe0, 0x15, 
+        0x8b, 0x00, 0x03, 0x0c, 0x6e, 0x19, 0x00, 0xe2, 
+        0x31, 0x70, 0x06, 0x80, 0xa5, 0x16, 0x29, 0xa8, 
+        0x00, 0x20, 0x80, 0x18, 0xac, 0x7a, 0x48, 0xe1, 
+    },
+    {
+        0x07, 0x32, 0xd6, 0xb5, 0xe8, 0x32, 0x91, 0x5f, 
+        0xa1, 0x50, 0xe5, 0x20, 0x00, 0x7c, 0x80, 0x10, 
+        0x80, 0x72, 0x8a, 0x9d, 0xaa, 0x00, 0x1f, 0x42, 
+        0x22, 0x0e, 0x31, 0x02, 0x00, 0x11, 0x94, 0x04, 
+    },
+    {
+        0x22, 0x00, 0x08, 0x40, 0x10, 0x00, 0x10, 0x5c, 
+        0x43, 0x03, 0xc8, 0xfc, 0xa5, 0xa1, 0x80, 0x05, 
+        0x33, 0x84, 0x00, 0x04, 0x80, 0x00, 0x08, 0x6e, 
+        0x4b, 0x2a, 0x26, 0x81, 0xd8, 0xaa, 0x01, 0x29, 
+    },
+    {
+        0x4d, 0x68, 0x90, 0x44, 0x09, 0x00, 0x88, 0xba, 
+        0x40, 0x00, 0x82, 0x00, 0x00, 0x00, 0xd1, 0x87, 
+        0x5b, 0x21, 0xe6, 0xb1, 0x61, 0x31, 0x08, 0x80, 
+        0x00, 0x08, 0x40, 0xc2, 0x69, 0xa0, 0x00, 0xa6, 
+    },
+    {
+        0x58, 0x8d, 0x32, 0x4a, 0x71, 0x5d, 0x0a, 0x55, 
+        0xa0, 0x9a, 0x57, 0x2d, 0x05, 0x40, 0xa6, 0x4a, 
+        0x21, 0x20, 0xb1, 0x30, 0xc6, 0x3f, 0x12, 0x01, 
+        0xc2, 0x10, 0x0a, 0x26, 0x62, 0x44, 0x82, 0x50, 
+    },
+    {
+        0x80, 0x98, 0x40, 0x80, 0xc0, 0x04, 0x00, 0x81, 
+        0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 
+        0x00, 0x02, 0xa6, 0xf1, 0x34, 0x44, 0x0e, 0x72, 
+        0xa2, 0x35, 0xe0, 0x92, 0x01, 0x81, 0x00, 0x09, 
+    },
+    {
+        0x00, 0x04, 0x00, 0x00, 0x85, 0x88, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x80, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 
+        0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x04, 0x00, 0x00, 0x88, 0xff, 0xbf, 0xef, 0xe7, 
+        0xff, 0xff, 0xbf, 0xff, 0xef, 0xef, 0xff, 0xfd, 
+    },
+    {
+        0xff, 0xfb, 0xfe, 0xbf, 0xff, 0xff, 0x7f, 0x05, 
+        0x34, 0x00, 0xb3, 0x85, 0x06, 0x47, 0x16, 0x42, 
+        0x02, 0x54, 0x10, 0xe4, 0x92, 0x80, 0x05, 0xb3, 
+        0x22, 0x54, 0x30, 0x81, 0x63, 0x42, 0x0b, 0x18, 
+    },
+    {
+        0x7b, 0x38, 0xf5, 0x13, 0xe5, 0x07, 0xea, 0xa9, 
+        0x4c, 0x3c, 0x14, 0x05, 0x00, 0x06, 0x02, 0x80, 
+        0xd9, 0x1a, 0x48, 0xbd, 0x37, 0xee, 0x96, 0xf4, 
+        0x5f, 0x70, 0xc0, 0x7e, 0xb2, 0xbf, 0x5f, 0x35, 
+    },
+    {
+        0x44, 0xe6, 0x5f, 0x45, 0x00, 0x90, 0x46, 0x41, 
+        0x40, 0x1d, 0x3b, 0x06, 0xa1, 0x62, 0x13, 0xfe, 
+        0x05, 0x85, 0x02, 0x39, 0x48, 0x05, 0x08, 0x0c, 
+        0x4f, 0x14, 0x00, 0x00, 0x88, 0x34, 0x18, 0x58, 
+    },
+    {
+        0x77, 0x30, 0x15, 0xd8, 0x0e, 0xbd, 0xfb, 0x4b, 
+        0x90, 0x8a, 0x00, 0x85, 0x00, 0xc1, 0x1d, 0xe6, 
+        0x14, 0xed, 0x86, 0xb3, 0x72, 0xff, 0x9b, 0x63, 
+        0x92, 0xfd, 0xbe, 0xd9, 0x7b, 0x88, 0x92, 0x0a, 
+    },
+    {
+        0xfe, 0xd3, 0xb2, 0x1c, 0x80, 0xb9, 0x7a, 0x17, 
+        0xc9, 0x82, 0x17, 0xdc, 0xfb, 0xff, 0x80, 0x39, 
+        0x60, 0x42, 0x0c, 0x59, 0x01, 0x0f, 0xdf, 0x37, 
+        0xa3, 0x94, 0x50, 0xb1, 0x23, 0x06, 0x07, 0x23, 
+    },
+    {
+        0x5a, 0xf8, 0x02, 0x31, 0xf0, 0x01, 0x02, 0x31, 
+        0x40, 0x00, 0x82, 0x1e, 0x0a, 0x3a, 0x6a, 0x05, 
+        0x84, 0x5b, 0x80, 0x12, 0x02, 0x80, 0x14, 0xa7, 
+        0x12, 0x26, 0x4b, 0xa0, 0x69, 0x10, 0x01, 0x90, 
+    },
+    {
+        0x00, 0x10, 0x8a, 0x84, 0x02, 0x18, 0x80, 0x3f, 
+        0x08, 0x07, 0x40, 0x42, 0x10, 0x01, 0x14, 0x4e, 
+        0xb0, 0x80, 0x00, 0x18, 0x10, 0xc5, 0x81, 0x02, 
+        0x02, 0x82, 0x29, 0x10, 0x10, 0x02, 0x00, 0x88, 
+    },
+    {
+        0x20, 0x00, 0x42, 0x00, 0x80, 0x02, 0x00, 0x11, 
+        0x00, 0xe0, 0x13, 0x44, 0x04, 0x58, 0x02, 0xfe, 
+        0x07, 0x3c, 0x28, 0x30, 0x98, 0x97, 0x73, 0x04, 
+        0xd1, 0xce, 0x13, 0xcb, 0x10, 0x62, 0x1f, 0x43, 
+    },
+    {
+        0x8d, 0x27, 0xac, 0x55, 0x2e, 0x42, 0x92, 0xc8, 
+        0x80, 0x53, 0x88, 0x02, 0x39, 0x40, 0x51, 0x78, 
+        0x2c, 0x29, 0x88, 0x80, 0x00, 0xb9, 0x28, 0x24, 
+        0x41, 0x0c, 0x0e, 0x08, 0x21, 0x44, 0x00, 0x42, 
+    },
+    {
+        0x08, 0x04, 0x68, 0x08, 0x06, 0x00, 0x04, 0x12, 
+        0x31, 0x30, 0x90, 0x02, 0x3e, 0x5b, 0x85, 0xe0, 
+        0x36, 0x29, 0x44, 0x10, 0x14, 0x28, 0x82, 0x10, 
+        0x66, 0x42, 0x34, 0x83, 0x3c, 0x01, 0x1b, 0x53, 
+    },
+    {
+        0x04, 0x04, 0x0d, 0x0e, 0x22, 0x0c, 0x51, 0x00, 
+        0x12, 0x00, 0x00, 0xc0, 0x40, 0x00, 0x00, 0x88, 
+        0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0xf6, 0xdf, 0x47, 0x54, 0x68, 0x88, 0x08, 0x00, 
+    },
+    {
+        0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
+        0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 
+        0x00, 0x06, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x80, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0xff, 0xef, 0xfd, 0xf7, 
+        0x7f, 0xff, 0xfe, 0xff, 0xff, 0xfb, 0xff, 0xff, 
+    },
+    {
+        0xff, 0xfd, 0xff, 0xbf, 0xff, 0xff, 0xff, 0x00, 
+        0xc2, 0x12, 0x20, 0x04, 0x06, 0x0c, 0x08, 0x07, 
+        0x24, 0x16, 0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0xe0, 0xfe, 0xff, 0xff, 0xff, 
+        0xff, 0xff, 0x79, 0x7f, 0xdf, 0x28, 0xf9, 0x00, 
+        0x32, 0x0c, 0x12, 0x80, 0x08, 0x00, 0x3a, 0xd5, 
+        0x58, 0xd8, 0xc2, 0xec, 0x18, 0x9d, 0xa8, 0x2f, 
+    },
+    {
+        0x20, 0x96, 0x10, 0xe0, 0x0c, 0xd6, 0x22, 0x26, 
+        0x97, 0x0f, 0x06, 0x02, 0x40, 0xb2, 0x55, 0x90, 
+        0xa2, 0x80, 0x11, 0x50, 0x00, 0x98, 0x04, 0x04, 
+        0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0xc0, 0xfb, 0xff, 0xff, 
+        0xfe, 0xef, 0xfb, 0xdf, 0x08, 0x0b, 0x43, 0x62, 
+        0xb6, 0x41, 0x3b, 0xfb, 0x74, 0x6f, 0x89, 0x23, 
+    },
+    {
+        0x7f, 0xae, 0xd7, 0xec, 0x47, 0xe0, 0x60, 0x59, 
+        0x96, 0xa0, 0x8f, 0x09, 0x2c, 0x61, 0x30, 0xa0, 
+        0x0d, 0x09, 0xaa, 0x2a, 0x4e, 0xd4, 0x7b, 0x4f, 
+        0xb2, 0xc4, 0x8b, 0x38, 0xc6, 0xa9, 0x10, 0x61, 
+    },
+    {
+        0x14, 0x00, 0x00, 0x42, 0x0c, 0x80, 0x02, 0x02, 
+        0x48, 0xfe, 0x85, 0x64, 0x3e, 0xd6, 0xf7, 0xe3, 
+        0xa0, 0x3a, 0x07, 0x0c, 0x0c, 0xe4, 0x30, 0x04, 
+        0x80, 0xf6, 0x02, 0x10, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 
+        0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 
+        0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 
+        0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x04, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 
+        0xe0, 0xff, 0xbd, 0xfe, 0xff, 0xff, 0xff, 0xff, 
+        0x7f, 0x7f, 0xe7, 0xfb, 0xbf, 0xff, 0xff, 0xf7, 
+    },
+    {
+        0xff, 0xff, 0xff, 0xef, 0x7e, 0xff, 0xf7, 0xdf, 
+        0xf7, 0xf6, 0xdf, 0xfb, 0xfe, 0xbf, 0x4f, 0x80, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0xff, 0x7f, 
+    },
+    {
+        0x7f, 0xff, 0xf7, 0xb6, 0x06, 0x44, 0x7e, 0xb8, 
+        0xf5, 0x3b, 0x31, 0x88, 0x96, 0x17, 0xf4, 0x00, 
+        0x60, 0xa9, 0x91, 0x13, 0x80, 0x00, 0x49, 0x72, 
+        0xf3, 0xf2, 0x24, 0x00, 0x01, 0x87, 0xc8, 0x42, 
+    },
+    {
+        0xd3, 0xe3, 0x48, 0x50, 0x00, 0x24, 0x05, 0x43, 
+        0x00, 0x00, 0x4c, 0x4a, 0x27, 0x02, 0x58, 0x10, 
+        0x20, 0x28, 0x16, 0x01, 0x09, 0xa8, 0x14, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0xc0, 0x3e, 0x68, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 
+        0xff, 0xb7, 0xdb, 0xfd, 0xf7, 0x00, 0x00, 0x00, 
+        0x00, 0x40, 0x2e, 0xc7, 0x80, 0x01, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x20, 0x01, 0x00, 0x00, 0x40, 0x00, 0x00, 
+        0x00, 0x00, 0x30, 0x00, 0xa8, 0xff, 0xf7, 0xb4, 
+        0xf3, 0xad, 0xff, 0x03, 0x20, 0x01, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xfb, 0xff, 
+        0xf7, 0x9d, 0xcf, 0xfd, 0xbf, 0x01, 0xc3, 0x15, 
+        0x27, 0x18, 0x0a, 0x81, 0x42, 0xa8, 0x00, 0x0a, 
+    },
+    {
+        0x08, 0x81, 0x08, 0x80, 0x08, 0x80, 0x04, 0x18, 
+        0xbe, 0xa3, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 
+        0xe6, 0x69, 0x37, 0xdc, 0xff, 0x6b, 0xff, 0x3d, 
+        0xf8, 0xfc, 0xf9, 0xf3, 0x04, 0x00, 0x00, 0x00, 
+    },
+    {
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 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, 0x6f, 0xbf, 0xee, 0xe7, 
+        0xfe, 0xdf, 0xa2, 0x5d, 0xd8, 0x3f, 0x0b, 0xc0, 
+        0x84, 0x09, 0x0c, 0xa0, 0x40, 0x00, 0x10, 0x69, 
+        0x10, 0xe2, 0x12, 0xb9, 0xa5, 0x86, 0x00, 0x5a, 
+    },
+    {
+        0x00, 0x68, 0x89, 0x02, 0x05, 0x90, 0x80, 0x6a, 
+        0x10, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x80, 
+        0xf9, 0x1f, 0x00, 0x8e, 0x01, 0x00, 0x00, 0x00, 
+        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+    },
+};
+const u16 ucs2_index_table_4E00_9FFF[0xA0 - 0x4E][4] = 
+{
+    {0x0000, 0x002c, 0x0049, 0x006d, },
+    {0x0096, 0x00b6, 0x00d8, 0x00f1, },
+    {0x010e, 0x0124, 0x0134, 0x0141, },
+    {0x014c, 0x0152, 0x0175, 0x0195, },
+    {0x01b1, 0x01d5, 0x01eb, 0x0203, },
+    {0x0212, 0x022a, 0x0251, 0x0268, },
+    {0x0291, 0x02bc, 0x02db, 0x02fe, },
+    {0x0325, 0x033e, 0x0358, 0x0373, },
+    {0x0390, 0x03a7, 0x03ba, 0x03c3, },
+    {0x03da, 0x03f0, 0x0410, 0x0428, },
+    {0x043e, 0x044e, 0x0459, 0x0467, },
+    {0x0473, 0x048f, 0x04a8, 0x04c4, },
+    {0x04d8, 0x04ef, 0x04fe, 0x0507, },
+    {0x0517, 0x051d, 0x0539, 0x0561, },
+    {0x0579, 0x0596, 0x05b0, 0x05cc, },
+    {0x05da, 0x05ec, 0x05f8, 0x05fc, },
+    {0x0612, 0x062f, 0x0643, 0x0662, },
+    {0x0671, 0x068d, 0x06a5, 0x06c0, },
+    {0x06df, 0x0700, 0x0720, 0x073a, },
+    {0x0755, 0x0767, 0x0774, 0x077e, },
+    {0x0788, 0x07a7, 0x07c8, 0x07e5, },
+    {0x0810, 0x082b, 0x0845, 0x0865, },
+    {0x087b, 0x0892, 0x08a3, 0x08b8, },
+    {0x08c5, 0x08d5, 0x08ea, 0x0901, },
+    {0x091d, 0x0937, 0x0950, 0x095e, },
+    {0x096d, 0x0986, 0x09a6, 0x09c2, },
+    {0x09dd, 0x09f7, 0x0a16, 0x0a26, },
+    {0x0a38, 0x0a48, 0x0a58, 0x0a6d, },
+    {0x0a7a, 0x0a86, 0x0a91, 0x0a9b, },
+    {0x0a9b, 0x0aa6, 0x0ab6, 0x0acc, },
+    {0x0ae2, 0x0b02, 0x0b1f, 0x0b43, },
+    {0x0b66, 0x0b80, 0x0b9e, 0x0bbc, },
+    {0x0bd6, 0x0bef, 0x0bfd, 0x0c13, },
+    {0x0c2a, 0x0c3c, 0x0c4c, 0x0c58, },
+    {0x0c62, 0x0c68, 0x0c76, 0x0c8f, },
+    {0x0ca5, 0x0cb3, 0x0cc3, 0x0cd0, },
+    {0x0cd9, 0x0ce8, 0x0cff, 0x0d11, },
+    {0x0d2f, 0x0d4a, 0x0d53, 0x0d67, },
+    {0x0d78, 0x0d8e, 0x0d9c, 0x0da9, },
+    {0x0db7, 0x0dd2, 0x0de6, 0x0e07, },
+    {0x0e25, 0x0e43, 0x0e52, 0x0e63, },
+    {0x0e7e, 0x0e95, 0x0ea9, 0x0ebf, },
+    {0x0ed2, 0x0ef2, 0x0f04, 0x0f1c, },
+    {0x0f2b, 0x0f35, 0x0f4d, 0x0f5b, },
+    {0x0f73, 0x0f87, 0x0f92, 0x0faa, },
+    {0x0fb9, 0x0fd5, 0x0fee, 0x1004, },
+    {0x1016, 0x1021, 0x1029, 0x103f, },
+    {0x1051, 0x1057, 0x1059, 0x105b, },
+    {0x105b, 0x105c, 0x105e, 0x107d, },
+    {0x10b9, 0x10ef, 0x1105, 0x1119, },
+    {0x112d, 0x1150, 0x115f, 0x1183, },
+    {0x11a9, 0x11c0, 0x11dc, 0x11ed, },
+    {0x11fe, 0x1221, 0x1235, 0x125a, },
+    {0x127c, 0x129e, 0x12c1, 0x12dc, },
+    {0x12f4, 0x130a, 0x131d, 0x1330, },
+    {0x1343, 0x1353, 0x1362, 0x1370, },
+    {0x137b, 0x1382, 0x1396, 0x13af, },
+    {0x13cc, 0x13e8, 0x13fc, 0x140e, },
+    {0x141c, 0x1427, 0x143f, 0x1450, },
+    {0x1469, 0x1478, 0x147f, 0x1482, },
+    {0x149c, 0x149f, 0x14a1, 0x14a4, },
+    {0x14a4, 0x14a6, 0x14a8, 0x14c5, },
+    {0x1502, 0x1538, 0x1547, 0x154e, },
+    {0x154e, 0x1570, 0x159b, 0x15ad, },
+    {0x15cb, 0x15e0, 0x15f7, 0x1604, },
+    {0x1605, 0x1605, 0x161e, 0x1644, },
+    {0x1667, 0x168b, 0x16a2, 0x16c1, },
+    {0x16db, 0x16e4, 0x1709, 0x171d, },
+    {0x1726, 0x1726, 0x1727, 0x1729, },
+    {0x172a, 0x172b, 0x172c, 0x172d, },
+    {0x172f, 0x1730, 0x1731, 0x1769, },
+    {0x17a2, 0x17dd, 0x180c, 0x180c, },
+    {0x1822, 0x184b, 0x1868, 0x187c, },
+    {0x1893, 0x18a8, 0x18b7, 0x18c5, },
+    {0x18cf, 0x18cf, 0x18da, 0x18fc, },
+    {0x1908, 0x190b, 0x1923, 0x193a, },
+    {0x193a, 0x193a, 0x194d, 0x1975, },
+    {0x1986, 0x1990, 0x199c, 0x199c, },
+    {0x199c, 0x199c, 0x199e, 0x19cb, },
+    {0x19e3, 0x19e3, 0x19e3, 0x19e3, },
+    {0x19e3, 0x19fd, 0x1a22, 0x1a30, },
+    {0x1a47, 0x1a57, 0x1a5b, 0x1a6b, },
+};

+ 6875 - 0
luat/packages/iconv/ucs2_to_gb2312_table.h

@@ -0,0 +1,6875 @@
+#include "luat_base.h"
+#define u16 uint16_t
+#define u8 uint8_t
+const u16 ucs2_to_gb2312_table[] = {
+    /*0x4E00, GB2312 Code:*/ 0xD2BB, /*==>寧 Row:50 Col:27 */
+    /*0x4E01, GB2312 Code:*/ 0xB6A1, /*==>땀 Row:22 Col:01 */
+    /*0x4E03, GB2312 Code:*/ 0xC6DF, /*==>펌 Row:38 Col:63 */
+    /*0x4E07, GB2312 Code:*/ 0xCDF2, /*==>拱 Row:45 Col:82 */
+    /*0x4E08, GB2312 Code:*/ 0xD5C9, /*==>狼 Row:53 Col:41 */
+    /*0x4E09, GB2312 Code:*/ 0xC8FD, /*==>힛 Row:40 Col:93 */
+    /*0x4E0A, GB2312 Code:*/ 0xC9CF, /*==>� Row:41 Col:47 */
+    /*0x4E0B, GB2312 Code:*/ 0xCFC2, /*==>苟 Row:47 Col:34 */
+    /*0x4E0C, GB2312 Code:*/ 0xD8A2, /*==>笠 Row:56 Col:02 */
+    /*0x4E0D, GB2312 Code:*/ 0xB2BB, /*==>꼇 Row:18 Col:27 */
+    /*0x4E0E, GB2312 Code:*/ 0xD3EB, /*==>宅 Row:51 Col:75 */
+    /*0x4E10, GB2312 Code:*/ 0xD8A4, /*==>摩 Row:56 Col:04 */
+    /*0x4E11, GB2312 Code:*/ 0xB3F3, /*==>농 Row:19 Col:83 */
+    /*0x4E13, GB2312 Code:*/ 0xD7A8, /*==>淚 Row:55 Col:08 */
+    /*0x4E14, GB2312 Code:*/ 0xC7D2, /*==>할 Row:39 Col:50 */
+    /*0x4E15, GB2312 Code:*/ 0xD8A7, /*==>碼 Row:56 Col:07 */
+    /*0x4E16, GB2312 Code:*/ 0xCAC0, /*==>各 Row:42 Col:32 */
+    /*0x4E18, GB2312 Code:*/ 0xC7F0, /*==>헴 Row:39 Col:80 */
+    /*0x4E19, GB2312 Code:*/ 0xB1FB, /*==>깩 Row:17 Col:91 */
+    /*0x4E1A, GB2312 Code:*/ 0xD2B5, /*==>撚 Row:50 Col:21 */
+    /*0x4E1B, GB2312 Code:*/ 0xB4D4, /*==>님 Row:20 Col:52 */
+    /*0x4E1C, GB2312 Code:*/ 0xB6AB, /*==>땜 Row:22 Col:11 */
+    /*0x4E1D, GB2312 Code:*/ 0xCBBF, /*==>介 Row:43 Col:31 */
+    /*0x4E1E, GB2312 Code:*/ 0xD8A9, /*==>馬 Row:56 Col:09 */
+    /*0x4E22, GB2312 Code:*/ 0xB6AA, /*==>땔 Row:22 Col:10 */
+    /*0x4E24, GB2312 Code:*/ 0xC1BD, /*==>좃 Row:33 Col:29 */
+    /*0x4E25, GB2312 Code:*/ 0xD1CF, /*==>拮 Row:49 Col:47 */
+    /*0x4E27, GB2312 Code:*/ 0xC9A5, /*==>� Row:41 Col:05 */
+    /*0x4E28, GB2312 Code:*/ 0xD8AD, /*==>幕 Row:56 Col:13 */
+    /*0x4E2A, GB2312 Code:*/ 0xB8F6, /*==>몸 Row:24 Col:86 */
+    /*0x4E2B, GB2312 Code:*/ 0xD1BE, /*==>耭 Row:49 Col:30 */
+    /*0x4E2C, GB2312 Code:*/ 0xE3DC, /*==>軾 Row:67 Col:60 */
+    /*0x4E2D, GB2312 Code:*/ 0xD6D0, /*==>櫓 Row:54 Col:48 */
+    /*0x4E30, GB2312 Code:*/ 0xB7E1, /*==>료 Row:23 Col:65 */
+    /*0x4E32, GB2312 Code:*/ 0xB4AE, /*==>눔 Row:20 Col:14 */
+    /*0x4E34, GB2312 Code:*/ 0xC1D9, /*==>줄 Row:33 Col:57 */
+    /*0x4E36, GB2312 Code:*/ 0xD8BC, /*==>漫 Row:56 Col:28 */
+    /*0x4E38, GB2312 Code:*/ 0xCDE8, /*==>滑 Row:45 Col:72 */
+    /*0x4E39, GB2312 Code:*/ 0xB5A4, /*==>덮 Row:21 Col:04 */
+    /*0x4E3A, GB2312 Code:*/ 0xCEAA, /*==>槨 Row:46 Col:10 */
+    /*0x4E3B, GB2312 Code:*/ 0xD6F7, /*==>寮 Row:54 Col:87 */
+    /*0x4E3D, GB2312 Code:*/ 0xC0F6, /*==>쟝 Row:32 Col:86 */
+    /*0x4E3E, GB2312 Code:*/ 0xBED9, /*==>앨 Row:30 Col:57 */
+    /*0x4E3F, GB2312 Code:*/ 0xD8AF, /*==>膜 Row:56 Col:15 */
+    /*0x4E43, GB2312 Code:*/ 0xC4CB, /*==>켄 Row:36 Col:43 */
+    /*0x4E45, GB2312 Code:*/ 0xBEC3, /*==>씹 Row:30 Col:35 */
+    /*0x4E47, GB2312 Code:*/ 0xD8B1, /*==>邈 Row:56 Col:17 */
+    /*0x4E48, GB2312 Code:*/ 0xC3B4, /*==>척 Row:35 Col:20 */
+    /*0x4E49, GB2312 Code:*/ 0xD2E5, /*==>屢 Row:50 Col:69 */
+    /*0x4E4B, GB2312 Code:*/ 0xD6AE, /*==>裂 Row:54 Col:14 */
+    /*0x4E4C, GB2312 Code:*/ 0xCEDA, /*==>魁 Row:46 Col:58 */
+    /*0x4E4D, GB2312 Code:*/ 0xD5A7, /*==>烙 Row:53 Col:07 */
+    /*0x4E4E, GB2312 Code:*/ 0xBAF5, /*==>빎 Row:26 Col:85 */
+    /*0x4E4F, GB2312 Code:*/ 0xB7A6, /*==>랩 Row:23 Col:06 */
+    /*0x4E50, GB2312 Code:*/ 0xC0D6, /*==>있 Row:32 Col:54 */
+    /*0x4E52, GB2312 Code:*/ 0xC6B9, /*==>틜 Row:38 Col:25 */
+    /*0x4E53, GB2312 Code:*/ 0xC5D2, /*==>텀 Row:37 Col:50 */
+    /*0x4E54, GB2312 Code:*/ 0xC7C7, /*==>피 Row:39 Col:39 */
+    /*0x4E56, GB2312 Code:*/ 0xB9D4, /*==>밋 Row:25 Col:52 */
+    /*0x4E58, GB2312 Code:*/ 0xB3CB, /*==>넉 Row:19 Col:43 */
+    /*0x4E59, GB2312 Code:*/ 0xD2D2, /*==>菉 Row:50 Col:50 */
+    /*0x4E5C, GB2312 Code:*/ 0xD8BF, /*==>萬 Row:56 Col:31 */
+    /*0x4E5D, GB2312 Code:*/ 0xBEC5, /*==>씽 Row:30 Col:37 */
+    /*0x4E5E, GB2312 Code:*/ 0xC6F2, /*==>평 Row:38 Col:82 */
+    /*0x4E5F, GB2312 Code:*/ 0xD2B2, /*==>冷 Row:50 Col:18 */
+    /*0x4E60, GB2312 Code:*/ 0xCFB0, /*==>構 Row:47 Col:16 */
+    /*0x4E61, GB2312 Code:*/ 0xCFE7, /*==>券 Row:47 Col:71 */
+    /*0x4E66, GB2312 Code:*/ 0xCAE9, /*==>蝎 Row:42 Col:73 */
+    /*0x4E69, GB2312 Code:*/ 0xD8C0, /*==>蔓 Row:56 Col:32 */
+    /*0x4E70, GB2312 Code:*/ 0xC2F2, /*==>찜 Row:34 Col:82 */
+    /*0x4E71, GB2312 Code:*/ 0xC2D2, /*==>쫘 Row:34 Col:50 */
+    /*0x4E73, GB2312 Code:*/ 0xC8E9, /*==>흗 Row:40 Col:73 */
+    /*0x4E7E, GB2312 Code:*/ 0xC7AC, /*==>푼 Row:39 Col:12 */
+    /*0x4E86, GB2312 Code:*/ 0xC1CB, /*==>죄 Row:33 Col:43 */
+    /*0x4E88, GB2312 Code:*/ 0xD3E8, /*==>貸 Row:51 Col:72 */
+    /*0x4E89, GB2312 Code:*/ 0xD5F9, /*==>轢 Row:53 Col:89 */
+    /*0x4E8B, GB2312 Code:*/ 0xCAC2, /*==>慤 Row:42 Col:34 */
+    /*0x4E8C, GB2312 Code:*/ 0xB6FE, /*==>랗 Row:22 Col:94 */
+    /*0x4E8D, GB2312 Code:*/ 0xD8A1, /*==>立 Row:56 Col:01 */
+    /*0x4E8E, GB2312 Code:*/ 0xD3DA, /*==>黨 Row:51 Col:58 */
+    /*0x4E8F, GB2312 Code:*/ 0xBFF7, /*==>웍 Row:31 Col:87 */
+    /*0x4E91, GB2312 Code:*/ 0xD4C6, /*==>暾 Row:52 Col:38 */
+    /*0x4E92, GB2312 Code:*/ 0xBBA5, /*==>빳 Row:27 Col:05 */
+    /*0x4E93, GB2312 Code:*/ 0xD8C1, /*==>蠻 Row:56 Col:33 */
+    /*0x4E94, GB2312 Code:*/ 0xCEE5, /*==>巧 Row:46 Col:69 */
+    /*0x4E95, GB2312 Code:*/ 0xBEAE, /*==>쒜 Row:30 Col:14 */
+    /*0x4E98, GB2312 Code:*/ 0xD8A8, /*==>磨 Row:56 Col:08 */
+    /*0x4E9A, GB2312 Code:*/ 0xD1C7, /*==>饑 Row:49 Col:39 */
+    /*0x4E9B, GB2312 Code:*/ 0xD0A9, /*==>硅 Row:48 Col:09 */
+    /*0x4E9F, GB2312 Code:*/ 0xD8BD, /*==>灣 Row:56 Col:29 */
+    /*0x4EA0, GB2312 Code:*/ 0xD9EF, /*==>畝 Row:57 Col:79 */
+    /*0x4EA1, GB2312 Code:*/ 0xCDF6, /*==>空 Row:45 Col:86 */
+    /*0x4EA2, GB2312 Code:*/ 0xBFBA, /*==>옌 Row:31 Col:26 */
+    /*0x4EA4, GB2312 Code:*/ 0xBDBB, /*==>슥 Row:29 Col:27 */
+    /*0x4EA5, GB2312 Code:*/ 0xBAA5, /*==>벤 Row:26 Col:05 */
+    /*0x4EA6, GB2312 Code:*/ 0xD2E0, /*==>腦 Row:50 Col:64 */
+    /*0x4EA7, GB2312 Code:*/ 0xB2FA, /*==>끓 Row:18 Col:90 */
+    /*0x4EA8, GB2312 Code:*/ 0xBAE0, /*==>뷕 Row:26 Col:64 */
+    /*0x4EA9, GB2312 Code:*/ 0xC4B6, /*==>캘 Row:36 Col:22 */
+    /*0x4EAB, GB2312 Code:*/ 0xCFED, /*==>權 Row:47 Col:77 */
+    /*0x4EAC, GB2312 Code:*/ 0xBEA9, /*==>쑴 Row:30 Col:09 */
+    /*0x4EAD, GB2312 Code:*/ 0xCDA4, /*==>癸 Row:45 Col:04 */
+    /*0x4EAE, GB2312 Code:*/ 0xC1C1, /*==>좋 Row:33 Col:33 */
+    /*0x4EB2, GB2312 Code:*/ 0xC7D7, /*==>항 Row:39 Col:55 */
+    /*0x4EB3, GB2312 Code:*/ 0xD9F1, /*==>舞 Row:57 Col:81 */
+    /*0x4EB5, GB2312 Code:*/ 0xD9F4, /*==>誣 Row:57 Col:84 */
+    /*0x4EBA, GB2312 Code:*/ 0xC8CB, /*==>훙 Row:40 Col:43 */
+    /*0x4EBB, GB2312 Code:*/ 0xD8E9, /*==>驀 Row:56 Col:73 */
+    /*0x4EBF, GB2312 Code:*/ 0xD2DA, /*==>聾 Row:50 Col:58 */
+    /*0x4EC0, GB2312 Code:*/ 0xCAB2, /*==>痂 Row:42 Col:18 */
+    /*0x4EC1, GB2312 Code:*/ 0xC8CA, /*==>훗 Row:40 Col:42 */
+    /*0x4EC2, GB2312 Code:*/ 0xD8EC, /*==>氓 Row:56 Col:76 */
+    /*0x4EC3, GB2312 Code:*/ 0xD8EA, /*==>麥 Row:56 Col:74 */
+    /*0x4EC4, GB2312 Code:*/ 0xD8C6, /*==>抹 Row:56 Col:38 */
+    /*0x4EC5, GB2312 Code:*/ 0xBDF6, /*==>쏭 Row:29 Col:86 */
+    /*0x4EC6, GB2312 Code:*/ 0xC6CD, /*==>팠 Row:38 Col:45 */
+    /*0x4EC7, GB2312 Code:*/ 0xB3F0, /*==>놈 Row:19 Col:80 */
+    /*0x4EC9, GB2312 Code:*/ 0xD8EB, /*==>孟 Row:56 Col:75 */
+    /*0x4ECA, GB2312 Code:*/ 0xBDF1, /*==>쏟 Row:29 Col:81 */
+    /*0x4ECB, GB2312 Code:*/ 0xBDE9, /*==>썽 Row:29 Col:73 */
+    /*0x4ECD, GB2312 Code:*/ 0xC8D4, /*==>휄 Row:40 Col:52 */
+    /*0x4ECE, GB2312 Code:*/ 0xB4D3, /*==>닒 Row:20 Col:51 */
+    /*0x4ED1, GB2312 Code:*/ 0xC2D8, /*==>쬐 Row:34 Col:56 */
+    /*0x4ED3, GB2312 Code:*/ 0xB2D6, /*==>꾑 Row:18 Col:54 */
+    /*0x4ED4, GB2312 Code:*/ 0xD7D0, /*==>凌 Row:55 Col:48 */
+    /*0x4ED5, GB2312 Code:*/ 0xCACB, /*==>墾 Row:42 Col:43 */
+    /*0x4ED6, GB2312 Code:*/ 0xCBFB, /*==>儉 Row:43 Col:91 */
+    /*0x4ED7, GB2312 Code:*/ 0xD5CC, /*==>螂 Row:53 Col:44 */
+    /*0x4ED8, GB2312 Code:*/ 0xB8B6, /*==>마 Row:24 Col:22 */
+    /*0x4ED9, GB2312 Code:*/ 0xCFC9, /*==>鉤 Row:47 Col:41 */
+    /*0x4EDD, GB2312 Code:*/ 0xD9DA, /*==>描 Row:57 Col:58 */
+    /*0x4EDE, GB2312 Code:*/ 0xD8F0, /*==>萌 Row:56 Col:80 */
+    /*0x4EDF, GB2312 Code:*/ 0xC7AA, /*==>푸 Row:39 Col:10 */
+    /*0x4EE1, GB2312 Code:*/ 0xD8EE, /*==>盲 Row:56 Col:78 */
+    /*0x4EE3, GB2312 Code:*/ 0xB4FA, /*==>덜 Row:20 Col:90 */
+    /*0x4EE4, GB2312 Code:*/ 0xC1EE, /*==>즈 Row:33 Col:78 */
+    /*0x4EE5, GB2312 Code:*/ 0xD2D4, /*==>鹿 Row:50 Col:52 */
+    /*0x4EE8, GB2312 Code:*/ 0xD8ED, /*==>猛 Row:56 Col:77 */
+    /*0x4EEA, GB2312 Code:*/ 0xD2C7, /*==>老 Row:50 Col:39 */
+    /*0x4EEB, GB2312 Code:*/ 0xD8EF, /*==>盟 Row:56 Col:79 */
+    /*0x4EEC, GB2312 Code:*/ 0xC3C7, /*==>쳬 Row:35 Col:39 */
+    /*0x4EF0, GB2312 Code:*/ 0xD1F6, /*==>嵐 Row:49 Col:86 */
+    /*0x4EF2, GB2312 Code:*/ 0xD6D9, /*==>輅 Row:54 Col:57 */
+    /*0x4EF3, GB2312 Code:*/ 0xD8F2, /*==>覓 Row:56 Col:82 */
+    /*0x4EF5, GB2312 Code:*/ 0xD8F5, /*==>勉 Row:56 Col:85 */
+    /*0x4EF6, GB2312 Code:*/ 0xBCFE, /*==>숭 Row:28 Col:94 */
+    /*0x4EF7, GB2312 Code:*/ 0xBCDB, /*==>송 Row:28 Col:59 */
+    /*0x4EFB, GB2312 Code:*/ 0xC8CE, /*==>훨 Row:40 Col:46 */
+    /*0x4EFD, GB2312 Code:*/ 0xB7DD, /*==>룀 Row:23 Col:61 */
+    /*0x4EFF, GB2312 Code:*/ 0xB7C2, /*==>력 Row:23 Col:34 */
+    /*0x4F01, GB2312 Code:*/ 0xC6F3, /*==>폐 Row:38 Col:83 */
+    /*0x4F09, GB2312 Code:*/ 0xD8F8, /*==>眄 Row:56 Col:88 */
+    /*0x4F0A, GB2312 Code:*/ 0xD2C1, /*==>怒 Row:50 Col:33 */
+    /*0x4F0D, GB2312 Code:*/ 0xCEE9, /*==>橋 Row:46 Col:73 */
+    /*0x4F0E, GB2312 Code:*/ 0xBCBF, /*==>셀 Row:28 Col:31 */
+    /*0x4F0F, GB2312 Code:*/ 0xB7FC, /*==>률 Row:23 Col:92 */
+    /*0x4F10, GB2312 Code:*/ 0xB7A5, /*==>램 Row:23 Col:05 */
+    /*0x4F11, GB2312 Code:*/ 0xD0DD, /*==>金 Row:48 Col:61 */
+    /*0x4F17, GB2312 Code:*/ 0xD6DA, /*==>露 Row:54 Col:58 */
+    /*0x4F18, GB2312 Code:*/ 0xD3C5, /*==>膽 Row:51 Col:37 */
+    /*0x4F19, GB2312 Code:*/ 0xBBEF, /*==>삼 Row:27 Col:79 */
+    /*0x4F1A, GB2312 Code:*/ 0xBBE1, /*==>삔 Row:27 Col:65 */
+    /*0x4F1B, GB2312 Code:*/ 0xD8F1, /*==>冪 Row:56 Col:81 */
+    /*0x4F1E, GB2312 Code:*/ 0xC9A1, /*==>� Row:41 Col:01 */
+    /*0x4F1F, GB2312 Code:*/ 0xCEB0, /*==>寬 Row:46 Col:16 */
+    /*0x4F20, GB2312 Code:*/ 0xB4AB, /*==>눈 Row:20 Col:11 */
+    /*0x4F22, GB2312 Code:*/ 0xD8F3, /*==>免 Row:56 Col:83 */
+    /*0x4F24, GB2312 Code:*/ 0xC9CB, /*==>� Row:41 Col:43 */
+    /*0x4F25, GB2312 Code:*/ 0xD8F6, /*==>棉 Row:56 Col:86 */
+    /*0x4F26, GB2312 Code:*/ 0xC2D7, /*==>쬈 Row:34 Col:55 */
+    /*0x4F27, GB2312 Code:*/ 0xD8F7, /*==>沔 Row:56 Col:87 */
+    /*0x4F2A, GB2312 Code:*/ 0xCEB1, /*==>慣 Row:46 Col:17 */
+    /*0x4F2B, GB2312 Code:*/ 0xD8F9, /*==>眠 Row:56 Col:89 */
+    /*0x4F2F, GB2312 Code:*/ 0xB2AE, /*==>껍 Row:18 Col:14 */
+    /*0x4F30, GB2312 Code:*/ 0xB9C0, /*==>뮌 Row:25 Col:32 */
+    /*0x4F32, GB2312 Code:*/ 0xD9A3, /*==>名 Row:57 Col:03 */
+    /*0x4F34, GB2312 Code:*/ 0xB0E9, /*==>곈 Row:16 Col:73 */
+    /*0x4F36, GB2312 Code:*/ 0xC1E6, /*==>쥘 Row:33 Col:70 */
+    /*0x4F38, GB2312 Code:*/ 0xC9EC, /*==>� Row:41 Col:76 */
+    /*0x4F3A, GB2312 Code:*/ 0xCBC5, /*==>愾 Row:43 Col:37 */
+    /*0x4F3C, GB2312 Code:*/ 0xCBC6, /*==>慨 Row:43 Col:38 */
+    /*0x4F3D, GB2312 Code:*/ 0xD9A4, /*==>命 Row:57 Col:04 */
+    /*0x4F43, GB2312 Code:*/ 0xB5E8, /*==>듣 Row:21 Col:72 */
+    /*0x4F46, GB2312 Code:*/ 0xB5AB, /*==>뎃 Row:21 Col:11 */
+    /*0x4F4D, GB2312 Code:*/ 0xCEBB, /*==>貫 Row:46 Col:27 */
+    /*0x4F4E, GB2312 Code:*/ 0xB5CD, /*==>됴 Row:21 Col:45 */
+    /*0x4F4F, GB2312 Code:*/ 0xD7A1, /*==>遼 Row:55 Col:01 */
+    /*0x4F50, GB2312 Code:*/ 0xD7F4, /*==>藺 Row:55 Col:84 */
+    /*0x4F51, GB2312 Code:*/ 0xD3D3, /*==>幢 Row:51 Col:51 */
+    /*0x4F53, GB2312 Code:*/ 0xCCE5, /*==>竟 Row:44 Col:69 */
+    /*0x4F55, GB2312 Code:*/ 0xBACE, /*==>부 Row:26 Col:46 */
+    /*0x4F57, GB2312 Code:*/ 0xD9A2, /*==>冥 Row:57 Col:02 */
+    /*0x4F58, GB2312 Code:*/ 0xD9DC, /*==>杳 Row:57 Col:60 */
+    /*0x4F59, GB2312 Code:*/ 0xD3E0, /*==>岱 Row:51 Col:64 */
+    /*0x4F5A, GB2312 Code:*/ 0xD8FD, /*==>麵 Row:56 Col:93 */
+    /*0x4F5B, GB2312 Code:*/ 0xB7F0, /*==>뤘 Row:23 Col:80 */
+    /*0x4F5C, GB2312 Code:*/ 0xD7F7, /*==>鱗 Row:55 Col:87 */
+    /*0x4F5D, GB2312 Code:*/ 0xD8FE, /*==>滅 Row:56 Col:94 */
+    /*0x4F5E, GB2312 Code:*/ 0xD8FA, /*==>綿 Row:56 Col:90 */
+    /*0x4F5F, GB2312 Code:*/ 0xD9A1, /*==>蔑 Row:57 Col:01 */
+    /*0x4F60, GB2312 Code:*/ 0xC4E3, /*==>콱 Row:36 Col:67 */
+    /*0x4F63, GB2312 Code:*/ 0xD3B6, /*==>澾 Row:51 Col:22 */
+    /*0x4F64, GB2312 Code:*/ 0xD8F4, /*==>冕 Row:56 Col:84 */
+    /*0x4F65, GB2312 Code:*/ 0xD9DD, /*==>渺 Row:57 Col:61 */
+    /*0x4F67, GB2312 Code:*/ 0xD8FB, /*==>緬 Row:56 Col:91 */
+    /*0x4F69, GB2312 Code:*/ 0xC5E5, /*==>톡 Row:37 Col:69 */
+    /*0x4F6C, GB2312 Code:*/ 0xC0D0, /*==>읽 Row:32 Col:48 */
+    /*0x4F6F, GB2312 Code:*/ 0xD1F0, /*==>蘭 Row:49 Col:80 */
+    /*0x4F70, GB2312 Code:*/ 0xB0DB, /*==>겡 Row:16 Col:59 */
+    /*0x4F73, GB2312 Code:*/ 0xBCD1, /*==>솅 Row:28 Col:49 */
+    /*0x4F74, GB2312 Code:*/ 0xD9A6, /*==>暝 Row:57 Col:06 */
+    /*0x4F76, GB2312 Code:*/ 0xD9A5, /*==>明 Row:57 Col:05 */
+    /*0x4F7B, GB2312 Code:*/ 0xD9AC, /*==>蓂 Row:57 Col:12 */
+    /*0x4F7C, GB2312 Code:*/ 0xD9AE, /*==>酩 Row:57 Col:14 */
+    /*0x4F7E, GB2312 Code:*/ 0xD9AB, /*==>茗 Row:57 Col:11 */
+    /*0x4F7F, GB2312 Code:*/ 0xCAB9, /*==>賈 Row:42 Col:25 */
+    /*0x4F83, GB2312 Code:*/ 0xD9A9, /*==>皿 Row:57 Col:09 */
+    /*0x4F84, GB2312 Code:*/ 0xD6B6, /*==>伶 Row:54 Col:22 */
+    /*0x4F88, GB2312 Code:*/ 0xB3DE, /*==>넸 Row:19 Col:62 */
+    /*0x4F89, GB2312 Code:*/ 0xD9A8, /*==>溟 Row:57 Col:08 */
+    /*0x4F8B, GB2312 Code:*/ 0xC0FD, /*==>절 Row:32 Col:93 */
+    /*0x4F8D, GB2312 Code:*/ 0xCACC, /*==>奸 Row:42 Col:44 */
+    /*0x4F8F, GB2312 Code:*/ 0xD9AA, /*==>瞑 Row:57 Col:10 */
+    /*0x4F91, GB2312 Code:*/ 0xD9A7, /*==>椧 Row:57 Col:07 */
+    /*0x4F94, GB2312 Code:*/ 0xD9B0, /*==>鳴 Row:57 Col:16 */
+    /*0x4F97, GB2312 Code:*/ 0xB6B1, /*==>떡 Row:22 Col:17 */
+    /*0x4F9B, GB2312 Code:*/ 0xB9A9, /*==>묩 Row:25 Col:09 */
+    /*0x4F9D, GB2312 Code:*/ 0xD2C0, /*==>弩 Row:50 Col:32 */
+    /*0x4FA0, GB2312 Code:*/ 0xCFC0, /*==>舅 Row:47 Col:32 */
+    /*0x4FA3, GB2312 Code:*/ 0xC2C2, /*==>쩟 Row:34 Col:34 */
+    /*0x4FA5, GB2312 Code:*/ 0xBDC4, /*==>식 Row:29 Col:36 */
+    /*0x4FA6, GB2312 Code:*/ 0xD5EC, /*==>礪 Row:53 Col:76 */
+    /*0x4FA7, GB2312 Code:*/ 0xB2E0, /*==>꿋 Row:18 Col:64 */
+    /*0x4FA8, GB2312 Code:*/ 0xC7C8, /*==>픽 Row:39 Col:40 */
+    /*0x4FA9, GB2312 Code:*/ 0xBFEB, /*==>용 Row:31 Col:75 */
+    /*0x4FAA, GB2312 Code:*/ 0xD9AD, /*==>螟 Row:57 Col:13 */
+    /*0x4FAC, GB2312 Code:*/ 0xD9AF, /*==>銘 Row:57 Col:15 */
+    /*0x4FAE, GB2312 Code:*/ 0xCEEA, /*==>狡 Row:46 Col:74 */
+    /*0x4FAF, GB2312 Code:*/ 0xBAEE, /*==>븜 Row:26 Col:78 */
+    /*0x4FB5, GB2312 Code:*/ 0xC7D6, /*==>핫 Row:39 Col:54 */
+    /*0x4FBF, GB2312 Code:*/ 0xB1E3, /*==>긱 Row:17 Col:67 */
+    /*0x4FC3, GB2312 Code:*/ 0xB4D9, /*==>다 Row:20 Col:57 */
+    /*0x4FC4, GB2312 Code:*/ 0xB6ED, /*==>띤 Row:22 Col:77 */
+    /*0x4FC5, GB2312 Code:*/ 0xD9B4, /*==>募 Row:57 Col:20 */
+    /*0x4FCA, GB2312 Code:*/ 0xBFA1, /*==>에 Row:31 Col:01 */
+    /*0x4FCE, GB2312 Code:*/ 0xD9DE, /*==>猫 Row:57 Col:62 */
+    /*0x4FCF, GB2312 Code:*/ 0xC7CE, /*==>핑 Row:39 Col:46 */
+    /*0x4FD0, GB2312 Code:*/ 0xC0FE, /*==>젊 Row:32 Col:94 */
+    /*0x4FD1, GB2312 Code:*/ 0xD9B8, /*==>摸 Row:57 Col:24 */
+    /*0x4FD7, GB2312 Code:*/ 0xCBD7, /*==>粳 Row:43 Col:55 */
+    /*0x4FD8, GB2312 Code:*/ 0xB7FD, /*==>륨 Row:23 Col:93 */
+    /*0x4FDA, GB2312 Code:*/ 0xD9B5, /*==>姆 Row:57 Col:21 */
+    /*0x4FDC, GB2312 Code:*/ 0xD9B7, /*==>慕 Row:57 Col:23 */
+    /*0x4FDD, GB2312 Code:*/ 0xB1A3, /*==>괏 Row:17 Col:03 */
+    /*0x4FDE, GB2312 Code:*/ 0xD3E1, /*==>帶 Row:51 Col:65 */
+    /*0x4FDF, GB2312 Code:*/ 0xD9B9, /*==>摹 Row:57 Col:25 */
+    /*0x4FE1, GB2312 Code:*/ 0xD0C5, /*==>斤 Row:48 Col:37 */
+    /*0x4FE3, GB2312 Code:*/ 0xD9B6, /*==>帽 Row:57 Col:22 */
+    /*0x4FE6, GB2312 Code:*/ 0xD9B1, /*==>袂 Row:57 Col:17 */
+    /*0x4FE8, GB2312 Code:*/ 0xD9B2, /*==>侮 Row:57 Col:18 */
+    /*0x4FE9, GB2312 Code:*/ 0xC1A9, /*==>젤 Row:33 Col:09 */
+    /*0x4FEA, GB2312 Code:*/ 0xD9B3, /*==>冒 Row:57 Col:19 */
+    /*0x4FED, GB2312 Code:*/ 0xBCF3, /*==>숍 Row:28 Col:83 */
+    /*0x4FEE, GB2312 Code:*/ 0xD0DE, /*==>錦 Row:48 Col:62 */
+    /*0x4FEF, GB2312 Code:*/ 0xB8A9, /*==>릇 Row:24 Col:09 */
+    /*0x4FF1, GB2312 Code:*/ 0xBEE3, /*==>얇 Row:30 Col:67 */
+    /*0x4FF3, GB2312 Code:*/ 0xD9BD, /*==>母 Row:57 Col:29 */
+    /*0x4FF8, GB2312 Code:*/ 0xD9BA, /*==>暮 Row:57 Col:26 */
+    /*0x4FFA, GB2312 Code:*/ 0xB0B3, /*==>개 Row:16 Col:19 */
+    /*0x4FFE, GB2312 Code:*/ 0xD9C2, /*==>眸 Row:57 Col:34 */
+    /*0x500C, GB2312 Code:*/ 0xD9C4, /*==>耗 Row:57 Col:36 */
+    /*0x500D, GB2312 Code:*/ 0xB1B6, /*==>굡 Row:17 Col:22 */
+    /*0x500F, GB2312 Code:*/ 0xD9BF, /*==>牟 Row:57 Col:31 */
+    /*0x5012, GB2312 Code:*/ 0xB5B9, /*==>돌 Row:21 Col:25 */
+    /*0x5014, GB2312 Code:*/ 0xBEF3, /*==>얼 Row:30 Col:83 */
+    /*0x5018, GB2312 Code:*/ 0xCCC8, /*==>京 Row:44 Col:40 */
+    /*0x5019, GB2312 Code:*/ 0xBAF2, /*==>빅 Row:26 Col:82 */
+    /*0x501A, GB2312 Code:*/ 0xD2D0, /*==>祿 Row:50 Col:48 */
+    /*0x501C, GB2312 Code:*/ 0xD9C3, /*==>矛 Row:57 Col:35 */
+    /*0x501F, GB2312 Code:*/ 0xBDE8, /*==>썼 Row:29 Col:72 */
+    /*0x5021, GB2312 Code:*/ 0xB3AB, /*==>낙 Row:19 Col:11 */
+    /*0x5025, GB2312 Code:*/ 0xD9C5, /*==>芼 Row:57 Col:37 */
+    /*0x5026, GB2312 Code:*/ 0xBEEB, /*==>얜 Row:30 Col:75 */
+    /*0x5028, GB2312 Code:*/ 0xD9C6, /*==>茅 Row:57 Col:38 */
+    /*0x5029, GB2312 Code:*/ 0xD9BB, /*==>某 Row:57 Col:27 */
+    /*0x502A, GB2312 Code:*/ 0xC4DF, /*==>콥 Row:36 Col:63 */
+    /*0x502C, GB2312 Code:*/ 0xD9BE, /*==>毛 Row:57 Col:30 */
+    /*0x502D, GB2312 Code:*/ 0xD9C1, /*==>瑁 Row:57 Col:33 */
+    /*0x502E, GB2312 Code:*/ 0xD9C0, /*==>牡 Row:57 Col:32 */
+    /*0x503A, GB2312 Code:*/ 0xD5AE, /*==>丹 Row:53 Col:14 */
+    /*0x503C, GB2312 Code:*/ 0xD6B5, /*==>令 Row:54 Col:21 */
+    /*0x503E, GB2312 Code:*/ 0xC7E3, /*==>허 Row:39 Col:67 */
+    /*0x5043, GB2312 Code:*/ 0xD9C8, /*==>謨 Row:57 Col:40 */
+    /*0x5047, GB2312 Code:*/ 0xBCD9, /*==>솝 Row:28 Col:57 */
+    /*0x5048, GB2312 Code:*/ 0xD9CA, /*==>木 Row:57 Col:42 */
+    /*0x504C, GB2312 Code:*/ 0xD9BC, /*==>模 Row:57 Col:28 */
+    /*0x504E, GB2312 Code:*/ 0xD9CB, /*==>沐 Row:57 Col:43 */
+    /*0x504F, GB2312 Code:*/ 0xC6AB, /*==>튤 Row:38 Col:11 */
+    /*0x5055, GB2312 Code:*/ 0xD9C9, /*==>貌 Row:57 Col:41 */
+    /*0x505A, GB2312 Code:*/ 0xD7F6, /*==>隣 Row:55 Col:86 */
+    /*0x505C, GB2312 Code:*/ 0xCDA3, /*==>界 Row:45 Col:03 */
+    /*0x5065, GB2312 Code:*/ 0xBDA1, /*==>숯 Row:29 Col:01 */
+    /*0x506C, GB2312 Code:*/ 0xD9CC, /*==>牧 Row:57 Col:44 */
+    /*0x5076, GB2312 Code:*/ 0xC5BC, /*==>탉 Row:37 Col:28 */
+    /*0x5077, GB2312 Code:*/ 0xCDB5, /*==>孤 Row:45 Col:21 */
+    /*0x507B, GB2312 Code:*/ 0xD9CD, /*==>目 Row:57 Col:45 */
+    /*0x507E, GB2312 Code:*/ 0xD9C7, /*==>謀 Row:57 Col:39 */
+    /*0x507F, GB2312 Code:*/ 0xB3A5, /*==>낄 Row:19 Col:05 */
+    /*0x5080, GB2312 Code:*/ 0xBFFE, /*==>웨 Row:31 Col:94 */
+    /*0x5085, GB2312 Code:*/ 0xB8B5, /*==>링 Row:24 Col:21 */
+    /*0x5088, GB2312 Code:*/ 0xC0FC, /*==>전 Row:32 Col:92 */
+    /*0x508D, GB2312 Code:*/ 0xB0F8, /*==>공 Row:16 Col:88 */
+    /*0x50A3, GB2312 Code:*/ 0xB4F6, /*==>덕 Row:20 Col:86 */
+    /*0x50A5, GB2312 Code:*/ 0xD9CE, /*==>睦 Row:57 Col:46 */
+    /*0x50A7, GB2312 Code:*/ 0xD9CF, /*==>穆 Row:57 Col:47 */
+    /*0x50A8, GB2312 Code:*/ 0xB4A2, /*==>뇨 Row:20 Col:02 */
+    /*0x50A9, GB2312 Code:*/ 0xD9D0, /*==>鶩 Row:57 Col:48 */
+    /*0x50AC, GB2312 Code:*/ 0xB4DF, /*==>닭 Row:20 Col:63 */
+    /*0x50B2, GB2312 Code:*/ 0xB0C1, /*==>걍 Row:16 Col:33 */
+    /*0x50BA, GB2312 Code:*/ 0xD9D1, /*==>歿 Row:57 Col:49 */
+    /*0x50BB, GB2312 Code:*/ 0xC9B5, /*==>� Row:41 Col:21 */
+    /*0x50CF, GB2312 Code:*/ 0xCFF1, /*==>獗 Row:47 Col:81 */
+    /*0x50D6, GB2312 Code:*/ 0xD9D2, /*==>沒 Row:57 Col:50 */
+    /*0x50DA, GB2312 Code:*/ 0xC1C5, /*==>좝 Row:33 Col:37 */
+    /*0x50E6, GB2312 Code:*/ 0xD9D6, /*==>卯 Row:57 Col:54 */
+    /*0x50E7, GB2312 Code:*/ 0xC9AE, /*==>� Row:41 Col:14 */
+    /*0x50EC, GB2312 Code:*/ 0xD9D5, /*==>蒙 Row:57 Col:53 */
+    /*0x50ED, GB2312 Code:*/ 0xD9D4, /*==>朦 Row:57 Col:52 */
+    /*0x50EE, GB2312 Code:*/ 0xD9D7, /*==>墓 Row:57 Col:55 */
+    /*0x50F3, GB2312 Code:*/ 0xCBDB, /*==>去 Row:43 Col:59 */
+    /*0x50F5, GB2312 Code:*/ 0xBDA9, /*==>쉘 Row:29 Col:09 */
+    /*0x50FB, GB2312 Code:*/ 0xC6A7, /*==>튑 Row:38 Col:07 */
+    /*0x5106, GB2312 Code:*/ 0xD9D3, /*==>夢 Row:57 Col:51 */
+    /*0x5107, GB2312 Code:*/ 0xD9D8, /*==>妙 Row:57 Col:56 */
+    /*0x510B, GB2312 Code:*/ 0xD9D9, /*==>廟 Row:57 Col:57 */
+    /*0x5112, GB2312 Code:*/ 0xC8E5, /*==>흐 Row:40 Col:69 */
+    /*0x5121, GB2312 Code:*/ 0xC0DC, /*==>잔 Row:32 Col:60 */
+    /*0x513F, GB2312 Code:*/ 0xB6F9, /*==>랏 Row:22 Col:89 */
+    /*0x5140, GB2312 Code:*/ 0xD8A3, /*==>粒 Row:56 Col:03 */
+    /*0x5141, GB2312 Code:*/ 0xD4CA, /*==>豚 Row:52 Col:42 */
+    /*0x5143, GB2312 Code:*/ 0xD4AA, /*==>禱 Row:52 Col:10 */
+    /*0x5144, GB2312 Code:*/ 0xD0D6, /*==>琴 Row:48 Col:54 */
+    /*0x5145, GB2312 Code:*/ 0xB3E4, /*==>념 Row:19 Col:68 */
+    /*0x5146, GB2312 Code:*/ 0xD5D7, /*==>兩 Row:53 Col:55 */
+    /*0x5148, GB2312 Code:*/ 0xCFC8, /*==>邱 Row:47 Col:40 */
+    /*0x5149, GB2312 Code:*/ 0xB9E2, /*==>밟 Row:25 Col:66 */
+    /*0x514B, GB2312 Code:*/ 0xBFCB, /*==>옹 Row:31 Col:43 */
+    /*0x514D, GB2312 Code:*/ 0xC3E2, /*==>출 Row:35 Col:66 */
+    /*0x5151, GB2312 Code:*/ 0xB6D2, /*==>뚝 Row:22 Col:50 */
+    /*0x5154, GB2312 Code:*/ 0xCDC3, /*==>稿 Row:45 Col:35 */
+    /*0x5155, GB2312 Code:*/ 0xD9EE, /*==>珷 Row:57 Col:78 */
+    /*0x5156, GB2312 Code:*/ 0xD9F0, /*==>繆 Row:57 Col:80 */
+    /*0x515A, GB2312 Code:*/ 0xB5B3, /*==>뎨 Row:21 Col:19 */
+    /*0x515C, GB2312 Code:*/ 0xB6B5, /*==>떫 Row:22 Col:21 */
+    /*0x5162, GB2312 Code:*/ 0xBEA4, /*==>쑈 Row:30 Col:04 */
+    /*0x5165, GB2312 Code:*/ 0xC8EB, /*==>흙 Row:40 Col:75 */
+    /*0x5168, GB2312 Code:*/ 0xC8AB, /*==>홍 Row:40 Col:11 */
+    /*0x516B, GB2312 Code:*/ 0xB0CB, /*==>검 Row:16 Col:43 */
+    /*0x516C, GB2312 Code:*/ 0xB9AB, /*==>무 Row:25 Col:11 */
+    /*0x516D, GB2312 Code:*/ 0xC1F9, /*==>짇 Row:33 Col:89 */
+    /*0x516E, GB2312 Code:*/ 0xD9E2, /*==>務 Row:57 Col:66 */
+    /*0x5170, GB2312 Code:*/ 0xC0BC, /*==>읊 Row:32 Col:28 */
+    /*0x5171, GB2312 Code:*/ 0xB9B2, /*==>묾 Row:25 Col:18 */
+    /*0x5173, GB2312 Code:*/ 0xB9D8, /*==>밑 Row:25 Col:56 */
+    /*0x5174, GB2312 Code:*/ 0xD0CB, /*==>菫 Row:48 Col:43 */
+    /*0x5175, GB2312 Code:*/ 0xB1F8, /*==>깡 Row:17 Col:88 */
+    /*0x5176, GB2312 Code:*/ 0xC6E4, /*==>페 Row:38 Col:68 */
+    /*0x5177, GB2312 Code:*/ 0xBEDF, /*==>야 Row:30 Col:63 */
+    /*0x5178, GB2312 Code:*/ 0xB5E4, /*==>듕 Row:21 Col:68 */
+    /*0x5179, GB2312 Code:*/ 0xD7C8, /*==>律 Row:55 Col:40 */
+    /*0x517B, GB2312 Code:*/ 0xD1F8, /*==>楠 Row:49 Col:88 */
+    /*0x517C, GB2312 Code:*/ 0xBCE6, /*==>쇗 Row:28 Col:70 */
+    /*0x517D, GB2312 Code:*/ 0xCADE, /*==>艱 Row:42 Col:62 */
+    /*0x5180, GB2312 Code:*/ 0xBCBD, /*==>섹 Row:28 Col:29 */
+    /*0x5181, GB2312 Code:*/ 0xD9E6, /*==>戊 Row:57 Col:70 */
+    /*0x5182, GB2312 Code:*/ 0xD8E7, /*==>貊 Row:56 Col:71 */
+    /*0x5185, GB2312 Code:*/ 0xC4DA, /*==>코 Row:36 Col:58 */
+    /*0x5188, GB2312 Code:*/ 0xB8D4, /*==>먹 Row:24 Col:52 */
+    /*0x5189, GB2312 Code:*/ 0xC8BD, /*==>횟 Row:40 Col:29 */
+    /*0x518C, GB2312 Code:*/ 0xB2E1, /*==>꿍 Row:18 Col:65 */
+    /*0x518D, GB2312 Code:*/ 0xD4D9, /*==>疼 Row:52 Col:57 */
+    /*0x5192, GB2312 Code:*/ 0xC3B0, /*==>챨 Row:35 Col:16 */
+    /*0x5195, GB2312 Code:*/ 0xC3E1, /*==>춘 Row:35 Col:65 */
+    /*0x5196, GB2312 Code:*/ 0xDAA2, /*==>紊 Row:58 Col:02 */
+    /*0x5197, GB2312 Code:*/ 0xC8DF, /*==>휵 Row:40 Col:63 */
+    /*0x5199, GB2312 Code:*/ 0xD0B4, /*==>畇 Row:48 Col:20 */
+    /*0x519B, GB2312 Code:*/ 0xBEFC, /*==>엊 Row:30 Col:92 */
+    /*0x519C, GB2312 Code:*/ 0xC5A9, /*==>크 Row:37 Col:09 */
+    /*0x51A0, GB2312 Code:*/ 0xB9DA, /*==>박 Row:25 Col:58 */
+    /*0x51A2, GB2312 Code:*/ 0xDAA3, /*==>紋 Row:58 Col:03 */
+    /*0x51A4, GB2312 Code:*/ 0xD4A9, /*==>睹 Row:52 Col:09 */
+    /*0x51A5, GB2312 Code:*/ 0xDAA4, /*==>聞 Row:58 Col:04 */
+    /*0x51AB, GB2312 Code:*/ 0xD9FB, /*==>刎 Row:57 Col:91 */
+    /*0x51AC, GB2312 Code:*/ 0xB6AC, /*==>땝 Row:22 Col:12 */
+    /*0x51AF, GB2312 Code:*/ 0xB7EB, /*==>룸 Row:23 Col:75 */
+    /*0x51B0, GB2312 Code:*/ 0xB1F9, /*==>깥 Row:17 Col:89 */
+    /*0x51B1, GB2312 Code:*/ 0xD9FC, /*==>吻 Row:57 Col:92 */
+    /*0x51B2, GB2312 Code:*/ 0xB3E5, /*==>녑 Row:19 Col:69 */
+    /*0x51B3, GB2312 Code:*/ 0xBEF6, /*==>엄 Row:30 Col:86 */
+    /*0x51B5, GB2312 Code:*/ 0xBFF6, /*==>워 Row:31 Col:86 */
+    /*0x51B6, GB2312 Code:*/ 0xD2B1, /*==>耐 Row:50 Col:17 */
+    /*0x51B7, GB2312 Code:*/ 0xC0E4, /*==>잤 Row:32 Col:68 */
+    /*0x51BB, GB2312 Code:*/ 0xB6B3, /*==>떨 Row:22 Col:19 */
+    /*0x51BC, GB2312 Code:*/ 0xD9FE, /*==>文 Row:57 Col:94 */
+    /*0x51BD, GB2312 Code:*/ 0xD9FD, /*==>問 Row:57 Col:93 */
+    /*0x51C0, GB2312 Code:*/ 0xBEBB, /*==>씐 Row:30 Col:27 */
+    /*0x51C4, GB2312 Code:*/ 0xC6E0, /*==>펍 Row:38 Col:64 */
+    /*0x51C6, GB2312 Code:*/ 0xD7BC, /*==>硫 Row:55 Col:28 */
+    /*0x51C7, GB2312 Code:*/ 0xDAA1, /*==>汶 Row:58 Col:01 */
+    /*0x51C9, GB2312 Code:*/ 0xC1B9, /*==>졸 Row:33 Col:25 */
+    /*0x51CB, GB2312 Code:*/ 0xB5F2, /*==>딘 Row:21 Col:82 */
+    /*0x51CC, GB2312 Code:*/ 0xC1E8, /*==>쥡 Row:33 Col:72 */
+    /*0x51CF, GB2312 Code:*/ 0xBCF5, /*==>숑 Row:28 Col:85 */
+    /*0x51D1, GB2312 Code:*/ 0xB4D5, /*==>닙 Row:20 Col:53 */
+    /*0x51DB, GB2312 Code:*/ 0xC1DD, /*==>줍 Row:33 Col:61 */
+    /*0x51DD, GB2312 Code:*/ 0xC4FD, /*==>퀸 Row:36 Col:93 */
+    /*0x51E0, GB2312 Code:*/ 0xBCB8, /*==>섯 Row:28 Col:24 */
+    /*0x51E1, GB2312 Code:*/ 0xB7B2, /*==>럴 Row:23 Col:18 */
+    /*0x51E4, GB2312 Code:*/ 0xB7EF, /*==>뤄 Row:23 Col:79 */
+    /*0x51EB, GB2312 Code:*/ 0xD9EC, /*==>毋 Row:57 Col:76 */
+    /*0x51ED, GB2312 Code:*/ 0xC6BE, /*==>틴 Row:38 Col:30 */
+    /*0x51EF, GB2312 Code:*/ 0xBFAD, /*==>열 Row:31 Col:13 */
+    /*0x51F0, GB2312 Code:*/ 0xBBCB, /*==>뽐 Row:27 Col:43 */
+    /*0x51F3, GB2312 Code:*/ 0xB5CA, /*==>됨 Row:21 Col:42 */
+    /*0x51F5, GB2312 Code:*/ 0xDBC9, /*==>排 Row:59 Col:41 */
+    /*0x51F6, GB2312 Code:*/ 0xD0D7, /*==>禁 Row:48 Col:55 */
+    /*0x51F8, GB2312 Code:*/ 0xCDB9, /*==>攷 Row:45 Col:25 */
+    /*0x51F9, GB2312 Code:*/ 0xB0BC, /*==>갸 Row:16 Col:28 */
+    /*0x51FA, GB2312 Code:*/ 0xB3F6, /*==>놔 Row:19 Col:86 */
+    /*0x51FB, GB2312 Code:*/ 0xBBF7, /*==>샌 Row:27 Col:87 */
+    /*0x51FC, GB2312 Code:*/ 0xDBCA, /*==>杯 Row:59 Col:42 */
+    /*0x51FD, GB2312 Code:*/ 0xBAAF, /*==>변 Row:26 Col:15 */
+    /*0x51FF, GB2312 Code:*/ 0xD4E4, /*==>竇 Row:52 Col:68 */
+    /*0x5200, GB2312 Code:*/ 0xB5B6, /*==>독 Row:21 Col:22 */
+    /*0x5201, GB2312 Code:*/ 0xB5F3, /*==>딛 Row:21 Col:83 */
+    /*0x5202, GB2312 Code:*/ 0xD8D6, /*==>輞 Row:56 Col:54 */
+    /*0x5203, GB2312 Code:*/ 0xC8D0, /*==>훵 Row:40 Col:48 */
+    /*0x5206, GB2312 Code:*/ 0xB7D6, /*==>롸 Row:23 Col:54 */
+    /*0x5207, GB2312 Code:*/ 0xC7D0, /*==>학 Row:39 Col:48 */
+    /*0x5208, GB2312 Code:*/ 0xD8D7, /*==>邙 Row:56 Col:55 */
+    /*0x520A, GB2312 Code:*/ 0xBFAF, /*==>엷 Row:31 Col:15 */
+    /*0x520D, GB2312 Code:*/ 0xDBBB, /*==>芳 Row:59 Col:27 */
+    /*0x520E, GB2312 Code:*/ 0xD8D8, /*==>埋 Row:56 Col:56 */
+    /*0x5211, GB2312 Code:*/ 0xD0CC, /*==>覲 Row:48 Col:44 */
+    /*0x5212, GB2312 Code:*/ 0xBBAE, /*==>뺍 Row:27 Col:14 */
+    /*0x5216, GB2312 Code:*/ 0xEBBE, /*==>毓 Row:75 Col:30 */
+    /*0x5217, GB2312 Code:*/ 0xC1D0, /*==>죗 Row:33 Col:48 */
+    /*0x5218, GB2312 Code:*/ 0xC1F5, /*==>증 Row:33 Col:85 */
+    /*0x5219, GB2312 Code:*/ 0xD4F2, /*==>橙 Row:52 Col:82 */
+    /*0x521A, GB2312 Code:*/ 0xB8D5, /*==>먼 Row:24 Col:53 */
+    /*0x521B, GB2312 Code:*/ 0xB4B4, /*==>눼 Row:20 Col:20 */
+    /*0x521D, GB2312 Code:*/ 0xB3F5, /*==>놓 Row:19 Col:85 */
+    /*0x5220, GB2312 Code:*/ 0xC9BE, /*==>� Row:41 Col:30 */
+    /*0x5224, GB2312 Code:*/ 0xC5D0, /*==>털 Row:37 Col:48 */
+    /*0x5228, GB2312 Code:*/ 0xC5D9, /*==>텐 Row:37 Col:57 */
+    /*0x5229, GB2312 Code:*/ 0xC0FB, /*==>적 Row:32 Col:91 */
+    /*0x522B, GB2312 Code:*/ 0xB1F0, /*==>깎 Row:17 Col:80 */
+    /*0x522D, GB2312 Code:*/ 0xD8D9, /*==>妹 Row:56 Col:57 */
+    /*0x522E, GB2312 Code:*/ 0xB9CE, /*==>민 Row:25 Col:46 */
+    /*0x5230, GB2312 Code:*/ 0xB5BD, /*==>돕 Row:21 Col:29 */
+    /*0x5233, GB2312 Code:*/ 0xD8DA, /*==>媒 Row:56 Col:58 */
+    /*0x5236, GB2312 Code:*/ 0xD6C6, /*==>齡 Row:54 Col:38 */
+    /*0x5237, GB2312 Code:*/ 0xCBA2, /*==>岬 Row:43 Col:02 */
+    /*0x5238, GB2312 Code:*/ 0xC8AF, /*==>환 Row:40 Col:15 */
+    /*0x5239, GB2312 Code:*/ 0xC9B2, /*==>� Row:41 Col:18 */
+    /*0x523A, GB2312 Code:*/ 0xB4CC, /*==>늬 Row:20 Col:44 */
+    /*0x523B, GB2312 Code:*/ 0xBFCC, /*==>옻 Row:31 Col:44 */
+    /*0x523D, GB2312 Code:*/ 0xB9F4, /*==>뱐 Row:25 Col:84 */
+    /*0x523F, GB2312 Code:*/ 0xD8DB, /*==>寐 Row:56 Col:59 */
+    /*0x5240, GB2312 Code:*/ 0xD8DC, /*==>昧 Row:56 Col:60 */
+    /*0x5241, GB2312 Code:*/ 0xB6E7, /*==>띄 Row:22 Col:71 */
+    /*0x5242, GB2312 Code:*/ 0xBCC1, /*==>셉 Row:28 Col:33 */
+    /*0x5243, GB2312 Code:*/ 0xCCEA, /*==>耿 Row:44 Col:74 */
+    /*0x524A, GB2312 Code:*/ 0xCFF7, /*==>潰 Row:47 Col:87 */
+    /*0x524C, GB2312 Code:*/ 0xD8DD, /*==>枚 Row:56 Col:61 */
+    /*0x524D, GB2312 Code:*/ 0xC7B0, /*==>품 Row:39 Col:16 */
+    /*0x5250, GB2312 Code:*/ 0xB9D0, /*==>밀 Row:25 Col:48 */
+    /*0x5251, GB2312 Code:*/ 0xBDA3, /*==>숲 Row:29 Col:03 */
+    /*0x5254, GB2312 Code:*/ 0xCCDE, /*==>烱 Row:44 Col:62 */
+    /*0x5256, GB2312 Code:*/ 0xC6CA, /*==>팜 Row:38 Col:42 */
+    /*0x525C, GB2312 Code:*/ 0xD8E0, /*==>煤 Row:56 Col:64 */
+    /*0x525E, GB2312 Code:*/ 0xD8DE, /*==>梅 Row:56 Col:62 */
+    /*0x5261, GB2312 Code:*/ 0xD8DF, /*==>每 Row:56 Col:63 */
+    /*0x5265, GB2312 Code:*/ 0xB0FE, /*==>괆 Row:16 Col:94 */
+    /*0x5267, GB2312 Code:*/ 0xBEE7, /*==>양 Row:30 Col:71 */
+    /*0x5269, GB2312 Code:*/ 0xCAA3, /*==>假 Row:42 Col:03 */
+    /*0x526A, GB2312 Code:*/ 0xBCF4, /*==>숏 Row:28 Col:84 */
+    /*0x526F, GB2312 Code:*/ 0xB8B1, /*==>릴 Row:24 Col:17 */
+    /*0x5272, GB2312 Code:*/ 0xB8EE, /*==>몇 Row:24 Col:78 */
+    /*0x527D, GB2312 Code:*/ 0xD8E2, /*==>買 Row:56 Col:66 */
+    /*0x527F, GB2312 Code:*/ 0xBDCB, /*==>싯 Row:29 Col:43 */
+    /*0x5281, GB2312 Code:*/ 0xD8E4, /*==>邁 Row:56 Col:68 */
+    /*0x5282, GB2312 Code:*/ 0xD8E3, /*==>賣 Row:56 Col:67 */
+    /*0x5288, GB2312 Code:*/ 0xC5FC, /*==>퉁 Row:37 Col:92 */
+    /*0x5290, GB2312 Code:*/ 0xD8E5, /*==>魅 Row:56 Col:69 */
+    /*0x5293, GB2312 Code:*/ 0xD8E6, /*==>脈 Row:56 Col:70 */
+    /*0x529B, GB2312 Code:*/ 0xC1A6, /*==>제 Row:33 Col:06 */
+    /*0x529D, GB2312 Code:*/ 0xC8B0, /*==>활 Row:40 Col:16 */
+    /*0x529E, GB2312 Code:*/ 0xB0EC, /*==>곗 Row:16 Col:76 */
+    /*0x529F, GB2312 Code:*/ 0xB9A6, /*==>묘 Row:25 Col:06 */
+    /*0x52A0, GB2312 Code:*/ 0xBCD3, /*==>속 Row:28 Col:51 */
+    /*0x52A1, GB2312 Code:*/ 0xCEF1, /*==>蛟 Row:46 Col:81 */
+    /*0x52A2, GB2312 Code:*/ 0xDBBD, /*==>蚌 Row:59 Col:29 */
+    /*0x52A3, GB2312 Code:*/ 0xC1D3, /*==>죡 Row:33 Col:51 */
+    /*0x52A8, GB2312 Code:*/ 0xB6AF, /*==>땡 Row:22 Col:15 */
+    /*0x52A9, GB2312 Code:*/ 0xD6FA, /*==>燎 Row:54 Col:90 */
+    /*0x52AA, GB2312 Code:*/ 0xC5AC, /*==>클 Row:37 Col:12 */
+    /*0x52AB, GB2312 Code:*/ 0xBDD9, /*==>쌕 Row:29 Col:57 */
+    /*0x52AC, GB2312 Code:*/ 0xDBBE, /*==>訪 Row:59 Col:30 */
+    /*0x52AD, GB2312 Code:*/ 0xDBBF, /*==>謗 Row:59 Col:31 */
+    /*0x52B1, GB2312 Code:*/ 0xC0F8, /*==>쟨 Row:32 Col:88 */
+    /*0x52B2, GB2312 Code:*/ 0xBEA2, /*==>쐼 Row:30 Col:02 */
+    /*0x52B3, GB2312 Code:*/ 0xC0CD, /*==>익 Row:32 Col:45 */
+    /*0x52BE, GB2312 Code:*/ 0xDBC0, /*==>邦 Row:59 Col:32 */
+    /*0x52BF, GB2312 Code:*/ 0xCAC6, /*==>覺 Row:42 Col:38 */
+    /*0x52C3, GB2312 Code:*/ 0xB2AA, /*==>꺾 Row:18 Col:10 */
+    /*0x52C7, GB2312 Code:*/ 0xD3C2, /*==>澹 Row:51 Col:34 */
+    /*0x52C9, GB2312 Code:*/ 0xC3E3, /*==>춤 Row:35 Col:67 */
+    /*0x52CB, GB2312 Code:*/ 0xD1AB, /*==>淇 Row:49 Col:11 */
+    /*0x52D0, GB2312 Code:*/ 0xDBC2, /*==>龐 Row:59 Col:34 */
+    /*0x52D2, GB2312 Code:*/ 0xC0D5, /*==>잇 Row:32 Col:53 */
+    /*0x52D6, GB2312 Code:*/ 0xDBC3, /*==>倍 Row:59 Col:35 */
+    /*0x52D8, GB2312 Code:*/ 0xBFB1, /*==>엽 Row:31 Col:17 */
+    /*0x52DF, GB2312 Code:*/ 0xC4BC, /*==>캬 Row:36 Col:28 */
+    /*0x52E4, GB2312 Code:*/ 0xC7DA, /*==>핸 Row:39 Col:58 */
+    /*0x52F0, GB2312 Code:*/ 0xDBC4, /*==>俳 Row:59 Col:36 */
+    /*0x52F9, GB2312 Code:*/ 0xD9E8, /*==>撫 Row:57 Col:72 */
+    /*0x52FA, GB2312 Code:*/ 0xC9D7, /*==>� Row:41 Col:55 */
+    /*0x52FE, GB2312 Code:*/ 0xB9B4, /*==>뭅 Row:25 Col:20 */
+    /*0x52FF, GB2312 Code:*/ 0xCEF0, /*==>蕎 Row:46 Col:80 */
+    /*0x5300, GB2312 Code:*/ 0xD4C8, /*==>焞 Row:52 Col:40 */
+    /*0x5305, GB2312 Code:*/ 0xB0FC, /*==>관 Row:16 Col:92 */
+    /*0x5306, GB2312 Code:*/ 0xB4D2, /*==>닐 Row:20 Col:50 */
+    /*0x5308, GB2312 Code:*/ 0xD0D9, /*==>芩 Row:48 Col:57 */
+    /*0x530D, GB2312 Code:*/ 0xD9E9, /*==>无 Row:57 Col:73 */
+    /*0x530F, GB2312 Code:*/ 0xDECB, /*==>嗣 Row:62 Col:43 */
+    /*0x5310, GB2312 Code:*/ 0xD9EB, /*==>武 Row:57 Col:75 */
+    /*0x5315, GB2312 Code:*/ 0xD8B0, /*==>莫 Row:56 Col:16 */
+    /*0x5316, GB2312 Code:*/ 0xBBAF, /*==>뺏 Row:27 Col:15 */
+    /*0x5317, GB2312 Code:*/ 0xB1B1, /*==>굇 Row:17 Col:17 */
+    /*0x5319, GB2312 Code:*/ 0xB3D7, /*==>네 Row:19 Col:55 */
+    /*0x531A, GB2312 Code:*/ 0xD8CE, /*==>忘 Row:56 Col:46 */
+    /*0x531D, GB2312 Code:*/ 0xD4D1, /*==>動 Row:52 Col:49 */
+    /*0x5320, GB2312 Code:*/ 0xBDB3, /*==>슁 Row:29 Col:19 */
+    /*0x5321, GB2312 Code:*/ 0xBFEF, /*==>울 Row:31 Col:79 */
+    /*0x5323, GB2312 Code:*/ 0xCFBB, /*==>矩 Row:47 Col:27 */
+    /*0x5326, GB2312 Code:*/ 0xD8D0, /*==>望 Row:56 Col:48 */
+    /*0x532A, GB2312 Code:*/ 0xB7CB, /*==>롄 Row:23 Col:43 */
+    /*0x532E, GB2312 Code:*/ 0xD8D1, /*==>網 Row:56 Col:49 */
+    /*0x5339, GB2312 Code:*/ 0xC6A5, /*==>튈 Row:38 Col:05 */
+    /*0x533A, GB2312 Code:*/ 0xC7F8, /*==>혐 Row:39 Col:88 */
+    /*0x533B, GB2312 Code:*/ 0xD2BD, /*==>努 Row:50 Col:29 */
+    /*0x533E, GB2312 Code:*/ 0xD8D2, /*==>罔 Row:56 Col:50 */
+    /*0x533F, GB2312 Code:*/ 0xC4E4, /*==>콴 Row:36 Col:68 */
+    /*0x5341, GB2312 Code:*/ 0xCAAE, /*==>枷 Row:42 Col:14 */
+    /*0x5343, GB2312 Code:*/ 0xC7A7, /*==>푤 Row:39 Col:07 */
+    /*0x5345, GB2312 Code:*/ 0xD8A6, /*==>痲 Row:56 Col:06 */
+    /*0x5347, GB2312 Code:*/ 0xC9FD, /*==>� Row:41 Col:93 */
+    /*0x5348, GB2312 Code:*/ 0xCEE7, /*==>敎 Row:46 Col:71 */
+    /*0x5349, GB2312 Code:*/ 0xBBDC, /*==>쁠 Row:27 Col:60 */
+    /*0x534A, GB2312 Code:*/ 0xB0EB, /*==>곕 Row:16 Col:75 */
+    /*0x534E, GB2312 Code:*/ 0xBBAA, /*==>빽 Row:27 Col:10 */
+    /*0x534F, GB2312 Code:*/ 0xD0AD, /*==>葵 Row:48 Col:13 */
+    /*0x5351, GB2312 Code:*/ 0xB1B0, /*==>굅 Row:17 Col:16 */
+    /*0x5352, GB2312 Code:*/ 0xD7E4, /*==>異 Row:55 Col:68 */
+    /*0x5353, GB2312 Code:*/ 0xD7BF, /*==>六 Row:55 Col:31 */
+    /*0x5355, GB2312 Code:*/ 0xB5A5, /*==>데 Row:21 Col:05 */
+    /*0x5356, GB2312 Code:*/ 0xC2F4, /*==>찡 Row:34 Col:84 */
+    /*0x5357, GB2312 Code:*/ 0xC4CF, /*==>켓 Row:36 Col:47 */
+    /*0x535A, GB2312 Code:*/ 0xB2A9, /*==>꺽 Row:18 Col:09 */
+    /*0x535C, GB2312 Code:*/ 0xB2B7, /*==>껭 Row:18 Col:23 */
+    /*0x535E, GB2312 Code:*/ 0xB1E5, /*==>긷 Row:17 Col:69 */
+    /*0x535F, GB2312 Code:*/ 0xDFB2, /*==>三 Row:63 Col:18 */
+    /*0x5360, GB2312 Code:*/ 0xD5BC, /*==>欖 Row:53 Col:28 */
+    /*0x5361, GB2312 Code:*/ 0xBFA8, /*==>엥 Row:31 Col:08 */
+    /*0x5362, GB2312 Code:*/ 0xC2AC, /*==>짭 Row:34 Col:12 */
+    /*0x5363, GB2312 Code:*/ 0xD8D5, /*==>莽 Row:56 Col:53 */
+    /*0x5364, GB2312 Code:*/ 0xC2B1, /*==>짹 Row:34 Col:17 */
+    /*0x5366, GB2312 Code:*/ 0xD8D4, /*==>茫 Row:56 Col:52 */
+    /*0x5367, GB2312 Code:*/ 0xCED4, /*==>塊 Row:46 Col:52 */
+    /*0x5369, GB2312 Code:*/ 0xDAE0, /*==>駁 Row:58 Col:64 */
+    /*0x536B, GB2312 Code:*/ 0xCEC0, /*==>括 Row:46 Col:32 */
+    /*0x536E, GB2312 Code:*/ 0xD8B4, /*==>娩 Row:56 Col:20 */
+    /*0x536F, GB2312 Code:*/ 0xC3AE, /*==>챤 Row:35 Col:14 */
+    /*0x5370, GB2312 Code:*/ 0xD3A1, /*==>丹 Row:51 Col:01 */
+    /*0x5371, GB2312 Code:*/ 0xCEA3, /*==>誇 Row:46 Col:03 */
+    /*0x5373, GB2312 Code:*/ 0xBCB4, /*==>섦 Row:28 Col:20 */
+    /*0x5374, GB2312 Code:*/ 0xC8B4, /*==>홱 Row:40 Col:20 */
+    /*0x5375, GB2312 Code:*/ 0xC2D1, /*==>쫓 Row:34 Col:49 */
+    /*0x5377, GB2312 Code:*/ 0xBEED, /*==>얩 Row:30 Col:77 */
+    /*0x5378, GB2312 Code:*/ 0xD0B6, /*==>菌 Row:48 Col:22 */
+    /*0x537A, GB2312 Code:*/ 0xDAE1, /*==>伴 Row:58 Col:65 */
+    /*0x537F, GB2312 Code:*/ 0xC7E4, /*==>헉 Row:39 Col:68 */
+    /*0x5382, GB2312 Code:*/ 0xB3A7, /*==>낍 Row:19 Col:07 */
+    /*0x5384, GB2312 Code:*/ 0xB6F2, /*==>띵 Row:22 Col:82 */
+    /*0x5385, GB2312 Code:*/ 0xCCFC, /*==>戒 Row:44 Col:92 */
+    /*0x5386, GB2312 Code:*/ 0xC0FA, /*==>저 Row:32 Col:90 */
+    /*0x5389, GB2312 Code:*/ 0xC0F7, /*==>쟤 Row:32 Col:87 */
+    /*0x538B, GB2312 Code:*/ 0xD1B9, /*==>箕 Row:49 Col:25 */
+    /*0x538C, GB2312 Code:*/ 0xD1E1, /*==>那 Row:49 Col:65 */
+    /*0x538D, GB2312 Code:*/ 0xD8C7, /*==>末 Row:56 Col:39 */
+    /*0x5395, GB2312 Code:*/ 0xB2DE, /*==>꿈 Row:18 Col:62 */
+    /*0x5398, GB2312 Code:*/ 0xC0E5, /*==>장 Row:32 Col:69 */
+    /*0x539A, GB2312 Code:*/ 0xBAF1, /*==>비 Row:26 Col:81 */
+    /*0x539D, GB2312 Code:*/ 0xD8C8, /*==>沫 Row:56 Col:40 */
+    /*0x539F, GB2312 Code:*/ 0xD4AD, /*==>覩 Row:52 Col:13 */
+    /*0x53A2, GB2312 Code:*/ 0xCFE1, /*==>弓 Row:47 Col:65 */
+    /*0x53A3, GB2312 Code:*/ 0xD8C9, /*==>茉 Row:56 Col:41 */
+    /*0x53A5, GB2312 Code:*/ 0xD8CA, /*==>襪 Row:56 Col:42 */
+    /*0x53A6, GB2312 Code:*/ 0xCFC3, /*==>衢 Row:47 Col:35 */
+    /*0x53A8, GB2312 Code:*/ 0xB3F8, /*==>놜 Row:19 Col:88 */
+    /*0x53A9, GB2312 Code:*/ 0xBEC7, /*==>악 Row:30 Col:39 */
+    /*0x53AE, GB2312 Code:*/ 0xD8CB, /*==>靺 Row:56 Col:43 */
+    /*0x53B6, GB2312 Code:*/ 0xDBCC, /*==>焙 Row:59 Col:44 */
+    /*0x53BB, GB2312 Code:*/ 0xC8A5, /*==>혼 Row:40 Col:05 */
+    /*0x53BF, GB2312 Code:*/ 0xCFD8, /*==>群 Row:47 Col:56 */
+    /*0x53C1, GB2312 Code:*/ 0xC8FE, /*==>힝 Row:40 Col:94 */
+    /*0x53C2, GB2312 Code:*/ 0xB2CE, /*==>꽝 Row:18 Col:46 */
+    /*0x53C8, GB2312 Code:*/ 0xD3D6, /*==>棠 Row:51 Col:54 */
+    /*0x53C9, GB2312 Code:*/ 0xB2E6, /*==>꿩 Row:18 Col:70 */
+    /*0x53CA, GB2312 Code:*/ 0xBCB0, /*==>섟 Row:28 Col:16 */
+    /*0x53CB, GB2312 Code:*/ 0xD3D1, /*==>堂 Row:51 Col:49 */
+    /*0x53CC, GB2312 Code:*/ 0xCBAB, /*==>崗 Row:43 Col:11 */
+    /*0x53CD, GB2312 Code:*/ 0xB7B4, /*==>럽 Row:23 Col:20 */
+    /*0x53D1, GB2312 Code:*/ 0xB7A2, /*==>랙 Row:23 Col:02 */
+    /*0x53D4, GB2312 Code:*/ 0xCAE5, /*==>碣 Row:42 Col:69 */
+    /*0x53D6, GB2312 Code:*/ 0xC8A1, /*==>혤 Row:40 Col:01 */
+    /*0x53D7, GB2312 Code:*/ 0xCADC, /*==>肝 Row:42 Col:60 */
+    /*0x53D8, GB2312 Code:*/ 0xB1E4, /*==>긴 Row:17 Col:68 */
+    /*0x53D9, GB2312 Code:*/ 0xD0F0, /*==>圻 Row:48 Col:80 */
+    /*0x53DB, GB2312 Code:*/ 0xC5D1, /*==>턺 Row:37 Col:49 */
+    /*0x53DF, GB2312 Code:*/ 0xDBC5, /*==>北 Row:59 Col:37 */
+    /*0x53E0, GB2312 Code:*/ 0xB5FE, /*==>딸 Row:21 Col:94 */
+    /*0x53E3, GB2312 Code:*/ 0xBFDA, /*==>왯 Row:31 Col:58 */
+    /*0x53E4, GB2312 Code:*/ 0xB9C5, /*==>뮴 Row:25 Col:37 */
+    /*0x53E5, GB2312 Code:*/ 0xBEE4, /*==>얌 Row:30 Col:68 */
+    /*0x53E6, GB2312 Code:*/ 0xC1ED, /*==>쥼 Row:33 Col:77 */
+    /*0x53E8, GB2312 Code:*/ 0xDFB6, /*==>渗 Row:63 Col:22 */
+    /*0x53E9, GB2312 Code:*/ 0xDFB5, /*==>森 Row:63 Col:21 */
+    /*0x53EA, GB2312 Code:*/ 0xD6BB, /*==>怜 Row:54 Col:27 */
+    /*0x53EB, GB2312 Code:*/ 0xBDD0, /*==>싻 Row:29 Col:48 */
+    /*0x53EC, GB2312 Code:*/ 0xD5D9, /*==>梁 Row:53 Col:57 */
+    /*0x53ED, GB2312 Code:*/ 0xB0C8, /*==>걷 Row:16 Col:40 */
+    /*0x53EE, GB2312 Code:*/ 0xB6A3, /*==>땃 Row:22 Col:03 */
+    /*0x53EF, GB2312 Code:*/ 0xBFC9, /*==>옵 Row:31 Col:41 */
+    /*0x53F0, GB2312 Code:*/ 0xCCA8, /*==>憩 Row:44 Col:08 */
+    /*0x53F1, GB2312 Code:*/ 0xDFB3, /*==>參 Row:63 Col:19 */
+    /*0x53F2, GB2312 Code:*/ 0xCAB7, /*==>袈 Row:42 Col:23 */
+    /*0x53F3, GB2312 Code:*/ 0xD3D2, /*==>塘 Row:51 Col:50 */
+    /*0x53F5, GB2312 Code:*/ 0xD8CF, /*==>忙 Row:56 Col:47 */
+    /*0x53F6, GB2312 Code:*/ 0xD2B6, /*==>秊 Row:50 Col:22 */
+    /*0x53F7, GB2312 Code:*/ 0xBAC5, /*==>뵀 Row:26 Col:37 */
+    /*0x53F8, GB2312 Code:*/ 0xCBBE, /*==>鱇 Row:43 Col:30 */
+    /*0x53F9, GB2312 Code:*/ 0xCCBE, /*==>潔 Row:44 Col:30 */
+    /*0x53FB, GB2312 Code:*/ 0xDFB7, /*==>芟 Row:63 Col:23 */
+    /*0x53FC, GB2312 Code:*/ 0xB5F0, /*==>디 Row:21 Col:80 */
+    /*0x53FD, GB2312 Code:*/ 0xDFB4, /*==>杉 Row:63 Col:20 */
+    /*0x5401, GB2312 Code:*/ 0xD3F5, /*==>屠 Row:51 Col:85 */
+    /*0x5403, GB2312 Code:*/ 0xB3D4, /*==>넜 Row:19 Col:52 */
+    /*0x5404, GB2312 Code:*/ 0xB8F7, /*==>몹 Row:24 Col:87 */
+    /*0x5406, GB2312 Code:*/ 0xDFBA, /*==>揷 Row:63 Col:26 */
+    /*0x5408, GB2312 Code:*/ 0xBACF, /*==>북 Row:26 Col:47 */
+    /*0x5409, GB2312 Code:*/ 0xBCAA, /*==>섈 Row:28 Col:10 */
+    /*0x540A, GB2312 Code:*/ 0xB5F5, /*==>딤 Row:21 Col:85 */
+    /*0x540C, GB2312 Code:*/ 0xCDAC, /*==>谿 Row:45 Col:12 */
+    /*0x540D, GB2312 Code:*/ 0xC3FB, /*==>츰 Row:35 Col:91 */
+    /*0x540E, GB2312 Code:*/ 0xBAF3, /*==>빈 Row:26 Col:83 */
+    /*0x540F, GB2312 Code:*/ 0xC0F4, /*==>쟐 Row:32 Col:84 */
+    /*0x5410, GB2312 Code:*/ 0xCDC2, /*==>睾 Row:45 Col:34 */
+    /*0x5411, GB2312 Code:*/ 0xCFF2, /*==>蕨 Row:47 Col:82 */
+    /*0x5412, GB2312 Code:*/ 0xDFB8, /*==>蔘 Row:63 Col:24 */
+    /*0x5413, GB2312 Code:*/ 0xCFC5, /*==>購 Row:47 Col:37 */
+    /*0x5415, GB2312 Code:*/ 0xC2C0, /*==>쩜 Row:34 Col:32 */
+    /*0x5416, GB2312 Code:*/ 0xDFB9, /*==>衫 Row:63 Col:25 */
+    /*0x5417, GB2312 Code:*/ 0xC2F0, /*==>찐 Row:34 Col:80 */
+    /*0x541B, GB2312 Code:*/ 0xBEFD, /*==>엌 Row:30 Col:93 */
+    /*0x541D, GB2312 Code:*/ 0xC1DF, /*==>중 Row:33 Col:63 */
+    /*0x541E, GB2312 Code:*/ 0xCDCC, /*==>蠱 Row:45 Col:44 */
+    /*0x541F, GB2312 Code:*/ 0xD2F7, /*==>菱 Row:50 Col:87 */
+    /*0x5420, GB2312 Code:*/ 0xB7CD, /*==>롓 Row:23 Col:45 */
+    /*0x5421, GB2312 Code:*/ 0xDFC1, /*==>償 Row:63 Col:33 */
+    /*0x5423, GB2312 Code:*/ 0xDFC4, /*==>嘗 Row:63 Col:36 */
+    /*0x5426, GB2312 Code:*/ 0xB7F1, /*==>뤠 Row:23 Col:81 */
+    /*0x5427, GB2312 Code:*/ 0xB0C9, /*==>걸 Row:16 Col:41 */
+    /*0x5428, GB2312 Code:*/ 0xB6D6, /*==>뚬 Row:22 Col:54 */
+    /*0x5429, GB2312 Code:*/ 0xB7D4, /*==>롯 Row:23 Col:52 */
+    /*0x542B, GB2312 Code:*/ 0xBAAC, /*==>벵 Row:26 Col:12 */
+    /*0x542C, GB2312 Code:*/ 0xCCFD, /*==>桂 Row:44 Col:93 */
+    /*0x542D, GB2312 Code:*/ 0xBFD4, /*==>왔 Row:31 Col:52 */
+    /*0x542E, GB2312 Code:*/ 0xCBB1, /*==>畺 Row:43 Col:17 */
+    /*0x542F, GB2312 Code:*/ 0xC6F4, /*==>폘 Row:38 Col:84 */
+    /*0x5431, GB2312 Code:*/ 0xD6A8, /*==>鍊 Row:54 Col:08 */
+    /*0x5432, GB2312 Code:*/ 0xDFC5, /*==>孀 Row:63 Col:37 */
+    /*0x5434, GB2312 Code:*/ 0xCEE2, /*==>喬 Row:46 Col:66 */
+    /*0x5435, GB2312 Code:*/ 0xB3B3, /*==>납 Row:19 Col:19 */
+    /*0x5438, GB2312 Code:*/ 0xCEFC, /*==>俱 Row:46 Col:92 */
+    /*0x5439, GB2312 Code:*/ 0xB4B5, /*==>뉘 Row:20 Col:21 */
+    /*0x543B, GB2312 Code:*/ 0xCEC7, /*==>曠 Row:46 Col:39 */
+    /*0x543C, GB2312 Code:*/ 0xBAF0, /*==>븟 Row:26 Col:80 */
+    /*0x543E, GB2312 Code:*/ 0xCEE1, /*==>咬 Row:46 Col:65 */
+    /*0x5440, GB2312 Code:*/ 0xD1BD, /*==>耆 Row:49 Col:29 */
+    /*0x5443, GB2312 Code:*/ 0xDFC0, /*==>像 Row:63 Col:32 */
+    /*0x5446, GB2312 Code:*/ 0xB4F4, /*==>댜 Row:20 Col:84 */
+    /*0x5448, GB2312 Code:*/ 0xB3CA, /*==>너 Row:19 Col:42 */
+    /*0x544A, GB2312 Code:*/ 0xB8E6, /*==>멩 Row:24 Col:70 */
+    /*0x544B, GB2312 Code:*/ 0xDFBB, /*==>澁 Row:63 Col:27 */
+    /*0x5450, GB2312 Code:*/ 0xC4C5, /*==>컵 Row:36 Col:37 */
+    /*0x5452, GB2312 Code:*/ 0xDFBC, /*==>鈒 Row:63 Col:28 */
+    /*0x5453, GB2312 Code:*/ 0xDFBD, /*==>颯 Row:63 Col:29 */
+    /*0x5454, GB2312 Code:*/ 0xDFBE, /*==>上 Row:63 Col:30 */
+    /*0x5455, GB2312 Code:*/ 0xC5BB, /*==>탈 Row:37 Col:27 */
+    /*0x5456, GB2312 Code:*/ 0xDFBF, /*==>傷 Row:63 Col:31 */
+    /*0x5457, GB2312 Code:*/ 0xDFC2, /*==>商 Row:63 Col:34 */
+    /*0x5458, GB2312 Code:*/ 0xD4B1, /*==>逃 Row:52 Col:17 */
+    /*0x5459, GB2312 Code:*/ 0xDFC3, /*==>喪 Row:63 Col:35 */
+    /*0x545B, GB2312 Code:*/ 0xC7BA, /*==>퓟 Row:39 Col:26 */
+    /*0x545C, GB2312 Code:*/ 0xCED8, /*==>拐 Row:46 Col:56 */
+    /*0x5462, GB2312 Code:*/ 0xC4D8, /*==>켱 Row:36 Col:56 */
+    /*0x5464, GB2312 Code:*/ 0xDFCA, /*==>庠 Row:63 Col:42 */
+    /*0x5466, GB2312 Code:*/ 0xDFCF, /*==>湘 Row:63 Col:47 */
+    /*0x5468, GB2312 Code:*/ 0xD6DC, /*==>鷺 Row:54 Col:60 */
+    /*0x5471, GB2312 Code:*/ 0xDFC9, /*==>床 Row:63 Col:41 */
+    /*0x5472, GB2312 Code:*/ 0xDFDA, /*==>象 Row:63 Col:58 */
+    /*0x5473, GB2312 Code:*/ 0xCEB6, /*==>瓘 Row:46 Col:22 */
+    /*0x5475, GB2312 Code:*/ 0xBAC7, /*==>뵉 Row:26 Col:39 */
+    /*0x5476, GB2312 Code:*/ 0xDFCE, /*==>橡 Row:63 Col:46 */
+    /*0x5477, GB2312 Code:*/ 0xDFC8, /*==>常 Row:63 Col:40 */
+    /*0x5478, GB2312 Code:*/ 0xC5DE, /*==>텡 Row:37 Col:62 */
+    /*0x547B, GB2312 Code:*/ 0xC9EB, /*==>� Row:41 Col:75 */
+    /*0x547C, GB2312 Code:*/ 0xBAF4, /*==>빌 Row:26 Col:84 */
+    /*0x547D, GB2312 Code:*/ 0xC3FC, /*==>츱 Row:35 Col:92 */
+    /*0x5480, GB2312 Code:*/ 0xBED7, /*==>액 Row:30 Col:55 */
+    /*0x5482, GB2312 Code:*/ 0xDFC6, /*==>尙 Row:63 Col:38 */
+    /*0x5484, GB2312 Code:*/ 0xDFCD, /*==>桑 Row:63 Col:45 */
+    /*0x5486, GB2312 Code:*/ 0xC5D8, /*==>텍 Row:37 Col:56 */
+    /*0x548B, GB2312 Code:*/ 0xD5A6, /*==>洛 Row:53 Col:06 */
+    /*0x548C, GB2312 Code:*/ 0xBACD, /*==>뵨 Row:26 Col:45 */
+    /*0x548E, GB2312 Code:*/ 0xBECC, /*==>앍 Row:30 Col:44 */
+    /*0x548F, GB2312 Code:*/ 0xD3BD, /*==>擔 Row:51 Col:29 */
+    /*0x5490, GB2312 Code:*/ 0xB8C0, /*==>맛 Row:24 Col:32 */
+    /*0x5492, GB2312 Code:*/ 0xD6E4, /*==>麓 Row:54 Col:68 */
+    /*0x5494, GB2312 Code:*/ 0xDFC7, /*==>峠 Row:63 Col:39 */
+    /*0x5495, GB2312 Code:*/ 0xB9BE, /*==>뭬 Row:25 Col:30 */
+    /*0x5496, GB2312 Code:*/ 0xBFA7, /*==>엣 Row:31 Col:07 */
+    /*0x5499, GB2312 Code:*/ 0xC1FC, /*==>짐 Row:33 Col:92 */
+    /*0x549A, GB2312 Code:*/ 0xDFCB, /*==>廂 Row:63 Col:43 */
+    /*0x549B, GB2312 Code:*/ 0xDFCC, /*==>想 Row:63 Col:44 */
+    /*0x549D, GB2312 Code:*/ 0xDFD0, /*==>爽 Row:63 Col:48 */
+    /*0x54A3, GB2312 Code:*/ 0xDFDB, /*==>賞 Row:63 Col:59 */
+    /*0x54A4, GB2312 Code:*/ 0xDFE5, /*==>牲 Row:63 Col:69 */
+    /*0x54A6, GB2312 Code:*/ 0xDFD7, /*==>裳 Row:63 Col:55 */
+    /*0x54A7, GB2312 Code:*/ 0xDFD6, /*==>翔 Row:63 Col:54 */
+    /*0x54A8, GB2312 Code:*/ 0xD7C9, /*==>慄 Row:55 Col:41 */
+    /*0x54A9, GB2312 Code:*/ 0xDFE3, /*==>索 Row:63 Col:67 */
+    /*0x54AA, GB2312 Code:*/ 0xDFE4, /*==>色 Row:63 Col:68 */
+    /*0x54AB, GB2312 Code:*/ 0xE5EB, /*==>言 Row:69 Col:75 */
+    /*0x54AC, GB2312 Code:*/ 0xD2A7, /*==>廊 Row:50 Col:07 */
+    /*0x54AD, GB2312 Code:*/ 0xDFD2, /*==>狀 Row:63 Col:50 */
+    /*0x54AF, GB2312 Code:*/ 0xBFA9, /*==>여 Row:31 Col:09 */
+    /*0x54B1, GB2312 Code:*/ 0xD4DB, /*==>童 Row:52 Col:59 */
+    /*0x54B3, GB2312 Code:*/ 0xBFC8, /*==>옴 Row:31 Col:40 */
+    /*0x54B4, GB2312 Code:*/ 0xDFD4, /*==>祥 Row:63 Col:52 */
+    /*0x54B8, GB2312 Code:*/ 0xCFCC, /*==>驅 Row:47 Col:44 */
+    /*0x54BB, GB2312 Code:*/ 0xDFDD, /*==>塞 Row:63 Col:61 */
+    /*0x54BD, GB2312 Code:*/ 0xD1CA, /*==>驥 Row:49 Col:42 */
+    /*0x54BF, GB2312 Code:*/ 0xDFDE, /*==>璽 Row:63 Col:62 */
+    /*0x54C0, GB2312 Code:*/ 0xB0A7, /*==>갊 Row:16 Col:07 */
+    /*0x54C1, GB2312 Code:*/ 0xC6B7, /*==>틔 Row:38 Col:23 */
+    /*0x54C2, GB2312 Code:*/ 0xDFD3, /*==>相 Row:63 Col:51 */
+    /*0x54C4, GB2312 Code:*/ 0xBAE5, /*==>뷴 Row:26 Col:69 */
+    /*0x54C6, GB2312 Code:*/ 0xB6DF, /*==>뜨 Row:22 Col:63 */
+    /*0x54C7, GB2312 Code:*/ 0xCDDB, /*==>谷 Row:45 Col:59 */
+    /*0x54C8, GB2312 Code:*/ 0xB9FE, /*==>벗 Row:25 Col:94 */
+    /*0x54C9, GB2312 Code:*/ 0xD4D5, /*==>桐 Row:52 Col:53 */
+    /*0x54CC, GB2312 Code:*/ 0xDFDF, /*==>賽 Row:63 Col:63 */
+    /*0x54CD, GB2312 Code:*/ 0xCFEC, /*==>捲 Row:47 Col:76 */
+    /*0x54CE, GB2312 Code:*/ 0xB0A5, /*==>갈 Row:16 Col:05 */
+    /*0x54CF, GB2312 Code:*/ 0xDFE7, /*==>甥 Row:63 Col:71 */
+    /*0x54D0, GB2312 Code:*/ 0xDFD1, /*==>牀 Row:63 Col:49 */
+    /*0x54D1, GB2312 Code:*/ 0xD1C6, /*==>飢 Row:49 Col:38 */
+    /*0x54D2, GB2312 Code:*/ 0xDFD5, /*==>箱 Row:63 Col:53 */
+    /*0x54D3, GB2312 Code:*/ 0xDFD8, /*==>觴 Row:63 Col:56 */
+    /*0x54D4, GB2312 Code:*/ 0xDFD9, /*==>詳 Row:63 Col:57 */
+    /*0x54D5, GB2312 Code:*/ 0xDFDC, /*==>霜 Row:63 Col:60 */
+    /*0x54D7, GB2312 Code:*/ 0xBBA9, /*==>빼 Row:27 Col:09 */
+    /*0x54D9, GB2312 Code:*/ 0xDFE0, /*==>嗇 Row:63 Col:64 */
+    /*0x54DA, GB2312 Code:*/ 0xDFE1, /*==>塞 Row:63 Col:65 */
+    /*0x54DC, GB2312 Code:*/ 0xDFE2, /*==>穡 Row:63 Col:66 */
+    /*0x54DD, GB2312 Code:*/ 0xDFE6, /*==>生 Row:63 Col:70 */
+    /*0x54DE, GB2312 Code:*/ 0xDFE8, /*==>省 Row:63 Col:72 */
+    /*0x54DF, GB2312 Code:*/ 0xD3B4, /*==>鍛 Row:51 Col:20 */
+    /*0x54E5, GB2312 Code:*/ 0xB8E7, /*==>며 Row:24 Col:71 */
+    /*0x54E6, GB2312 Code:*/ 0xC5B6, /*==>킷 Row:37 Col:22 */
+    /*0x54E7, GB2312 Code:*/ 0xDFEA, /*==>墅 Row:63 Col:74 */
+    /*0x54E8, GB2312 Code:*/ 0xC9DA, /*==>� Row:41 Col:58 */
+    /*0x54E9, GB2312 Code:*/ 0xC1A8, /*==>젠 Row:33 Col:08 */
+    /*0x54EA, GB2312 Code:*/ 0xC4C4, /*==>컴 Row:36 Col:36 */
+    /*0x54ED, GB2312 Code:*/ 0xBFDE, /*==>왼 Row:31 Col:62 */
+    /*0x54EE, GB2312 Code:*/ 0xCFF8, /*==>詭 Row:47 Col:88 */
+    /*0x54F2, GB2312 Code:*/ 0xD5DC, /*==>粱 Row:53 Col:60 */
+    /*0x54F3, GB2312 Code:*/ 0xDFEE, /*==>庶 Row:63 Col:78 */
+    /*0x54FA, GB2312 Code:*/ 0xB2B8, /*==>껴 Row:18 Col:24 */
+    /*0x54FC, GB2312 Code:*/ 0xBADF, /*==>뷔 Row:26 Col:63 */
+    /*0x54FD, GB2312 Code:*/ 0xDFEC, /*==>嶼 Row:63 Col:76 */
+    /*0x54FF, GB2312 Code:*/ 0xDBC1, /*==>防 Row:59 Col:33 */
+    /*0x5501, GB2312 Code:*/ 0xD1E4, /*==>烙 Row:49 Col:68 */
+    /*0x5506, GB2312 Code:*/ 0xCBF4, /*==>蹇 Row:43 Col:84 */
+    /*0x5507, GB2312 Code:*/ 0xB4BD, /*==>늄 Row:20 Col:29 */
+    /*0x5509, GB2312 Code:*/ 0xB0A6, /*==>갉 Row:16 Col:06 */
+    /*0x550F, GB2312 Code:*/ 0xDFF1, /*==>抒 Row:63 Col:81 */
+    /*0x5510, GB2312 Code:*/ 0xCCC6, /*==>鉗 Row:44 Col:38 */
+    /*0x5511, GB2312 Code:*/ 0xDFF2, /*==>捿 Row:63 Col:82 */
+    /*0x5514, GB2312 Code:*/ 0xDFED, /*==>序 Row:63 Col:77 */
+    /*0x551B, GB2312 Code:*/ 0xDFE9, /*==>笙 Row:63 Col:73 */
+    /*0x5520, GB2312 Code:*/ 0xDFEB, /*==>壻 Row:63 Col:75 */
+    /*0x5522, GB2312 Code:*/ 0xDFEF, /*==>徐 Row:63 Col:79 */
+    /*0x5523, GB2312 Code:*/ 0xDFF0, /*==>恕 Row:63 Col:80 */
+    /*0x5524, GB2312 Code:*/ 0xBBBD, /*==>뻥 Row:27 Col:29 */
+    /*0x5527, GB2312 Code:*/ 0xDFF3, /*==>敍 Row:63 Col:83 */
+    /*0x552A, GB2312 Code:*/ 0xDFF4, /*==>暑 Row:63 Col:84 */
+    /*0x552C, GB2312 Code:*/ 0xBBA3, /*==>빰 Row:27 Col:03 */
+    /*0x552E, GB2312 Code:*/ 0xCADB, /*==>簡 Row:42 Col:59 */
+    /*0x552F, GB2312 Code:*/ 0xCEA8, /*==>顆 Row:46 Col:08 */
+    /*0x5530, GB2312 Code:*/ 0xE0A7, /*==>鋤 Row:64 Col:07 */
+    /*0x5531, GB2312 Code:*/ 0xB3AA, /*==>나 Row:19 Col:10 */
+    /*0x5533, GB2312 Code:*/ 0xE0A6, /*==>逝 Row:64 Col:06 */
+    /*0x5537, GB2312 Code:*/ 0xE0A1, /*==>胥 Row:64 Col:01 */
+    /*0x553C, GB2312 Code:*/ 0xDFFE, /*==>署 Row:63 Col:94 */
+    /*0x553E, GB2312 Code:*/ 0xCDD9, /*==>梏 Row:45 Col:57 */
+    /*0x553F, GB2312 Code:*/ 0xDFFC, /*==>絮 Row:63 Col:92 */
+    /*0x5541, GB2312 Code:*/ 0xDFFA, /*==>瑞 Row:63 Col:90 */
+    /*0x5543, GB2312 Code:*/ 0xBFD0, /*==>왈 Row:31 Col:48 */
+    /*0x5544, GB2312 Code:*/ 0xD7C4, /*==>崙 Row:55 Col:36 */
+    /*0x5546, GB2312 Code:*/ 0xC9CC, /*==>� Row:41 Col:44 */
+    /*0x5549, GB2312 Code:*/ 0xDFF8, /*==>棲 Row:63 Col:88 */
+    /*0x554A, GB2312 Code:*/ 0xB0A1, /*==>가 Row:16 Col:01 */
+    /*0x5550, GB2312 Code:*/ 0xDFFD, /*==>緖 Row:63 Col:93 */
+    /*0x5555, GB2312 Code:*/ 0xDFFB, /*==>筮 Row:63 Col:91 */
+    /*0x5556, GB2312 Code:*/ 0xE0A2, /*==>舒 Row:64 Col:02 */
+    /*0x555C, GB2312 Code:*/ 0xE0A8, /*==>黍 Row:64 Col:08 */
+    /*0x5561, GB2312 Code:*/ 0xB7C8, /*==>렸 Row:23 Col:40 */
+    /*0x5564, GB2312 Code:*/ 0xC6A1, /*==>퉤 Row:38 Col:01 */
+    /*0x5565, GB2312 Code:*/ 0xC9B6, /*==>� Row:41 Col:22 */
+    /*0x5566, GB2312 Code:*/ 0xC0B2, /*==>율 Row:32 Col:18 */
+    /*0x5567, GB2312 Code:*/ 0xDFF5, /*==>曙 Row:63 Col:85 */
+    /*0x556A, GB2312 Code:*/ 0xC5BE, /*==>탑 Row:37 Col:30 */
+    /*0x556C, GB2312 Code:*/ 0xD8C4, /*==>鰻 Row:56 Col:36 */
+    /*0x556D, GB2312 Code:*/ 0xDFF9, /*==>犀 Row:63 Col:89 */
+    /*0x556E, GB2312 Code:*/ 0xC4F6, /*==>퀀 Row:36 Col:86 */
+    /*0x5575, GB2312 Code:*/ 0xE0A3, /*==>薯 Row:64 Col:03 */
+    /*0x5576, GB2312 Code:*/ 0xE0A4, /*==>西 Row:64 Col:04 */
+    /*0x5577, GB2312 Code:*/ 0xE0A5, /*==>誓 Row:64 Col:05 */
+    /*0x5578, GB2312 Code:*/ 0xD0A5, /*==>奎 Row:48 Col:05 */
+    /*0x557B, GB2312 Code:*/ 0xE0B4, /*==>石 Row:64 Col:20 */
+    /*0x557C, GB2312 Code:*/ 0xCCE4, /*==>磬 Row:44 Col:68 */
+    /*0x557E, GB2312 Code:*/ 0xE0B1, /*==>汐 Row:64 Col:17 */
+    /*0x5580, GB2312 Code:*/ 0xBFA6, /*==>엡 Row:31 Col:06 */
+    /*0x5581, GB2312 Code:*/ 0xE0AF, /*==>晳 Row:64 Col:15 */
+    /*0x5582, GB2312 Code:*/ 0xCEB9, /*==>菅 Row:46 Col:25 */
+    /*0x5583, GB2312 Code:*/ 0xE0AB, /*==>奭 Row:64 Col:11 */
+    /*0x5584, GB2312 Code:*/ 0xC9C6, /*==>� Row:41 Col:38 */
+    /*0x5587, GB2312 Code:*/ 0xC0AE, /*==>윙 Row:32 Col:14 */
+    /*0x5588, GB2312 Code:*/ 0xE0AE, /*==>昔 Row:64 Col:14 */
+    /*0x5589, GB2312 Code:*/ 0xBAED, /*==>블 Row:26 Col:77 */
+    /*0x558A, GB2312 Code:*/ 0xBAB0, /*==>별 Row:26 Col:16 */
+    /*0x558B, GB2312 Code:*/ 0xE0A9, /*==>鼠 Row:64 Col:09 */
+    /*0x558F, GB2312 Code:*/ 0xDFF6, /*==>書 Row:63 Col:86 */
+    /*0x5591, GB2312 Code:*/ 0xE0B3, /*==>潟 Row:64 Col:19 */
+    /*0x5594, GB2312 Code:*/ 0xE0B8, /*==>錫 Row:64 Col:24 */
+    /*0x5598, GB2312 Code:*/ 0xB4AD, /*==>눌 Row:20 Col:13 */
+    /*0x5599, GB2312 Code:*/ 0xE0B9, /*==>仙 Row:64 Col:25 */
+    /*0x559C, GB2312 Code:*/ 0xCFB2, /*==>毆 Row:47 Col:18 */
+    /*0x559D, GB2312 Code:*/ 0xBAC8, /*==>뵌 Row:26 Col:40 */
+    /*0x559F, GB2312 Code:*/ 0xE0B0, /*==>析 Row:64 Col:16 */
+    /*0x55A7, GB2312 Code:*/ 0xD0FA, /*==>幾 Row:48 Col:90 */
+    /*0x55B1, GB2312 Code:*/ 0xE0AC, /*==>席 Row:64 Col:12 */
+    /*0x55B3, GB2312 Code:*/ 0xD4FB, /*==>懶 Row:52 Col:91 */
+    /*0x55B5, GB2312 Code:*/ 0xDFF7, /*==>栖 Row:63 Col:87 */
+    /*0x55B7, GB2312 Code:*/ 0xC5E7, /*==>톨 Row:37 Col:71 */
+    /*0x55B9, GB2312 Code:*/ 0xE0AD, /*==>惜 Row:64 Col:13 */
+    /*0x55BB, GB2312 Code:*/ 0xD3F7, /*==>嶋 Row:51 Col:87 */
+    /*0x55BD, GB2312 Code:*/ 0xE0B6, /*==>蓆 Row:64 Col:22 */
+    /*0x55BE, GB2312 Code:*/ 0xE0B7, /*==>釋 Row:64 Col:23 */
+    /*0x55C4, GB2312 Code:*/ 0xE0C4, /*==>琁 Row:64 Col:36 */
+    /*0x55C5, GB2312 Code:*/ 0xD0E1, /*==>急 Row:48 Col:65 */
+    /*0x55C9, GB2312 Code:*/ 0xE0BC, /*==>善 Row:64 Col:28 */
+    /*0x55CC, GB2312 Code:*/ 0xE0C9, /*==>禪 Row:64 Col:41 */
+    /*0x55CD, GB2312 Code:*/ 0xE0CA, /*==>線 Row:64 Col:42 */
+    /*0x55D1, GB2312 Code:*/ 0xE0BE, /*==>宣 Row:64 Col:30 */
+    /*0x55D2, GB2312 Code:*/ 0xE0AA, /*==>夕 Row:64 Col:10 */
+    /*0x55D3, GB2312 Code:*/ 0xC9A4, /*==>� Row:41 Col:04 */
+    /*0x55D4, GB2312 Code:*/ 0xE0C1, /*==>旋 Row:64 Col:33 */
+    /*0x55D6, GB2312 Code:*/ 0xE0B2, /*==>淅 Row:64 Col:18 */
+    /*0x55DC, GB2312 Code:*/ 0xCAC8, /*==>閣 Row:42 Col:40 */
+    /*0x55DD, GB2312 Code:*/ 0xE0C3, /*==>煽 Row:64 Col:35 */
+    /*0x55DF, GB2312 Code:*/ 0xE0B5, /*==>碩 Row:64 Col:21 */
+    /*0x55E1, GB2312 Code:*/ 0xCECB, /*==>珖 Row:46 Col:43 */
+    /*0x55E3, GB2312 Code:*/ 0xCBC3, /*==>塏 Row:43 Col:35 */
+    /*0x55E4, GB2312 Code:*/ 0xE0CD, /*==>腺 Row:64 Col:45 */
+    /*0x55E5, GB2312 Code:*/ 0xE0C6, /*==>璇 Row:64 Col:38 */
+    /*0x55E6, GB2312 Code:*/ 0xE0C2, /*==>渲 Row:64 Col:34 */
+    /*0x55E8, GB2312 Code:*/ 0xE0CB, /*==>繕 Row:64 Col:43 */
+    /*0x55EA, GB2312 Code:*/ 0xE0BA, /*==>僊 Row:64 Col:26 */
+    /*0x55EB, GB2312 Code:*/ 0xE0BF, /*==>扇 Row:64 Col:31 */
+    /*0x55EC, GB2312 Code:*/ 0xE0C0, /*==>敾 Row:64 Col:32 */
+    /*0x55EF, GB2312 Code:*/ 0xE0C5, /*==>瑄 Row:64 Col:37 */
+    /*0x55F2, GB2312 Code:*/ 0xE0C7, /*==>璿 Row:64 Col:39 */
+    /*0x55F3, GB2312 Code:*/ 0xE0C8, /*==>癬 Row:64 Col:40 */
+    /*0x55F5, GB2312 Code:*/ 0xE0CC, /*==>羨 Row:64 Col:44 */
+    /*0x55F7, GB2312 Code:*/ 0xE0BB, /*==>先 Row:64 Col:27 */
+    /*0x55FD, GB2312 Code:*/ 0xCBD4, /*==>客 Row:43 Col:52 */
+    /*0x55FE, GB2312 Code:*/ 0xE0D5, /*==>銑 Row:64 Col:53 */
+    /*0x5600, GB2312 Code:*/ 0xE0D6, /*==>鐥 Row:64 Col:54 */
+    /*0x5601, GB2312 Code:*/ 0xE0D2, /*==>詵 Row:64 Col:50 */
+    /*0x5608, GB2312 Code:*/ 0xE0D0, /*==>蘚 Row:64 Col:48 */
+    /*0x5609, GB2312 Code:*/ 0xBCCE, /*==>셰 Row:28 Col:46 */
+    /*0x560C, GB2312 Code:*/ 0xE0D1, /*==>蟬 Row:64 Col:49 */
+    /*0x560E, GB2312 Code:*/ 0xB8C2, /*==>맞 Row:24 Col:34 */
+    /*0x560F, GB2312 Code:*/ 0xD8C5, /*==>唜 Row:56 Col:37 */
+    /*0x5618, GB2312 Code:*/ 0xD0EA, /*==>企 Row:48 Col:74 */
+    /*0x561B, GB2312 Code:*/ 0xC2EF, /*==>찍 Row:34 Col:79 */
+    /*0x561E, GB2312 Code:*/ 0xE0CF, /*==>船 Row:64 Col:47 */
+    /*0x561F, GB2312 Code:*/ 0xE0BD, /*==>嬋 Row:64 Col:29 */
+    /*0x5623, GB2312 Code:*/ 0xE0D4, /*==>選 Row:64 Col:52 */
+    /*0x5624, GB2312 Code:*/ 0xE0D3, /*==>跣 Row:64 Col:51 */
+    /*0x5627, GB2312 Code:*/ 0xE0D7, /*==>饍 Row:64 Col:55 */
+    /*0x562C, GB2312 Code:*/ 0xE0DC, /*==>泄 Row:64 Col:60 */
+    /*0x562D, GB2312 Code:*/ 0xE0D8, /*==>鮮 Row:64 Col:56 */
+    /*0x5631, GB2312 Code:*/ 0xD6F6, /*==>僚 Row:54 Col:86 */
+    /*0x5632, GB2312 Code:*/ 0xB3B0, /*==>낡 Row:19 Col:16 */
+    /*0x5634, GB2312 Code:*/ 0xD7EC, /*==>里 Row:55 Col:76 */
+    /*0x5636, GB2312 Code:*/ 0xCBBB, /*==>講 Row:43 Col:27 */
+    /*0x5639, GB2312 Code:*/ 0xE0DA, /*==>屑 Row:64 Col:58 */
+    /*0x563B, GB2312 Code:*/ 0xCEFB, /*==>仇 Row:46 Col:91 */
+    /*0x563F, GB2312 Code:*/ 0xBAD9, /*==>붙 Row:26 Col:57 */
+    /*0x564C, GB2312 Code:*/ 0xE0E1, /*==>褻 Row:64 Col:65 */
+    /*0x564D, GB2312 Code:*/ 0xE0DD, /*==>洩 Row:64 Col:61 */
+    /*0x564E, GB2312 Code:*/ 0xD2AD, /*==>來 Row:50 Col:13 */
+    /*0x5654, GB2312 Code:*/ 0xE0E2, /*==>設 Row:64 Col:66 */
+    /*0x5657, GB2312 Code:*/ 0xE0DB, /*==>楔 Row:64 Col:59 */
+    /*0x5658, GB2312 Code:*/ 0xE0D9, /*==>卨 Row:64 Col:57 */
+    /*0x5659, GB2312 Code:*/ 0xE0DF, /*==>舌 Row:64 Col:63 */
+    /*0x565C, GB2312 Code:*/ 0xE0E0, /*==>薛 Row:64 Col:64 */
+    /*0x5662, GB2312 Code:*/ 0xE0DE, /*==>渫 Row:64 Col:62 */
+    /*0x5664, GB2312 Code:*/ 0xE0E4, /*==>雪 Row:64 Col:68 */
+    /*0x5668, GB2312 Code:*/ 0xC6F7, /*==>포 Row:38 Col:87 */
+    /*0x5669, GB2312 Code:*/ 0xD8AC, /*==>寞 Row:56 Col:12 */
+    /*0x566A, GB2312 Code:*/ 0xD4EB, /*==>臀 Row:52 Col:75 */
+    /*0x566B, GB2312 Code:*/ 0xE0E6, /*==>剡 Row:64 Col:70 */
+    /*0x566C, GB2312 Code:*/ 0xCAC9, /*==>侃 Row:42 Col:41 */
+    /*0x5671, GB2312 Code:*/ 0xE0E5, /*==>齧 Row:64 Col:69 */
+    /*0x5676, GB2312 Code:*/ 0xB8C1, /*==>망 Row:24 Col:33 */
+    /*0x567B, GB2312 Code:*/ 0xE0E7, /*==>暹 Row:64 Col:71 */
+    /*0x567C, GB2312 Code:*/ 0xE0E8, /*==>殲 Row:64 Col:72 */
+    /*0x5685, GB2312 Code:*/ 0xE0E9, /*==>纖 Row:64 Col:73 */
+    /*0x5686, GB2312 Code:*/ 0xE0E3, /*==>說 Row:64 Col:67 */
+    /*0x568E, GB2312 Code:*/ 0xBABF, /*==>봇 Row:26 Col:31 */
+    /*0x568F, GB2312 Code:*/ 0xCCE7, /*==>絅 Row:44 Col:71 */
+    /*0x5693, GB2312 Code:*/ 0xE0EA, /*==>蟾 Row:64 Col:74 */
+    /*0x56A3, GB2312 Code:*/ 0xCFF9, /*==>軌 Row:47 Col:89 */
+    /*0x56AF, GB2312 Code:*/ 0xE0EB, /*==>贍 Row:64 Col:75 */
+    /*0x56B7, GB2312 Code:*/ 0xC8C2, /*==>횹 Row:40 Col:34 */
+    /*0x56BC, GB2312 Code:*/ 0xBDC0, /*==>습 Row:29 Col:32 */
+    /*0x56CA, GB2312 Code:*/ 0xC4D2, /*==>켠 Row:36 Col:50 */
+    /*0x56D4, GB2312 Code:*/ 0xE0EC, /*==>閃 Row:64 Col:76 */
+    /*0x56D7, GB2312 Code:*/ 0xE0ED, /*==>陝 Row:64 Col:77 */
+    /*0x56DA, GB2312 Code:*/ 0xC7F4, /*==>혀 Row:39 Col:84 */
+    /*0x56DB, GB2312 Code:*/ 0xCBC4, /*==>愷 Row:43 Col:36 */
+    /*0x56DD, GB2312 Code:*/ 0xE0EE, /*==>攝 Row:64 Col:78 */
+    /*0x56DE, GB2312 Code:*/ 0xBBD8, /*==>쀼 Row:27 Col:56 */
+    /*0x56DF, GB2312 Code:*/ 0xD8B6, /*==>彎 Row:56 Col:22 */
+    /*0x56E0, GB2312 Code:*/ 0xD2F2, /*==>凜 Row:50 Col:82 */
+    /*0x56E1, GB2312 Code:*/ 0xE0EF, /*==>涉 Row:64 Col:79 */
+    /*0x56E2, GB2312 Code:*/ 0xCDC5, /*==>考 Row:45 Col:37 */
+    /*0x56E4, GB2312 Code:*/ 0xB6DA, /*==>뛴 Row:22 Col:58 */
+    /*0x56EB, GB2312 Code:*/ 0xE0F1, /*==>葉 Row:64 Col:81 */
+    /*0x56ED, GB2312 Code:*/ 0xD4B0, /*==>蹈 Row:52 Col:16 */
+    /*0x56F0, GB2312 Code:*/ 0xC0A7, /*==>위 Row:32 Col:07 */
+    /*0x56F1, GB2312 Code:*/ 0xB4D1, /*==>닌 Row:20 Col:49 */
+    /*0x56F4, GB2312 Code:*/ 0xCEA7, /*==>鍋 Row:46 Col:07 */
+    /*0x56F5, GB2312 Code:*/ 0xE0F0, /*==>燮 Row:64 Col:80 */
+    /*0x56F9, GB2312 Code:*/ 0xE0F2, /*==>城 Row:64 Col:82 */
+    /*0x56FA, GB2312 Code:*/ 0xB9CC, /*==>미 Row:25 Col:44 */
+    /*0x56FD, GB2312 Code:*/ 0xB9FA, /*==>벌 Row:25 Col:90 */
+    /*0x56FE, GB2312 Code:*/ 0xCDBC, /*==>暠 Row:45 Col:28 */
+    /*0x56FF, GB2312 Code:*/ 0xE0F3, /*==>姓 Row:64 Col:83 */
+    /*0x5703, GB2312 Code:*/ 0xC6D4, /*==>팸 Row:38 Col:52 */
+    /*0x5704, GB2312 Code:*/ 0xE0F4, /*==>宬 Row:64 Col:84 */
+    /*0x5706, GB2312 Code:*/ 0xD4B2, /*==>途 Row:52 Col:18 */
+    /*0x5708, GB2312 Code:*/ 0xC8A6, /*==>홀 Row:40 Col:06 */
+    /*0x5709, GB2312 Code:*/ 0xE0F6, /*==>惺 Row:64 Col:86 */
+    /*0x570A, GB2312 Code:*/ 0xE0F5, /*==>性 Row:64 Col:85 */
+    /*0x571C, GB2312 Code:*/ 0xE0F7, /*==>成 Row:64 Col:87 */
+    /*0x571F, GB2312 Code:*/ 0xCDC1, /*==>皐 Row:45 Col:33 */
+    /*0x5723, GB2312 Code:*/ 0xCAA5, /*==>加 Row:42 Col:05 */
+    /*0x5728, GB2312 Code:*/ 0xD4DA, /*==>瞳 Row:52 Col:58 */
+    /*0x5729, GB2312 Code:*/ 0xDBD7, /*==>伯 Row:59 Col:55 */
+    /*0x572A, GB2312 Code:*/ 0xDBD9, /*==>帛 Row:59 Col:57 */
+    /*0x572C, GB2312 Code:*/ 0xDBD8, /*==>佰 Row:59 Col:56 */
+    /*0x572D, GB2312 Code:*/ 0xB9E7, /*==>밭 Row:25 Col:71 */
+    /*0x572E, GB2312 Code:*/ 0xDBDC, /*==>白 Row:59 Col:60 */
+    /*0x572F, GB2312 Code:*/ 0xDBDD, /*==>百 Row:59 Col:61 */
+    /*0x5730, GB2312 Code:*/ 0xB5D8, /*==>뒈 Row:21 Col:56 */
+    /*0x5733, GB2312 Code:*/ 0xDBDA, /*==>柏 Row:59 Col:58 */
+    /*0x5739, GB2312 Code:*/ 0xDBDB, /*==>栢 Row:59 Col:59 */
+    /*0x573A, GB2312 Code:*/ 0xB3A1, /*==>끝 Row:19 Col:01 */
+    /*0x573B, GB2312 Code:*/ 0xDBDF, /*==>幡 Row:59 Col:63 */
+    /*0x573E, GB2312 Code:*/ 0xBBF8, /*==>샐 Row:27 Col:88 */
+    /*0x5740, GB2312 Code:*/ 0xD6B7, /*==>囹 Row:54 Col:23 */
+    /*0x5742, GB2312 Code:*/ 0xDBE0, /*==>樊 Row:59 Col:64 */
+    /*0x5747, GB2312 Code:*/ 0xBEF9, /*==>엇 Row:30 Col:89 */
+    /*0x574A, GB2312 Code:*/ 0xB7BB, /*==>렌 Row:23 Col:27 */
+    /*0x574C, GB2312 Code:*/ 0xDBD0, /*==>裴 Row:59 Col:48 */
+    /*0x574D, GB2312 Code:*/ 0xCCAE, /*==>膈 Row:44 Col:14 */
+    /*0x574E, GB2312 Code:*/ 0xBFB2, /*==>엾 Row:31 Col:18 */
+    /*0x574F, GB2312 Code:*/ 0xBBB5, /*==>뻐 Row:27 Col:21 */
+    /*0x5750, GB2312 Code:*/ 0xD7F8, /*==>麟 Row:55 Col:88 */
+    /*0x5751, GB2312 Code:*/ 0xBFD3, /*==>왓 Row:31 Col:51 */
+    /*0x5757, GB2312 Code:*/ 0xBFE9, /*==>욥 Row:31 Col:73 */
+    /*0x575A, GB2312 Code:*/ 0xBCE1, /*==>솽 Row:28 Col:65 */
+    /*0x575B, GB2312 Code:*/ 0xCCB3, /*==>犬 Row:44 Col:19 */
+    /*0x575C, GB2312 Code:*/ 0xDBDE, /*==>魄 Row:59 Col:62 */
+    /*0x575D, GB2312 Code:*/ 0xB0D3, /*==>겋 Row:16 Col:51 */
+    /*0x575E, GB2312 Code:*/ 0xCEEB, /*==>皎 Row:46 Col:75 */
+    /*0x575F, GB2312 Code:*/ 0xB7D8, /*==>뢍 Row:23 Col:56 */
+    /*0x5760, GB2312 Code:*/ 0xD7B9, /*==>瑠 Row:55 Col:25 */
+    /*0x5761, GB2312 Code:*/ 0xC6C2, /*==>팃 Row:38 Col:34 */
+    /*0x5764, GB2312 Code:*/ 0xC0A4, /*==>웸 Row:32 Col:04 */
+    /*0x5766, GB2312 Code:*/ 0xCCB9, /*==>譴 Row:44 Col:25 */
+    /*0x5768, GB2312 Code:*/ 0xDBE7, /*==>藩 Row:59 Col:71 */
+    /*0x5769, GB2312 Code:*/ 0xDBE1, /*==>煩 Row:59 Col:65 */
+    /*0x576A, GB2312 Code:*/ 0xC6BA, /*==>틤 Row:38 Col:26 */
+    /*0x576B, GB2312 Code:*/ 0xDBE3, /*==>番 Row:59 Col:67 */
+    /*0x576D, GB2312 Code:*/ 0xDBE8, /*==>飜 Row:59 Col:72 */
+    /*0x576F, GB2312 Code:*/ 0xC5F7, /*==>툰 Row:37 Col:87 */
+    /*0x5773, GB2312 Code:*/ 0xDBEA, /*==>筏 Row:59 Col:74 */
+    /*0x5776, GB2312 Code:*/ 0xDBE9, /*==>伐 Row:59 Col:73 */
+    /*0x5777, GB2312 Code:*/ 0xBFC0, /*==>오 Row:31 Col:32 */
+    /*0x577B, GB2312 Code:*/ 0xDBE6, /*==>蕃 Row:59 Col:70 */
+    /*0x577C, GB2312 Code:*/ 0xDBE5, /*==>繁 Row:59 Col:69 */
+    /*0x5782, GB2312 Code:*/ 0xB4B9, /*==>뉩 Row:20 Col:25 */
+    /*0x5783, GB2312 Code:*/ 0xC0AC, /*==>윕 Row:32 Col:12 */
+    /*0x5784, GB2312 Code:*/ 0xC2A2, /*==>짖 Row:34 Col:02 */
+    /*0x5785, GB2312 Code:*/ 0xDBE2, /*==>燔 Row:59 Col:66 */
+    /*0x5786, GB2312 Code:*/ 0xDBE4, /*==>磻 Row:59 Col:68 */
+    /*0x578B, GB2312 Code:*/ 0xD0CD, /*==>謹 Row:48 Col:45 */
+    /*0x578C, GB2312 Code:*/ 0xDBED, /*==>凡 Row:59 Col:77 */
+    /*0x5792, GB2312 Code:*/ 0xC0DD, /*==>잖 Row:32 Col:61 */
+    /*0x5793, GB2312 Code:*/ 0xDBF2, /*==>泛 Row:59 Col:82 */
+    /*0x579B, GB2312 Code:*/ 0xB6E2, /*==>뜯 Row:22 Col:66 */
+    /*0x57A0, GB2312 Code:*/ 0xDBF3, /*==>犯 Row:59 Col:83 */
+    /*0x57A1, GB2312 Code:*/ 0xDBD2, /*==>褙 Row:59 Col:50 */
+    /*0x57A2, GB2312 Code:*/ 0xB9B8, /*==>뭏 Row:25 Col:24 */
+    /*0x57A3, GB2312 Code:*/ 0xD4AB, /*==>稻 Row:52 Col:11 */
+    /*0x57A4, GB2312 Code:*/ 0xDBEC, /*==>閥 Row:59 Col:76 */
+    /*0x57A6, GB2312 Code:*/ 0xBFD1, /*==>왐 Row:31 Col:49 */
+    /*0x57A7, GB2312 Code:*/ 0xDBF0, /*==>氾 Row:59 Col:80 */
+    /*0x57A9, GB2312 Code:*/ 0xDBD1, /*==>裵 Row:59 Col:49 */
+    /*0x57AB, GB2312 Code:*/ 0xB5E6, /*==>득 Row:21 Col:70 */
+    /*0x57AD, GB2312 Code:*/ 0xDBEB, /*==>罰 Row:59 Col:75 */
+    /*0x57AE, GB2312 Code:*/ 0xBFE5, /*==>욕 Row:31 Col:69 */
+    /*0x57B2, GB2312 Code:*/ 0xDBEE, /*==>帆 Row:59 Col:78 */
+    /*0x57B4, GB2312 Code:*/ 0xDBF1, /*==>汎 Row:59 Col:81 */
+    /*0x57B8, GB2312 Code:*/ 0xDBF9, /*==>劈 Row:59 Col:89 */
+    /*0x57C2, GB2312 Code:*/ 0xB9A1, /*==>묀 Row:25 Col:01 */
+    /*0x57C3, GB2312 Code:*/ 0xB0A3, /*==>간 Row:16 Col:03 */
+    /*0x57CB, GB2312 Code:*/ 0xC2F1, /*==>찔 Row:34 Col:81 */
+    /*0x57CE, GB2312 Code:*/ 0xB3C7, /*==>냘 Row:19 Col:39 */
+    /*0x57CF, GB2312 Code:*/ 0xDBEF, /*==>梵 Row:59 Col:79 */
+    /*0x57D2, GB2312 Code:*/ 0xDBF8, /*==>僻 Row:59 Col:88 */
+    /*0x57D4, GB2312 Code:*/ 0xC6D2, /*==>팬 Row:38 Col:50 */
+    /*0x57D5, GB2312 Code:*/ 0xDBF4, /*==>範 Row:59 Col:84 */
+    /*0x57D8, GB2312 Code:*/ 0xDBF5, /*==>范 Row:59 Col:85 */
+    /*0x57D9, GB2312 Code:*/ 0xDBF7, /*==>琺 Row:59 Col:87 */
+    /*0x57DA, GB2312 Code:*/ 0xDBF6, /*==>法 Row:59 Col:86 */
+    /*0x57DD, GB2312 Code:*/ 0xDBFE, /*==>癖 Row:59 Col:94 */
+    /*0x57DF, GB2312 Code:*/ 0xD3F2, /*==>堵 Row:51 Col:82 */
+    /*0x57E0, GB2312 Code:*/ 0xB2BA, /*==>껼 Row:18 Col:26 */
+    /*0x57E4, GB2312 Code:*/ 0xDBFD, /*==>璧 Row:59 Col:93 */
+    /*0x57ED, GB2312 Code:*/ 0xDCA4, /*==>霹 Row:60 Col:04 */
+    /*0x57EF, GB2312 Code:*/ 0xDBFB, /*==>擘 Row:59 Col:91 */
+    /*0x57F4, GB2312 Code:*/ 0xDBFA, /*==>壁 Row:59 Col:90 */
+    /*0x57F8, GB2312 Code:*/ 0xDBFC, /*==>檗 Row:59 Col:92 */
+    /*0x57F9, GB2312 Code:*/ 0xC5E0, /*==>텬 Row:37 Col:64 */
+    /*0x57FA, GB2312 Code:*/ 0xBBF9, /*==>샘 Row:27 Col:89 */
+    /*0x57FD, GB2312 Code:*/ 0xDCA3, /*==>闢 Row:60 Col:03 */
+    /*0x5800, GB2312 Code:*/ 0xDCA5, /*==>便 Row:60 Col:05 */
+    /*0x5802, GB2312 Code:*/ 0xCCC3, /*==>慊 Row:44 Col:35 */
+    /*0x5806, GB2312 Code:*/ 0xB6D1, /*==>뚜 Row:22 Col:49 */
+    /*0x5807, GB2312 Code:*/ 0xDDC0, /*==>鳧 Row:61 Col:32 */
+    /*0x580B, GB2312 Code:*/ 0xDCA1, /*==>碧 Row:60 Col:01 */
+    /*0x580D, GB2312 Code:*/ 0xDCA2, /*==>蘗 Row:60 Col:02 */
+    /*0x5811, GB2312 Code:*/ 0xC7B5, /*==>풩 Row:39 Col:21 */
+    /*0x5815, GB2312 Code:*/ 0xB6E9, /*==>띌 Row:22 Col:73 */
+    /*0x5819, GB2312 Code:*/ 0xDCA7, /*==>弁 Row:60 Col:07 */
+    /*0x581E, GB2312 Code:*/ 0xDCA6, /*==>卞 Row:60 Col:06 */
+    /*0x5820, GB2312 Code:*/ 0xDCA9, /*==>辨 Row:60 Col:09 */
+    /*0x5821, GB2312 Code:*/ 0xB1A4, /*==>광 Row:17 Col:04 */
+    /*0x5824, GB2312 Code:*/ 0xB5CC, /*==>됫 Row:21 Col:44 */
+    /*0x582A, GB2312 Code:*/ 0xBFB0, /*==>염 Row:31 Col:16 */
+    /*0x5830, GB2312 Code:*/ 0xD1DF, /*==>裸 Row:49 Col:63 */
+    /*0x5835, GB2312 Code:*/ 0xB6C2, /*==>뗏 Row:22 Col:34 */
+    /*0x5844, GB2312 Code:*/ 0xDCA8, /*==>變 Row:60 Col:08 */
+    /*0x584C, GB2312 Code:*/ 0xCBFA, /*==>桀 Row:43 Col:90 */
+    /*0x584D, GB2312 Code:*/ 0xEBF3, /*==>懿 Row:75 Col:83 */
+    /*0x5851, GB2312 Code:*/ 0xCBDC, /*==>居 Row:43 Col:60 */
+    /*0x5854, GB2312 Code:*/ 0xCBFE, /*==>檢 Row:43 Col:94 */
+    /*0x5858, GB2312 Code:*/ 0xCCC1, /*==>訣 Row:44 Col:33 */
+    /*0x585E, GB2312 Code:*/ 0xC8FB, /*==>힘 Row:40 Col:91 */
+    /*0x5865, GB2312 Code:*/ 0xDCAA, /*==>辯 Row:60 Col:10 */
+    /*0x586B, GB2312 Code:*/ 0xCCEE, /*==>輕 Row:44 Col:78 */
+    /*0x586C, GB2312 Code:*/ 0xDCAB, /*==>邊 Row:60 Col:11 */
+    /*0x587E, GB2312 Code:*/ 0xDBD3, /*==>賠 Row:59 Col:51 */
+    /*0x5880, GB2312 Code:*/ 0xDCAF, /*==>鼈 Row:60 Col:15 */
+    /*0x5881, GB2312 Code:*/ 0xDCAC, /*==>別 Row:60 Col:12 */
+    /*0x5883, GB2312 Code:*/ 0xBEB3, /*==>쓱 Row:30 Col:19 */
+    /*0x5885, GB2312 Code:*/ 0xCAFB, /*==>邯 Row:42 Col:91 */
+    /*0x5889, GB2312 Code:*/ 0xDCAD, /*==>瞥 Row:60 Col:13 */
+    /*0x5892, GB2312 Code:*/ 0xC9CA, /*==>� Row:41 Col:42 */
+    /*0x5893, GB2312 Code:*/ 0xC4B9, /*==>캣 Row:36 Col:25 */
+    /*0x5899, GB2312 Code:*/ 0xC7BD, /*==>퓰 Row:39 Col:29 */
+    /*0x589A, GB2312 Code:*/ 0xDCAE, /*==>鱉 Row:60 Col:14 */
+    /*0x589E, GB2312 Code:*/ 0xD4F6, /*==>藤 Row:52 Col:86 */
+    /*0x589F, GB2312 Code:*/ 0xD0E6, /*==>亘 Row:48 Col:70 */
+    /*0x58A8, GB2312 Code:*/ 0xC4AB, /*==>카 Row:36 Col:11 */
+    /*0x58A9, GB2312 Code:*/ 0xB6D5, /*==>뚫 Row:22 Col:53 */
+    /*0x58BC, GB2312 Code:*/ 0xDBD4, /*==>輩 Row:59 Col:52 */
+    /*0x58C1, GB2312 Code:*/ 0xB1DA, /*==>귿 Row:17 Col:58 */
+    /*0x58C5, GB2312 Code:*/ 0xDBD5, /*==>配 Row:59 Col:53 */
+    /*0x58D1, GB2312 Code:*/ 0xDBD6, /*==>陪 Row:59 Col:54 */
+    /*0x58D5, GB2312 Code:*/ 0xBABE, /*==>봅 Row:26 Col:30 */
+    /*0x58E4, GB2312 Code:*/ 0xC8C0, /*==>횬 Row:40 Col:32 */
+    /*0x58EB, GB2312 Code:*/ 0xCABF, /*==>却 Row:42 Col:31 */
+    /*0x58EC, GB2312 Code:*/ 0xC8C9, /*==>훔 Row:40 Col:41 */
+    /*0x58EE, GB2312 Code:*/ 0xD7B3, /*==>柳 Row:55 Col:19 */
+    /*0x58F0, GB2312 Code:*/ 0xC9F9, /*==>� Row:41 Col:89 */
+    /*0x58F3, GB2312 Code:*/ 0xBFC7, /*==>옳 Row:31 Col:39 */
+    /*0x58F6, GB2312 Code:*/ 0xBAF8, /*==>빗 Row:26 Col:88 */
+    /*0x58F9, GB2312 Code:*/ 0xD2BC, /*==>寗 Row:50 Col:28 */
+    /*0x5902, GB2312 Code:*/ 0xE2BA, /*==>羞 Row:66 Col:26 */
+    /*0x5904, GB2312 Code:*/ 0xB4A6, /*==>뇹 Row:20 Col:06 */
+    /*0x5907, GB2312 Code:*/ 0xB1B8, /*==>구 Row:17 Col:24 */
+    /*0x590D, GB2312 Code:*/ 0xB8B4, /*==>릿 Row:24 Col:20 */
+    /*0x590F, GB2312 Code:*/ 0xCFC4, /*==>謳 Row:47 Col:36 */
+    /*0x5914, GB2312 Code:*/ 0xD9E7, /*==>拇 Row:57 Col:71 */
+    /*0x5915, GB2312 Code:*/ 0xCFA6, /*==>坵 Row:47 Col:06 */
+    /*0x5916, GB2312 Code:*/ 0xCDE2, /*==>棍 Row:45 Col:66 */
+    /*0x5919, GB2312 Code:*/ 0xD9ED, /*==>無 Row:57 Col:77 */
+    /*0x591A, GB2312 Code:*/ 0xB6E0, /*==>뜩 Row:22 Col:64 */
+    /*0x591C, GB2312 Code:*/ 0xD2B9, /*==>拈 Row:50 Col:25 */
+    /*0x591F, GB2312 Code:*/ 0xB9BB, /*==>뭘 Row:25 Col:27 */
+    /*0x5924, GB2312 Code:*/ 0xE2B9, /*==>繡 Row:66 Col:25 */
+    /*0x5925, GB2312 Code:*/ 0xE2B7, /*==>綏 Row:66 Col:23 */
+    /*0x5927, GB2312 Code:*/ 0xB4F3, /*==>댕 Row:20 Col:83 */
+    /*0x5929, GB2312 Code:*/ 0xCCEC, /*==>莖 Row:44 Col:76 */
+    /*0x592A, GB2312 Code:*/ 0xCCAB, /*==>格 Row:44 Col:11 */
+    /*0x592B, GB2312 Code:*/ 0xB7F2, /*==>뤼 Row:23 Col:82 */
+    /*0x592D, GB2312 Code:*/ 0xD8B2, /*==>万 Row:56 Col:18 */
+    /*0x592E, GB2312 Code:*/ 0xD1EB, /*==>卵 Row:49 Col:75 */
+    /*0x592F, GB2312 Code:*/ 0xBABB, /*==>본 Row:26 Col:27 */
+    /*0x5931, GB2312 Code:*/ 0xCAA7, /*==>呵 Row:42 Col:07 */
+    /*0x5934, GB2312 Code:*/ 0xCDB7, /*==>庫 Row:45 Col:23 */
+    /*0x5937, GB2312 Code:*/ 0xD2C4, /*==>爐 Row:50 Col:36 */
+    /*0x5938, GB2312 Code:*/ 0xBFE4, /*==>요 Row:31 Col:68 */
+    /*0x5939, GB2312 Code:*/ 0xBCD0, /*==>셸 Row:28 Col:48 */
+    /*0x593A, GB2312 Code:*/ 0xB6E1, /*==>뜬 Row:22 Col:65 */
+    /*0x593C, GB2312 Code:*/ 0xDEC5, /*==>使 Row:62 Col:37 */
+    /*0x5941, GB2312 Code:*/ 0xDEC6, /*==>俟 Row:62 Col:38 */
+    /*0x5942, GB2312 Code:*/ 0xDBBC, /*==>蒡 Row:59 Col:28 */
+    /*0x5944, GB2312 Code:*/ 0xD1D9, /*==>拏 Row:49 Col:57 */
+    /*0x5947, GB2312 Code:*/ 0xC6E6, /*==>펜 Row:38 Col:70 */
+    /*0x5948, GB2312 Code:*/ 0xC4CE, /*==>켑 Row:36 Col:46 */
+    /*0x5949, GB2312 Code:*/ 0xB7EE, /*==>룽 Row:23 Col:78 */
+    /*0x594B, GB2312 Code:*/ 0xB7DC, /*==>뢸 Row:23 Col:60 */
+    /*0x594E, GB2312 Code:*/ 0xBFFC, /*==>웠 Row:31 Col:92 */
+    /*0x594F, GB2312 Code:*/ 0xD7E0, /*==>犁 Row:55 Col:64 */
+    /*0x5951, GB2312 Code:*/ 0xC6F5, /*==>폡 Row:38 Col:85 */
+    /*0x5954, GB2312 Code:*/ 0xB1BC, /*==>굴 Row:17 Col:28 */
+    /*0x5955, GB2312 Code:*/ 0xDEC8, /*==>史 Row:62 Col:40 */
+    /*0x5956, GB2312 Code:*/ 0xBDB1, /*==>쉽 Row:29 Col:17 */
+    /*0x5957, GB2312 Code:*/ 0xCCD7, /*==>敬 Row:44 Col:55 */
+    /*0x5958, GB2312 Code:*/ 0xDECA, /*==>唆 Row:62 Col:42 */
+    /*0x595A, GB2312 Code:*/ 0xDEC9, /*==>司 Row:62 Col:41 */
+    /*0x5960, GB2312 Code:*/ 0xB5EC, /*==>듭 Row:21 Col:76 */
+    /*0x5962, GB2312 Code:*/ 0xC9DD, /*==>� Row:41 Col:61 */
+    /*0x5965, GB2312 Code:*/ 0xB0C2, /*==>걔 Row:16 Col:34 */
+    /*0x5973, GB2312 Code:*/ 0xC5AE, /*==>큽 Row:37 Col:14 */
+    /*0x5974, GB2312 Code:*/ 0xC5AB, /*==>큰 Row:37 Col:11 */
+    /*0x5976, GB2312 Code:*/ 0xC4CC, /*==>켈 Row:36 Col:44 */
+    /*0x5978, GB2312 Code:*/ 0xBCE9, /*==>쇤 Row:28 Col:73 */
+    /*0x5979, GB2312 Code:*/ 0xCBFD, /*==>劒 Row:43 Col:93 */
+    /*0x597D, GB2312 Code:*/ 0xBAC3, /*==>봤 Row:26 Col:35 */
+    /*0x5981, GB2312 Code:*/ 0xE5F9, /*==>余 Row:69 Col:89 */
+    /*0x5982, GB2312 Code:*/ 0xC8E7, /*==>흔 Row:40 Col:71 */
+    /*0x5983, GB2312 Code:*/ 0xE5FA, /*==>勵 Row:69 Col:90 */
+    /*0x5984, GB2312 Code:*/ 0xCDFD, /*==>果 Row:45 Col:93 */
+    /*0x5986, GB2312 Code:*/ 0xD7B1, /*==>劉 Row:55 Col:17 */
+    /*0x5987, GB2312 Code:*/ 0xB8BE, /*==>맘 Row:24 Col:30 */
+    /*0x5988, GB2312 Code:*/ 0xC2E8, /*==>쮜 Row:34 Col:72 */
+    /*0x598A, GB2312 Code:*/ 0xC8D1, /*==>훼 Row:40 Col:49 */
+    /*0x598D, GB2312 Code:*/ 0xE5FB, /*==>呂 Row:69 Col:91 */
+    /*0x5992, GB2312 Code:*/ 0xB6CA, /*==>똘 Row:22 Col:42 */
+    /*0x5993, GB2312 Code:*/ 0xBCCB, /*==>셧 Row:28 Col:43 */
+    /*0x5996, GB2312 Code:*/ 0xD1FD, /*==>襤 Row:49 Col:93 */
+    /*0x5997, GB2312 Code:*/ 0xE6A1, /*==>旅 Row:70 Col:01 */
+    /*0x5999, GB2312 Code:*/ 0xC3EE, /*==>췸 Row:35 Col:78 */
+    /*0x599E, GB2312 Code:*/ 0xE6A4, /*==>濾 Row:70 Col:04 */
+    /*0x59A3, GB2312 Code:*/ 0xE5FE, /*==>廬 Row:69 Col:94 */
+    /*0x59A4, GB2312 Code:*/ 0xE6A5, /*==>璵 Row:70 Col:05 */
+    /*0x59A5, GB2312 Code:*/ 0xCDD7, /*==>斛 Row:45 Col:55 */
+    /*0x59A8, GB2312 Code:*/ 0xB7C1, /*==>려 Row:23 Col:33 */
+    /*0x59A9, GB2312 Code:*/ 0xE5FC, /*==>女 Row:69 Col:92 */
+    /*0x59AA, GB2312 Code:*/ 0xE5FD, /*==>如 Row:69 Col:93 */
+    /*0x59AB, GB2312 Code:*/ 0xE6A3, /*==>汝 Row:70 Col:03 */
+    /*0x59AE, GB2312 Code:*/ 0xC4DD, /*==>콜 Row:36 Col:61 */
+    /*0x59AF, GB2312 Code:*/ 0xE6A8, /*==>與 Row:70 Col:08 */
+    /*0x59B2, GB2312 Code:*/ 0xE6A7, /*==>礪 Row:70 Col:07 */
+    /*0x59B9, GB2312 Code:*/ 0xC3C3, /*==>쳉 Row:35 Col:35 */
+    /*0x59BB, GB2312 Code:*/ 0xC6DE, /*==>펄 Row:38 Col:62 */
+    /*0x59BE, GB2312 Code:*/ 0xE6AA, /*==>茹 Row:70 Col:10 */
+    /*0x59C6, GB2312 Code:*/ 0xC4B7, /*==>캠 Row:36 Col:23 */
+    /*0x59CA, GB2312 Code:*/ 0xE6A2, /*==>歟 Row:70 Col:02 */
+    /*0x59CB, GB2312 Code:*/ 0xCABC, /*==>迦 Row:42 Col:28 */
+    /*0x59D0, GB2312 Code:*/ 0xBDE3, /*==>썬 Row:29 Col:67 */
+    /*0x59D1, GB2312 Code:*/ 0xB9C3, /*==>뮨 Row:25 Col:35 */
+    /*0x59D2, GB2312 Code:*/ 0xE6A6, /*==>礖 Row:70 Col:06 */
+    /*0x59D3, GB2312 Code:*/ 0xD0D5, /*==>檎 Row:48 Col:53 */
+    /*0x59D4, GB2312 Code:*/ 0xCEAF, /*==>官 Row:46 Col:15 */
+    /*0x59D7, GB2312 Code:*/ 0xE6A9, /*==>艅 Row:70 Col:09 */
+    /*0x59D8, GB2312 Code:*/ 0xE6B0, /*==>麗 Row:70 Col:16 */
+    /*0x59DA, GB2312 Code:*/ 0xD2A6, /*==>娘 Row:50 Col:06 */
+    /*0x59DC, GB2312 Code:*/ 0xBDAA, /*==>쉠 Row:29 Col:10 */
+    /*0x59DD, GB2312 Code:*/ 0xE6AD, /*==>閭 Row:70 Col:13 */
+    /*0x59E3, GB2312 Code:*/ 0xE6AF, /*==>驪 Row:70 Col:15 */
+    /*0x59E5, GB2312 Code:*/ 0xC0D1, /*==>읾 Row:32 Col:49 */
+    /*0x59E8, GB2312 Code:*/ 0xD2CC, /*==>駑 Row:50 Col:44 */
+    /*0x59EC, GB2312 Code:*/ 0xBCA7, /*==>샹 Row:28 Col:07 */
+    /*0x59F9, GB2312 Code:*/ 0xE6B1, /*==>黎 Row:70 Col:17 */
+    /*0x59FB, GB2312 Code:*/ 0xD2F6, /*==>能 Row:50 Col:86 */
+    /*0x59FF, GB2312 Code:*/ 0xD7CB, /*==>率 Row:55 Col:43 */
+    /*0x5A01, GB2312 Code:*/ 0xCDFE, /*==>瓜 Row:45 Col:94 */
+    /*0x5A03, GB2312 Code:*/ 0xCDDE, /*==>坤 Row:45 Col:62 */
+    /*0x5A04, GB2312 Code:*/ 0xC2A6, /*==>짝 Row:34 Col:06 */
+    /*0x5A05, GB2312 Code:*/ 0xE6AB, /*==>輿 Row:70 Col:11 */
+    /*0x5A06, GB2312 Code:*/ 0xE6AC, /*==>轝 Row:70 Col:12 */
+    /*0x5A07, GB2312 Code:*/ 0xBDBF, /*==>슴 Row:29 Col:31 */
+    /*0x5A08, GB2312 Code:*/ 0xE6AE, /*==>餘 Row:70 Col:14 */
+    /*0x5A09, GB2312 Code:*/ 0xE6B3, /*==>力 Row:70 Col:19 */
+    /*0x5A0C, GB2312 Code:*/ 0xE6B2, /*==>亦 Row:70 Col:18 */
+    /*0x5A11, GB2312 Code:*/ 0xE6B6, /*==>易 Row:70 Col:22 */
+    /*0x5A13, GB2312 Code:*/ 0xE6B8, /*==>歷 Row:70 Col:24 */
+    /*0x5A18, GB2312 Code:*/ 0xC4EF, /*==>쿤 Row:36 Col:79 */
+    /*0x5A1C, GB2312 Code:*/ 0xC4C8, /*==>컹 Row:36 Col:40 */
+    /*0x5A1F, GB2312 Code:*/ 0xBEEA, /*==>얘 Row:30 Col:74 */
+    /*0x5A20, GB2312 Code:*/ 0xC9EF, /*==>� Row:41 Col:79 */
+    /*0x5A23, GB2312 Code:*/ 0xE6B7, /*==>曆 Row:70 Col:23 */
+    /*0x5A25, GB2312 Code:*/ 0xB6F0, /*==>띱 Row:22 Col:80 */
+    /*0x5A29, GB2312 Code:*/ 0xC3E4, /*==>춥 Row:35 Col:68 */
+    /*0x5A31, GB2312 Code:*/ 0xD3E9, /*==>隊 Row:51 Col:73 */
+    /*0x5A32, GB2312 Code:*/ 0xE6B4, /*==>域 Row:70 Col:20 */
+    /*0x5A34, GB2312 Code:*/ 0xE6B5, /*==>役 Row:70 Col:21 */
+    /*0x5A36, GB2312 Code:*/ 0xC8A2, /*==>혭 Row:40 Col:02 */
+    /*0x5A3C, GB2312 Code:*/ 0xE6BD, /*==>逆 Row:70 Col:29 */
+    /*0x5A40, GB2312 Code:*/ 0xE6B9, /*==>疫 Row:70 Col:25 */
+    /*0x5A46, GB2312 Code:*/ 0xC6C5, /*==>팍 Row:38 Col:37 */
+    /*0x5A49, GB2312 Code:*/ 0xCDF1, /*==>恭 Row:45 Col:81 */
+    /*0x5A4A, GB2312 Code:*/ 0xE6BB, /*==>譯 Row:70 Col:27 */
+    /*0x5A55, GB2312 Code:*/ 0xE6BC, /*==>轢 Row:70 Col:28 */
+    /*0x5A5A, GB2312 Code:*/ 0xBBE9, /*==>삯 Row:27 Col:73 */
+    /*0x5A62, GB2312 Code:*/ 0xE6BE, /*==>驛 Row:70 Col:30 */
+    /*0x5A67, GB2312 Code:*/ 0xE6BA, /*==>繹 Row:70 Col:26 */
+    /*0x5A6A, GB2312 Code:*/ 0xC0B7, /*==>윷 Row:32 Col:23 */
+    /*0x5A74, GB2312 Code:*/ 0xD3A4, /*==>單 Row:51 Col:04 */
+    /*0x5A75, GB2312 Code:*/ 0xE6BF, /*==>嚥 Row:70 Col:31 */
+    /*0x5A76, GB2312 Code:*/ 0xC9F4, /*==>� Row:41 Col:84 */
+    /*0x5A77, GB2312 Code:*/ 0xE6C3, /*==>宴 Row:70 Col:35 */
+    /*0x5A7A, GB2312 Code:*/ 0xE6C4, /*==>年 Row:70 Col:36 */
+    /*0x5A7F, GB2312 Code:*/ 0xD0F6, /*==>寄 Row:48 Col:86 */
+    /*0x5A92, GB2312 Code:*/ 0xC3BD, /*==>첵 Row:35 Col:29 */
+    /*0x5A9A, GB2312 Code:*/ 0xC3C4, /*==>쳐 Row:35 Col:36 */
+    /*0x5A9B, GB2312 Code:*/ 0xE6C2, /*==>娟 Row:70 Col:34 */
+    /*0x5AAA, GB2312 Code:*/ 0xE6C1, /*==>姸 Row:70 Col:33 */
+    /*0x5AB2, GB2312 Code:*/ 0xE6C7, /*==>戀 Row:70 Col:39 */
+    /*0x5AB3, GB2312 Code:*/ 0xCFB1, /*==>歐 Row:47 Col:17 */
+    /*0x5AB5, GB2312 Code:*/ 0xEBF4, /*==>擬 Row:75 Col:84 */
+    /*0x5AB8, GB2312 Code:*/ 0xE6CA, /*==>撚 Row:70 Col:42 */
+    /*0x5ABE, GB2312 Code:*/ 0xE6C5, /*==>延 Row:70 Col:37 */
+    /*0x5AC1, GB2312 Code:*/ 0xBCDE, /*==>솩 Row:28 Col:62 */
+    /*0x5AC2, GB2312 Code:*/ 0xC9A9, /*==>� Row:41 Col:09 */
+    /*0x5AC9, GB2312 Code:*/ 0xBCB5, /*==>섧 Row:28 Col:21 */
+    /*0x5ACC, GB2312 Code:*/ 0xCFD3, /*==>鞠 Row:47 Col:51 */
+    /*0x5AD2, GB2312 Code:*/ 0xE6C8, /*==>捐 Row:70 Col:40 */
+    /*0x5AD4, GB2312 Code:*/ 0xE6C9, /*==>挻 Row:70 Col:41 */
+    /*0x5AD6, GB2312 Code:*/ 0xE6CE, /*==>涎 Row:70 Col:46 */
+    /*0x5AD8, GB2312 Code:*/ 0xE6D0, /*==>淵 Row:70 Col:48 */
+    /*0x5ADC, GB2312 Code:*/ 0xE6D1, /*==>演 Row:70 Col:49 */
+    /*0x5AE0, GB2312 Code:*/ 0xE6CB, /*==>椽 Row:70 Col:43 */
+    /*0x5AE1, GB2312 Code:*/ 0xB5D5, /*==>둥 Row:21 Col:53 */
+    /*0x5AE3, GB2312 Code:*/ 0xE6CC, /*==>沇 Row:70 Col:44 */
+    /*0x5AE6, GB2312 Code:*/ 0xE6CF, /*==>涓 Row:70 Col:47 */
+    /*0x5AE9, GB2312 Code:*/ 0xC4DB, /*==>콕 Row:36 Col:59 */
+    /*0x5AEB, GB2312 Code:*/ 0xE6C6, /*==>憐 Row:70 Col:38 */
+    /*0x5AF1, GB2312 Code:*/ 0xE6CD, /*==>沿 Row:70 Col:45 */
+    /*0x5B09, GB2312 Code:*/ 0xE6D2, /*==>漣 Row:70 Col:50 */
+    /*0x5B16, GB2312 Code:*/ 0xE6D4, /*==>然 Row:70 Col:52 */
+    /*0x5B17, GB2312 Code:*/ 0xE6D3, /*==>烟 Row:70 Col:51 */
+    /*0x5B32, GB2312 Code:*/ 0xE6D5, /*==>煙 Row:70 Col:53 */
+    /*0x5B34, GB2312 Code:*/ 0xD9F8, /*==>墨 Row:57 Col:88 */
+    /*0x5B37, GB2312 Code:*/ 0xE6D6, /*==>煉 Row:70 Col:54 */
+    /*0x5B40, GB2312 Code:*/ 0xE6D7, /*==>燃 Row:70 Col:55 */
+    /*0x5B50, GB2312 Code:*/ 0xD7D3, /*==>綾 Row:55 Col:51 */
+    /*0x5B51, GB2312 Code:*/ 0xE6DD, /*==>筵 Row:70 Col:61 */
+    /*0x5B53, GB2312 Code:*/ 0xE6DE, /*==>緣 Row:70 Col:62 */
+    /*0x5B54, GB2312 Code:*/ 0xBFD7, /*==>왝 Row:31 Col:55 */
+    /*0x5B55, GB2312 Code:*/ 0xD4D0, /*==>凍 Row:52 Col:48 */
+    /*0x5B57, GB2312 Code:*/ 0xD7D6, /*==>俚 Row:55 Col:54 */
+    /*0x5B58, GB2312 Code:*/ 0xB4E6, /*==>닸 Row:20 Col:70 */
+    /*0x5B59, GB2312 Code:*/ 0xCBEF, /*==>建 Row:43 Col:79 */
+    /*0x5B5A, GB2312 Code:*/ 0xE6DA, /*==>硏 Row:70 Col:58 */
+    /*0x5B5B, GB2312 Code:*/ 0xD8C3, /*==>饅 Row:56 Col:35 */
+    /*0x5B5C, GB2312 Code:*/ 0xD7CE, /*==>肋 Row:55 Col:46 */
+    /*0x5B5D, GB2312 Code:*/ 0xD0A2, /*==>龜 Row:48 Col:02 */
+    /*0x5B5F, GB2312 Code:*/ 0xC3CF, /*==>촙 Row:35 Col:47 */
+    /*0x5B62, GB2312 Code:*/ 0xE6DF, /*==>練 Row:70 Col:63 */
+    /*0x5B63, GB2312 Code:*/ 0xBCBE, /*==>센 Row:28 Col:30 */
+    /*0x5B64, GB2312 Code:*/ 0xB9C2, /*==>뮤 Row:25 Col:34 */
+    /*0x5B65, GB2312 Code:*/ 0xE6DB, /*==>硯 Row:70 Col:59 */
+    /*0x5B66, GB2312 Code:*/ 0xD1A7, /*==>欺 Row:49 Col:07 */
+    /*0x5B69, GB2312 Code:*/ 0xBAA2, /*==>벚 Row:26 Col:02 */
+    /*0x5B6A, GB2312 Code:*/ 0xC2CF, /*==>쫏 Row:34 Col:47 */
+    /*0x5B6C, GB2312 Code:*/ 0xD8AB, /*==>麻 Row:56 Col:11 */
+    /*0x5B70, GB2312 Code:*/ 0xCAEB, /*==>勘 Row:42 Col:75 */
+    /*0x5B71, GB2312 Code:*/ 0xE5EE, /*==>蘖 Row:69 Col:78 */
+    /*0x5B73, GB2312 Code:*/ 0xE6DC, /*==>秊 Row:70 Col:60 */
+    /*0x5B75, GB2312 Code:*/ 0xB7F5, /*==>륄 Row:23 Col:85 */
+    /*0x5B7A, GB2312 Code:*/ 0xC8E6, /*==>흑 Row:40 Col:70 */
+    /*0x5B7D, GB2312 Code:*/ 0xC4F5, /*==>쿼 Row:36 Col:85 */
+    /*0x5B80, GB2312 Code:*/ 0xE5B2, /*==>略 Row:69 Col:18 */
+    /*0x5B81, GB2312 Code:*/ 0xC4FE, /*==>퀼 Row:36 Col:94 */
+    /*0x5B83, GB2312 Code:*/ 0xCBFC, /*==>劍 Row:43 Col:92 */
+    /*0x5B84, GB2312 Code:*/ 0xE5B3, /*==>約 Row:69 Col:19 */
+    /*0x5B85, GB2312 Code:*/ 0xD5AC, /*==>酪 Row:53 Col:12 */
+    /*0x5B87, GB2312 Code:*/ 0xD3EE, /*==>倒 Row:51 Col:78 */
+    /*0x5B88, GB2312 Code:*/ 0xCAD8, /*==>磵 Row:42 Col:56 */
+    /*0x5B89, GB2312 Code:*/ 0xB0B2, /*==>갛 Row:16 Col:18 */
+    /*0x5B8B, GB2312 Code:*/ 0xCBCE, /*==>芥 Row:43 Col:46 */
+    /*0x5B8C, GB2312 Code:*/ 0xCDEA, /*==>供 Row:45 Col:74 */
+    /*0x5B8F, GB2312 Code:*/ 0xBAEA, /*==>브 Row:26 Col:74 */
+    /*0x5B93, GB2312 Code:*/ 0xE5B5, /*==>葯 Row:69 Col:21 */
+    /*0x5B95, GB2312 Code:*/ 0xE5B4, /*==>若 Row:69 Col:20 */
+    /*0x5B97, GB2312 Code:*/ 0xD7DA, /*==>唎 Row:55 Col:58 */
+    /*0x5B98, GB2312 Code:*/ 0xB9D9, /*==>바 Row:25 Col:57 */
+    /*0x5B99, GB2312 Code:*/ 0xD6E6, /*==>壟 Row:54 Col:70 */
+    /*0x5B9A, GB2312 Code:*/ 0xB6A8, /*==>땍 Row:22 Col:08 */
+    /*0x5B9B, GB2312 Code:*/ 0xCDF0, /*==>恐 Row:45 Col:80 */
+    /*0x5B9C, GB2312 Code:*/ 0xD2CB, /*==>露 Row:50 Col:43 */
+    /*0x5B9D, GB2312 Code:*/ 0xB1A6, /*==>괜 Row:17 Col:06 */
+    /*0x5B9E, GB2312 Code:*/ 0xCAB5, /*==>茄 Row:42 Col:21 */
+    /*0x5BA0, GB2312 Code:*/ 0xB3E8, /*==>녘 Row:19 Col:72 */
+    /*0x5BA1, GB2312 Code:*/ 0xC9F3, /*==>� Row:41 Col:83 */
+    /*0x5BA2, GB2312 Code:*/ 0xBFCD, /*==>와 Row:31 Col:45 */
+    /*0x5BA3, GB2312 Code:*/ 0xD0FB, /*==>忌 Row:48 Col:91 */
+    /*0x5BA4, GB2312 Code:*/ 0xCAD2, /*==>杆 Row:42 Col:50 */
+    /*0x5BA5, GB2312 Code:*/ 0xE5B6, /*==>蒻 Row:69 Col:22 */
+    /*0x5BA6, GB2312 Code:*/ 0xBBC2, /*==>뼘 Row:27 Col:34 */
+    /*0x5BAA, GB2312 Code:*/ 0xCFDC, /*==>堀 Row:47 Col:60 */
+    /*0x5BAB, GB2312 Code:*/ 0xB9AC, /*==>묵 Row:25 Col:12 */
+    /*0x5BB0, GB2312 Code:*/ 0xD4D7, /*==>洞 Row:52 Col:55 */
+    /*0x5BB3, GB2312 Code:*/ 0xBAA6, /*==>벧 Row:26 Col:06 */
+    /*0x5BB4, GB2312 Code:*/ 0xD1E7, /*==>諾 Row:49 Col:71 */
+    /*0x5BB5, GB2312 Code:*/ 0xCFFC, /*==>晷 Row:47 Col:92 */
+    /*0x5BB6, GB2312 Code:*/ 0xBCD2, /*==>소 Row:28 Col:50 */
+    /*0x5BB8, GB2312 Code:*/ 0xE5B7, /*==>藥 Row:69 Col:23 */
+    /*0x5BB9, GB2312 Code:*/ 0xC8DD, /*==>휭 Row:40 Col:61 */
+    /*0x5BBD, GB2312 Code:*/ 0xBFED, /*==>욱 Row:31 Col:77 */
+    /*0x5BBE, GB2312 Code:*/ 0xB1F6, /*==>깟 Row:17 Col:86 */
+    /*0x5BBF, GB2312 Code:*/ 0xCBDE, /*==>拒 Row:43 Col:62 */
+    /*0x5BC2, GB2312 Code:*/ 0xBCC5, /*==>셔 Row:28 Col:37 */
+    /*0x5BC4, GB2312 Code:*/ 0xBCC4, /*==>셍 Row:28 Col:36 */
+    /*0x5BC5, GB2312 Code:*/ 0xD2FA, /*==>泥 Row:50 Col:90 */
+    /*0x5BC6, GB2312 Code:*/ 0xC3DC, /*==>쵱 Row:35 Col:60 */
+    /*0x5BC7, GB2312 Code:*/ 0xBFDC, /*==>외 Row:31 Col:60 */
+    /*0x5BCC, GB2312 Code:*/ 0xB8BB, /*==>말 Row:24 Col:27 */
+    /*0x5BD0, GB2312 Code:*/ 0xC3C2, /*==>쳇 Row:35 Col:34 */
+    /*0x5BD2, GB2312 Code:*/ 0xBAAE, /*==>벽 Row:26 Col:14 */
+    /*0x5BD3, GB2312 Code:*/ 0xD4A2, /*==>櫂 Row:52 Col:02 */
+    /*0x5BDD, GB2312 Code:*/ 0xC7DE, /*==>햇 Row:39 Col:62 */
+    /*0x5BDE, GB2312 Code:*/ 0xC4AF, /*==>캄 Row:36 Col:15 */
+    /*0x5BDF, GB2312 Code:*/ 0xB2EC, /*==>뀁 Row:18 Col:76 */
+    /*0x5BE1, GB2312 Code:*/ 0xB9D1, /*==>밂 Row:25 Col:49 */
+    /*0x5BE4, GB2312 Code:*/ 0xE5BB, /*==>兩 Row:69 Col:27 */
+    /*0x5BE5, GB2312 Code:*/ 0xC1C8, /*==>좨 Row:33 Col:40 */
+    /*0x5BE8, GB2312 Code:*/ 0xD5AF, /*==>亂 Row:53 Col:15 */
+    /*0x5BEE, GB2312 Code:*/ 0xE5BC, /*==>凉 Row:69 Col:28 */
+    /*0x5BF0, GB2312 Code:*/ 0xE5BE, /*==>孃 Row:69 Col:30 */
+    /*0x5BF8, GB2312 Code:*/ 0xB4E7, /*==>당 Row:20 Col:71 */
+    /*0x5BF9, GB2312 Code:*/ 0xB6D4, /*==>뚤 Row:22 Col:52 */
+    /*0x5BFA, GB2312 Code:*/ 0xCBC2, /*==>凱 Row:43 Col:34 */
+    /*0x5BFB, GB2312 Code:*/ 0xD1B0, /*==>璣 Row:49 Col:16 */
+    /*0x5BFC, GB2312 Code:*/ 0xB5BC, /*==>돔 Row:21 Col:28 */
+    /*0x5BFF, GB2312 Code:*/ 0xCAD9, /*==>稈 Row:42 Col:57 */
+    /*0x5C01, GB2312 Code:*/ 0xB7E2, /*==>룐 Row:23 Col:66 */
+    /*0x5C04, GB2312 Code:*/ 0xC9E4, /*==>� Row:41 Col:68 */
+    /*0x5C06, GB2312 Code:*/ 0xBDAB, /*==>쉥 Row:29 Col:11 */
+    /*0x5C09, GB2312 Code:*/ 0xCEBE, /*==>刮 Row:46 Col:30 */
+    /*0x5C0A, GB2312 Code:*/ 0xD7F0, /*==>吝 Row:55 Col:80 */
+    /*0x5C0F, GB2312 Code:*/ 0xD0A1, /*==>鬼 Row:48 Col:01 */
+    /*0x5C11, GB2312 Code:*/ 0xC9D9, /*==>� Row:41 Col:57 */
+    /*0x5C14, GB2312 Code:*/ 0xB6FB, /*==>랑 Row:22 Col:91 */
+    /*0x5C15, GB2312 Code:*/ 0xE6D8, /*==>燕 Row:70 Col:56 */
+    /*0x5C16, GB2312 Code:*/ 0xBCE2, /*==>쇄 Row:28 Col:66 */
+    /*0x5C18, GB2312 Code:*/ 0xB3BE, /*==>낼 Row:19 Col:30 */
+    /*0x5C1A, GB2312 Code:*/ 0xC9D0, /*==>� Row:41 Col:48 */
+    /*0x5C1C, GB2312 Code:*/ 0xE6D9, /*==>璉 Row:70 Col:57 */
+    /*0x5C1D, GB2312 Code:*/ 0xB3A2, /*==>끼 Row:19 Col:02 */
+    /*0x5C22, GB2312 Code:*/ 0xDECC, /*==>四 Row:62 Col:44 */
+    /*0x5C24, GB2312 Code:*/ 0xD3C8, /*==>談 Row:51 Col:40 */
+    /*0x5C25, GB2312 Code:*/ 0xDECD, /*==>士 Row:62 Col:45 */
+    /*0x5C27, GB2312 Code:*/ 0xD2A2, /*==>臘 Row:50 Col:02 */
+    /*0x5C2C, GB2312 Code:*/ 0xDECE, /*==>奢 Row:62 Col:46 */
+    /*0x5C31, GB2312 Code:*/ 0xBECD, /*==>앎 Row:30 Col:45 */
+    /*0x5C34, GB2312 Code:*/ 0xDECF, /*==>娑 Row:62 Col:47 */
+    /*0x5C38, GB2312 Code:*/ 0xCAAC, /*==>暇 Row:42 Col:12 */
+    /*0x5C39, GB2312 Code:*/ 0xD2FC, /*==>溺 Row:50 Col:92 */
+    /*0x5C3A, GB2312 Code:*/ 0xB3DF, /*==>넹 Row:19 Col:63 */
+    /*0x5C3B, GB2312 Code:*/ 0xE5EA, /*==>焉 Row:69 Col:74 */
+    /*0x5C3C, GB2312 Code:*/ 0xC4E1, /*==>콩 Row:36 Col:65 */
+    /*0x5C3D, GB2312 Code:*/ 0xBEA1, /*==>쐴 Row:30 Col:01 */
+    /*0x5C3E, GB2312 Code:*/ 0xCEB2, /*==>棺 Row:46 Col:18 */
+    /*0x5C3F, GB2312 Code:*/ 0xC4F2, /*==>쿱 Row:36 Col:82 */
+    /*0x5C40, GB2312 Code:*/ 0xBED6, /*==>애 Row:30 Col:54 */
+    /*0x5C41, GB2312 Code:*/ 0xC6A8, /*==>튕 Row:38 Col:08 */
+    /*0x5C42, GB2312 Code:*/ 0xB2E3, /*==>꿔 Row:18 Col:67 */
+    /*0x5C45, GB2312 Code:*/ 0xBED3, /*==>앙 Row:30 Col:51 */
+    /*0x5C48, GB2312 Code:*/ 0xC7FC, /*==>형 Row:39 Col:92 */
+    /*0x5C49, GB2312 Code:*/ 0xCCEB, /*==>脛 Row:44 Col:75 */
+    /*0x5C4A, GB2312 Code:*/ 0xBDEC, /*==>쎌 Row:29 Col:76 */
+    /*0x5C4B, GB2312 Code:*/ 0xCEDD, /*==>肱 Row:46 Col:61 */
+    /*0x5C4E, GB2312 Code:*/ 0xCABA, /*==>跏 Row:42 Col:26 */
+    /*0x5C4F, GB2312 Code:*/ 0xC6C1, /*==>팁 Row:38 Col:33 */
+    /*0x5C50, GB2312 Code:*/ 0xE5EC, /*==>諺 Row:69 Col:76 */
+    /*0x5C51, GB2312 Code:*/ 0xD0BC, /*==>劇 Row:48 Col:28 */
+    /*0x5C55, GB2312 Code:*/ 0xD5B9, /*==>嵐 Row:53 Col:25 */
+    /*0x5C59, GB2312 Code:*/ 0xE5ED, /*==>孼 Row:69 Col:77 */
+    /*0x5C5E, GB2312 Code:*/ 0xCAF4, /*==>橄 Row:42 Col:84 */
+    /*0x5C60, GB2312 Code:*/ 0xCDC0, /*==>痼 Row:45 Col:32 */
+    /*0x5C61, GB2312 Code:*/ 0xC2C5, /*==>쩨 Row:34 Col:37 */
+    /*0x5C63, GB2312 Code:*/ 0xE5EF, /*==>俺 Row:69 Col:79 */
+    /*0x5C65, GB2312 Code:*/ 0xC2C4, /*==>쩡 Row:34 Col:36 */
+    /*0x5C66, GB2312 Code:*/ 0xE5F0, /*==>儼 Row:69 Col:80 */
+    /*0x5C6E, GB2312 Code:*/ 0xE5F8, /*==>予 Row:69 Col:88 */
+    /*0x5C6F, GB2312 Code:*/ 0xCDCD, /*==>袴 Row:45 Col:45 */
+    /*0x5C71, GB2312 Code:*/ 0xC9BD, /*==>� Row:41 Col:29 */
+    /*0x5C79, GB2312 Code:*/ 0xD2D9, /*==>籠 Row:50 Col:57 */
+    /*0x5C7A, GB2312 Code:*/ 0xE1A8, /*==>歲 Row:65 Col:08 */
+    /*0x5C7F, GB2312 Code:*/ 0xD3EC, /*==>德 Row:51 Col:76 */
+    /*0x5C81, GB2312 Code:*/ 0xCBEA, /*==>鋸 Row:43 Col:74 */
+    /*0x5C82, GB2312 Code:*/ 0xC6F1, /*==>폈 Row:38 Col:81 */
+    /*0x5C88, GB2312 Code:*/ 0xE1AC, /*==>細 Row:65 Col:12 */
+    /*0x5C8C, GB2312 Code:*/ 0xE1A7, /*==>勢 Row:65 Col:07 */
+    /*0x5C8D, GB2312 Code:*/ 0xE1A9, /*==>洗 Row:65 Col:09 */
+    /*0x5C90, GB2312 Code:*/ 0xE1AA, /*==>稅 Row:65 Col:10 */
+    /*0x5C91, GB2312 Code:*/ 0xE1AF, /*==>召 Row:65 Col:15 */
+    /*0x5C94, GB2312 Code:*/ 0xB2ED, /*==>뀄 Row:18 Col:77 */
+    /*0x5C96, GB2312 Code:*/ 0xE1AB, /*==>笹 Row:65 Col:11 */
+    /*0x5C97, GB2312 Code:*/ 0xB8DA, /*==>멋 Row:24 Col:58 */
+    /*0x5C98, GB2312 Code:*/ 0xE1AD, /*==>說 Row:65 Col:13 */
+    /*0x5C99, GB2312 Code:*/ 0xE1AE, /*==>貰 Row:65 Col:14 */
+    /*0x5C9A, GB2312 Code:*/ 0xE1B0, /*==>嘯 Row:65 Col:16 */
+    /*0x5C9B, GB2312 Code:*/ 0xB5BA, /*==>돎 Row:21 Col:26 */
+    /*0x5C9C, GB2312 Code:*/ 0xE1B1, /*==>塑 Row:65 Col:17 */
+    /*0x5CA2, GB2312 Code:*/ 0xE1B3, /*==>小 Row:65 Col:19 */
+    /*0x5CA3, GB2312 Code:*/ 0xE1B8, /*==>搔 Row:65 Col:24 */
+    /*0x5CA9, GB2312 Code:*/ 0xD1D2, /*==>喫 Row:49 Col:50 */
+    /*0x5CAB, GB2312 Code:*/ 0xE1B6, /*==>所 Row:65 Col:22 */
+    /*0x5CAC, GB2312 Code:*/ 0xE1B5, /*==>巢 Row:65 Col:21 */
+    /*0x5CAD, GB2312 Code:*/ 0xC1EB, /*==>쥰 Row:33 Col:75 */
+    /*0x5CB1, GB2312 Code:*/ 0xE1B7, /*==>掃 Row:65 Col:23 */
+    /*0x5CB3, GB2312 Code:*/ 0xD4C0, /*==>纛 Row:52 Col:32 */
+    /*0x5CB5, GB2312 Code:*/ 0xE1B2, /*==>宵 Row:65 Col:18 */
+    /*0x5CB7, GB2312 Code:*/ 0xE1BA, /*==>梳 Row:65 Col:26 */
+    /*0x5CB8, GB2312 Code:*/ 0xB0B6, /*==>갤 Row:16 Col:22 */
+    /*0x5CBD, GB2312 Code:*/ 0xE1B4, /*==>少 Row:65 Col:20 */
+    /*0x5CBF, GB2312 Code:*/ 0xBFF9, /*==>월 Row:31 Col:89 */
+    /*0x5CC1, GB2312 Code:*/ 0xE1B9, /*==>昭 Row:65 Col:25 */
+    /*0x5CC4, GB2312 Code:*/ 0xE1BB, /*==>沼 Row:65 Col:27 */
+    /*0x5CCB, GB2312 Code:*/ 0xE1BE, /*==>瀟 Row:65 Col:30 */
+    /*0x5CD2, GB2312 Code:*/ 0xE1BC, /*==>消 Row:65 Col:28 */
+    /*0x5CD9, GB2312 Code:*/ 0xD6C5, /*==>領 Row:54 Col:37 */
+    /*0x5CE1, GB2312 Code:*/ 0xCFBF, /*==>臼 Row:47 Col:31 */
+    /*0x5CE4, GB2312 Code:*/ 0xE1BD, /*==>溯 Row:65 Col:29 */
+    /*0x5CE5, GB2312 Code:*/ 0xE1BF, /*==>炤 Row:65 Col:31 */
+    /*0x5CE6, GB2312 Code:*/ 0xC2CD, /*==>쫌 Row:34 Col:45 */
+    /*0x5CE8, GB2312 Code:*/ 0xB6EB, /*==>띕 Row:22 Col:75 */
+    /*0x5CEA, GB2312 Code:*/ 0xD3F8, /*==>度 Row:51 Col:88 */
+    /*0x5CED, GB2312 Code:*/ 0xC7CD, /*==>핏 Row:39 Col:45 */
+    /*0x5CF0, GB2312 Code:*/ 0xB7E5, /*==>룟 Row:23 Col:69 */
+    /*0x5CFB, GB2312 Code:*/ 0xBEFE, /*==>엎 Row:30 Col:94 */
+    /*0x5D02, GB2312 Code:*/ 0xE1C0, /*==>燒 Row:65 Col:32 */
+    /*0x5D03, GB2312 Code:*/ 0xE1C1, /*==>甦 Row:65 Col:33 */
+    /*0x5D06, GB2312 Code:*/ 0xE1C7, /*==>簫 Row:65 Col:39 */
+    /*0x5D07, GB2312 Code:*/ 0xB3E7, /*==>녕 Row:19 Col:71 */
+    /*0x5D0E, GB2312 Code:*/ 0xC6E9, /*==>펩 Row:38 Col:73 */
+    /*0x5D14, GB2312 Code:*/ 0xB4DE, /*==>달 Row:20 Col:62 */
+    /*0x5D16, GB2312 Code:*/ 0xD1C2, /*==>豈 Row:49 Col:34 */
+    /*0x5D1B, GB2312 Code:*/ 0xE1C8, /*==>素 Row:65 Col:40 */
+    /*0x5D1E, GB2312 Code:*/ 0xE1C6, /*==>篠 Row:65 Col:38 */
+    /*0x5D24, GB2312 Code:*/ 0xE1C5, /*==>笑 Row:65 Col:37 */
+    /*0x5D26, GB2312 Code:*/ 0xE1C3, /*==>疎 Row:65 Col:35 */
+    /*0x5D27, GB2312 Code:*/ 0xE1C2, /*==>疏 Row:65 Col:34 */
+    /*0x5D29, GB2312 Code:*/ 0xB1C0, /*==>굼 Row:17 Col:32 */
+    /*0x5D2D, GB2312 Code:*/ 0xD5B8, /*==>辣 Row:53 Col:24 */
+    /*0x5D2E, GB2312 Code:*/ 0xE1C4, /*==>瘙 Row:65 Col:36 */
+    /*0x5D34, GB2312 Code:*/ 0xE1CB, /*==>蕭 Row:65 Col:43 */
+    /*0x5D3D, GB2312 Code:*/ 0xE1CC, /*==>蘇 Row:65 Col:44 */
+    /*0x5D3E, GB2312 Code:*/ 0xE1CA, /*==>蔬 Row:65 Col:42 */
+    /*0x5D47, GB2312 Code:*/ 0xEFFA, /*==>鉦 Row:79 Col:90 */
+    /*0x5D4A, GB2312 Code:*/ 0xE1D3, /*==>騷 Row:65 Col:51 */
+    /*0x5D4B, GB2312 Code:*/ 0xE1D2, /*==>韶 Row:65 Col:50 */
+    /*0x5D4C, GB2312 Code:*/ 0xC7B6, /*==>퓌 Row:39 Col:22 */
+    /*0x5D58, GB2312 Code:*/ 0xE1C9, /*==>紹 Row:65 Col:41 */
+    /*0x5D5B, GB2312 Code:*/ 0xE1CE, /*==>逍 Row:65 Col:46 */
+    /*0x5D5D, GB2312 Code:*/ 0xE1D0, /*==>邵 Row:65 Col:48 */
+    /*0x5D69, GB2312 Code:*/ 0xE1D4, /*==>俗 Row:65 Col:52 */
+    /*0x5D6B, GB2312 Code:*/ 0xE1D1, /*==>銷 Row:65 Col:49 */
+    /*0x5D6C, GB2312 Code:*/ 0xE1CD, /*==>訴 Row:65 Col:45 */
+    /*0x5D6F, GB2312 Code:*/ 0xE1CF, /*==>遡 Row:65 Col:47 */
+    /*0x5D74, GB2312 Code:*/ 0xE1D5, /*==>屬 Row:65 Col:53 */
+    /*0x5D82, GB2312 Code:*/ 0xE1D6, /*==>束 Row:65 Col:54 */
+    /*0x5D99, GB2312 Code:*/ 0xE1D7, /*==>涑 Row:65 Col:55 */
+    /*0x5D9D, GB2312 Code:*/ 0xE1D8, /*==>粟 Row:65 Col:56 */
+    /*0x5DB7, GB2312 Code:*/ 0xE1DA, /*==>謖 Row:65 Col:58 */
+    /*0x5DC5, GB2312 Code:*/ 0xE1DB, /*==>贖 Row:65 Col:59 */
+    /*0x5DCD, GB2312 Code:*/ 0xCEA1, /*==>科 Row:46 Col:01 */
+    /*0x5DDB, GB2312 Code:*/ 0xE7DD, /*==>藝 Row:71 Col:61 */
+    /*0x5DDD, GB2312 Code:*/ 0xB4A8, /*==>뇽 Row:20 Col:08 */
+    /*0x5DDE, GB2312 Code:*/ 0xD6DD, /*==>鹵 Row:54 Col:61 */
+    /*0x5DE1, GB2312 Code:*/ 0xD1B2, /*==>畿 Row:49 Col:18 */
+    /*0x5DE2, GB2312 Code:*/ 0xB3B2, /*==>남 Row:19 Col:18 */
+    /*0x5DE5, GB2312 Code:*/ 0xB9A4, /*==>묏 Row:25 Col:04 */
+    /*0x5DE6, GB2312 Code:*/ 0xD7F3, /*==>璘 Row:55 Col:83 */
+    /*0x5DE7, GB2312 Code:*/ 0xC7C9, /*==>핀 Row:39 Col:41 */
+    /*0x5DE8, GB2312 Code:*/ 0xBEDE, /*==>앵 Row:30 Col:62 */
+    /*0x5DE9, GB2312 Code:*/ 0xB9AE, /*==>문 Row:25 Col:14 */
+    /*0x5DEB, GB2312 Code:*/ 0xCED7, /*==>愧 Row:46 Col:55 */
+    /*0x5DEE, GB2312 Code:*/ 0xB2EE, /*==>뀌 Row:18 Col:78 */
+    /*0x5DEF, GB2312 Code:*/ 0xDBCF, /*==>胚 Row:59 Col:47 */
+    /*0x5DF1, GB2312 Code:*/ 0xBCBA, /*==>성 Row:28 Col:26 */
+    /*0x5DF2, GB2312 Code:*/ 0xD2D1, /*==>綠 Row:50 Col:49 */
+    /*0x5DF3, GB2312 Code:*/ 0xCBC8, /*==>槪 Row:43 Col:40 */
+    /*0x5DF4, GB2312 Code:*/ 0xB0CD, /*==>것 Row:16 Col:45 */
+    /*0x5DF7, GB2312 Code:*/ 0xCFEF, /*==>眷 Row:47 Col:79 */
+    /*0x5DFD, GB2312 Code:*/ 0xD9E3, /*==>巫 Row:57 Col:67 */
+    /*0x5DFE, GB2312 Code:*/ 0xBDED, /*==>쏀 Row:29 Col:77 */
+    /*0x5E01, GB2312 Code:*/ 0xB1D2, /*==>귑 Row:17 Col:50 */
+    /*0x5E02, GB2312 Code:*/ 0xCAD0, /*==>懇 Row:42 Col:48 */
+    /*0x5E03, GB2312 Code:*/ 0xB2BC, /*==>꼈 Row:18 Col:28 */
+    /*0x5E05, GB2312 Code:*/ 0xCBA7, /*==>剛 Row:43 Col:07 */
+    /*0x5E06, GB2312 Code:*/ 0xB7AB, /*==>략 Row:23 Col:11 */
+    /*0x5E08, GB2312 Code:*/ 0xCAA6, /*==>可 Row:42 Col:06 */
+    /*0x5E0C, GB2312 Code:*/ 0xCFA3, /*==>句 Row:47 Col:03 */
+    /*0x5E0F, GB2312 Code:*/ 0xE0F8, /*==>星 Row:64 Col:88 */
+    /*0x5E10, GB2312 Code:*/ 0xD5CA, /*==>琅 Row:53 Col:42 */
+    /*0x5E11, GB2312 Code:*/ 0xE0FB, /*==>珹 Row:64 Col:91 */
+    /*0x5E14, GB2312 Code:*/ 0xE0FA, /*==>猩 Row:64 Col:90 */
+    /*0x5E15, GB2312 Code:*/ 0xC5C1, /*==>탕 Row:37 Col:33 */
+    /*0x5E16, GB2312 Code:*/ 0xCCFB, /*==>悸 Row:44 Col:91 */
+    /*0x5E18, GB2312 Code:*/ 0xC1B1, /*==>졈 Row:33 Col:17 */
+    /*0x5E19, GB2312 Code:*/ 0xE0F9, /*==>晟 Row:64 Col:89 */
+    /*0x5E1A, GB2312 Code:*/ 0xD6E3, /*==>鹿 Row:54 Col:67 */
+    /*0x5E1B, GB2312 Code:*/ 0xB2AF, /*==>껏 Row:18 Col:15 */
+    /*0x5E1C, GB2312 Code:*/ 0xD6C4, /*==>靈 Row:54 Col:36 */
+    /*0x5E1D, GB2312 Code:*/ 0xB5DB, /*==>뒨 Row:21 Col:59 */
+    /*0x5E26, GB2312 Code:*/ 0xB4F8, /*==>던 Row:20 Col:88 */
+    /*0x5E27, GB2312 Code:*/ 0xD6A1, /*==>煉 Row:54 Col:01 */
+    /*0x5E2D, GB2312 Code:*/ 0xCFAF, /*==>柩 Row:47 Col:15 */
+    /*0x5E2E, GB2312 Code:*/ 0xB0EF, /*==>곤 Row:16 Col:79 */
+    /*0x5E31, GB2312 Code:*/ 0xE0FC, /*==>盛 Row:64 Col:92 */
+    /*0x5E37, GB2312 Code:*/ 0xE1A1, /*==>聖 Row:65 Col:01 */
+    /*0x5E38, GB2312 Code:*/ 0xB3A3, /*==>끽 Row:19 Col:03 */
+    /*0x5E3B, GB2312 Code:*/ 0xE0FD, /*==>省 Row:64 Col:93 */
+    /*0x5E3C, GB2312 Code:*/ 0xE0FE, /*==>筬 Row:64 Col:94 */
+    /*0x5E3D, GB2312 Code:*/ 0xC3B1, /*==>챰 Row:35 Col:17 */
+    /*0x5E42, GB2312 Code:*/ 0xC3DD, /*==>쵸 Row:35 Col:61 */
+    /*0x5E44, GB2312 Code:*/ 0xE1A2, /*==>聲 Row:65 Col:02 */
+    /*0x5E45, GB2312 Code:*/ 0xB7F9, /*==>류 Row:23 Col:89 */
+    /*0x5E4C, GB2312 Code:*/ 0xBBCF, /*==>뾰 Row:27 Col:47 */
+    /*0x5E54, GB2312 Code:*/ 0xE1A3, /*==>腥 Row:65 Col:03 */
+    /*0x5E55, GB2312 Code:*/ 0xC4BB, /*==>캥 Row:36 Col:27 */
+    /*0x5E5B, GB2312 Code:*/ 0xE1A4, /*==>誠 Row:65 Col:04 */
+    /*0x5E5E, GB2312 Code:*/ 0xE1A5, /*==>醒 Row:65 Col:05 */
+    /*0x5E61, GB2312 Code:*/ 0xE1A6, /*==>世 Row:65 Col:06 */
+    /*0x5E62, GB2312 Code:*/ 0xB4B1, /*==>눙 Row:20 Col:17 */
+    /*0x5E72, GB2312 Code:*/ 0xB8C9, /*==>맴 Row:24 Col:41 */
+    /*0x5E73, GB2312 Code:*/ 0xC6BD, /*==>틱 Row:38 Col:29 */
+    /*0x5E74, GB2312 Code:*/ 0xC4EA, /*==>쾨 Row:36 Col:74 */
+    /*0x5E76, GB2312 Code:*/ 0xB2A2, /*==>깻 Row:18 Col:02 */
+    /*0x5E78, GB2312 Code:*/ 0xD0D2, /*==>妗 Row:48 Col:50 */
+    /*0x5E7A, GB2312 Code:*/ 0xE7DB, /*==>穢 Row:71 Col:59 */
+    /*0x5E7B, GB2312 Code:*/ 0xBBC3, /*==>뼙 Row:27 Col:35 */
+    /*0x5E7C, GB2312 Code:*/ 0xD3D7, /*==>當 Row:51 Col:55 */
+    /*0x5E7D, GB2312 Code:*/ 0xD3C4, /*==>聃 Row:51 Col:36 */
+    /*0x5E7F, GB2312 Code:*/ 0xB9E3, /*==>밤 Row:25 Col:67 */
+    /*0x5E80, GB2312 Code:*/ 0xE2CF, /*==>首 Row:66 Col:47 */
+    /*0x5E84, GB2312 Code:*/ 0xD7AF, /*==>鏤 Row:55 Col:15 */
+    /*0x5E86, GB2312 Code:*/ 0xC7EC, /*==>헤 Row:39 Col:76 */
+    /*0x5E87, GB2312 Code:*/ 0xB1D3, /*==>귓 Row:17 Col:51 */
+    /*0x5E8A, GB2312 Code:*/ 0xB4B2, /*==>눠 Row:20 Col:18 */
+    /*0x5E8B, GB2312 Code:*/ 0xE2D1, /*==>鬚 Row:66 Col:49 */
+    /*0x5E8F, GB2312 Code:*/ 0xD0F2, /*==>埼 Row:48 Col:82 */
+    /*0x5E90, GB2312 Code:*/ 0xC2AE, /*==>짰 Row:34 Col:14 */
+    /*0x5E91, GB2312 Code:*/ 0xE2D0, /*==>髓 Row:66 Col:48 */
+    /*0x5E93, GB2312 Code:*/ 0xBFE2, /*==>욋 Row:31 Col:66 */
+    /*0x5E94, GB2312 Code:*/ 0xD3A6, /*==>壇 Row:51 Col:06 */
+    /*0x5E95, GB2312 Code:*/ 0xB5D7, /*==>뒀 Row:21 Col:55 */
+    /*0x5E96, GB2312 Code:*/ 0xE2D2, /*==>叔 Row:66 Col:50 */
+    /*0x5E97, GB2312 Code:*/ 0xB5EA, /*==>듦 Row:21 Col:74 */
+    /*0x5E99, GB2312 Code:*/ 0xC3ED, /*==>췰 Row:35 Col:77 */
+    /*0x5E9A, GB2312 Code:*/ 0xB8FD, /*==>뫙 Row:24 Col:93 */
+    /*0x5E9C, GB2312 Code:*/ 0xB8AE, /*==>리 Row:24 Col:14 */
+    /*0x5E9E, GB2312 Code:*/ 0xC5D3, /*==>텁 Row:37 Col:51 */
+    /*0x5E9F, GB2312 Code:*/ 0xB7CF, /*==>록 Row:23 Col:47 */
+    /*0x5EA0, GB2312 Code:*/ 0xE2D4, /*==>夙 Row:66 Col:52 */
+    /*0x5EA5, GB2312 Code:*/ 0xE2D3, /*==>塾 Row:66 Col:51 */
+    /*0x5EA6, GB2312 Code:*/ 0xB6C8, /*==>똑 Row:22 Col:40 */
+    /*0x5EA7, GB2312 Code:*/ 0xD7F9, /*==>林 Row:55 Col:89 */
+    /*0x5EAD, GB2312 Code:*/ 0xCDA5, /*==>磎 Row:45 Col:05 */
+    /*0x5EB3, GB2312 Code:*/ 0xE2D8, /*==>潚 Row:66 Col:56 */
+    /*0x5EB5, GB2312 Code:*/ 0xE2D6, /*==>宿 Row:66 Col:54 */
+    /*0x5EB6, GB2312 Code:*/ 0xCAFC, /*==>鑑 Row:42 Col:92 */
+    /*0x5EB7, GB2312 Code:*/ 0xBFB5, /*==>영 Row:31 Col:21 */
+    /*0x5EB8, GB2312 Code:*/ 0xD3B9, /*==>達 Row:51 Col:25 */
+    /*0x5EB9, GB2312 Code:*/ 0xE2D5, /*==>孰 Row:66 Col:53 */
+    /*0x5EBE, GB2312 Code:*/ 0xE2D7, /*==>淑 Row:66 Col:55 */
+    /*0x5EC9, GB2312 Code:*/ 0xC1AE, /*==>져 Row:33 Col:14 */
+    /*0x5ECA, GB2312 Code:*/ 0xC0C8, /*==>읜 Row:32 Col:40 */
+    /*0x5ED1, GB2312 Code:*/ 0xE2DB, /*==>璹 Row:66 Col:59 */
+    /*0x5ED2, GB2312 Code:*/ 0xE2DA, /*==>琡 Row:66 Col:58 */
+    /*0x5ED3, GB2312 Code:*/ 0xC0AA, /*==>윌 Row:32 Col:10 */
+    /*0x5ED6, GB2312 Code:*/ 0xC1CE, /*==>죔 Row:33 Col:46 */
+    /*0x5EDB, GB2312 Code:*/ 0xE2DC, /*==>肅 Row:66 Col:60 */
+    /*0x5EE8, GB2312 Code:*/ 0xE2DD, /*==>菽 Row:66 Col:61 */
+    /*0x5EEA, GB2312 Code:*/ 0xE2DE, /*==>巡 Row:66 Col:62 */
+    /*0x5EF4, GB2312 Code:*/ 0xDBC8, /*==>拜 Row:59 Col:40 */
+    /*0x5EF6, GB2312 Code:*/ 0xD1D3, /*==>儺 Row:49 Col:51 */
+    /*0x5EF7, GB2312 Code:*/ 0xCDA2, /*==>溪 Row:45 Col:02 */
+    /*0x5EFA, GB2312 Code:*/ 0xBDA8, /*==>쉔 Row:29 Col:08 */
+    /*0x5EFE, GB2312 Code:*/ 0xDEC3, /*==>伺 Row:62 Col:35 */
+    /*0x5EFF, GB2312 Code:*/ 0xD8A5, /*==>瑪 Row:56 Col:05 */
+    /*0x5F00, GB2312 Code:*/ 0xBFAA, /*==>역 Row:31 Col:10 */
+    /*0x5F01, GB2312 Code:*/ 0xDBCD, /*==>盃 Row:59 Col:45 */
+    /*0x5F02, GB2312 Code:*/ 0xD2EC, /*==>嫩 Row:50 Col:76 */
+    /*0x5F03, GB2312 Code:*/ 0xC6FA, /*==>폴 Row:38 Col:90 */
+    /*0x5F04, GB2312 Code:*/ 0xC5AA, /*==>큭 Row:37 Col:10 */
+    /*0x5F08, GB2312 Code:*/ 0xDEC4, /*==>似 Row:62 Col:36 */
+    /*0x5F0A, GB2312 Code:*/ 0xB1D7, /*==>그 Row:17 Col:55 */
+    /*0x5F0B, GB2312 Code:*/ 0xDFAE, /*==>撒 Row:63 Col:14 */
+    /*0x5F0F, GB2312 Code:*/ 0xCABD, /*==>駕 Row:42 Col:29 */
+    /*0x5F11, GB2312 Code:*/ 0xDFB1, /*==>薩 Row:63 Col:17 */
+    /*0x5F13, GB2312 Code:*/ 0xB9AD, /*==>묶 Row:25 Col:13 */
+    /*0x5F15, GB2312 Code:*/ 0xD2FD, /*==>多 Row:50 Col:93 */
+    /*0x5F17, GB2312 Code:*/ 0xB8A5, /*==>른 Row:24 Col:05 */
+    /*0x5F18, GB2312 Code:*/ 0xBAEB, /*==>븍 Row:26 Col:75 */
+    /*0x5F1B, GB2312 Code:*/ 0xB3DA, /*==>넬 Row:19 Col:58 */
+    /*0x5F1F, GB2312 Code:*/ 0xB5DC, /*==>뒬 Row:21 Col:60 */
+    /*0x5F20, GB2312 Code:*/ 0xD5C5, /*==>蠟 Row:53 Col:37 */
+    /*0x5F25, GB2312 Code:*/ 0xC3D6, /*==>최 Row:35 Col:54 */
+    /*0x5F26, GB2312 Code:*/ 0xCFD2, /*==>菊 Row:47 Col:50 */
+    /*0x5F27, GB2312 Code:*/ 0xBBA1, /*==>빨 Row:27 Col:01 */
+    /*0x5F29, GB2312 Code:*/ 0xE5F3, /*==>掩 Row:69 Col:83 */
+    /*0x5F2A, GB2312 Code:*/ 0xE5F2, /*==>奄 Row:69 Col:82 */
+    /*0x5F2D, GB2312 Code:*/ 0xE5F4, /*==>淹 Row:69 Col:84 */
+    /*0x5F2F, GB2312 Code:*/ 0xCDE4, /*==>琨 Row:45 Col:68 */
+    /*0x5F31, GB2312 Code:*/ 0xC8F5, /*==>흽 Row:40 Col:85 */
+    /*0x5F39, GB2312 Code:*/ 0xB5AF, /*==>뎐 Row:21 Col:15 */
+    /*0x5F3A, GB2312 Code:*/ 0xC7BF, /*==>퓻 Row:39 Col:31 */
+    /*0x5F3C, GB2312 Code:*/ 0xE5F6, /*==>業 Row:69 Col:86 */
+    /*0x5F40, GB2312 Code:*/ 0xECB0, /*==>李 Row:76 Col:16 */
+    /*0x5F50, GB2312 Code:*/ 0xE5E6, /*==>臆 Row:69 Col:70 */
+    /*0x5F52, GB2312 Code:*/ 0xB9E9, /*==>백 Row:25 Col:73 */
+    /*0x5F53, GB2312 Code:*/ 0xB5B1, /*==>뎠 Row:21 Col:17 */
+    /*0x5F55, GB2312 Code:*/ 0xC2BC, /*==>쩌 Row:34 Col:28 */
+    /*0x5F56, GB2312 Code:*/ 0xE5E8, /*==>堰 Row:69 Col:72 */
+    /*0x5F57, GB2312 Code:*/ 0xE5E7, /*==>偃 Row:69 Col:71 */
+    /*0x5F58, GB2312 Code:*/ 0xE5E9, /*==>彦 Row:69 Col:73 */
+    /*0x5F5D, GB2312 Code:*/ 0xD2CD, /*==>魯 Row:50 Col:45 */
+    /*0x5F61, GB2312 Code:*/ 0xE1EA, /*==>送 Row:65 Col:74 */
+    /*0x5F62, GB2312 Code:*/ 0xD0CE, /*==>近 Row:48 Col:46 */
+    /*0x5F64, GB2312 Code:*/ 0xCDAE, /*==>鷄 Row:45 Col:14 */
+    /*0x5F66, GB2312 Code:*/ 0xD1E5, /*==>珞 Row:49 Col:69 */
+    /*0x5F69, GB2312 Code:*/ 0xB2CA, /*==>꽈 Row:18 Col:42 */
+    /*0x5F6A, GB2312 Code:*/ 0xB1EB, /*==>깅 Row:17 Col:75 */
+    /*0x5F6C, GB2312 Code:*/ 0xB1F2, /*==>깔 Row:17 Col:82 */
+    /*0x5F6D, GB2312 Code:*/ 0xC5ED, /*==>톼 Row:37 Col:77 */
+    /*0x5F70, GB2312 Code:*/ 0xD5C3, /*==>拉 Row:53 Col:35 */
+    /*0x5F71, GB2312 Code:*/ 0xD3B0, /*==>緞 Row:51 Col:16 */
+    /*0x5F73, GB2312 Code:*/ 0xE1DC, /*==>速 Row:65 Col:60 */
+    /*0x5F77, GB2312 Code:*/ 0xE1DD, /*==>孫 Row:65 Col:61 */
+    /*0x5F79, GB2312 Code:*/ 0xD2DB, /*==>膿 Row:50 Col:59 */
+    /*0x5F7B, GB2312 Code:*/ 0xB3B9, /*==>낱 Row:19 Col:25 */
+    /*0x5F7C, GB2312 Code:*/ 0xB1CB, /*==>궤 Row:17 Col:43 */
+    /*0x5F80, GB2312 Code:*/ 0xCDF9, /*==>鞏 Row:45 Col:89 */
+    /*0x5F81, GB2312 Code:*/ 0xD5F7, /*==>瀝 Row:53 Col:87 */
+    /*0x5F82, GB2312 Code:*/ 0xE1DE, /*==>巽 Row:65 Col:62 */
+    /*0x5F84, GB2312 Code:*/ 0xBEB6, /*==>쓺 Row:30 Col:22 */
+    /*0x5F85, GB2312 Code:*/ 0xB4FD, /*==>덤 Row:20 Col:93 */
+    /*0x5F87, GB2312 Code:*/ 0xE1DF, /*==>損 Row:65 Col:63 */
+    /*0x5F88, GB2312 Code:*/ 0xBADC, /*==>붤 Row:26 Col:60 */
+    /*0x5F89, GB2312 Code:*/ 0xE1E0, /*==>蓀 Row:65 Col:64 */
+    /*0x5F8A, GB2312 Code:*/ 0xBBB2, /*==>뺘 Row:27 Col:18 */
+    /*0x5F8B, GB2312 Code:*/ 0xC2C9, /*==>쪼 Row:34 Col:41 */
+    /*0x5F8C, GB2312 Code:*/ 0xE1E1, /*==>遜 Row:65 Col:65 */
+    /*0x5F90, GB2312 Code:*/ 0xD0EC, /*==>其 Row:48 Col:76 */
+    /*0x5F92, GB2312 Code:*/ 0xCDBD, /*==>枯 Row:45 Col:29 */
+    /*0x5F95, GB2312 Code:*/ 0xE1E2, /*==>飡 Row:65 Col:66 */
+    /*0x5F97, GB2312 Code:*/ 0xB5C3, /*==>돤 Row:21 Col:35 */
+    /*0x5F98, GB2312 Code:*/ 0xC5C7, /*==>탭 Row:37 Col:39 */
+    /*0x5F99, GB2312 Code:*/ 0xE1E3, /*==>率 Row:65 Col:67 */
+    /*0x5F9C, GB2312 Code:*/ 0xE1E4, /*==>宋 Row:65 Col:68 */
+    /*0x5FA1, GB2312 Code:*/ 0xD3F9, /*==>徒 Row:51 Col:89 */
+    /*0x5FA8, GB2312 Code:*/ 0xE1E5, /*==>悚 Row:65 Col:69 */
+    /*0x5FAA, GB2312 Code:*/ 0xD1AD, /*==>琦 Row:49 Col:13 */
+    /*0x5FAD, GB2312 Code:*/ 0xE1E6, /*==>松 Row:65 Col:70 */
+    /*0x5FAE, GB2312 Code:*/ 0xCEA2, /*==>菓 Row:46 Col:02 */
+    /*0x5FB5, GB2312 Code:*/ 0xE1E7, /*==>淞 Row:65 Col:71 */
+    /*0x5FB7, GB2312 Code:*/ 0xB5C2, /*==>돠 Row:21 Col:34 */
+    /*0x5FBC, GB2312 Code:*/ 0xE1E8, /*==>訟 Row:65 Col:72 */
+    /*0x5FBD, GB2312 Code:*/ 0xBBD5, /*==>뿜 Row:27 Col:53 */
+    /*0x5FC3, GB2312 Code:*/ 0xD0C4, /*==>懃 Row:48 Col:36 */
+    /*0x5FC4, GB2312 Code:*/ 0xE2E0, /*==>循 Row:66 Col:64 */
+    /*0x5FC5, GB2312 Code:*/ 0xB1D8, /*==>극 Row:17 Col:56 */
+    /*0x5FC6, GB2312 Code:*/ 0xD2E4, /*==>壘 Row:50 Col:68 */
+    /*0x5FC9, GB2312 Code:*/ 0xE2E1, /*==>恂 Row:66 Col:65 */
+    /*0x5FCC, GB2312 Code:*/ 0xBCC9, /*==>셤 Row:28 Col:41 */
+    /*0x5FCD, GB2312 Code:*/ 0xC8CC, /*==>훠 Row:40 Col:44 */
+    /*0x5FCF, GB2312 Code:*/ 0xE2E3, /*==>栒 Row:66 Col:67 */
+    /*0x5FD0, GB2312 Code:*/ 0xECFE, /*==>卄 Row:76 Col:94 */
+    /*0x5FD1, GB2312 Code:*/ 0xECFD, /*==>入 Row:76 Col:93 */
+    /*0x5FD2, GB2312 Code:*/ 0xDFAF, /*==>殺 Row:63 Col:15 */
+    /*0x5FD6, GB2312 Code:*/ 0xE2E2, /*==>旬 Row:66 Col:66 */
+    /*0x5FD7, GB2312 Code:*/ 0xD6BE, /*==>羚 Row:54 Col:30 */
+    /*0x5FD8, GB2312 Code:*/ 0xCDFC, /*==>戈 Row:45 Col:92 */
+    /*0x5FD9, GB2312 Code:*/ 0xC3A6, /*==>챈 Row:35 Col:06 */
+    /*0x5FDD, GB2312 Code:*/ 0xE3C3, /*==>柴 Row:67 Col:35 */
+    /*0x5FE0, GB2312 Code:*/ 0xD6D2, /*==>瀘 Row:54 Col:50 */
+    /*0x5FE1, GB2312 Code:*/ 0xE2E7, /*==>洵 Row:66 Col:71 */
+    /*0x5FE4, GB2312 Code:*/ 0xE2E8, /*==>淳 Row:66 Col:72 */
+    /*0x5FE7, GB2312 Code:*/ 0xD3C7, /*==>覃 Row:51 Col:39 */
+    /*0x5FEA, GB2312 Code:*/ 0xE2EC, /*==>筍 Row:66 Col:76 */
+    /*0x5FEB, GB2312 Code:*/ 0xBFEC, /*==>우 Row:31 Col:76 */
+    /*0x5FED, GB2312 Code:*/ 0xE2ED, /*==>純 Row:66 Col:77 */
+    /*0x5FEE, GB2312 Code:*/ 0xE2E5, /*==>橓 Row:66 Col:69 */
+    /*0x5FF1, GB2312 Code:*/ 0xB3C0, /*==>냅 Row:19 Col:32 */
+    /*0x5FF5, GB2312 Code:*/ 0xC4EE, /*==>쿡 Row:36 Col:78 */
+    /*0x5FF8, GB2312 Code:*/ 0xE2EE, /*==>脣 Row:66 Col:78 */
+    /*0x5FFB, GB2312 Code:*/ 0xD0C3, /*==>勤 Row:48 Col:35 */
+    /*0x5FFD, GB2312 Code:*/ 0xBAF6, /*==>빔 Row:26 Col:86 */
+    /*0x5FFE, GB2312 Code:*/ 0xE2E9, /*==>珣 Row:66 Col:73 */
+    /*0x5FFF, GB2312 Code:*/ 0xB7DE, /*==>룁 Row:23 Col:62 */
+    /*0x6000, GB2312 Code:*/ 0xBBB3, /*==>뺙 Row:27 Col:19 */
+    /*0x6001, GB2312 Code:*/ 0xCCAC, /*==>檄 Row:44 Col:12 */
+    /*0x6002, GB2312 Code:*/ 0xCBCB, /*==>皆 Row:43 Col:43 */
+    /*0x6003, GB2312 Code:*/ 0xE2E4, /*==>楯 Row:66 Col:68 */
+    /*0x6004, GB2312 Code:*/ 0xE2E6, /*==>殉 Row:66 Col:70 */
+    /*0x6005, GB2312 Code:*/ 0xE2EA, /*==>盾 Row:66 Col:74 */
+    /*0x6006, GB2312 Code:*/ 0xE2EB, /*==>瞬 Row:66 Col:75 */
+    /*0x600A, GB2312 Code:*/ 0xE2F7, /*==>順 Row:66 Col:87 */
+    /*0x600D, GB2312 Code:*/ 0xE2F4, /*==>諄 Row:66 Col:84 */
+    /*0x600E, GB2312 Code:*/ 0xD4F5, /*==>等 Row:52 Col:85 */
+    /*0x600F, GB2312 Code:*/ 0xE2F3, /*==>詢 Row:66 Col:83 */
+    /*0x6012, GB2312 Code:*/ 0xC5AD, /*==>큼 Row:37 Col:13 */
+    /*0x6014, GB2312 Code:*/ 0xD5FA, /*==>靂 Row:53 Col:90 */
+    /*0x6015, GB2312 Code:*/ 0xC5C2, /*==>태 Row:37 Col:34 */
+    /*0x6016, GB2312 Code:*/ 0xB2C0, /*==>꼭 Row:18 Col:32 */
+    /*0x6019, GB2312 Code:*/ 0xE2EF, /*==>舜 Row:66 Col:79 */
+    /*0x601B, GB2312 Code:*/ 0xE2F2, /*==>蕣 Row:66 Col:82 */
+    /*0x601C, GB2312 Code:*/ 0xC1AF, /*==>젼 Row:33 Col:15 */
+    /*0x601D, GB2312 Code:*/ 0xCBBC, /*==>鋼 Row:43 Col:28 */
+    /*0x6020, GB2312 Code:*/ 0xB5A1, /*==>덧 Row:21 Col:01 */
+    /*0x6021, GB2312 Code:*/ 0xE2F9, /*==>戌 Row:66 Col:89 */
+    /*0x6025, GB2312 Code:*/ 0xBCB1, /*==>선 Row:28 Col:17 */
+    /*0x6026, GB2312 Code:*/ 0xE2F1, /*==>蓴 Row:66 Col:81 */
+    /*0x6027, GB2312 Code:*/ 0xD0D4, /*==>昑 Row:48 Col:52 */
+    /*0x6028, GB2312 Code:*/ 0xD4B9, /*==>瀆 Row:52 Col:25 */
+    /*0x6029, GB2312 Code:*/ 0xE2F5, /*==>醇 Row:66 Col:85 */
+    /*0x602A, GB2312 Code:*/ 0xB9D6, /*==>밍 Row:25 Col:54 */
+    /*0x602B, GB2312 Code:*/ 0xE2F6, /*==>錞 Row:66 Col:86 */
+    /*0x602F, GB2312 Code:*/ 0xC7D3, /*==>핥 Row:39 Col:51 */
+    /*0x6035, GB2312 Code:*/ 0xE2F0, /*==>荀 Row:66 Col:80 */
+    /*0x603B, GB2312 Code:*/ 0xD7DC, /*==>悧 Row:55 Col:60 */
+    /*0x603C, GB2312 Code:*/ 0xEDA1, /*==>立 Row:77 Col:01 */
+    /*0x603F, GB2312 Code:*/ 0xE2F8, /*==>馴 Row:66 Col:88 */
+    /*0x6041, GB2312 Code:*/ 0xEDA5, /*==>剩 Row:77 Col:05 */
+    /*0x6042, GB2312 Code:*/ 0xE2FE, /*==>崧 Row:66 Col:94 */
+    /*0x6043, GB2312 Code:*/ 0xCAD1, /*==>揀 Row:42 Col:49 */
+    /*0x604B, GB2312 Code:*/ 0xC1B5, /*==>졔 Row:33 Col:21 */
+    /*0x604D, GB2312 Code:*/ 0xBBD0, /*==>뿅 Row:27 Col:48 */
+    /*0x6050, GB2312 Code:*/ 0xBFD6, /*==>왜 Row:31 Col:54 */
+    /*0x6052, GB2312 Code:*/ 0xBAE3, /*==>뷩 Row:26 Col:67 */
+    /*0x6055, GB2312 Code:*/ 0xCBA1, /*==>匣 Row:43 Col:01 */
+    /*0x6059, GB2312 Code:*/ 0xEDA6, /*==>孕 Row:77 Col:06 */
+    /*0x605A, GB2312 Code:*/ 0xEDA3, /*==>粒 Row:77 Col:03 */
+    /*0x605D, GB2312 Code:*/ 0xEDA2, /*==>笠 Row:77 Col:02 */
+    /*0x6062, GB2312 Code:*/ 0xBBD6, /*==>뿟 Row:27 Col:54 */
+    /*0x6063, GB2312 Code:*/ 0xEDA7, /*==>芿 Row:77 Col:07 */
+    /*0x6064, GB2312 Code:*/ 0xD0F4, /*==>奇 Row:48 Col:84 */
+    /*0x6067, GB2312 Code:*/ 0xEDA4, /*==>仍 Row:77 Col:04 */
+    /*0x6068, GB2312 Code:*/ 0xBADE, /*==>붸 Row:26 Col:62 */
+    /*0x6069, GB2312 Code:*/ 0xB6F7, /*==>람 Row:22 Col:87 */
+    /*0x606A, GB2312 Code:*/ 0xE3A1, /*==>嵩 Row:67 Col:01 */
+    /*0x606B, GB2312 Code:*/ 0xB6B2, /*==>떤 Row:22 Col:18 */
+    /*0x606C, GB2312 Code:*/ 0xCCF1, /*==>頃 Row:44 Col:81 */
+    /*0x606D, GB2312 Code:*/ 0xB9A7, /*==>묜 Row:25 Col:07 */
+    /*0x606F, GB2312 Code:*/ 0xCFA2, /*==>口 Row:47 Col:02 */
+    /*0x6070, GB2312 Code:*/ 0xC7A1, /*==>퐈 Row:39 Col:01 */
+    /*0x6073, GB2312 Code:*/ 0xBFD2, /*==>왑 Row:31 Col:50 */
+    /*0x6076, GB2312 Code:*/ 0xB6F1, /*==>띳 Row:22 Col:81 */
+    /*0x6078, GB2312 Code:*/ 0xE2FA, /*==>術 Row:66 Col:90 */
+    /*0x6079, GB2312 Code:*/ 0xE2FB, /*==>述 Row:66 Col:91 */
+    /*0x607A, GB2312 Code:*/ 0xE2FD, /*==>崇 Row:66 Col:93 */
+    /*0x607B, GB2312 Code:*/ 0xE2FC, /*==>鉥 Row:66 Col:92 */
+    /*0x607C, GB2312 Code:*/ 0xC4D5, /*==>켭 Row:36 Col:53 */
+    /*0x607D, GB2312 Code:*/ 0xE3A2, /*==>瑟 Row:67 Col:02 */
+    /*0x607F, GB2312 Code:*/ 0xD3C1, /*==>潭 Row:51 Col:33 */
+    /*0x6083, GB2312 Code:*/ 0xE3A7, /*==>習 Row:67 Col:07 */
+    /*0x6084, GB2312 Code:*/ 0xC7C4, /*==>픔 Row:39 Col:36 */
+    /*0x6089, GB2312 Code:*/ 0xCFA4, /*==>咎 Row:47 Col:04 */
+    /*0x608C, GB2312 Code:*/ 0xE3A9, /*==>襲 Row:67 Col:09 */
+    /*0x608D, GB2312 Code:*/ 0xBAB7, /*==>볜 Row:26 Col:23 */
+    /*0x6092, GB2312 Code:*/ 0xE3A8, /*==>褶 Row:67 Col:08 */
+    /*0x6094, GB2312 Code:*/ 0xBBDA, /*==>쁘 Row:27 Col:58 */
+    /*0x6096, GB2312 Code:*/ 0xE3A3, /*==>膝 Row:67 Col:03 */
+    /*0x609A, GB2312 Code:*/ 0xE3A4, /*==>蝨 Row:67 Col:04 */
+    /*0x609B, GB2312 Code:*/ 0xE3AA, /*==>丞 Row:67 Col:10 */
+    /*0x609D, GB2312 Code:*/ 0xE3A6, /*==>拾 Row:67 Col:06 */
+    /*0x609F, GB2312 Code:*/ 0xCEF2, /*==>較 Row:46 Col:82 */
+    /*0x60A0, GB2312 Code:*/ 0xD3C6, /*==>蕁 Row:51 Col:38 */
+    /*0x60A3, GB2312 Code:*/ 0xBBBC, /*==>뻤 Row:27 Col:28 */
+    /*0x60A6, GB2312 Code:*/ 0xD4C3, /*==>惇 Row:52 Col:35 */
+    /*0x60A8, GB2312 Code:*/ 0xC4FA, /*==>퀭 Row:36 Col:90 */
+    /*0x60AB, GB2312 Code:*/ 0xEDA8, /*==>仔 Row:77 Col:08 */
+    /*0x60AC, GB2312 Code:*/ 0xD0FC, /*==>技 Row:48 Col:92 */
+    /*0x60AD, GB2312 Code:*/ 0xE3A5, /*==>濕 Row:67 Col:05 */
+    /*0x60AF, GB2312 Code:*/ 0xC3F5, /*==>츔 Row:35 Col:85 */
+    /*0x60B1, GB2312 Code:*/ 0xE3AD, /*==>勝 Row:67 Col:13 */
+    /*0x60B2, GB2312 Code:*/ 0xB1AF, /*==>굄 Row:17 Col:15 */
+    /*0x60B4, GB2312 Code:*/ 0xE3B2, /*==>蠅 Row:67 Col:18 */
+    /*0x60B8, GB2312 Code:*/ 0xBCC2, /*==>셋 Row:28 Col:34 */
+    /*0x60BB, GB2312 Code:*/ 0xE3AC, /*==>僧 Row:67 Col:12 */
+    /*0x60BC, GB2312 Code:*/ 0xB5BF, /*==>동 Row:21 Col:31 */
+    /*0x60C5, GB2312 Code:*/ 0xC7E9, /*==>헙 Row:39 Col:73 */
+    /*0x60C6, GB2312 Code:*/ 0xE3B0, /*==>昇 Row:67 Col:16 */
+    /*0x60CA, GB2312 Code:*/ 0xBEAA, /*==>쑵 Row:30 Col:10 */
+    /*0x60CB, GB2312 Code:*/ 0xCDEF, /*==>工 Row:45 Col:79 */
+    /*0x60D1, GB2312 Code:*/ 0xBBF3, /*==>상 Row:27 Col:83 */
+    /*0x60D5, GB2312 Code:*/ 0xCCE8, /*==>經 Row:44 Col:72 */
+    /*0x60D8, GB2312 Code:*/ 0xE3AF, /*==>承 Row:67 Col:15 */
+    /*0x60DA, GB2312 Code:*/ 0xE3B1, /*==>繩 Row:67 Col:17 */
+    /*0x60DC, GB2312 Code:*/ 0xCFA7, /*==>垢 Row:47 Col:07 */
+    /*0x60DD, GB2312 Code:*/ 0xE3AE, /*==>升 Row:67 Col:14 */
+    /*0x60DF, GB2312 Code:*/ 0xCEA9, /*==>廓 Row:46 Col:09 */
+    /*0x60E0, GB2312 Code:*/ 0xBBDD, /*==>쁨 Row:27 Col:61 */
+    /*0x60E6, GB2312 Code:*/ 0xB5EB, /*==>듬 Row:21 Col:75 */
+    /*0x60E7, GB2312 Code:*/ 0xBEE5, /*==>얍 Row:30 Col:69 */
+    /*0x60E8, GB2312 Code:*/ 0xB2D2, /*==>꾀 Row:18 Col:50 */
+    /*0x60E9, GB2312 Code:*/ 0xB3CD, /*==>넌 Row:19 Col:45 */
+    /*0x60EB, GB2312 Code:*/ 0xB1B9, /*==>국 Row:17 Col:25 */
+    /*0x60EC, GB2312 Code:*/ 0xE3AB, /*==>乘 Row:67 Col:11 */
+    /*0x60ED, GB2312 Code:*/ 0xB2D1, /*==>꽹 Row:18 Col:49 */
+    /*0x60EE, GB2312 Code:*/ 0xB5AC, /*==>뎄 Row:21 Col:12 */
+    /*0x60EF, GB2312 Code:*/ 0xB9DF, /*==>발 Row:25 Col:63 */
+    /*0x60F0, GB2312 Code:*/ 0xB6E8, /*==>띈 Row:22 Col:72 */
+    /*0x60F3, GB2312 Code:*/ 0xCFEB, /*==>拳 Row:47 Col:75 */
+    /*0x60F4, GB2312 Code:*/ 0xE3B7, /*==>始 Row:67 Col:23 */
+    /*0x60F6, GB2312 Code:*/ 0xBBCC, /*==>뽑 Row:27 Col:44 */
+    /*0x60F9, GB2312 Code:*/ 0xC8C7, /*==>훌 Row:40 Col:39 */
+    /*0x60FA, GB2312 Code:*/ 0xD0CA, /*==>芹 Row:48 Col:42 */
+    /*0x6100, GB2312 Code:*/ 0xE3B8, /*==>媤 Row:67 Col:24 */
+    /*0x6101, GB2312 Code:*/ 0xB3EE, /*==>놀 Row:19 Col:78 */
+    /*0x6106, GB2312 Code:*/ 0xEDA9, /*==>刺 Row:77 Col:09 */
+    /*0x6108, GB2312 Code:*/ 0xD3FA, /*==>悼 Row:51 Col:90 */
+    /*0x6109, GB2312 Code:*/ 0xD3E4, /*==>擡 Row:51 Col:68 */
+    /*0x610D, GB2312 Code:*/ 0xEDAA, /*==>咨 Row:77 Col:10 */
+    /*0x610E, GB2312 Code:*/ 0xE3B9, /*==>尸 Row:67 Col:25 */
+    /*0x610F, GB2312 Code:*/ 0xD2E2, /*==>雷 Row:50 Col:66 */
+    /*0x6115, GB2312 Code:*/ 0xE3B5, /*==>匙 Row:67 Col:21 */
+    /*0x611A, GB2312 Code:*/ 0xD3DE, /*==>大 Row:51 Col:62 */
+    /*0x611F, GB2312 Code:*/ 0xB8D0, /*==>먁 Row:24 Col:48 */
+    /*0x6120, GB2312 Code:*/ 0xE3B3, /*==>陞 Row:67 Col:19 */
+    /*0x6123, GB2312 Code:*/ 0xE3B6, /*==>嘶 Row:67 Col:22 */
+    /*0x6124, GB2312 Code:*/ 0xB7DF, /*==>룃 Row:23 Col:63 */
+    /*0x6126, GB2312 Code:*/ 0xE3B4, /*==>侍 Row:67 Col:20 */
+    /*0x6127, GB2312 Code:*/ 0xC0A2, /*==>웬 Row:32 Col:02 */
+    /*0x612B, GB2312 Code:*/ 0xE3BA, /*==>屎 Row:67 Col:26 */
+    /*0x613F, GB2312 Code:*/ 0xD4B8, /*==>毒 Row:52 Col:24 */
+    /*0x6148, GB2312 Code:*/ 0xB4C8, /*==>늣 Row:20 Col:40 */
+    /*0x614A, GB2312 Code:*/ 0xE3BB, /*==>屍 Row:67 Col:27 */
+    /*0x614C, GB2312 Code:*/ 0xBBC5, /*==>뼜 Row:27 Col:37 */
+    /*0x614E, GB2312 Code:*/ 0xC9F7, /*==>� Row:41 Col:87 */
+    /*0x6151, GB2312 Code:*/ 0xC9E5, /*==>� Row:41 Col:69 */
+    /*0x6155, GB2312 Code:*/ 0xC4BD, /*==>캭 Row:36 Col:29 */
+    /*0x615D, GB2312 Code:*/ 0xEDAB, /*==>姉 Row:77 Col:11 */
+    /*0x6162, GB2312 Code:*/ 0xC2FD, /*==>찹 Row:34 Col:93 */
+    /*0x6167, GB2312 Code:*/ 0xBBDB, /*==>쁜 Row:27 Col:59 */
+    /*0x6168, GB2312 Code:*/ 0xBFAE, /*==>엶 Row:31 Col:14 */
+    /*0x6170, GB2312 Code:*/ 0xCEBF, /*==>恝 Row:46 Col:31 */
+    /*0x6175, GB2312 Code:*/ 0xE3BC, /*==>市 Row:67 Col:28 */
+    /*0x6177, GB2312 Code:*/ 0xBFB6, /*==>옅 Row:31 Col:22 */
+    /*0x618B, GB2312 Code:*/ 0xB1EF, /*==>깍 Row:17 Col:79 */
+    /*0x618E, GB2312 Code:*/ 0xD4F7, /*==>謄 Row:52 Col:87 */
+    /*0x6194, GB2312 Code:*/ 0xE3BE, /*==>恃 Row:67 Col:30 */
+    /*0x619D, GB2312 Code:*/ 0xEDAD, /*==>子 Row:77 Col:13 */
+    /*0x61A7, GB2312 Code:*/ 0xE3BF, /*==>施 Row:67 Col:31 */
+    /*0x61A8, GB2312 Code:*/ 0xBAA9, /*==>벱 Row:26 Col:09 */
+    /*0x61A9, GB2312 Code:*/ 0xEDAC, /*==>姿 Row:77 Col:12 */
+    /*0x61AC, GB2312 Code:*/ 0xE3BD, /*==>弑 Row:67 Col:29 */
+    /*0x61B7, GB2312 Code:*/ 0xE3C0, /*==>是 Row:67 Col:32 */
+    /*0x61BE, GB2312 Code:*/ 0xBAB6, /*==>볘 Row:26 Col:22 */
+    /*0x61C2, GB2312 Code:*/ 0xB6AE, /*==>땠 Row:22 Col:14 */
+    /*0x61C8, GB2312 Code:*/ 0xD0B8, /*==>龜 Row:48 Col:24 */
+    /*0x61CA, GB2312 Code:*/ 0xB0C3, /*==>걘 Row:16 Col:35 */
+    /*0x61CB, GB2312 Code:*/ 0xEDAE, /*==>字 Row:77 Col:14 */
+    /*0x61D1, GB2312 Code:*/ 0xEDAF, /*==>孜 Row:77 Col:15 */
+    /*0x61D2, GB2312 Code:*/ 0xC0C1, /*==>읒 Row:32 Col:33 */
+    /*0x61D4, GB2312 Code:*/ 0xE3C1, /*==>時 Row:67 Col:33 */
+    /*0x61E6, GB2312 Code:*/ 0xC5B3, /*==>킬 Row:37 Col:19 */
+    /*0x61F5, GB2312 Code:*/ 0xE3C2, /*==>枾 Row:67 Col:34 */
+    /*0x61FF, GB2312 Code:*/ 0xDCB2, /*==>兵 Row:60 Col:18 */
+    /*0x6206, GB2312 Code:*/ 0xEDB0, /*==>恣 Row:77 Col:16 */
+    /*0x6208, GB2312 Code:*/ 0xB8EA, /*==>멸 Row:24 Col:74 */
+    /*0x620A, GB2312 Code:*/ 0xCEEC, /*==>矯 Row:46 Col:76 */
+    /*0x620B, GB2312 Code:*/ 0xEAA7, /*==>亐 Row:74 Col:07 */
+    /*0x620C, GB2312 Code:*/ 0xD0E7, /*==>兢 Row:48 Col:71 */
+    /*0x620D, GB2312 Code:*/ 0xCAF9, /*==>瞰 Row:42 Col:89 */
+    /*0x620E, GB2312 Code:*/ 0xC8D6, /*==>휘 Row:40 Col:54 */
+    /*0x620F, GB2312 Code:*/ 0xCFB7, /*==>狗 Row:47 Col:23 */
+    /*0x6210, GB2312 Code:*/ 0xB3C9, /*==>냥 Row:19 Col:41 */
+    /*0x6211, GB2312 Code:*/ 0xCED2, /*==>乖 Row:46 Col:50 */
+    /*0x6212, GB2312 Code:*/ 0xBDE4, /*==>썰 Row:29 Col:68 */
+    /*0x6215, GB2312 Code:*/ 0xE3DE, /*==>飾 Row:67 Col:62 */
+    /*0x6216, GB2312 Code:*/ 0xBBF2, /*==>샀 Row:27 Col:82 */
+    /*0x6217, GB2312 Code:*/ 0xEAA8, /*==>熊 Row:74 Col:08 */
+    /*0x6218, GB2312 Code:*/ 0xD5BD, /*==>濫 Row:53 Col:29 */
+    /*0x621A, GB2312 Code:*/ 0xC6DD, /*==>펀 Row:38 Col:61 */
+    /*0x621B, GB2312 Code:*/ 0xEAA9, /*==>雄 Row:74 Col:09 */
+    /*0x621F, GB2312 Code:*/ 0xEAAA, /*==>元 Row:74 Col:10 */
+    /*0x6221, GB2312 Code:*/ 0xEAAC, /*==>員 Row:74 Col:12 */
+    /*0x6222, GB2312 Code:*/ 0xEAAB, /*==>原 Row:74 Col:11 */
+    /*0x6224, GB2312 Code:*/ 0xEAAE, /*==>園 Row:74 Col:14 */
+    /*0x6225, GB2312 Code:*/ 0xEAAD, /*==>圓 Row:74 Col:13 */
+    /*0x622A, GB2312 Code:*/ 0xBDD8, /*==>쌔 Row:29 Col:56 */
+    /*0x622C, GB2312 Code:*/ 0xEAAF, /*==>垣 Row:74 Col:15 */
+    /*0x622E, GB2312 Code:*/ 0xC2BE, /*==>쩐 Row:34 Col:30 */
+    /*0x6233, GB2312 Code:*/ 0xB4C1, /*==>늑 Row:20 Col:33 */
+    /*0x6234, GB2312 Code:*/ 0xB4F7, /*==>덖 Row:20 Col:87 */
+    /*0x6237, GB2312 Code:*/ 0xBBA7, /*==>빵 Row:27 Col:07 */
+    /*0x623D, GB2312 Code:*/ 0xECE6, /*==>靷 Row:76 Col:70 */
+    /*0x623E, GB2312 Code:*/ 0xECE5, /*==>靭 Row:76 Col:69 */
+    /*0x623F, GB2312 Code:*/ 0xB7BF, /*==>렛 Row:23 Col:31 */
+    /*0x6240, GB2312 Code:*/ 0xCBF9, /*==>杰 Row:43 Col:89 */
+    /*0x6241, GB2312 Code:*/ 0xB1E2, /*==>기 Row:17 Col:66 */
+    /*0x6243, GB2312 Code:*/ 0xECE7, /*==>鱗 Row:76 Col:71 */
+    /*0x6247, GB2312 Code:*/ 0xC9C8, /*==>� Row:41 Col:40 */
+    /*0x6248, GB2312 Code:*/ 0xECE8, /*==>麟 Row:76 Col:72 */
+    /*0x6249, GB2312 Code:*/ 0xECE9, /*==>一 Row:76 Col:73 */
+    /*0x624B, GB2312 Code:*/ 0xCAD6, /*==>癎 Row:42 Col:54 */
+    /*0x624C, GB2312 Code:*/ 0xDED0, /*==>寫 Row:62 Col:48 */
+    /*0x624D, GB2312 Code:*/ 0xB2C5, /*==>꼽 Row:18 Col:37 */
+    /*0x624E, GB2312 Code:*/ 0xD4FA, /*==>喇 Row:52 Col:90 */
+    /*0x6251, GB2312 Code:*/ 0xC6CB, /*==>팝 Row:38 Col:43 */
+    /*0x6252, GB2312 Code:*/ 0xB0C7, /*==>건 Row:16 Col:39 */
+    /*0x6253, GB2312 Code:*/ 0xB4F2, /*==>댔 Row:20 Col:82 */
+    /*0x6254, GB2312 Code:*/ 0xC8D3, /*==>휀 Row:40 Col:51 */
+    /*0x6258, GB2312 Code:*/ 0xCDD0, /*==>辜 Row:45 Col:48 */
+    /*0x625B, GB2312 Code:*/ 0xBFB8, /*==>옇 Row:31 Col:24 */
+    /*0x6263, GB2312 Code:*/ 0xBFDB, /*==>왱 Row:31 Col:59 */
+    /*0x6266, GB2312 Code:*/ 0xC7A4, /*==>푄 Row:39 Col:04 */
+    /*0x6267, GB2312 Code:*/ 0xD6B4, /*==>獵 Row:54 Col:20 */
+    /*0x6269, GB2312 Code:*/ 0xC0A9, /*==>윈 Row:32 Col:09 */
+    /*0x626A, GB2312 Code:*/ 0xDED1, /*==>寺 Row:62 Col:49 */
+    /*0x626B, GB2312 Code:*/ 0xC9A8, /*==>� Row:41 Col:08 */
+    /*0x626C, GB2312 Code:*/ 0xD1EF, /*==>爛 Row:49 Col:79 */
+    /*0x626D, GB2312 Code:*/ 0xC5A4, /*==>큉 Row:37 Col:04 */
+    /*0x626E, GB2312 Code:*/ 0xB0E7, /*==>곁 Row:16 Col:71 */
+    /*0x626F, GB2312 Code:*/ 0xB3B6, /*==>낭 Row:19 Col:22 */
+    /*0x6270, GB2312 Code:*/ 0xC8C5, /*==>훅 Row:40 Col:37 */
+    /*0x6273, GB2312 Code:*/ 0xB0E2, /*==>겸 Row:16 Col:66 */
+    /*0x6276, GB2312 Code:*/ 0xB7F6, /*==>륌 Row:23 Col:86 */
+    /*0x6279, GB2312 Code:*/ 0xC5FA, /*==>툽 Row:37 Col:90 */
+    /*0x627C, GB2312 Code:*/ 0xB6F3, /*==>라 Row:22 Col:83 */
+    /*0x627E, GB2312 Code:*/ 0xD5D2, /*==>冷 Row:53 Col:50 */
+    /*0x627F, GB2312 Code:*/ 0xB3D0, /*==>넓 Row:19 Col:48 */
+    /*0x6280, GB2312 Code:*/ 0xBCBC, /*==>세 Row:28 Col:28 */
+    /*0x6284, GB2312 Code:*/ 0xB3AD, /*==>난 Row:19 Col:13 */
+    /*0x6289, GB2312 Code:*/ 0xBEF1, /*==>얹 Row:30 Col:81 */
+    /*0x628A, GB2312 Code:*/ 0xB0D1, /*==>겉 Row:16 Col:49 */
+    /*0x6291, GB2312 Code:*/ 0xD2D6, /*==>壟 Row:50 Col:54 */
+    /*0x6292, GB2312 Code:*/ 0xCAE3, /*==>曷 Row:42 Col:67 */
+    /*0x6293, GB2312 Code:*/ 0xD7A5, /*==>婁 Row:55 Col:05 */
+    /*0x6295, GB2312 Code:*/ 0xCDB6, /*==>尻 Row:45 Col:22 */
+    /*0x6296, GB2312 Code:*/ 0xB6B6, /*==>떰 Row:22 Col:22 */
+    /*0x6297, GB2312 Code:*/ 0xBFB9, /*==>예 Row:31 Col:25 */
+    /*0x6298, GB2312 Code:*/ 0xD5DB, /*==>粮 Row:53 Col:59 */
+    /*0x629A, GB2312 Code:*/ 0xB8A7, /*==>름 Row:24 Col:07 */
+    /*0x629B, GB2312 Code:*/ 0xC5D7, /*==>테 Row:37 Col:55 */
+    /*0x629F, GB2312 Code:*/ 0xDED2, /*==>射 Row:62 Col:50 */
+    /*0x62A0, GB2312 Code:*/ 0xBFD9, /*==>왬 Row:31 Col:57 */
+    /*0x62A1, GB2312 Code:*/ 0xC2D5, /*==>쫬 Row:34 Col:53 */
+    /*0x62A2, GB2312 Code:*/ 0xC7C0, /*==>퓽 Row:39 Col:32 */
+    /*0x62A4, GB2312 Code:*/ 0xBBA4, /*==>빱 Row:27 Col:04 */
+    /*0x62A5, GB2312 Code:*/ 0xB1A8, /*==>괩 Row:17 Col:08 */
+    /*0x62A8, GB2312 Code:*/ 0xC5EA, /*==>톳 Row:37 Col:74 */
+    /*0x62AB, GB2312 Code:*/ 0xC5FB, /*==>툿 Row:37 Col:91 */
+    /*0x62AC, GB2312 Code:*/ 0xCCA7, /*==>偈 Row:44 Col:07 */
+    /*0x62B1, GB2312 Code:*/ 0xB1A7, /*==>괠 Row:17 Col:07 */
+    /*0x62B5, GB2312 Code:*/ 0xB5D6, /*==>둬 Row:21 Col:54 */
+    /*0x62B9, GB2312 Code:*/ 0xC4A8, /*==>칩 Row:36 Col:08 */
+    /*0x62BB, GB2312 Code:*/ 0xDED3, /*==>巳 Row:62 Col:51 */
+    /*0x62BC, GB2312 Code:*/ 0xD1BA, /*==>紀 Row:49 Col:26 */
+    /*0x62BD, GB2312 Code:*/ 0xB3E9, /*==>녜 Row:19 Col:73 */
+    /*0x62BF, GB2312 Code:*/ 0xC3F2, /*==>츄 Row:35 Col:82 */
+    /*0x62C2, GB2312 Code:*/ 0xB7F7, /*==>륏 Row:23 Col:87 */
+    /*0x62C4, GB2312 Code:*/ 0xD6F4, /*==>雷 Row:54 Col:84 */
+    /*0x62C5, GB2312 Code:*/ 0xB5A3, /*==>덫 Row:21 Col:03 */
+    /*0x62C6, GB2312 Code:*/ 0xB2F0, /*==>뀔 Row:18 Col:80 */
+    /*0x62C7, GB2312 Code:*/ 0xC4B4, /*==>캑 Row:36 Col:20 */
+    /*0x62C8, GB2312 Code:*/ 0xC4E9, /*==>쾡 Row:36 Col:73 */
+    /*0x62C9, GB2312 Code:*/ 0xC0AD, /*==>윗 Row:32 Col:13 */
+    /*0x62CA, GB2312 Code:*/ 0xDED4, /*==>師 Row:62 Col:52 */
+    /*0x62CC, GB2312 Code:*/ 0xB0E8, /*==>계 Row:16 Col:72 */
+    /*0x62CD, GB2312 Code:*/ 0xC5C4, /*==>탠 Row:37 Col:36 */
+    /*0x62CE, GB2312 Code:*/ 0xC1E0, /*==>줘 Row:33 Col:64 */
+    /*0x62D0, GB2312 Code:*/ 0xB9D5, /*==>밌 Row:25 Col:53 */
+    /*0x62D2, GB2312 Code:*/ 0xBEDC, /*==>앳 Row:30 Col:60 */
+    /*0x62D3, GB2312 Code:*/ 0xCDD8, /*==>曲 Row:45 Col:56 */
+    /*0x62D4, GB2312 Code:*/ 0xB0CE, /*==>겄 Row:16 Col:46 */
+    /*0x62D6, GB2312 Code:*/ 0xCDCF, /*==>賈 Row:45 Col:47 */
+    /*0x62D7, GB2312 Code:*/ 0xDED6, /*==>思 Row:62 Col:54 */
+    /*0x62D8, GB2312 Code:*/ 0xBED0, /*==>압 Row:30 Col:48 */
+    /*0x62D9, GB2312 Code:*/ 0xD7BE, /*==>類 Row:55 Col:30 */
+    /*0x62DA, GB2312 Code:*/ 0xDED5, /*==>徙 Row:62 Col:53 */
+    /*0x62DB, GB2312 Code:*/ 0xD5D0, /*==>徠 Row:53 Col:48 */
+    /*0x62DC, GB2312 Code:*/ 0xB0DD, /*==>격 Row:16 Col:61 */
+    /*0x62DF, GB2312 Code:*/ 0xC4E2, /*==>콰 Row:36 Col:66 */
+    /*0x62E2, GB2312 Code:*/ 0xC2A3, /*==>짙 Row:34 Col:03 */
+    /*0x62E3, GB2312 Code:*/ 0xBCF0, /*==>숀 Row:28 Col:80 */
+    /*0x62E5, GB2312 Code:*/ 0xD3B5, /*==>撻 Row:51 Col:21 */
+    /*0x62E6, GB2312 Code:*/ 0xC0B9, /*==>윽 Row:32 Col:25 */
+    /*0x62E7, GB2312 Code:*/ 0xC5A1, /*==>큄 Row:37 Col:01 */
+    /*0x62E8, GB2312 Code:*/ 0xB2A6, /*==>꺅 Row:18 Col:06 */
+    /*0x62E9, GB2312 Code:*/ 0xD4F1, /*==>嶝 Row:52 Col:81 */
+    /*0x62EC, GB2312 Code:*/ 0xC0A8, /*==>윅 Row:32 Col:08 */
+    /*0x62ED, GB2312 Code:*/ 0xCAC3, /*==>殼 Row:42 Col:35 */
+    /*0x62EE, GB2312 Code:*/ 0xDED7, /*==>捨 Row:62 Col:55 */
+    /*0x62EF, GB2312 Code:*/ 0xD5FC, /*==>戀 Row:53 Col:92 */
+    /*0x62F1, GB2312 Code:*/ 0xB9B0, /*==>물 Row:25 Col:16 */
+    /*0x62F3, GB2312 Code:*/ 0xC8AD, /*==>화 Row:40 Col:13 */
+    /*0x62F4, GB2312 Code:*/ 0xCBA9, /*==>姜 Row:43 Col:09 */
+    /*0x62F6, GB2312 Code:*/ 0xDED9, /*==>斯 Row:62 Col:57 */
+    /*0x62F7, GB2312 Code:*/ 0xBFBD, /*==>옙 Row:31 Col:29 */
+    /*0x62FC, GB2312 Code:*/ 0xC6B4, /*==>틈 Row:38 Col:20 */
+    /*0x62FD, GB2312 Code:*/ 0xD7A7, /*==>樓 Row:55 Col:07 */
+    /*0x62FE, GB2312 Code:*/ 0xCAB0, /*==>歌 Row:42 Col:16 */
+    /*0x62FF, GB2312 Code:*/ 0xC4C3, /*==>컬 Row:36 Col:35 */
+    /*0x6301, GB2312 Code:*/ 0xB3D6, /*==>넣 Row:19 Col:54 */
+    /*0x6302, GB2312 Code:*/ 0xB9D2, /*==>밈 Row:25 Col:50 */
+    /*0x6307, GB2312 Code:*/ 0xD6B8, /*==>寧 Row:54 Col:24 */
+    /*0x6308, GB2312 Code:*/ 0xEAFC, /*==>流 Row:74 Col:92 */
+    /*0x6309, GB2312 Code:*/ 0xB0B4, /*==>객 Row:16 Col:20 */
+    /*0x630E, GB2312 Code:*/ 0xBFE6, /*==>욘 Row:31 Col:70 */
+    /*0x6311, GB2312 Code:*/ 0xCCF4, /*==>鯨 Row:44 Col:84 */
+    /*0x6316, GB2312 Code:*/ 0xCDDA, /*==>穀 Row:45 Col:58 */
+    /*0x631A, GB2312 Code:*/ 0xD6BF, /*==>翎 Row:54 Col:31 */
+    /*0x631B, GB2312 Code:*/ 0xC2CE, /*==>쫍 Row:34 Col:46 */
+    /*0x631D, GB2312 Code:*/ 0xCECE, /*==>鑛 Row:46 Col:46 */
+    /*0x631E, GB2312 Code:*/ 0xCCA2, /*==>鈐 Row:44 Col:02 */
+    /*0x631F, GB2312 Code:*/ 0xD0AE, /*==>規 Row:48 Col:14 */
+    /*0x6320, GB2312 Code:*/ 0xC4D3, /*==>켤 Row:36 Col:51 */
+    /*0x6321, GB2312 Code:*/ 0xB5B2, /*==>뎡 Row:21 Col:18 */
+    /*0x6322, GB2312 Code:*/ 0xDED8, /*==>斜 Row:62 Col:56 */
+    /*0x6323, GB2312 Code:*/ 0xD5F5, /*==>曆 Row:53 Col:85 */
+    /*0x6324, GB2312 Code:*/ 0xBCB7, /*==>섭 Row:28 Col:23 */
+    /*0x6325, GB2312 Code:*/ 0xBBD3, /*==>뿐 Row:27 Col:51 */
+    /*0x6328, GB2312 Code:*/ 0xB0A4, /*==>갇 Row:16 Col:04 */
+    /*0x632A, GB2312 Code:*/ 0xC5B2, /*==>킨 Row:37 Col:18 */
+    /*0x632B, GB2312 Code:*/ 0xB4EC, /*==>댁 Row:20 Col:76 */
+    /*0x632F, GB2312 Code:*/ 0xD5F1, /*==>驪 Row:53 Col:81 */
+    /*0x6332, GB2312 Code:*/ 0xEAFD, /*==>游 Row:74 Col:93 */
+    /*0x6339, GB2312 Code:*/ 0xDEDA, /*==>柶 Row:62 Col:58 */
+    /*0x633A, GB2312 Code:*/ 0xCDA6, /*==>稽 Row:45 Col:06 */
+    /*0x633D, GB2312 Code:*/ 0xCDEC, /*==>共 Row:45 Col:76 */
+    /*0x6342, GB2312 Code:*/ 0xCEE6, /*==>攪 Row:46 Col:70 */
+    /*0x6343, GB2312 Code:*/ 0xDEDC, /*==>梭 Row:62 Col:60 */
+    /*0x6345, GB2312 Code:*/ 0xCDB1, /*==>告 Row:45 Col:17 */
+    /*0x6346, GB2312 Code:*/ 0xC0A6, /*==>웽 Row:32 Col:06 */
+    /*0x6349, GB2312 Code:*/ 0xD7BD, /*==>謬 Row:55 Col:29 */
+    /*0x634B, GB2312 Code:*/ 0xDEDB, /*==>査 Row:62 Col:59 */
+    /*0x634C, GB2312 Code:*/ 0xB0C6, /*==>걱 Row:16 Col:38 */
+    /*0x634D, GB2312 Code:*/ 0xBAB4, /*==>병 Row:26 Col:20 */
+    /*0x634E, GB2312 Code:*/ 0xC9D3, /*==>� Row:41 Col:51 */
+    /*0x634F, GB2312 Code:*/ 0xC4F3, /*==>쿳 Row:36 Col:83 */
+    /*0x6350, GB2312 Code:*/ 0xBEE8, /*==>얕 Row:30 Col:72 */
+    /*0x6355, GB2312 Code:*/ 0xB2B6, /*==>껫 Row:18 Col:22 */
+    /*0x635E, GB2312 Code:*/ 0xC0CC, /*==>이 Row:32 Col:44 */
+    /*0x635F, GB2312 Code:*/ 0xCBF0, /*==>愆 Row:43 Col:80 */
+    /*0x6361, GB2312 Code:*/ 0xBCF1, /*==>숄 Row:28 Col:81 */
+    /*0x6362, GB2312 Code:*/ 0xBBBB, /*==>뻣 Row:27 Col:27 */
+    /*0x6363, GB2312 Code:*/ 0xB5B7, /*==>돈 Row:21 Col:23 */
+    /*0x6367, GB2312 Code:*/ 0xC5F5, /*==>투 Row:37 Col:85 */
+    /*0x6369, GB2312 Code:*/ 0xDEE6, /*==>祠 Row:62 Col:70 */
+    /*0x636D, GB2312 Code:*/ 0xDEE3, /*==>砂 Row:62 Col:67 */
+    /*0x636E, GB2312 Code:*/ 0xBEDD, /*==>앴 Row:30 Col:61 */
+    /*0x6371, GB2312 Code:*/ 0xDEDF, /*==>泗 Row:62 Col:63 */
+    /*0x6376, GB2312 Code:*/ 0xB4B7, /*==>뉠 Row:20 Col:23 */
+    /*0x6377, GB2312 Code:*/ 0xBDDD, /*==>쌥 Row:29 Col:61 */
+    /*0x637A, GB2312 Code:*/ 0xDEE0, /*==>渣 Row:62 Col:64 */
+    /*0x637B, GB2312 Code:*/ 0xC4ED, /*==>쿠 Row:36 Col:77 */
+    /*0x6380, GB2312 Code:*/ 0xCFC6, /*==>軀 Row:47 Col:38 */
+    /*0x6382, GB2312 Code:*/ 0xB5E0, /*==>듀 Row:21 Col:64 */
+    /*0x6387, GB2312 Code:*/ 0xB6DE, /*==>뜅 Row:22 Col:62 */
+    /*0x6388, GB2312 Code:*/ 0xCADA, /*==>竿 Row:42 Col:58 */
+    /*0x6389, GB2312 Code:*/ 0xB5F4, /*==>딜 Row:21 Col:84 */
+    /*0x638A, GB2312 Code:*/ 0xDEE5, /*==>祀 Row:62 Col:69 */
+    /*0x638C, GB2312 Code:*/ 0xD5C6, /*==>廊 Row:53 Col:38 */
+    /*0x638E, GB2312 Code:*/ 0xDEE1, /*==>瀉 Row:62 Col:65 */
+    /*0x638F, GB2312 Code:*/ 0xCCCD, /*==>勁 Row:44 Col:45 */
+    /*0x6390, GB2312 Code:*/ 0xC6FE, /*==>퐁 Row:38 Col:94 */
+    /*0x6392, GB2312 Code:*/ 0xC5C5, /*==>탤 Row:37 Col:37 */
+    /*0x6396, GB2312 Code:*/ 0xD2B4, /*==>年 Row:50 Col:20 */
+    /*0x6398, GB2312 Code:*/ 0xBEF2, /*==>얻 Row:30 Col:82 */
+    /*0x63A0, GB2312 Code:*/ 0xC2D3, /*==>쫙 Row:34 Col:51 */
+    /*0x63A2, GB2312 Code:*/ 0xCCBD, /*==>決 Row:44 Col:29 */
+    /*0x63A3, GB2312 Code:*/ 0xB3B8, /*==>낯 Row:19 Col:24 */
+    /*0x63A5, GB2312 Code:*/ 0xBDD3, /*==>쌈 Row:29 Col:51 */
+    /*0x63A7, GB2312 Code:*/ 0xBFD8, /*==>왠 Row:31 Col:56 */
+    /*0x63A8, GB2312 Code:*/ 0xCDC6, /*==>股 Row:45 Col:38 */
+    /*0x63A9, GB2312 Code:*/ 0xD1DA, /*==>拿 Row:49 Col:58 */
+    /*0x63AA, GB2312 Code:*/ 0xB4EB, /*==>대 Row:20 Col:75 */
+    /*0x63AC, GB2312 Code:*/ 0xDEE4, /*==>社 Row:62 Col:68 */
+    /*0x63AD, GB2312 Code:*/ 0xDEDD, /*==>死 Row:62 Col:61 */
+    /*0x63AE, GB2312 Code:*/ 0xDEE7, /*==>私 Row:62 Col:71 */
+    /*0x63B0, GB2312 Code:*/ 0xEAFE, /*==>溜 Row:74 Col:94 */
+    /*0x63B3, GB2312 Code:*/ 0xC2B0, /*==>째 Row:34 Col:16 */
+    /*0x63B4, GB2312 Code:*/ 0xDEE2, /*==>獅 Row:62 Col:66 */
+    /*0x63B7, GB2312 Code:*/ 0xD6C0, /*==>聆 Row:54 Col:32 */
+    /*0x63B8, GB2312 Code:*/ 0xB5A7, /*==>덴 Row:21 Col:07 */
+    /*0x63BA, GB2312 Code:*/ 0xB2F4, /*==>끄 Row:18 Col:84 */
+    /*0x63BC, GB2312 Code:*/ 0xDEE8, /*==>篩 Row:62 Col:72 */
+    /*0x63BE, GB2312 Code:*/ 0xDEF2, /*==>詞 Row:62 Col:82 */
+    /*0x63C4, GB2312 Code:*/ 0xDEED, /*==>莎 Row:62 Col:77 */
+    /*0x63C6, GB2312 Code:*/ 0xDEF1, /*==>詐 Row:62 Col:81 */
+    /*0x63C9, GB2312 Code:*/ 0xC8E0, /*==>휸 Row:40 Col:64 */
+    /*0x63CD, GB2312 Code:*/ 0xD7E1, /*==>狸 Row:55 Col:65 */
+    /*0x63CE, GB2312 Code:*/ 0xDEEF, /*==>蛇 Row:62 Col:79 */
+    /*0x63CF, GB2312 Code:*/ 0xC3E8, /*==>췄 Row:35 Col:72 */
+    /*0x63D0, GB2312 Code:*/ 0xCCE1, /*==>瓊 Row:44 Col:65 */
+    /*0x63D2, GB2312 Code:*/ 0xB2E5, /*==>꿨 Row:18 Col:69 */
+    /*0x63D6, GB2312 Code:*/ 0xD2BE, /*==>勞 Row:50 Col:30 */
+    /*0x63DE, GB2312 Code:*/ 0xDEEE, /*==>蓑 Row:62 Col:78 */
+    /*0x63E0, GB2312 Code:*/ 0xDEEB, /*==>肆 Row:62 Col:75 */
+    /*0x63E1, GB2312 Code:*/ 0xCED5, /*==>壞 Row:46 Col:53 */
+    /*0x63E3, GB2312 Code:*/ 0xB4A7, /*==>뇻 Row:20 Col:07 */
+    /*0x63E9, GB2312 Code:*/ 0xBFAB, /*==>엮 Row:31 Col:11 */
+    /*0x63EA, GB2312 Code:*/ 0xBEBE, /*==>씨 Row:30 Col:30 */
+    /*0x63ED, GB2312 Code:*/ 0xBDD2, /*==>쌀 Row:29 Col:50 */
+    /*0x63F2, GB2312 Code:*/ 0xDEE9, /*==>紗 Row:62 Col:73 */
+    /*0x63F4, GB2312 Code:*/ 0xD4AE, /*==>賭 Row:52 Col:14 */
+    /*0x63F6, GB2312 Code:*/ 0xDEDE, /*==>沙 Row:62 Col:62 */
+    /*0x63F8, GB2312 Code:*/ 0xDEEA, /*==>絲 Row:62 Col:74 */
+    /*0x63FD, GB2312 Code:*/ 0xC0BF, /*==>읏 Row:32 Col:31 */
+    /*0x63FF, GB2312 Code:*/ 0xDEEC, /*==>舍 Row:62 Col:76 */
+    /*0x6400, GB2312 Code:*/ 0xB2F3, /*==>뀨 Row:18 Col:83 */
+    /*0x6401, GB2312 Code:*/ 0xB8E9, /*==>면 Row:24 Col:73 */
+    /*0x6402, GB2312 Code:*/ 0xC2A7, /*==>짠 Row:34 Col:07 */
+    /*0x6405, GB2312 Code:*/ 0xBDC1, /*==>슷 Row:29 Col:33 */
+    /*0x640B, GB2312 Code:*/ 0xDEF5, /*==>赦 Row:62 Col:85 */
+    /*0x640C, GB2312 Code:*/ 0xDEF8, /*==>飼 Row:62 Col:88 */
+    /*0x640F, GB2312 Code:*/ 0xB2AB, /*==>껀 Row:18 Col:11 */
+    /*0x6410, GB2312 Code:*/ 0xB4A4, /*==>뇬 Row:20 Col:04 */
+    /*0x6413, GB2312 Code:*/ 0xB4EA, /*==>닿 Row:20 Col:74 */
+    /*0x6414, GB2312 Code:*/ 0xC9A6, /*==>� Row:41 Col:06 */
+    /*0x641B, GB2312 Code:*/ 0xDEF6, /*==>辭 Row:62 Col:86 */
+    /*0x641C, GB2312 Code:*/ 0xCBD1, /*==>鎧 Row:43 Col:49 */
+    /*0x641E, GB2312 Code:*/ 0xB8E3, /*==>멥 Row:24 Col:67 */
+    /*0x6420, GB2312 Code:*/ 0xDEF7, /*==>邪 Row:62 Col:87 */
+    /*0x6421, GB2312 Code:*/ 0xDEFA, /*==>麝 Row:62 Col:90 */
+    /*0x6426, GB2312 Code:*/ 0xDEF9, /*==>駟 Row:62 Col:89 */
+    /*0x642A, GB2312 Code:*/ 0xCCC2, /*==>兼 Row:44 Col:34 */
+    /*0x642C, GB2312 Code:*/ 0xB0E1, /*==>결 Row:16 Col:65 */
+    /*0x642D, GB2312 Code:*/ 0xB4EE, /*==>댈 Row:20 Col:78 */
+    /*0x6434, GB2312 Code:*/ 0xE5BA, /*==>佯 Row:69 Col:26 */
+    /*0x643A, GB2312 Code:*/ 0xD0AF, /*==>赳 Row:48 Col:15 */
+    /*0x643D, GB2312 Code:*/ 0xB2EB, /*==>뀀 Row:18 Col:75 */
+    /*0x643F, GB2312 Code:*/ 0xEBA1, /*==>濡 Row:75 Col:01 */
+    /*0x6441, GB2312 Code:*/ 0xDEF4, /*==>賜 Row:62 Col:84 */
+    /*0x6444, GB2312 Code:*/ 0xC9E3, /*==>� Row:41 Col:67 */
+    /*0x6445, GB2312 Code:*/ 0xDEF3, /*==>謝 Row:62 Col:83 */
+    /*0x6446, GB2312 Code:*/ 0xB0DA, /*==>겠 Row:16 Col:58 */
+    /*0x6447, GB2312 Code:*/ 0xD2A1, /*==>納 Row:50 Col:01 */
+    /*0x6448, GB2312 Code:*/ 0xB1F7, /*==>깠 Row:17 Col:87 */
+    /*0x644A, GB2312 Code:*/ 0xCCAF, /*==>覡 Row:44 Col:15 */
+    /*0x6452, GB2312 Code:*/ 0xDEF0, /*==>裟 Row:62 Col:80 */
+    /*0x6454, GB2312 Code:*/ 0xCBA4, /*==>胛 Row:43 Col:04 */
+    /*0x6458, GB2312 Code:*/ 0xD5AA, /*==>落 Row:53 Col:10 */
+    /*0x645E, GB2312 Code:*/ 0xDEFB, /*==>削 Row:62 Col:91 */
+    /*0x6467, GB2312 Code:*/ 0xB4DD, /*==>닫 Row:20 Col:61 */
+    /*0x6469, GB2312 Code:*/ 0xC4A6, /*==>칡 Row:36 Col:06 */
+    /*0x646D, GB2312 Code:*/ 0xDEFD, /*==>朔 Row:62 Col:93 */
+    /*0x6478, GB2312 Code:*/ 0xC3FE, /*==>층 Row:35 Col:94 */
+    /*0x6479, GB2312 Code:*/ 0xC4A1, /*==>치 Row:36 Col:01 */
+    /*0x647A, GB2312 Code:*/ 0xDFA1, /*==>傘 Row:63 Col:01 */
+    /*0x6482, GB2312 Code:*/ 0xC1CC, /*==>죈 Row:33 Col:44 */
+    /*0x6484, GB2312 Code:*/ 0xDEFC, /*==>數 Row:62 Col:92 */
+    /*0x6485, GB2312 Code:*/ 0xBEEF, /*==>억 Row:30 Col:79 */
+    /*0x6487, GB2312 Code:*/ 0xC6B2, /*==>틀 Row:38 Col:18 */
+    /*0x6491, GB2312 Code:*/ 0xB3C5, /*==>냑 Row:19 Col:37 */
+    /*0x6492, GB2312 Code:*/ 0xC8F6, /*==>힁 Row:40 Col:86 */
+    /*0x6495, GB2312 Code:*/ 0xCBBA, /*==>襁 Row:43 Col:26 */
+    /*0x6496, GB2312 Code:*/ 0xDEFE, /*==>索 Row:62 Col:94 */
+    /*0x6499, GB2312 Code:*/ 0xDFA4, /*==>散 Row:63 Col:04 */
+    /*0x649E, GB2312 Code:*/ 0xD7B2, /*==>旒 Row:55 Col:18 */
+    /*0x64A4, GB2312 Code:*/ 0xB3B7, /*==>낮 Row:19 Col:23 */
+    /*0x64A9, GB2312 Code:*/ 0xC1C3, /*==>좍 Row:33 Col:35 */
+    /*0x64AC, GB2312 Code:*/ 0xC7CB, /*==>핌 Row:39 Col:43 */
+    /*0x64AD, GB2312 Code:*/ 0xB2A5, /*==>꺄 Row:18 Col:05 */
+    /*0x64AE, GB2312 Code:*/ 0xB4E9, /*==>닻 Row:20 Col:73 */
+    /*0x64B0, GB2312 Code:*/ 0xD7AB, /*==>累 Row:55 Col:11 */
+    /*0x64B5, GB2312 Code:*/ 0xC4EC, /*==>쿄 Row:36 Col:76 */
+    /*0x64B7, GB2312 Code:*/ 0xDFA2, /*==>刪 Row:63 Col:02 */
+    /*0x64B8, GB2312 Code:*/ 0xDFA3, /*==>山 Row:63 Col:03 */
+    /*0x64BA, GB2312 Code:*/ 0xDFA5, /*==>汕 Row:63 Col:05 */
+    /*0x64BC, GB2312 Code:*/ 0xBAB3, /*==>볐 Row:26 Col:19 */
+    /*0x64C0, GB2312 Code:*/ 0xDFA6, /*==>珊 Row:63 Col:06 */
+    /*0x64C2, GB2312 Code:*/ 0xC0DE, /*==>잗 Row:32 Col:62 */
+    /*0x64C5, GB2312 Code:*/ 0xC9C3, /*==>� Row:41 Col:35 */
+    /*0x64CD, GB2312 Code:*/ 0xB2D9, /*==>꾸 Row:18 Col:57 */
+    /*0x64CE, GB2312 Code:*/ 0xC7E6, /*==>헐 Row:39 Col:70 */
+    /*0x64D0, GB2312 Code:*/ 0xDFA7, /*==>産 Row:63 Col:07 */
+    /*0x64D2, GB2312 Code:*/ 0xC7DC, /*==>햄 Row:39 Col:60 */
+    /*0x64D7, GB2312 Code:*/ 0xDFA8, /*==>疝 Row:63 Col:08 */
+    /*0x64D8, GB2312 Code:*/ 0xEBA2, /*==>猶 Row:75 Col:02 */
+    /*0x64DE, GB2312 Code:*/ 0xCBD3, /*==>喀 Row:43 Col:51 */
+    /*0x64E2, GB2312 Code:*/ 0xDFAA, /*==>蒜 Row:63 Col:10 */
+    /*0x64E4, GB2312 Code:*/ 0xDFA9, /*==>算 Row:63 Col:09 */
+    /*0x64E6, GB2312 Code:*/ 0xB2C1, /*==>꼰 Row:18 Col:33 */
+    /*0x6500, GB2312 Code:*/ 0xC5CA, /*==>탱 Row:37 Col:42 */
+    /*0x6509, GB2312 Code:*/ 0xDFAB, /*==>酸 Row:63 Col:11 */
+    /*0x6512, GB2312 Code:*/ 0xD4DC, /*==>胴 Row:52 Col:60 */
+    /*0x6518, GB2312 Code:*/ 0xC8C1, /*==>횰 Row:40 Col:33 */
+    /*0x6525, GB2312 Code:*/ 0xDFAC, /*==>霰 Row:63 Col:12 */
+    /*0x652B, GB2312 Code:*/ 0xBEF0, /*==>언 Row:30 Col:80 */
+    /*0x652E, GB2312 Code:*/ 0xDFAD, /*==>乷 Row:63 Col:13 */
+    /*0x652F, GB2312 Code:*/ 0xD6A7, /*==>連 Row:54 Col:07 */
+    /*0x6534, GB2312 Code:*/ 0xEAB7, /*==>洹 Row:74 Col:23 */
+    /*0x6535, GB2312 Code:*/ 0xEBB6, /*==>遺 Row:75 Col:22 */
+    /*0x6536, GB2312 Code:*/ 0xCAD5, /*==>澗 Row:42 Col:53 */
+    /*0x6538, GB2312 Code:*/ 0xD8FC, /*==>面 Row:56 Col:92 */
+    /*0x6539, GB2312 Code:*/ 0xB8C4, /*==>맣 Row:24 Col:36 */
+    /*0x653B, GB2312 Code:*/ 0xB9A5, /*==>묑 Row:25 Col:05 */
+    /*0x653E, GB2312 Code:*/ 0xB7C5, /*==>렴 Row:23 Col:37 */
+    /*0x653F, GB2312 Code:*/ 0xD5FE, /*==>漣 Row:53 Col:94 */
+    /*0x6545, GB2312 Code:*/ 0xB9CA, /*==>믐 Row:25 Col:42 */
+    /*0x6548, GB2312 Code:*/ 0xD0A7, /*==>槻 Row:48 Col:07 */
+    /*0x6549, GB2312 Code:*/ 0xF4CD, /*==>澈 Row:84 Col:45 */
+    /*0x654C, GB2312 Code:*/ 0xB5D0, /*==>둔 Row:21 Col:48 */
+    /*0x654F, GB2312 Code:*/ 0xC3F4, /*==>츌 Row:35 Col:84 */
+    /*0x6551, GB2312 Code:*/ 0xBEC8, /*==>안 Row:30 Col:40 */
+    /*0x6555, GB2312 Code:*/ 0xEBB7, /*==>酉 Row:75 Col:23 */
+    /*0x6556, GB2312 Code:*/ 0xB0BD, /*==>갹 Row:16 Col:29 */
+    /*0x6559, GB2312 Code:*/ 0xBDCC, /*==>싱 Row:29 Col:44 */
+    /*0x655B, GB2312 Code:*/ 0xC1B2, /*==>졉 Row:33 Col:18 */
+    /*0x655D, GB2312 Code:*/ 0xB1D6, /*==>귤 Row:17 Col:54 */
+    /*0x655E, GB2312 Code:*/ 0xB3A8, /*==>낏 Row:19 Col:08 */
+    /*0x6562, GB2312 Code:*/ 0xB8D2, /*==>먕 Row:24 Col:50 */
+    /*0x6563, GB2312 Code:*/ 0xC9A2, /*==>� Row:41 Col:02 */
+    /*0x6566, GB2312 Code:*/ 0xB6D8, /*==>뛔 Row:22 Col:56 */
+    /*0x656B, GB2312 Code:*/ 0xEBB8, /*==>釉 Row:75 Col:24 */
+    /*0x656C, GB2312 Code:*/ 0xBEB4, /*==>쓴 Row:30 Col:20 */
+    /*0x6570, GB2312 Code:*/ 0xCAFD, /*==>鑒 Row:42 Col:93 */
+    /*0x6572, GB2312 Code:*/ 0xC7C3, /*==>플 Row:39 Col:35 */
+    /*0x6574, GB2312 Code:*/ 0xD5FB, /*==>憐 Row:53 Col:91 */
+    /*0x6577, GB2312 Code:*/ 0xB7F3, /*==>뤽 Row:23 Col:83 */
+    /*0x6587, GB2312 Code:*/ 0xCEC4, /*==>匡 Row:46 Col:36 */
+    /*0x658B, GB2312 Code:*/ 0xD5AB, /*==>諾 Row:53 Col:11 */
+    /*0x658C, GB2312 Code:*/ 0xB1F3, /*==>깖 Row:17 Col:83 */
+    /*0x6590, GB2312 Code:*/ 0xECB3, /*==>爾 Row:76 Col:19 */
+    /*0x6591, GB2312 Code:*/ 0xB0DF, /*==>견 Row:16 Col:63 */
+    /*0x6593, GB2312 Code:*/ 0xECB5, /*==>理 Row:76 Col:21 */
+    /*0x6597, GB2312 Code:*/ 0xB6B7, /*==>떱 Row:22 Col:23 */
+    /*0x6599, GB2312 Code:*/ 0xC1CF, /*==>죕 Row:33 Col:47 */
+    /*0x659B, GB2312 Code:*/ 0xF5FA, /*==>衝 Row:85 Col:90 */
+    /*0x659C, GB2312 Code:*/ 0xD0B1, /*==>閨 Row:48 Col:17 */
+    /*0x659F, GB2312 Code:*/ 0xD5E5, /*==>呂 Row:53 Col:69 */
+    /*0x65A1, GB2312 Code:*/ 0xCED3, /*==>傀 Row:46 Col:51 */
+    /*0x65A4, GB2312 Code:*/ 0xBDEF, /*==>쏙 Row:29 Col:79 */
+    /*0x65A5, GB2312 Code:*/ 0xB3E2, /*==>년 Row:19 Col:66 */
+    /*0x65A7, GB2312 Code:*/ 0xB8AB, /*==>릊 Row:24 Col:11 */
+    /*0x65A9, GB2312 Code:*/ 0xD5B6, /*==>鸞 Row:53 Col:22 */
+    /*0x65AB, GB2312 Code:*/ 0xEDBD, /*==>蔗 Row:77 Col:29 */
+    /*0x65AD, GB2312 Code:*/ 0xB6CF, /*==>뙤 Row:22 Col:47 */
+    /*0x65AF, GB2312 Code:*/ 0xCBB9, /*==>薑 Row:43 Col:25 */
+    /*0x65B0, GB2312 Code:*/ 0xD0C2, /*==>劤 Row:48 Col:34 */
+    /*0x65B9, GB2312 Code:*/ 0xB7BD, /*==>렘 Row:23 Col:29 */
+    /*0x65BC, GB2312 Code:*/ 0xECB6, /*==>異 Row:76 Col:22 */
+    /*0x65BD, GB2312 Code:*/ 0xCAA9, /*==>嘉 Row:42 Col:09 */
+    /*0x65C1, GB2312 Code:*/ 0xC5D4, /*==>텃 Row:37 Col:52 */
+    /*0x65C3, GB2312 Code:*/ 0xECB9, /*==>移 Row:76 Col:25 */
+    /*0x65C4, GB2312 Code:*/ 0xECB8, /*==>痢 Row:76 Col:24 */
+    /*0x65C5, GB2312 Code:*/ 0xC2C3, /*==>쩠 Row:34 Col:35 */
+    /*0x65C6, GB2312 Code:*/ 0xECB7, /*==>痍 Row:76 Col:23 */
+    /*0x65CB, GB2312 Code:*/ 0xD0FD, /*==>旗 Row:48 Col:93 */
+    /*0x65CC, GB2312 Code:*/ 0xECBA, /*==>罹 Row:76 Col:26 */
+    /*0x65CE, GB2312 Code:*/ 0xECBB, /*==>而 Row:76 Col:27 */
+    /*0x65CF, GB2312 Code:*/ 0xD7E5, /*==>痢 Row:55 Col:69 */
+    /*0x65D2, GB2312 Code:*/ 0xECBC, /*==>耳 Row:76 Col:28 */
+    /*0x65D6, GB2312 Code:*/ 0xECBD, /*==>肄 Row:76 Col:29 */
+    /*0x65D7, GB2312 Code:*/ 0xC6EC, /*==>펴 Row:38 Col:76 */
+    /*0x65E0, GB2312 Code:*/ 0xCEDE, /*==>轟 Row:46 Col:62 */
+    /*0x65E2, GB2312 Code:*/ 0xBCC8, /*==>셜 Row:28 Col:40 */
+    /*0x65E5, GB2312 Code:*/ 0xC8D5, /*==>휑 Row:40 Col:53 */
+    /*0x65E6, GB2312 Code:*/ 0xB5A9, /*==>뎀 Row:21 Col:09 */
+    /*0x65E7, GB2312 Code:*/ 0xBEC9, /*==>앉 Row:30 Col:41 */
+    /*0x65E8, GB2312 Code:*/ 0xD6BC, /*==>玲 Row:54 Col:28 */
+    /*0x65E9, GB2312 Code:*/ 0xD4E7, /*==>豆 Row:52 Col:71 */
+    /*0x65EC, GB2312 Code:*/ 0xD1AE, /*==>琪 Row:49 Col:14 */
+    /*0x65ED, GB2312 Code:*/ 0xD0F1, /*==>基 Row:48 Col:81 */
+    /*0x65EE, GB2312 Code:*/ 0xEAB8, /*==>湲 Row:74 Col:24 */
+    /*0x65EF, GB2312 Code:*/ 0xEAB9, /*==>源 Row:74 Col:25 */
+    /*0x65F0, GB2312 Code:*/ 0xEABA, /*==>爰 Row:74 Col:26 */
+    /*0x65F1, GB2312 Code:*/ 0xBAB5, /*==>볕 Row:26 Col:21 */
+    /*0x65F6, GB2312 Code:*/ 0xCAB1, /*==>珂 Row:42 Col:17 */
+    /*0x65F7, GB2312 Code:*/ 0xBFF5, /*==>웅 Row:31 Col:85 */
+    /*0x65FA, GB2312 Code:*/ 0xCDFA, /*==>串 Row:45 Col:90 */
+    /*0x6600, GB2312 Code:*/ 0xEAC0, /*==>遠 Row:74 Col:32 */
+    /*0x6602, GB2312 Code:*/ 0xB0BA, /*==>갰 Row:16 Col:26 */
+    /*0x6603, GB2312 Code:*/ 0xEABE, /*==>袁 Row:74 Col:30 */
+    /*0x6606, GB2312 Code:*/ 0xC0A5, /*==>웹 Row:32 Col:05 */
+    /*0x660A, GB2312 Code:*/ 0xEABB, /*==>猿 Row:74 Col:27 */
+    /*0x660C, GB2312 Code:*/ 0xB2FD, /*==>끗 Row:18 Col:93 */
+    /*0x660E, GB2312 Code:*/ 0xC3F7, /*==>츠 Row:35 Col:87 */
+    /*0x660F, GB2312 Code:*/ 0xBBE8, /*==>삭 Row:27 Col:72 */
+    /*0x6613, GB2312 Code:*/ 0xD2D7, /*==>弄 Row:50 Col:55 */
+    /*0x6614, GB2312 Code:*/ 0xCEF4, /*==>郊 Row:46 Col:84 */
+    /*0x6615, GB2312 Code:*/ 0xEABF, /*==>轅 Row:74 Col:31 */
+    /*0x6619, GB2312 Code:*/ 0xEABC, /*==>瑗 Row:74 Col:28 */
+    /*0x661D, GB2312 Code:*/ 0xEAC3, /*==>願 Row:74 Col:35 */
+    /*0x661F, GB2312 Code:*/ 0xD0C7, /*==>槿 Row:48 Col:39 */
+    /*0x6620, GB2312 Code:*/ 0xD3B3, /*==>鄲 Row:51 Col:19 */
+    /*0x6625, GB2312 Code:*/ 0xB4BA, /*==>뉴 Row:20 Col:26 */
+    /*0x6627, GB2312 Code:*/ 0xC3C1, /*==>쳅 Row:35 Col:33 */
+    /*0x6628, GB2312 Code:*/ 0xD7F2, /*==>燐 Row:55 Col:82 */
+    /*0x662D, GB2312 Code:*/ 0xD5D1, /*==>萊 Row:53 Col:49 */
+    /*0x662F, GB2312 Code:*/ 0xCAC7, /*==>角 Row:42 Col:39 */
+    /*0x6631, GB2312 Code:*/ 0xEAC5, /*==>月 Row:74 Col:37 */
+    /*0x6634, GB2312 Code:*/ 0xEAC4, /*==>鴛 Row:74 Col:36 */
+    /*0x6635, GB2312 Code:*/ 0xEAC7, /*==>鉞 Row:74 Col:39 */
+    /*0x6636, GB2312 Code:*/ 0xEAC6, /*==>越 Row:74 Col:38 */
+    /*0x663C, GB2312 Code:*/ 0xD6E7, /*==>弄 Row:54 Col:71 */
+    /*0x663E, GB2312 Code:*/ 0xCFD4, /*==>鞫 Row:47 Col:52 */
+    /*0x6641, GB2312 Code:*/ 0xEACB, /*==>危 Row:74 Col:43 */
+    /*0x6643, GB2312 Code:*/ 0xBBCE, /*==>뾔 Row:27 Col:46 */
+    /*0x664B, GB2312 Code:*/ 0xBDFA, /*==>쐈 Row:29 Col:90 */
+    /*0x664C, GB2312 Code:*/ 0xC9CE, /*==>� Row:41 Col:46 */
+    /*0x664F, GB2312 Code:*/ 0xEACC, /*==>圍 Row:74 Col:44 */
+    /*0x6652, GB2312 Code:*/ 0xC9B9, /*==>� Row:41 Col:25 */
+    /*0x6653, GB2312 Code:*/ 0xCFFE, /*==>貴 Row:47 Col:94 */
+    /*0x6654, GB2312 Code:*/ 0xEACA, /*==>僞 Row:74 Col:42 */
+    /*0x6655, GB2312 Code:*/ 0xD4CE, /*==>仝 Row:52 Col:46 */
+    /*0x6656, GB2312 Code:*/ 0xEACD, /*==>委 Row:74 Col:45 */
+    /*0x6657, GB2312 Code:*/ 0xEACF, /*==>尉 Row:74 Col:47 */
+    /*0x665A, GB2312 Code:*/ 0xCDED, /*==>功 Row:45 Col:77 */
+    /*0x665F, GB2312 Code:*/ 0xEAC9, /*==>偉 Row:74 Col:41 */
+    /*0x6661, GB2312 Code:*/ 0xEACE, /*==>威 Row:74 Col:46 */
+    /*0x6664, GB2312 Code:*/ 0xCEEE, /*==>翹 Row:46 Col:78 */
+    /*0x6666, GB2312 Code:*/ 0xBBDE, /*==>쁩 Row:27 Col:62 */
+    /*0x6668, GB2312 Code:*/ 0xB3BF, /*==>냄 Row:19 Col:31 */
+    /*0x666E, GB2312 Code:*/ 0xC6D5, /*==>팹 Row:38 Col:53 */
+    /*0x666F, GB2312 Code:*/ 0xBEB0, /*==>쒼 Row:30 Col:16 */
+    /*0x6670, GB2312 Code:*/ 0xCEFA, /*==>九 Row:46 Col:90 */
+    /*0x6674, GB2312 Code:*/ 0xC7E7, /*==>헒 Row:39 Col:71 */
+    /*0x6676, GB2312 Code:*/ 0xBEA7, /*==>쑨 Row:30 Col:07 */
+    /*0x6677, GB2312 Code:*/ 0xEAD0, /*==>慰 Row:74 Col:48 */
+    /*0x667A, GB2312 Code:*/ 0xD6C7, /*==>例 Row:54 Col:39 */
+    /*0x667E, GB2312 Code:*/ 0xC1C0, /*==>좇 Row:33 Col:32 */
+    /*0x6682, GB2312 Code:*/ 0xD4DD, /*==>董 Row:52 Col:61 */
+    /*0x6684, GB2312 Code:*/ 0xEAD1, /*==>暐 Row:74 Col:49 */
+    /*0x6687, GB2312 Code:*/ 0xCFBE, /*==>耉 Row:47 Col:30 */
+    /*0x668C, GB2312 Code:*/ 0xEAD2, /*==>渭 Row:74 Col:50 */
+    /*0x6691, GB2312 Code:*/ 0xCAEE, /*==>嵌 Row:42 Col:78 */
+    /*0x6696, GB2312 Code:*/ 0xC5AF, /*==>킁 Row:37 Col:15 */
+    /*0x6697, GB2312 Code:*/ 0xB0B5, /*==>갠 Row:16 Col:21 */
+    /*0x669D, GB2312 Code:*/ 0xEAD4, /*==>瑋 Row:74 Col:52 */
+    /*0x66A7, GB2312 Code:*/ 0xEAD3, /*==>爲 Row:74 Col:51 */
+    /*0x66A8, GB2312 Code:*/ 0xF4DF, /*==>捷 Row:84 Col:63 */
+    /*0x66AE, GB2312 Code:*/ 0xC4BA, /*==>캤 Row:36 Col:26 */
+    /*0x66B4, GB2312 Code:*/ 0xB1A9, /*==>괬 Row:17 Col:09 */
+    /*0x66B9, GB2312 Code:*/ 0xE5DF, /*==>馭 Row:69 Col:63 */
+    /*0x66BE, GB2312 Code:*/ 0xEAD5, /*==>緯 Row:74 Col:53 */
+    /*0x66D9, GB2312 Code:*/ 0xCAEF, /*==>感 Row:42 Col:79 */
+    /*0x66DB, GB2312 Code:*/ 0xEAD6, /*==>胃 Row:74 Col:54 */
+    /*0x66DC, GB2312 Code:*/ 0xEAD7, /*==>萎 Row:74 Col:55 */
+    /*0x66DD, GB2312 Code:*/ 0xC6D8, /*==>팽 Row:38 Col:56 */
+    /*0x66E6, GB2312 Code:*/ 0xEAD8, /*==>葦 Row:74 Col:56 */
+    /*0x66E9, GB2312 Code:*/ 0xEAD9, /*==>蔿 Row:74 Col:57 */
+    /*0x66F0, GB2312 Code:*/ 0xD4BB, /*==>犢 Row:52 Col:27 */
+    /*0x66F2, GB2312 Code:*/ 0xC7FA, /*==>혓 Row:39 Col:90 */
+    /*0x66F3, GB2312 Code:*/ 0xD2B7, /*==>念 Row:50 Col:23 */
+    /*0x66F4, GB2312 Code:*/ 0xB8FC, /*==>뫘 Row:24 Col:92 */
+    /*0x66F7, GB2312 Code:*/ 0xEAC2, /*==>院 Row:74 Col:34 */
+    /*0x66F9, GB2312 Code:*/ 0xB2DC, /*==>꿀 Row:18 Col:60 */
+    /*0x66FC, GB2312 Code:*/ 0xC2FC, /*==>참 Row:34 Col:92 */
+    /*0x66FE, GB2312 Code:*/ 0xD4F8, /*==>鄧 Row:52 Col:88 */
+    /*0x66FF, GB2312 Code:*/ 0xCCE6, /*==>競 Row:44 Col:70 */
+    /*0x6700, GB2312 Code:*/ 0xD7EE, /*==>離 Row:55 Col:78 */
+    /*0x6708, GB2312 Code:*/ 0xD4C2, /*==>墩 Row:52 Col:34 */
+    /*0x6709, GB2312 Code:*/ 0xD3D0, /*==>唐 Row:51 Col:48 */
+    /*0x670A, GB2312 Code:*/ 0xEBC3, /*==>允 Row:75 Col:35 */
+    /*0x670B, GB2312 Code:*/ 0xC5F3, /*==>툉 Row:37 Col:83 */
+    /*0x670D, GB2312 Code:*/ 0xB7FE, /*==>륩 Row:23 Col:94 */
+    /*0x6710, GB2312 Code:*/ 0xEBD4, /*==>戎 Row:75 Col:52 */
+    /*0x6714, GB2312 Code:*/ 0xCBB7, /*==>腔 Row:43 Col:23 */
+    /*0x6715, GB2312 Code:*/ 0xEBDE, /*==>銀 Row:75 Col:62 */
+    /*0x6717, GB2312 Code:*/ 0xC0CA, /*==>읨 Row:32 Col:42 */
+    /*0x671B, GB2312 Code:*/ 0xCDFB, /*==>寡 Row:45 Col:91 */
+    /*0x671D, GB2312 Code:*/ 0xB3AF, /*==>날 Row:19 Col:15 */
+    /*0x671F, GB2312 Code:*/ 0xC6DA, /*==>퍅 Row:38 Col:58 */
+    /*0x6726, GB2312 Code:*/ 0xEBFC, /*==>蟻 Row:75 Col:92 */
+    /*0x6728, GB2312 Code:*/ 0xC4BE, /*==>컁 Row:36 Col:30 */
+    /*0x672A, GB2312 Code:*/ 0xCEB4, /*==>灌 Row:46 Col:20 */
+    /*0x672B, GB2312 Code:*/ 0xC4A9, /*==>칫 Row:36 Col:09 */
+    /*0x672C, GB2312 Code:*/ 0xB1BE, /*==>굶 Row:17 Col:30 */
+    /*0x672D, GB2312 Code:*/ 0xD4FD, /*==>癩 Row:52 Col:93 */
+    /*0x672F, GB2312 Code:*/ 0xCAF5, /*==>減 Row:42 Col:85 */
+    /*0x6731, GB2312 Code:*/ 0xD6EC, /*==>聾 Row:54 Col:76 */
+    /*0x6734, GB2312 Code:*/ 0xC6D3, /*==>팰 Row:38 Col:51 */
+    /*0x6735, GB2312 Code:*/ 0xB6E4, /*==>뜸 Row:22 Col:68 */
+    /*0x673A, GB2312 Code:*/ 0xBBFA, /*==>샙 Row:27 Col:90 */
+    /*0x673D, GB2312 Code:*/ 0xD0E0, /*==>及 Row:48 Col:64 */
+    /*0x6740, GB2312 Code:*/ 0xC9B1, /*==>� Row:41 Col:17 */
+    /*0x6742, GB2312 Code:*/ 0xD4D3, /*==>憧 Row:52 Col:51 */
+    /*0x6743, GB2312 Code:*/ 0xC8A8, /*==>홈 Row:40 Col:08 */
+    /*0x6746, GB2312 Code:*/ 0xB8CB, /*==>맷 Row:24 Col:43 */
+    /*0x6748, GB2312 Code:*/ 0xE8BE, /*==>渦 Row:72 Col:30 */
+    /*0x6749, GB2312 Code:*/ 0xC9BC, /*==>� Row:41 Col:28 */
+    /*0x674C, GB2312 Code:*/ 0xE8BB, /*==>邕 Row:72 Col:27 */
+    /*0x674E, GB2312 Code:*/ 0xC0EE, /*==>쟀 Row:32 Col:78 */
+    /*0x674F, GB2312 Code:*/ 0xD0D3, /*==>擒 Row:48 Col:51 */
+    /*0x6750, GB2312 Code:*/ 0xB2C4, /*==>꼼 Row:18 Col:36 */
+    /*0x6751, GB2312 Code:*/ 0xB4E5, /*==>닷 Row:20 Col:69 */
+    /*0x6753, GB2312 Code:*/ 0xE8BC, /*==>雍 Row:72 Col:28 */
+    /*0x6756, GB2312 Code:*/ 0xD5C8, /*==>浪 Row:53 Col:40 */
+    /*0x675C, GB2312 Code:*/ 0xB6C5, /*==>뗘 Row:22 Col:37 */
+    /*0x675E, GB2312 Code:*/ 0xE8BD, /*==>饔 Row:72 Col:29 */
+    /*0x675F, GB2312 Code:*/ 0xCAF8, /*==>監 Row:42 Col:88 */
+    /*0x6760, GB2312 Code:*/ 0xB8DC, /*==>멎 Row:24 Col:60 */
+    /*0x6761, GB2312 Code:*/ 0xCCF5, /*==>係 Row:44 Col:85 */
+    /*0x6765, GB2312 Code:*/ 0xC0B4, /*==>윱 Row:32 Col:20 */
+    /*0x6768, GB2312 Code:*/ 0xD1EE, /*==>煖 Row:49 Col:78 */
+    /*0x6769, GB2312 Code:*/ 0xE8BF, /*==>瓦 Row:72 Col:31 */
+    /*0x676A, GB2312 Code:*/ 0xE8C2, /*==>臥 Row:72 Col:34 */
+    /*0x676D, GB2312 Code:*/ 0xBABC, /*==>볼 Row:26 Col:28 */
+    /*0x676F, GB2312 Code:*/ 0xB1AD, /*==>괸 Row:17 Col:13 */
+    /*0x6770, GB2312 Code:*/ 0xBDDC, /*==>쌤 Row:29 Col:60 */
+    /*0x6772, GB2312 Code:*/ 0xEABD, /*==>苑 Row:74 Col:29 */
+    /*0x6773, GB2312 Code:*/ 0xE8C3, /*==>蛙 Row:72 Col:35 */
+    /*0x6775, GB2312 Code:*/ 0xE8C6, /*==>婉 Row:72 Col:38 */
+    /*0x6777, GB2312 Code:*/ 0xE8CB, /*==>浣 Row:72 Col:43 */
+    /*0x677C, GB2312 Code:*/ 0xE8CC, /*==>玩 Row:72 Col:44 */
+    /*0x677E, GB2312 Code:*/ 0xCBC9, /*==>漑 Row:43 Col:41 */
+    /*0x677F, GB2312 Code:*/ 0xB0E5, /*==>겼 Row:16 Col:69 */
+    /*0x6781, GB2312 Code:*/ 0xBCAB, /*==>섐 Row:28 Col:11 */
+    /*0x6784, GB2312 Code:*/ 0xB9B9, /*==>뭐 Row:25 Col:25 */
+    /*0x6787, GB2312 Code:*/ 0xE8C1, /*==>窪 Row:72 Col:33 */
+    /*0x6789, GB2312 Code:*/ 0xCDF7, /*==>蚣 Row:45 Col:87 */
+    /*0x678B, GB2312 Code:*/ 0xE8CA, /*==>椀 Row:72 Col:42 */
+    /*0x6790, GB2312 Code:*/ 0xCEF6, /*==>驕 Row:46 Col:86 */
+    /*0x6795, GB2312 Code:*/ 0xD5ED, /*==>藜 Row:53 Col:77 */
+    /*0x6797, GB2312 Code:*/ 0xC1D6, /*==>주 Row:33 Col:54 */
+    /*0x6798, GB2312 Code:*/ 0xE8C4, /*==>蝸 Row:72 Col:36 */
+    /*0x679A, GB2312 Code:*/ 0xC3B6, /*==>철 Row:35 Col:22 */
+    /*0x679C, GB2312 Code:*/ 0xB9FB, /*==>벎 Row:25 Col:91 */
+    /*0x679D, GB2312 Code:*/ 0xD6A6, /*==>輦 Row:54 Col:06 */
+    /*0x679E, GB2312 Code:*/ 0xE8C8, /*==>宛 Row:72 Col:40 */
+    /*0x67A2, GB2312 Code:*/ 0xCAE0, /*==>間 Row:42 Col:64 */
+    /*0x67A3, GB2312 Code:*/ 0xD4E6, /*==>讀 Row:52 Col:70 */
+    /*0x67A5, GB2312 Code:*/ 0xE8C0, /*==>窩 Row:72 Col:32 */
+    /*0x67A7, GB2312 Code:*/ 0xE8C5, /*==>訛 Row:72 Col:37 */
+    /*0x67A8, GB2312 Code:*/ 0xE8C7, /*==>完 Row:72 Col:39 */
+    /*0x67AA, GB2312 Code:*/ 0xC7B9, /*==>퓜 Row:39 Col:25 */
+    /*0x67AB, GB2312 Code:*/ 0xB7E3, /*==>룔 Row:23 Col:67 */
+    /*0x67AD, GB2312 Code:*/ 0xE8C9, /*==>梡 Row:72 Col:41 */
+    /*0x67AF, GB2312 Code:*/ 0xBFDD, /*==>왹 Row:31 Col:61 */
+    /*0x67B0, GB2312 Code:*/ 0xE8D2, /*==>脘 Row:72 Col:50 */
+    /*0x67B3, GB2312 Code:*/ 0xE8D7, /*==>頑 Row:72 Col:55 */
+    /*0x67B5, GB2312 Code:*/ 0xE8D5, /*==>豌 Row:72 Col:53 */
+    /*0x67B6, GB2312 Code:*/ 0xBCDC, /*==>솥 Row:28 Col:60 */
+    /*0x67B7, GB2312 Code:*/ 0xBCCF, /*==>셴 Row:28 Col:47 */
+    /*0x67B8, GB2312 Code:*/ 0xE8DB, /*==>枉 Row:72 Col:59 */
+    /*0x67C1, GB2312 Code:*/ 0xE8DE, /*==>倭 Row:72 Col:62 */
+    /*0x67C3, GB2312 Code:*/ 0xE8DA, /*==>旺 Row:72 Col:58 */
+    /*0x67C4, GB2312 Code:*/ 0xB1FA, /*==>깨 Row:17 Col:90 */
+    /*0x67CF, GB2312 Code:*/ 0xB0D8, /*==>겝 Row:16 Col:56 */
+    /*0x67D0, GB2312 Code:*/ 0xC4B3, /*==>캐 Row:36 Col:19 */
+    /*0x67D1, GB2312 Code:*/ 0xB8CC, /*==>맸 Row:24 Col:44 */
+    /*0x67D2, GB2312 Code:*/ 0xC6E2, /*==>펐 Row:38 Col:66 */
+    /*0x67D3, GB2312 Code:*/ 0xC8BE, /*==>횡 Row:40 Col:30 */
+    /*0x67D4, GB2312 Code:*/ 0xC8E1, /*==>휼 Row:40 Col:65 */
+    /*0x67D8, GB2312 Code:*/ 0xE8CF, /*==>碗 Row:72 Col:47 */
+    /*0x67D9, GB2312 Code:*/ 0xE8D4, /*==>莞 Row:72 Col:52 */
+    /*0x67DA, GB2312 Code:*/ 0xE8D6, /*==>阮 Row:72 Col:54 */
+    /*0x67DC, GB2312 Code:*/ 0xB9F1, /*==>뱉 Row:25 Col:81 */
+    /*0x67DD, GB2312 Code:*/ 0xE8D8, /*==>曰 Row:72 Col:56 */
+    /*0x67DE, GB2312 Code:*/ 0xD7F5, /*==>躪 Row:55 Col:85 */
+    /*0x67E0, GB2312 Code:*/ 0xC4FB, /*==>퀴 Row:36 Col:91 */
+    /*0x67E2, GB2312 Code:*/ 0xE8DC, /*==>汪 Row:72 Col:60 */
+    /*0x67E5, GB2312 Code:*/ 0xB2E9, /*==>꿴 Row:18 Col:73 */
+    /*0x67E9, GB2312 Code:*/ 0xE8D1, /*==>翫 Row:72 Col:49 */
+    /*0x67EC, GB2312 Code:*/ 0xBCED, /*==>쇳 Row:28 Col:77 */
+    /*0x67EF, GB2312 Code:*/ 0xBFC2, /*==>온 Row:31 Col:34 */
+    /*0x67F0, GB2312 Code:*/ 0xE8CD, /*==>琓 Row:72 Col:45 */
+    /*0x67F1, GB2312 Code:*/ 0xD6F9, /*==>料 Row:54 Col:89 */
+    /*0x67F3, GB2312 Code:*/ 0xC1F8, /*==>진 Row:33 Col:88 */
+    /*0x67F4, GB2312 Code:*/ 0xB2F1, /*==>뀜 Row:18 Col:81 */
+    /*0x67FD, GB2312 Code:*/ 0xE8DF, /*==>娃 Row:72 Col:63 */
+    /*0x67FF, GB2312 Code:*/ 0xCAC1, /*==>恪 Row:42 Col:33 */
+    /*0x6800, GB2312 Code:*/ 0xE8D9, /*==>往 Row:72 Col:57 */
+    /*0x6805, GB2312 Code:*/ 0xD5A4, /*==>邏 Row:53 Col:04 */
+    /*0x6807, GB2312 Code:*/ 0xB1EA, /*==>깃 Row:17 Col:74 */
+    /*0x6808, GB2312 Code:*/ 0xD5BB, /*==>攬 Row:53 Col:27 */
+    /*0x6809, GB2312 Code:*/ 0xE8CE, /*==>琬 Row:72 Col:46 */
+    /*0x680A, GB2312 Code:*/ 0xE8D0, /*==>緩 Row:72 Col:48 */
+    /*0x680B, GB2312 Code:*/ 0xB6B0, /*==>떠 Row:22 Col:16 */
+    /*0x680C, GB2312 Code:*/ 0xE8D3, /*==>腕 Row:72 Col:51 */
+    /*0x680E, GB2312 Code:*/ 0xE8DD, /*==>王 Row:72 Col:61 */
+    /*0x680F, GB2312 Code:*/ 0xC0B8, /*==>으 Row:32 Col:24 */
+    /*0x6811, GB2312 Code:*/ 0xCAF7, /*==>疳 Row:42 Col:87 */
+    /*0x6813, GB2312 Code:*/ 0xCBA8, /*==>堈 Row:43 Col:08 */
+    /*0x6816, GB2312 Code:*/ 0xC6DC, /*==>퍽 Row:38 Col:60 */
+    /*0x6817, GB2312 Code:*/ 0xC0F5, /*==>쟘 Row:32 Col:85 */
+    /*0x681D, GB2312 Code:*/ 0xE8E9, /*==>僥 Row:72 Col:73 */
+    /*0x6821, GB2312 Code:*/ 0xD0A3, /*==>叫 Row:48 Col:03 */
+    /*0x6829, GB2312 Code:*/ 0xE8F2, /*==>嶢 Row:72 Col:82 */
+    /*0x682A, GB2312 Code:*/ 0xD6EA, /*==>瓏 Row:54 Col:74 */
+    /*0x6832, GB2312 Code:*/ 0xE8E0, /*==>歪 Row:72 Col:64 */
+    /*0x6833, GB2312 Code:*/ 0xE8E1, /*==>矮 Row:72 Col:65 */
+    /*0x6837, GB2312 Code:*/ 0xD1F9, /*==>湳 Row:49 Col:89 */
+    /*0x6838, GB2312 Code:*/ 0xBACB, /*==>뵙 Row:26 Col:43 */
+    /*0x6839, GB2312 Code:*/ 0xB8F9, /*==>몽 Row:24 Col:89 */
+    /*0x683C, GB2312 Code:*/ 0xB8F1, /*==>목 Row:24 Col:81 */
+    /*0x683D, GB2312 Code:*/ 0xD4D4, /*==>東 Row:52 Col:52 */
+    /*0x683E, GB2312 Code:*/ 0xE8EF, /*==>寥 Row:72 Col:79 */
+    /*0x6840, GB2312 Code:*/ 0xE8EE, /*==>姚 Row:72 Col:78 */
+    /*0x6841, GB2312 Code:*/ 0xE8EC, /*==>夭 Row:72 Col:76 */
+    /*0x6842, GB2312 Code:*/ 0xB9F0, /*==>뱅 Row:25 Col:80 */
+    /*0x6843, GB2312 Code:*/ 0xCCD2, /*==>庚 Row:44 Col:50 */
+    /*0x6844, GB2312 Code:*/ 0xE8E6, /*==>畏 Row:72 Col:70 */
+    /*0x6845, GB2312 Code:*/ 0xCEA6, /*==>過 Row:46 Col:06 */
+    /*0x6846, GB2312 Code:*/ 0xBFF2, /*==>움 Row:31 Col:82 */
+    /*0x6848, GB2312 Code:*/ 0xB0B8, /*==>갭 Row:16 Col:24 */
+    /*0x6849, GB2312 Code:*/ 0xE8F1, /*==>尿 Row:72 Col:81 */
+    /*0x684A, GB2312 Code:*/ 0xE8F0, /*==>寮 Row:72 Col:80 */
+    /*0x684C, GB2312 Code:*/ 0xD7C0, /*==>戮 Row:55 Col:32 */
+    /*0x684E, GB2312 Code:*/ 0xE8E4, /*==>巍 Row:72 Col:68 */
+    /*0x6850, GB2312 Code:*/ 0xCDA9, /*==>繼 Row:45 Col:09 */
+    /*0x6851, GB2312 Code:*/ 0xC9A3, /*==>� Row:41 Col:03 */
+    /*0x6853, GB2312 Code:*/ 0xBBB8, /*==>뻗 Row:27 Col:24 */
+    /*0x6854, GB2312 Code:*/ 0xBDDB, /*==>쌜 Row:29 Col:59 */
+    /*0x6855, GB2312 Code:*/ 0xE8EA, /*==>凹 Row:72 Col:74 */
+    /*0x6860, GB2312 Code:*/ 0xE8E2, /*==>外 Row:72 Col:66 */
+    /*0x6861, GB2312 Code:*/ 0xE8E3, /*==>嵬 Row:72 Col:67 */
+    /*0x6862, GB2312 Code:*/ 0xE8E5, /*==>猥 Row:72 Col:69 */
+    /*0x6863, GB2312 Code:*/ 0xB5B5, /*==>도 Row:21 Col:21 */
+    /*0x6864, GB2312 Code:*/ 0xE8E7, /*==>了 Row:72 Col:71 */
+    /*0x6865, GB2312 Code:*/ 0xC7C5, /*==>픕 Row:39 Col:37 */
+    /*0x6866, GB2312 Code:*/ 0xE8EB, /*==>堯 Row:72 Col:75 */
+    /*0x6867, GB2312 Code:*/ 0xE8ED, /*==>妖 Row:72 Col:77 */
+    /*0x6868, GB2312 Code:*/ 0xBDB0, /*==>쉼 Row:29 Col:16 */
+    /*0x6869, GB2312 Code:*/ 0xD7AE, /*==>褸 Row:55 Col:14 */
+    /*0x686B, GB2312 Code:*/ 0xE8F8, /*==>曜 Row:72 Col:88 */
+    /*0x6874, GB2312 Code:*/ 0xE8F5, /*==>撓 Row:72 Col:85 */
+    /*0x6876, GB2312 Code:*/ 0xCDB0, /*==>叩 Row:45 Col:16 */
+    /*0x6877, GB2312 Code:*/ 0xE8F6, /*==>擾 Row:72 Col:86 */
+    /*0x6881, GB2312 Code:*/ 0xC1BA, /*==>졺 Row:33 Col:26 */
+    /*0x6883, GB2312 Code:*/ 0xE8E8, /*==>僚 Row:72 Col:72 */
+    /*0x6885, GB2312 Code:*/ 0xC3B7, /*==>첨 Row:35 Col:23 */
+    /*0x6886, GB2312 Code:*/ 0xB0F0, /*==>곧 Row:16 Col:80 */
+    /*0x688F, GB2312 Code:*/ 0xE8F4, /*==>搖 Row:72 Col:84 */
+    /*0x6893, GB2312 Code:*/ 0xE8F7, /*==>料 Row:72 Col:87 */
+    /*0x6897, GB2312 Code:*/ 0xB9A3, /*==>묍 Row:25 Col:03 */
+    /*0x68A2, GB2312 Code:*/ 0xC9D2, /*==>� Row:41 Col:50 */
+    /*0x68A6, GB2312 Code:*/ 0xC3CE, /*==>촘 Row:35 Col:46 */
+    /*0x68A7, GB2312 Code:*/ 0xCEE0, /*==>僑 Row:46 Col:64 */
+    /*0x68A8, GB2312 Code:*/ 0xC0E6, /*==>잦 Row:32 Col:70 */
+    /*0x68AD, GB2312 Code:*/ 0xCBF3, /*==>虔 Row:43 Col:83 */
+    /*0x68AF, GB2312 Code:*/ 0xCCDD, /*==>炅 Row:44 Col:61 */
+    /*0x68B0, GB2312 Code:*/ 0xD0B5, /*==>筠 Row:48 Col:21 */
+    /*0x68B3, GB2312 Code:*/ 0xCAE1, /*==>乫 Row:42 Col:65 */
+    /*0x68B5, GB2312 Code:*/ 0xE8F3, /*==>拗 Row:72 Col:83 */
+    /*0x68C0, GB2312 Code:*/ 0xBCEC, /*==>쇱 Row:28 Col:76 */
+    /*0x68C2, GB2312 Code:*/ 0xE8F9, /*==>樂 Row:72 Col:89 */
+    /*0x68C9, GB2312 Code:*/ 0xC3DE, /*==>춈 Row:35 Col:62 */
+    /*0x68CB, GB2312 Code:*/ 0xC6E5, /*==>펙 Row:38 Col:69 */
+    /*0x68CD, GB2312 Code:*/ 0xB9F7, /*==>벅 Row:25 Col:87 */
+    /*0x68D2, GB2312 Code:*/ 0xB0F4, /*==>곯 Row:16 Col:84 */
+    /*0x68D5, GB2312 Code:*/ 0xD7D8, /*==>厘 Row:55 Col:56 */
+    /*0x68D8, GB2312 Code:*/ 0xBCAC, /*==>섕 Row:28 Col:12 */
+    /*0x68DA, GB2312 Code:*/ 0xC5EF, /*==>퇘 Row:37 Col:79 */
+    /*0x68E0, GB2312 Code:*/ 0xCCC4, /*==>箝 Row:44 Col:36 */
+    /*0x68E3, GB2312 Code:*/ 0xE9A6, /*==>腰 Row:73 Col:06 */
+    /*0x68EE, GB2312 Code:*/ 0xC9AD, /*==>� Row:41 Col:13 */
+    /*0x68F0, GB2312 Code:*/ 0xE9A2, /*==>窯 Row:73 Col:02 */
+    /*0x68F1, GB2312 Code:*/ 0xC0E2, /*==>잡 Row:32 Col:66 */
+    /*0x68F5, GB2312 Code:*/ 0xBFC3, /*==>올 Row:31 Col:35 */
+    /*0x68F9, GB2312 Code:*/ 0xE8FE, /*==>療 Row:72 Col:94 */
+    /*0x68FA, GB2312 Code:*/ 0xB9D7, /*==>및 Row:25 Col:55 */
+    /*0x68FC, GB2312 Code:*/ 0xE8FB, /*==>燎 Row:72 Col:91 */
+    /*0x6901, GB2312 Code:*/ 0xE9A4, /*==>繞 Row:73 Col:04 */
+    /*0x6905, GB2312 Code:*/ 0xD2CE, /*==>鷺 Row:50 Col:46 */
+    /*0x690B, GB2312 Code:*/ 0xE9A3, /*==>繇 Row:73 Col:03 */
+    /*0x690D, GB2312 Code:*/ 0xD6B2, /*==>濂 Row:54 Col:18 */
+    /*0x690E, GB2312 Code:*/ 0xD7B5, /*==>流 Row:55 Col:21 */
+    /*0x6910, GB2312 Code:*/ 0xE9A7, /*==>蓼 Row:73 Col:07 */
+    /*0x6912, GB2312 Code:*/ 0xBDB7, /*==>슘 Row:29 Col:23 */
+    /*0x691F, GB2312 Code:*/ 0xE8FC, /*==>燿 Row:72 Col:92 */
+    /*0x6920, GB2312 Code:*/ 0xE8FD, /*==>瑤 Row:72 Col:93 */
+    /*0x6924, GB2312 Code:*/ 0xE9A1, /*==>窈 Row:73 Col:01 */
+    /*0x692D, GB2312 Code:*/ 0xCDD6, /*==>哭 Row:45 Col:54 */
+    /*0x6930, GB2312 Code:*/ 0xD2AC, /*==>乃 Row:50 Col:12 */
+    /*0x6934, GB2312 Code:*/ 0xE9B2, /*==>縟 Row:73 Col:18 */
+    /*0x6939, GB2312 Code:*/ 0xE9A9, /*==>要 Row:73 Col:09 */
+    /*0x693D, GB2312 Code:*/ 0xB4AA, /*==>눅 Row:20 Col:10 */
+    /*0x693F, GB2312 Code:*/ 0xB4BB, /*==>뉵 Row:20 Col:27 */
+    /*0x6942, GB2312 Code:*/ 0xE9AB, /*==>遙 Row:73 Col:11 */
+    /*0x6954, GB2312 Code:*/ 0xD0A8, /*==>珪 Row:48 Col:08 */
+    /*0x6957, GB2312 Code:*/ 0xE9A5, /*==>耀 Row:73 Col:05 */
+    /*0x695A, GB2312 Code:*/ 0xB3FE, /*==>뇝 Row:19 Col:94 */
+    /*0x695D, GB2312 Code:*/ 0xE9AC, /*==>遼 Row:73 Col:12 */
+    /*0x695E, GB2312 Code:*/ 0xC0E3, /*==>잣 Row:32 Col:67 */
+    /*0x6960, GB2312 Code:*/ 0xE9AA, /*==>謠 Row:73 Col:10 */
+    /*0x6963, GB2312 Code:*/ 0xE9B9, /*==>埇 Row:73 Col:25 */
+    /*0x6966, GB2312 Code:*/ 0xE9B8, /*==>勇 Row:73 Col:24 */
+    /*0x696B, GB2312 Code:*/ 0xE9AE, /*==>饒 Row:73 Col:14 */
+    /*0x696E, GB2312 Code:*/ 0xE8FA, /*==>橈 Row:72 Col:90 */
+    /*0x6971, GB2312 Code:*/ 0xE9A8, /*==>蟯 Row:73 Col:08 */
+    /*0x6977, GB2312 Code:*/ 0xBFAC, /*==>연 Row:31 Col:12 */
+    /*0x6978, GB2312 Code:*/ 0xE9B1, /*==>浴 Row:73 Col:17 */
+    /*0x6979, GB2312 Code:*/ 0xE9BA, /*==>墉 Row:73 Col:26 */
+    /*0x697C, GB2312 Code:*/ 0xC2A5, /*==>짜 Row:34 Col:05 */
+    /*0x6980, GB2312 Code:*/ 0xE9AF, /*==>慾 Row:73 Col:15 */
+    /*0x6982, GB2312 Code:*/ 0xB8C5, /*==>매 Row:24 Col:37 */
+    /*0x6984, GB2312 Code:*/ 0xE9AD, /*==>邀 Row:73 Col:13 */
+    /*0x6986, GB2312 Code:*/ 0xD3DC, /*==>垈 Row:51 Col:60 */
+    /*0x6987, GB2312 Code:*/ 0xE9B4, /*==>辱 Row:73 Col:20 */
+    /*0x6988, GB2312 Code:*/ 0xE9B5, /*==>俑 Row:73 Col:21 */
+    /*0x6989, GB2312 Code:*/ 0xE9B7, /*==>冗 Row:73 Col:23 */
+    /*0x698D, GB2312 Code:*/ 0xE9C7, /*==>茸 Row:73 Col:39 */
+    /*0x6994, GB2312 Code:*/ 0xC0C6, /*==>읗 Row:32 Col:38 */
+    /*0x6995, GB2312 Code:*/ 0xE9C5, /*==>甬 Row:73 Col:37 */
+    /*0x6998, GB2312 Code:*/ 0xE9B0, /*==>欲 Row:73 Col:16 */
+    /*0x699B, GB2312 Code:*/ 0xE9BB, /*==>容 Row:73 Col:27 */
+    /*0x699C, GB2312 Code:*/ 0xB0F1, /*==>골 Row:16 Col:81 */
+    /*0x69A7, GB2312 Code:*/ 0xE9BC, /*==>庸 Row:73 Col:28 */
+    /*0x69A8, GB2312 Code:*/ 0xD5A5, /*==>樂 Row:53 Col:05 */
+    /*0x69AB, GB2312 Code:*/ 0xE9BE, /*==>榕 Row:73 Col:30 */
+    /*0x69AD, GB2312 Code:*/ 0xE9BF, /*==>涌 Row:73 Col:31 */
+    /*0x69B1, GB2312 Code:*/ 0xE9C1, /*==>溶 Row:73 Col:33 */
+    /*0x69B4, GB2312 Code:*/ 0xC1F1, /*==>즐 Row:33 Col:81 */
+    /*0x69B7, GB2312 Code:*/ 0xC8B6, /*==>횃 Row:40 Col:22 */
+    /*0x69BB, GB2312 Code:*/ 0xE9BD, /*==>慂 Row:73 Col:29 */
+    /*0x69C1, GB2312 Code:*/ 0xE9C2, /*==>熔 Row:73 Col:34 */
+    /*0x69CA, GB2312 Code:*/ 0xE9C3, /*==>瑢 Row:73 Col:35 */
+    /*0x69CC, GB2312 Code:*/ 0xE9B3, /*==>褥 Row:73 Col:19 */
+    /*0x69CE, GB2312 Code:*/ 0xE9B6, /*==>傭 Row:73 Col:22 */
+    /*0x69D0, GB2312 Code:*/ 0xBBB1, /*==>뺑 Row:27 Col:17 */
+    /*0x69D4, GB2312 Code:*/ 0xE9C0, /*==>湧 Row:73 Col:32 */
+    /*0x69DB, GB2312 Code:*/ 0xBCF7, /*==>숙 Row:28 Col:87 */
+    /*0x69DF, GB2312 Code:*/ 0xE9C4, /*==>用 Row:73 Col:36 */
+    /*0x69E0, GB2312 Code:*/ 0xE9C6, /*==>聳 Row:73 Col:38 */
+    /*0x69ED, GB2312 Code:*/ 0xE9CA, /*==>鎔 Row:73 Col:42 */
+    /*0x69F2, GB2312 Code:*/ 0xE9CE, /*==>佑 Row:73 Col:46 */
+    /*0x69FD, GB2312 Code:*/ 0xB2DB, /*==>꾼 Row:18 Col:59 */
+    /*0x69FF, GB2312 Code:*/ 0xE9C8, /*==>蓉 Row:73 Col:40 */
+    /*0x6A0A, GB2312 Code:*/ 0xB7AE, /*==>량 Row:23 Col:14 */
+    /*0x6A17, GB2312 Code:*/ 0xE9CB, /*==>鏞 Row:73 Col:43 */
+    /*0x6A18, GB2312 Code:*/ 0xE9CC, /*==>龍 Row:73 Col:44 */
+    /*0x6A1F, GB2312 Code:*/ 0xD5C1, /*==>襤 Row:53 Col:33 */
+    /*0x6A21, GB2312 Code:*/ 0xC4A3, /*==>친 Row:36 Col:03 */
+    /*0x6A28, GB2312 Code:*/ 0xE9D8, /*==>憂 Row:73 Col:56 */
+    /*0x6A2A, GB2312 Code:*/ 0xBAE1, /*==>뷘 Row:26 Col:65 */
+    /*0x6A2F, GB2312 Code:*/ 0xE9C9, /*==>踊 Row:73 Col:41 */
+    /*0x6A31, GB2312 Code:*/ 0xD3A3, /*==>但 Row:51 Col:03 */
+    /*0x6A35, GB2312 Code:*/ 0xE9D4, /*==>宇 Row:73 Col:52 */
+    /*0x6A3D, GB2312 Code:*/ 0xE9D7, /*==>愚 Row:73 Col:55 */
+    /*0x6A3E, GB2312 Code:*/ 0xE9D0, /*==>優 Row:73 Col:48 */
+    /*0x6A44, GB2312 Code:*/ 0xE9CF, /*==>偶 Row:73 Col:47 */
+    /*0x6A47, GB2312 Code:*/ 0xC7C1, /*==>프 Row:39 Col:33 */
+    /*0x6A50, GB2312 Code:*/ 0xE9D2, /*==>友 Row:73 Col:50 */
+    /*0x6A58, GB2312 Code:*/ 0xE9D9, /*==>旴 Row:73 Col:57 */
+    /*0x6A59, GB2312 Code:*/ 0xB3C8, /*==>냠 Row:19 Col:40 */
+    /*0x6A5B, GB2312 Code:*/ 0xE9D3, /*==>右 Row:73 Col:51 */
+    /*0x6A61, GB2312 Code:*/ 0xCFF0, /*==>厥 Row:47 Col:80 */
+    /*0x6A65, GB2312 Code:*/ 0xE9CD, /*==>于 Row:73 Col:45 */
+    /*0x6A71, GB2312 Code:*/ 0xB3F7, /*==>놘 Row:19 Col:87 */
+    /*0x6A79, GB2312 Code:*/ 0xE9D6, /*==>尤 Row:73 Col:54 */
+    /*0x6A7C, GB2312 Code:*/ 0xE9DA, /*==>牛 Row:73 Col:58 */
+    /*0x6A80, GB2312 Code:*/ 0xCCB4, /*==>甄 Row:44 Col:20 */
+    /*0x6A84, GB2312 Code:*/ 0xCFAD, /*==>救 Row:47 Col:13 */
+    /*0x6A8E, GB2312 Code:*/ 0xE9D5, /*==>寓 Row:73 Col:53 */
+    /*0x6A90, GB2312 Code:*/ 0xE9DC, /*==>瑀 Row:73 Col:60 */
+    /*0x6A91, GB2312 Code:*/ 0xE9DB, /*==>玗 Row:73 Col:59 */
+    /*0x6A97, GB2312 Code:*/ 0xE9DE, /*==>祐 Row:73 Col:62 */
+    /*0x6AA0, GB2312 Code:*/ 0xE9D1, /*==>又 Row:73 Col:49 */
+    /*0x6AA9, GB2312 Code:*/ 0xE9DD, /*==>盂 Row:73 Col:61 */
+    /*0x6AAB, GB2312 Code:*/ 0xE9DF, /*==>禑 Row:73 Col:63 */
+    /*0x6AAC, GB2312 Code:*/ 0xC3CA, /*==>초 Row:35 Col:42 */
+    /*0x6B20, GB2312 Code:*/ 0xC7B7, /*==>퓐 Row:39 Col:23 */
+    /*0x6B21, GB2312 Code:*/ 0xB4CE, /*==>늴 Row:20 Col:46 */
+    /*0x6B22, GB2312 Code:*/ 0xBBB6, /*==>뻑 Row:27 Col:22 */
+    /*0x6B23, GB2312 Code:*/ 0xD0C0, /*==>隙 Row:48 Col:32 */
+    /*0x6B24, GB2312 Code:*/ 0xECA3, /*==>二 Row:76 Col:03 */
+    /*0x6B27, GB2312 Code:*/ 0xC5B7, /*==>킹 Row:37 Col:23 */
+    /*0x6B32, GB2312 Code:*/ 0xD3FB, /*==>挑 Row:51 Col:91 */
+    /*0x6B37, GB2312 Code:*/ 0xECA4, /*==>以 Row:76 Col:04 */
+    /*0x6B39, GB2312 Code:*/ 0xECA5, /*==>伊 Row:76 Col:05 */
+    /*0x6B3A, GB2312 Code:*/ 0xC6DB, /*==>퍼 Row:38 Col:59 */
+    /*0x6B3E, GB2312 Code:*/ 0xBFEE, /*==>운 Row:31 Col:78 */
+    /*0x6B43, GB2312 Code:*/ 0xECA6, /*==>利 Row:76 Col:06 */
+    /*0x6B46, GB2312 Code:*/ 0xECA7, /*==>吏 Row:76 Col:07 */
+    /*0x6B47, GB2312 Code:*/ 0xD0AA, /*==>窺 Row:48 Col:10 */
+    /*0x6B49, GB2312 Code:*/ 0xC7B8, /*==>퓔 Row:39 Col:24 */
+    /*0x6B4C, GB2312 Code:*/ 0xB8E8, /*==>멱 Row:24 Col:72 */
+    /*0x6B59, GB2312 Code:*/ 0xECA8, /*==>夷 Row:76 Col:08 */
+    /*0x6B62, GB2312 Code:*/ 0xD6B9, /*==>岺 Row:54 Col:25 */
+    /*0x6B63, GB2312 Code:*/ 0xD5FD, /*==>攣 Row:53 Col:93 */
+    /*0x6B64, GB2312 Code:*/ 0xB4CB, /*==>늪 Row:20 Col:43 */
+    /*0x6B65, GB2312 Code:*/ 0xB2BD, /*==>꼍 Row:18 Col:29 */
+    /*0x6B66, GB2312 Code:*/ 0xCEE4, /*==>嶠 Row:46 Col:68 */
+    /*0x6B67, GB2312 Code:*/ 0xC6E7, /*==>펠 Row:38 Col:71 */
+    /*0x6B6A, GB2312 Code:*/ 0xCDE1, /*==>梱 Row:45 Col:65 */
+    /*0x6B79, GB2312 Code:*/ 0xB4F5, /*==>더 Row:20 Col:85 */
+    /*0x6B7B, GB2312 Code:*/ 0xCBC0, /*==>价 Row:43 Col:32 */
+    /*0x6B7C, GB2312 Code:*/ 0xBCDF, /*==>솬 Row:28 Col:63 */
+    /*0x6B81, GB2312 Code:*/ 0xE9E2, /*==>羽 Row:73 Col:66 */
+    /*0x6B82, GB2312 Code:*/ 0xE9E3, /*==>芋 Row:73 Col:67 */
+    /*0x6B83, GB2312 Code:*/ 0xD1EA, /*==>亂 Row:49 Col:74 */
+    /*0x6B84, GB2312 Code:*/ 0xE9E5, /*==>虞 Row:73 Col:69 */
+    /*0x6B86, GB2312 Code:*/ 0xB4F9, /*==>덛 Row:20 Col:89 */
+    /*0x6B87, GB2312 Code:*/ 0xE9E4, /*==>藕 Row:73 Col:68 */
+    /*0x6B89, GB2312 Code:*/ 0xD1B3, /*==>碁 Row:49 Col:19 */
+    /*0x6B8A, GB2312 Code:*/ 0xCAE2, /*==>喝 Row:42 Col:66 */
+    /*0x6B8B, GB2312 Code:*/ 0xB2D0, /*==>꽥 Row:18 Col:48 */
+    /*0x6B8D, GB2312 Code:*/ 0xE9E8, /*==>郵 Row:73 Col:72 */
+    /*0x6B92, GB2312 Code:*/ 0xE9E6, /*==>迂 Row:73 Col:70 */
+    /*0x6B93, GB2312 Code:*/ 0xE9E7, /*==>遇 Row:73 Col:71 */
+    /*0x6B96, GB2312 Code:*/ 0xD6B3, /*==>簾 Row:54 Col:19 */
+    /*0x6B9A, GB2312 Code:*/ 0xE9E9, /*==>釪 Row:73 Col:73 */
+    /*0x6B9B, GB2312 Code:*/ 0xE9EA, /*==>隅 Row:73 Col:74 */
+    /*0x6BA1, GB2312 Code:*/ 0xE9EB, /*==>雨 Row:73 Col:75 */
+    /*0x6BAA, GB2312 Code:*/ 0xE9EC, /*==>雩 Row:73 Col:76 */
+    /*0x6BB3, GB2312 Code:*/ 0xECAF, /*==>易 Row:76 Col:15 */
+    /*0x6BB4, GB2312 Code:*/ 0xC5B9, /*==>탁 Row:37 Col:25 */
+    /*0x6BB5, GB2312 Code:*/ 0xB6CE, /*==>뙈 Row:22 Col:46 */
+    /*0x6BB7, GB2312 Code:*/ 0xD2F3, /*==>凌 Row:50 Col:83 */
+    /*0x6BBF, GB2312 Code:*/ 0xB5EE, /*==>등 Row:21 Col:78 */
+    /*0x6BC1, GB2312 Code:*/ 0xBBD9, /*==>쁑 Row:27 Col:57 */
+    /*0x6BC2, GB2312 Code:*/ 0xECB1, /*==>梨 Row:76 Col:17 */
+    /*0x6BC5, GB2312 Code:*/ 0xD2E3, /*==>尿 Row:50 Col:67 */
+    /*0x6BCB, GB2312 Code:*/ 0xCEE3, /*==>嬌 Row:46 Col:67 */
+    /*0x6BCD, GB2312 Code:*/ 0xC4B8, /*==>캡 Row:36 Col:24 */
+    /*0x6BCF, GB2312 Code:*/ 0xC3BF, /*==>첼 Row:35 Col:31 */
+    /*0x6BD2, GB2312 Code:*/ 0xB6BE, /*==>뗀 Row:22 Col:30 */
+    /*0x6BD3, GB2312 Code:*/ 0xD8B9, /*==>晩 Row:56 Col:25 */
+    /*0x6BD4, GB2312 Code:*/ 0xB1C8, /*==>궐 Row:17 Col:40 */
+    /*0x6BD5, GB2312 Code:*/ 0xB1CF, /*==>귄 Row:17 Col:47 */
+    /*0x6BD6, GB2312 Code:*/ 0xB1D1, /*==>귐 Row:17 Col:49 */
+    /*0x6BD7, GB2312 Code:*/ 0xC5FE, /*==>퉜 Row:37 Col:94 */
+    /*0x6BD9, GB2312 Code:*/ 0xB1D0, /*==>귈 Row:17 Col:48 */
+    /*0x6BDB, GB2312 Code:*/ 0xC3AB, /*==>챘 Row:35 Col:11 */
+    /*0x6BE1, GB2312 Code:*/ 0xD5B1, /*==>欄 Row:53 Col:17 */
+    /*0x6BEA, GB2312 Code:*/ 0xEBA4, /*==>琉 Row:75 Col:04 */
+    /*0x6BEB, GB2312 Code:*/ 0xBAC1, /*==>봐 Row:26 Col:33 */
+    /*0x6BEF, GB2312 Code:*/ 0xCCBA, /*==>遣 Row:44 Col:26 */
+    /*0x6BF3, GB2312 Code:*/ 0xEBA5, /*==>瑜 Row:75 Col:05 */
+    /*0x6BF5, GB2312 Code:*/ 0xEBA7, /*==>留 Row:75 Col:07 */
+    /*0x6BF9, GB2312 Code:*/ 0xEBA8, /*==>癒 Row:75 Col:08 */
+    /*0x6BFD, GB2312 Code:*/ 0xEBA6, /*==>由 Row:75 Col:06 */
+    /*0x6C05, GB2312 Code:*/ 0xEBA9, /*==>硫 Row:75 Col:09 */
+    /*0x6C06, GB2312 Code:*/ 0xEBAB, /*==>維 Row:75 Col:11 */
+    /*0x6C07, GB2312 Code:*/ 0xEBAA, /*==>紐 Row:75 Col:10 */
+    /*0x6C0D, GB2312 Code:*/ 0xEBAC, /*==>臾 Row:75 Col:12 */
+    /*0x6C0F, GB2312 Code:*/ 0xCACF, /*==>幹 Row:42 Col:47 */
+    /*0x6C10, GB2312 Code:*/ 0xD8B5, /*==>巒 Row:56 Col:21 */
+    /*0x6C11, GB2312 Code:*/ 0xC3F1, /*==>췽 Row:35 Col:81 */
+    /*0x6C13, GB2312 Code:*/ 0xC3A5, /*==>책 Row:35 Col:05 */
+    /*0x6C14, GB2312 Code:*/ 0xC6F8, /*==>폭 Row:38 Col:88 */
+    /*0x6C15, GB2312 Code:*/ 0xEBAD, /*==>萸 Row:75 Col:13 */
+    /*0x6C16, GB2312 Code:*/ 0xC4CA, /*==>켁 Row:36 Col:42 */
+    /*0x6C18, GB2312 Code:*/ 0xEBAE, /*==>裕 Row:75 Col:14 */
+    /*0x6C19, GB2312 Code:*/ 0xEBAF, /*==>誘 Row:75 Col:15 */
+    /*0x6C1A, GB2312 Code:*/ 0xEBB0, /*==>諛 Row:75 Col:16 */
+    /*0x6C1B, GB2312 Code:*/ 0xB7D5, /*==>롱 Row:23 Col:53 */
+    /*0x6C1F, GB2312 Code:*/ 0xB7FA, /*==>륙 Row:23 Col:90 */
+    /*0x6C21, GB2312 Code:*/ 0xEBB1, /*==>諭 Row:75 Col:17 */
+    /*0x6C22, GB2312 Code:*/ 0xC7E2, /*==>향 Row:39 Col:66 */
+    /*0x6C24, GB2312 Code:*/ 0xEBB3, /*==>蹂 Row:75 Col:19 */
+    /*0x6C26, GB2312 Code:*/ 0xBAA4, /*==>벡 Row:26 Col:04 */
+    /*0x6C27, GB2312 Code:*/ 0xD1F5, /*==>南 Row:49 Col:85 */
+    /*0x6C28, GB2312 Code:*/ 0xB0B1, /*==>갚 Row:16 Col:17 */
+    /*0x6C29, GB2312 Code:*/ 0xEBB2, /*==>踰 Row:75 Col:18 */
+    /*0x6C2A, GB2312 Code:*/ 0xEBB4, /*==>遊 Row:75 Col:20 */
+    /*0x6C2E, GB2312 Code:*/ 0xB5AA, /*==>뎁 Row:21 Col:10 */
+    /*0x6C2F, GB2312 Code:*/ 0xC2C8, /*==>쪘 Row:34 Col:40 */
+    /*0x6C30, GB2312 Code:*/ 0xC7E8, /*==>험 Row:39 Col:72 */
+    /*0x6C32, GB2312 Code:*/ 0xEBB5, /*==>逾 Row:75 Col:21 */
+    /*0x6C34, GB2312 Code:*/ 0xCBAE, /*==>彊 Row:43 Col:14 */
+    /*0x6C35, GB2312 Code:*/ 0xE3DF, /*==>伸 Row:67 Col:63 */
+    /*0x6C38, GB2312 Code:*/ 0xD3C0, /*==>湛 Row:51 Col:32 */
+    /*0x6C3D, GB2312 Code:*/ 0xD9DB, /*==>昴 Row:57 Col:59 */
+    /*0x6C40, GB2312 Code:*/ 0xCDA1, /*==>棨 Row:45 Col:01 */
+    /*0x6C41, GB2312 Code:*/ 0xD6AD, /*==>烈 Row:54 Col:13 */
+    /*0x6C42, GB2312 Code:*/ 0xC7F3, /*==>헹 Row:39 Col:83 */
+    /*0x6C46, GB2312 Code:*/ 0xD9E0, /*==>苗 Row:57 Col:64 */
+    /*0x6C47, GB2312 Code:*/ 0xBBE3, /*==>삠 Row:27 Col:67 */
+    /*0x6C49, GB2312 Code:*/ 0xBABA, /*==>볶 Row:26 Col:26 */
+    /*0x6C4A, GB2312 Code:*/ 0xE3E2, /*==>呻 Row:67 Col:66 */
+    /*0x6C50, GB2312 Code:*/ 0xCFAB, /*==>懼 Row:47 Col:11 */
+    /*0x6C54, GB2312 Code:*/ 0xE3E0, /*==>侁 Row:67 Col:64 */
+    /*0x6C55, GB2312 Code:*/ 0xC9C7, /*==>� Row:41 Col:39 */
+    /*0x6C57, GB2312 Code:*/ 0xBAB9, /*==>복 Row:26 Col:25 */
+    /*0x6C5B, GB2312 Code:*/ 0xD1B4, /*==>磯 Row:49 Col:20 */
+    /*0x6C5C, GB2312 Code:*/ 0xE3E1, /*==>信 Row:67 Col:65 */
+    /*0x6C5D, GB2312 Code:*/ 0xC8EA, /*==>흘 Row:40 Col:74 */
+    /*0x6C5E, GB2312 Code:*/ 0xB9AF, /*==>묻 Row:25 Col:15 */
+    /*0x6C5F, GB2312 Code:*/ 0xBDAD, /*==>쉭 Row:29 Col:13 */
+    /*0x6C60, GB2312 Code:*/ 0xB3D8, /*==>넥 Row:19 Col:56 */
+    /*0x6C61, GB2312 Code:*/ 0xCEDB, /*==>宏 Row:46 Col:59 */
+    /*0x6C64, GB2312 Code:*/ 0xCCC0, /*==>缺 Row:44 Col:32 */
+    /*0x6C68, GB2312 Code:*/ 0xE3E8, /*==>燼 Row:67 Col:72 */
+    /*0x6C69, GB2312 Code:*/ 0xE3E9, /*==>申 Row:67 Col:73 */
+    /*0x6C6A, GB2312 Code:*/ 0xCDF4, /*==>攻 Row:45 Col:84 */
+    /*0x6C70, GB2312 Code:*/ 0xCCAD, /*==>激 Row:44 Col:13 */
+    /*0x6C72, GB2312 Code:*/ 0xBCB3, /*==>설 Row:28 Col:19 */
+    /*0x6C74, GB2312 Code:*/ 0xE3EA, /*==>神 Row:67 Col:74 */
+    /*0x6C76, GB2312 Code:*/ 0xE3EB, /*==>紳 Row:67 Col:75 */
+    /*0x6C79, GB2312 Code:*/ 0xD0DA, /*==>衾 Row:48 Col:58 */
+    /*0x6C7D, GB2312 Code:*/ 0xC6FB, /*==>폼 Row:38 Col:91 */
+    /*0x6C7E, GB2312 Code:*/ 0xB7DA, /*==>뢰 Row:23 Col:58 */
+    /*0x6C81, GB2312 Code:*/ 0xC7DF, /*==>했 Row:39 Col:63 */
+    /*0x6C82, GB2312 Code:*/ 0xD2CA, /*==>路 Row:50 Col:42 */
+    /*0x6C83, GB2312 Code:*/ 0xCED6, /*==>怪 Row:46 Col:54 */
+    /*0x6C85, GB2312 Code:*/ 0xE3E4, /*==>宸 Row:67 Col:68 */
+    /*0x6C86, GB2312 Code:*/ 0xE3EC, /*==>腎 Row:67 Col:76 */
+    /*0x6C88, GB2312 Code:*/ 0xC9F2, /*==>� Row:41 Col:82 */
+    /*0x6C89, GB2312 Code:*/ 0xB3C1, /*==>냇 Row:19 Col:33 */
+    /*0x6C8C, GB2312 Code:*/ 0xE3E7, /*==>晨 Row:67 Col:71 */
+    /*0x6C8F, GB2312 Code:*/ 0xC6E3, /*==>펑 Row:38 Col:67 */
+    /*0x6C90, GB2312 Code:*/ 0xE3E5, /*==>愼 Row:67 Col:69 */
+    /*0x6C93, GB2312 Code:*/ 0xEDB3, /*==>炙 Row:77 Col:19 */
+    /*0x6C94, GB2312 Code:*/ 0xE3E6, /*==>新 Row:67 Col:70 */
+    /*0x6C99, GB2312 Code:*/ 0xC9B3, /*==>� Row:41 Col:19 */
+    /*0x6C9B, GB2312 Code:*/ 0xC5E6, /*==>톤 Row:37 Col:70 */
+    /*0x6C9F, GB2312 Code:*/ 0xB9B5, /*==>뭇 Row:25 Col:21 */
+    /*0x6CA1, GB2312 Code:*/ 0xC3BB, /*==>청 Row:35 Col:27 */
+    /*0x6CA3, GB2312 Code:*/ 0xE3E3, /*==>娠 Row:67 Col:67 */
+    /*0x6CA4, GB2312 Code:*/ 0xC5BD, /*==>탐 Row:37 Col:29 */
+    /*0x6CA5, GB2312 Code:*/ 0xC1A4, /*==>정 Row:33 Col:04 */
+    /*0x6CA6, GB2312 Code:*/ 0xC2D9, /*==>쬔 Row:34 Col:57 */
+    /*0x6CA7, GB2312 Code:*/ 0xB2D7, /*==>꾕 Row:18 Col:55 */
+    /*0x6CA9, GB2312 Code:*/ 0xE3ED, /*==>臣 Row:67 Col:77 */
+    /*0x6CAA, GB2312 Code:*/ 0xBBA6, /*==>빴 Row:27 Col:06 */
+    /*0x6CAB, GB2312 Code:*/ 0xC4AD, /*==>칸 Row:36 Col:13 */
+    /*0x6CAD, GB2312 Code:*/ 0xE3F0, /*==>藎 Row:67 Col:80 */
+    /*0x6CAE, GB2312 Code:*/ 0xBEDA, /*==>앰 Row:30 Col:58 */
+    /*0x6CB1, GB2312 Code:*/ 0xE3FB, /*==>審 Row:67 Col:91 */
+    /*0x6CB2, GB2312 Code:*/ 0xE3F5, /*==>辰 Row:67 Col:85 */
+    /*0x6CB3, GB2312 Code:*/ 0xBAD3, /*==>붉 Row:26 Col:51 */
+    /*0x6CB8, GB2312 Code:*/ 0xB7D0, /*==>론 Row:23 Col:48 */
+    /*0x6CB9, GB2312 Code:*/ 0xD3CD, /*==>答 Row:51 Col:45 */
+    /*0x6CBB, GB2312 Code:*/ 0xD6CE, /*==>撈 Row:54 Col:46 */
+    /*0x6CBC, GB2312 Code:*/ 0xD5D3, /*==>掠 Row:53 Col:51 */
+    /*0x6CBD, GB2312 Code:*/ 0xB9C1, /*==>뮐 Row:25 Col:33 */
+    /*0x6CBE, GB2312 Code:*/ 0xD5B4, /*==>爛 Row:53 Col:20 */
+    /*0x6CBF, GB2312 Code:*/ 0xD1D8, /*==>懶 Row:49 Col:56 */
+    /*0x6CC4, GB2312 Code:*/ 0xD0B9, /*==>橘 Row:48 Col:25 */
+    /*0x6CC5, GB2312 Code:*/ 0xC7F6, /*==>현 Row:39 Col:86 */
+    /*0x6CC9, GB2312 Code:*/ 0xC8AA, /*==>홋 Row:40 Col:10 */
+    /*0x6CCA, GB2312 Code:*/ 0xB2B4, /*==>껜 Row:18 Col:20 */
+    /*0x6CCC, GB2312 Code:*/ 0xC3DA, /*==>쵭 Row:35 Col:58 */
+    /*0x6CD0, GB2312 Code:*/ 0xE3EE, /*==>莘 Row:67 Col:78 */
+    /*0x6CD3, GB2312 Code:*/ 0xE3FC, /*==>尋 Row:67 Col:92 */
+    /*0x6CD4, GB2312 Code:*/ 0xE3EF, /*==>薪 Row:67 Col:79 */
+    /*0x6CD5, GB2312 Code:*/ 0xB7A8, /*==>랬 Row:23 Col:08 */
+    /*0x6CD6, GB2312 Code:*/ 0xE3F7, /*==>失 Row:67 Col:87 */
+    /*0x6CD7, GB2312 Code:*/ 0xE3F4, /*==>辛 Row:67 Col:84 */
+    /*0x6CDB, GB2312 Code:*/ 0xB7BA, /*==>렉 Row:23 Col:26 */
+    /*0x6CDE, GB2312 Code:*/ 0xC5A2, /*==>큅 Row:37 Col:02 */
+    /*0x6CE0, GB2312 Code:*/ 0xE3F6, /*==>迅 Row:67 Col:86 */
+    /*0x6CE1, GB2312 Code:*/ 0xC5DD, /*==>텟 Row:37 Col:61 */
+    /*0x6CE2, GB2312 Code:*/ 0xB2A8, /*==>꺼 Row:18 Col:08 */
+    /*0x6CE3, GB2312 Code:*/ 0xC6FC, /*==>폽 Row:38 Col:92 */
+    /*0x6CE5, GB2312 Code:*/ 0xC4E0, /*==>콧 Row:36 Col:64 */
+    /*0x6CE8, GB2312 Code:*/ 0xD7A2, /*==>鬧 Row:55 Col:02 */
+    /*0x6CEA, GB2312 Code:*/ 0xC0E1, /*==>잠 Row:32 Col:65 */
+    /*0x6CEB, GB2312 Code:*/ 0xE3F9, /*==>實 Row:67 Col:89 */
+    /*0x6CEE, GB2312 Code:*/ 0xE3FA, /*==>悉 Row:67 Col:90 */
+    /*0x6CEF, GB2312 Code:*/ 0xE3FD, /*==>心 Row:67 Col:93 */
+    /*0x6CF0, GB2312 Code:*/ 0xCCA9, /*==>揭 Row:44 Col:09 */
+    /*0x6CF1, GB2312 Code:*/ 0xE3F3, /*==>身 Row:67 Col:83 */
+    /*0x6CF3, GB2312 Code:*/ 0xD3BE, /*==>曇 Row:51 Col:30 */
+    /*0x6CF5, GB2312 Code:*/ 0xB1C3, /*==>궁 Row:17 Col:35 */
+    /*0x6CF6, GB2312 Code:*/ 0xEDB4, /*==>煮 Row:77 Col:20 */
+    /*0x6CF7, GB2312 Code:*/ 0xE3F1, /*==>蜃 Row:67 Col:81 */
+    /*0x6CF8, GB2312 Code:*/ 0xE3F2, /*==>訊 Row:67 Col:82 */
+    /*0x6CFA, GB2312 Code:*/ 0xE3F8, /*==>室 Row:67 Col:88 */
+    /*0x6CFB, GB2312 Code:*/ 0xD0BA, /*==>克 Row:48 Col:26 */
+    /*0x6CFC, GB2312 Code:*/ 0xC6C3, /*==>팅 Row:38 Col:35 */
+    /*0x6CFD, GB2312 Code:*/ 0xD4F3, /*==>燈 Row:52 Col:83 */
+    /*0x6CFE, GB2312 Code:*/ 0xE3FE, /*==>沁 Row:67 Col:94 */
+    /*0x6D01, GB2312 Code:*/ 0xBDE0, /*==>썅 Row:29 Col:64 */
+    /*0x6D04, GB2312 Code:*/ 0xE4A7, /*==>什 Row:68 Col:07 */
+    /*0x6D07, GB2312 Code:*/ 0xE4A6, /*==>諶 Row:68 Col:06 */
+    /*0x6D0B, GB2312 Code:*/ 0xD1F3, /*==>捏 Row:49 Col:83 */
+    /*0x6D0C, GB2312 Code:*/ 0xE4A3, /*==>瀋 Row:68 Col:03 */
+    /*0x6D0E, GB2312 Code:*/ 0xE4A9, /*==>拾 Row:68 Col:09 */
+    /*0x6D12, GB2312 Code:*/ 0xC8F7, /*==>히 Row:40 Col:87 */
+    /*0x6D17, GB2312 Code:*/ 0xCFB4, /*==>求 Row:47 Col:20 */
+    /*0x6D19, GB2312 Code:*/ 0xE4A8, /*==>十 Row:68 Col:08 */
+    /*0x6D1A, GB2312 Code:*/ 0xE4AE, /*==>兒 Row:68 Col:14 */
+    /*0x6D1B, GB2312 Code:*/ 0xC2E5, /*==>쭤 Row:34 Col:69 */
+    /*0x6D1E, GB2312 Code:*/ 0xB6B4, /*==>떪 Row:22 Col:20 */
+    /*0x6D25, GB2312 Code:*/ 0xBDF2, /*==>쏠 Row:29 Col:82 */
+    /*0x6D27, GB2312 Code:*/ 0xE4A2, /*==>深 Row:68 Col:02 */
+    /*0x6D2A, GB2312 Code:*/ 0xBAE9, /*==>븅 Row:26 Col:73 */
+    /*0x6D2B, GB2312 Code:*/ 0xE4AA, /*==>雙 Row:68 Col:10 */
+    /*0x6D2E, GB2312 Code:*/ 0xE4AC, /*==>亞 Row:68 Col:12 */
+    /*0x6D31, GB2312 Code:*/ 0xB6FD, /*==>랖 Row:22 Col:93 */
+    /*0x6D32, GB2312 Code:*/ 0xD6DE, /*==>碌 Row:54 Col:62 */
+    /*0x6D33, GB2312 Code:*/ 0xE4B2, /*==>我 Row:68 Col:18 */
+    /*0x6D35, GB2312 Code:*/ 0xE4AD, /*==>俄 Row:68 Col:13 */
+    /*0x6D39, GB2312 Code:*/ 0xE4A1, /*==>沈 Row:68 Col:01 */
+    /*0x6D3B, GB2312 Code:*/ 0xBBEE, /*==>삶 Row:27 Col:78 */
+    /*0x6D3C, GB2312 Code:*/ 0xCDDD, /*==>困 Row:45 Col:61 */
+    /*0x6D3D, GB2312 Code:*/ 0xC7A2, /*==>퐝 Row:39 Col:02 */
+    /*0x6D3E, GB2312 Code:*/ 0xC5C9, /*==>탰 Row:37 Col:41 */
+    /*0x6D41, GB2312 Code:*/ 0xC1F7, /*==>직 Row:33 Col:87 */
+    /*0x6D43, GB2312 Code:*/ 0xE4A4, /*==>甚 Row:68 Col:04 */
+    /*0x6D45, GB2312 Code:*/ 0xC7B3, /*==>풍 Row:39 Col:19 */
+    /*0x6D46, GB2312 Code:*/ 0xBDAC, /*==>쉬 Row:29 Col:12 */
+    /*0x6D47, GB2312 Code:*/ 0xBDBD, /*==>슬 Row:29 Col:29 */
+    /*0x6D48, GB2312 Code:*/ 0xE4A5, /*==>芯 Row:68 Col:05 */
+    /*0x6D4A, GB2312 Code:*/ 0xD7C7, /*==>輪 Row:55 Col:39 */
+    /*0x6D4B, GB2312 Code:*/ 0xB2E2, /*==>꿎 Row:18 Col:66 */
+    /*0x6D4D, GB2312 Code:*/ 0xE4AB, /*==>氏 Row:68 Col:11 */
+    /*0x6D4E, GB2312 Code:*/ 0xBCC3, /*==>셌 Row:28 Col:35 */
+    /*0x6D4F, GB2312 Code:*/ 0xE4AF, /*==>啞 Row:68 Col:15 */
+    /*0x6D51, GB2312 Code:*/ 0xBBEB, /*==>삳 Row:27 Col:75 */
+    /*0x6D52, GB2312 Code:*/ 0xE4B0, /*==>娥 Row:68 Col:16 */
+    /*0x6D53, GB2312 Code:*/ 0xC5A8, /*==>큠 Row:37 Col:08 */
+    /*0x6D54, GB2312 Code:*/ 0xE4B1, /*==>峨 Row:68 Col:17 */
+    /*0x6D59, GB2312 Code:*/ 0xD5E3, /*==>儷 Row:53 Col:67 */
+    /*0x6D5A, GB2312 Code:*/ 0xBFA3, /*==>엔 Row:31 Col:03 */
+    /*0x6D5C, GB2312 Code:*/ 0xE4BA, /*==>雅 Row:68 Col:26 */
+    /*0x6D5E, GB2312 Code:*/ 0xE4B7, /*==>衙 Row:68 Col:23 */
+    /*0x6D60, GB2312 Code:*/ 0xE4BB, /*==>餓 Row:68 Col:27 */
+    /*0x6D63, GB2312 Code:*/ 0xE4BD, /*==>鵝 Row:68 Col:29 */
+    /*0x6D66, GB2312 Code:*/ 0xC6D6, /*==>팻 Row:38 Col:54 */
+    /*0x6D69, GB2312 Code:*/ 0xBAC6, /*==>뵈 Row:26 Col:38 */
+    /*0x6D6A, GB2312 Code:*/ 0xC0CB, /*==>읫 Row:32 Col:43 */
+    /*0x6D6E, GB2312 Code:*/ 0xB8A1, /*==>륫 Row:24 Col:01 */
+    /*0x6D6F, GB2312 Code:*/ 0xE4B4, /*==>芽 Row:68 Col:20 */
+    /*0x6D74, GB2312 Code:*/ 0xD4A1, /*==>棹 Row:52 Col:01 */
+    /*0x6D77, GB2312 Code:*/ 0xBAA3, /*==>베 Row:26 Col:03 */
+    /*0x6D78, GB2312 Code:*/ 0xBDFE, /*==>쐰 Row:29 Col:94 */
+    /*0x6D7C, GB2312 Code:*/ 0xE4BC, /*==>鴉 Row:68 Col:28 */
+    /*0x6D82, GB2312 Code:*/ 0xCDBF, /*==>沽 Row:45 Col:31 */
+    /*0x6D85, GB2312 Code:*/ 0xC4F9, /*==>퀘 Row:36 Col:89 */
+    /*0x6D88, GB2312 Code:*/ 0xCFFB, /*==>句 Row:47 Col:91 */
+    /*0x6D89, GB2312 Code:*/ 0xC9E6, /*==>� Row:41 Col:70 */
+    /*0x6D8C, GB2312 Code:*/ 0xD3BF, /*==>淡 Row:51 Col:31 */
+    /*0x6D8E, GB2312 Code:*/ 0xCFD1, /*==>局 Row:47 Col:49 */
+    /*0x6D91, GB2312 Code:*/ 0xE4B3, /*==>牙 Row:68 Col:19 */
+    /*0x6D93, GB2312 Code:*/ 0xE4B8, /*==>訝 Row:68 Col:24 */
+    /*0x6D94, GB2312 Code:*/ 0xE4B9, /*==>阿 Row:68 Col:25 */
+    /*0x6D95, GB2312 Code:*/ 0xCCE9, /*==>耕 Row:44 Col:73 */
+    /*0x6D9B, GB2312 Code:*/ 0xCCCE, /*==>勍 Row:44 Col:46 */
+    /*0x6D9D, GB2312 Code:*/ 0xC0D4, /*==>입 Row:32 Col:52 */
+    /*0x6D9E, GB2312 Code:*/ 0xE4B5, /*==>莪 Row:68 Col:21 */
+    /*0x6D9F, GB2312 Code:*/ 0xC1B0, /*==>졀 Row:33 Col:16 */
+    /*0x6DA0, GB2312 Code:*/ 0xE4B6, /*==>蛾 Row:68 Col:22 */
+    /*0x6DA1, GB2312 Code:*/ 0xCED0, /*==>掛 Row:46 Col:48 */
+    /*0x6DA3, GB2312 Code:*/ 0xBBC1, /*==>뼉 Row:27 Col:33 */
+    /*0x6DA4, GB2312 Code:*/ 0xB5D3, /*==>둡 Row:21 Col:51 */
+    /*0x6DA6, GB2312 Code:*/ 0xC8F3, /*==>흴 Row:40 Col:83 */
+    /*0x6DA7, GB2312 Code:*/ 0xBDA7, /*==>쉑 Row:29 Col:07 */
+    /*0x6DA8, GB2312 Code:*/ 0xD5C7, /*==>朗 Row:53 Col:39 */
+    /*0x6DA9, GB2312 Code:*/ 0xC9AC, /*==>� Row:41 Col:12 */
+    /*0x6DAA, GB2312 Code:*/ 0xB8A2, /*==>륭 Row:24 Col:02 */
+    /*0x6DAB, GB2312 Code:*/ 0xE4CA, /*==>鰐 Row:68 Col:42 */
+    /*0x6DAE, GB2312 Code:*/ 0xE4CC, /*==>安 Row:68 Col:44 */
+    /*0x6DAF, GB2312 Code:*/ 0xD1C4, /*==>錡 Row:49 Col:36 */
+    /*0x6DB2, GB2312 Code:*/ 0xD2BA, /*==>捻 Row:50 Col:26 */
+    /*0x6DB5, GB2312 Code:*/ 0xBAAD, /*==>벼 Row:26 Col:13 */
+    /*0x6DB8, GB2312 Code:*/ 0xBAD4, /*==>붊 Row:26 Col:52 */
+    /*0x6DBF, GB2312 Code:*/ 0xE4C3, /*==>愕 Row:68 Col:35 */
+    /*0x6DC0, GB2312 Code:*/ 0xB5ED, /*==>듯 Row:21 Col:77 */
+    /*0x6DC4, GB2312 Code:*/ 0xD7CD, /*==>勒 Row:55 Col:45 */
+    /*0x6DC5, GB2312 Code:*/ 0xE4C0, /*==>嶽 Row:68 Col:32 */
+    /*0x6DC6, GB2312 Code:*/ 0xCFFD, /*==>歸 Row:47 Col:93 */
+    /*0x6DC7, GB2312 Code:*/ 0xE4BF, /*==>岳 Row:68 Col:31 */
+    /*0x6DCB, GB2312 Code:*/ 0xC1DC, /*==>줌 Row:33 Col:60 */
+    /*0x6DCC, GB2312 Code:*/ 0xCCCA, /*==>倞 Row:44 Col:42 */
+    /*0x6DD1, GB2312 Code:*/ 0xCAE7, /*==>葛 Row:42 Col:71 */
+    /*0x6DD6, GB2312 Code:*/ 0xC4D7, /*==>켰 Row:36 Col:55 */
+    /*0x6DD8, GB2312 Code:*/ 0xCCD4, /*==>慶 Row:44 Col:52 */
+    /*0x6DD9, GB2312 Code:*/ 0xE4C8, /*==>鍔 Row:68 Col:40 */
+    /*0x6DDD, GB2312 Code:*/ 0xE4C7, /*==>鄂 Row:68 Col:39 */
+    /*0x6DDE, GB2312 Code:*/ 0xE4C1, /*==>幄 Row:68 Col:33 */
+    /*0x6DE0, GB2312 Code:*/ 0xE4C4, /*==>握 Row:68 Col:36 */
+    /*0x6DE1, GB2312 Code:*/ 0xB5AD, /*==>뎅 Row:21 Col:13 */
+    /*0x6DE4, GB2312 Code:*/ 0xD3D9, /*==>螳 Row:51 Col:57 */
+    /*0x6DE6, GB2312 Code:*/ 0xE4C6, /*==>渥 Row:68 Col:38 */
+    /*0x6DEB, GB2312 Code:*/ 0xD2F9, /*==>尼 Row:50 Col:89 */
+    /*0x6DEC, GB2312 Code:*/ 0xB4E3, /*==>담 Row:20 Col:67 */
+    /*0x6DEE, GB2312 Code:*/ 0xBBB4, /*==>뺨 Row:27 Col:20 */
+    /*0x6DF1, GB2312 Code:*/ 0xC9EE, /*==>� Row:41 Col:78 */
+    /*0x6DF3, GB2312 Code:*/ 0xB4BE, /*==>늅 Row:20 Col:30 */
+    /*0x6DF7, GB2312 Code:*/ 0xBBEC, /*==>살 Row:27 Col:76 */
+    /*0x6DF9, GB2312 Code:*/ 0xD1CD, /*==>佶 Row:49 Col:45 */
+    /*0x6DFB, GB2312 Code:*/ 0xCCED, /*==>警 Row:44 Col:77 */
+    /*0x6DFC, GB2312 Code:*/ 0xEDB5, /*==>玆 Row:77 Col:21 */
+    /*0x6E05, GB2312 Code:*/ 0xC7E5, /*==>헌 Row:39 Col:69 */
+    /*0x6E0A, GB2312 Code:*/ 0xD4A8, /*==>盜 Row:52 Col:08 */
+    /*0x6E0C, GB2312 Code:*/ 0xE4CB, /*==>齷 Row:68 Col:43 */
+    /*0x6E0D, GB2312 Code:*/ 0xD7D5, /*==>陵 Row:55 Col:53 */
+    /*0x6E0E, GB2312 Code:*/ 0xE4C2, /*==>惡 Row:68 Col:34 */
+    /*0x6E10, GB2312 Code:*/ 0xBDA5, /*==>쉈 Row:29 Col:05 */
+    /*0x6E11, GB2312 Code:*/ 0xE4C5, /*==>樂 Row:68 Col:37 */
+    /*0x6E14, GB2312 Code:*/ 0xD3E6, /*==>臺 Row:51 Col:70 */
+    /*0x6E16, GB2312 Code:*/ 0xE4C9, /*==>顎 Row:68 Col:41 */
+    /*0x6E17, GB2312 Code:*/ 0xC9F8, /*==>� Row:41 Col:88 */
+    /*0x6E1A, GB2312 Code:*/ 0xE4BE, /*==>堊 Row:68 Col:30 */
+    /*0x6E1D, GB2312 Code:*/ 0xD3E5, /*==>玳 Row:51 Col:69 */
+    /*0x6E20, GB2312 Code:*/ 0xC7FE, /*==>혠 Row:39 Col:94 */
+    /*0x6E21, GB2312 Code:*/ 0xB6C9, /*==>똔 Row:22 Col:41 */
+    /*0x6E23, GB2312 Code:*/ 0xD4FC, /*==>拏 Row:52 Col:92 */
+    /*0x6E24, GB2312 Code:*/ 0xB2B3, /*==>껙 Row:18 Col:19 */
+    /*0x6E25, GB2312 Code:*/ 0xE4D7, /*==>謁 Row:68 Col:55 */
+    /*0x6E29, GB2312 Code:*/ 0xCEC2, /*==>侊 Row:46 Col:34 */
+    /*0x6E2B, GB2312 Code:*/ 0xE4CD, /*==>岸 Row:68 Col:45 */
+    /*0x6E2D, GB2312 Code:*/ 0xCEBC, /*==>關 Row:46 Col:28 */
+    /*0x6E2F, GB2312 Code:*/ 0xB8DB, /*==>멍 Row:24 Col:59 */
+    /*0x6E32, GB2312 Code:*/ 0xE4D6, /*==>斡 Row:68 Col:54 */
+    /*0x6E34, GB2312 Code:*/ 0xBFCA, /*==>옷 Row:31 Col:42 */
+    /*0x6E38, GB2312 Code:*/ 0xD3CE, /*==>踏 Row:51 Col:46 */
+    /*0x6E3A, GB2312 Code:*/ 0xC3EC, /*==>췬 Row:35 Col:76 */
+    /*0x6E43, GB2312 Code:*/ 0xC5C8, /*==>탯 Row:37 Col:40 */
+    /*0x6E44, GB2312 Code:*/ 0xE4D8, /*==>軋 Row:68 Col:56 */
+    /*0x6E4D, GB2312 Code:*/ 0xCDC4, /*==>羔 Row:45 Col:36 */
+    /*0x6E4E, GB2312 Code:*/ 0xE4CF, /*==>晏 Row:68 Col:47 */
+    /*0x6E53, GB2312 Code:*/ 0xE4D4, /*==>顔 Row:68 Col:52 */
+    /*0x6E54, GB2312 Code:*/ 0xE4D5, /*==>鮟 Row:68 Col:53 */
+    /*0x6E56, GB2312 Code:*/ 0xBAFE, /*==>빤 Row:26 Col:94 */
+    /*0x6E58, GB2312 Code:*/ 0xCFE6, /*==>倦 Row:47 Col:70 */
+    /*0x6E5B, GB2312 Code:*/ 0xD5BF, /*==>纜 Row:53 Col:31 */
+    /*0x6E5F, GB2312 Code:*/ 0xE4D2, /*==>雁 Row:68 Col:50 */
+    /*0x6E6B, GB2312 Code:*/ 0xE4D0, /*==>案 Row:68 Col:48 */
+    /*0x6E6E, GB2312 Code:*/ 0xE4CE, /*==>按 Row:68 Col:46 */
+    /*0x6E7E, GB2312 Code:*/ 0xCDE5, /*==>袞 Row:45 Col:69 */
+    /*0x6E7F, GB2312 Code:*/ 0xCAAA, /*==>嫁 Row:42 Col:10 */
+    /*0x6E83, GB2312 Code:*/ 0xC0A3, /*==>웰 Row:32 Col:03 */
+    /*0x6E85, GB2312 Code:*/ 0xBDA6, /*==>쉐 Row:29 Col:06 */
+    /*0x6E86, GB2312 Code:*/ 0xE4D3, /*==>鞍 Row:68 Col:51 */
+    /*0x6E89, GB2312 Code:*/ 0xB8C8, /*==>맬 Row:24 Col:40 */
+    /*0x6E8F, GB2312 Code:*/ 0xE4E7, /*==>央 Row:68 Col:71 */
+    /*0x6E90, GB2312 Code:*/ 0xD4B4, /*==>都 Row:52 Col:20 */
+    /*0x6E98, GB2312 Code:*/ 0xE4DB, /*==>岩 Row:68 Col:59 */
+    /*0x6E9C, GB2312 Code:*/ 0xC1EF, /*==>즉 Row:33 Col:79 */
+    /*0x6E9F, GB2312 Code:*/ 0xE4E9, /*==>昻 Row:68 Col:73 */
+    /*0x6EA2, GB2312 Code:*/ 0xD2E7, /*==>淚 Row:50 Col:71 */
+    /*0x6EA5, GB2312 Code:*/ 0xE4DF, /*==>癌 Row:68 Col:63 */
+    /*0x6EA7, GB2312 Code:*/ 0xE4E0, /*==>菴 Row:68 Col:64 */
+    /*0x6EAA, GB2312 Code:*/ 0xCFAA, /*==>廐 Row:47 Col:10 */
+    /*0x6EAF, GB2312 Code:*/ 0xCBDD, /*==>巨 Row:43 Col:61 */
+    /*0x6EB1, GB2312 Code:*/ 0xE4DA, /*==>唵 Row:68 Col:58 */
+    /*0x6EB2, GB2312 Code:*/ 0xE4D1, /*==>眼 Row:68 Col:49 */
+    /*0x6EB4, GB2312 Code:*/ 0xE4E5, /*==>鴨 Row:68 Col:69 */
+    /*0x6EB6, GB2312 Code:*/ 0xC8DC, /*==>휫 Row:40 Col:60 */
+    /*0x6EB7, GB2312 Code:*/ 0xE4E3, /*==>押 Row:68 Col:67 */
+    /*0x6EBA, GB2312 Code:*/ 0xC4E7, /*==>쾅 Row:36 Col:71 */
+    /*0x6EBB, GB2312 Code:*/ 0xE4E2, /*==>壓 Row:68 Col:66 */
+    /*0x6EBD, GB2312 Code:*/ 0xE4E1, /*==>闇 Row:68 Col:65 */
+    /*0x6EC1, GB2312 Code:*/ 0xB3FC, /*==>뇔 Row:19 Col:92 */
+    /*0x6EC2, GB2312 Code:*/ 0xE4E8, /*==>怏 Row:68 Col:72 */
+    /*0x6EC7, GB2312 Code:*/ 0xB5E1, /*==>듄 Row:21 Col:65 */
+    /*0x6ECB, GB2312 Code:*/ 0xD7CC, /*==>隆 Row:55 Col:44 */
+    /*0x6ECF, GB2312 Code:*/ 0xE4E6, /*==>仰 Row:68 Col:70 */
+    /*0x6ED1, GB2312 Code:*/ 0xBBAC, /*==>뺄 Row:27 Col:12 */
+    /*0x6ED3, GB2312 Code:*/ 0xD7D2, /*==>稜 Row:55 Col:50 */
+    /*0x6ED4, GB2312 Code:*/ 0xCCCF, /*==>卿 Row:44 Col:47 */
+    /*0x6ED5, GB2312 Code:*/ 0xEBF8, /*==>矣 Row:75 Col:88 */
+    /*0x6ED7, GB2312 Code:*/ 0xE4E4, /*==>狎 Row:68 Col:68 */
+    /*0x6EDA, GB2312 Code:*/ 0xB9F6, /*==>버 Row:25 Col:86 */
+    /*0x6EDE, GB2312 Code:*/ 0xD6CD, /*==>怒 Row:54 Col:45 */
+    /*0x6EDF, GB2312 Code:*/ 0xE4D9, /*==>閼 Row:68 Col:57 */
+    /*0x6EE0, GB2312 Code:*/ 0xE4DC, /*==>巖 Row:68 Col:60 */
+    /*0x6EE1, GB2312 Code:*/ 0xC2FA, /*==>찮 Row:34 Col:90 */
+    /*0x6EE2, GB2312 Code:*/ 0xE4DE, /*==>暗 Row:68 Col:62 */
+    /*0x6EE4, GB2312 Code:*/ 0xC2CB, /*==>쫀 Row:34 Col:43 */
+    /*0x6EE5, GB2312 Code:*/ 0xC0C4, /*==>읕 Row:32 Col:36 */
+    /*0x6EE6, GB2312 Code:*/ 0xC2D0, /*==>쫑 Row:34 Col:48 */
+    /*0x6EE8, GB2312 Code:*/ 0xB1F5, /*==>깝 Row:17 Col:85 */
+    /*0x6EE9, GB2312 Code:*/ 0xCCB2, /*==>牽 Row:44 Col:18 */
+    /*0x6EF4, GB2312 Code:*/ 0xB5CE, /*==>두 Row:21 Col:46 */
+    /*0x6EF9, GB2312 Code:*/ 0xE4EF, /*==>埃 Row:68 Col:79 */
+    /*0x6F02, GB2312 Code:*/ 0xC6AF, /*==>특 Row:38 Col:15 */
+    /*0x6F06, GB2312 Code:*/ 0xC6E1, /*==>펏 Row:38 Col:65 */
+    /*0x6F09, GB2312 Code:*/ 0xE4F5, /*==>艾 Row:68 Col:85 */
+    /*0x6F0F, GB2312 Code:*/ 0xC2A9, /*==>짤 Row:34 Col:09 */
+    /*0x6F13, GB2312 Code:*/ 0xC0EC, /*==>잽 Row:32 Col:76 */
+    /*0x6F14, GB2312 Code:*/ 0xD1DD, /*==>蘿 Row:49 Col:61 */
+    /*0x6F15, GB2312 Code:*/ 0xE4EE, /*==>哀 Row:68 Col:78 */
+    /*0x6F20, GB2312 Code:*/ 0xC4AE, /*==>칼 Row:36 Col:14 */
+    /*0x6F24, GB2312 Code:*/ 0xE4ED, /*==>厓 Row:68 Col:77 */
+    /*0x6F29, GB2312 Code:*/ 0xE4F6, /*==>隘 Row:68 Col:86 */
+    /*0x6F2A, GB2312 Code:*/ 0xE4F4, /*==>碍 Row:68 Col:84 */
+    /*0x6F2B, GB2312 Code:*/ 0xC2FE, /*==>찻 Row:34 Col:94 */
+    /*0x6F2D, GB2312 Code:*/ 0xE4DD, /*==>庵 Row:68 Col:61 */
+    /*0x6F2F, GB2312 Code:*/ 0xE4F0, /*==>崖 Row:68 Col:80 */
+    /*0x6F31, GB2312 Code:*/ 0xCAFE, /*==>龕 Row:42 Col:94 */
+    /*0x6F33, GB2312 Code:*/ 0xD5C4, /*==>臘 Row:53 Col:36 */
+    /*0x6F36, GB2312 Code:*/ 0xE4F1, /*==>愛 Row:68 Col:81 */
+    /*0x6F3E, GB2312 Code:*/ 0xD1FA, /*==>濫 Row:49 Col:90 */
+    /*0x6F46, GB2312 Code:*/ 0xE4EB, /*==>秧 Row:68 Col:75 */
+    /*0x6F47, GB2312 Code:*/ 0xE4EC, /*==>鴦 Row:68 Col:76 */
+    /*0x6F4B, GB2312 Code:*/ 0xE4F2, /*==>曖 Row:68 Col:82 */
+    /*0x6F4D, GB2312 Code:*/ 0xCEAB, /*==>藿 Row:46 Col:11 */
+    /*0x6F58, GB2312 Code:*/ 0xC5CB, /*==>탸 Row:37 Col:43 */
+    /*0x6F5C, GB2312 Code:*/ 0xC7B1, /*==>풉 Row:39 Col:17 */
+    /*0x6F5E, GB2312 Code:*/ 0xC2BA, /*==>쨘 Row:34 Col:26 */
+    /*0x6F62, GB2312 Code:*/ 0xE4EA, /*==>殃 Row:68 Col:74 */
+    /*0x6F66, GB2312 Code:*/ 0xC1CA, /*==>좽 Row:33 Col:42 */
+    /*0x6F6D, GB2312 Code:*/ 0xCCB6, /*==>繭 Row:44 Col:22 */
+    /*0x6F6E, GB2312 Code:*/ 0xB3B1, /*==>낢 Row:19 Col:17 */
+    /*0x6F72, GB2312 Code:*/ 0xE4FB, /*==>液 Row:68 Col:91 */
+    /*0x6F74, GB2312 Code:*/ 0xE4F3, /*==>涯 Row:68 Col:83 */
+    /*0x6F78, GB2312 Code:*/ 0xE4FA, /*==>掖 Row:68 Col:90 */
+    /*0x6F7A, GB2312 Code:*/ 0xE4FD, /*==>腋 Row:68 Col:93 */
+    /*0x6F7C, GB2312 Code:*/ 0xE4FC, /*==>縊 Row:68 Col:92 */
+    /*0x6F84, GB2312 Code:*/ 0xB3CE, /*==>널 Row:19 Col:46 */
+    /*0x6F88, GB2312 Code:*/ 0xB3BA, /*==>낳 Row:19 Col:26 */
+    /*0x6F89, GB2312 Code:*/ 0xE4F7, /*==>靄 Row:68 Col:87 */
+    /*0x6F8C, GB2312 Code:*/ 0xE4F9, /*==>扼 Row:68 Col:89 */
+    /*0x6F8D, GB2312 Code:*/ 0xE4F8, /*==>厄 Row:68 Col:88 */
+    /*0x6F8E, GB2312 Code:*/ 0xC5EC, /*==>톺 Row:37 Col:76 */
+    /*0x6F9C, GB2312 Code:*/ 0xC0BD, /*==>음 Row:32 Col:29 */
+    /*0x6FA1, GB2312 Code:*/ 0xD4E8, /*==>逗 Row:52 Col:72 */
+    /*0x6FA7, GB2312 Code:*/ 0xE5A2, /*==>罌 Row:69 Col:02 */
+    /*0x6FB3, GB2312 Code:*/ 0xB0C4, /*==>걜 Row:16 Col:36 */
+    /*0x6FB6, GB2312 Code:*/ 0xE5A4, /*==>鸚 Row:69 Col:04 */
+    /*0x6FB9, GB2312 Code:*/ 0xE5A3, /*==>鶯 Row:69 Col:03 */
+    /*0x6FC0, GB2312 Code:*/ 0xBCA4, /*==>샴 Row:28 Col:04 */
+    /*0x6FC2, GB2312 Code:*/ 0xE5A5, /*==>也 Row:69 Col:05 */
+    /*0x6FC9, GB2312 Code:*/ 0xE5A1, /*==>櫻 Row:69 Col:01 */
+    /*0x6FD1, GB2312 Code:*/ 0xE4FE, /*==>額 Row:68 Col:94 */
+    /*0x6FD2, GB2312 Code:*/ 0xB1F4, /*==>깜 Row:17 Col:84 */
+    /*0x6FDE, GB2312 Code:*/ 0xE5A8, /*==>夜 Row:69 Col:08 */
+    /*0x6FE0, GB2312 Code:*/ 0xE5A9, /*==>惹 Row:69 Col:09 */
+    /*0x6FE1, GB2312 Code:*/ 0xE5A6, /*==>倻 Row:69 Col:06 */
+    /*0x6FEE, GB2312 Code:*/ 0xE5A7, /*==>冶 Row:69 Col:07 */
+    /*0x6FEF, GB2312 Code:*/ 0xE5AA, /*==>揶 Row:69 Col:10 */
+    /*0x7011, GB2312 Code:*/ 0xC6D9, /*==>퍄 Row:38 Col:57 */
+    /*0x701A, GB2312 Code:*/ 0xE5AB, /*==>椰 Row:69 Col:11 */
+    /*0x701B, GB2312 Code:*/ 0xE5AD, /*==>耶 Row:69 Col:13 */
+    /*0x7023, GB2312 Code:*/ 0xE5AC, /*==>爺 Row:69 Col:12 */
+    /*0x7035, GB2312 Code:*/ 0xE5AF, /*==>野 Row:69 Col:15 */
+    /*0x7039, GB2312 Code:*/ 0xE5AE, /*==>若 Row:69 Col:14 */
+    /*0x704C, GB2312 Code:*/ 0xB9E0, /*==>밝 Row:25 Col:64 */
+    /*0x704F, GB2312 Code:*/ 0xE5B0, /*==>弱 Row:69 Col:16 */
+    /*0x705E, GB2312 Code:*/ 0xE5B1, /*==>掠 Row:69 Col:17 */
+    /*0x706B, GB2312 Code:*/ 0xBBF0, /*==>삽 Row:27 Col:80 */
+    /*0x706C, GB2312 Code:*/ 0xECE1, /*==>藺 Row:76 Col:65 */
+    /*0x706D, GB2312 Code:*/ 0xC3F0, /*==>췻 Row:35 Col:80 */
+    /*0x706F, GB2312 Code:*/ 0xB5C6, /*==>됐 Row:21 Col:38 */
+    /*0x7070, GB2312 Code:*/ 0xBBD2, /*==>뿍 Row:27 Col:50 */
+    /*0x7075, GB2312 Code:*/ 0xC1E9, /*==>쥣 Row:33 Col:73 */
+    /*0x7076, GB2312 Code:*/ 0xD4EE, /*==>遯 Row:52 Col:78 */
+    /*0x7078, GB2312 Code:*/ 0xBEC4, /*==>씻 Row:30 Col:36 */
+    /*0x707C, GB2312 Code:*/ 0xD7C6, /*==>綸 Row:55 Col:38 */
+    /*0x707E, GB2312 Code:*/ 0xD4D6, /*==>棟 Row:52 Col:54 */
+    /*0x707F, GB2312 Code:*/ 0xB2D3, /*==>꾄 Row:18 Col:51 */
+    /*0x7080, GB2312 Code:*/ 0xECBE, /*==>苡 Row:76 Col:30 */
+    /*0x7085, GB2312 Code:*/ 0xEAC1, /*==>阮 Row:74 Col:33 */
+    /*0x7089, GB2312 Code:*/ 0xC2AF, /*==>짱 Row:34 Col:15 */
+    /*0x708A, GB2312 Code:*/ 0xB4B6, /*==>뉜 Row:20 Col:22 */
+    /*0x708E, GB2312 Code:*/ 0xD1D7, /*==>懦 Row:49 Col:55 */
+    /*0x7092, GB2312 Code:*/ 0xB3B4, /*==>낫 Row:19 Col:20 */
+    /*0x7094, GB2312 Code:*/ 0xC8B2, /*==>황 Row:40 Col:18 */
+    /*0x7095, GB2312 Code:*/ 0xBFBB, /*==>옐 Row:31 Col:27 */
+    /*0x7096, GB2312 Code:*/ 0xECC0, /*==>裏 Row:76 Col:32 */
+    /*0x7099, GB2312 Code:*/ 0xD6CB, /*==>隷 Row:54 Col:43 */
+    /*0x709C, GB2312 Code:*/ 0xECBF, /*==>荑 Row:76 Col:31 */
+    /*0x709D, GB2312 Code:*/ 0xECC1, /*==>裡 Row:76 Col:33 */
+    /*0x70AB, GB2312 Code:*/ 0xECC5, /*==>里 Row:76 Col:37 */
+    /*0x70AC, GB2312 Code:*/ 0xBEE6, /*==>얏 Row:30 Col:70 */
+    /*0x70AD, GB2312 Code:*/ 0xCCBF, /*==>結 Row:44 Col:31 */
+    /*0x70AE, GB2312 Code:*/ 0xC5DA, /*==>텔 Row:37 Col:58 */
+    /*0x70AF, GB2312 Code:*/ 0xBEBC, /*==>씔 Row:30 Col:28 */
+    /*0x70B1, GB2312 Code:*/ 0xECC6, /*==>離 Row:76 Col:38 */
+    /*0x70B3, GB2312 Code:*/ 0xB1FE, /*==>깸 Row:17 Col:94 */
+    /*0x70B7, GB2312 Code:*/ 0xECC4, /*==>邇 Row:76 Col:36 */
+    /*0x70B8, GB2312 Code:*/ 0xD5A8, /*==>珞 Row:53 Col:08 */
+    /*0x70B9, GB2312 Code:*/ 0xB5E3, /*==>듐 Row:21 Col:67 */
+    /*0x70BB, GB2312 Code:*/ 0xECC2, /*==>貽 Row:76 Col:34 */
+    /*0x70BC, GB2312 Code:*/ 0xC1B6, /*==>조 Row:33 Col:22 */
+    /*0x70BD, GB2312 Code:*/ 0xB3E3, /*==>녈 Row:19 Col:67 */
+    /*0x70C0, GB2312 Code:*/ 0xECC3, /*==>貳 Row:76 Col:35 */
+    /*0x70C1, GB2312 Code:*/ 0xCBB8, /*==>舡 Row:43 Col:24 */
+    /*0x70C2, GB2312 Code:*/ 0xC0C3, /*==>읔 Row:32 Col:35 */
+    /*0x70C3, GB2312 Code:*/ 0xCCFE, /*==>械 Row:44 Col:94 */
+    /*0x70C8, GB2312 Code:*/ 0xC1D2, /*==>죠 Row:33 Col:50 */
+    /*0x70CA, GB2312 Code:*/ 0xECC8, /*==>餌 Row:76 Col:40 */
+    /*0x70D8, GB2312 Code:*/ 0xBAE6, /*==>뷸 Row:26 Col:70 */
+    /*0x70D9, GB2312 Code:*/ 0xC0D3, /*==>임 Row:32 Col:51 */
+    /*0x70DB, GB2312 Code:*/ 0xD6F2, /*==>賚 Row:54 Col:82 */
+    /*0x70DF, GB2312 Code:*/ 0xD1CC, /*==>緊 Row:49 Col:44 */
+    /*0x70E4, GB2312 Code:*/ 0xBFBE, /*==>옛 Row:31 Col:30 */
+    /*0x70E6, GB2312 Code:*/ 0xB7B3, /*==>럼 Row:23 Col:19 */
+    /*0x70E7, GB2312 Code:*/ 0xC9D5, /*==>� Row:41 Col:53 */
+    /*0x70E8, GB2312 Code:*/ 0xECC7, /*==>飴 Row:76 Col:39 */
+    /*0x70E9, GB2312 Code:*/ 0xBBE2, /*==>삘 Row:27 Col:66 */
+    /*0x70EB, GB2312 Code:*/ 0xCCCC, /*==>儆 Row:44 Col:44 */
+    /*0x70EC, GB2312 Code:*/ 0xBDFD, /*==>쐬 Row:29 Col:93 */
+    /*0x70ED, GB2312 Code:*/ 0xC8C8, /*==>훑 Row:40 Col:40 */
+    /*0x70EF, GB2312 Code:*/ 0xCFA9, /*==>嶇 Row:47 Col:09 */
+    /*0x70F7, GB2312 Code:*/ 0xCDE9, /*==>骨 Row:45 Col:73 */
+    /*0x70F9, GB2312 Code:*/ 0xC5EB, /*==>통 Row:37 Col:75 */
+    /*0x70FD, GB2312 Code:*/ 0xB7E9, /*==>룬 Row:23 Col:73 */
+    /*0x7109, GB2312 Code:*/ 0xD1C9, /*==>騏 Row:49 Col:41 */
+    /*0x710A, GB2312 Code:*/ 0xBAB8, /*==>보 Row:26 Col:24 */
+    /*0x7110, GB2312 Code:*/ 0xECC9, /*==>匿 Row:76 Col:41 */
+    /*0x7113, GB2312 Code:*/ 0xECCA, /*==>溺 Row:76 Col:42 */
+    /*0x7115, GB2312 Code:*/ 0xBBC0, /*==>뼈 Row:27 Col:32 */
+    /*0x7116, GB2312 Code:*/ 0xECCB, /*==>瀷 Row:76 Col:43 */
+    /*0x7118, GB2312 Code:*/ 0xECE2, /*==>蚓 Row:76 Col:66 */
+    /*0x7119, GB2312 Code:*/ 0xB1BA, /*==>군 Row:17 Col:26 */
+    /*0x711A, GB2312 Code:*/ 0xB7D9, /*==>뢨 Row:23 Col:57 */
+    /*0x7126, GB2312 Code:*/ 0xBDB9, /*==>슝 Row:29 Col:25 */
+    /*0x712F, GB2312 Code:*/ 0xECCC, /*==>益 Row:76 Col:44 */
+    /*0x7130, GB2312 Code:*/ 0xD1E6, /*==>落 Row:49 Col:70 */
+    /*0x7131, GB2312 Code:*/ 0xECCD, /*==>翊 Row:76 Col:45 */
+    /*0x7136, GB2312 Code:*/ 0xC8BB, /*==>횔 Row:40 Col:27 */
+    /*0x7145, GB2312 Code:*/ 0xECD1, /*==>人 Row:76 Col:49 */
+    /*0x714A, GB2312 Code:*/ 0xECD3, /*==>刃 Row:76 Col:51 */
+    /*0x714C, GB2312 Code:*/ 0xBBCD, /*==>뽕 Row:27 Col:45 */
+    /*0x714E, GB2312 Code:*/ 0xBCE5, /*==>쇔 Row:28 Col:69 */
+    /*0x715C, GB2312 Code:*/ 0xECCF, /*==>翼 Row:76 Col:47 */
+    /*0x715E, GB2312 Code:*/ 0xC9B7, /*==>� Row:41 Col:23 */
+    /*0x7164, GB2312 Code:*/ 0xC3BA, /*==>첬 Row:35 Col:26 */
+    /*0x7166, GB2312 Code:*/ 0xECE3, /*==>認 Row:76 Col:67 */
+    /*0x7167, GB2312 Code:*/ 0xD5D5, /*==>亮 Row:53 Col:53 */
+    /*0x7168, GB2312 Code:*/ 0xECD0, /*==>謚 Row:76 Col:48 */
+    /*0x716E, GB2312 Code:*/ 0xD6F3, /*==>賴 Row:54 Col:83 */
+    /*0x7172, GB2312 Code:*/ 0xECD2, /*==>仁 Row:76 Col:50 */
+    /*0x7173, GB2312 Code:*/ 0xECCE, /*==>翌 Row:76 Col:46 */
+    /*0x7178, GB2312 Code:*/ 0xECD4, /*==>印 Row:76 Col:52 */
+    /*0x717A, GB2312 Code:*/ 0xECD5, /*==>吝 Row:76 Col:53 */
+    /*0x717D, GB2312 Code:*/ 0xC9BF, /*==>� Row:41 Col:31 */
+    /*0x7184, GB2312 Code:*/ 0xCFA8, /*==>寇 Row:47 Col:08 */
+    /*0x718A, GB2312 Code:*/ 0xD0DC, /*==>襟 Row:48 Col:60 */
+    /*0x718F, GB2312 Code:*/ 0xD1AC, /*==>玘 Row:49 Col:12 */
+    /*0x7194, GB2312 Code:*/ 0xC8DB, /*==>휩 Row:40 Col:59 */
+    /*0x7198, GB2312 Code:*/ 0xECD6, /*==>咽 Row:76 Col:54 */
+    /*0x7199, GB2312 Code:*/ 0xCEF5, /*==>餃 Row:46 Col:85 */
+    /*0x719F, GB2312 Code:*/ 0xCAEC, /*==>坎 Row:42 Col:76 */
+    /*0x71A0, GB2312 Code:*/ 0xECDA, /*==>引 Row:76 Col:58 */
+    /*0x71A8, GB2312 Code:*/ 0xECD9, /*==>寅 Row:76 Col:57 */
+    /*0x71AC, GB2312 Code:*/ 0xB0BE, /*==>갼 Row:16 Col:30 */
+    /*0x71B3, GB2312 Code:*/ 0xECD7, /*==>因 Row:76 Col:55 */
+    /*0x71B5, GB2312 Code:*/ 0xECD8, /*==>姻 Row:76 Col:56 */
+    /*0x71B9, GB2312 Code:*/ 0xECE4, /*==>隣 Row:76 Col:68 */
+    /*0x71C3, GB2312 Code:*/ 0xC8BC, /*==>횝 Row:40 Col:28 */
+    /*0x71CE, GB2312 Code:*/ 0xC1C7, /*==>좡 Row:33 Col:39 */
+    /*0x71D4, GB2312 Code:*/ 0xECDC, /*==>湮 Row:76 Col:60 */
+    /*0x71D5, GB2312 Code:*/ 0xD1E0, /*==>邏 Row:49 Col:64 */
+    /*0x71E0, GB2312 Code:*/ 0xECDB, /*==>忍 Row:76 Col:59 */
+    /*0x71E5, GB2312 Code:*/ 0xD4EF, /*==>鈍 Row:52 Col:79 */
+    /*0x71E7, GB2312 Code:*/ 0xECDD, /*==>燐 Row:76 Col:61 */
+    /*0x71EE, GB2312 Code:*/ 0xDBC6, /*==>培 Row:59 Col:38 */
+    /*0x71F9, GB2312 Code:*/ 0xECDE, /*==>璘 Row:76 Col:62 */
+    /*0x7206, GB2312 Code:*/ 0xB1AC, /*==>괵 Row:17 Col:12 */
+    /*0x721D, GB2312 Code:*/ 0xECDF, /*==>絪 Row:76 Col:63 */
+    /*0x7228, GB2312 Code:*/ 0xECE0, /*==>茵 Row:76 Col:64 */
+    /*0x722A, GB2312 Code:*/ 0xD7A6, /*==>屢 Row:55 Col:06 */
+    /*0x722C, GB2312 Code:*/ 0xC5C0, /*==>탔 Row:37 Col:32 */
+    /*0x7230, GB2312 Code:*/ 0xEBBC, /*==>堉 Row:75 Col:28 */
+    /*0x7231, GB2312 Code:*/ 0xB0AE, /*==>갖 Row:16 Col:14 */
+    /*0x7235, GB2312 Code:*/ 0xBEF4, /*==>얽 Row:30 Col:84 */
+    /*0x7236, GB2312 Code:*/ 0xB8B8, /*==>만 Row:24 Col:24 */
+    /*0x7237, GB2312 Code:*/ 0xD2AF, /*==>奈 Row:50 Col:15 */
+    /*0x7238, GB2312 Code:*/ 0xB0D6, /*==>겔 Row:16 Col:54 */
+    /*0x7239, GB2312 Code:*/ 0xB5F9, /*==>딩 Row:21 Col:89 */
+    /*0x723B, GB2312 Code:*/ 0xD8B3, /*==>卍 Row:56 Col:19 */
+    /*0x723D, GB2312 Code:*/ 0xCBAC, /*==>康 Row:43 Col:12 */
+    /*0x723F, GB2312 Code:*/ 0xE3DD, /*==>食 Row:67 Col:61 */
+    /*0x7247, GB2312 Code:*/ 0xC6AC, /*==>튬 Row:38 Col:12 */
+    /*0x7248, GB2312 Code:*/ 0xB0E6, /*==>경 Row:16 Col:70 */
+    /*0x724C, GB2312 Code:*/ 0xC5C6, /*==>탬 Row:37 Col:38 */
+    /*0x724D, GB2312 Code:*/ 0xEBB9, /*==>鍮 Row:75 Col:25 */
+    /*0x7252, GB2312 Code:*/ 0xEBBA, /*==>類 Row:75 Col:26 */
+    /*0x7256, GB2312 Code:*/ 0xEBBB, /*==>六 Row:75 Col:27 */
+    /*0x7259, GB2312 Code:*/ 0xD1C0, /*==>記 Row:49 Col:32 */
+    /*0x725B, GB2312 Code:*/ 0xC5A3, /*==>큇 Row:37 Col:03 */
+    /*0x725D, GB2312 Code:*/ 0xEAF2, /*==>攸 Row:74 Col:82 */
+    /*0x725F, GB2312 Code:*/ 0xC4B2, /*==>캉 Row:36 Col:18 */
+    /*0x7261, GB2312 Code:*/ 0xC4B5, /*==>캔 Row:36 Col:21 */
+    /*0x7262, GB2312 Code:*/ 0xC0CE, /*==>인 Row:32 Col:46 */
+    /*0x7266, GB2312 Code:*/ 0xEAF3, /*==>有 Row:74 Col:83 */
+    /*0x7267, GB2312 Code:*/ 0xC4C1, /*==>컨 Row:36 Col:33 */
+    /*0x7269, GB2312 Code:*/ 0xCEEF, /*==>膠 Row:46 Col:79 */
+    /*0x726E, GB2312 Code:*/ 0xEAF0, /*==>愉 Row:74 Col:80 */
+    /*0x726F, GB2312 Code:*/ 0xEAF4, /*==>杻 Row:74 Col:84 */
+    /*0x7272, GB2312 Code:*/ 0xC9FC, /*==>� Row:41 Col:92 */
+    /*0x7275, GB2312 Code:*/ 0xC7A3, /*==>푀 Row:39 Col:03 */
+    /*0x7279, GB2312 Code:*/ 0xCCD8, /*==>景 Row:44 Col:56 */
+    /*0x727A, GB2312 Code:*/ 0xCEFE, /*==>勾 Row:46 Col:94 */
+    /*0x727E, GB2312 Code:*/ 0xEAF5, /*==>柔 Row:74 Col:85 */
+    /*0x727F, GB2312 Code:*/ 0xEAF6, /*==>柚 Row:74 Col:86 */
+    /*0x7280, GB2312 Code:*/ 0xCFAC, /*==>拘 Row:47 Col:12 */
+    /*0x7281, GB2312 Code:*/ 0xC0E7, /*==>재 Row:32 Col:71 */
+    /*0x7284, GB2312 Code:*/ 0xEAF7, /*==>柳 Row:74 Col:87 */
+    /*0x728A, GB2312 Code:*/ 0xB6BF, /*==>뗄 Row:22 Col:31 */
+    /*0x728B, GB2312 Code:*/ 0xEAF8, /*==>楡 Row:74 Col:88 */
+    /*0x728D, GB2312 Code:*/ 0xEAF9, /*==>楢 Row:74 Col:89 */
+    /*0x728F, GB2312 Code:*/ 0xEAFA, /*==>油 Row:74 Col:90 */
+    /*0x7292, GB2312 Code:*/ 0xEAFB, /*==>洧 Row:74 Col:91 */
+    /*0x729F, GB2312 Code:*/ 0xEAF1, /*==>揄 Row:74 Col:81 */
+    /*0x72AC, GB2312 Code:*/ 0xC8AE, /*==>확 Row:40 Col:14 */
+    /*0x72AD, GB2312 Code:*/ 0xE1EB, /*==>頌 Row:65 Col:75 */
+    /*0x72AF, GB2312 Code:*/ 0xB7B8, /*==>렇 Row:23 Col:24 */
+    /*0x72B0, GB2312 Code:*/ 0xE1EC, /*==>刷 Row:65 Col:76 */
+    /*0x72B4, GB2312 Code:*/ 0xE1ED, /*==>殺 Row:65 Col:77 */
+    /*0x72B6, GB2312 Code:*/ 0xD7B4, /*==>榴 Row:55 Col:20 */
+    /*0x72B7, GB2312 Code:*/ 0xE1EE, /*==>灑 Row:65 Col:78 */
+    /*0x72B8, GB2312 Code:*/ 0xE1EF, /*==>碎 Row:65 Col:79 */
+    /*0x72B9, GB2312 Code:*/ 0xD3CC, /*==>畓 Row:51 Col:44 */
+    /*0x72C1, GB2312 Code:*/ 0xE1F1, /*==>衰 Row:65 Col:81 */
+    /*0x72C2, GB2312 Code:*/ 0xBFF1, /*==>욺 Row:31 Col:81 */
+    /*0x72C3, GB2312 Code:*/ 0xE1F0, /*==>鎖 Row:65 Col:80 */
+    /*0x72C4, GB2312 Code:*/ 0xB5D2, /*==>둠 Row:21 Col:50 */
+    /*0x72C8, GB2312 Code:*/ 0xB1B7, /*==>굣 Row:17 Col:23 */
+    /*0x72CD, GB2312 Code:*/ 0xE1F3, /*==>修 Row:65 Col:83 */
+    /*0x72CE, GB2312 Code:*/ 0xE1F2, /*==>釗 Row:65 Col:82 */
+    /*0x72D0, GB2312 Code:*/ 0xBAFC, /*==>빠 Row:26 Col:92 */
+    /*0x72D2, GB2312 Code:*/ 0xE1F4, /*==>受 Row:65 Col:84 */
+    /*0x72D7, GB2312 Code:*/ 0xB9B7, /*==>뭍 Row:25 Col:23 */
+    /*0x72D9, GB2312 Code:*/ 0xBED1, /*==>앗 Row:30 Col:49 */
+    /*0x72DE, GB2312 Code:*/ 0xC4FC, /*==>퀵 Row:36 Col:92 */
+    /*0x72E0, GB2312 Code:*/ 0xBADD, /*==>붰 Row:26 Col:61 */
+    /*0x72E1, GB2312 Code:*/ 0xBDC6, /*==>싣 Row:29 Col:38 */
+    /*0x72E8, GB2312 Code:*/ 0xE1F5, /*==>嗽 Row:65 Col:85 */
+    /*0x72E9, GB2312 Code:*/ 0xE1F7, /*==>垂 Row:65 Col:87 */
+    /*0x72EC, GB2312 Code:*/ 0xB6C0, /*==>뗌 Row:22 Col:32 */
+    /*0x72ED, GB2312 Code:*/ 0xCFC1, /*==>舊 Row:47 Col:33 */
+    /*0x72EE, GB2312 Code:*/ 0xCAA8, /*==>哥 Row:42 Col:08 */
+    /*0x72EF, GB2312 Code:*/ 0xE1F6, /*==>囚 Row:65 Col:86 */
+    /*0x72F0, GB2312 Code:*/ 0xD5F8, /*==>礫 Row:53 Col:88 */
+    /*0x72F1, GB2312 Code:*/ 0xD3FC, /*==>掉 Row:51 Col:92 */
+    /*0x72F2, GB2312 Code:*/ 0xE1F8, /*==>壽 Row:65 Col:88 */
+    /*0x72F3, GB2312 Code:*/ 0xE1FC, /*==>峀 Row:65 Col:92 */
+    /*0x72F4, GB2312 Code:*/ 0xE1F9, /*==>嫂 Row:65 Col:89 */
+    /*0x72F7, GB2312 Code:*/ 0xE1FA, /*==>守 Row:65 Col:90 */
+    /*0x72F8, GB2312 Code:*/ 0xC0EA, /*==>잴 Row:32 Col:74 */
+    /*0x72FA, GB2312 Code:*/ 0xE1FE, /*==>愁 Row:65 Col:94 */
+    /*0x72FB, GB2312 Code:*/ 0xE2A1, /*==>戍 Row:66 Col:01 */
+    /*0x72FC, GB2312 Code:*/ 0xC0C7, /*==>의 Row:32 Col:39 */
+    /*0x7301, GB2312 Code:*/ 0xE1FB, /*==>岫 Row:65 Col:91 */
+    /*0x7303, GB2312 Code:*/ 0xE1FD, /*==>帥 Row:65 Col:93 */
+    /*0x730A, GB2312 Code:*/ 0xE2A5, /*==>收 Row:66 Col:05 */
+    /*0x730E, GB2312 Code:*/ 0xC1D4, /*==>죤 Row:33 Col:52 */
+    /*0x7313, GB2312 Code:*/ 0xE2A3, /*==>授 Row:66 Col:03 */
+    /*0x7315, GB2312 Code:*/ 0xE2A8, /*==>殊 Row:66 Col:08 */
+    /*0x7316, GB2312 Code:*/ 0xB2FE, /*==>끙 Row:18 Col:94 */
+    /*0x7317, GB2312 Code:*/ 0xE2A2, /*==>手 Row:66 Col:02 */
+    /*0x731B, GB2312 Code:*/ 0xC3CD, /*==>촐 Row:35 Col:45 */
+    /*0x731C, GB2312 Code:*/ 0xB2C2, /*==>꼲 Row:18 Col:34 */
+    /*0x731D, GB2312 Code:*/ 0xE2A7, /*==>樹 Row:66 Col:07 */
+    /*0x731E, GB2312 Code:*/ 0xE2A6, /*==>數 Row:66 Col:06 */
+    /*0x7321, GB2312 Code:*/ 0xE2A4, /*==>搜 Row:66 Col:04 */
+    /*0x7322, GB2312 Code:*/ 0xE2A9, /*==>水 Row:66 Col:09 */
+    /*0x7325, GB2312 Code:*/ 0xE2AB, /*==>漱 Row:66 Col:11 */
+    /*0x7329, GB2312 Code:*/ 0xD0C9, /*==>筋 Row:48 Col:41 */
+    /*0x732A, GB2312 Code:*/ 0xD6ED, /*==>儡 Row:54 Col:77 */
+    /*0x732B, GB2312 Code:*/ 0xC3A8, /*==>챔 Row:35 Col:08 */
+    /*0x732C, GB2312 Code:*/ 0xE2AC, /*==>燧 Row:66 Col:12 */
+    /*0x732E, GB2312 Code:*/ 0xCFD7, /*==>窘 Row:47 Col:55 */
+    /*0x7331, GB2312 Code:*/ 0xE2AE, /*==>獸 Row:66 Col:14 */
+    /*0x7334, GB2312 Code:*/ 0xBAEF, /*==>븝 Row:26 Col:79 */
+    /*0x7337, GB2312 Code:*/ 0xE9E0, /*==>禹 Row:73 Col:64 */
+    /*0x7338, GB2312 Code:*/ 0xE2AD, /*==>狩 Row:66 Col:13 */
+    /*0x7339, GB2312 Code:*/ 0xE2AA, /*==>洙 Row:66 Col:10 */
+    /*0x733E, GB2312 Code:*/ 0xBBAB, /*==>뺀 Row:27 Col:11 */
+    /*0x733F, GB2312 Code:*/ 0xD4B3, /*==>道 Row:52 Col:19 */
+    /*0x734D, GB2312 Code:*/ 0xE2B0, /*==>璲 Row:66 Col:16 */
+    /*0x7350, GB2312 Code:*/ 0xE2AF, /*==>琇 Row:66 Col:15 */
+    /*0x7352, GB2312 Code:*/ 0xE9E1, /*==>紆 Row:73 Col:65 */
+    /*0x7357, GB2312 Code:*/ 0xE2B1, /*==>瘦 Row:66 Col:17 */
+    /*0x7360, GB2312 Code:*/ 0xE2B2, /*==>睡 Row:66 Col:18 */
+    /*0x736C, GB2312 Code:*/ 0xE2B3, /*==>秀 Row:66 Col:19 */
+    /*0x736D, GB2312 Code:*/ 0xCCA1, /*==>瞼 Row:44 Col:01 */
+    /*0x736F, GB2312 Code:*/ 0xE2B4, /*==>穗 Row:66 Col:20 */
+    /*0x737E, GB2312 Code:*/ 0xE2B5, /*==>竪 Row:66 Col:21 */
+    /*0x7384, GB2312 Code:*/ 0xD0FE, /*==>旣 Row:48 Col:94 */
+    /*0x7387, GB2312 Code:*/ 0xC2CA, /*==>쪽 Row:34 Col:42 */
+    /*0x7389, GB2312 Code:*/ 0xD3F1, /*==>圖 Row:51 Col:81 */
+    /*0x738B, GB2312 Code:*/ 0xCDF5, /*==>珙 Row:45 Col:85 */
+    /*0x738E, GB2312 Code:*/ 0xE7E0, /*==>裔 Row:71 Col:64 */
+    /*0x7391, GB2312 Code:*/ 0xE7E1, /*==>詣 Row:71 Col:65 */
+    /*0x7396, GB2312 Code:*/ 0xBEC1, /*==>씰 Row:30 Col:33 */
+    /*0x739B, GB2312 Code:*/ 0xC2EA, /*==>쯔 Row:34 Col:74 */
+    /*0x739F, GB2312 Code:*/ 0xE7E4, /*==>醴 Row:71 Col:68 */
+    /*0x73A2, GB2312 Code:*/ 0xE7E3, /*==>豫 Row:71 Col:67 */
+    /*0x73A9, GB2312 Code:*/ 0xCDE6, /*==>鯤 Row:45 Col:70 */
+    /*0x73AB, GB2312 Code:*/ 0xC3B5, /*==>천 Row:35 Col:21 */
+    /*0x73AE, GB2312 Code:*/ 0xE7E2, /*==>譽 Row:71 Col:66 */
+    /*0x73AF, GB2312 Code:*/ 0xBBB7, /*==>뻔 Row:27 Col:23 */
+    /*0x73B0, GB2312 Code:*/ 0xCFD6, /*==>君 Row:47 Col:54 */
+    /*0x73B2, GB2312 Code:*/ 0xC1E1, /*==>줬 Row:33 Col:65 */
+    /*0x73B3, GB2312 Code:*/ 0xE7E9, /*==>五 Row:71 Col:73 */
+    /*0x73B7, GB2312 Code:*/ 0xE7E8, /*==>預 Row:71 Col:72 */
+    /*0x73BA, GB2312 Code:*/ 0xE7F4, /*==>娛 Row:71 Col:84 */
+    /*0x73BB, GB2312 Code:*/ 0xB2A3, /*==>깼 Row:18 Col:03 */
+    /*0x73C0, GB2312 Code:*/ 0xE7EA, /*==>伍 Row:71 Col:74 */
+    /*0x73C2, GB2312 Code:*/ 0xE7E6, /*==>隸 Row:71 Col:70 */
+    /*0x73C8, GB2312 Code:*/ 0xE7EC, /*==>傲 Row:71 Col:76 */
+    /*0x73C9, GB2312 Code:*/ 0xE7EB, /*==>俉 Row:71 Col:75 */
+    /*0x73CA, GB2312 Code:*/ 0xC9BA, /*==>� Row:41 Col:26 */
+    /*0x73CD, GB2312 Code:*/ 0xD5E4, /*==>勵 Row:53 Col:68 */
+    /*0x73CF, GB2312 Code:*/ 0xE7E5, /*==>銳 Row:71 Col:69 */
+    /*0x73D0, GB2312 Code:*/ 0xB7A9, /*==>랭 Row:23 Col:09 */
+    /*0x73D1, GB2312 Code:*/ 0xE7E7, /*==>霓 Row:71 Col:71 */
+    /*0x73D9, GB2312 Code:*/ 0xE7EE, /*==>吾 Row:71 Col:78 */
+    /*0x73DE, GB2312 Code:*/ 0xE7F3, /*==>奧 Row:71 Col:83 */
+    /*0x73E0, GB2312 Code:*/ 0xD6E9, /*==>瀧 Row:54 Col:73 */
+    /*0x73E5, GB2312 Code:*/ 0xE7ED, /*==>午 Row:71 Col:77 */
+    /*0x73E7, GB2312 Code:*/ 0xE7F2, /*==>墺 Row:71 Col:82 */
+    /*0x73E9, GB2312 Code:*/ 0xE7F1, /*==>塢 Row:71 Col:81 */
+    /*0x73ED, GB2312 Code:*/ 0xB0E0, /*==>겯 Row:16 Col:64 */
+    /*0x73F2, GB2312 Code:*/ 0xE7F5, /*==>寤 Row:71 Col:85 */
+    /*0x7403, GB2312 Code:*/ 0xC7F2, /*==>헷 Row:39 Col:82 */
+    /*0x7405, GB2312 Code:*/ 0xC0C5, /*==>읖 Row:32 Col:37 */
+    /*0x7406, GB2312 Code:*/ 0xC0ED, /*==>잿 Row:32 Col:77 */
+    /*0x7409, GB2312 Code:*/ 0xC1F0, /*==>즌 Row:33 Col:80 */
+    /*0x740A, GB2312 Code:*/ 0xE7F0, /*==>嗚 Row:71 Col:80 */
+    /*0x740F, GB2312 Code:*/ 0xE7F6, /*==>悟 Row:71 Col:86 */
+    /*0x7410, GB2312 Code:*/ 0xCBF6, /*==>騫 Row:43 Col:86 */
+    /*0x741A, GB2312 Code:*/ 0xE8A2, /*==>熬 Row:72 Col:02 */
+    /*0x741B, GB2312 Code:*/ 0xE8A1, /*==>烏 Row:72 Col:01 */
+    /*0x7422, GB2312 Code:*/ 0xD7C1, /*==>陸 Row:55 Col:33 */
+    /*0x7425, GB2312 Code:*/ 0xE7FA, /*==>旿 Row:71 Col:90 */
+    /*0x7426, GB2312 Code:*/ 0xE7F9, /*==>敖 Row:71 Col:89 */
+    /*0x7428, GB2312 Code:*/ 0xE7FB, /*==>晤 Row:71 Col:91 */
+    /*0x742A, GB2312 Code:*/ 0xE7F7, /*==>惡 Row:71 Col:87 */
+    /*0x742C, GB2312 Code:*/ 0xE7FE, /*==>澳 Row:71 Col:94 */
+    /*0x742E, GB2312 Code:*/ 0xE7FD, /*==>汚 Row:71 Col:93 */
+    /*0x7430, GB2312 Code:*/ 0xE7FC, /*==>梧 Row:71 Col:92 */
+    /*0x7433, GB2312 Code:*/ 0xC1D5, /*==>죵 Row:33 Col:53 */
+    /*0x7434, GB2312 Code:*/ 0xC7D9, /*==>핵 Row:39 Col:57 */
+    /*0x7435, GB2312 Code:*/ 0xC5FD, /*==>퉈 Row:37 Col:93 */
+    /*0x7436, GB2312 Code:*/ 0xC5C3, /*==>택 Row:37 Col:35 */
+    /*0x743C, GB2312 Code:*/ 0xC7ED, /*==>헥 Row:39 Col:77 */
+    /*0x7441, GB2312 Code:*/ 0xE8A3, /*==>獒 Row:72 Col:03 */
+    /*0x7455, GB2312 Code:*/ 0xE8A6, /*==>誤 Row:72 Col:06 */
+    /*0x7457, GB2312 Code:*/ 0xE8A5, /*==>蜈 Row:72 Col:05 */
+    /*0x7459, GB2312 Code:*/ 0xE8A7, /*==>鰲 Row:72 Col:07 */
+    /*0x745A, GB2312 Code:*/ 0xBAF7, /*==>빕 Row:26 Col:87 */
+    /*0x745B, GB2312 Code:*/ 0xE7F8, /*==>懊 Row:71 Col:88 */
+    /*0x745C, GB2312 Code:*/ 0xE8A4, /*==>筽 Row:72 Col:04 */
+    /*0x745E, GB2312 Code:*/ 0xC8F0, /*==>흩 Row:40 Col:80 */
+    /*0x745F, GB2312 Code:*/ 0xC9AA, /*==>� Row:41 Col:10 */
+    /*0x746D, GB2312 Code:*/ 0xE8A9, /*==>屋 Row:72 Col:09 */
+    /*0x7470, GB2312 Code:*/ 0xB9E5, /*==>밧 Row:25 Col:69 */
+    /*0x7476, GB2312 Code:*/ 0xD1FE, /*==>拉 Row:49 Col:94 */
+    /*0x7477, GB2312 Code:*/ 0xE8A8, /*==>鼇 Row:72 Col:08 */
+    /*0x747E, GB2312 Code:*/ 0xE8AA, /*==>沃 Row:72 Col:10 */
+    /*0x7480, GB2312 Code:*/ 0xE8AD, /*==>鈺 Row:72 Col:13 */
+    /*0x7481, GB2312 Code:*/ 0xE8AE, /*==>溫 Row:72 Col:14 */
+    /*0x7483, GB2312 Code:*/ 0xC1A7, /*==>젝 Row:33 Col:07 */
+    /*0x7487, GB2312 Code:*/ 0xE8AF, /*==>瑥 Row:72 Col:15 */
+    /*0x748B, GB2312 Code:*/ 0xE8B0, /*==>瘟 Row:72 Col:16 */
+    /*0x748E, GB2312 Code:*/ 0xE8AC, /*==>玉 Row:72 Col:12 */
+    /*0x7490, GB2312 Code:*/ 0xE8B4, /*==>兀 Row:72 Col:20 */
+    /*0x749C, GB2312 Code:*/ 0xE8AB, /*==>獄 Row:72 Col:11 */
+    /*0x749E, GB2312 Code:*/ 0xE8B1, /*==>穩 Row:72 Col:17 */
+    /*0x74A7, GB2312 Code:*/ 0xE8B5, /*==>壅 Row:72 Col:21 */
+    /*0x74A8, GB2312 Code:*/ 0xE8B2, /*==>縕 Row:72 Col:18 */
+    /*0x74A9, GB2312 Code:*/ 0xE8B3, /*==>蘊 Row:72 Col:19 */
+    /*0x74BA, GB2312 Code:*/ 0xE8B7, /*==>瓮 Row:72 Col:23 */
+    /*0x74D2, GB2312 Code:*/ 0xE8B6, /*==>擁 Row:72 Col:22 */
+    /*0x74DC, GB2312 Code:*/ 0xB9CF, /*==>믿 Row:25 Col:47 */
+    /*0x74DE, GB2312 Code:*/ 0xF0AC, /*==>梯 Row:80 Col:12 */
+    /*0x74E0, GB2312 Code:*/ 0xF0AD, /*==>濟 Row:80 Col:13 */
+    /*0x74E2, GB2312 Code:*/ 0xC6B0, /*==>튼 Row:38 Col:16 */
+    /*0x74E3, GB2312 Code:*/ 0xB0EA, /*==>곌 Row:16 Col:74 */
+    /*0x74E4, GB2312 Code:*/ 0xC8BF, /*==>효 Row:40 Col:31 */
+    /*0x74E6, GB2312 Code:*/ 0xCDDF, /*==>崑 Row:45 Col:63 */
+    /*0x74EE, GB2312 Code:*/ 0xCECD, /*==>胱 Row:46 Col:45 */
+    /*0x74EF, GB2312 Code:*/ 0xEAB1, /*==>嫄 Row:74 Col:17 */
+    /*0x74F4, GB2312 Code:*/ 0xEAB2, /*==>寃 Row:74 Col:18 */
+    /*0x74F6, GB2312 Code:*/ 0xC6BF, /*==>틸 Row:38 Col:31 */
+    /*0x74F7, GB2312 Code:*/ 0xB4C9, /*==>능 Row:20 Col:41 */
+    /*0x74FF, GB2312 Code:*/ 0xEAB3, /*==>怨 Row:74 Col:19 */
+    /*0x7504, GB2312 Code:*/ 0xD5E7, /*==>慮 Row:53 Col:71 */
+    /*0x750D, GB2312 Code:*/ 0xDDF9, /*==>秕 Row:61 Col:89 */
+    /*0x750F, GB2312 Code:*/ 0xEAB4, /*==>愿 Row:74 Col:20 */
+    /*0x7511, GB2312 Code:*/ 0xEAB5, /*==>援 Row:74 Col:21 */
+    /*0x7513, GB2312 Code:*/ 0xEAB6, /*==>沅 Row:74 Col:22 */
+    /*0x7518, GB2312 Code:*/ 0xB8CA, /*==>맵 Row:24 Col:42 */
+    /*0x7519, GB2312 Code:*/ 0xDFB0, /*==>煞 Row:63 Col:16 */
+    /*0x751A, GB2312 Code:*/ 0xC9F5, /*==>� Row:41 Col:85 */
+    /*0x751C, GB2312 Code:*/ 0xCCF0, /*==>鏡 Row:44 Col:80 */
+    /*0x751F, GB2312 Code:*/ 0xC9FA, /*==>� Row:41 Col:90 */
+    /*0x7525, GB2312 Code:*/ 0xC9FB, /*==>� Row:41 Col:91 */
+    /*0x7528, GB2312 Code:*/ 0xD3C3, /*==>痰 Row:51 Col:35 */
+    /*0x7529, GB2312 Code:*/ 0xCBA6, /*==>閘 Row:43 Col:06 */
+    /*0x752B, GB2312 Code:*/ 0xB8A6, /*==>를 Row:24 Col:06 */
+    /*0x752C, GB2312 Code:*/ 0xF0AE, /*==>祭 Row:80 Col:14 */
+    /*0x752D, GB2312 Code:*/ 0xB1C2, /*==>굿 Row:17 Col:34 */
+    /*0x752F, GB2312 Code:*/ 0xE5B8, /*==>躍 Row:69 Col:24 */
+    /*0x7530, GB2312 Code:*/ 0xCCEF, /*==>逕 Row:44 Col:79 */
+    /*0x7531, GB2312 Code:*/ 0xD3C9, /*==>譚 Row:51 Col:41 */
+    /*0x7532, GB2312 Code:*/ 0xBCD7, /*==>솖 Row:28 Col:55 */
+    /*0x7533, GB2312 Code:*/ 0xC9EA, /*==>� Row:41 Col:74 */
+    /*0x7535, GB2312 Code:*/ 0xB5E7, /*==>든 Row:21 Col:71 */
+    /*0x7537, GB2312 Code:*/ 0xC4D0, /*==>켕 Row:36 Col:48 */
+    /*0x7538, GB2312 Code:*/ 0xB5E9, /*==>들 Row:21 Col:73 */
+    /*0x753A, GB2312 Code:*/ 0xEEAE, /*==>裁 Row:78 Col:14 */
+    /*0x753B, GB2312 Code:*/ 0xBBAD, /*==>뺌 Row:27 Col:13 */
+    /*0x753E, GB2312 Code:*/ 0xE7DE, /*==>蘂 Row:71 Col:62 */
+    /*0x7540, GB2312 Code:*/ 0xEEAF, /*==>財 Row:78 Col:15 */
+    /*0x7545, GB2312 Code:*/ 0xB3A9, /*==>낑 Row:19 Col:09 */
+    /*0x7548, GB2312 Code:*/ 0xEEB2, /*==>齎 Row:78 Col:18 */
+    /*0x754B, GB2312 Code:*/ 0xEEB1, /*==>齋 Row:78 Col:17 */
+    /*0x754C, GB2312 Code:*/ 0xBDE7, /*==>썹 Row:29 Col:71 */
+    /*0x754E, GB2312 Code:*/ 0xEEB0, /*==>載 Row:78 Col:16 */
+    /*0x754F, GB2312 Code:*/ 0xCEB7, /*==>管 Row:46 Col:23 */
+    /*0x7554, GB2312 Code:*/ 0xC5CF, /*==>턴 Row:37 Col:47 */
+    /*0x7559, GB2312 Code:*/ 0xC1F4, /*==>즛 Row:33 Col:84 */
+    /*0x755A, GB2312 Code:*/ 0xDBCE, /*==>背 Row:59 Col:46 */
+    /*0x755B, GB2312 Code:*/ 0xEEB3, /*==>爭 Row:78 Col:19 */
+    /*0x755C, GB2312 Code:*/ 0xD0F3, /*==>夔 Row:48 Col:83 */
+    /*0x7565, GB2312 Code:*/ 0xC2D4, /*==>쫠 Row:34 Col:52 */
+    /*0x7566, GB2312 Code:*/ 0xC6E8, /*==>펨 Row:38 Col:72 */
+    /*0x756A, GB2312 Code:*/ 0xB7AC, /*==>랸 Row:23 Col:12 */
+    /*0x7572, GB2312 Code:*/ 0xEEB4, /*==>箏 Row:78 Col:20 */
+    /*0x7574, GB2312 Code:*/ 0xB3EB, /*==>노 Row:19 Col:75 */
+    /*0x7578, GB2312 Code:*/ 0xBBFB, /*==>샛 Row:27 Col:91 */
+    /*0x7579, GB2312 Code:*/ 0xEEB5, /*==>諍 Row:78 Col:21 */
+    /*0x757F, GB2312 Code:*/ 0xE7DC, /*==>芮 Row:71 Col:60 */
+    /*0x7583, GB2312 Code:*/ 0xEEB6, /*==>錚 Row:78 Col:22 */
+    /*0x7586, GB2312 Code:*/ 0xBDAE, /*==>쉰 Row:29 Col:14 */
+    /*0x758B, GB2312 Code:*/ 0xF1E2, /*==>竣 Row:81 Col:66 */
+    /*0x758F, GB2312 Code:*/ 0xCAE8, /*==>褐 Row:42 Col:72 */
+    /*0x7591, GB2312 Code:*/ 0xD2C9, /*==>虜 Row:50 Col:41 */
+    /*0x7592, GB2312 Code:*/ 0xF0DA, /*==>組 Row:80 Col:58 */
+    /*0x7594, GB2312 Code:*/ 0xF0DB, /*==>繰 Row:80 Col:59 */
+    /*0x7596, GB2312 Code:*/ 0xF0DC, /*==>肇 Row:80 Col:60 */
+    /*0x7597, GB2312 Code:*/ 0xC1C6, /*==>좟 Row:33 Col:38 */
+    /*0x7599, GB2312 Code:*/ 0xB8ED, /*==>명 Row:24 Col:77 */
+    /*0x759A, GB2312 Code:*/ 0xBECE, /*==>앓 Row:30 Col:46 */
+    /*0x759D, GB2312 Code:*/ 0xF0DE, /*==>蚤 Row:80 Col:62 */
+    /*0x759F, GB2312 Code:*/ 0xC5B1, /*==>킥 Row:37 Col:17 */
+    /*0x75A0, GB2312 Code:*/ 0xF0DD, /*==>藻 Row:80 Col:61 */
+    /*0x75A1, GB2312 Code:*/ 0xD1F1, /*==>難 Row:49 Col:81 */
+    /*0x75A3, GB2312 Code:*/ 0xF0E0, /*==>調 Row:80 Col:64 */
+    /*0x75A4, GB2312 Code:*/ 0xB0CC, /*==>겁 Row:16 Col:44 */
+    /*0x75A5, GB2312 Code:*/ 0xBDEA, /*==>쎄 Row:29 Col:74 */
+    /*0x75AB, GB2312 Code:*/ 0xD2DF, /*==>磊 Row:50 Col:63 */
+    /*0x75AC, GB2312 Code:*/ 0xF0DF, /*==>詔 Row:80 Col:63 */
+    /*0x75AE, GB2312 Code:*/ 0xB4AF, /*==>눕 Row:20 Col:15 */
+    /*0x75AF, GB2312 Code:*/ 0xB7E8, /*==>룩 Row:23 Col:72 */
+    /*0x75B0, GB2312 Code:*/ 0xF0E6, /*==>阻 Row:80 Col:70 */
+    /*0x75B1, GB2312 Code:*/ 0xF0E5, /*==>釣 Row:80 Col:69 */
+    /*0x75B2, GB2312 Code:*/ 0xC6A3, /*==>튁 Row:38 Col:03 */
+    /*0x75B3, GB2312 Code:*/ 0xF0E1, /*==>趙 Row:80 Col:65 */
+    /*0x75B4, GB2312 Code:*/ 0xF0E2, /*==>躁 Row:80 Col:66 */
+    /*0x75B5, GB2312 Code:*/ 0xB4C3, /*==>늘 Row:20 Col:35 */
+    /*0x75B8, GB2312 Code:*/ 0xF0E3, /*==>造 Row:80 Col:67 */
+    /*0x75B9, GB2312 Code:*/ 0xD5EE, /*==>蠣 Row:53 Col:78 */
+    /*0x75BC, GB2312 Code:*/ 0xCCDB, /*==>梗 Row:44 Col:59 */
+    /*0x75BD, GB2312 Code:*/ 0xBED2, /*==>았 Row:30 Col:50 */
+    /*0x75BE, GB2312 Code:*/ 0xBCB2, /*==>섣 Row:28 Col:18 */
+    /*0x75C2, GB2312 Code:*/ 0xF0E8, /*==>鳥 Row:80 Col:72 */
+    /*0x75C3, GB2312 Code:*/ 0xF0E7, /*==>雕 Row:80 Col:71 */
+    /*0x75C4, GB2312 Code:*/ 0xF0E4, /*==>遭 Row:80 Col:68 */
+    /*0x75C5, GB2312 Code:*/ 0xB2A1, /*==>깹 Row:18 Col:01 */
+    /*0x75C7, GB2312 Code:*/ 0xD6A2, /*==>璉 Row:54 Col:02 */
+    /*0x75C8, GB2312 Code:*/ 0xD3B8, /*==>疸 Row:51 Col:24 */
+    /*0x75C9, GB2312 Code:*/ 0xBEB7, /*==>쓿 Row:30 Col:23 */
+    /*0x75CA, GB2312 Code:*/ 0xC8AC, /*==>홑 Row:40 Col:12 */
+    /*0x75CD, GB2312 Code:*/ 0xF0EA, /*==>簇 Row:80 Col:74 */
+    /*0x75D2, GB2312 Code:*/ 0xD1F7, /*==>枏 Row:49 Col:87 */
+    /*0x75D4, GB2312 Code:*/ 0xD6CC, /*==>勞 Row:54 Col:44 */
+    /*0x75D5, GB2312 Code:*/ 0xBADB, /*==>붜 Row:26 Col:59 */
+    /*0x75D6, GB2312 Code:*/ 0xF0E9, /*==>族 Row:80 Col:73 */
+    /*0x75D8, GB2312 Code:*/ 0xB6BB, /*==>떻 Row:22 Col:27 */
+    /*0x75DB, GB2312 Code:*/ 0xCDB4, /*==>姑 Row:45 Col:20 */
+    /*0x75DE, GB2312 Code:*/ 0xC6A6, /*==>튐 Row:38 Col:06 */
+    /*0x75E2, GB2312 Code:*/ 0xC1A1, /*==>점 Row:33 Col:01 */
+    /*0x75E3, GB2312 Code:*/ 0xF0EB, /*==>足 Row:80 Col:75 */
+    /*0x75E4, GB2312 Code:*/ 0xF0EE, /*==>尊 Row:80 Col:78 */
+    /*0x75E6, GB2312 Code:*/ 0xF0ED, /*==>存 Row:80 Col:77 */
+    /*0x75E7, GB2312 Code:*/ 0xF0F0, /*==>拙 Row:80 Col:80 */
+    /*0x75E8, GB2312 Code:*/ 0xF0EC, /*==>鏃 Row:80 Col:76 */
+    /*0x75EA, GB2312 Code:*/ 0xBBBE, /*==>뻬 Row:27 Col:30 */
+    /*0x75EB, GB2312 Code:*/ 0xF0EF, /*==>卒 Row:80 Col:79 */
+    /*0x75F0, GB2312 Code:*/ 0xCCB5, /*==>絹 Row:44 Col:21 */
+    /*0x75F1, GB2312 Code:*/ 0xF0F2, /*==>倧 Row:80 Col:82 */
+    /*0x75F4, GB2312 Code:*/ 0xB3D5, /*==>넝 Row:19 Col:53 */
+    /*0x75F9, GB2312 Code:*/ 0xB1D4, /*==>규 Row:17 Col:52 */
+    /*0x75FC, GB2312 Code:*/ 0xF0F3, /*==>宗 Row:80 Col:83 */
+    /*0x75FF, GB2312 Code:*/ 0xF0F4, /*==>從 Row:80 Col:84 */
+    /*0x7600, GB2312 Code:*/ 0xF0F6, /*==>慫 Row:80 Col:86 */
+    /*0x7601, GB2312 Code:*/ 0xB4E1, /*==>닯 Row:20 Col:65 */
+    /*0x7603, GB2312 Code:*/ 0xF0F1, /*==>猝 Row:80 Col:81 */
+    /*0x7605, GB2312 Code:*/ 0xF0F7, /*==>棕 Row:80 Col:87 */
+    /*0x760A, GB2312 Code:*/ 0xF0FA, /*==>種 Row:80 Col:90 */
+    /*0x760C, GB2312 Code:*/ 0xF0F8, /*==>淙 Row:80 Col:88 */
+    /*0x7610, GB2312 Code:*/ 0xF0F5, /*==>悰 Row:80 Col:85 */
+    /*0x7615, GB2312 Code:*/ 0xF0FD, /*==>縱 Row:80 Col:93 */
+    /*0x7617, GB2312 Code:*/ 0xF0F9, /*==>琮 Row:80 Col:89 */
+    /*0x7618, GB2312 Code:*/ 0xF0FC, /*==>綜 Row:80 Col:92 */
+    /*0x7619, GB2312 Code:*/ 0xF0FE, /*==>腫 Row:80 Col:94 */
+    /*0x761B, GB2312 Code:*/ 0xF1A1, /*==>踪 Row:81 Col:01 */
+    /*0x761F, GB2312 Code:*/ 0xCEC1, /*==>适 Row:46 Col:33 */
+    /*0x7620, GB2312 Code:*/ 0xF1A4, /*==>鐘 Row:81 Col:04 */
+    /*0x7622, GB2312 Code:*/ 0xF1A3, /*==>鍾 Row:81 Col:03 */
+    /*0x7624, GB2312 Code:*/ 0xC1F6, /*==>지 Row:33 Col:86 */
+    /*0x7625, GB2312 Code:*/ 0xF0FB, /*==>終 Row:80 Col:91 */
+    /*0x7626, GB2312 Code:*/ 0xCADD, /*==>艮 Row:42 Col:61 */
+    /*0x7629, GB2312 Code:*/ 0xB4F1, /*==>댓 Row:20 Col:81 */
+    /*0x762A, GB2312 Code:*/ 0xB1F1, /*==>깐 Row:17 Col:81 */
+    /*0x762B, GB2312 Code:*/ 0xCCB1, /*==>堅 Row:44 Col:17 */
+    /*0x762D, GB2312 Code:*/ 0xF1A6, /*==>坐 Row:81 Col:06 */
+    /*0x7630, GB2312 Code:*/ 0xF1A7, /*==>左 Row:81 Col:07 */
+    /*0x7633, GB2312 Code:*/ 0xF1AC, /*==>住 Row:81 Col:12 */
+    /*0x7634, GB2312 Code:*/ 0xD5CE, /*==>來 Row:53 Col:46 */
+    /*0x7635, GB2312 Code:*/ 0xF1A9, /*==>挫 Row:81 Col:09 */
+    /*0x7638, GB2312 Code:*/ 0xC8B3, /*==>홰 Row:40 Col:19 */
+    /*0x763C, GB2312 Code:*/ 0xF1A2, /*==>踵 Row:81 Col:02 */
+    /*0x763E, GB2312 Code:*/ 0xF1AB, /*==>主 Row:81 Col:11 */
+    /*0x763F, GB2312 Code:*/ 0xF1A8, /*==>座 Row:81 Col:08 */
+    /*0x7640, GB2312 Code:*/ 0xF1A5, /*==>佐 Row:81 Col:05 */
+    /*0x7643, GB2312 Code:*/ 0xF1AA, /*==>罪 Row:81 Col:10 */
+    /*0x764C, GB2312 Code:*/ 0xB0A9, /*==>갑 Row:16 Col:09 */
+    /*0x764D, GB2312 Code:*/ 0xF1AD, /*==>侏 Row:81 Col:13 */
+    /*0x7654, GB2312 Code:*/ 0xF1AF, /*==>姝 Row:81 Col:15 */
+    /*0x7656, GB2312 Code:*/ 0xF1B1, /*==>呪 Row:81 Col:17 */
+    /*0x765C, GB2312 Code:*/ 0xF1B0, /*==>胄 Row:81 Col:16 */
+    /*0x765E, GB2312 Code:*/ 0xF1AE, /*==>做 Row:81 Col:14 */
+    /*0x7663, GB2312 Code:*/ 0xD1A2, /*==>期 Row:49 Col:02 */
+    /*0x766B, GB2312 Code:*/ 0xF1B2, /*==>周 Row:81 Col:18 */
+    /*0x766F, GB2312 Code:*/ 0xF1B3, /*==>嗾 Row:81 Col:19 */
+    /*0x7678, GB2312 Code:*/ 0xB9EF, /*==>뱄 Row:25 Col:79 */
+    /*0x767B, GB2312 Code:*/ 0xB5C7, /*==>되 Row:21 Col:39 */
+    /*0x767D, GB2312 Code:*/ 0xB0D7, /*==>겜 Row:16 Col:55 */
+    /*0x767E, GB2312 Code:*/ 0xB0D9, /*==>겟 Row:16 Col:57 */
+    /*0x7682, GB2312 Code:*/ 0xD4ED, /*==>遁 Row:52 Col:77 */
+    /*0x7684, GB2312 Code:*/ 0xB5C4, /*==>돨 Row:21 Col:36 */
+    /*0x7686, GB2312 Code:*/ 0xBDD4, /*==>쌉 Row:29 Col:52 */
+    /*0x7687, GB2312 Code:*/ 0xBBCA, /*==>뽈 Row:27 Col:42 */
+    /*0x7688, GB2312 Code:*/ 0xF0A7, /*==>堤 Row:80 Col:07 */
+    /*0x768B, GB2312 Code:*/ 0xB8DE, /*==>메 Row:24 Col:62 */
+    /*0x768E, GB2312 Code:*/ 0xF0A8, /*==>帝 Row:80 Col:08 */
+    /*0x7691, GB2312 Code:*/ 0xB0A8, /*==>감 Row:16 Col:08 */
+    /*0x7693, GB2312 Code:*/ 0xF0A9, /*==>弟 Row:80 Col:09 */
+    /*0x7696, GB2312 Code:*/ 0xCDEE, /*==>孔 Row:45 Col:78 */
+    /*0x7699, GB2312 Code:*/ 0xF0AA, /*==>悌 Row:80 Col:10 */
+    /*0x76A4, GB2312 Code:*/ 0xF0AB, /*==>提 Row:80 Col:11 */
+    /*0x76AE, GB2312 Code:*/ 0xC6A4, /*==>튄 Row:38 Col:04 */
+    /*0x76B1, GB2312 Code:*/ 0xD6E5, /*==>論 Row:54 Col:69 */
+    /*0x76B2, GB2312 Code:*/ 0xF1E4, /*==>逡 Row:81 Col:68 */
+    /*0x76B4, GB2312 Code:*/ 0xF1E5, /*==>遵 Row:81 Col:69 */
+    /*0x76BF, GB2312 Code:*/ 0xC3F3, /*==>츈 Row:35 Col:83 */
+    /*0x76C2, GB2312 Code:*/ 0xD3DB, /*==>代 Row:51 Col:59 */
+    /*0x76C5, GB2312 Code:*/ 0xD6D1, /*==>潞 Row:54 Col:49 */
+    /*0x76C6, GB2312 Code:*/ 0xC5E8, /*==>톰 Row:37 Col:72 */
+    /*0x76C8, GB2312 Code:*/ 0xD3AF, /*==>簞 Row:51 Col:15 */
+    /*0x76CA, GB2312 Code:*/ 0xD2E6, /*==>樓 Row:50 Col:70 */
+    /*0x76CD, GB2312 Code:*/ 0xEEC1, /*==>沮 Row:78 Col:33 */
+    /*0x76CE, GB2312 Code:*/ 0xB0BB, /*==>갱 Row:16 Col:27 */
+    /*0x76CF, GB2312 Code:*/ 0xD5B5, /*==>蘭 Row:53 Col:21 */
+    /*0x76D0, GB2312 Code:*/ 0xD1CE, /*==>吉 Row:49 Col:46 */
+    /*0x76D1, GB2312 Code:*/ 0xBCE0, /*==>솰 Row:28 Col:64 */
+    /*0x76D2, GB2312 Code:*/ 0xBAD0, /*==>분 Row:26 Col:48 */
+    /*0x76D4, GB2312 Code:*/ 0xBFF8, /*==>원 Row:31 Col:88 */
+    /*0x76D6, GB2312 Code:*/ 0xB8C7, /*==>맨 Row:24 Col:39 */
+    /*0x76D7, GB2312 Code:*/ 0xB5C1, /*==>돝 Row:21 Col:33 */
+    /*0x76D8, GB2312 Code:*/ 0xC5CC, /*==>턍 Row:37 Col:44 */
+    /*0x76DB, GB2312 Code:*/ 0xCAA2, /*==>佳 Row:42 Col:02 */
+    /*0x76DF, GB2312 Code:*/ 0xC3CB, /*==>촉 Row:35 Col:43 */
+    /*0x76E5, GB2312 Code:*/ 0xEEC2, /*==>渚 Row:78 Col:34 */
+    /*0x76EE, GB2312 Code:*/ 0xC4BF, /*==>커 Row:36 Col:31 */
+    /*0x76EF, GB2312 Code:*/ 0xB6A2, /*==>땁 Row:22 Col:02 */
+    /*0x76F1, GB2312 Code:*/ 0xEDEC, /*==>漿 Row:77 Col:76 */
+    /*0x76F2, GB2312 Code:*/ 0xC3A4, /*==>채 Row:35 Col:04 */
+    /*0x76F4, GB2312 Code:*/ 0xD6B1, /*==>殮 Row:54 Col:17 */
+    /*0x76F8, GB2312 Code:*/ 0xCFE0, /*==>宮 Row:47 Col:64 */
+    /*0x76F9, GB2312 Code:*/ 0xEDEF, /*==>獐 Row:77 Col:79 */
+    /*0x76FC, GB2312 Code:*/ 0xC5CE, /*==>턱 Row:37 Col:46 */
+    /*0x76FE, GB2312 Code:*/ 0xB6DC, /*==>뜀 Row:22 Col:60 */
+    /*0x7701, GB2312 Code:*/ 0xCAA1, /*==>伽 Row:42 Col:01 */
+    /*0x7704, GB2312 Code:*/ 0xEDED, /*==>牆 Row:77 Col:77 */
+    /*0x7707, GB2312 Code:*/ 0xEDF0, /*==>璋 Row:77 Col:80 */
+    /*0x7708, GB2312 Code:*/ 0xEDF1, /*==>章 Row:77 Col:81 */
+    /*0x7709, GB2312 Code:*/ 0xC3BC, /*==>체 Row:35 Col:28 */
+    /*0x770B, GB2312 Code:*/ 0xBFB4, /*==>였 Row:31 Col:20 */
+    /*0x770D, GB2312 Code:*/ 0xEDEE, /*==>狀 Row:77 Col:78 */
+    /*0x7719, GB2312 Code:*/ 0xEDF4, /*==>臟 Row:77 Col:84 */
+    /*0x771A, GB2312 Code:*/ 0xEDF2, /*==>粧 Row:77 Col:82 */
+    /*0x771F, GB2312 Code:*/ 0xD5E6, /*==>廬 Row:53 Col:70 */
+    /*0x7720, GB2312 Code:*/ 0xC3DF, /*==>추 Row:35 Col:63 */
+    /*0x7722, GB2312 Code:*/ 0xEDF3, /*==>腸 Row:77 Col:83 */
+    /*0x7726, GB2312 Code:*/ 0xEDF6, /*==>莊 Row:77 Col:86 */
+    /*0x7728, GB2312 Code:*/ 0xD5A3, /*==>裸 Row:53 Col:03 */
+    /*0x7729, GB2312 Code:*/ 0xD1A3, /*==>杞 Row:49 Col:03 */
+    /*0x772D, GB2312 Code:*/ 0xEDF5, /*==>臧 Row:77 Col:85 */
+    /*0x772F, GB2312 Code:*/ 0xC3D0, /*==>촛 Row:35 Col:48 */
+    /*0x7735, GB2312 Code:*/ 0xEDF7, /*==>葬 Row:77 Col:87 */
+    /*0x7736, GB2312 Code:*/ 0xBFF4, /*==>웃 Row:31 Col:84 */
+    /*0x7737, GB2312 Code:*/ 0xBEEC, /*==>얠 Row:30 Col:76 */
+    /*0x7738, GB2312 Code:*/ 0xEDF8, /*==>蔣 Row:77 Col:88 */
+    /*0x773A, GB2312 Code:*/ 0xCCF7, /*==>堺 Row:44 Col:87 */
+    /*0x773C, GB2312 Code:*/ 0xD1DB, /*==>癩 Row:49 Col:59 */
+    /*0x7740, GB2312 Code:*/ 0xD7C5, /*==>淪 Row:55 Col:37 */
+    /*0x7741, GB2312 Code:*/ 0xD5F6, /*==>歷 Row:53 Col:86 */
+    /*0x7743, GB2312 Code:*/ 0xEDFC, /*==>贓 Row:77 Col:92 */
+    /*0x7747, GB2312 Code:*/ 0xEDFB, /*==>裝 Row:77 Col:91 */
+    /*0x7750, GB2312 Code:*/ 0xEDF9, /*==>薔 Row:77 Col:89 */
+    /*0x7751, GB2312 Code:*/ 0xEDFA, /*==>藏 Row:77 Col:90 */
+    /*0x775A, GB2312 Code:*/ 0xEDFD, /*==>醬 Row:77 Col:93 */
+    /*0x775B, GB2312 Code:*/ 0xBEA6, /*==>쑥 Row:30 Col:06 */
+    /*0x7761, GB2312 Code:*/ 0xCBAF, /*==>慷 Row:43 Col:15 */
+    /*0x7762, GB2312 Code:*/ 0xEEA1, /*==>障 Row:78 Col:01 */
+    /*0x7763, GB2312 Code:*/ 0xB6BD, /*==>떽 Row:22 Col:29 */
+    /*0x7765, GB2312 Code:*/ 0xEEA2, /*==>再 Row:78 Col:02 */
+    /*0x7766, GB2312 Code:*/ 0xC4C0, /*==>컥 Row:36 Col:32 */
+    /*0x7768, GB2312 Code:*/ 0xEDFE, /*==>長 Row:77 Col:94 */
+    /*0x776B, GB2312 Code:*/ 0xBDDE, /*==>쌨 Row:29 Col:62 */
+    /*0x776C, GB2312 Code:*/ 0xB2C7, /*==>꽁 Row:18 Col:39 */
+    /*0x7779, GB2312 Code:*/ 0xB6C3, /*==>뗐 Row:22 Col:35 */
+    /*0x777D, GB2312 Code:*/ 0xEEA5, /*==>宰 Row:78 Col:05 */
+    /*0x777E, GB2312 Code:*/ 0xD8BA, /*==>曼 Row:56 Col:26 */
+    /*0x777F, GB2312 Code:*/ 0xEEA3, /*==>哉 Row:78 Col:03 */
+    /*0x7780, GB2312 Code:*/ 0xEEA6, /*==>才 Row:78 Col:06 */
+    /*0x7784, GB2312 Code:*/ 0xC3E9, /*==>췌 Row:35 Col:73 */
+    /*0x7785, GB2312 Code:*/ 0xB3F2, /*==>놋 Row:19 Col:82 */
+    /*0x778C, GB2312 Code:*/ 0xEEA7, /*==>材 Row:78 Col:07 */
+    /*0x778D, GB2312 Code:*/ 0xEEA4, /*==>在 Row:78 Col:04 */
+    /*0x778E, GB2312 Code:*/ 0xCFB9, /*==>球 Row:47 Col:25 */
+    /*0x7791, GB2312 Code:*/ 0xEEA8, /*==>栽 Row:78 Col:08 */
+    /*0x7792, GB2312 Code:*/ 0xC2F7, /*==>차 Row:34 Col:87 */
+    /*0x779F, GB2312 Code:*/ 0xEEA9, /*==>梓 Row:78 Col:09 */
+    /*0x77A0, GB2312 Code:*/ 0xEEAA, /*==>渽 Row:78 Col:10 */
+    /*0x77A2, GB2312 Code:*/ 0xDEAB, /*==>飛 Row:62 Col:11 */
+    /*0x77A5, GB2312 Code:*/ 0xC6B3, /*==>틂 Row:38 Col:19 */
+    /*0x77A7, GB2312 Code:*/ 0xC7C6, /*==>픗 Row:39 Col:38 */
+    /*0x77A9, GB2312 Code:*/ 0xD6F5, /*==>了 Row:54 Col:85 */
+    /*0x77AA, GB2312 Code:*/ 0xB5C9, /*==>될 Row:21 Col:41 */
+    /*0x77AC, GB2312 Code:*/ 0xCBB2, /*==>疆 Row:43 Col:18 */
+    /*0x77B0, GB2312 Code:*/ 0xEEAB, /*==>滓 Row:78 Col:11 */
+    /*0x77B3, GB2312 Code:*/ 0xCDAB, /*==>誡 Row:45 Col:11 */
+    /*0x77B5, GB2312 Code:*/ 0xEEAC, /*==>災 Row:78 Col:12 */
+    /*0x77BB, GB2312 Code:*/ 0xD5B0, /*==>卵 Row:53 Col:16 */
+    /*0x77BD, GB2312 Code:*/ 0xEEAD, /*==>縡 Row:78 Col:13 */
+    /*0x77BF, GB2312 Code:*/ 0xF6C4, /*==>穉 Row:86 Col:36 */
+    /*0x77CD, GB2312 Code:*/ 0xDBC7, /*==>徘 Row:59 Col:39 */
+    /*0x77D7, GB2312 Code:*/ 0xB4A3, /*==>뇩 Row:20 Col:03 */
+    /*0x77DB, GB2312 Code:*/ 0xC3AC, /*==>챙 Row:35 Col:12 */
+    /*0x77DC, GB2312 Code:*/ 0xF1E6, /*==>雋 Row:81 Col:70 */
+    /*0x77E2, GB2312 Code:*/ 0xCAB8, /*==>訶 Row:42 Col:24 */
+    /*0x77E3, GB2312 Code:*/ 0xD2D3, /*==>錄 Row:50 Col:51 */
+    /*0x77E5, GB2312 Code:*/ 0xD6AA, /*==>列 Row:54 Col:10 */
+    /*0x77E7, GB2312 Code:*/ 0xEFF2, /*==>綎 Row:79 Col:82 */
+    /*0x77E9, GB2312 Code:*/ 0xBED8, /*==>앤 Row:30 Col:56 */
+    /*0x77EB, GB2312 Code:*/ 0xBDC3, /*==>시 Row:29 Col:35 */
+    /*0x77EC, GB2312 Code:*/ 0xEFF3, /*==>艇 Row:79 Col:83 */
+    /*0x77ED, GB2312 Code:*/ 0xB6CC, /*==>똬 Row:22 Col:44 */
+    /*0x77EE, GB2312 Code:*/ 0xB0AB, /*==>갓 Row:16 Col:11 */
+    /*0x77F3, GB2312 Code:*/ 0xCAAF, /*==>柯 Row:42 Col:15 */
+    /*0x77F6, GB2312 Code:*/ 0xEDB6, /*==>瓷 Row:77 Col:22 */
+    /*0x77F8, GB2312 Code:*/ 0xEDB7, /*==>疵 Row:77 Col:23 */
+    /*0x77FD, GB2312 Code:*/ 0xCEF9, /*==>久 Row:46 Col:89 */
+    /*0x77FE, GB2312 Code:*/ 0xB7AF, /*==>러 Row:23 Col:15 */
+    /*0x77FF, GB2312 Code:*/ 0xBFF3, /*==>웁 Row:31 Col:83 */
+    /*0x7800, GB2312 Code:*/ 0xEDB8, /*==>磁 Row:77 Col:24 */
+    /*0x7801, GB2312 Code:*/ 0xC2EB, /*==>쯤 Row:34 Col:75 */
+    /*0x7802, GB2312 Code:*/ 0xC9B0, /*==>� Row:41 Col:16 */
+    /*0x7809, GB2312 Code:*/ 0xEDB9, /*==>紫 Row:77 Col:25 */
+    /*0x780C, GB2312 Code:*/ 0xC6F6, /*==>폣 Row:38 Col:86 */
+    /*0x780D, GB2312 Code:*/ 0xBFB3, /*==>엿 Row:31 Col:19 */
+    /*0x7811, GB2312 Code:*/ 0xEDBC, /*==>茨 Row:77 Col:28 */
+    /*0x7812, GB2312 Code:*/ 0xC5F8, /*==>툴 Row:37 Col:88 */
+    /*0x7814, GB2312 Code:*/ 0xD1D0, /*==>桔 Row:49 Col:48 */
+    /*0x7816, GB2312 Code:*/ 0xD7A9, /*==>漏 Row:55 Col:09 */
+    /*0x7817, GB2312 Code:*/ 0xEDBA, /*==>者 Row:77 Col:26 */
+    /*0x7818, GB2312 Code:*/ 0xEDBB, /*==>自 Row:77 Col:27 */
+    /*0x781A, GB2312 Code:*/ 0xD1E2, /*==>樂 Row:49 Col:66 */
+    /*0x781C, GB2312 Code:*/ 0xEDBF, /*==>諮 Row:77 Col:31 */
+    /*0x781D, GB2312 Code:*/ 0xEDC0, /*==>資 Row:77 Col:32 */
+    /*0x781F, GB2312 Code:*/ 0xEDC4, /*==>嚼 Row:77 Col:36 */
+    /*0x7823, GB2312 Code:*/ 0xEDC8, /*==>炸 Row:77 Col:40 */
+    /*0x7825, GB2312 Code:*/ 0xEDC6, /*==>昨 Row:77 Col:38 */
+    /*0x7826, GB2312 Code:*/ 0xEDCE, /*==>鵲 Row:77 Col:46 */
+    /*0x7827, GB2312 Code:*/ 0xD5E8, /*==>戾 Row:53 Col:72 */
+    /*0x7829, GB2312 Code:*/ 0xEDC9, /*==>爵 Row:77 Col:41 */
+    /*0x782C, GB2312 Code:*/ 0xEDC7, /*==>灼 Row:77 Col:39 */
+    /*0x782D, GB2312 Code:*/ 0xEDBE, /*==>藉 Row:77 Col:30 */
+    /*0x7830, GB2312 Code:*/ 0xC5E9, /*==>톱 Row:37 Col:73 */
+    /*0x7834, GB2312 Code:*/ 0xC6C6, /*==>팎 Row:38 Col:38 */
+    /*0x7837, GB2312 Code:*/ 0xC9E9, /*==>� Row:41 Col:73 */
+    /*0x7838, GB2312 Code:*/ 0xD4D2, /*==>同 Row:52 Col:50 */
+    /*0x7839, GB2312 Code:*/ 0xEDC1, /*==>雌 Row:77 Col:33 */
+    /*0x783A, GB2312 Code:*/ 0xEDC2, /*==>作 Row:77 Col:34 */
+    /*0x783B, GB2312 Code:*/ 0xEDC3, /*==>勺 Row:77 Col:35 */
+    /*0x783C, GB2312 Code:*/ 0xEDC5, /*==>斫 Row:77 Col:37 */
+    /*0x783E, GB2312 Code:*/ 0xC0F9, /*==>쟬 Row:32 Col:89 */
+    /*0x7840, GB2312 Code:*/ 0xB4A1, /*==>뇟 Row:20 Col:01 */
+    /*0x7845, GB2312 Code:*/ 0xB9E8, /*==>배 Row:25 Col:72 */
+    /*0x7847, GB2312 Code:*/ 0xEDD0, /*==>棧 Row:77 Col:48 */
+    /*0x784C, GB2312 Code:*/ 0xEDD1, /*==>殘 Row:77 Col:49 */
+    /*0x784E, GB2312 Code:*/ 0xEDCA, /*==>綽 Row:77 Col:42 */
+    /*0x7850, GB2312 Code:*/ 0xEDCF, /*==>孱 Row:77 Col:47 */
+    /*0x7852, GB2312 Code:*/ 0xCEF8, /*==>丘 Row:46 Col:88 */
+    /*0x7855, GB2312 Code:*/ 0xCBB6, /*==>羌 Row:43 Col:22 */
+    /*0x7856, GB2312 Code:*/ 0xEDCC, /*==>酌 Row:77 Col:44 */
+    /*0x7857, GB2312 Code:*/ 0xEDCD, /*==>雀 Row:77 Col:45 */
+    /*0x785D, GB2312 Code:*/ 0xCFF5, /*==>机 Row:47 Col:85 */
+    /*0x786A, GB2312 Code:*/ 0xEDD2, /*==>潺 Row:77 Col:50 */
+    /*0x786B, GB2312 Code:*/ 0xC1F2, /*==>즘 Row:33 Col:82 */
+    /*0x786C, GB2312 Code:*/ 0xD3B2, /*==>袒 Row:51 Col:18 */
+    /*0x786D, GB2312 Code:*/ 0xEDCB, /*==>芍 Row:77 Col:43 */
+    /*0x786E, GB2312 Code:*/ 0xC8B7, /*==>횅 Row:40 Col:23 */
+    /*0x7877, GB2312 Code:*/ 0xBCEF, /*==>쇽 Row:28 Col:79 */
+    /*0x787C, GB2312 Code:*/ 0xC5F0, /*==>퇴 Row:37 Col:80 */
+    /*0x7887, GB2312 Code:*/ 0xEDD6, /*==>潛 Row:77 Col:54 */
+    /*0x7889, GB2312 Code:*/ 0xB5EF, /*==>듸 Row:21 Col:79 */
+    /*0x788C, GB2312 Code:*/ 0xC2B5, /*==>쨉 Row:34 Col:21 */
+    /*0x788D, GB2312 Code:*/ 0xB0AD, /*==>강 Row:16 Col:13 */
+    /*0x788E, GB2312 Code:*/ 0xCBE9, /*==>鉅 Row:43 Col:73 */
+    /*0x7891, GB2312 Code:*/ 0xB1AE, /*==>괼 Row:17 Col:14 */
+    /*0x7893, GB2312 Code:*/ 0xEDD4, /*==>岑 Row:77 Col:52 */
+    /*0x7897, GB2312 Code:*/ 0xCDEB, /*==>公 Row:45 Col:75 */
+    /*0x7898, GB2312 Code:*/ 0xB5E2, /*==>듈 Row:21 Col:66 */
+    /*0x789A, GB2312 Code:*/ 0xEDD5, /*==>暫 Row:77 Col:53 */
+    /*0x789B, GB2312 Code:*/ 0xEDD3, /*==>盞 Row:77 Col:51 */
+    /*0x789C, GB2312 Code:*/ 0xEDD7, /*==>箴 Row:77 Col:55 */
+    /*0x789F, GB2312 Code:*/ 0xB5FA, /*==>딪 Row:21 Col:90 */
+    /*0x78A1, GB2312 Code:*/ 0xEDD8, /*==>簪 Row:77 Col:56 */
+    /*0x78A3, GB2312 Code:*/ 0xEDD9, /*==>蠶 Row:77 Col:57 */
+    /*0x78A5, GB2312 Code:*/ 0xEDDC, /*==>仗 Row:77 Col:60 */
+    /*0x78A7, GB2312 Code:*/ 0xB1CC, /*==>궷 Row:17 Col:44 */
+    /*0x78B0, GB2312 Code:*/ 0xC5F6, /*==>툭 Row:37 Col:86 */
+    /*0x78B1, GB2312 Code:*/ 0xBCEE, /*==>쇼 Row:28 Col:78 */
+    /*0x78B2, GB2312 Code:*/ 0xEDDA, /*==>雜 Row:77 Col:58 */
+    /*0x78B3, GB2312 Code:*/ 0xCCBC, /*==>抉 Row:44 Col:28 */
+    /*0x78B4, GB2312 Code:*/ 0xB2EA, /*==>꿸 Row:18 Col:74 */
+    /*0x78B9, GB2312 Code:*/ 0xEDDB, /*==>丈 Row:77 Col:59 */
+    /*0x78BE, GB2312 Code:*/ 0xC4EB, /*==>쾰 Row:36 Col:75 */
+    /*0x78C1, GB2312 Code:*/ 0xB4C5, /*==>늚 Row:20 Col:37 */
+    /*0x78C5, GB2312 Code:*/ 0xB0F5, /*==>곰 Row:16 Col:85 */
+    /*0x78C9, GB2312 Code:*/ 0xEDDF, /*==>墻 Row:77 Col:63 */
+    /*0x78CA, GB2312 Code:*/ 0xC0DA, /*==>자 Row:32 Col:58 */
+    /*0x78CB, GB2312 Code:*/ 0xB4E8, /*==>닺 Row:20 Col:72 */
+    /*0x78D0, GB2312 Code:*/ 0xC5CD, /*==>터 Row:37 Col:45 */
+    /*0x78D4, GB2312 Code:*/ 0xEDDD, /*==>匠 Row:77 Col:61 */
+    /*0x78D5, GB2312 Code:*/ 0xBFC4, /*==>옭 Row:31 Col:36 */
+    /*0x78D9, GB2312 Code:*/ 0xEDDE, /*==>場 Row:77 Col:62 */
+    /*0x78E8, GB2312 Code:*/ 0xC4A5, /*==>칠 Row:36 Col:05 */
+    /*0x78EC, GB2312 Code:*/ 0xEDE0, /*==>壯 Row:77 Col:64 */
+    /*0x78F2, GB2312 Code:*/ 0xEDE1, /*==>奬 Row:77 Col:65 */
+    /*0x78F4, GB2312 Code:*/ 0xEDE3, /*==>帳 Row:77 Col:67 */
+    /*0x78F7, GB2312 Code:*/ 0xC1D7, /*==>죽 Row:33 Col:55 */
+    /*0x78FA, GB2312 Code:*/ 0xBBC7, /*==>뽀 Row:27 Col:39 */
+    /*0x7901, GB2312 Code:*/ 0xBDB8, /*==>슛 Row:29 Col:24 */
+    /*0x7905, GB2312 Code:*/ 0xEDE2, /*==>將 Row:77 Col:66 */
+    /*0x7913, GB2312 Code:*/ 0xEDE4, /*==>庄 Row:77 Col:68 */
+    /*0x791E, GB2312 Code:*/ 0xEDE6, /*==>掌 Row:77 Col:70 */
+    /*0x7924, GB2312 Code:*/ 0xEDE5, /*==>張 Row:77 Col:69 */
+    /*0x7934, GB2312 Code:*/ 0xEDE7, /*==>暲 Row:77 Col:71 */
+    /*0x793A, GB2312 Code:*/ 0xCABE, /*==>刻 Row:42 Col:30 */
+    /*0x793B, GB2312 Code:*/ 0xECEA, /*==>佚 Row:76 Col:74 */
+    /*0x793C, GB2312 Code:*/ 0xC0F1, /*==>쟉 Row:32 Col:81 */
+    /*0x793E, GB2312 Code:*/ 0xC9E7, /*==>� Row:41 Col:71 */
+    /*0x7940, GB2312 Code:*/ 0xECEB, /*==>佾 Row:76 Col:75 */
+    /*0x7941, GB2312 Code:*/ 0xC6EE, /*==>펼 Row:38 Col:78 */
+    /*0x7946, GB2312 Code:*/ 0xECEC, /*==>壹 Row:76 Col:76 */
+    /*0x7948, GB2312 Code:*/ 0xC6ED, /*==>편 Row:38 Col:77 */
+    /*0x7949, GB2312 Code:*/ 0xECED, /*==>日 Row:76 Col:77 */
+    /*0x7953, GB2312 Code:*/ 0xECF0, /*==>鎰 Row:76 Col:80 */
+    /*0x7956, GB2312 Code:*/ 0xD7E6, /*==>籬 Row:55 Col:70 */
+    /*0x7957, GB2312 Code:*/ 0xECF3, /*==>壬 Row:76 Col:83 */
+    /*0x795A, GB2312 Code:*/ 0xECF1, /*==>馹 Row:76 Col:81 */
+    /*0x795B, GB2312 Code:*/ 0xECEE, /*==>溢 Row:76 Col:78 */
+    /*0x795C, GB2312 Code:*/ 0xECEF, /*==>逸 Row:76 Col:79 */
+    /*0x795D, GB2312 Code:*/ 0xD7A3, /*==>龍 Row:55 Col:03 */
+    /*0x795E, GB2312 Code:*/ 0xC9F1, /*==>� Row:41 Col:81 */
+    /*0x795F, GB2312 Code:*/ 0xCBEE, /*==>巾 Row:43 Col:78 */
+    /*0x7960, GB2312 Code:*/ 0xECF4, /*==>妊 Row:76 Col:84 */
+    /*0x7962, GB2312 Code:*/ 0xECF2, /*==>任 Row:76 Col:82 */
+    /*0x7965, GB2312 Code:*/ 0xCFE9, /*==>卷 Row:47 Col:73 */
+    /*0x7967, GB2312 Code:*/ 0xECF6, /*==>恁 Row:76 Col:86 */
+    /*0x7968, GB2312 Code:*/ 0xC6B1, /*==>튿 Row:38 Col:17 */
+    /*0x796D, GB2312 Code:*/ 0xBCC0, /*==>셈 Row:28 Col:32 */
+    /*0x796F, GB2312 Code:*/ 0xECF5, /*==>姙 Row:76 Col:85 */
+    /*0x7977, GB2312 Code:*/ 0xB5BB, /*==>돐 Row:21 Col:27 */
+    /*0x7978, GB2312 Code:*/ 0xBBF6, /*==>색 Row:27 Col:86 */
+    /*0x797A, GB2312 Code:*/ 0xECF7, /*==>林 Row:76 Col:87 */
+    /*0x7980, GB2312 Code:*/ 0xD9F7, /*==>鵡 Row:57 Col:87 */
+    /*0x7981, GB2312 Code:*/ 0xBDFB, /*==>쐐 Row:29 Col:91 */
+    /*0x7984, GB2312 Code:*/ 0xC2BB, /*==>쨩 Row:34 Col:27 */
+    /*0x7985, GB2312 Code:*/ 0xECF8, /*==>淋 Row:76 Col:88 */
+    /*0x798A, GB2312 Code:*/ 0xECF9, /*==>稔 Row:76 Col:89 */
+    /*0x798F, GB2312 Code:*/ 0xB8A3, /*==>르 Row:24 Col:03 */
+    /*0x799A, GB2312 Code:*/ 0xECFA, /*==>臨 Row:76 Col:90 */
+    /*0x79A7, GB2312 Code:*/ 0xECFB, /*==>荏 Row:76 Col:91 */
+    /*0x79B3, GB2312 Code:*/ 0xECFC, /*==>賃 Row:76 Col:92 */
+    /*0x79B9, GB2312 Code:*/ 0xD3ED, /*==>悳 Row:51 Col:77 */
+    /*0x79BA, GB2312 Code:*/ 0xD8AE, /*==>漠 Row:56 Col:14 */
+    /*0x79BB, GB2312 Code:*/ 0xC0EB, /*==>잼 Row:32 Col:75 */
+    /*0x79BD, GB2312 Code:*/ 0xC7DD, /*==>햅 Row:39 Col:61 */
+    /*0x79BE, GB2312 Code:*/ 0xBACC, /*==>뵤 Row:26 Col:44 */
+    /*0x79C0, GB2312 Code:*/ 0xD0E3, /*==>汲 Row:48 Col:67 */
+    /*0x79C1, GB2312 Code:*/ 0xCBBD, /*==>降 Row:43 Col:29 */
+    /*0x79C3, GB2312 Code:*/ 0xCDBA, /*==>故 Row:45 Col:26 */
+    /*0x79C6, GB2312 Code:*/ 0xB8D1, /*==>먈 Row:24 Col:49 */
+    /*0x79C9, GB2312 Code:*/ 0xB1FC, /*==>깬 Row:17 Col:92 */
+    /*0x79CB, GB2312 Code:*/ 0xC7EF, /*==>헬 Row:39 Col:79 */
+    /*0x79CD, GB2312 Code:*/ 0xD6D6, /*==>蘆 Row:54 Col:54 */
+    /*0x79D1, GB2312 Code:*/ 0xBFC6, /*==>옰 Row:31 Col:38 */
+    /*0x79D2, GB2312 Code:*/ 0xC3EB, /*==>취 Row:35 Col:75 */
+    /*0x79D5, GB2312 Code:*/ 0xEFF5, /*==>諪 Row:79 Col:85 */
+    /*0x79D8, GB2312 Code:*/ 0xC3D8, /*==>쵤 Row:35 Col:56 */
+    /*0x79DF, GB2312 Code:*/ 0xD7E2, /*==>理 Row:55 Col:66 */
+    /*0x79E3, GB2312 Code:*/ 0xEFF7, /*==>鄭 Row:79 Col:87 */
+    /*0x79E4, GB2312 Code:*/ 0xB3D3, /*==>넛 Row:19 Col:51 */
+    /*0x79E6, GB2312 Code:*/ 0xC7D8, /*==>해 Row:39 Col:56 */
+    /*0x79E7, GB2312 Code:*/ 0xD1ED, /*==>欄 Row:49 Col:77 */
+    /*0x79E9, GB2312 Code:*/ 0xD6C8, /*==>澧 Row:54 Col:40 */
+    /*0x79EB, GB2312 Code:*/ 0xEFF8, /*==>酊 Row:79 Col:88 */
+    /*0x79ED, GB2312 Code:*/ 0xEFF6, /*==>貞 Row:79 Col:86 */
+    /*0x79EF, GB2312 Code:*/ 0xBBFD, /*==>생 Row:27 Col:93 */
+    /*0x79F0, GB2312 Code:*/ 0xB3C6, /*==>냔 Row:19 Col:38 */
+    /*0x79F8, GB2312 Code:*/ 0xBDD5, /*==>쌌 Row:29 Col:53 */
+    /*0x79FB, GB2312 Code:*/ 0xD2C6, /*==>盧 Row:50 Col:38 */
+    /*0x79FD, GB2312 Code:*/ 0xBBE0, /*==>삑 Row:27 Col:64 */
+    /*0x7A00, GB2312 Code:*/ 0xCFA1, /*==>區 Row:47 Col:01 */
+    /*0x7A02, GB2312 Code:*/ 0xEFFC, /*==>錠 Row:79 Col:92 */
+    /*0x7A03, GB2312 Code:*/ 0xEFFB, /*==>鋌 Row:79 Col:91 */
+    /*0x7A06, GB2312 Code:*/ 0xEFF9, /*==>釘 Row:79 Col:89 */
+    /*0x7A0B, GB2312 Code:*/ 0xB3CC, /*==>넋 Row:19 Col:44 */
+    /*0x7A0D, GB2312 Code:*/ 0xC9D4, /*==>� Row:41 Col:52 */
+    /*0x7A0E, GB2312 Code:*/ 0xCBB0, /*==>江 Row:43 Col:16 */
+    /*0x7A14, GB2312 Code:*/ 0xEFFE, /*==>靖 Row:79 Col:94 */
+    /*0x7A17, GB2312 Code:*/ 0xB0DE, /*==>겪 Row:16 Col:62 */
+    /*0x7A1A, GB2312 Code:*/ 0xD6C9, /*==>禮 Row:54 Col:41 */
+    /*0x7A1E, GB2312 Code:*/ 0xEFFD, /*==>霆 Row:79 Col:93 */
+    /*0x7A20, GB2312 Code:*/ 0xB3ED, /*==>논 Row:19 Col:77 */
+    /*0x7A23, GB2312 Code:*/ 0xF6D5, /*==>侵 Row:86 Col:53 */
+    /*0x7A33, GB2312 Code:*/ 0xCEC8, /*==>洸 Row:46 Col:40 */
+    /*0x7A37, GB2312 Code:*/ 0xF0A2, /*==>頂 Row:80 Col:02 */
+    /*0x7A39, GB2312 Code:*/ 0xF0A1, /*==>靜 Row:80 Col:01 */
+    /*0x7A3B, GB2312 Code:*/ 0xB5BE, /*==>돗 Row:21 Col:30 */
+    /*0x7A3C, GB2312 Code:*/ 0xBCDA, /*==>솟 Row:28 Col:58 */
+    /*0x7A3D, GB2312 Code:*/ 0xBBFC, /*==>샜 Row:27 Col:92 */
+    /*0x7A3F, GB2312 Code:*/ 0xB8E5, /*==>멨 Row:24 Col:69 */
+    /*0x7A46, GB2312 Code:*/ 0xC4C2, /*==>컫 Row:36 Col:34 */
+    /*0x7A51, GB2312 Code:*/ 0xF0A3, /*==>鼎 Row:80 Col:03 */
+    /*0x7A57, GB2312 Code:*/ 0xCBEB, /*==>乾 Row:43 Col:75 */
+    /*0x7A70, GB2312 Code:*/ 0xF0A6, /*==>啼 Row:80 Col:06 */
+    /*0x7A74, GB2312 Code:*/ 0xD1A8, /*==>氣 Row:49 Col:08 */
+    /*0x7A76, GB2312 Code:*/ 0xBEBF, /*==>씩 Row:30 Col:31 */
+    /*0x7A77, GB2312 Code:*/ 0xC7EE, /*==>헨 Row:39 Col:78 */
+    /*0x7A78, GB2312 Code:*/ 0xF1B6, /*==>州 Row:81 Col:22 */
+    /*0x7A79, GB2312 Code:*/ 0xF1B7, /*==>廚 Row:81 Col:23 */
+    /*0x7A7A, GB2312 Code:*/ 0xBFD5, /*==>왕 Row:31 Col:53 */
+    /*0x7A7F, GB2312 Code:*/ 0xB4A9, /*==>누 Row:20 Col:09 */
+    /*0x7A80, GB2312 Code:*/ 0xF1B8, /*==>晝 Row:81 Col:24 */
+    /*0x7A81, GB2312 Code:*/ 0xCDBB, /*==>敲 Row:45 Col:27 */
+    /*0x7A83, GB2312 Code:*/ 0xC7D4, /*==>함 Row:39 Col:52 */
+    /*0x7A84, GB2312 Code:*/ 0xD5AD, /*==>駱 Row:53 Col:13 */
+    /*0x7A86, GB2312 Code:*/ 0xF1B9, /*==>朱 Row:81 Col:25 */
+    /*0x7A88, GB2312 Code:*/ 0xF1BA, /*==>柱 Row:81 Col:26 */
+    /*0x7A8D, GB2312 Code:*/ 0xC7CF, /*==>하 Row:39 Col:47 */
+    /*0x7A91, GB2312 Code:*/ 0xD2A4, /*==>衲 Row:50 Col:04 */
+    /*0x7A92, GB2312 Code:*/ 0xD6CF, /*==>擄 Row:54 Col:47 */
+    /*0x7A95, GB2312 Code:*/ 0xF1BB, /*==>株 Row:81 Col:27 */
+    /*0x7A96, GB2312 Code:*/ 0xBDD1, /*==>싼 Row:29 Col:49 */
+    /*0x7A97, GB2312 Code:*/ 0xB4B0, /*==>눗 Row:20 Col:16 */
+    /*0x7A98, GB2312 Code:*/ 0xBEBD, /*==>씜 Row:30 Col:29 */
+    /*0x7A9C, GB2312 Code:*/ 0xB4DC, /*==>단 Row:20 Col:60 */
+    /*0x7A9D, GB2312 Code:*/ 0xCED1, /*==>罫 Row:46 Col:49 */
+    /*0x7A9F, GB2312 Code:*/ 0xBFDF, /*==>욀 Row:31 Col:63 */
+    /*0x7AA0, GB2312 Code:*/ 0xF1BD, /*==>洲 Row:81 Col:29 */
+    /*0x7AA5, GB2312 Code:*/ 0xBFFA, /*==>웜 Row:31 Col:90 */
+    /*0x7AA6, GB2312 Code:*/ 0xF1BC, /*==>注 Row:81 Col:28 */
+    /*0x7AA8, GB2312 Code:*/ 0xF1BF, /*==>澍 Row:81 Col:31 */
+    /*0x7AAC, GB2312 Code:*/ 0xF1BE, /*==>湊 Row:81 Col:30 */
+    /*0x7AAD, GB2312 Code:*/ 0xF1C0, /*==>炷 Row:81 Col:32 */
+    /*0x7AB3, GB2312 Code:*/ 0xF1C1, /*==>珠 Row:81 Col:33 */
+    /*0x7ABF, GB2312 Code:*/ 0xC1FE, /*==>짓 Row:33 Col:94 */
+    /*0x7ACB, GB2312 Code:*/ 0xC1A2, /*==>접 Row:33 Col:02 */
+    /*0x7AD6, GB2312 Code:*/ 0xCAFA, /*==>紺 Row:42 Col:90 */
+    /*0x7AD9, GB2312 Code:*/ 0xD5BE, /*==>籃 Row:53 Col:30 */
+    /*0x7ADE, GB2312 Code:*/ 0xBEBA, /*==>씌 Row:30 Col:26 */
+    /*0x7ADF, GB2312 Code:*/ 0xBEB9, /*==>씁 Row:30 Col:25 */
+    /*0x7AE0, GB2312 Code:*/ 0xD5C2, /*==>覽 Row:53 Col:34 */
+    /*0x7AE3, GB2312 Code:*/ 0xBFA2, /*==>엑 Row:31 Col:02 */
+    /*0x7AE5, GB2312 Code:*/ 0xCDAF, /*==>古 Row:45 Col:15 */
+    /*0x7AE6, GB2312 Code:*/ 0xF1B5, /*==>宙 Row:81 Col:21 */
+    /*0x7AED, GB2312 Code:*/ 0xBDDF, /*==>쌩 Row:29 Col:63 */
+    /*0x7AEF, GB2312 Code:*/ 0xB6CB, /*==>똥 Row:22 Col:43 */
+    /*0x7AF9, GB2312 Code:*/ 0xD6F1, /*==>賂 Row:54 Col:81 */
+    /*0x7AFA, GB2312 Code:*/ 0xF3C3, /*==>纂 Row:83 Col:35 */
+    /*0x7AFD, GB2312 Code:*/ 0xF3C4, /*==>粲 Row:83 Col:36 */
+    /*0x7AFF, GB2312 Code:*/ 0xB8CD, /*==>맹 Row:24 Col:45 */
+    /*0x7B03, GB2312 Code:*/ 0xF3C6, /*==>讚 Row:83 Col:38 */
+    /*0x7B04, GB2312 Code:*/ 0xF3C7, /*==>贊 Row:83 Col:39 */
+    /*0x7B06, GB2312 Code:*/ 0xB0CA, /*==>걺 Row:16 Col:42 */
+    /*0x7B08, GB2312 Code:*/ 0xF3C5, /*==>纘 Row:83 Col:37 */
+    /*0x7B0A, GB2312 Code:*/ 0xF3C9, /*==>餐 Row:83 Col:41 */
+    /*0x7B0B, GB2312 Code:*/ 0xCBF1, /*==>楗 Row:43 Col:81 */
+    /*0x7B0F, GB2312 Code:*/ 0xF3CB, /*==>刹 Row:83 Col:43 */
+    /*0x7B11, GB2312 Code:*/ 0xD0A6, /*==>揆 Row:48 Col:06 */
+    /*0x7B14, GB2312 Code:*/ 0xB1CA, /*==>궝 Row:17 Col:42 */
+    /*0x7B15, GB2312 Code:*/ 0xF3C8, /*==>鑽 Row:83 Col:40 */
+    /*0x7B19, GB2312 Code:*/ 0xF3CF, /*==>紮 Row:83 Col:47 */
+    /*0x7B1B, GB2312 Code:*/ 0xB5D1, /*==>둘 Row:21 Col:49 */
+    /*0x7B1E, GB2312 Code:*/ 0xF3D7, /*==>站 Row:83 Col:55 */
+    /*0x7B20, GB2312 Code:*/ 0xF3D2, /*==>塹 Row:83 Col:50 */
+    /*0x7B24, GB2312 Code:*/ 0xF3D4, /*==>慙 Row:83 Col:52 */
+    /*0x7B25, GB2312 Code:*/ 0xF3D3, /*==>慘 Row:83 Col:51 */
+    /*0x7B26, GB2312 Code:*/ 0xB7FB, /*==>륜 Row:23 Col:91 */
+    /*0x7B28, GB2312 Code:*/ 0xB1BF, /*==>굻 Row:17 Col:31 */
+    /*0x7B2A, GB2312 Code:*/ 0xF3CE, /*==>札 Row:83 Col:46 */
+    /*0x7B2B, GB2312 Code:*/ 0xF3CA, /*==>饌 Row:83 Col:42 */
+    /*0x7B2C, GB2312 Code:*/ 0xB5DA, /*==>뒤 Row:21 Col:58 */
+    /*0x7B2E, GB2312 Code:*/ 0xF3D0, /*==>僭 Row:83 Col:48 */
+    /*0x7B31, GB2312 Code:*/ 0xF3D1, /*==>參 Row:83 Col:49 */
+    /*0x7B33, GB2312 Code:*/ 0xF3D5, /*==>懺 Row:83 Col:53 */
+    /*0x7B38, GB2312 Code:*/ 0xF3CD, /*==>擦 Row:83 Col:45 */
+    /*0x7B3A, GB2312 Code:*/ 0xBCE3, /*==>쇈 Row:28 Col:67 */
+    /*0x7B3C, GB2312 Code:*/ 0xC1FD, /*==>집 Row:33 Col:93 */
+    /*0x7B3E, GB2312 Code:*/ 0xF3D6, /*==>斬 Row:83 Col:54 */
+    /*0x7B45, GB2312 Code:*/ 0xF3DA, /*==>倉 Row:83 Col:58 */
+    /*0x7B47, GB2312 Code:*/ 0xF3CC, /*==>察 Row:83 Col:44 */
+    /*0x7B49, GB2312 Code:*/ 0xB5C8, /*==>된 Row:21 Col:40 */
+    /*0x7B4B, GB2312 Code:*/ 0xBDEE, /*==>쏘 Row:29 Col:78 */
+    /*0x7B4C, GB2312 Code:*/ 0xF3DC, /*==>創 Row:83 Col:60 */
+    /*0x7B4F, GB2312 Code:*/ 0xB7A4, /*==>랠 Row:23 Col:04 */
+    /*0x7B50, GB2312 Code:*/ 0xBFF0, /*==>욹 Row:31 Col:80 */
+    /*0x7B51, GB2312 Code:*/ 0xD6FE, /*==>蓼 Row:54 Col:94 */
+    /*0x7B52, GB2312 Code:*/ 0xCDB2, /*==>呱 Row:45 Col:18 */
+    /*0x7B54, GB2312 Code:*/ 0xB4F0, /*==>댑 Row:20 Col:80 */
+    /*0x7B56, GB2312 Code:*/ 0xB2DF, /*==>꿉 Row:18 Col:63 */
+    /*0x7B58, GB2312 Code:*/ 0xF3D8, /*==>讒 Row:83 Col:56 */
+    /*0x7B5A, GB2312 Code:*/ 0xF3D9, /*==>讖 Row:83 Col:57 */
+    /*0x7B5B, GB2312 Code:*/ 0xC9B8, /*==>� Row:41 Col:24 */
+    /*0x7B5D, GB2312 Code:*/ 0xF3DD, /*==>唱 Row:83 Col:61 */
+    /*0x7B60, GB2312 Code:*/ 0xF3DE, /*==>娼 Row:83 Col:62 */
+    /*0x7B62, GB2312 Code:*/ 0xF3E1, /*==>愴 Row:83 Col:65 */
+    /*0x7B6E, GB2312 Code:*/ 0xF3DF, /*==>廠 Row:83 Col:63 */
+    /*0x7B71, GB2312 Code:*/ 0xF3E3, /*==>昌 Row:83 Col:67 */
+    /*0x7B72, GB2312 Code:*/ 0xF3E2, /*==>敞 Row:83 Col:66 */
+    /*0x7B75, GB2312 Code:*/ 0xF3DB, /*==>倡 Row:83 Col:59 */
+    /*0x7B77, GB2312 Code:*/ 0xBFEA, /*==>욧 Row:31 Col:74 */
+    /*0x7B79, GB2312 Code:*/ 0xB3EF, /*==>놂 Row:19 Col:79 */
+    /*0x7B7B, GB2312 Code:*/ 0xF3E0, /*==>彰 Row:83 Col:64 */
+    /*0x7B7E, GB2312 Code:*/ 0xC7A9, /*==>푯 Row:39 Col:09 */
+    /*0x7B80, GB2312 Code:*/ 0xBCF2, /*==>숌 Row:28 Col:82 */
+    /*0x7B85, GB2312 Code:*/ 0xF3EB, /*==>窓 Row:83 Col:75 */
+    /*0x7B8D, GB2312 Code:*/ 0xB9BF, /*==>뮈 Row:25 Col:31 */
+    /*0x7B90, GB2312 Code:*/ 0xF3E4, /*==>昶 Row:83 Col:68 */
+    /*0x7B94, GB2312 Code:*/ 0xB2AD, /*==>껌 Row:18 Col:13 */
+    /*0x7B95, GB2312 Code:*/ 0xBBFE, /*==>샤 Row:27 Col:94 */
+    /*0x7B97, GB2312 Code:*/ 0xCBE3, /*==>炬 Row:43 Col:67 */
+    /*0x7B9C, GB2312 Code:*/ 0xF3ED, /*==>艙 Row:83 Col:77 */
+    /*0x7B9D, GB2312 Code:*/ 0xF3E9, /*==>猖 Row:83 Col:73 */
+    /*0x7BA1, GB2312 Code:*/ 0xB9DC, /*==>밗 Row:25 Col:60 */
+    /*0x7BA2, GB2312 Code:*/ 0xF3EE, /*==>菖 Row:83 Col:78 */
+    /*0x7BA6, GB2312 Code:*/ 0xF3E5, /*==>暢 Row:83 Col:69 */
+    /*0x7BA7, GB2312 Code:*/ 0xF3E6, /*==>槍 Row:83 Col:70 */
+    /*0x7BA8, GB2312 Code:*/ 0xF3EA, /*==>瘡 Row:83 Col:74 */
+    /*0x7BA9, GB2312 Code:*/ 0xC2E1, /*==>쭐 Row:34 Col:65 */
+    /*0x7BAA, GB2312 Code:*/ 0xF3EC, /*==>脹 Row:83 Col:76 */
+    /*0x7BAB, GB2312 Code:*/ 0xF3EF, /*==>蒼 Row:83 Col:79 */
+    /*0x7BAC, GB2312 Code:*/ 0xF3E8, /*==>漲 Row:83 Col:72 */
+    /*0x7BAD, GB2312 Code:*/ 0xBCFD, /*==>숫 Row:28 Col:93 */
+    /*0x7BB1, GB2312 Code:*/ 0xCFE4, /*==>芎 Row:47 Col:68 */
+    /*0x7BB4, GB2312 Code:*/ 0xF3F0, /*==>債 Row:83 Col:80 */
+    /*0x7BB8, GB2312 Code:*/ 0xF3E7, /*==>滄 Row:83 Col:71 */
+    /*0x7BC1, GB2312 Code:*/ 0xF3F2, /*==>寀 Row:83 Col:82 */
+    /*0x7BC6, GB2312 Code:*/ 0xD7AD, /*==>蔞 Row:55 Col:13 */
+    /*0x7BC7, GB2312 Code:*/ 0xC6AA, /*==>튠 Row:38 Col:10 */
+    /*0x7BCC, GB2312 Code:*/ 0xF3F3, /*==>寨 Row:83 Col:83 */
+    /*0x7BD1, GB2312 Code:*/ 0xF3F1, /*==>埰 Row:83 Col:81 */
+    /*0x7BD3, GB2312 Code:*/ 0xC2A8, /*==>짢 Row:34 Col:08 */
+    /*0x7BD9, GB2312 Code:*/ 0xB8DD, /*==>멓 Row:24 Col:61 */
+    /*0x7BDA, GB2312 Code:*/ 0xF3F5, /*==>採 Row:83 Col:85 */
+    /*0x7BDD, GB2312 Code:*/ 0xF3F4, /*==>彩 Row:83 Col:84 */
+    /*0x7BE1, GB2312 Code:*/ 0xB4DB, /*==>닦 Row:20 Col:59 */
+    /*0x7BE5, GB2312 Code:*/ 0xF3F6, /*==>砦 Row:83 Col:86 */
+    /*0x7BE6, GB2312 Code:*/ 0xF3F7, /*==>綵 Row:83 Col:87 */
+    /*0x7BEA, GB2312 Code:*/ 0xF3F8, /*==>菜 Row:83 Col:88 */
+    /*0x7BEE, GB2312 Code:*/ 0xC0BA, /*==>은 Row:32 Col:26 */
+    /*0x7BF1, GB2312 Code:*/ 0xC0E9, /*==>잰 Row:32 Col:73 */
+    /*0x7BF7, GB2312 Code:*/ 0xC5F1, /*==>퇸 Row:37 Col:81 */
+    /*0x7BFC, GB2312 Code:*/ 0xF3FB, /*==>釵 Row:83 Col:91 */
+    /*0x7BFE, GB2312 Code:*/ 0xF3FA, /*==>采 Row:83 Col:90 */
+    /*0x7C07, GB2312 Code:*/ 0xB4D8, /*==>닢 Row:20 Col:56 */
+    /*0x7C0B, GB2312 Code:*/ 0xF3FE, /*==>策 Row:83 Col:94 */
+    /*0x7C0C, GB2312 Code:*/ 0xF3F9, /*==>蔡 Row:83 Col:89 */
+    /*0x7C0F, GB2312 Code:*/ 0xF3FC, /*==>冊 Row:83 Col:92 */
+    /*0x7C16, GB2312 Code:*/ 0xF3FD, /*==>柵 Row:83 Col:93 */
+    /*0x7C1F, GB2312 Code:*/ 0xF4A1, /*==>責 Row:84 Col:01 */
+    /*0x7C26, GB2312 Code:*/ 0xF4A3, /*==>妻 Row:84 Col:03 */
+    /*0x7C27, GB2312 Code:*/ 0xBBC9, /*==>뽄 Row:27 Col:41 */
+    /*0x7C2A, GB2312 Code:*/ 0xF4A2, /*==>凄 Row:84 Col:02 */
+    /*0x7C38, GB2312 Code:*/ 0xF4A4, /*==>悽 Row:84 Col:04 */
+    /*0x7C3F, GB2312 Code:*/ 0xB2BE, /*==>꼐 Row:18 Col:30 */
+    /*0x7C40, GB2312 Code:*/ 0xF4A6, /*==>倜 Row:84 Col:06 */
+    /*0x7C41, GB2312 Code:*/ 0xF4A5, /*==>處 Row:84 Col:05 */
+    /*0x7C4D, GB2312 Code:*/ 0xBCAE, /*==>석 Row:28 Col:14 */
+    /*0x7C73, GB2312 Code:*/ 0xC3D7, /*==>쵠 Row:35 Col:55 */
+    /*0x7C74, GB2312 Code:*/ 0xD9E1, /*==>錨 Row:57 Col:65 */
+    /*0x7C7B, GB2312 Code:*/ 0xC0E0, /*==>잚 Row:32 Col:64 */
+    /*0x7C7C, GB2312 Code:*/ 0xF4CC, /*==>撤 Row:84 Col:44 */
+    /*0x7C7D, GB2312 Code:*/ 0xD7D1, /*==>楞 Row:55 Col:49 */
+    /*0x7C89, GB2312 Code:*/ 0xB7DB, /*==>뢴 Row:23 Col:59 */
+    /*0x7C91, GB2312 Code:*/ 0xF4CE, /*==>綴 Row:84 Col:46 */
+    /*0x7C92, GB2312 Code:*/ 0xC1A3, /*==>젓 Row:33 Col:03 */
+    /*0x7C95, GB2312 Code:*/ 0xC6C9, /*==>팖 Row:38 Col:41 */
+    /*0x7C97, GB2312 Code:*/ 0xB4D6, /*==>닛 Row:20 Col:54 */
+    /*0x7C98, GB2312 Code:*/ 0xD5B3, /*==>瀾 Row:53 Col:19 */
+    /*0x7C9C, GB2312 Code:*/ 0xF4D0, /*==>轍 Row:84 Col:48 */
+    /*0x7C9D, GB2312 Code:*/ 0xF4CF, /*==>輟 Row:84 Col:47 */
+    /*0x7C9E, GB2312 Code:*/ 0xF4D1, /*==>鐵 Row:84 Col:49 */
+    /*0x7C9F, GB2312 Code:*/ 0xCBDA, /*==>倨 Row:43 Col:58 */
+    /*0x7CA2, GB2312 Code:*/ 0xF4D2, /*==>僉 Row:84 Col:50 */
+    /*0x7CA4, GB2312 Code:*/ 0xD4C1, /*==>讀 Row:52 Col:33 */
+    /*0x7CA5, GB2312 Code:*/ 0xD6E0, /*==>綠 Row:54 Col:64 */
+    /*0x7CAA, GB2312 Code:*/ 0xB7E0, /*==>룅 Row:23 Col:64 */
+    /*0x7CAE, GB2312 Code:*/ 0xC1B8, /*==>존 Row:33 Col:24 */
+    /*0x7CB1, GB2312 Code:*/ 0xC1BB, /*==>좀 Row:33 Col:27 */
+    /*0x7CB2, GB2312 Code:*/ 0xF4D3, /*==>尖 Row:84 Col:51 */
+    /*0x7CB3, GB2312 Code:*/ 0xBEAC, /*==>쒀 Row:30 Col:12 */
+    /*0x7CB9, GB2312 Code:*/ 0xB4E2, /*==>닳 Row:20 Col:66 */
+    /*0x7CBC, GB2312 Code:*/ 0xF4D4, /*==>沾 Row:84 Col:52 */
+    /*0x7CBD, GB2312 Code:*/ 0xF4D5, /*==>添 Row:84 Col:53 */
+    /*0x7CBE, GB2312 Code:*/ 0xBEAB, /*==>쑹 Row:30 Col:11 */
+    /*0x7CC1, GB2312 Code:*/ 0xF4D6, /*==>甛 Row:84 Col:54 */
+    /*0x7CC5, GB2312 Code:*/ 0xF4DB, /*==>諂 Row:84 Col:59 */
+    /*0x7CC7, GB2312 Code:*/ 0xF4D7, /*==>瞻 Row:84 Col:55 */
+    /*0x7CC8, GB2312 Code:*/ 0xF4DA, /*==>詹 Row:84 Col:58 */
+    /*0x7CCA, GB2312 Code:*/ 0xBAFD, /*==>빡 Row:26 Col:93 */
+    /*0x7CCC, GB2312 Code:*/ 0xF4D8, /*==>簽 Row:84 Col:56 */
+    /*0x7CCD, GB2312 Code:*/ 0xF4D9, /*==>籤 Row:84 Col:57 */
+    /*0x7CD5, GB2312 Code:*/ 0xB8E2, /*==>멤 Row:24 Col:66 */
+    /*0x7CD6, GB2312 Code:*/ 0xCCC7, /*==>鎌 Row:44 Col:39 */
+    /*0x7CD7, GB2312 Code:*/ 0xF4DC, /*==>堞 Row:84 Col:60 */
+    /*0x7CD9, GB2312 Code:*/ 0xB2DA, /*==>꾹 Row:18 Col:58 */
+    /*0x7CDC, GB2312 Code:*/ 0xC3D3, /*==>촨 Row:35 Col:51 */
+    /*0x7CDF, GB2312 Code:*/ 0xD4E3, /*==>痘 Row:52 Col:67 */
+    /*0x7CE0, GB2312 Code:*/ 0xBFB7, /*==>옆 Row:31 Col:23 */
+    /*0x7CE8, GB2312 Code:*/ 0xF4DD, /*==>妾 Row:84 Col:61 */
+    /*0x7CEF, GB2312 Code:*/ 0xC5B4, /*==>킴 Row:37 Col:20 */
+    /*0x7CF8, GB2312 Code:*/ 0xF4E9, /*==>聽 Row:84 Col:73 */
+    /*0x7CFB, GB2312 Code:*/ 0xCFB5, /*==>溝 Row:47 Col:21 */
+    /*0x7D0A, GB2312 Code:*/ 0xCEC9, /*==>炚 Row:46 Col:41 */
+    /*0x7D20, GB2312 Code:*/ 0xCBD8, /*==>羹 Row:43 Col:56 */
+    /*0x7D22, GB2312 Code:*/ 0xCBF7, /*==>乞 Row:43 Col:87 */
+    /*0x7D27, GB2312 Code:*/ 0xBDF4, /*==>쏨 Row:29 Col:84 */
+    /*0x7D2B, GB2312 Code:*/ 0xD7CF, /*==>凜 Row:55 Col:47 */
+    /*0x7D2F, GB2312 Code:*/ 0xC0DB, /*==>작 Row:32 Col:59 */
+    /*0x7D6E, GB2312 Code:*/ 0xD0F5, /*==>妓 Row:48 Col:85 */
+    /*0x7D77, GB2312 Code:*/ 0xF4EA, /*==>菁 Row:84 Col:74 */
+    /*0x7DA6, GB2312 Code:*/ 0xF4EB, /*==>請 Row:84 Col:75 */
+    /*0x7DAE, GB2312 Code:*/ 0xF4EC, /*==>靑 Row:84 Col:76 */
+    /*0x7E3B, GB2312 Code:*/ 0xF7E3, /*==>鬪 Row:87 Col:67 */
+    /*0x7E41, GB2312 Code:*/ 0xB7B1, /*==>런 Row:23 Col:17 */
+    /*0x7E47, GB2312 Code:*/ 0xF4ED, /*==>鯖 Row:84 Col:77 */
+    /*0x7E82, GB2312 Code:*/ 0xD7EB, /*==>裡 Row:55 Col:75 */
+    /*0x7E9B, GB2312 Code:*/ 0xF4EE, /*==>切 Row:84 Col:78 */
+    /*0x7E9F, GB2312 Code:*/ 0xE6F9, /*==>殮 Row:70 Col:89 */
+    /*0x7EA0, GB2312 Code:*/ 0xBEC0, /*==>씬 Row:30 Col:32 */
+    /*0x7EA1, GB2312 Code:*/ 0xE6FA, /*==>炎 Row:70 Col:90 */
+    /*0x7EA2, GB2312 Code:*/ 0xBAEC, /*==>븐 Row:26 Col:76 */
+    /*0x7EA3, GB2312 Code:*/ 0xE6FB, /*==>焰 Row:70 Col:91 */
+    /*0x7EA4, GB2312 Code:*/ 0xCFCB, /*==>駒 Row:47 Col:43 */
+    /*0x7EA5, GB2312 Code:*/ 0xE6FC, /*==>琰 Row:70 Col:92 */
+    /*0x7EA6, GB2312 Code:*/ 0xD4BC, /*==>獨 Row:52 Col:28 */
+    /*0x7EA7, GB2312 Code:*/ 0xBCB6, /*==>섬 Row:28 Col:22 */
+    /*0x7EA8, GB2312 Code:*/ 0xE6FD, /*==>艶 Row:70 Col:93 */
+    /*0x7EA9, GB2312 Code:*/ 0xE6FE, /*==>苒 Row:70 Col:94 */
+    /*0x7EAA, GB2312 Code:*/ 0xBCCD, /*==>셩 Row:28 Col:45 */
+    /*0x7EAB, GB2312 Code:*/ 0xC8D2, /*==>훽 Row:40 Col:50 */
+    /*0x7EAC, GB2312 Code:*/ 0xCEB3, /*==>款 Row:46 Col:19 */
+    /*0x7EAD, GB2312 Code:*/ 0xE7A1, /*==>簾 Row:71 Col:01 */
+    /*0x7EAF, GB2312 Code:*/ 0xB4BF, /*==>늉 Row:20 Col:31 */
+    /*0x7EB0, GB2312 Code:*/ 0xE7A2, /*==>閻 Row:71 Col:02 */
+    /*0x7EB1, GB2312 Code:*/ 0xC9B4, /*==>� Row:41 Col:20 */
+    /*0x7EB2, GB2312 Code:*/ 0xB8D9, /*==>멉 Row:24 Col:57 */
+    /*0x7EB3, GB2312 Code:*/ 0xC4C9, /*==>케 Row:36 Col:41 */
+    /*0x7EB5, GB2312 Code:*/ 0xD7DD, /*==>李 Row:55 Col:61 */
+    /*0x7EB6, GB2312 Code:*/ 0xC2DA, /*==>쬘 Row:34 Col:58 */
+    /*0x7EB7, GB2312 Code:*/ 0xB7D7, /*==>롼 Row:23 Col:55 */
+    /*0x7EB8, GB2312 Code:*/ 0xD6BD, /*==>笭 Row:54 Col:29 */
+    /*0x7EB9, GB2312 Code:*/ 0xCEC6, /*==>廣 Row:46 Col:38 */
+    /*0x7EBA, GB2312 Code:*/ 0xB7C4, /*==>렬 Row:23 Col:36 */
+    /*0x7EBD, GB2312 Code:*/ 0xC5A6, /*==>큔 Row:37 Col:06 */
+    /*0x7EBE, GB2312 Code:*/ 0xE7A3, /*==>髥 Row:71 Col:03 */
+    /*0x7EBF, GB2312 Code:*/ 0xCFDF, /*==>窟 Row:47 Col:63 */
+    /*0x7EC0, GB2312 Code:*/ 0xE7A4, /*==>鹽 Row:71 Col:04 */
+    /*0x7EC1, GB2312 Code:*/ 0xE7A5, /*==>曄 Row:71 Col:05 */
+    /*0x7EC2, GB2312 Code:*/ 0xE7A6, /*==>獵 Row:71 Col:06 */
+    /*0x7EC3, GB2312 Code:*/ 0xC1B7, /*==>족 Row:33 Col:23 */
+    /*0x7EC4, GB2312 Code:*/ 0xD7E9, /*==>莉 Row:55 Col:73 */
+    /*0x7EC5, GB2312 Code:*/ 0xC9F0, /*==>� Row:41 Col:80 */
+    /*0x7EC6, GB2312 Code:*/ 0xCFB8, /*==>玖 Row:47 Col:24 */
+    /*0x7EC7, GB2312 Code:*/ 0xD6AF, /*==>廉 Row:54 Col:15 */
+    /*0x7EC8, GB2312 Code:*/ 0xD6D5, /*==>老 Row:54 Col:53 */
+    /*0x7EC9, GB2312 Code:*/ 0xE7A7, /*==>燁 Row:71 Col:07 */
+    /*0x7ECA, GB2312 Code:*/ 0xB0ED, /*==>고 Row:16 Col:77 */
+    /*0x7ECB, GB2312 Code:*/ 0xE7A8, /*==>葉 Row:71 Col:08 */
+    /*0x7ECC, GB2312 Code:*/ 0xE7A9, /*==>令 Row:71 Col:09 */
+    /*0x7ECD, GB2312 Code:*/ 0xC9DC, /*==>� Row:41 Col:60 */
+    /*0x7ECE, GB2312 Code:*/ 0xD2EF, /*==>紐 Row:50 Col:79 */
+    /*0x7ECF, GB2312 Code:*/ 0xBEAD, /*==>쒔 Row:30 Col:13 */
+    /*0x7ED0, GB2312 Code:*/ 0xE7AA, /*==>囹 Row:71 Col:10 */
+    /*0x7ED1, GB2312 Code:*/ 0xB0F3, /*==>곬 Row:16 Col:83 */
+    /*0x7ED2, GB2312 Code:*/ 0xC8DE, /*==>휴 Row:40 Col:62 */
+    /*0x7ED3, GB2312 Code:*/ 0xBDE1, /*==>써 Row:29 Col:65 */
+    /*0x7ED4, GB2312 Code:*/ 0xE7AB, /*==>塋 Row:71 Col:11 */
+    /*0x7ED5, GB2312 Code:*/ 0xC8C6, /*==>훈 Row:40 Col:38 */
+    /*0x7ED7, GB2312 Code:*/ 0xE7AC, /*==>寧 Row:71 Col:12 */
+    /*0x7ED8, GB2312 Code:*/ 0xBBE6, /*==>삥 Row:27 Col:70 */
+    /*0x7ED9, GB2312 Code:*/ 0xB8F8, /*==>못 Row:24 Col:88 */
+    /*0x7EDA, GB2312 Code:*/ 0xD1A4, /*==>棋 Row:49 Col:04 */
+    /*0x7EDB, GB2312 Code:*/ 0xE7AD, /*==>嶺 Row:71 Col:13 */
+    /*0x7EDC, GB2312 Code:*/ 0xC2E7, /*==>쭹 Row:34 Col:71 */
+    /*0x7EDD, GB2312 Code:*/ 0xBEF8, /*==>없 Row:30 Col:88 */
+    /*0x7EDE, GB2312 Code:*/ 0xBDCA, /*==>십 Row:29 Col:42 */
+    /*0x7EDF, GB2312 Code:*/ 0xCDB3, /*==>固 Row:45 Col:19 */
+    /*0x7EE0, GB2312 Code:*/ 0xE7AE, /*==>嶸 Row:71 Col:14 */
+    /*0x7EE1, GB2312 Code:*/ 0xE7AF, /*==>影 Row:71 Col:15 */
+    /*0x7EE2, GB2312 Code:*/ 0xBEEE, /*==>어 Row:30 Col:78 */
+    /*0x7EE3, GB2312 Code:*/ 0xD0E5, /*==>給 Row:48 Col:69 */
+    /*0x7EE5, GB2312 Code:*/ 0xCBE7, /*==>車 Row:43 Col:71 */
+    /*0x7EE6, GB2312 Code:*/ 0xCCD0, /*==>坰 Row:44 Col:48 */
+    /*0x7EE7, GB2312 Code:*/ 0xBCCC, /*==>셨 Row:28 Col:44 */
+    /*0x7EE8, GB2312 Code:*/ 0xE7B0, /*==>怜 Row:71 Col:16 */
+    /*0x7EE9, GB2312 Code:*/ 0xBCA8, /*==>섀 Row:28 Col:08 */
+    /*0x7EEA, GB2312 Code:*/ 0xD0F7, /*==>岐 Row:48 Col:87 */
+    /*0x7EEB, GB2312 Code:*/ 0xE7B1, /*==>映 Row:71 Col:17 */
+    /*0x7EED, GB2312 Code:*/ 0xD0F8, /*==>崎 Row:48 Col:88 */
+    /*0x7EEE, GB2312 Code:*/ 0xE7B2, /*==>暎 Row:71 Col:18 */
+    /*0x7EEF, GB2312 Code:*/ 0xE7B3, /*==>楹 Row:71 Col:19 */
+    /*0x7EF0, GB2312 Code:*/ 0xB4C2, /*==>는 Row:20 Col:34 */
+    /*0x7EF1, GB2312 Code:*/ 0xE7B4, /*==>榮 Row:71 Col:20 */
+    /*0x7EF2, GB2312 Code:*/ 0xE7B5, /*==>永 Row:71 Col:21 */
+    /*0x7EF3, GB2312 Code:*/ 0xC9FE, /*==>� Row:41 Col:94 */
+    /*0x7EF4, GB2312 Code:*/ 0xCEAC, /*==>郭 Row:46 Col:12 */
+    /*0x7EF5, GB2312 Code:*/ 0xC3E0, /*==>축 Row:35 Col:64 */
+    /*0x7EF6, GB2312 Code:*/ 0xE7B7, /*==>渶 Row:71 Col:23 */
+    /*0x7EF7, GB2312 Code:*/ 0xB1C1, /*==>굽 Row:17 Col:33 */
+    /*0x7EF8, GB2312 Code:*/ 0xB3F1, /*==>놉 Row:19 Col:81 */
+    /*0x7EFA, GB2312 Code:*/ 0xE7B8, /*==>潁 Row:71 Col:24 */
+    /*0x7EFB, GB2312 Code:*/ 0xE7B9, /*==>濚 Row:71 Col:25 */
+    /*0x7EFC, GB2312 Code:*/ 0xD7DB, /*==>履 Row:55 Col:59 */
+    /*0x7EFD, GB2312 Code:*/ 0xD5C0, /*==>藍 Row:53 Col:32 */
+    /*0x7EFE, GB2312 Code:*/ 0xE7BA, /*==>瀛 Row:71 Col:26 */
+    /*0x7EFF, GB2312 Code:*/ 0xC2CC, /*==>쫄 Row:34 Col:44 */
+    /*0x7F00, GB2312 Code:*/ 0xD7BA, /*==>留 Row:55 Col:26 */
+    /*0x7F01, GB2312 Code:*/ 0xE7BB, /*==>瀯 Row:71 Col:27 */
+    /*0x7F02, GB2312 Code:*/ 0xE7BC, /*==>煐 Row:71 Col:28 */
+    /*0x7F03, GB2312 Code:*/ 0xE7BD, /*==>營 Row:71 Col:29 */
+    /*0x7F04, GB2312 Code:*/ 0xBCEA, /*==>쇨 Row:28 Col:74 */
+    /*0x7F05, GB2312 Code:*/ 0xC3E5, /*==>춧 Row:35 Col:69 */
+    /*0x7F06, GB2312 Code:*/ 0xC0C2, /*==>읓 Row:32 Col:34 */
+    /*0x7F07, GB2312 Code:*/ 0xE7BE, /*==>獰 Row:71 Col:30 */
+    /*0x7F08, GB2312 Code:*/ 0xE7BF, /*==>玲 Row:71 Col:31 */
+    /*0x7F09, GB2312 Code:*/ 0xBCA9, /*==>섄 Row:28 Col:09 */
+    /*0x7F0B, GB2312 Code:*/ 0xE7C0, /*==>瑛 Row:71 Col:32 */
+    /*0x7F0C, GB2312 Code:*/ 0xE7C1, /*==>瑩 Row:71 Col:33 */
+    /*0x7F0D, GB2312 Code:*/ 0xE7B6, /*==>泳 Row:71 Col:22 */
+    /*0x7F0E, GB2312 Code:*/ 0xB6D0, /*==>뙨 Row:22 Col:48 */
+    /*0x7F0F, GB2312 Code:*/ 0xE7C2, /*==>瓔 Row:71 Col:34 */
+    /*0x7F11, GB2312 Code:*/ 0xE7C3, /*==>盈 Row:71 Col:35 */
+    /*0x7F12, GB2312 Code:*/ 0xE7C4, /*==>穎 Row:71 Col:36 */
+    /*0x7F13, GB2312 Code:*/ 0xBBBA, /*==>뻠 Row:27 Col:26 */
+    /*0x7F14, GB2312 Code:*/ 0xB5DE, /*==>뒷 Row:21 Col:62 */
+    /*0x7F15, GB2312 Code:*/ 0xC2C6, /*==>쩽 Row:34 Col:38 */
+    /*0x7F16, GB2312 Code:*/ 0xB1E0, /*==>긍 Row:17 Col:64 */
+    /*0x7F17, GB2312 Code:*/ 0xE7C5, /*==>纓 Row:71 Col:37 */
+    /*0x7F18, GB2312 Code:*/ 0xD4B5, /*==>鍍 Row:52 Col:21 */
+    /*0x7F19, GB2312 Code:*/ 0xE7C6, /*==>羚 Row:71 Col:38 */
+    /*0x7F1A, GB2312 Code:*/ 0xB8BF, /*==>맙 Row:24 Col:31 */
+    /*0x7F1B, GB2312 Code:*/ 0xE7C8, /*==>英 Row:71 Col:40 */
+    /*0x7F1C, GB2312 Code:*/ 0xE7C7, /*==>聆 Row:71 Col:39 */
+    /*0x7F1D, GB2312 Code:*/ 0xB7EC, /*==>룹 Row:23 Col:76 */
+    /*0x7F1F, GB2312 Code:*/ 0xE7C9, /*==>詠 Row:71 Col:41 */
+    /*0x7F20, GB2312 Code:*/ 0xB2F8, /*==>끌 Row:18 Col:88 */
+    /*0x7F21, GB2312 Code:*/ 0xE7CA, /*==>迎 Row:71 Col:42 */
+    /*0x7F22, GB2312 Code:*/ 0xE7CB, /*==>鈴 Row:71 Col:43 */
+    /*0x7F23, GB2312 Code:*/ 0xE7CC, /*==>鍈 Row:71 Col:44 */
+    /*0x7F24, GB2312 Code:*/ 0xE7CD, /*==>零 Row:71 Col:45 */
+    /*0x7F25, GB2312 Code:*/ 0xE7CE, /*==>霙 Row:71 Col:46 */
+    /*0x7F26, GB2312 Code:*/ 0xE7CF, /*==>靈 Row:71 Col:47 */
+    /*0x7F27, GB2312 Code:*/ 0xE7D0, /*==>領 Row:71 Col:48 */
+    /*0x7F28, GB2312 Code:*/ 0xD3A7, /*==>彖 Row:51 Col:07 */
+    /*0x7F29, GB2312 Code:*/ 0xCBF5, /*==>鍵 Row:43 Col:85 */
+    /*0x7F2A, GB2312 Code:*/ 0xE7D1, /*==>乂 Row:71 Col:49 */
+    /*0x7F2B, GB2312 Code:*/ 0xE7D2, /*==>倪 Row:71 Col:50 */
+    /*0x7F2C, GB2312 Code:*/ 0xE7D3, /*==>例 Row:71 Col:51 */
+    /*0x7F2D, GB2312 Code:*/ 0xE7D4, /*==>刈 Row:71 Col:52 */
+    /*0x7F2E, GB2312 Code:*/ 0xC9C9, /*==>� Row:41 Col:41 */
+    /*0x7F2F, GB2312 Code:*/ 0xE7D5, /*==>叡 Row:71 Col:53 */
+    /*0x7F30, GB2312 Code:*/ 0xE7D6, /*==>曳 Row:71 Col:54 */
+    /*0x7F31, GB2312 Code:*/ 0xE7D7, /*==>汭 Row:71 Col:55 */
+    /*0x7F32, GB2312 Code:*/ 0xE7D8, /*==>濊 Row:71 Col:56 */
+    /*0x7F33, GB2312 Code:*/ 0xE7D9, /*==>猊 Row:71 Col:57 */
+    /*0x7F34, GB2312 Code:*/ 0xBDC9, /*==>심 Row:29 Col:41 */
+    /*0x7F35, GB2312 Code:*/ 0xE7DA, /*==>睿 Row:71 Col:58 */
+    /*0x7F36, GB2312 Code:*/ 0xF3BE, /*==>燦 Row:83 Col:30 */
+    /*0x7F38, GB2312 Code:*/ 0xB8D7, /*==>멂 Row:24 Col:55 */
+    /*0x7F3A, GB2312 Code:*/ 0xC8B1, /*==>홧 Row:40 Col:17 */
+    /*0x7F42, GB2312 Code:*/ 0xF3BF, /*==>璨 Row:83 Col:31 */
+    /*0x7F44, GB2312 Code:*/ 0xF3C0, /*==>瓚 Row:83 Col:32 */
+    /*0x7F45, GB2312 Code:*/ 0xF3C1, /*==>竄 Row:83 Col:33 */
+    /*0x7F50, GB2312 Code:*/ 0xB9DE, /*==>받 Row:25 Col:62 */
+    /*0x7F51, GB2312 Code:*/ 0xCDF8, /*==>貢 Row:45 Col:88 */
+    /*0x7F54, GB2312 Code:*/ 0xD8E8, /*==>陌 Row:56 Col:72 */
+    /*0x7F55, GB2312 Code:*/ 0xBAB1, /*==>볍 Row:26 Col:17 */
+    /*0x7F57, GB2312 Code:*/ 0xC2DE, /*==>쭈 Row:34 Col:62 */
+    /*0x7F58, GB2312 Code:*/ 0xEEB7, /*==>佇 Row:78 Col:23 */
+    /*0x7F5A, GB2312 Code:*/ 0xB7A3, /*==>랜 Row:23 Col:03 */
+    /*0x7F5F, GB2312 Code:*/ 0xEEB9, /*==>儲 Row:78 Col:25 */
+    /*0x7F61, GB2312 Code:*/ 0xEEB8, /*==>低 Row:78 Col:24 */
+    /*0x7F62, GB2312 Code:*/ 0xB0D5, /*==>겐 Row:16 Col:53 */
+    /*0x7F68, GB2312 Code:*/ 0xEEBB, /*==>姐 Row:78 Col:27 */
+    /*0x7F69, GB2312 Code:*/ 0xD5D6, /*==>倆 Row:53 Col:54 */
+    /*0x7F6A, GB2312 Code:*/ 0xD7EF, /*==>鯉 Row:55 Col:79 */
+    /*0x7F6E, GB2312 Code:*/ 0xD6C3, /*==>零 Row:54 Col:35 */
+    /*0x7F71, GB2312 Code:*/ 0xEEBD, /*==>抵 Row:78 Col:29 */
+    /*0x7F72, GB2312 Code:*/ 0xCAF0, /*==>憾 Row:42 Col:80 */
+    /*0x7F74, GB2312 Code:*/ 0xEEBC, /*==>底 Row:78 Col:28 */
+    /*0x7F79, GB2312 Code:*/ 0xEEBE, /*==>杵 Row:78 Col:30 */
+    /*0x7F7E, GB2312 Code:*/ 0xEEC0, /*==>樗 Row:78 Col:32 */
+    /*0x7F81, GB2312 Code:*/ 0xEEBF, /*==>楮 Row:78 Col:31 */
+    /*0x7F8A, GB2312 Code:*/ 0xD1F2, /*==>鸞 Row:49 Col:82 */
+    /*0x7F8C, GB2312 Code:*/ 0xC7BC, /*==>퓬 Row:39 Col:28 */
+    /*0x7F8E, GB2312 Code:*/ 0xC3C0, /*==>쳄 Row:35 Col:32 */
+    /*0x7F94, GB2312 Code:*/ 0xB8E1, /*==>멜 Row:24 Col:65 */
+    /*0x7F9A, GB2312 Code:*/ 0xC1E7, /*==>쥠 Row:33 Col:71 */
+    /*0x7F9D, GB2312 Code:*/ 0xF4C6, /*==>阡 Row:84 Col:38 */
+    /*0x7F9E, GB2312 Code:*/ 0xD0DF, /*==>伋 Row:48 Col:63 */
+    /*0x7F9F, GB2312 Code:*/ 0xF4C7, /*==>韆 Row:84 Col:39 */
+    /*0x7FA1, GB2312 Code:*/ 0xCFDB, /*==>郡 Row:47 Col:59 */
+    /*0x7FA4, GB2312 Code:*/ 0xC8BA, /*==>횐 Row:40 Col:26 */
+    /*0x7FA7, GB2312 Code:*/ 0xF4C8, /*==>凸 Row:84 Col:40 */
+    /*0x7FAF, GB2312 Code:*/ 0xF4C9, /*==>哲 Row:84 Col:41 */
+    /*0x7FB0, GB2312 Code:*/ 0xF4CA, /*==>喆 Row:84 Col:42 */
+    /*0x7FB2, GB2312 Code:*/ 0xF4CB, /*==>徹 Row:84 Col:43 */
+    /*0x7FB8, GB2312 Code:*/ 0xD9FA, /*==>們 Row:57 Col:90 */
+    /*0x7FB9, GB2312 Code:*/ 0xB8FE, /*==>뫼 Row:24 Col:94 */
+    /*0x7FBC, GB2312 Code:*/ 0xE5F1, /*==>嚴 Row:69 Col:81 */
+    /*0x7FBD, GB2312 Code:*/ 0xD3F0, /*==>到 Row:51 Col:80 */
+    /*0x7FBF, GB2312 Code:*/ 0xF4E0, /*==>牒 Row:84 Col:64 */
+    /*0x7FC1, GB2312 Code:*/ 0xCECC, /*==>筐 Row:46 Col:44 */
+    /*0x7FC5, GB2312 Code:*/ 0xB3E1, /*==>녁 Row:19 Col:65 */
+    /*0x7FCA, GB2312 Code:*/ 0xF1B4, /*==>奏 Row:81 Col:20 */
+    /*0x7FCC, GB2312 Code:*/ 0xD2EE, /*==>杻 Row:50 Col:78 */
+    /*0x7FCE, GB2312 Code:*/ 0xF4E1, /*==>疊 Row:84 Col:65 */
+    /*0x7FD4, GB2312 Code:*/ 0xCFE8, /*==>勸 Row:47 Col:72 */
+    /*0x7FD5, GB2312 Code:*/ 0xF4E2, /*==>睫 Row:84 Col:66 */
+    /*0x7FD8, GB2312 Code:*/ 0xC7CC, /*==>핍 Row:39 Col:44 */
+    /*0x7FDF, GB2312 Code:*/ 0xB5D4, /*==>둣 Row:21 Col:52 */
+    /*0x7FE0, GB2312 Code:*/ 0xB4E4, /*==>답 Row:20 Col:68 */
+    /*0x7FE1, GB2312 Code:*/ 0xF4E4, /*==>貼 Row:84 Col:68 */
+    /*0x7FE5, GB2312 Code:*/ 0xF4E3, /*==>諜 Row:84 Col:67 */
+    /*0x7FE6, GB2312 Code:*/ 0xF4E5, /*==>輒 Row:84 Col:69 */
+    /*0x7FE9, GB2312 Code:*/ 0xF4E6, /*==>廳 Row:84 Col:70 */
+    /*0x7FEE, GB2312 Code:*/ 0xF4E7, /*==>晴 Row:84 Col:71 */
+    /*0x7FF0, GB2312 Code:*/ 0xBAB2, /*==>볏 Row:26 Col:18 */
+    /*0x7FF1, GB2312 Code:*/ 0xB0BF, /*==>걀 Row:16 Col:31 */
+    /*0x7FF3, GB2312 Code:*/ 0xF4E8, /*==>淸 Row:84 Col:72 */
+    /*0x7FFB, GB2312 Code:*/ 0xB7AD, /*==>럇 Row:23 Col:13 */
+    /*0x7FFC, GB2312 Code:*/ 0xD2ED, /*==>訥 Row:50 Col:77 */
+    /*0x8000, GB2312 Code:*/ 0xD2AB, /*==>郎 Row:50 Col:11 */
+    /*0x8001, GB2312 Code:*/ 0xC0CF, /*==>일 Row:32 Col:47 */
+    /*0x8003, GB2312 Code:*/ 0xBFBC, /*==>옘 Row:31 Col:28 */
+    /*0x8004, GB2312 Code:*/ 0xEBA3, /*==>猷 Row:75 Col:03 */
+    /*0x8005, GB2312 Code:*/ 0xD5DF, /*==>諒 Row:53 Col:63 */
+    /*0x8006, GB2312 Code:*/ 0xEAC8, /*==>位 Row:74 Col:40 */
+    /*0x800B, GB2312 Code:*/ 0xF1F3, /*==>憎 Row:81 Col:83 */
+    /*0x800C, GB2312 Code:*/ 0xB6F8, /*==>랍 Row:22 Col:88 */
+    /*0x800D, GB2312 Code:*/ 0xCBA3, /*==>甲 Row:43 Col:03 */
+    /*0x8010, GB2312 Code:*/ 0xC4CD, /*==>켐 Row:36 Col:45 */
+    /*0x8012, GB2312 Code:*/ 0xF1E7, /*==>駿 Row:81 Col:71 */
+    /*0x8014, GB2312 Code:*/ 0xF1E8, /*==>茁 Row:81 Col:72 */
+    /*0x8015, GB2312 Code:*/ 0xB8FB, /*==>뫈 Row:24 Col:91 */
+    /*0x8016, GB2312 Code:*/ 0xF1E9, /*==>中 Row:81 Col:73 */
+    /*0x8017, GB2312 Code:*/ 0xBAC4, /*==>봬 Row:26 Col:36 */
+    /*0x8018, GB2312 Code:*/ 0xD4C5, /*==>旽 Row:52 Col:37 */
+    /*0x8019, GB2312 Code:*/ 0xB0D2, /*==>겊 Row:16 Col:50 */
+    /*0x801C, GB2312 Code:*/ 0xF1EA, /*==>仲 Row:81 Col:74 */
+    /*0x8020, GB2312 Code:*/ 0xF1EB, /*==>衆 Row:81 Col:75 */
+    /*0x8022, GB2312 Code:*/ 0xF1EC, /*==>重 Row:81 Col:76 */
+    /*0x8025, GB2312 Code:*/ 0xF1ED, /*==>卽 Row:81 Col:77 */
+    /*0x8026, GB2312 Code:*/ 0xF1EE, /*==>櫛 Row:81 Col:78 */
+    /*0x8027, GB2312 Code:*/ 0xF1EF, /*==>楫 Row:81 Col:79 */
+    /*0x8028, GB2312 Code:*/ 0xF1F1, /*==>葺 Row:81 Col:81 */
+    /*0x8029, GB2312 Code:*/ 0xF1F0, /*==>汁 Row:81 Col:80 */
+    /*0x802A, GB2312 Code:*/ 0xC5D5, /*==>텄 Row:37 Col:53 */
+    /*0x8031, GB2312 Code:*/ 0xF1F2, /*==>增 Row:81 Col:82 */
+    /*0x8033, GB2312 Code:*/ 0xB6FA, /*==>랐 Row:22 Col:90 */
+    /*0x8035, GB2312 Code:*/ 0xF1F4, /*==>曾 Row:81 Col:84 */
+    /*0x8036, GB2312 Code:*/ 0xD2AE, /*==>內 Row:50 Col:14 */
+    /*0x8037, GB2312 Code:*/ 0xDEC7, /*==>僿 Row:62 Col:39 */
+    /*0x8038, GB2312 Code:*/ 0xCBCA, /*==>疥 Row:43 Col:42 */
+    /*0x803B, GB2312 Code:*/ 0xB3DC, /*==>넵 Row:19 Col:60 */
+    /*0x803D, GB2312 Code:*/ 0xB5A2, /*==>덩 Row:21 Col:02 */
+    /*0x803F, GB2312 Code:*/ 0xB9A2, /*==>묄 Row:25 Col:02 */
+    /*0x8042, GB2312 Code:*/ 0xC4F4, /*==>쿵 Row:36 Col:84 */
+    /*0x8043, GB2312 Code:*/ 0xF1F5, /*==>拯 Row:81 Col:85 */
+    /*0x8046, GB2312 Code:*/ 0xF1F6, /*==>烝 Row:81 Col:86 */
+    /*0x804A, GB2312 Code:*/ 0xC1C4, /*==>좔 Row:33 Col:36 */
+    /*0x804B, GB2312 Code:*/ 0xC1FB, /*==>짊 Row:33 Col:91 */
+    /*0x804C, GB2312 Code:*/ 0xD6B0, /*==>斂 Row:54 Col:16 */
+    /*0x804D, GB2312 Code:*/ 0xF1F7, /*==>甑 Row:81 Col:87 */
+    /*0x8052, GB2312 Code:*/ 0xF1F8, /*==>症 Row:81 Col:88 */
+    /*0x8054, GB2312 Code:*/ 0xC1AA, /*==>젬 Row:33 Col:10 */
+    /*0x8058, GB2312 Code:*/ 0xC6B8, /*==>틘 Row:38 Col:24 */
+    /*0x805A, GB2312 Code:*/ 0xBEDB, /*==>앱 Row:30 Col:59 */
+    /*0x8069, GB2312 Code:*/ 0xF1F9, /*==>繒 Row:81 Col:89 */
+    /*0x806A, GB2312 Code:*/ 0xB4CF, /*==>니 Row:20 Col:47 */
+    /*0x8071, GB2312 Code:*/ 0xF1FA, /*==>蒸 Row:81 Col:90 */
+    /*0x807F, GB2312 Code:*/ 0xEDB2, /*==>滋 Row:77 Col:18 */
+    /*0x8080, GB2312 Code:*/ 0xEDB1, /*==>慈 Row:77 Col:17 */
+    /*0x8083, GB2312 Code:*/ 0xCBE0, /*==>據 Row:43 Col:64 */
+    /*0x8084, GB2312 Code:*/ 0xD2DE, /*==>牢 Row:50 Col:62 */
+    /*0x8086, GB2312 Code:*/ 0xCBC1, /*==>個 Row:43 Col:33 */
+    /*0x8087, GB2312 Code:*/ 0xD5D8, /*==>凉 Row:53 Col:56 */
+    /*0x8089, GB2312 Code:*/ 0xC8E2, /*==>흄 Row:40 Col:66 */
+    /*0x808B, GB2312 Code:*/ 0xC0DF, /*==>잘 Row:32 Col:63 */
+    /*0x808C, GB2312 Code:*/ 0xBCA1, /*==>샥 Row:28 Col:01 */
+    /*0x8093, GB2312 Code:*/ 0xEBC1, /*==>陸 Row:75 Col:33 */
+    /*0x8096, GB2312 Code:*/ 0xD0A4, /*==>圭 Row:48 Col:04 */
+    /*0x8098, GB2312 Code:*/ 0xD6E2, /*==>錄 Row:54 Col:66 */
+    /*0x809A, GB2312 Code:*/ 0xB6C7, /*==>또 Row:22 Col:39 */
+    /*0x809B, GB2312 Code:*/ 0xB8D8, /*==>멈 Row:24 Col:56 */
+    /*0x809C, GB2312 Code:*/ 0xEBC0, /*==>育 Row:75 Col:32 */
+    /*0x809D, GB2312 Code:*/ 0xB8CE, /*==>맺 Row:24 Col:46 */
+    /*0x809F, GB2312 Code:*/ 0xEBBF, /*==>肉 Row:75 Col:31 */
+    /*0x80A0, GB2312 Code:*/ 0xB3A6, /*==>낌 Row:19 Col:06 */
+    /*0x80A1, GB2312 Code:*/ 0xB9C9, /*==>믈 Row:25 Col:41 */
+    /*0x80A2, GB2312 Code:*/ 0xD6AB, /*==>劣 Row:54 Col:11 */
+    /*0x80A4, GB2312 Code:*/ 0xB7F4, /*==>륀 Row:23 Col:84 */
+    /*0x80A5, GB2312 Code:*/ 0xB7CA, /*==>례 Row:23 Col:42 */
+    /*0x80A9, GB2312 Code:*/ 0xBCE7, /*==>쇘 Row:28 Col:71 */
+    /*0x80AA, GB2312 Code:*/ 0xB7BE, /*==>렙 Row:23 Col:30 */
+    /*0x80AB, GB2312 Code:*/ 0xEBC6, /*==>崙 Row:75 Col:38 */
+    /*0x80AD, GB2312 Code:*/ 0xEBC7, /*==>淪 Row:75 Col:39 */
+    /*0x80AE, GB2312 Code:*/ 0xB0B9, /*==>갯 Row:16 Col:25 */
+    /*0x80AF, GB2312 Code:*/ 0xBFCF, /*==>완 Row:31 Col:47 */
+    /*0x80B1, GB2312 Code:*/ 0xEBC5, /*==>尹 Row:75 Col:37 */
+    /*0x80B2, GB2312 Code:*/ 0xD3FD, /*==>搗 Row:51 Col:93 */
+    /*0x80B4, GB2312 Code:*/ 0xEBC8, /*==>潤 Row:75 Col:40 */
+    /*0x80B7, GB2312 Code:*/ 0xEBC9, /*==>玧 Row:75 Col:41 */
+    /*0x80BA, GB2312 Code:*/ 0xB7CE, /*==>로 Row:23 Col:46 */
+    /*0x80BC, GB2312 Code:*/ 0xEBC2, /*==>倫 Row:75 Col:34 */
+    /*0x80BD, GB2312 Code:*/ 0xEBC4, /*==>奫 Row:75 Col:36 */
+    /*0x80BE, GB2312 Code:*/ 0xC9F6, /*==>� Row:41 Col:86 */
+    /*0x80BF, GB2312 Code:*/ 0xD6D7, /*==>虜 Row:54 Col:55 */
+    /*0x80C0, GB2312 Code:*/ 0xD5CD, /*==>郞 Row:53 Col:45 */
+    /*0x80C1, GB2312 Code:*/ 0xD0B2, /*==>勻 Row:48 Col:18 */
+    /*0x80C2, GB2312 Code:*/ 0xEBCF, /*==>律 Row:75 Col:47 */
+    /*0x80C3, GB2312 Code:*/ 0xCEB8, /*==>罐 Row:46 Col:24 */
+    /*0x80C4, GB2312 Code:*/ 0xEBD0, /*==>慄 Row:75 Col:48 */
+    /*0x80C6, GB2312 Code:*/ 0xB5A8, /*==>델 Row:21 Col:08 */
+    /*0x80CC, GB2312 Code:*/ 0xB1B3, /*==>교 Row:17 Col:19 */
+    /*0x80CD, GB2312 Code:*/ 0xEBD2, /*==>率 Row:75 Col:50 */
+    /*0x80CE, GB2312 Code:*/ 0xCCA5, /*==>怯 Row:44 Col:05 */
+    /*0x80D6, GB2312 Code:*/ 0xC5D6, /*==>텅 Row:37 Col:54 */
+    /*0x80D7, GB2312 Code:*/ 0xEBD3, /*==>聿 Row:75 Col:51 */
+    /*0x80D9, GB2312 Code:*/ 0xEBD1, /*==>栗 Row:75 Col:49 */
+    /*0x80DA, GB2312 Code:*/ 0xC5DF, /*==>텨 Row:37 Col:63 */
+    /*0x80DB, GB2312 Code:*/ 0xEBCE, /*==>閏 Row:75 Col:46 */
+    /*0x80DC, GB2312 Code:*/ 0xCAA4, /*==>價 Row:42 Col:04 */
+    /*0x80DD, GB2312 Code:*/ 0xEBD5, /*==>瀜 Row:75 Col:53 */
+    /*0x80DE, GB2312 Code:*/ 0xB0FB, /*==>곽 Row:16 Col:91 */
+    /*0x80E1, GB2312 Code:*/ 0xBAFA, /*==>빚 Row:26 Col:90 */
+    /*0x80E4, GB2312 Code:*/ 0xD8B7, /*==>慢 Row:56 Col:23 */
+    /*0x80E5, GB2312 Code:*/ 0xF1E3, /*==>蠢 Row:81 Col:67 */
+    /*0x80E7, GB2312 Code:*/ 0xEBCA, /*==>胤 Row:75 Col:42 */
+    /*0x80E8, GB2312 Code:*/ 0xEBCB, /*==>贇 Row:75 Col:43 */
+    /*0x80E9, GB2312 Code:*/ 0xEBCC, /*==>輪 Row:75 Col:44 */
+    /*0x80EA, GB2312 Code:*/ 0xEBCD, /*==>鈗 Row:75 Col:45 */
+    /*0x80EB, GB2312 Code:*/ 0xEBD6, /*==>絨 Row:75 Col:54 */
+    /*0x80EC, GB2312 Code:*/ 0xE6C0, /*==>堧 Row:70 Col:32 */
+    /*0x80ED, GB2312 Code:*/ 0xEBD9, /*==>垠 Row:75 Col:57 */
+    /*0x80EF, GB2312 Code:*/ 0xBFE8, /*==>욤 Row:31 Col:72 */
+    /*0x80F0, GB2312 Code:*/ 0xD2C8, /*==>蘆 Row:50 Col:40 */
+    /*0x80F1, GB2312 Code:*/ 0xEBD7, /*==>融 Row:75 Col:55 */
+    /*0x80F2, GB2312 Code:*/ 0xEBDC, /*==>殷 Row:75 Col:60 */
+    /*0x80F3, GB2312 Code:*/ 0xB8EC, /*==>몄 Row:24 Col:76 */
+    /*0x80F4, GB2312 Code:*/ 0xEBD8, /*==>隆 Row:75 Col:56 */
+    /*0x80F6, GB2312 Code:*/ 0xBDBA, /*==>스 Row:29 Col:26 */
+    /*0x80F8, GB2312 Code:*/ 0xD0D8, /*==>禽 Row:48 Col:56 */
+    /*0x80FA, GB2312 Code:*/ 0xB0B7, /*==>갬 Row:16 Col:23 */
+    /*0x80FC, GB2312 Code:*/ 0xEBDD, /*==>誾 Row:75 Col:61 */
+    /*0x80FD, GB2312 Code:*/ 0xC4DC, /*==>콘 Row:36 Col:60 */
+    /*0x8102, GB2312 Code:*/ 0xD6AC, /*==>洌 Row:54 Col:12 */
+    /*0x8106, GB2312 Code:*/ 0xB4E0, /*==>닮 Row:20 Col:64 */
+    /*0x8109, GB2312 Code:*/ 0xC2F6, /*==>찧 Row:34 Col:86 */
+    /*0x810A, GB2312 Code:*/ 0xBCB9, /*==>섰 Row:28 Col:25 */
+    /*0x810D, GB2312 Code:*/ 0xEBDA, /*==>恩 Row:75 Col:58 */
+    /*0x810E, GB2312 Code:*/ 0xEBDB, /*==>慇 Row:75 Col:59 */
+    /*0x810F, GB2312 Code:*/ 0xD4E0, /*==>斗 Row:52 Col:64 */
+    /*0x8110, GB2312 Code:*/ 0xC6EA, /*==>펫 Row:38 Col:74 */
+    /*0x8111, GB2312 Code:*/ 0xC4D4, /*==>켬 Row:36 Col:52 */
+    /*0x8112, GB2312 Code:*/ 0xEBDF, /*==>隱 Row:75 Col:63 */
+    /*0x8113, GB2312 Code:*/ 0xC5A7, /*==>큘 Row:37 Col:07 */
+    /*0x8114, GB2312 Code:*/ 0xD9F5, /*==>貿 Row:57 Col:85 */
+    /*0x8116, GB2312 Code:*/ 0xB2B1, /*==>껑 Row:18 Col:17 */
+    /*0x8118, GB2312 Code:*/ 0xEBE4, /*==>陰 Row:75 Col:68 */
+    /*0x811A, GB2312 Code:*/ 0xBDC5, /*==>신 Row:29 Col:37 */
+    /*0x811E, GB2312 Code:*/ 0xEBE2, /*==>淫 Row:75 Col:66 */
+    /*0x812C, GB2312 Code:*/ 0xEBE3, /*==>蔭 Row:75 Col:67 */
+    /*0x812F, GB2312 Code:*/ 0xB8AC, /*==>릍 Row:24 Col:12 */
+    /*0x8131, GB2312 Code:*/ 0xCDD1, /*==>錮 Row:45 Col:49 */
+    /*0x8132, GB2312 Code:*/ 0xEBE5, /*==>音 Row:75 Col:69 */
+    /*0x8136, GB2312 Code:*/ 0xEBE1, /*==>吟 Row:75 Col:65 */
+    /*0x8138, GB2312 Code:*/ 0xC1B3, /*==>졌 Row:33 Col:19 */
+    /*0x813E, GB2312 Code:*/ 0xC6A2, /*==>튀 Row:38 Col:02 */
+    /*0x8146, GB2312 Code:*/ 0xCCF3, /*==>驚 Row:44 Col:83 */
+    /*0x8148, GB2312 Code:*/ 0xEBE6, /*==>飮 Row:75 Col:70 */
+    /*0x814A, GB2312 Code:*/ 0xC0B0, /*==>육 Row:32 Col:16 */
+    /*0x814B, GB2312 Code:*/ 0xD2B8, /*==>恬 Row:50 Col:24 */
+    /*0x814C, GB2312 Code:*/ 0xEBE7, /*==>揖 Row:75 Col:71 */
+    /*0x8150, GB2312 Code:*/ 0xB8AF, /*==>릭 Row:24 Col:15 */
+    /*0x8151, GB2312 Code:*/ 0xB8AD, /*==>릎 Row:24 Col:13 */
+    /*0x8153, GB2312 Code:*/ 0xEBE8, /*==>泣 Row:75 Col:72 */
+    /*0x8154, GB2312 Code:*/ 0xC7BB, /*==>퓨 Row:39 Col:27 */
+    /*0x8155, GB2312 Code:*/ 0xCDF3, /*==>控 Row:45 Col:83 */
+    /*0x8159, GB2312 Code:*/ 0xEBEA, /*==>凝 Row:75 Col:74 */
+    /*0x815A, GB2312 Code:*/ 0xEBEB, /*==>應 Row:75 Col:75 */
+    /*0x8160, GB2312 Code:*/ 0xEBED, /*==>鷹 Row:75 Col:77 */
+    /*0x8165, GB2312 Code:*/ 0xD0C8, /*==>瑾 Row:48 Col:40 */
+    /*0x8167, GB2312 Code:*/ 0xEBF2, /*==>意 Row:75 Col:82 */
+    /*0x8169, GB2312 Code:*/ 0xEBEE, /*==>依 Row:75 Col:78 */
+    /*0x816D, GB2312 Code:*/ 0xEBF1, /*==>宜 Row:75 Col:81 */
+    /*0x816E, GB2312 Code:*/ 0xC8F9, /*==>힌 Row:40 Col:89 */
+    /*0x8170, GB2312 Code:*/ 0xD1FC, /*==>藍 Row:49 Col:92 */
+    /*0x8171, GB2312 Code:*/ 0xEBEC, /*==>膺 Row:75 Col:76 */
+    /*0x8174, GB2312 Code:*/ 0xEBE9, /*==>邑 Row:75 Col:73 */
+    /*0x8179, GB2312 Code:*/ 0xB8B9, /*==>많 Row:24 Col:25 */
+    /*0x817A, GB2312 Code:*/ 0xCFD9, /*==>裙 Row:47 Col:57 */
+    /*0x817B, GB2312 Code:*/ 0xC4E5, /*==>콸 Row:36 Col:69 */
+    /*0x817C, GB2312 Code:*/ 0xEBEF, /*==>倚 Row:75 Col:79 */
+    /*0x817D, GB2312 Code:*/ 0xEBF0, /*==>儀 Row:75 Col:80 */
+    /*0x817E, GB2312 Code:*/ 0xCCDA, /*==>更 Row:44 Col:58 */
+    /*0x817F, GB2312 Code:*/ 0xCDC8, /*==>苦 Row:45 Col:40 */
+    /*0x8180, GB2312 Code:*/ 0xB0F2, /*==>곪 Row:16 Col:82 */
+    /*0x8182, GB2312 Code:*/ 0xEBF6, /*==>毅 Row:75 Col:86 */
+    /*0x8188, GB2312 Code:*/ 0xEBF5, /*==>椅 Row:75 Col:85 */
+    /*0x818A, GB2312 Code:*/ 0xB2B2, /*==>께 Row:18 Col:18 */
+    /*0x818F, GB2312 Code:*/ 0xB8E0, /*==>멘 Row:24 Col:64 */
+    /*0x8191, GB2312 Code:*/ 0xEBF7, /*==>疑 Row:75 Col:87 */
+    /*0x8198, GB2312 Code:*/ 0xB1EC, /*==>깆 Row:17 Col:76 */
+    /*0x819B, GB2312 Code:*/ 0xCCC5, /*==>謙 Row:44 Col:37 */
+    /*0x819C, GB2312 Code:*/ 0xC4A4, /*==>칟 Row:36 Col:04 */
+    /*0x819D, GB2312 Code:*/ 0xCFA5, /*==>嘔 Row:47 Col:05 */
+    /*0x81A3, GB2312 Code:*/ 0xEBF9, /*==>義 Row:75 Col:89 */
+    /*0x81A6, GB2312 Code:*/ 0xECA2, /*==>醫 Row:76 Col:02 */
+    /*0x81A8, GB2312 Code:*/ 0xC5F2, /*==>툇 Row:37 Col:82 */
+    /*0x81AA, GB2312 Code:*/ 0xEBFA, /*==>艤 Row:75 Col:90 */
+    /*0x81B3, GB2312 Code:*/ 0xC9C5, /*==>� Row:41 Col:37 */
+    /*0x81BA, GB2312 Code:*/ 0xE2DF, /*==>徇 Row:66 Col:63 */
+    /*0x81BB, GB2312 Code:*/ 0xEBFE, /*==>誼 Row:75 Col:94 */
+    /*0x81C0, GB2312 Code:*/ 0xCDCE, /*==>誥 Row:45 Col:46 */
+    /*0x81C1, GB2312 Code:*/ 0xECA1, /*==>議 Row:76 Col:01 */
+    /*0x81C2, GB2312 Code:*/ 0xB1DB, /*==>글 Row:17 Col:59 */
+    /*0x81C3, GB2312 Code:*/ 0xD3B7, /*==>獺 Row:51 Col:23 */
+    /*0x81C6, GB2312 Code:*/ 0xD2DC, /*==>農 Row:50 Col:60 */
+    /*0x81CA, GB2312 Code:*/ 0xEBFD, /*==>衣 Row:75 Col:93 */
+    /*0x81CC, GB2312 Code:*/ 0xEBFB, /*==>薏 Row:75 Col:91 */
+    /*0x81E3, GB2312 Code:*/ 0xB3BC, /*==>낵 Row:19 Col:28 */
+    /*0x81E7, GB2312 Code:*/ 0xEAB0, /*==>媛 Row:74 Col:16 */
+    /*0x81EA, GB2312 Code:*/ 0xD7D4, /*==>菱 Row:55 Col:52 */
+    /*0x81EC, GB2312 Code:*/ 0xF4AB, /*==>戚 Row:84 Col:11 */
+    /*0x81ED, GB2312 Code:*/ 0xB3F4, /*==>높 Row:19 Col:84 */
+    /*0x81F3, GB2312 Code:*/ 0xD6C1, /*==>逞 Row:54 Col:33 */
+    /*0x81F4, GB2312 Code:*/ 0xD6C2, /*==>鈴 Row:54 Col:34 */
+    /*0x81FB, GB2312 Code:*/ 0xD5E9, /*==>旅 Row:53 Col:73 */
+    /*0x81FC, GB2312 Code:*/ 0xBECA, /*==>않 Row:30 Col:42 */
+    /*0x81FE, GB2312 Code:*/ 0xF4A7, /*==>刺 Row:84 Col:07 */
+    /*0x8200, GB2312 Code:*/ 0xD2A8, /*==>朗 Row:50 Col:08 */
+    /*0x8201, GB2312 Code:*/ 0xF4A8, /*==>剔 Row:84 Col:08 */
+    /*0x8202, GB2312 Code:*/ 0xF4A9, /*==>尺 Row:84 Col:09 */
+    /*0x8204, GB2312 Code:*/ 0xF4AA, /*==>慽 Row:84 Col:10 */
+    /*0x8205, GB2312 Code:*/ 0xBECB, /*==>알 Row:30 Col:43 */
+    /*0x8206, GB2312 Code:*/ 0xD3DF, /*==>對 Row:51 Col:63 */
+    /*0x820C, GB2312 Code:*/ 0xC9E0, /*==>� Row:41 Col:64 */
+    /*0x820D, GB2312 Code:*/ 0xC9E1, /*==>� Row:41 Col:65 */
+    /*0x8210, GB2312 Code:*/ 0xF3C2, /*==>簒 Row:83 Col:34 */
+    /*0x8212, GB2312 Code:*/ 0xCAE6, /*==>竭 Row:42 Col:70 */
+    /*0x8214, GB2312 Code:*/ 0xCCF2, /*==>頸 Row:44 Col:82 */
+    /*0x821B, GB2312 Code:*/ 0xE2B6, /*==>粹 Row:66 Col:22 */
+    /*0x821C, GB2312 Code:*/ 0xCBB4, /*==>絳 Row:43 Col:20 */
+    /*0x821E, GB2312 Code:*/ 0xCEE8, /*==>校 Row:46 Col:72 */
+    /*0x821F, GB2312 Code:*/ 0xD6DB, /*==>魯 Row:54 Col:59 */
+    /*0x8221, GB2312 Code:*/ 0xF4AD, /*==>擲 Row:84 Col:13 */
+    /*0x8222, GB2312 Code:*/ 0xF4AE, /*==>斥 Row:84 Col:14 */
+    /*0x8223, GB2312 Code:*/ 0xF4AF, /*==>滌 Row:84 Col:15 */
+    /*0x8228, GB2312 Code:*/ 0xF4B2, /*==>蹠 Row:84 Col:18 */
+    /*0x822A, GB2312 Code:*/ 0xBABD, /*==>봄 Row:26 Col:29 */
+    /*0x822B, GB2312 Code:*/ 0xF4B3, /*==>陟 Row:84 Col:19 */
+    /*0x822C, GB2312 Code:*/ 0xB0E3, /*==>겹 Row:16 Col:67 */
+    /*0x822D, GB2312 Code:*/ 0xF4B0, /*==>瘠 Row:84 Col:16 */
+    /*0x822F, GB2312 Code:*/ 0xF4B1, /*==>脊 Row:84 Col:17 */
+    /*0x8230, GB2312 Code:*/ 0xBDA2, /*==>숱 Row:29 Col:02 */
+    /*0x8231, GB2312 Code:*/ 0xB2D5, /*==>꾐 Row:18 Col:53 */
+    /*0x8233, GB2312 Code:*/ 0xF4B6, /*==>千 Row:84 Col:22 */
+    /*0x8234, GB2312 Code:*/ 0xF4B7, /*==>喘 Row:84 Col:23 */
+    /*0x8235, GB2312 Code:*/ 0xB6E6, /*==>뜻 Row:22 Col:70 */
+    /*0x8236, GB2312 Code:*/ 0xB2B0, /*==>껐 Row:18 Col:16 */
+    /*0x8237, GB2312 Code:*/ 0xCFCF, /*==>龜 Row:47 Col:47 */
+    /*0x8238, GB2312 Code:*/ 0xF4B4, /*==>隻 Row:84 Col:20 */
+    /*0x8239, GB2312 Code:*/ 0xB4AC, /*==>눋 Row:20 Col:12 */
+    /*0x823B, GB2312 Code:*/ 0xF4B5, /*==>仟 Row:84 Col:21 */
+    /*0x823E, GB2312 Code:*/ 0xF4B8, /*==>天 Row:84 Col:24 */
+    /*0x8244, GB2312 Code:*/ 0xF4B9, /*==>川 Row:84 Col:25 */
+    /*0x8247, GB2312 Code:*/ 0xCDA7, /*==>系 Row:45 Col:07 */
+    /*0x8249, GB2312 Code:*/ 0xF4BA, /*==>擅 Row:84 Col:26 */
+    /*0x824B, GB2312 Code:*/ 0xF4BB, /*==>泉 Row:84 Col:27 */
+    /*0x824F, GB2312 Code:*/ 0xF4BC, /*==>淺 Row:84 Col:28 */
+    /*0x8258, GB2312 Code:*/ 0xCBD2, /*==>開 Row:43 Col:50 */
+    /*0x825A, GB2312 Code:*/ 0xF4BD, /*==>玔 Row:84 Col:29 */
+    /*0x825F, GB2312 Code:*/ 0xF4BE, /*==>穿 Row:84 Col:30 */
+    /*0x8268, GB2312 Code:*/ 0xF4BF, /*==>舛 Row:84 Col:31 */
+    /*0x826E, GB2312 Code:*/ 0xF4DE, /*==>帖 Row:84 Col:62 */
+    /*0x826F, GB2312 Code:*/ 0xC1BC, /*==>좁 Row:33 Col:28 */
+    /*0x8270, GB2312 Code:*/ 0xBCE8, /*==>쇠 Row:28 Col:72 */
+    /*0x8272, GB2312 Code:*/ 0xC9AB, /*==>� Row:41 Col:11 */
+    /*0x8273, GB2312 Code:*/ 0xD1DE, /*==>螺 Row:49 Col:62 */
+    /*0x8274, GB2312 Code:*/ 0xE5F5, /*==>嶪 Row:69 Col:85 */
+    /*0x8279, GB2312 Code:*/ 0xDCB3, /*==>屛 Row:60 Col:19 */
+    /*0x827A, GB2312 Code:*/ 0xD2D5, /*==>論 Row:50 Col:53 */
+    /*0x827D, GB2312 Code:*/ 0xDCB4, /*==>幷 Row:60 Col:20 */
+    /*0x827E, GB2312 Code:*/ 0xB0AC, /*==>갔 Row:16 Col:12 */
+    /*0x827F, GB2312 Code:*/ 0xDCB5, /*==>昞 Row:60 Col:21 */
+    /*0x8282, GB2312 Code:*/ 0xBDDA, /*==>쌘 Row:29 Col:58 */
+    /*0x8284, GB2312 Code:*/ 0xDCB9, /*==>炳 Row:60 Col:25 */
+    /*0x8288, GB2312 Code:*/ 0xD8C2, /*==>輓 Row:56 Col:34 */
+    /*0x828A, GB2312 Code:*/ 0xDCB7, /*==>柄 Row:60 Col:23 */
+    /*0x828B, GB2312 Code:*/ 0xD3F3, /*==>塗 Row:51 Col:83 */
+    /*0x828D, GB2312 Code:*/ 0xC9D6, /*==>� Row:41 Col:54 */
+    /*0x828E, GB2312 Code:*/ 0xDCBA, /*==>甁 Row:60 Col:26 */
+    /*0x828F, GB2312 Code:*/ 0xDCB6, /*==>昺 Row:60 Col:22 */
+    /*0x8291, GB2312 Code:*/ 0xDCBB, /*==>病 Row:60 Col:27 */
+    /*0x8292, GB2312 Code:*/ 0xC3A2, /*==>창 Row:35 Col:02 */
+    /*0x8297, GB2312 Code:*/ 0xDCBC, /*==>秉 Row:60 Col:28 */
+    /*0x8298, GB2312 Code:*/ 0xDCC5, /*==>普 Row:60 Col:37 */
+    /*0x8299, GB2312 Code:*/ 0xDCBD, /*==>竝 Row:60 Col:29 */
+    /*0x829C, GB2312 Code:*/ 0xCEDF, /*==>交 Row:46 Col:63 */
+    /*0x829D, GB2312 Code:*/ 0xD6A5, /*==>蓮 Row:54 Col:05 */
+    /*0x829F, GB2312 Code:*/ 0xDCCF, /*==>譜 Row:60 Col:47 */
+    /*0x82A1, GB2312 Code:*/ 0xDCCD, /*==>補 Row:60 Col:45 */
+    /*0x82A4, GB2312 Code:*/ 0xDCD2, /*==>僕 Row:60 Col:50 */
+    /*0x82A5, GB2312 Code:*/ 0xBDE6, /*==>썸 Row:29 Col:70 */
+    /*0x82A6, GB2312 Code:*/ 0xC2AB, /*==>짬 Row:34 Col:11 */
+    /*0x82A8, GB2312 Code:*/ 0xDCB8, /*==>棅 Row:60 Col:24 */
+    /*0x82A9, GB2312 Code:*/ 0xDCCB, /*==>甫 Row:60 Col:43 */
+    /*0x82AA, GB2312 Code:*/ 0xDCCE, /*==>褓 Row:60 Col:46 */
+    /*0x82AB, GB2312 Code:*/ 0xDCBE, /*==>輧 Row:60 Col:30 */
+    /*0x82AC, GB2312 Code:*/ 0xB7D2, /*==>롬 Row:23 Col:50 */
+    /*0x82AD, GB2312 Code:*/ 0xB0C5, /*==>거 Row:16 Col:37 */
+    /*0x82AE, GB2312 Code:*/ 0xDCC7, /*==>洑 Row:60 Col:39 */
+    /*0x82AF, GB2312 Code:*/ 0xD0BE, /*==>棘 Row:48 Col:30 */
+    /*0x82B0, GB2312 Code:*/ 0xDCC1, /*==>保 Row:60 Col:33 */
+    /*0x82B1, GB2312 Code:*/ 0xBBA8, /*==>빻 Row:27 Col:08 */
+    /*0x82B3, GB2312 Code:*/ 0xB7BC, /*==>렐 Row:23 Col:28 */
+    /*0x82B4, GB2312 Code:*/ 0xDCCC, /*==>菩 Row:60 Col:44 */
+    /*0x82B7, GB2312 Code:*/ 0xDCC6, /*==>步 Row:60 Col:38 */
+    /*0x82B8, GB2312 Code:*/ 0xDCBF, /*==>餠 Row:60 Col:31 */
+    /*0x82B9, GB2312 Code:*/ 0xC7DB, /*==>핼 Row:39 Col:59 */
+    /*0x82BD, GB2312 Code:*/ 0xD1BF, /*==>肌 Row:49 Col:31 */
+    /*0x82BE, GB2312 Code:*/ 0xDCC0, /*==>騈 Row:60 Col:32 */
+    /*0x82C1, GB2312 Code:*/ 0xDCCA, /*==>珤 Row:60 Col:42 */
+    /*0x82C4, GB2312 Code:*/ 0xDCD0, /*==>輔 Row:60 Col:48 */
+    /*0x82C7, GB2312 Code:*/ 0xCEAD, /*==>串 Row:46 Col:13 */
+    /*0x82C8, GB2312 Code:*/ 0xDCC2, /*==>堡 Row:60 Col:34 */
+    /*0x82CA, GB2312 Code:*/ 0xDCC3, /*==>報 Row:60 Col:35 */
+    /*0x82CB, GB2312 Code:*/ 0xDCC8, /*==>湺 Row:60 Col:40 */
+    /*0x82CC, GB2312 Code:*/ 0xDCC9, /*==>潽 Row:60 Col:41 */
+    /*0x82CD, GB2312 Code:*/ 0xB2D4, /*==>꾈 Row:18 Col:52 */
+    /*0x82CE, GB2312 Code:*/ 0xDCD1, /*==>伏 Row:60 Col:49 */
+    /*0x82CF, GB2312 Code:*/ 0xCBD5, /*==>坑 Row:43 Col:53 */
+    /*0x82D1, GB2312 Code:*/ 0xD4B7, /*==>韜 Row:52 Col:23 */
+    /*0x82D2, GB2312 Code:*/ 0xDCDB, /*==>蔔 Row:60 Col:59 */
+    /*0x82D3, GB2312 Code:*/ 0xDCDF, /*==>輻 Row:60 Col:63 */
+    /*0x82D4, GB2312 Code:*/ 0xCCA6, /*==>迲 Row:44 Col:06 */
+    /*0x82D5, GB2312 Code:*/ 0xDCE6, /*==>封 Row:60 Col:70 */
+    /*0x82D7, GB2312 Code:*/ 0xC3E7, /*==>춰 Row:35 Col:71 */
+    /*0x82D8, GB2312 Code:*/ 0xDCDC, /*==>複 Row:60 Col:60 */
+    /*0x82DB, GB2312 Code:*/ 0xBFC1, /*==>옥 Row:31 Col:33 */
+    /*0x82DC, GB2312 Code:*/ 0xDCD9, /*==>腹 Row:60 Col:57 */
+    /*0x82DE, GB2312 Code:*/ 0xB0FA, /*==>과 Row:16 Col:90 */
+    /*0x82DF, GB2312 Code:*/ 0xB9B6, /*==>뭉 Row:25 Col:22 */
+    /*0x82E0, GB2312 Code:*/ 0xDCE5, /*==>奉 Row:60 Col:69 */
+    /*0x82E1, GB2312 Code:*/ 0xDCD3, /*==>匐 Row:60 Col:51 */
+    /*0x82E3, GB2312 Code:*/ 0xDCC4, /*==>寶 Row:60 Col:36 */
+    /*0x82E4, GB2312 Code:*/ 0xDCD6, /*==>復 Row:60 Col:54 */
+    /*0x82E5, GB2312 Code:*/ 0xC8F4, /*==>흼 Row:40 Col:84 */
+    /*0x82E6, GB2312 Code:*/ 0xBFE0, /*==>욈 Row:31 Col:64 */
+    /*0x82EB, GB2312 Code:*/ 0xC9BB, /*==>� Row:41 Col:27 */
+    /*0x82EF, GB2312 Code:*/ 0xB1BD, /*==>굵 Row:17 Col:29 */
+    /*0x82F1, GB2312 Code:*/ 0xD3A2, /*==>亶 Row:51 Col:02 */
+    /*0x82F4, GB2312 Code:*/ 0xDCDA, /*==>茯 Row:60 Col:58 */
+    /*0x82F7, GB2312 Code:*/ 0xDCD5, /*==>宓 Row:60 Col:53 */
+    /*0x82F9, GB2312 Code:*/ 0xC6BB, /*==>틥 Row:38 Col:27 */
+    /*0x82FB, GB2312 Code:*/ 0xDCDE, /*==>輹 Row:60 Col:62 */
+    /*0x8301, GB2312 Code:*/ 0xD7C2, /*==>侖 Row:55 Col:34 */
+    /*0x8302, GB2312 Code:*/ 0xC3AF, /*==>챦 Row:35 Col:15 */
+    /*0x8303, GB2312 Code:*/ 0xB7B6, /*==>렀 Row:23 Col:22 */
+    /*0x8304, GB2312 Code:*/ 0xC7D1, /*==>한 Row:39 Col:49 */
+    /*0x8305, GB2312 Code:*/ 0xC3A9, /*==>챕 Row:35 Col:09 */
+    /*0x8306, GB2312 Code:*/ 0xDCE2, /*==>本 Row:60 Col:66 */
+    /*0x8307, GB2312 Code:*/ 0xDCD8, /*==>福 Row:60 Col:56 */
+    /*0x8308, GB2312 Code:*/ 0xDCEB, /*==>烽 Row:60 Col:75 */
+    /*0x8309, GB2312 Code:*/ 0xDCD4, /*==>卜 Row:60 Col:52 */
+    /*0x830C, GB2312 Code:*/ 0xDCDD, /*==>覆 Row:60 Col:61 */
+    /*0x830E, GB2312 Code:*/ 0xBEA5, /*==>쑤 Row:30 Col:05 */
+    /*0x830F, GB2312 Code:*/ 0xDCD7, /*==>服 Row:60 Col:55 */
+    /*0x8311, GB2312 Code:*/ 0xDCE0, /*==>馥 Row:60 Col:64 */
+    /*0x8314, GB2312 Code:*/ 0xDCE3, /*==>乶 Row:60 Col:67 */
+    /*0x8315, GB2312 Code:*/ 0xDCE4, /*==>俸 Row:60 Col:68 */
+    /*0x8317, GB2312 Code:*/ 0xDCF8, /*==>剖 Row:60 Col:88 */
+    /*0x831A, GB2312 Code:*/ 0xDCE1, /*==>鰒 Row:60 Col:65 */
+    /*0x831B, GB2312 Code:*/ 0xDDA2, /*==>孵 Row:61 Col:02 */
+    /*0x831C, GB2312 Code:*/ 0xDCE7, /*==>峯 Row:60 Col:71 */
+    /*0x8327, GB2312 Code:*/ 0xBCEB, /*==>쇰 Row:28 Col:75 */
+    /*0x8328, GB2312 Code:*/ 0xB4C4, /*==>늙 Row:20 Col:36 */
+    /*0x832B, GB2312 Code:*/ 0xC3A3, /*==>찾 Row:35 Col:03 */
+    /*0x832C, GB2312 Code:*/ 0xB2E7, /*==>꿰 Row:18 Col:71 */
+    /*0x832D, GB2312 Code:*/ 0xDCFA, /*==>否 Row:60 Col:90 */
+    /*0x832F, GB2312 Code:*/ 0xDCF2, /*==>鋒 Row:60 Col:82 */
+    /*0x8331, GB2312 Code:*/ 0xDCEF, /*==>蓬 Row:60 Col:79 */
+    /*0x8333, GB2312 Code:*/ 0xDCFC, /*==>埠 Row:60 Col:92 */
+    /*0x8334, GB2312 Code:*/ 0xDCEE, /*==>縫 Row:60 Col:78 */
+    /*0x8335, GB2312 Code:*/ 0xD2F0, /*==>勒 Row:50 Col:80 */
+    /*0x8336, GB2312 Code:*/ 0xB2E8, /*==>꿱 Row:18 Col:72 */
+    /*0x8338, GB2312 Code:*/ 0xC8D7, /*==>휙 Row:40 Col:55 */
+    /*0x8339, GB2312 Code:*/ 0xC8E3, /*==>흇 Row:40 Col:67 */
+    /*0x833A, GB2312 Code:*/ 0xDCFB, /*==>咐 Row:60 Col:91 */
+    /*0x833C, GB2312 Code:*/ 0xDCED, /*==>琫 Row:60 Col:77 */
+    /*0x8340, GB2312 Code:*/ 0xDCF7, /*==>傅 Row:60 Col:87 */
+    /*0x8343, GB2312 Code:*/ 0xDCF5, /*==>付 Row:60 Col:85 */
+    /*0x8346, GB2312 Code:*/ 0xBEA3, /*==>쐽 Row:30 Col:03 */
+    /*0x8347, GB2312 Code:*/ 0xDCF4, /*==>不 Row:60 Col:84 */
+    /*0x8349, GB2312 Code:*/ 0xB2DD, /*==>꿇 Row:18 Col:61 */
+    /*0x834F, GB2312 Code:*/ 0xDCF3, /*==>鳳 Row:60 Col:83 */
+    /*0x8350, GB2312 Code:*/ 0xBCF6, /*==>수 Row:28 Col:86 */
+    /*0x8351, GB2312 Code:*/ 0xDCE8, /*==>峰 Row:60 Col:72 */
+    /*0x8352, GB2312 Code:*/ 0xBBC4, /*==>뼛 Row:27 Col:36 */
+    /*0x8354, GB2312 Code:*/ 0xC0F3, /*==>쟎 Row:32 Col:83 */
+    /*0x835A, GB2312 Code:*/ 0xBCD4, /*==>솎 Row:28 Col:52 */
+    /*0x835B, GB2312 Code:*/ 0xDCE9, /*==>捧 Row:60 Col:73 */
+    /*0x835C, GB2312 Code:*/ 0xDCEA, /*==>棒 Row:60 Col:74 */
+    /*0x835E, GB2312 Code:*/ 0xDCF1, /*==>逢 Row:60 Col:81 */
+    /*0x835F, GB2312 Code:*/ 0xDCF6, /*==>俯 Row:60 Col:86 */
+    /*0x8360, GB2312 Code:*/ 0xDCF9, /*==>副 Row:60 Col:89 */
+    /*0x8361, GB2312 Code:*/ 0xB5B4, /*==>뎬 Row:21 Col:20 */
+    /*0x8363, GB2312 Code:*/ 0xC8D9, /*==>휠 Row:40 Col:57 */
+    /*0x8364, GB2312 Code:*/ 0xBBE7, /*==>사 Row:27 Col:71 */
+    /*0x8365, GB2312 Code:*/ 0xDCFE, /*==>婦 Row:60 Col:94 */
+    /*0x8366, GB2312 Code:*/ 0xDCFD, /*==>夫 Row:60 Col:93 */
+    /*0x8367, GB2312 Code:*/ 0xD3AB, /*==>段 Row:51 Col:11 */
+    /*0x8368, GB2312 Code:*/ 0xDDA1, /*==>孚 Row:61 Col:01 */
+    /*0x8369, GB2312 Code:*/ 0xDDA3, /*==>富 Row:61 Col:03 */
+    /*0x836A, GB2312 Code:*/ 0xDDA5, /*==>復 Row:61 Col:05 */
+    /*0x836B, GB2312 Code:*/ 0xD2F1, /*==>肋 Row:50 Col:81 */
+    /*0x836C, GB2312 Code:*/ 0xDDA4, /*==>府 Row:61 Col:04 */
+    /*0x836D, GB2312 Code:*/ 0xDDA6, /*==>扶 Row:61 Col:06 */
+    /*0x836E, GB2312 Code:*/ 0xDDA7, /*==>敷 Row:61 Col:07 */
+    /*0x836F, GB2312 Code:*/ 0xD2A9, /*==>浪 Row:50 Col:09 */
+    /*0x8377, GB2312 Code:*/ 0xBAC9, /*==>뵐 Row:26 Col:41 */
+    /*0x8378, GB2312 Code:*/ 0xDDA9, /*==>浮 Row:61 Col:09 */
+    /*0x837B, GB2312 Code:*/ 0xDDB6, /*==>負 Row:61 Col:22 */
+    /*0x837C, GB2312 Code:*/ 0xDDB1, /*==>膚 Row:61 Col:17 */
+    /*0x837D, GB2312 Code:*/ 0xDDB4, /*==>莩 Row:61 Col:20 */
+    /*0x8385, GB2312 Code:*/ 0xDDB0, /*==>腑 Row:61 Col:16 */
+    /*0x8386, GB2312 Code:*/ 0xC6CE, /*==>팡 Row:38 Col:46 */
+    /*0x8389, GB2312 Code:*/ 0xC0F2, /*==>쟌 Row:32 Col:82 */
+    /*0x838E, GB2312 Code:*/ 0xC9AF, /*==>� Row:41 Col:15 */
+    /*0x8392, GB2312 Code:*/ 0xDCEC, /*==>熢 Row:60 Col:76 */
+    /*0x8393, GB2312 Code:*/ 0xDDAE, /*==>缶 Row:61 Col:14 */
+    /*0x8398, GB2312 Code:*/ 0xDDB7, /*==>賦 Row:61 Col:23 */
+    /*0x839B, GB2312 Code:*/ 0xDCF0, /*==>蜂 Row:60 Col:80 */
+    /*0x839C, GB2312 Code:*/ 0xDDAF, /*==>腐 Row:61 Col:15 */
+    /*0x839E, GB2312 Code:*/ 0xDDB8, /*==>賻 Row:61 Col:24 */
+    /*0x83A0, GB2312 Code:*/ 0xDDAC, /*==>符 Row:61 Col:12 */
+    /*0x83A8, GB2312 Code:*/ 0xDDB9, /*==>赴 Row:61 Col:25 */
+    /*0x83A9, GB2312 Code:*/ 0xDDB3, /*==>芙 Row:61 Col:19 */
+    /*0x83AA, GB2312 Code:*/ 0xDDAD, /*==>簿 Row:61 Col:13 */
+    /*0x83AB, GB2312 Code:*/ 0xC4AA, /*==>칭 Row:36 Col:10 */
+    /*0x83B0, GB2312 Code:*/ 0xDDA8, /*==>斧 Row:61 Col:08 */
+    /*0x83B1, GB2312 Code:*/ 0xC0B3, /*==>윰 Row:32 Col:19 */
+    /*0x83B2, GB2312 Code:*/ 0xC1AB, /*==>젭 Row:33 Col:11 */
+    /*0x83B3, GB2312 Code:*/ 0xDDAA, /*==>溥 Row:61 Col:10 */
+    /*0x83B4, GB2312 Code:*/ 0xDDAB, /*==>父 Row:61 Col:11 */
+    /*0x83B6, GB2312 Code:*/ 0xDDB2, /*==>艀 Row:61 Col:18 */
+    /*0x83B7, GB2312 Code:*/ 0xBBF1, /*==>삿 Row:27 Col:81 */
+    /*0x83B8, GB2312 Code:*/ 0xDDB5, /*==>訃 Row:61 Col:21 */
+    /*0x83B9, GB2312 Code:*/ 0xD3A8, /*==>斷 Row:51 Col:08 */
+    /*0x83BA, GB2312 Code:*/ 0xDDBA, /*==>趺 Row:61 Col:26 */
+    /*0x83BC, GB2312 Code:*/ 0xDDBB, /*==>部 Row:61 Col:27 */
+    /*0x83BD, GB2312 Code:*/ 0xC3A7, /*==>챌 Row:35 Col:07 */
+    /*0x83C0, GB2312 Code:*/ 0xDDD2, /*==>芬 Row:61 Col:50 */
+    /*0x83C1, GB2312 Code:*/ 0xDDBC, /*==>釜 Row:61 Col:28 */
+    /*0x83C5, GB2312 Code:*/ 0xDDD1, /*==>紛 Row:61 Col:49 */
+    /*0x83C7, GB2312 Code:*/ 0xB9BD, /*==>뭣 Row:25 Col:29 */
+    /*0x83CA, GB2312 Code:*/ 0xBED5, /*==>앞 Row:30 Col:53 */
+    /*0x83CC, GB2312 Code:*/ 0xBEFA, /*==>었 Row:30 Col:90 */
+    /*0x83CF, GB2312 Code:*/ 0xBACA, /*==>뵘 Row:26 Col:42 */
+    /*0x83D4, GB2312 Code:*/ 0xDDCA, /*==>扮 Row:61 Col:42 */
+    /*0x83D6, GB2312 Code:*/ 0xDDC5, /*==>墳 Row:61 Col:37 */
+    /*0x83D8, GB2312 Code:*/ 0xDDBF, /*==>駙 Row:61 Col:31 */
+    /*0x83DC, GB2312 Code:*/ 0xB2CB, /*==>꽉 Row:18 Col:43 */
+    /*0x83DD, GB2312 Code:*/ 0xDDC3, /*==>吩 Row:61 Col:35 */
+    /*0x83DF, GB2312 Code:*/ 0xDDCB, /*==>昐 Row:61 Col:43 */
+    /*0x83E0, GB2312 Code:*/ 0xB2A4, /*==>깽 Row:18 Col:04 */
+    /*0x83E1, GB2312 Code:*/ 0xDDD5, /*==>不 Row:61 Col:53 */
+    /*0x83E5, GB2312 Code:*/ 0xDDBE, /*==>附 Row:61 Col:30 */
+    /*0x83E9, GB2312 Code:*/ 0xC6D0, /*==>패 Row:38 Col:48 */
+    /*0x83EA, GB2312 Code:*/ 0xDDD0, /*==>糞 Row:61 Col:48 */
+    /*0x83F0, GB2312 Code:*/ 0xDDD4, /*==>雰 Row:61 Col:52 */
+    /*0x83F1, GB2312 Code:*/ 0xC1E2, /*==>줴 Row:33 Col:66 */
+    /*0x83F2, GB2312 Code:*/ 0xB7C6, /*==>렵 Row:23 Col:38 */
+    /*0x83F8, GB2312 Code:*/ 0xDDCE, /*==>盆 Row:61 Col:46 */
+    /*0x83F9, GB2312 Code:*/ 0xDDCF, /*==>粉 Row:61 Col:47 */
+    /*0x83FD, GB2312 Code:*/ 0xDDC4, /*==>噴 Row:61 Col:36 */
+    /*0x8401, GB2312 Code:*/ 0xDDBD, /*==>阜 Row:61 Col:29 */
+    /*0x8403, GB2312 Code:*/ 0xDDCD, /*==>焚 Row:61 Col:45 */
+    /*0x8404, GB2312 Code:*/ 0xCCD1, /*==>境 Row:44 Col:49 */
+    /*0x8406, GB2312 Code:*/ 0xDDC9, /*==>憤 Row:61 Col:41 */
+    /*0x840B, GB2312 Code:*/ 0xDDC2, /*==>分 Row:61 Col:34 */
+    /*0x840C, GB2312 Code:*/ 0xC3C8, /*==>쳰 Row:35 Col:40 */
+    /*0x840D, GB2312 Code:*/ 0xC6BC, /*==>티 Row:38 Col:28 */
+    /*0x840E, GB2312 Code:*/ 0xCEAE, /*==>冠 Row:46 Col:14 */
+    /*0x840F, GB2312 Code:*/ 0xDDCC, /*==>汾 Row:61 Col:44 */
+    /*0x8411, GB2312 Code:*/ 0xDDC8, /*==>忿 Row:61 Col:40 */
+    /*0x8418, GB2312 Code:*/ 0xDDC1, /*==>北 Row:61 Col:33 */
+    /*0x841C, GB2312 Code:*/ 0xDDC6, /*==>奔 Row:61 Col:38 */
+    /*0x841D, GB2312 Code:*/ 0xC2DC, /*==>쬡 Row:34 Col:60 */
+    /*0x8424, GB2312 Code:*/ 0xD3A9, /*==>旦 Row:51 Col:09 */
+    /*0x8425, GB2312 Code:*/ 0xD3AA, /*==>檀 Row:51 Col:10 */
+    /*0x8426, GB2312 Code:*/ 0xDDD3, /*==>賁 Row:61 Col:51 */
+    /*0x8427, GB2312 Code:*/ 0xCFF4, /*==>闕 Row:47 Col:84 */
+    /*0x8428, GB2312 Code:*/ 0xC8F8, /*==>힉 Row:40 Col:88 */
+    /*0x8431, GB2312 Code:*/ 0xDDE6, /*==>婢 Row:61 Col:70 */
+    /*0x8438, GB2312 Code:*/ 0xDDC7, /*==>奮 Row:61 Col:39 */
+    /*0x843C, GB2312 Code:*/ 0xDDE0, /*==>丕 Row:61 Col:64 */
+    /*0x843D, GB2312 Code:*/ 0xC2E4, /*==>쭝 Row:34 Col:68 */
+    /*0x8446, GB2312 Code:*/ 0xDDE1, /*==>備 Row:61 Col:65 */
+    /*0x8451, GB2312 Code:*/ 0xDDD7, /*==>弗 Row:61 Col:55 */
+    /*0x8457, GB2312 Code:*/ 0xD6F8, /*==>廖 Row:54 Col:88 */
+    /*0x8459, GB2312 Code:*/ 0xDDD9, /*==>拂 Row:61 Col:57 */
+    /*0x845A, GB2312 Code:*/ 0xDDD8, /*==>彿 Row:61 Col:56 */
+    /*0x845B, GB2312 Code:*/ 0xB8F0, /*==>모 Row:24 Col:80 */
+    /*0x845C, GB2312 Code:*/ 0xDDD6, /*==>佛 Row:61 Col:54 */
+    /*0x8461, GB2312 Code:*/ 0xC6CF, /*==>팥 Row:38 Col:47 */
+    /*0x8463, GB2312 Code:*/ 0xB6AD, /*==>땟 Row:22 Col:13 */
+    /*0x8469, GB2312 Code:*/ 0xDDE2, /*==>匕 Row:61 Col:66 */
+    /*0x846B, GB2312 Code:*/ 0xBAF9, /*==>빙 Row:26 Col:89 */
+    /*0x846C, GB2312 Code:*/ 0xD4E1, /*==>杜 Row:52 Col:65 */
+    /*0x846D, GB2312 Code:*/ 0xDDE7, /*==>庇 Row:61 Col:71 */
+    /*0x8471, GB2312 Code:*/ 0xB4D0, /*==>닉 Row:20 Col:48 */
+    /*0x8473, GB2312 Code:*/ 0xDDDA, /*==>崩 Row:61 Col:58 */
+    /*0x8475, GB2312 Code:*/ 0xBFFB, /*==>웝 Row:31 Col:91 */
+    /*0x8476, GB2312 Code:*/ 0xDDE3, /*==>匪 Row:61 Col:67 */
+    /*0x8478, GB2312 Code:*/ 0xDDDF, /*==>鵬 Row:61 Col:63 */
+    /*0x847A, GB2312 Code:*/ 0xDDDD, /*==>硼 Row:61 Col:61 */
+    /*0x8482, GB2312 Code:*/ 0xB5D9, /*==>뒝 Row:21 Col:57 */
+    /*0x8487, GB2312 Code:*/ 0xDDDB, /*==>朋 Row:61 Col:59 */
+    /*0x8488, GB2312 Code:*/ 0xDDDC, /*==>棚 Row:61 Col:60 */
+    /*0x8489, GB2312 Code:*/ 0xDDDE, /*==>繃 Row:61 Col:62 */
+    /*0x848B, GB2312 Code:*/ 0xBDAF, /*==>쉴 Row:29 Col:15 */
+    /*0x848C, GB2312 Code:*/ 0xDDE4, /*==>卑 Row:61 Col:68 */
+    /*0x848E, GB2312 Code:*/ 0xDDE5, /*==>妃 Row:61 Col:69 */
+    /*0x8497, GB2312 Code:*/ 0xDDF5, /*==>琵 Row:61 Col:85 */
+    /*0x8499, GB2312 Code:*/ 0xC3C9, /*==>촁 Row:35 Col:41 */
+    /*0x849C, GB2312 Code:*/ 0xCBE2, /*==>渠 Row:43 Col:66 */
+    /*0x84A1, GB2312 Code:*/ 0xDDF2, /*==>毘 Row:61 Col:82 */
+    /*0x84AF, GB2312 Code:*/ 0xD8E1, /*==>罵 Row:56 Col:65 */
+    /*0x84B2, GB2312 Code:*/ 0xC6D1, /*==>팩 Row:38 Col:49 */
+    /*0x84B4, GB2312 Code:*/ 0xDDF4, /*==>泌 Row:61 Col:84 */
+    /*0x84B8, GB2312 Code:*/ 0xD5F4, /*==>力 Row:53 Col:84 */
+    /*0x84B9, GB2312 Code:*/ 0xDDF3, /*==>沸 Row:61 Col:83 */
+    /*0x84BA, GB2312 Code:*/ 0xDDF0, /*==>毖 Row:61 Col:80 */
+    /*0x84BD, GB2312 Code:*/ 0xDDEC, /*==>斐 Row:61 Col:76 */
+    /*0x84BF, GB2312 Code:*/ 0xDDEF, /*==>比 Row:61 Col:79 */
+    /*0x84C1, GB2312 Code:*/ 0xDDE8, /*==>悲 Row:61 Col:72 */
+    /*0x84C4, GB2312 Code:*/ 0xD0EE, /*==>嗜 Row:48 Col:78 */
+    /*0x84C9, GB2312 Code:*/ 0xC8D8, /*==>휜 Row:40 Col:56 */
+    /*0x84CA, GB2312 Code:*/ 0xDDEE, /*==>榧 Row:61 Col:78 */
+    /*0x84CD, GB2312 Code:*/ 0xDDE9, /*==>憊 Row:61 Col:73 */
+    /*0x84D0, GB2312 Code:*/ 0xDDEA, /*==>扉 Row:61 Col:74 */
+    /*0x84D1, GB2312 Code:*/ 0xCBF2, /*==>腱 Row:43 Col:82 */
+    /*0x84D3, GB2312 Code:*/ 0xDDED, /*==>枇 Row:61 Col:77 */
+    /*0x84D6, GB2312 Code:*/ 0xB1CD, /*==>귀 Row:17 Col:45 */
+    /*0x84DD, GB2312 Code:*/ 0xC0B6, /*==>융 Row:32 Col:22 */
+    /*0x84DF, GB2312 Code:*/ 0xBCBB, /*==>섶 Row:28 Col:27 */
+    /*0x84E0, GB2312 Code:*/ 0xDDF1, /*==>毗 Row:61 Col:81 */
+    /*0x84E3, GB2312 Code:*/ 0xDDF7, /*==>砒 Row:61 Col:87 */
+    /*0x84E5, GB2312 Code:*/ 0xDDF6, /*==>痺 Row:61 Col:86 */
+    /*0x84E6, GB2312 Code:*/ 0xDDEB, /*==>批 Row:61 Col:75 */
+    /*0x84EC, GB2312 Code:*/ 0xC5EE, /*==>퇀 Row:37 Col:78 */
+    /*0x84F0, GB2312 Code:*/ 0xDDFB, /*==>粃 Row:61 Col:91 */
+    /*0x84FC, GB2312 Code:*/ 0xDEA4, /*==>蜚 Row:62 Col:04 */
+    /*0x84FF, GB2312 Code:*/ 0xDEA3, /*==>菲 Row:62 Col:03 */
+    /*0x850C, GB2312 Code:*/ 0xDDF8, /*==>碑 Row:61 Col:88 */
+    /*0x8511, GB2312 Code:*/ 0xC3EF, /*==>췹 Row:35 Col:79 */
+    /*0x8513, GB2312 Code:*/ 0xC2FB, /*==>찰 Row:34 Col:91 */
+    /*0x8517, GB2312 Code:*/ 0xD5E1, /*==>量 Row:53 Col:65 */
+    /*0x851A, GB2312 Code:*/ 0xCEB5, /*==>琯 Row:46 Col:21 */
+    /*0x851F, GB2312 Code:*/ 0xDDFD, /*==>翡 Row:61 Col:93 */
+    /*0x8521, GB2312 Code:*/ 0xB2CC, /*==>꽐 Row:18 Col:44 */
+    /*0x852B, GB2312 Code:*/ 0xC4E8, /*==>쾌 Row:36 Col:72 */
+    /*0x852C, GB2312 Code:*/ 0xCADF, /*==>諫 Row:42 Col:63 */
+    /*0x8537, GB2312 Code:*/ 0xC7BE, /*==>퓸 Row:39 Col:30 */
+    /*0x8538, GB2312 Code:*/ 0xDDFA, /*==>秘 Row:61 Col:90 */
+    /*0x8539, GB2312 Code:*/ 0xDDFC, /*==>緋 Row:61 Col:92 */
+    /*0x853A, GB2312 Code:*/ 0xDDFE, /*==>肥 Row:61 Col:94 */
+    /*0x853B, GB2312 Code:*/ 0xDEA2, /*==>臂 Row:62 Col:02 */
+    /*0x853C, GB2312 Code:*/ 0xB0AA, /*==>값 Row:16 Col:10 */
+    /*0x853D, GB2312 Code:*/ 0xB1CE, /*==>귁 Row:17 Col:46 */
+    /*0x8543, GB2312 Code:*/ 0xDEAC, /*==>鼻 Row:62 Col:12 */
+    /*0x8548, GB2312 Code:*/ 0xDEA6, /*==>誹 Row:62 Col:06 */
+    /*0x8549, GB2312 Code:*/ 0xBDB6, /*==>슐 Row:29 Col:22 */
+    /*0x854A, GB2312 Code:*/ 0xC8EF, /*==>흥 Row:40 Col:79 */
+    /*0x8556, GB2312 Code:*/ 0xDEA1, /*==>脾 Row:62 Col:01 */
+    /*0x8559, GB2312 Code:*/ 0xDEA5, /*==>裨 Row:62 Col:05 */
+    /*0x855E, GB2312 Code:*/ 0xDEA9, /*==>鄙 Row:62 Col:09 */
+    /*0x8564, GB2312 Code:*/ 0xDEA8, /*==>費 Row:62 Col:08 */
+    /*0x8568, GB2312 Code:*/ 0xDEA7, /*==>譬 Row:62 Col:07 */
+    /*0x8572, GB2312 Code:*/ 0xDEAD, /*==>嚬 Row:62 Col:13 */
+    /*0x8574, GB2312 Code:*/ 0xD4CC, /*==>乭 Row:52 Col:44 */
+    /*0x8579, GB2312 Code:*/ 0xDEB3, /*==>浜 Row:62 Col:19 */
+    /*0x857A, GB2312 Code:*/ 0xDEAA, /*==>非 Row:62 Col:10 */
+    /*0x857B, GB2312 Code:*/ 0xDEAE, /*==>嬪 Row:62 Col:14 */
+    /*0x857E, GB2312 Code:*/ 0xC0D9, /*==>잎 Row:32 Col:57 */
+    /*0x8584, GB2312 Code:*/ 0xB1A1, /*==>괌 Row:17 Col:01 */
+    /*0x8585, GB2312 Code:*/ 0xDEB6, /*==>牝 Row:62 Col:22 */
+    /*0x8587, GB2312 Code:*/ 0xDEB1, /*==>檳 Row:62 Col:17 */
+    /*0x858F, GB2312 Code:*/ 0xDEB2, /*==>殯 Row:62 Col:18 */
+    /*0x859B, GB2312 Code:*/ 0xD1A6, /*==>機 Row:49 Col:06 */
+    /*0x859C, GB2312 Code:*/ 0xDEB5, /*==>瀕 Row:62 Col:21 */
+    /*0x85A4, GB2312 Code:*/ 0xDEAF, /*==>彬 Row:62 Col:15 */
+    /*0x85A8, GB2312 Code:*/ 0xDEB0, /*==>斌 Row:62 Col:16 */
+    /*0x85AA, GB2312 Code:*/ 0xD0BD, /*==>戟 Row:48 Col:29 */
+    /*0x85AE, GB2312 Code:*/ 0xDEB4, /*==>濱 Row:62 Col:20 */
+    /*0x85AF, GB2312 Code:*/ 0xCAED, /*==>堪 Row:42 Col:77 */
+    /*0x85B0, GB2312 Code:*/ 0xDEB9, /*==>賓 Row:62 Col:25 */
+    /*0x85B7, GB2312 Code:*/ 0xDEB8, /*==>貧 Row:62 Col:24 */
+    /*0x85B9, GB2312 Code:*/ 0xDEB7, /*==>玭 Row:62 Col:23 */
+    /*0x85C1, GB2312 Code:*/ 0xDEBB, /*==>憑 Row:62 Col:27 */
+    /*0x85C9, GB2312 Code:*/ 0xBDE5, /*==>썲 Row:29 Col:69 */
+    /*0x85CF, GB2312 Code:*/ 0xB2D8, /*==>꾜 Row:18 Col:56 */
+    /*0x85D0, GB2312 Code:*/ 0xC3EA, /*==>췐 Row:35 Col:74 */
+    /*0x85D3, GB2312 Code:*/ 0xDEBA, /*==>頻 Row:62 Col:26 */
+    /*0x85D5, GB2312 Code:*/ 0xC5BA, /*==>탄 Row:37 Col:26 */
+    /*0x85DC, GB2312 Code:*/ 0xDEBC, /*==>氷 Row:62 Col:28 */
+    /*0x85E4, GB2312 Code:*/ 0xCCD9, /*==>暻 Row:44 Col:57 */
+    /*0x85E9, GB2312 Code:*/ 0xB7AA, /*==>랴 Row:23 Col:10 */
+    /*0x85FB, GB2312 Code:*/ 0xD4E5, /*==>荳 Row:52 Col:69 */
+    /*0x85FF, GB2312 Code:*/ 0xDEBD, /*==>聘 Row:62 Col:29 */
+    /*0x8605, GB2312 Code:*/ 0xDEBF, /*==>乍 Row:62 Col:31 */
+    /*0x8611, GB2312 Code:*/ 0xC4A2, /*==>칙 Row:36 Col:02 */
+    /*0x8616, GB2312 Code:*/ 0xDEC1, /*==>些 Row:62 Col:33 */
+    /*0x8627, GB2312 Code:*/ 0xDEBE, /*==>騁 Row:62 Col:30 */
+    /*0x8629, GB2312 Code:*/ 0xDEC0, /*==>事 Row:62 Col:32 */
+    /*0x8638, GB2312 Code:*/ 0xD5BA, /*==>擥 Row:53 Col:26 */
+    /*0x863C, GB2312 Code:*/ 0xDEC2, /*==>仕 Row:62 Col:34 */
+    /*0x864D, GB2312 Code:*/ 0xF2AE, /*==>池 Row:82 Col:14 */
+    /*0x864E, GB2312 Code:*/ 0xBBA2, /*==>빪 Row:27 Col:02 */
+    /*0x864F, GB2312 Code:*/ 0xC2B2, /*==>짼 Row:34 Col:18 */
+    /*0x8650, GB2312 Code:*/ 0xC5B0, /*==>키 Row:37 Col:16 */
+    /*0x8651, GB2312 Code:*/ 0xC2C7, /*==>쪄 Row:34 Col:39 */
+    /*0x8654, GB2312 Code:*/ 0xF2AF, /*==>沚 Row:82 Col:15 */
+    /*0x865A, GB2312 Code:*/ 0xD0E9, /*==>肯 Row:48 Col:73 */
+    /*0x865E, GB2312 Code:*/ 0xD3DD, /*==>坮 Row:51 Col:61 */
+    /*0x8662, GB2312 Code:*/ 0xEBBD, /*==>戮 Row:75 Col:29 */
+    /*0x866B, GB2312 Code:*/ 0xB3E6, /*==>녔 Row:19 Col:70 */
+    /*0x866C, GB2312 Code:*/ 0xF2B0, /*==>漬 Row:82 Col:16 */
+    /*0x866E, GB2312 Code:*/ 0xF2B1, /*==>知 Row:82 Col:17 */
+    /*0x8671, GB2312 Code:*/ 0xCAAD, /*==>架 Row:42 Col:13 */
+    /*0x8679, GB2312 Code:*/ 0xBAE7, /*==>븀 Row:26 Col:71 */
+    /*0x867A, GB2312 Code:*/ 0xF2B3, /*==>祉 Row:82 Col:19 */
+    /*0x867B, GB2312 Code:*/ 0xF2B5, /*==>紙 Row:82 Col:21 */
+    /*0x867C, GB2312 Code:*/ 0xF2B4, /*==>祗 Row:82 Col:20 */
+    /*0x867D, GB2312 Code:*/ 0xCBE4, /*==>祛 Row:43 Col:68 */
+    /*0x867E, GB2312 Code:*/ 0xCFBA, /*==>瞿 Row:47 Col:26 */
+    /*0x867F, GB2312 Code:*/ 0xF2B2, /*==>砥 Row:82 Col:18 */
+    /*0x8680, GB2312 Code:*/ 0xCAB4, /*==>苛 Row:42 Col:20 */
+    /*0x8681, GB2312 Code:*/ 0xD2CF, /*==>碌 Row:50 Col:47 */
+    /*0x8682, GB2312 Code:*/ 0xC2EC, /*==>쯧 Row:34 Col:76 */
+    /*0x868A, GB2312 Code:*/ 0xCEC3, /*==>光 Row:46 Col:35 */
+    /*0x868B, GB2312 Code:*/ 0xF2B8, /*==>至 Row:82 Col:24 */
+    /*0x868C, GB2312 Code:*/ 0xB0F6, /*==>곱 Row:16 Col:86 */
+    /*0x868D, GB2312 Code:*/ 0xF2B7, /*==>脂 Row:82 Col:23 */
+    /*0x8693, GB2312 Code:*/ 0xF2BE, /*==>贄 Row:82 Col:30 */
+    /*0x8695, GB2312 Code:*/ 0xB2CF, /*==>꽤 Row:18 Col:47 */
+    /*0x869C, GB2312 Code:*/ 0xD1C1, /*==>譏 Row:49 Col:33 */
+    /*0x869D, GB2312 Code:*/ 0xF2BA, /*==>芷 Row:82 Col:26 */
+    /*0x86A3, GB2312 Code:*/ 0xF2BC, /*==>誌 Row:82 Col:28 */
+    /*0x86A4, GB2312 Code:*/ 0xD4E9, /*==>頭 Row:52 Col:73 */
+    /*0x86A7, GB2312 Code:*/ 0xF2BB, /*==>蜘 Row:82 Col:27 */
+    /*0x86A8, GB2312 Code:*/ 0xF2B6, /*==>肢 Row:82 Col:22 */
+    /*0x86A9, GB2312 Code:*/ 0xF2BF, /*==>趾 Row:82 Col:31 */
+    /*0x86AA, GB2312 Code:*/ 0xF2BD, /*==>識 Row:82 Col:29 */
+    /*0x86AC, GB2312 Code:*/ 0xF2B9, /*==>芝 Row:82 Col:25 */
+    /*0x86AF, GB2312 Code:*/ 0xF2C7, /*==>嗔 Row:82 Col:39 */
+    /*0x86B0, GB2312 Code:*/ 0xF2C4, /*==>織 Row:82 Col:36 */
+    /*0x86B1, GB2312 Code:*/ 0xF2C6, /*==>唇 Row:82 Col:38 */
+    /*0x86B4, GB2312 Code:*/ 0xF2CA, /*==>搢 Row:82 Col:42 */
+    /*0x86B5, GB2312 Code:*/ 0xF2C2, /*==>稙 Row:82 Col:34 */
+    /*0x86B6, GB2312 Code:*/ 0xF2C0, /*==>遲 Row:82 Col:32 */
+    /*0x86BA, GB2312 Code:*/ 0xF2C5, /*==>職 Row:82 Col:37 */
+    /*0x86C0, GB2312 Code:*/ 0xD6FB, /*==>療 Row:54 Col:91 */
+    /*0x86C4, GB2312 Code:*/ 0xF2C1, /*==>直 Row:82 Col:33 */
+    /*0x86C6, GB2312 Code:*/ 0xC7F9, /*==>협 Row:39 Col:89 */
+    /*0x86C7, GB2312 Code:*/ 0xC9DF, /*==>� Row:41 Col:63 */
+    /*0x86C9, GB2312 Code:*/ 0xF2C8, /*==>塵 Row:82 Col:40 */
+    /*0x86CA, GB2312 Code:*/ 0xB9C6, /*==>뮷 Row:25 Col:38 */
+    /*0x86CB, GB2312 Code:*/ 0xB5B0, /*==>뎔 Row:21 Col:16 */
+    /*0x86CE, GB2312 Code:*/ 0xF2C3, /*==>稷 Row:82 Col:35 */
+    /*0x86CF, GB2312 Code:*/ 0xF2C9, /*==>振 Row:82 Col:41 */
+    /*0x86D0, GB2312 Code:*/ 0xF2D0, /*==>津 Row:82 Col:48 */
+    /*0x86D1, GB2312 Code:*/ 0xF2D6, /*==>疹 Row:82 Col:54 */
+    /*0x86D4, GB2312 Code:*/ 0xBBD7, /*==>뿡 Row:27 Col:55 */
+    /*0x86D8, GB2312 Code:*/ 0xF2D5, /*==>畛 Row:82 Col:53 */
+    /*0x86D9, GB2312 Code:*/ 0xCDDC, /*==>鵠 Row:45 Col:60 */
+    /*0x86DB, GB2312 Code:*/ 0xD6EB, /*==>籠 Row:54 Col:75 */
+    /*0x86DE, GB2312 Code:*/ 0xF2D2, /*==>珍 Row:82 Col:50 */
+    /*0x86DF, GB2312 Code:*/ 0xF2D4, /*==>璡 Row:82 Col:52 */
+    /*0x86E4, GB2312 Code:*/ 0xB8F2, /*==>몫 Row:24 Col:82 */
+    /*0x86E9, GB2312 Code:*/ 0xF2CB, /*==>晉 Row:82 Col:43 */
+    /*0x86ED, GB2312 Code:*/ 0xF2CE, /*==>榛 Row:82 Col:46 */
+    /*0x86EE, GB2312 Code:*/ 0xC2F9, /*==>찬 Row:34 Col:89 */
+    /*0x86F0, GB2312 Code:*/ 0xD5DD, /*==>糧 Row:53 Col:61 */
+    /*0x86F1, GB2312 Code:*/ 0xF2CC, /*==>晋 Row:82 Col:44 */
+    /*0x86F2, GB2312 Code:*/ 0xF2CD, /*==>桭 Row:82 Col:45 */
+    /*0x86F3, GB2312 Code:*/ 0xF2CF, /*==>殄 Row:82 Col:47 */
+    /*0x86F4, GB2312 Code:*/ 0xF2D3, /*==>瑨 Row:82 Col:51 */
+    /*0x86F8, GB2312 Code:*/ 0xF2D9, /*==>瞋 Row:82 Col:57 */
+    /*0x86F9, GB2312 Code:*/ 0xD3BC, /*==>憺 Row:51 Col:28 */
+    /*0x86FE, GB2312 Code:*/ 0xB6EA, /*==>띔 Row:22 Col:74 */
+    /*0x8700, GB2312 Code:*/ 0xCAF1, /*==>戡 Row:42 Col:81 */
+    /*0x8702, GB2312 Code:*/ 0xB7E4, /*==>룝 Row:23 Col:68 */
+    /*0x8703, GB2312 Code:*/ 0xF2D7, /*==>盡 Row:82 Col:55 */
+    /*0x8707, GB2312 Code:*/ 0xF2D8, /*==>眞 Row:82 Col:56 */
+    /*0x8708, GB2312 Code:*/ 0xF2DA, /*==>秦 Row:82 Col:58 */
+    /*0x8709, GB2312 Code:*/ 0xF2DD, /*==>臻 Row:82 Col:61 */
+    /*0x870A, GB2312 Code:*/ 0xF2DB, /*==>縉 Row:82 Col:59 */
+    /*0x870D, GB2312 Code:*/ 0xF2DC, /*==>縝 Row:82 Col:60 */
+    /*0x8712, GB2312 Code:*/ 0xD1D1, /*==>金 Row:49 Col:49 */
+    /*0x8713, GB2312 Code:*/ 0xF2D1, /*==>溱 Row:82 Col:49 */
+    /*0x8715, GB2312 Code:*/ 0xCDC9, /*==>苽 Row:45 Col:41 */
+    /*0x8717, GB2312 Code:*/ 0xCECF, /*==>卦 Row:46 Col:47 */
+    /*0x8718, GB2312 Code:*/ 0xD6A9, /*==>冽 Row:54 Col:09 */
+    /*0x871A, GB2312 Code:*/ 0xF2E3, /*==>辰 Row:82 Col:67 */
+    /*0x871C, GB2312 Code:*/ 0xC3DB, /*==>쵯 Row:35 Col:59 */
+    /*0x871E, GB2312 Code:*/ 0xF2E0, /*==>診 Row:82 Col:64 */
+    /*0x8721, GB2312 Code:*/ 0xC0AF, /*==>유 Row:32 Col:15 */
+    /*0x8722, GB2312 Code:*/ 0xF2EC, /*==>嫉 Row:82 Col:76 */
+    /*0x8723, GB2312 Code:*/ 0xF2DE, /*==>蔯 Row:82 Col:62 */
+    /*0x8725, GB2312 Code:*/ 0xF2E1, /*==>賑 Row:82 Col:65 */
+    /*0x8729, GB2312 Code:*/ 0xF2E8, /*==>震 Row:82 Col:72 */
+    /*0x872E, GB2312 Code:*/ 0xF2E2, /*==>軫 Row:82 Col:66 */
+    /*0x8731, GB2312 Code:*/ 0xF2E7, /*==>陳 Row:82 Col:71 */
+    /*0x8734, GB2312 Code:*/ 0xF2E6, /*==>陣 Row:82 Col:70 */
+    /*0x8737, GB2312 Code:*/ 0xF2E9, /*==>侄 Row:82 Col:73 */
+    /*0x873B, GB2312 Code:*/ 0xF2DF, /*==>袗 Row:82 Col:63 */
+    /*0x873E, GB2312 Code:*/ 0xF2E4, /*==>進 Row:82 Col:68 */
+    /*0x873F, GB2312 Code:*/ 0xF2EA, /*==>叱 Row:82 Col:74 */
+    /*0x8747, GB2312 Code:*/ 0xD3AC, /*==>湍 Row:51 Col:12 */
+    /*0x8748, GB2312 Code:*/ 0xF2E5, /*==>鎭 Row:82 Col:69 */
+    /*0x8749, GB2312 Code:*/ 0xB2F5, /*==>끅 Row:18 Col:85 */
+    /*0x874C, GB2312 Code:*/ 0xF2F2, /*==>窒 Row:82 Col:82 */
+    /*0x874E, GB2312 Code:*/ 0xD0AB, /*==>竅 Row:48 Col:11 */
+    /*0x8753, GB2312 Code:*/ 0xF2F5, /*==>質 Row:82 Col:85 */
+    /*0x8757, GB2312 Code:*/ 0xBBC8, /*==>뽁 Row:27 Col:40 */
+    /*0x8759, GB2312 Code:*/ 0xF2F9, /*==>朕 Row:82 Col:89 */
+    /*0x8760, GB2312 Code:*/ 0xF2F0, /*==>疾 Row:82 Col:80 */
+    /*0x8763, GB2312 Code:*/ 0xF2F6, /*==>跌 Row:82 Col:86 */
+    /*0x8764, GB2312 Code:*/ 0xF2F8, /*==>斟 Row:82 Col:88 */
+    /*0x8765, GB2312 Code:*/ 0xF2FA, /*==>什 Row:82 Col:90 */
+    /*0x876E, GB2312 Code:*/ 0xF2F3, /*==>膣 Row:82 Col:83 */
+    /*0x8770, GB2312 Code:*/ 0xF2F1, /*==>秩 Row:82 Col:81 */
+    /*0x8774, GB2312 Code:*/ 0xBAFB, /*==>빛 Row:26 Col:91 */
+    /*0x8776, GB2312 Code:*/ 0xB5FB, /*==>따 Row:21 Col:91 */
+    /*0x877B, GB2312 Code:*/ 0xF2EF, /*==>瓆 Row:82 Col:79 */
+    /*0x877C, GB2312 Code:*/ 0xF2F7, /*==>迭 Row:82 Col:87 */
+    /*0x877D, GB2312 Code:*/ 0xF2ED, /*==>帙 Row:82 Col:77 */
+    /*0x877E, GB2312 Code:*/ 0xF2EE, /*==>桎 Row:82 Col:78 */
+    /*0x8782, GB2312 Code:*/ 0xF2EB, /*==>姪 Row:82 Col:75 */
+    /*0x8783, GB2312 Code:*/ 0xF3A6, /*==>且 Row:83 Col:06 */
+    /*0x8785, GB2312 Code:*/ 0xF3A3, /*==>徵 Row:83 Col:03 */
+    /*0x8788, GB2312 Code:*/ 0xF3A2, /*==>集 Row:83 Col:02 */
+    /*0x878B, GB2312 Code:*/ 0xF2F4, /*==>蛭 Row:82 Col:84 */
+    /*0x878D, GB2312 Code:*/ 0xC8DA, /*==>휨 Row:40 Col:58 */
+    /*0x8793, GB2312 Code:*/ 0xF2FB, /*==>執 Row:82 Col:91 */
+    /*0x8797, GB2312 Code:*/ 0xF3A5, /*==>澄 Row:83 Col:05 */
+    /*0x879F, GB2312 Code:*/ 0xC3F8, /*==>측 Row:35 Col:88 */
+    /*0x87A8, GB2312 Code:*/ 0xF2FD, /*==>緝 Row:82 Col:93 */
+    /*0x87AB, GB2312 Code:*/ 0xF3A7, /*==>侘 Row:83 Col:07 */
+    /*0x87AC, GB2312 Code:*/ 0xF3A9, /*==>叉 Row:83 Col:09 */
+    /*0x87AD, GB2312 Code:*/ 0xF3A4, /*==>懲 Row:83 Col:04 */
+    /*0x87AF, GB2312 Code:*/ 0xF2FC, /*==>潗 Row:82 Col:92 */
+    /*0x87B3, GB2312 Code:*/ 0xF3AB, /*==>嵯 Row:83 Col:11 */
+    /*0x87B5, GB2312 Code:*/ 0xF3AA, /*==>嗟 Row:83 Col:10 */
+    /*0x87BA, GB2312 Code:*/ 0xC2DD, /*==>쭁 Row:34 Col:61 */
+    /*0x87BD, GB2312 Code:*/ 0xF3AE, /*==>此 Row:83 Col:14 */
+    /*0x87C0, GB2312 Code:*/ 0xF3B0, /*==>箚 Row:83 Col:16 */
+    /*0x87C6, GB2312 Code:*/ 0xF3A1, /*==>鏶 Row:83 Col:01 */
+    /*0x87CA, GB2312 Code:*/ 0xF3B1, /*==>茶 Row:83 Col:17 */
+    /*0x87CB, GB2312 Code:*/ 0xF3AC, /*==>差 Row:83 Col:12 */
+    /*0x87D1, GB2312 Code:*/ 0xF3AF, /*==>磋 Row:83 Col:15 */
+    /*0x87D2, GB2312 Code:*/ 0xF2FE, /*==>輯 Row:82 Col:94 */
+    /*0x87D3, GB2312 Code:*/ 0xF3AD, /*==>次 Row:83 Col:13 */
+    /*0x87DB, GB2312 Code:*/ 0xF3B2, /*==>蹉 Row:83 Col:18 */
+    /*0x87E0, GB2312 Code:*/ 0xF3B4, /*==>遮 Row:83 Col:20 */
+    /*0x87E5, GB2312 Code:*/ 0xF3A8, /*==>借 Row:83 Col:08 */
+    /*0x87EA, GB2312 Code:*/ 0xF3B3, /*==>車 Row:83 Col:19 */
+    /*0x87EE, GB2312 Code:*/ 0xF3B5, /*==>捉 Row:83 Col:21 */
+    /*0x87F9, GB2312 Code:*/ 0xD0B7, /*==>鈞 Row:48 Col:23 */
+    /*0x87FE, GB2312 Code:*/ 0xF3B8, /*==>窄 Row:83 Col:24 */
+    /*0x8803, GB2312 Code:*/ 0xD9F9, /*==>默 Row:57 Col:89 */
+    /*0x880A, GB2312 Code:*/ 0xF3B9, /*==>錯 Row:83 Col:25 */
+    /*0x8813, GB2312 Code:*/ 0xF3B7, /*==>着 Row:83 Col:23 */
+    /*0x8815, GB2312 Code:*/ 0xC8E4, /*==>흉 Row:40 Col:68 */
+    /*0x8816, GB2312 Code:*/ 0xF3B6, /*==>搾 Row:83 Col:22 */
+    /*0x881B, GB2312 Code:*/ 0xF3BA, /*==>鑿 Row:83 Col:26 */
+    /*0x8821, GB2312 Code:*/ 0xF3BB, /*==>齪 Row:83 Col:27 */
+    /*0x8822, GB2312 Code:*/ 0xB4C0, /*==>느 Row:20 Col:32 */
+    /*0x8832, GB2312 Code:*/ 0xEEC3, /*==>狙 Row:78 Col:35 */
+    /*0x8839, GB2312 Code:*/ 0xF3BC, /*==>撰 Row:83 Col:28 */
+    /*0x883C, GB2312 Code:*/ 0xF3BD, /*==>澯 Row:83 Col:29 */
+    /*0x8840, GB2312 Code:*/ 0xD1AA, /*==>沂 Row:49 Col:10 */
+    /*0x8844, GB2312 Code:*/ 0xF4AC, /*==>拓 Row:84 Col:12 */
+    /*0x8845, GB2312 Code:*/ 0xD0C6, /*==>根 Row:48 Col:38 */
+    /*0x884C, GB2312 Code:*/ 0xD0D0, /*==>契 Row:48 Col:48 */
+    /*0x884D, GB2312 Code:*/ 0xD1DC, /*==>羅 Row:49 Col:60 */
+    /*0x8854, GB2312 Code:*/ 0xCFCE, /*==>鷗 Row:47 Col:46 */
+    /*0x8857, GB2312 Code:*/ 0xBDD6, /*==>쌍 Row:29 Col:54 */
+    /*0x8859, GB2312 Code:*/ 0xD1C3, /*==>起 Row:49 Col:35 */
+    /*0x8861, GB2312 Code:*/ 0xBAE2, /*==>뷜 Row:26 Col:66 */
+    /*0x8862, GB2312 Code:*/ 0xE1E9, /*==>誦 Row:65 Col:73 */
+    /*0x8863, GB2312 Code:*/ 0xD2C2, /*==>擄 Row:50 Col:34 */
+    /*0x8864, GB2312 Code:*/ 0xF1C2, /*==>疇 Row:81 Col:34 */
+    /*0x8865, GB2312 Code:*/ 0xB2B9, /*==>껸 Row:18 Col:25 */
+    /*0x8868, GB2312 Code:*/ 0xB1ED, /*==>깊 Row:17 Col:77 */
+    /*0x8869, GB2312 Code:*/ 0xF1C3, /*==>籌 Row:81 Col:35 */
+    /*0x886B, GB2312 Code:*/ 0xC9C0, /*==>� Row:41 Col:32 */
+    /*0x886C, GB2312 Code:*/ 0xB3C4, /*==>냐 Row:19 Col:36 */
+    /*0x886E, GB2312 Code:*/ 0xD9F2, /*==>茂 Row:57 Col:82 */
+    /*0x8870, GB2312 Code:*/ 0xCBA5, /*==>鉀 Row:43 Col:05 */
+    /*0x8872, GB2312 Code:*/ 0xF1C4, /*==>紂 Row:81 Col:36 */
+    /*0x8877, GB2312 Code:*/ 0xD6D4, /*==>盧 Row:54 Col:52 */
+    /*0x887D, GB2312 Code:*/ 0xF1C5, /*==>紬 Row:81 Col:37 */
+    /*0x887E, GB2312 Code:*/ 0xF4C0, /*==>薦 Row:84 Col:32 */
+    /*0x887F, GB2312 Code:*/ 0xF1C6, /*==>綢 Row:81 Col:38 */
+    /*0x8881, GB2312 Code:*/ 0xD4AC, /*==>萄 Row:52 Col:12 */
+    /*0x8882, GB2312 Code:*/ 0xF1C7, /*==>舟 Row:81 Col:39 */
+    /*0x8884, GB2312 Code:*/ 0xB0C0, /*==>걋 Row:16 Col:32 */
+    /*0x8885, GB2312 Code:*/ 0xF4C1, /*==>賤 Row:84 Col:33 */
+    /*0x8888, GB2312 Code:*/ 0xF4C2, /*==>踐 Row:84 Col:34 */
+    /*0x888B, GB2312 Code:*/ 0xB4FC, /*==>덟 Row:20 Col:92 */
+    /*0x888D, GB2312 Code:*/ 0xC5DB, /*==>템 Row:37 Col:59 */
+    /*0x8892, GB2312 Code:*/ 0xCCBB, /*==>鵑 Row:44 Col:27 */
+    /*0x8896, GB2312 Code:*/ 0xD0E4, /*==>級 Row:48 Col:68 */
+    /*0x889C, GB2312 Code:*/ 0xCDE0, /*==>昆 Row:45 Col:64 */
+    /*0x88A2, GB2312 Code:*/ 0xF1C8, /*==>蛛 Row:81 Col:40 */
+    /*0x88A4, GB2312 Code:*/ 0xD9F3, /*==>蕪 Row:57 Col:83 */
+    /*0x88AB, GB2312 Code:*/ 0xB1BB, /*==>굳 Row:17 Col:27 */
+    /*0x88AD, GB2312 Code:*/ 0xCFAE, /*==>枸 Row:47 Col:14 */
+    /*0x88B1, GB2312 Code:*/ 0xB8A4, /*==>륵 Row:24 Col:04 */
+    /*0x88B7, GB2312 Code:*/ 0xF1CA, /*==>誅 Row:81 Col:42 */
+    /*0x88BC, GB2312 Code:*/ 0xF1CB, /*==>走 Row:81 Col:43 */
+    /*0x88C1, GB2312 Code:*/ 0xB2C3, /*==>꼴 Row:18 Col:35 */
+    /*0x88C2, GB2312 Code:*/ 0xC1D1, /*==>죙 Row:33 Col:49 */
+    /*0x88C5, GB2312 Code:*/ 0xD7B0, /*==>陋 Row:55 Col:16 */
+    /*0x88C6, GB2312 Code:*/ 0xF1C9, /*==>註 Row:81 Col:41 */
+    /*0x88C9, GB2312 Code:*/ 0xF1CC, /*==>躊 Row:81 Col:44 */
+    /*0x88CE, GB2312 Code:*/ 0xF1CE, /*==>週 Row:81 Col:46 */
+    /*0x88D2, GB2312 Code:*/ 0xD9F6, /*==>霧 Row:57 Col:86 */
+    /*0x88D4, GB2312 Code:*/ 0xD2E1, /*==>賂 Row:50 Col:65 */
+    /*0x88D5, GB2312 Code:*/ 0xD4A3, /*==>淘 Row:52 Col:03 */
+    /*0x88D8, GB2312 Code:*/ 0xF4C3, /*==>遷 Row:84 Col:35 */
+    /*0x88D9, GB2312 Code:*/ 0xC8B9, /*==>획 Row:40 Col:25 */
+    /*0x88DF, GB2312 Code:*/ 0xF4C4, /*==>釧 Row:84 Col:36 */
+    /*0x88E2, GB2312 Code:*/ 0xF1CD, /*==>輳 Row:81 Col:45 */
+    /*0x88E3, GB2312 Code:*/ 0xF1CF, /*==>酎 Row:81 Col:47 */
+    /*0x88E4, GB2312 Code:*/ 0xBFE3, /*==>욍 Row:31 Col:67 */
+    /*0x88E5, GB2312 Code:*/ 0xF1D0, /*==>酒 Row:81 Col:48 */
+    /*0x88E8, GB2312 Code:*/ 0xF1D4, /*==>粥 Row:81 Col:52 */
+    /*0x88F0, GB2312 Code:*/ 0xF1D6, /*==>儁 Row:81 Col:54 */
+    /*0x88F1, GB2312 Code:*/ 0xF1D1, /*==>鑄 Row:81 Col:49 */
+    /*0x88F3, GB2312 Code:*/ 0xC9D1, /*==>� Row:41 Col:49 */
+    /*0x88F4, GB2312 Code:*/ 0xC5E1, /*==>텼 Row:37 Col:65 */
+    /*0x88F8, GB2312 Code:*/ 0xC2E3, /*==>쭙 Row:34 Col:67 */
+    /*0x88F9, GB2312 Code:*/ 0xB9FC, /*==>범 Row:25 Col:92 */
+    /*0x88FC, GB2312 Code:*/ 0xF1D3, /*==>竹 Row:81 Col:51 */
+    /*0x88FE, GB2312 Code:*/ 0xF1D5, /*==>俊 Row:81 Col:53 */
+    /*0x8902, GB2312 Code:*/ 0xB9D3, /*==>밉 Row:25 Col:51 */
+    /*0x890A, GB2312 Code:*/ 0xF1DB, /*==>晙 Row:81 Col:59 */
+    /*0x8910, GB2312 Code:*/ 0xBAD6, /*==>붑 Row:26 Col:54 */
+    /*0x8912, GB2312 Code:*/ 0xB0FD, /*==>괄 Row:16 Col:93 */
+    /*0x8913, GB2312 Code:*/ 0xF1D9, /*==>寯 Row:81 Col:57 */
+    /*0x8919, GB2312 Code:*/ 0xF1D8, /*==>埈 Row:81 Col:56 */
+    /*0x891A, GB2312 Code:*/ 0xF1D2, /*==>駐 Row:81 Col:50 */
+    /*0x891B, GB2312 Code:*/ 0xF1DA, /*==>峻 Row:81 Col:58 */
+    /*0x8921, GB2312 Code:*/ 0xF1D7, /*==>准 Row:81 Col:55 */
+    /*0x8925, GB2312 Code:*/ 0xC8EC, /*==>흠 Row:40 Col:76 */
+    /*0x892A, GB2312 Code:*/ 0xCDCA, /*==>菰 Row:45 Col:42 */
+    /*0x892B, GB2312 Code:*/ 0xF1DD, /*==>浚 Row:81 Col:61 */
+    /*0x8930, GB2312 Code:*/ 0xE5BD, /*==>壤 Row:69 Col:29 */
+    /*0x8934, GB2312 Code:*/ 0xF1DC, /*==>樽 Row:81 Col:60 */
+    /*0x8936, GB2312 Code:*/ 0xF1DE, /*==>準 Row:81 Col:62 */
+    /*0x8941, GB2312 Code:*/ 0xF1DF, /*==>濬 Row:81 Col:63 */
+    /*0x8944, GB2312 Code:*/ 0xCFE5, /*==>躬 Row:47 Col:69 */
+    /*0x895E, GB2312 Code:*/ 0xF4C5, /*==>闡 Row:84 Col:37 */
+    /*0x895F, GB2312 Code:*/ 0xBDF3, /*==>쏢 Row:29 Col:83 */
+    /*0x8966, GB2312 Code:*/ 0xF1E0, /*==>焌 Row:81 Col:64 */
+    /*0x897B, GB2312 Code:*/ 0xF1E1, /*==>畯 Row:81 Col:65 */
+    /*0x897F, GB2312 Code:*/ 0xCEF7, /*==>鮫 Row:46 Col:87 */
+    /*0x8981, GB2312 Code:*/ 0xD2AA, /*==>狼 Row:50 Col:10 */
+    /*0x8983, GB2312 Code:*/ 0xF1FB, /*==>證 Row:81 Col:91 */
+    /*0x8986, GB2312 Code:*/ 0xB8B2, /*==>림 Row:24 Col:18 */
+    /*0x89C1, GB2312 Code:*/ 0xBCFB, /*==>숨 Row:28 Col:91 */
+    /*0x89C2, GB2312 Code:*/ 0xB9DB, /*==>밖 Row:25 Col:59 */
+    /*0x89C4, GB2312 Code:*/ 0xB9E6, /*==>방 Row:25 Col:70 */
+    /*0x89C5, GB2312 Code:*/ 0xC3D9, /*==>쵬 Row:35 Col:57 */
+    /*0x89C6, GB2312 Code:*/ 0xCAD3, /*==>柬 Row:42 Col:51 */
+    /*0x89C7, GB2312 Code:*/ 0xEAE8, /*==>孺 Row:74 Col:72 */
+    /*0x89C8, GB2312 Code:*/ 0xC0C0, /*==>응 Row:32 Col:32 */
+    /*0x89C9, GB2312 Code:*/ 0xBEF5, /*==>얾 Row:30 Col:85 */
+    /*0x89CA, GB2312 Code:*/ 0xEAE9, /*==>宥 Row:74 Col:73 */
+    /*0x89CB, GB2312 Code:*/ 0xEAEA, /*==>幼 Row:74 Col:74 */
+    /*0x89CC, GB2312 Code:*/ 0xEAEB, /*==>幽 Row:74 Col:75 */
+    /*0x89CE, GB2312 Code:*/ 0xEAEC, /*==>庾 Row:74 Col:76 */
+    /*0x89CF, GB2312 Code:*/ 0xEAED, /*==>悠 Row:74 Col:77 */
+    /*0x89D0, GB2312 Code:*/ 0xEAEE, /*==>惟 Row:74 Col:78 */
+    /*0x89D1, GB2312 Code:*/ 0xEAEF, /*==>愈 Row:74 Col:79 */
+    /*0x89D2, GB2312 Code:*/ 0xBDC7, /*==>실 Row:29 Col:39 */
+    /*0x89D6, GB2312 Code:*/ 0xF5FB, /*==>衷 Row:85 Col:91 */
+    /*0x89DA, GB2312 Code:*/ 0xF5FD, /*==>膵 Row:85 Col:93 */
+    /*0x89DC, GB2312 Code:*/ 0xF5FE, /*==>萃 Row:85 Col:94 */
+    /*0x89DE, GB2312 Code:*/ 0xF5FC, /*==>悴 Row:85 Col:92 */
+    /*0x89E3, GB2312 Code:*/ 0xBDE2, /*==>썩 Row:29 Col:66 */
+    /*0x89E5, GB2312 Code:*/ 0xF6A1, /*==>贅 Row:86 Col:01 */
+    /*0x89E6, GB2312 Code:*/ 0xB4A5, /*==>뇰 Row:20 Col:05 */
+    /*0x89EB, GB2312 Code:*/ 0xF6A2, /*==>取 Row:86 Col:02 */
+    /*0x89EF, GB2312 Code:*/ 0xF6A3, /*==>吹 Row:86 Col:03 */
+    /*0x89F3, GB2312 Code:*/ 0xECB2, /*==>泥 Row:76 Col:18 */
+    /*0x8A00, GB2312 Code:*/ 0xD1D4, /*==>喇 Row:49 Col:52 */
+    /*0x8A07, GB2312 Code:*/ 0xD9EA, /*==>楙 Row:57 Col:74 */
+    /*0x8A3E, GB2312 Code:*/ 0xF6A4, /*==>嘴 Row:86 Col:04 */
+    /*0x8A48, GB2312 Code:*/ 0xEEBA, /*==>咀 Row:78 Col:26 */
+    /*0x8A79, GB2312 Code:*/ 0xD5B2, /*==>欒 Row:53 Col:18 */
+    /*0x8A89, GB2312 Code:*/ 0xD3FE, /*==>桃 Row:51 Col:94 */
+    /*0x8A8A, GB2312 Code:*/ 0xCCDC, /*==>涇 Row:44 Col:60 */
+    /*0x8A93, GB2312 Code:*/ 0xCAC4, /*==>珏 Row:42 Col:36 */
+    /*0x8B07, GB2312 Code:*/ 0xE5C0, /*==>揚 Row:69 Col:32 */
+    /*0x8B26, GB2312 Code:*/ 0xF6A5, /*==>娶 Row:86 Col:05 */
+    /*0x8B66, GB2312 Code:*/ 0xBEAF, /*==>쒸 Row:30 Col:15 */
+    /*0x8B6C, GB2312 Code:*/ 0xC6A9, /*==>튜 Row:38 Col:09 */
+    /*0x8BA0, GB2312 Code:*/ 0xDAA5, /*==>蚊 Row:58 Col:05 */
+    /*0x8BA1, GB2312 Code:*/ 0xBCC6, /*==>셕 Row:28 Col:38 */
+    /*0x8BA2, GB2312 Code:*/ 0xB6A9, /*==>땐 Row:22 Col:09 */
+    /*0x8BA3, GB2312 Code:*/ 0xB8BC, /*==>맑 Row:24 Col:28 */
+    /*0x8BA4, GB2312 Code:*/ 0xC8CF, /*==>훰 Row:40 Col:47 */
+    /*0x8BA5, GB2312 Code:*/ 0xBCA5, /*==>샵 Row:28 Col:05 */
+    /*0x8BA6, GB2312 Code:*/ 0xDAA6, /*==>門 Row:58 Col:06 */
+    /*0x8BA7, GB2312 Code:*/ 0xDAA7, /*==>雯 Row:58 Col:07 */
+    /*0x8BA8, GB2312 Code:*/ 0xCCD6, /*==>擎 Row:44 Col:54 */
+    /*0x8BA9, GB2312 Code:*/ 0xC8C3, /*==>횻 Row:40 Col:35 */
+    /*0x8BAA, GB2312 Code:*/ 0xDAA8, /*==>勿 Row:58 Col:08 */
+    /*0x8BAB, GB2312 Code:*/ 0xC6FD, /*==>폿 Row:38 Col:93 */
+    /*0x8BAD, GB2312 Code:*/ 0xD1B5, /*==>祁 Row:49 Col:21 */
+    /*0x8BAE, GB2312 Code:*/ 0xD2E9, /*==>累 Row:50 Col:73 */
+    /*0x8BAF, GB2312 Code:*/ 0xD1B6, /*==>祇 Row:49 Col:22 */
+    /*0x8BB0, GB2312 Code:*/ 0xBCC7, /*==>션 Row:28 Col:39 */
+    /*0x8BB2, GB2312 Code:*/ 0xBDB2, /*==>쉿 Row:29 Col:18 */
+    /*0x8BB3, GB2312 Code:*/ 0xBBE4, /*==>삡 Row:27 Col:68 */
+    /*0x8BB4, GB2312 Code:*/ 0xDAA9, /*==>沕 Row:58 Col:09 */
+    /*0x8BB5, GB2312 Code:*/ 0xDAAA, /*==>物 Row:58 Col:10 */
+    /*0x8BB6, GB2312 Code:*/ 0xD1C8, /*==>騎 Row:49 Col:40 */
+    /*0x8BB7, GB2312 Code:*/ 0xDAAB, /*==>味 Row:58 Col:11 */
+    /*0x8BB8, GB2312 Code:*/ 0xD0ED, /*==>冀 Row:48 Col:77 */
+    /*0x8BB9, GB2312 Code:*/ 0xB6EF, /*==>띰 Row:22 Col:79 */
+    /*0x8BBA, GB2312 Code:*/ 0xC2DB, /*==>쬠 Row:34 Col:59 */
+    /*0x8BBC, GB2312 Code:*/ 0xCBCF, /*==>蓋 Row:43 Col:47 */
+    /*0x8BBD, GB2312 Code:*/ 0xB7ED, /*==>룻 Row:23 Col:77 */
+    /*0x8BBE, GB2312 Code:*/ 0xC9E8, /*==>� Row:41 Col:72 */
+    /*0x8BBF, GB2312 Code:*/ 0xB7C3, /*==>련 Row:23 Col:35 */
+    /*0x8BC0, GB2312 Code:*/ 0xBEF7, /*==>업 Row:30 Col:87 */
+    /*0x8BC1, GB2312 Code:*/ 0xD6A4, /*==>聯 Row:54 Col:04 */
+    /*0x8BC2, GB2312 Code:*/ 0xDAAC, /*==>媚 Row:58 Col:12 */
+    /*0x8BC3, GB2312 Code:*/ 0xDAAD, /*==>尾 Row:58 Col:13 */
+    /*0x8BC4, GB2312 Code:*/ 0xC6C0, /*==>팀 Row:38 Col:32 */
+    /*0x8BC5, GB2312 Code:*/ 0xD7E7, /*==>罹 Row:55 Col:71 */
+    /*0x8BC6, GB2312 Code:*/ 0xCAB6, /*==>街 Row:42 Col:22 */
+    /*0x8BC8, GB2312 Code:*/ 0xD5A9, /*==>絡 Row:53 Col:09 */
+    /*0x8BC9, GB2312 Code:*/ 0xCBDF, /*==>据 Row:43 Col:63 */
+    /*0x8BCA, GB2312 Code:*/ 0xD5EF, /*==>閭 Row:53 Col:79 */
+    /*0x8BCB, GB2312 Code:*/ 0xDAAE, /*==>嵋 Row:58 Col:14 */
+    /*0x8BCC, GB2312 Code:*/ 0xD6DF, /*==>祿 Row:54 Col:63 */
+    /*0x8BCD, GB2312 Code:*/ 0xB4CA, /*==>늦 Row:20 Col:42 */
+    /*0x8BCE, GB2312 Code:*/ 0xDAB0, /*==>微 Row:58 Col:16 */
+    /*0x8BCF, GB2312 Code:*/ 0xDAAF, /*==>彌 Row:58 Col:15 */
+    /*0x8BD1, GB2312 Code:*/ 0xD2EB, /*==>陋 Row:50 Col:75 */
+    /*0x8BD2, GB2312 Code:*/ 0xDAB1, /*==>未 Row:58 Col:17 */
+    /*0x8BD3, GB2312 Code:*/ 0xDAB2, /*==>梶 Row:58 Col:18 */
+    /*0x8BD4, GB2312 Code:*/ 0xDAB3, /*==>楣 Row:58 Col:19 */
+    /*0x8BD5, GB2312 Code:*/ 0xCAD4, /*==>桿 Row:42 Col:52 */
+    /*0x8BD6, GB2312 Code:*/ 0xDAB4, /*==>渼 Row:58 Col:20 */
+    /*0x8BD7, GB2312 Code:*/ 0xCAAB, /*==>家 Row:42 Col:11 */
+    /*0x8BD8, GB2312 Code:*/ 0xDAB5, /*==>湄 Row:58 Col:21 */
+    /*0x8BD9, GB2312 Code:*/ 0xDAB6, /*==>眉 Row:58 Col:22 */
+    /*0x8BDA, GB2312 Code:*/ 0xB3CF, /*==>넒 Row:19 Col:47 */
+    /*0x8BDB, GB2312 Code:*/ 0xD6EF, /*==>牢 Row:54 Col:79 */
+    /*0x8BDC, GB2312 Code:*/ 0xDAB7, /*==>米 Row:58 Col:23 */
+    /*0x8BDD, GB2312 Code:*/ 0xBBB0, /*==>뺐 Row:27 Col:16 */
+    /*0x8BDE, GB2312 Code:*/ 0xB5AE, /*==>뎌 Row:21 Col:14 */
+    /*0x8BDF, GB2312 Code:*/ 0xDAB8, /*==>美 Row:58 Col:24 */
+    /*0x8BE0, GB2312 Code:*/ 0xDAB9, /*==>薇 Row:58 Col:25 */
+    /*0x8BE1, GB2312 Code:*/ 0xB9EE, /*==>뱃 Row:25 Col:78 */
+    /*0x8BE2, GB2312 Code:*/ 0xD1AF, /*==>璂 Row:49 Col:15 */
+    /*0x8BE3, GB2312 Code:*/ 0xD2E8, /*==>漏 Row:50 Col:72 */
+    /*0x8BE4, GB2312 Code:*/ 0xDABA, /*==>謎 Row:58 Col:26 */
+    /*0x8BE5, GB2312 Code:*/ 0xB8C3, /*==>맡 Row:24 Col:35 */
+    /*0x8BE6, GB2312 Code:*/ 0xCFEA, /*==>圈 Row:47 Col:74 */
+    /*0x8BE7, GB2312 Code:*/ 0xB2EF, /*==>뀐 Row:18 Col:79 */
+    /*0x8BE8, GB2312 Code:*/ 0xDABB, /*==>迷 Row:58 Col:27 */
+    /*0x8BE9, GB2312 Code:*/ 0xDABC, /*==>靡 Row:58 Col:28 */
+    /*0x8BEB, GB2312 Code:*/ 0xBDEB, /*==>쎈 Row:29 Col:75 */
+    /*0x8BEC, GB2312 Code:*/ 0xCEDC, /*==>紘 Row:46 Col:60 */
+    /*0x8BED, GB2312 Code:*/ 0xD3EF, /*==>刀 Row:51 Col:79 */
+    /*0x8BEE, GB2312 Code:*/ 0xDABD, /*==>黴 Row:58 Col:29 */
+    /*0x8BEF, GB2312 Code:*/ 0xCEF3, /*==>轎 Row:46 Col:83 */
+    /*0x8BF0, GB2312 Code:*/ 0xDABE, /*==>岷 Row:58 Col:30 */
+    /*0x8BF1, GB2312 Code:*/ 0xD3D5, /*==>撞 Row:51 Col:53 */
+    /*0x8BF2, GB2312 Code:*/ 0xBBE5, /*==>삣 Row:27 Col:69 */
+    /*0x8BF3, GB2312 Code:*/ 0xDABF, /*==>悶 Row:58 Col:31 */
+    /*0x8BF4, GB2312 Code:*/ 0xCBB5, /*==>綱 Row:43 Col:21 */
+    /*0x8BF5, GB2312 Code:*/ 0xCBD0, /*==>豈 Row:43 Col:48 */
+    /*0x8BF6, GB2312 Code:*/ 0xDAC0, /*==>愍 Row:58 Col:32 */
+    /*0x8BF7, GB2312 Code:*/ 0xC7EB, /*==>헝 Row:39 Col:75 */
+    /*0x8BF8, GB2312 Code:*/ 0xD6EE, /*==>瀨 Row:54 Col:78 */
+    /*0x8BF9, GB2312 Code:*/ 0xDAC1, /*==>憫 Row:58 Col:33 */
+    /*0x8BFA, GB2312 Code:*/ 0xC5B5, /*==>킵 Row:37 Col:21 */
+    /*0x8BFB, GB2312 Code:*/ 0xB6C1, /*==>뗍 Row:22 Col:33 */
+    /*0x8BFC, GB2312 Code:*/ 0xDAC2, /*==>敏 Row:58 Col:34 */
+    /*0x8BFD, GB2312 Code:*/ 0xB7CC, /*==>롑 Row:23 Col:44 */
+    /*0x8BFE, GB2312 Code:*/ 0xBFCE, /*==>왁 Row:31 Col:46 */
+    /*0x8BFF, GB2312 Code:*/ 0xDAC3, /*==>旻 Row:58 Col:35 */
+    /*0x8C00, GB2312 Code:*/ 0xDAC4, /*==>旼 Row:58 Col:36 */
+    /*0x8C01, GB2312 Code:*/ 0xCBAD, /*==>强 Row:43 Col:13 */
+    /*0x8C02, GB2312 Code:*/ 0xDAC5, /*==>民 Row:58 Col:37 */
+    /*0x8C03, GB2312 Code:*/ 0xB5F7, /*==>딧 Row:21 Col:87 */
+    /*0x8C04, GB2312 Code:*/ 0xDAC6, /*==>泯 Row:58 Col:38 */
+    /*0x8C05, GB2312 Code:*/ 0xC1C2, /*==>좌 Row:33 Col:34 */
+    /*0x8C06, GB2312 Code:*/ 0xD7BB, /*==>瘤 Row:55 Col:27 */
+    /*0x8C07, GB2312 Code:*/ 0xDAC7, /*==>玟 Row:58 Col:39 */
+    /*0x8C08, GB2312 Code:*/ 0xCCB8, /*==>見 Row:44 Col:24 */
+    /*0x8C0A, GB2312 Code:*/ 0xD2EA, /*==>縷 Row:50 Col:74 */
+    /*0x8C0B, GB2312 Code:*/ 0xC4B1, /*==>캇 Row:36 Col:17 */
+    /*0x8C0C, GB2312 Code:*/ 0xDAC8, /*==>珉 Row:58 Col:40 */
+    /*0x8C0D, GB2312 Code:*/ 0xB5FD, /*==>딴 Row:21 Col:93 */
+    /*0x8C0E, GB2312 Code:*/ 0xBBD1, /*==>뿌 Row:27 Col:49 */
+    /*0x8C0F, GB2312 Code:*/ 0xDAC9, /*==>緡 Row:58 Col:41 */
+    /*0x8C10, GB2312 Code:*/ 0xD0B3, /*==>均 Row:48 Col:19 */
+    /*0x8C11, GB2312 Code:*/ 0xDACA, /*==>閔 Row:58 Col:42 */
+    /*0x8C12, GB2312 Code:*/ 0xDACB, /*==>密 Row:58 Col:43 */
+    /*0x8C13, GB2312 Code:*/ 0xCEBD, /*==>館 Row:46 Col:29 */
+    /*0x8C14, GB2312 Code:*/ 0xDACC, /*==>蜜 Row:58 Col:44 */
+    /*0x8C15, GB2312 Code:*/ 0xDACD, /*==>謐 Row:58 Col:45 */
+    /*0x8C16, GB2312 Code:*/ 0xDACE, /*==>剝 Row:58 Col:46 */
+    /*0x8C17, GB2312 Code:*/ 0xB2F7, /*==>끊 Row:18 Col:87 */
+    /*0x8C18, GB2312 Code:*/ 0xDAD1, /*==>搏 Row:58 Col:49 */
+    /*0x8C19, GB2312 Code:*/ 0xDACF, /*==>博 Row:58 Col:47 */
+    /*0x8C1A, GB2312 Code:*/ 0xD1E8, /*==>酪 Row:49 Col:72 */
+    /*0x8C1B, GB2312 Code:*/ 0xDAD0, /*==>拍 Row:58 Col:48 */
+    /*0x8C1C, GB2312 Code:*/ 0xC3D5, /*==>촹 Row:35 Col:53 */
+    /*0x8C1D, GB2312 Code:*/ 0xDAD2, /*==>撲 Row:58 Col:50 */
+    /*0x8C1F, GB2312 Code:*/ 0xDAD3, /*==>朴 Row:58 Col:51 */
+    /*0x8C20, GB2312 Code:*/ 0xDAD4, /*==>樸 Row:58 Col:52 */
+    /*0x8C21, GB2312 Code:*/ 0xDAD5, /*==>泊 Row:58 Col:53 */
+    /*0x8C22, GB2312 Code:*/ 0xD0BB, /*==>剋 Row:48 Col:27 */
+    /*0x8C23, GB2312 Code:*/ 0xD2A5, /*==>囊 Row:50 Col:05 */
+    /*0x8C24, GB2312 Code:*/ 0xB0F9, /*==>곶 Row:16 Col:89 */
+    /*0x8C25, GB2312 Code:*/ 0xDAD6, /*==>珀 Row:58 Col:54 */
+    /*0x8C26, GB2312 Code:*/ 0xC7AB, /*==>푹 Row:39 Col:11 */
+    /*0x8C27, GB2312 Code:*/ 0xDAD7, /*==>璞 Row:58 Col:55 */
+    /*0x8C28, GB2312 Code:*/ 0xBDF7, /*==>쏴 Row:29 Col:87 */
+    /*0x8C29, GB2312 Code:*/ 0xC3A1, /*==>찼 Row:35 Col:01 */
+    /*0x8C2A, GB2312 Code:*/ 0xDAD8, /*==>箔 Row:58 Col:56 */
+    /*0x8C2B, GB2312 Code:*/ 0xDAD9, /*==>粕 Row:58 Col:57 */
+    /*0x8C2C, GB2312 Code:*/ 0xC3FD, /*==>츳 Row:35 Col:93 */
+    /*0x8C2D, GB2312 Code:*/ 0xCCB7, /*==>肩 Row:44 Col:23 */
+    /*0x8C2E, GB2312 Code:*/ 0xDADA, /*==>縛 Row:58 Col:58 */
+    /*0x8C2F, GB2312 Code:*/ 0xDADB, /*==>膊 Row:58 Col:59 */
+    /*0x8C30, GB2312 Code:*/ 0xC0BE, /*==>읍 Row:32 Col:30 */
+    /*0x8C31, GB2312 Code:*/ 0xC6D7, /*==>팼 Row:38 Col:55 */
+    /*0x8C32, GB2312 Code:*/ 0xDADC, /*==>舶 Row:58 Col:60 */
+    /*0x8C33, GB2312 Code:*/ 0xDADD, /*==>薄 Row:58 Col:61 */
+    /*0x8C34, GB2312 Code:*/ 0xC7B4, /*==>풔 Row:39 Col:20 */
+    /*0x8C35, GB2312 Code:*/ 0xDADE, /*==>迫 Row:58 Col:62 */
+    /*0x8C36, GB2312 Code:*/ 0xDADF, /*==>雹 Row:58 Col:63 */
+    /*0x8C37, GB2312 Code:*/ 0xB9C8, /*==>믄 Row:25 Col:40 */
+    /*0x8C41, GB2312 Code:*/ 0xBBED, /*==>삵 Row:27 Col:77 */
+    /*0x8C46, GB2312 Code:*/ 0xB6B9, /*==>떴 Row:22 Col:25 */
+    /*0x8C47, GB2312 Code:*/ 0xF4F8, /*==>初 Row:84 Col:88 */
+    /*0x8C49, GB2312 Code:*/ 0xF4F9, /*==>剿 Row:84 Col:89 */
+    /*0x8C4C, GB2312 Code:*/ 0xCDE3, /*==>滾 Row:45 Col:67 */
+    /*0x8C55, GB2312 Code:*/ 0xF5B9, /*==>蜀 Row:85 Col:25 */
+    /*0x8C5A, GB2312 Code:*/ 0xEBE0, /*==>乙 Row:75 Col:64 */
+    /*0x8C61, GB2312 Code:*/ 0xCFF3, /*==>蹶 Row:47 Col:83 */
+    /*0x8C62, GB2312 Code:*/ 0xBBBF, /*==>뼁 Row:27 Col:31 */
+    /*0x8C6A, GB2312 Code:*/ 0xBAC0, /*==>봉 Row:26 Col:32 */
+    /*0x8C6B, GB2312 Code:*/ 0xD4A5, /*==>滔 Row:52 Col:05 */
+    /*0x8C73, GB2312 Code:*/ 0xE1D9, /*==>續 Row:65 Col:57 */
+    /*0x8C78, GB2312 Code:*/ 0xF5F4, /*==>朮 Row:85 Col:84 */
+    /*0x8C79, GB2312 Code:*/ 0xB1AA, /*==>괭 Row:17 Col:10 */
+    /*0x8C7A, GB2312 Code:*/ 0xB2F2, /*==>뀝 Row:18 Col:82 */
+    /*0x8C82, GB2312 Code:*/ 0xF5F5, /*==>黜 Row:85 Col:85 */
+    /*0x8C85, GB2312 Code:*/ 0xF5F7, /*==>忠 Row:85 Col:87 */
+    /*0x8C89, GB2312 Code:*/ 0xBAD1, /*==>붇 Row:26 Col:49 */
+    /*0x8C8A, GB2312 Code:*/ 0xF5F6, /*==>充 Row:85 Col:86 */
+    /*0x8C8C, GB2312 Code:*/ 0xC3B2, /*==>챵 Row:35 Col:18 */
+    /*0x8C94, GB2312 Code:*/ 0xF5F9, /*==>蟲 Row:85 Col:89 */
+    /*0x8C98, GB2312 Code:*/ 0xF5F8, /*==>沖 Row:85 Col:88 */
+    /*0x8D1D, GB2312 Code:*/ 0xB1B4, /*==>굔 Row:17 Col:20 */
+    /*0x8D1E, GB2312 Code:*/ 0xD5EA, /*==>櫚 Row:53 Col:74 */
+    /*0x8D1F, GB2312 Code:*/ 0xB8BA, /*==>맏 Row:24 Col:26 */
+    /*0x8D21, GB2312 Code:*/ 0xB9B1, /*==>묽 Row:25 Col:17 */
+    /*0x8D22, GB2312 Code:*/ 0xB2C6, /*==>꼿 Row:18 Col:38 */
+    /*0x8D23, GB2312 Code:*/ 0xD4F0, /*==>得 Row:52 Col:80 */
+    /*0x8D24, GB2312 Code:*/ 0xCFCD, /*==>鳩 Row:47 Col:45 */
+    /*0x8D25, GB2312 Code:*/ 0xB0DC, /*==>겨 Row:16 Col:60 */
+    /*0x8D26, GB2312 Code:*/ 0xD5CB, /*==>瑯 Row:53 Col:43 */
+    /*0x8D27, GB2312 Code:*/ 0xBBF5, /*==>새 Row:27 Col:85 */
+    /*0x8D28, GB2312 Code:*/ 0xD6CA, /*==>醴 Row:54 Col:42 */
+    /*0x8D29, GB2312 Code:*/ 0xB7B7, /*==>렁 Row:23 Col:23 */
+    /*0x8D2A, GB2312 Code:*/ 0xCCB0, /*==>隔 Row:44 Col:16 */
+    /*0x8D2B, GB2312 Code:*/ 0xC6B6, /*==>틋 Row:38 Col:22 */
+    /*0x8D2C, GB2312 Code:*/ 0xB1E1, /*==>긔 Row:17 Col:65 */
+    /*0x8D2D, GB2312 Code:*/ 0xB9BA, /*==>뭔 Row:25 Col:26 */
+    /*0x8D2E, GB2312 Code:*/ 0xD6FC, /*==>瞭 Row:54 Col:92 */
+    /*0x8D2F, GB2312 Code:*/ 0xB9E1, /*==>밞 Row:25 Col:65 */
+    /*0x8D30, GB2312 Code:*/ 0xB7A1, /*==>래 Row:23 Col:01 */
+    /*0x8D31, GB2312 Code:*/ 0xBCFA, /*==>술 Row:28 Col:90 */
+    /*0x8D32, GB2312 Code:*/ 0xEADA, /*==>蝟 Row:74 Col:58 */
+    /*0x8D33, GB2312 Code:*/ 0xEADB, /*==>衛 Row:74 Col:59 */
+    /*0x8D34, GB2312 Code:*/ 0xCCF9, /*==>季 Row:44 Col:89 */
+    /*0x8D35, GB2312 Code:*/ 0xB9F3, /*==>뱍 Row:25 Col:83 */
+    /*0x8D36, GB2312 Code:*/ 0xEADC, /*==>褘 Row:74 Col:60 */
+    /*0x8D37, GB2312 Code:*/ 0xB4FB, /*==>덞 Row:20 Col:91 */
+    /*0x8D38, GB2312 Code:*/ 0xC3B3, /*==>처 Row:35 Col:19 */
+    /*0x8D39, GB2312 Code:*/ 0xB7D1, /*==>롤 Row:23 Col:49 */
+    /*0x8D3A, GB2312 Code:*/ 0xBAD8, /*==>붕 Row:26 Col:56 */
+    /*0x8D3B, GB2312 Code:*/ 0xEADD, /*==>謂 Row:74 Col:61 */
+    /*0x8D3C, GB2312 Code:*/ 0xD4F4, /*==>登 Row:52 Col:84 */
+    /*0x8D3D, GB2312 Code:*/ 0xEADE, /*==>違 Row:74 Col:62 */
+    /*0x8D3E, GB2312 Code:*/ 0xBCD6, /*==>솔 Row:28 Col:54 */
+    /*0x8D3F, GB2312 Code:*/ 0xBBDF, /*==>삐 Row:27 Col:63 */
+    /*0x8D40, GB2312 Code:*/ 0xEADF, /*==>韋 Row:74 Col:63 */
+    /*0x8D41, GB2312 Code:*/ 0xC1DE, /*==>줏 Row:33 Col:62 */
+    /*0x8D42, GB2312 Code:*/ 0xC2B8, /*==>쨍 Row:34 Col:24 */
+    /*0x8D43, GB2312 Code:*/ 0xD4DF, /*==>兜 Row:52 Col:63 */
+    /*0x8D44, GB2312 Code:*/ 0xD7CA, /*==>栗 Row:55 Col:42 */
+    /*0x8D45, GB2312 Code:*/ 0xEAE0, /*==>魏 Row:74 Col:64 */
+    /*0x8D46, GB2312 Code:*/ 0xEAE1, /*==>乳 Row:74 Col:65 */
+    /*0x8D47, GB2312 Code:*/ 0xEAE4, /*==>兪 Row:74 Col:68 */
+    /*0x8D48, GB2312 Code:*/ 0xEAE2, /*==>侑 Row:74 Col:66 */
+    /*0x8D49, GB2312 Code:*/ 0xEAE3, /*==>儒 Row:74 Col:67 */
+    /*0x8D4A, GB2312 Code:*/ 0xC9DE, /*==>� Row:41 Col:62 */
+    /*0x8D4B, GB2312 Code:*/ 0xB8B3, /*==>립 Row:24 Col:19 */
+    /*0x8D4C, GB2312 Code:*/ 0xB6C4, /*==>뗑 Row:22 Col:36 */
+    /*0x8D4D, GB2312 Code:*/ 0xEAE5, /*==>劉 Row:74 Col:69 */
+    /*0x8D4E, GB2312 Code:*/ 0xCAEA, /*==>鞨 Row:42 Col:74 */
+    /*0x8D4F, GB2312 Code:*/ 0xC9CD, /*==>� Row:41 Col:45 */
+    /*0x8D50, GB2312 Code:*/ 0xB4CD, /*==>늰 Row:20 Col:45 */
+    /*0x8D53, GB2312 Code:*/ 0xE2D9, /*==>熟 Row:66 Col:57 */
+    /*0x8D54, GB2312 Code:*/ 0xC5E2, /*==>톄 Row:37 Col:66 */
+    /*0x8D55, GB2312 Code:*/ 0xEAE6, /*==>唯 Row:74 Col:70 */
+    /*0x8D56, GB2312 Code:*/ 0xC0B5, /*==>윳 Row:32 Col:21 */
+    /*0x8D58, GB2312 Code:*/ 0xD7B8, /*==>琉 Row:55 Col:24 */
+    /*0x8D59, GB2312 Code:*/ 0xEAE7, /*==>喩 Row:74 Col:71 */
+    /*0x8D5A, GB2312 Code:*/ 0xD7AC, /*==>縷 Row:55 Col:12 */
+    /*0x8D5B, GB2312 Code:*/ 0xC8FC, /*==>힙 Row:40 Col:92 */
+    /*0x8D5C, GB2312 Code:*/ 0xD8D3, /*==>芒 Row:56 Col:51 */
+    /*0x8D5D, GB2312 Code:*/ 0xD8CD, /*==>妄 Row:56 Col:45 */
+    /*0x8D5E, GB2312 Code:*/ 0xD4DE, /*==>銅 Row:52 Col:62 */
+    /*0x8D60, GB2312 Code:*/ 0xD4F9, /*==>騰 Row:52 Col:89 */
+    /*0x8D61, GB2312 Code:*/ 0xC9C4, /*==>� Row:41 Col:36 */
+    /*0x8D62, GB2312 Code:*/ 0xD3AE, /*==>端 Row:51 Col:14 */
+    /*0x8D63, GB2312 Code:*/ 0xB8D3, /*==>머 Row:24 Col:51 */
+    /*0x8D64, GB2312 Code:*/ 0xB3E0, /*==>녀 Row:19 Col:64 */
+    /*0x8D66, GB2312 Code:*/ 0xC9E2, /*==>� Row:41 Col:66 */
+    /*0x8D67, GB2312 Code:*/ 0xF4F6, /*==>遞 Row:84 Col:86 */
+    /*0x8D6B, GB2312 Code:*/ 0xBAD5, /*==>붐 Row:26 Col:53 */
+    /*0x8D6D, GB2312 Code:*/ 0xF4F7, /*==>體 Row:84 Col:87 */
+    /*0x8D70, GB2312 Code:*/ 0xD7DF, /*==>浬 Row:55 Col:63 */
+    /*0x8D73, GB2312 Code:*/ 0xF4F1, /*==>涕 Row:84 Col:81 */
+    /*0x8D74, GB2312 Code:*/ 0xB8B0, /*==>린 Row:24 Col:16 */
+    /*0x8D75, GB2312 Code:*/ 0xD5D4, /*==>略 Row:53 Col:52 */
+    /*0x8D76, GB2312 Code:*/ 0xB8CF, /*==>먀 Row:24 Col:47 */
+    /*0x8D77, GB2312 Code:*/ 0xC6F0, /*==>폅 Row:38 Col:80 */
+    /*0x8D81, GB2312 Code:*/ 0xB3C3, /*==>냉 Row:19 Col:35 */
+    /*0x8D84, GB2312 Code:*/ 0xF4F2, /*==>滯 Row:84 Col:82 */
+    /*0x8D85, GB2312 Code:*/ 0xB3AC, /*==>낚 Row:19 Col:12 */
+    /*0x8D8A, GB2312 Code:*/ 0xD4BD, /*==>督 Row:52 Col:29 */
+    /*0x8D8B, GB2312 Code:*/ 0xC7F7, /*==>혈 Row:39 Col:87 */
+    /*0x8D91, GB2312 Code:*/ 0xF4F4, /*==>諦 Row:84 Col:84 */
+    /*0x8D94, GB2312 Code:*/ 0xF4F3, /*==>締 Row:84 Col:83 */
+    /*0x8D9F, GB2312 Code:*/ 0xCCCB, /*==>傾 Row:44 Col:43 */
+    /*0x8DA3, GB2312 Code:*/ 0xC8A4, /*==>혹 Row:40 Col:04 */
+    /*0x8DB1, GB2312 Code:*/ 0xF4F5, /*==>逮 Row:84 Col:85 */
+    /*0x8DB3, GB2312 Code:*/ 0xD7E3, /*==>璃 Row:55 Col:67 */
+    /*0x8DB4, GB2312 Code:*/ 0xC5BF, /*==>탓 Row:37 Col:31 */
+    /*0x8DB5, GB2312 Code:*/ 0xF5C0, /*==>塚 Row:85 Col:32 */
+    /*0x8DB8, GB2312 Code:*/ 0xF5BB, /*==>寸 Row:85 Col:27 */
+    /*0x8DBA, GB2312 Code:*/ 0xF5C3, /*==>憁 Row:85 Col:35 */
+    /*0x8DBC, GB2312 Code:*/ 0xF5C2, /*==>悤 Row:85 Col:34 */
+    /*0x8DBE, GB2312 Code:*/ 0xD6BA, /*==>嶺 Row:54 Col:26 */
+    /*0x8DBF, GB2312 Code:*/ 0xF5C1, /*==>寵 Row:85 Col:33 */
+    /*0x8DC3, GB2312 Code:*/ 0xD4BE, /*==>禿 Row:52 Col:30 */
+    /*0x8DC4, GB2312 Code:*/ 0xF5C4, /*==>摠 Row:85 Col:36 */
+    /*0x8DC6, GB2312 Code:*/ 0xF5CC, /*==>最 Row:85 Col:44 */
+    /*0x8DCB, GB2312 Code:*/ 0xB0CF, /*==>겅 Row:16 Col:47 */
+    /*0x8DCC, GB2312 Code:*/ 0xB5F8, /*==>딨 Row:21 Col:88 */
+    /*0x8DCE, GB2312 Code:*/ 0xF5C9, /*==>撮 Row:85 Col:41 */
+    /*0x8DCF, GB2312 Code:*/ 0xF5CA, /*==>催 Row:85 Col:42 */
+    /*0x8DD1, GB2312 Code:*/ 0xC5DC, /*==>텝 Row:37 Col:60 */
+    /*0x8DD6, GB2312 Code:*/ 0xF5C5, /*==>總 Row:85 Col:37 */
+    /*0x8DD7, GB2312 Code:*/ 0xF5C6, /*==>聰 Row:85 Col:38 */
+    /*0x8DDA, GB2312 Code:*/ 0xF5C7, /*==>蔥 Row:85 Col:39 */
+    /*0x8DDB, GB2312 Code:*/ 0xF5CB, /*==>崔 Row:85 Col:43 */
+    /*0x8DDD, GB2312 Code:*/ 0xBEE0, /*==>약 Row:30 Col:64 */
+    /*0x8DDE, GB2312 Code:*/ 0xF5C8, /*==>銃 Row:85 Col:40 */
+    /*0x8DDF, GB2312 Code:*/ 0xB8FA, /*==>뫄 Row:24 Col:90 */
+    /*0x8DE3, GB2312 Code:*/ 0xF5D0, /*==>椎 Row:85 Col:48 */
+    /*0x8DE4, GB2312 Code:*/ 0xF5D3, /*==>湫 Row:85 Col:51 */
+    /*0x8DE8, GB2312 Code:*/ 0xBFE7, /*==>욜 Row:31 Col:71 */
+    /*0x8DEA, GB2312 Code:*/ 0xB9F2, /*==>뱌 Row:25 Col:82 */
+    /*0x8DEB, GB2312 Code:*/ 0xF5BC, /*==>忖 Row:85 Col:28 */
+    /*0x8DEC, GB2312 Code:*/ 0xF5CD, /*==>墜 Row:85 Col:45 */
+    /*0x8DEF, GB2312 Code:*/ 0xC2B7, /*==>쨌 Row:34 Col:23 */
+    /*0x8DF3, GB2312 Code:*/ 0xCCF8, /*==>契 Row:44 Col:88 */
+    /*0x8DF5, GB2312 Code:*/ 0xBCF9, /*==>숟 Row:28 Col:89 */
+    /*0x8DF7, GB2312 Code:*/ 0xF5CE, /*==>抽 Row:85 Col:46 */
+    /*0x8DF8, GB2312 Code:*/ 0xF5CF, /*==>推 Row:85 Col:47 */
+    /*0x8DF9, GB2312 Code:*/ 0xF5D1, /*==>楸 Row:85 Col:49 */
+    /*0x8DFA, GB2312 Code:*/ 0xB6E5, /*==>뜹 Row:22 Col:69 */
+    /*0x8DFB, GB2312 Code:*/ 0xF5D2, /*==>樞 Row:85 Col:50 */
+    /*0x8DFD, GB2312 Code:*/ 0xF5D5, /*==>秋 Row:85 Col:53 */
+    /*0x8E05, GB2312 Code:*/ 0xF5BD, /*==>村 Row:85 Col:29 */
+    /*0x8E09, GB2312 Code:*/ 0xF5D4, /*==>皺 Row:85 Col:52 */
+    /*0x8E0A, GB2312 Code:*/ 0xD3BB, /*==>坍 Row:51 Col:27 */
+    /*0x8E0C, GB2312 Code:*/ 0xB3EC, /*==>녹 Row:19 Col:76 */
+    /*0x8E0F, GB2312 Code:*/ 0xCCA4, /*==>劫 Row:44 Col:04 */
+    /*0x8E14, GB2312 Code:*/ 0xF5D6, /*==>芻 Row:85 Col:54 */
+    /*0x8E1D, GB2312 Code:*/ 0xF5D7, /*==>萩 Row:85 Col:55 */
+    /*0x8E1E, GB2312 Code:*/ 0xBEE1, /*==>얀 Row:30 Col:65 */
+    /*0x8E1F, GB2312 Code:*/ 0xF5D8, /*==>諏 Row:85 Col:56 */
+    /*0x8E22, GB2312 Code:*/ 0xCCDF, /*==>璟 Row:44 Col:63 */
+    /*0x8E23, GB2312 Code:*/ 0xF5DB, /*==>鄒 Row:85 Col:59 */
+    /*0x8E29, GB2312 Code:*/ 0xB2C8, /*==>꽂 Row:18 Col:40 */
+    /*0x8E2A, GB2312 Code:*/ 0xD7D9, /*==>吏 Row:55 Col:57 */
+    /*0x8E2C, GB2312 Code:*/ 0xF5D9, /*==>趨 Row:85 Col:57 */
+    /*0x8E2E, GB2312 Code:*/ 0xF5DA, /*==>追 Row:85 Col:58 */
+    /*0x8E2F, GB2312 Code:*/ 0xF5DC, /*==>酋 Row:85 Col:60 */
+    /*0x8E31, GB2312 Code:*/ 0xF5E2, /*==>騶 Row:85 Col:66 */
+    /*0x8E35, GB2312 Code:*/ 0xF5E0, /*==>鎚 Row:85 Col:64 */
+    /*0x8E39, GB2312 Code:*/ 0xF5DF, /*==>錘 Row:85 Col:63 */
+    /*0x8E3A, GB2312 Code:*/ 0xF5DD, /*==>醜 Row:85 Col:61 */
+    /*0x8E3D, GB2312 Code:*/ 0xF5E1, /*==>雛 Row:85 Col:65 */
+    /*0x8E40, GB2312 Code:*/ 0xF5DE, /*==>錐 Row:85 Col:62 */
+    /*0x8E41, GB2312 Code:*/ 0xF5E4, /*==>丑 Row:85 Col:68 */
+    /*0x8E42, GB2312 Code:*/ 0xF5E5, /*==>畜 Row:85 Col:69 */
+    /*0x8E44, GB2312 Code:*/ 0xCCE3, /*==>硬 Row:44 Col:67 */
+    /*0x8E47, GB2312 Code:*/ 0xE5BF, /*==>恙 Row:69 Col:31 */
+    /*0x8E48, GB2312 Code:*/ 0xB5B8, /*==>돋 Row:21 Col:24 */
+    /*0x8E49, GB2312 Code:*/ 0xF5E3, /*==>鰍 Row:85 Col:67 */
+    /*0x8E4A, GB2312 Code:*/ 0xF5E8, /*==>筑 Row:85 Col:72 */
+    /*0x8E4B, GB2312 Code:*/ 0xCCA3, /*==>黔 Row:44 Col:03 */
+    /*0x8E51, GB2312 Code:*/ 0xF5E6, /*==>祝 Row:85 Col:70 */
+    /*0x8E52, GB2312 Code:*/ 0xF5E7, /*==>竺 Row:85 Col:71 */
+    /*0x8E59, GB2312 Code:*/ 0xF5BE, /*==>邨 Row:85 Col:30 */
+    /*0x8E66, GB2312 Code:*/ 0xB1C4, /*==>궂 Row:17 Col:36 */
+    /*0x8E69, GB2312 Code:*/ 0xF5BF, /*==>叢 Row:85 Col:31 */
+    /*0x8E6C, GB2312 Code:*/ 0xB5C5, /*==>돼 Row:21 Col:37 */
+    /*0x8E6D, GB2312 Code:*/ 0xB2E4, /*==>꿜 Row:18 Col:68 */
+    /*0x8E6F, GB2312 Code:*/ 0xF5EC, /*==>蹙 Row:85 Col:76 */
+    /*0x8E70, GB2312 Code:*/ 0xF5E9, /*==>築 Row:85 Col:73 */
+    /*0x8E72, GB2312 Code:*/ 0xB6D7, /*==>뚱 Row:22 Col:55 */
+    /*0x8E74, GB2312 Code:*/ 0xF5ED, /*==>蹴 Row:85 Col:77 */
+    /*0x8E76, GB2312 Code:*/ 0xF5EA, /*==>縮 Row:85 Col:74 */
+    /*0x8E7C, GB2312 Code:*/ 0xF5EB, /*==>蓄 Row:85 Col:75 */
+    /*0x8E7F, GB2312 Code:*/ 0xB4DA, /*==>닥 Row:20 Col:58 */
+    /*0x8E81, GB2312 Code:*/ 0xD4EA, /*==>屯 Row:52 Col:74 */
+    /*0x8E85, GB2312 Code:*/ 0xF5EE, /*==>軸 Row:85 Col:78 */
+    /*0x8E87, GB2312 Code:*/ 0xB3F9, /*==>놨 Row:19 Col:89 */
+    /*0x8E8F, GB2312 Code:*/ 0xF5EF, /*==>逐 Row:85 Col:79 */
+    /*0x8E90, GB2312 Code:*/ 0xF5F1, /*==>椿 Row:85 Col:81 */
+    /*0x8E94, GB2312 Code:*/ 0xF5F0, /*==>春 Row:85 Col:80 */
+    /*0x8E9C, GB2312 Code:*/ 0xF5F2, /*==>瑃 Row:85 Col:82 */
+    /*0x8E9E, GB2312 Code:*/ 0xF5F3, /*==>出 Row:85 Col:83 */
+    /*0x8EAB, GB2312 Code:*/ 0xC9ED, /*==>� Row:41 Col:77 */
+    /*0x8EAC, GB2312 Code:*/ 0xB9AA, /*==>묫 Row:25 Col:10 */
+    /*0x8EAF, GB2312 Code:*/ 0xC7FB, /*==>혔 Row:39 Col:91 */
+    /*0x8EB2, GB2312 Code:*/ 0xB6E3, /*==>뜰 Row:22 Col:67 */
+    /*0x8EBA, GB2312 Code:*/ 0xCCC9, /*==>俓 Row:44 Col:41 */
+    /*0x8ECE, GB2312 Code:*/ 0xEAA6, /*==>鬱 Row:74 Col:06 */
+    /*0x8F66, GB2312 Code:*/ 0xB3B5, /*==>났 Row:19 Col:21 */
+    /*0x8F67, GB2312 Code:*/ 0xD4FE, /*==>羅 Row:52 Col:94 */
+    /*0x8F68, GB2312 Code:*/ 0xB9EC, /*==>뱀 Row:25 Col:76 */
+    /*0x8F69, GB2312 Code:*/ 0xD0F9, /*==>己 Row:48 Col:89 */
+    /*0x8F6B, GB2312 Code:*/ 0xE9ED, /*==>勖 Row:73 Col:77 */
+    /*0x8F6C, GB2312 Code:*/ 0xD7AA, /*==>瘻 Row:55 Col:10 */
+    /*0x8F6D, GB2312 Code:*/ 0xE9EE, /*==>彧 Row:73 Col:78 */
+    /*0x8F6E, GB2312 Code:*/ 0xC2D6, /*==>쫴 Row:34 Col:54 */
+    /*0x8F6F, GB2312 Code:*/ 0xC8ED, /*==>흡 Row:40 Col:77 */
+    /*0x8F70, GB2312 Code:*/ 0xBAE4, /*==>뷰 Row:26 Col:68 */
+    /*0x8F71, GB2312 Code:*/ 0xE9EF, /*==>旭 Row:73 Col:79 */
+    /*0x8F72, GB2312 Code:*/ 0xE9F0, /*==>昱 Row:73 Col:80 */
+    /*0x8F73, GB2312 Code:*/ 0xE9F1, /*==>栯 Row:73 Col:81 */
+    /*0x8F74, GB2312 Code:*/ 0xD6E1, /*==>菉 Row:54 Col:65 */
+    /*0x8F75, GB2312 Code:*/ 0xE9F2, /*==>煜 Row:73 Col:82 */
+    /*0x8F76, GB2312 Code:*/ 0xE9F3, /*==>稶 Row:73 Col:83 */
+    /*0x8F77, GB2312 Code:*/ 0xE9F5, /*==>頊 Row:73 Col:85 */
+    /*0x8F78, GB2312 Code:*/ 0xE9F4, /*==>郁 Row:73 Col:84 */
+    /*0x8F79, GB2312 Code:*/ 0xE9F6, /*==>云 Row:73 Col:86 */
+    /*0x8F7A, GB2312 Code:*/ 0xE9F7, /*==>暈 Row:73 Col:87 */
+    /*0x8F7B, GB2312 Code:*/ 0xC7E1, /*==>햐 Row:39 Col:65 */
+    /*0x8F7C, GB2312 Code:*/ 0xE9F8, /*==>橒 Row:73 Col:88 */
+    /*0x8F7D, GB2312 Code:*/ 0xD4D8, /*==>潼 Row:52 Col:56 */
+    /*0x8F7E, GB2312 Code:*/ 0xE9F9, /*==>殞 Row:73 Col:89 */
+    /*0x8F7F, GB2312 Code:*/ 0xBDCE, /*==>싸 Row:29 Col:46 */
+    /*0x8F81, GB2312 Code:*/ 0xE9FA, /*==>澐 Row:73 Col:90 */
+    /*0x8F82, GB2312 Code:*/ 0xE9FB, /*==>熉 Row:73 Col:91 */
+    /*0x8F83, GB2312 Code:*/ 0xBDCF, /*==>싹 Row:29 Col:47 */
+    /*0x8F84, GB2312 Code:*/ 0xE9FC, /*==>耘 Row:73 Col:92 */
+    /*0x8F85, GB2312 Code:*/ 0xB8A8, /*==>릅 Row:24 Col:08 */
+    /*0x8F86, GB2312 Code:*/ 0xC1BE, /*==>종 Row:33 Col:30 */
+    /*0x8F87, GB2312 Code:*/ 0xE9FD, /*==>芸 Row:73 Col:93 */
+    /*0x8F88, GB2312 Code:*/ 0xB1B2, /*==>굉 Row:17 Col:18 */
+    /*0x8F89, GB2312 Code:*/ 0xBBD4, /*==>뿔 Row:27 Col:52 */
+    /*0x8F8A, GB2312 Code:*/ 0xB9F5, /*==>뱝 Row:25 Col:85 */
+    /*0x8F8B, GB2312 Code:*/ 0xE9FE, /*==>蕓 Row:73 Col:94 */
+    /*0x8F8D, GB2312 Code:*/ 0xEAA1, /*==>運 Row:74 Col:01 */
+    /*0x8F8E, GB2312 Code:*/ 0xEAA2, /*==>隕 Row:74 Col:02 */
+    /*0x8F8F, GB2312 Code:*/ 0xEAA3, /*==>雲 Row:74 Col:03 */
+    /*0x8F90, GB2312 Code:*/ 0xB7F8, /*==>륑 Row:23 Col:88 */
+    /*0x8F91, GB2312 Code:*/ 0xBCAD, /*==>서 Row:28 Col:13 */
+    /*0x8F93, GB2312 Code:*/ 0xCAE4, /*==>渴 Row:42 Col:68 */
+    /*0x8F94, GB2312 Code:*/ 0xE0CE, /*==>膳 Row:64 Col:46 */
+    /*0x8F95, GB2312 Code:*/ 0xD4AF, /*==>跳 Row:52 Col:15 */
+    /*0x8F96, GB2312 Code:*/ 0xCFBD, /*==>絿 Row:47 Col:29 */
+    /*0x8F97, GB2312 Code:*/ 0xD5B7, /*==>剌 Row:53 Col:23 */
+    /*0x8F98, GB2312 Code:*/ 0xEAA4, /*==>韻 Row:74 Col:04 */
+    /*0x8F99, GB2312 Code:*/ 0xD5DE, /*==>良 Row:53 Col:62 */
+    /*0x8F9A, GB2312 Code:*/ 0xEAA5, /*==>蔚 Row:74 Col:05 */
+    /*0x8F9B, GB2312 Code:*/ 0xD0C1, /*==>僅 Row:48 Col:33 */
+    /*0x8F9C, GB2312 Code:*/ 0xB9BC, /*==>뭡 Row:25 Col:28 */
+    /*0x8F9E, GB2312 Code:*/ 0xB4C7, /*==>늡 Row:20 Col:39 */
+    /*0x8F9F, GB2312 Code:*/ 0xB1D9, /*==>근 Row:17 Col:57 */
+    /*0x8FA3, GB2312 Code:*/ 0xC0B1, /*==>윤 Row:32 Col:17 */
+    /*0x8FA8, GB2312 Code:*/ 0xB1E6, /*==>길 Row:17 Col:70 */
+    /*0x8FA9, GB2312 Code:*/ 0xB1E7, /*==>긺 Row:17 Col:71 */
+    /*0x8FAB, GB2312 Code:*/ 0xB1E8, /*==>김 Row:17 Col:72 */
+    /*0x8FB0, GB2312 Code:*/ 0xB3BD, /*==>낸 Row:19 Col:29 */
+    /*0x8FB1, GB2312 Code:*/ 0xC8E8, /*==>흖 Row:40 Col:72 */
+    /*0x8FB6, GB2312 Code:*/ 0xE5C1, /*==>攘 Row:69 Col:33 */
+    /*0x8FB9, GB2312 Code:*/ 0xB1DF, /*==>긋 Row:17 Col:63 */
+    /*0x8FBD, GB2312 Code:*/ 0xC1C9, /*==>좼 Row:33 Col:41 */
+    /*0x8FBE, GB2312 Code:*/ 0xB4EF, /*==>댐 Row:20 Col:79 */
+    /*0x8FC1, GB2312 Code:*/ 0xC7A8, /*==>푭 Row:39 Col:08 */
+    /*0x8FC2, GB2312 Code:*/ 0xD3D8, /*==>糖 Row:51 Col:56 */
+    /*0x8FC4, GB2312 Code:*/ 0xC6F9, /*==>폰 Row:38 Col:89 */
+    /*0x8FC5, GB2312 Code:*/ 0xD1B8, /*==>祺 Row:49 Col:24 */
+    /*0x8FC7, GB2312 Code:*/ 0xB9FD, /*==>법 Row:25 Col:93 */
+    /*0x8FC8, GB2312 Code:*/ 0xC2F5, /*==>찢 Row:34 Col:85 */
+    /*0x8FCE, GB2312 Code:*/ 0xD3AD, /*==>短 Row:51 Col:13 */
+    /*0x8FD0, GB2312 Code:*/ 0xD4CB, /*==>頓 Row:52 Col:43 */
+    /*0x8FD1, GB2312 Code:*/ 0xBDFC, /*==>쐤 Row:29 Col:92 */
+    /*0x8FD3, GB2312 Code:*/ 0xE5C2, /*==>敭 Row:69 Col:34 */
+    /*0x8FD4, GB2312 Code:*/ 0xB7B5, /*==>럿 Row:23 Col:21 */
+    /*0x8FD5, GB2312 Code:*/ 0xE5C3, /*==>暘 Row:69 Col:35 */
+    /*0x8FD8, GB2312 Code:*/ 0xBBB9, /*==>뻘 Row:27 Col:25 */
+    /*0x8FD9, GB2312 Code:*/ 0xD5E2, /*==>侶 Row:53 Col:66 */
+    /*0x8FDB, GB2312 Code:*/ 0xBDF8, /*==>쏵 Row:29 Col:88 */
+    /*0x8FDC, GB2312 Code:*/ 0xD4B6, /*==>陶 Row:52 Col:22 */
+    /*0x8FDD, GB2312 Code:*/ 0xCEA5, /*==>跨 Row:46 Col:05 */
+    /*0x8FDE, GB2312 Code:*/ 0xC1AC, /*==>젯 Row:33 Col:12 */
+    /*0x8FDF, GB2312 Code:*/ 0xB3D9, /*==>넨 Row:19 Col:57 */
+    /*0x8FE2, GB2312 Code:*/ 0xCCF6, /*==>啓 Row:44 Col:86 */
+    /*0x8FE4, GB2312 Code:*/ 0xE5C6, /*==>樣 Row:69 Col:38 */
+    /*0x8FE5, GB2312 Code:*/ 0xE5C4, /*==>梁 Row:69 Col:36 */
+    /*0x8FE6, GB2312 Code:*/ 0xE5C8, /*==>瀁 Row:69 Col:40 */
+    /*0x8FE8, GB2312 Code:*/ 0xE5CA, /*==>痒 Row:69 Col:42 */
+    /*0x8FE9, GB2312 Code:*/ 0xE5C7, /*==>洋 Row:69 Col:39 */
+    /*0x8FEA, GB2312 Code:*/ 0xB5CF, /*==>둑 Row:21 Col:47 */
+    /*0x8FEB, GB2312 Code:*/ 0xC6C8, /*==>팔 Row:38 Col:40 */
+    /*0x8FED, GB2312 Code:*/ 0xB5FC, /*==>딱 Row:21 Col:92 */
+    /*0x8FEE, GB2312 Code:*/ 0xE5C5, /*==>楊 Row:69 Col:37 */
+    /*0x8FF0, GB2312 Code:*/ 0xCAF6, /*==>甘 Row:42 Col:86 */
+    /*0x8FF3, GB2312 Code:*/ 0xE5C9, /*==>煬 Row:69 Col:41 */
+    /*0x8FF7, GB2312 Code:*/ 0xC3D4, /*==>촬 Row:35 Col:52 */
+    /*0x8FF8, GB2312 Code:*/ 0xB1C5, /*==>궈 Row:17 Col:37 */
+    /*0x8FF9, GB2312 Code:*/ 0xBCA3, /*==>샬 Row:28 Col:03 */
+    /*0x8FFD, GB2312 Code:*/ 0xD7B7, /*==>瀏 Row:55 Col:23 */
+    /*0x9000, GB2312 Code:*/ 0xCDCB, /*==>藁 Row:45 Col:43 */
+    /*0x9001, GB2312 Code:*/ 0xCBCD, /*==>箇 Row:43 Col:45 */
+    /*0x9002, GB2312 Code:*/ 0xCACA, /*==>刊 Row:42 Col:42 */
+    /*0x9003, GB2312 Code:*/ 0xCCD3, /*==>徑 Row:44 Col:51 */
+    /*0x9004, GB2312 Code:*/ 0xE5CC, /*==>禳 Row:69 Col:44 */
+    /*0x9005, GB2312 Code:*/ 0xE5CB, /*==>瘍 Row:69 Col:43 */
+    /*0x9006, GB2312 Code:*/ 0xC4E6, /*==>쾀 Row:36 Col:70 */
+    /*0x9009, GB2312 Code:*/ 0xD1A1, /*==>朞 Row:49 Col:01 */
+    /*0x900A, GB2312 Code:*/ 0xD1B7, /*==>祈 Row:49 Col:23 */
+    /*0x900B, GB2312 Code:*/ 0xE5CD, /*==>穰 Row:69 Col:45 */
+    /*0x900D, GB2312 Code:*/ 0xE5D0, /*==>良 Row:69 Col:48 */
+    /*0x900F, GB2312 Code:*/ 0xCDB8, /*==>拷 Row:45 Col:24 */
+    /*0x9010, GB2312 Code:*/ 0xD6F0, /*==>磊 Row:54 Col:80 */
+    /*0x9011, GB2312 Code:*/ 0xE5CF, /*==>羊 Row:69 Col:47 */
+    /*0x9012, GB2312 Code:*/ 0xB5DD, /*==>뒵 Row:21 Col:61 */
+    /*0x9014, GB2312 Code:*/ 0xCDBE, /*==>槁 Row:45 Col:30 */
+    /*0x9016, GB2312 Code:*/ 0xE5D1, /*==>襄 Row:69 Col:49 */
+    /*0x9017, GB2312 Code:*/ 0xB6BA, /*==>떵 Row:22 Col:26 */
+    /*0x901A, GB2312 Code:*/ 0xCDA8, /*==>繫 Row:45 Col:08 */
+    /*0x901B, GB2312 Code:*/ 0xB9E4, /*==>밥 Row:25 Col:68 */
+    /*0x901D, GB2312 Code:*/ 0xCAC5, /*==>脚 Row:42 Col:37 */
+    /*0x901E, GB2312 Code:*/ 0xB3D1, /*==>넘 Row:19 Col:49 */
+    /*0x901F, GB2312 Code:*/ 0xCBD9, /*==>醵 Row:43 Col:57 */
+    /*0x9020, GB2312 Code:*/ 0xD4EC, /*==>芚 Row:52 Col:76 */
+    /*0x9021, GB2312 Code:*/ 0xE5D2, /*==>諒 Row:69 Col:50 */
+    /*0x9022, GB2312 Code:*/ 0xB7EA, /*==>룰 Row:23 Col:74 */
+    /*0x9026, GB2312 Code:*/ 0xE5CE, /*==>糧 Row:69 Col:46 */
+    /*0x902D, GB2312 Code:*/ 0xE5D5, /*==>陽 Row:69 Col:53 */
+    /*0x902E, GB2312 Code:*/ 0xB4FE, /*==>덥 Row:20 Col:94 */
+    /*0x902F, GB2312 Code:*/ 0xE5D6, /*==>量 Row:69 Col:54 */
+    /*0x9035, GB2312 Code:*/ 0xE5D3, /*==>讓 Row:69 Col:51 */
+    /*0x9036, GB2312 Code:*/ 0xE5D4, /*==>釀 Row:69 Col:52 */
+    /*0x9038, GB2312 Code:*/ 0xD2DD, /*==>惱 Row:50 Col:61 */
+    /*0x903B, GB2312 Code:*/ 0xC2DF, /*==>쭉 Row:34 Col:63 */
+    /*0x903C, GB2312 Code:*/ 0xB1C6, /*==>궉 Row:17 Col:38 */
+    /*0x903E, GB2312 Code:*/ 0xD3E2, /*==>待 Row:51 Col:66 */
+    /*0x9041, GB2312 Code:*/ 0xB6DD, /*==>뜁 Row:22 Col:61 */
+    /*0x9042, GB2312 Code:*/ 0xCBEC, /*==>件 Row:43 Col:76 */
+    /*0x9044, GB2312 Code:*/ 0xE5D7, /*==>養 Row:69 Col:55 */
+    /*0x9047, GB2312 Code:*/ 0xD3F6, /*==>島 Row:51 Col:86 */
+    /*0x904D, GB2312 Code:*/ 0xB1E9, /*==>깁 Row:17 Col:73 */
+    /*0x904F, GB2312 Code:*/ 0xB6F4, /*==>락 Row:22 Col:84 */
+    /*0x9050, GB2312 Code:*/ 0xE5DA, /*==>於 Row:69 Col:58 */
+    /*0x9051, GB2312 Code:*/ 0xE5D8, /*==>圄 Row:69 Col:56 */
+    /*0x9052, GB2312 Code:*/ 0xE5D9, /*==>御 Row:69 Col:57 */
+    /*0x9053, GB2312 Code:*/ 0xB5C0, /*==>돛 Row:21 Col:32 */
+    /*0x9057, GB2312 Code:*/ 0xD2C5, /*==>瑙 Row:50 Col:37 */
+    /*0x9058, GB2312 Code:*/ 0xE5DC, /*==>瘀 Row:69 Col:60 */
+    /*0x905B, GB2312 Code:*/ 0xE5DE, /*==>語 Row:69 Col:62 */
+    /*0x9062, GB2312 Code:*/ 0xE5DD, /*==>禦 Row:69 Col:61 */
+    /*0x9063, GB2312 Code:*/ 0xC7B2, /*==>풋 Row:39 Col:18 */
+    /*0x9065, GB2312 Code:*/ 0xD2A3, /*==>蠟 Row:50 Col:03 */
+    /*0x9068, GB2312 Code:*/ 0xE5DB, /*==>漁 Row:69 Col:59 */
+    /*0x906D, GB2312 Code:*/ 0xD4E2, /*==>枓 Row:52 Col:66 */
+    /*0x906E, GB2312 Code:*/ 0xD5DA, /*==>樑 Row:53 Col:58 */
+    /*0x9074, GB2312 Code:*/ 0xE5E0, /*==>魚 Row:69 Col:64 */
+    /*0x9075, GB2312 Code:*/ 0xD7F1, /*==>潾 Row:55 Col:81 */
+    /*0x907D, GB2312 Code:*/ 0xE5E1, /*==>齬 Row:69 Col:65 */
+    /*0x907F, GB2312 Code:*/ 0xB1DC, /*==>긁 Row:17 Col:60 */
+    /*0x9080, GB2312 Code:*/ 0xD1FB, /*==>男 Row:49 Col:91 */
+    /*0x9082, GB2312 Code:*/ 0xE5E2, /*==>億 Row:69 Col:66 */
+    /*0x9083, GB2312 Code:*/ 0xE5E4, /*==>抑 Row:69 Col:68 */
+    /*0x9088, GB2312 Code:*/ 0xE5E3, /*==>憶 Row:69 Col:67 */
+    /*0x908B, GB2312 Code:*/ 0xE5E5, /*==>檍 Row:69 Col:69 */
+    /*0x9091, GB2312 Code:*/ 0xD2D8, /*==>濃 Row:50 Col:56 */
+    /*0x9093, GB2312 Code:*/ 0xB5CB, /*==>됩 Row:21 Col:43 */
+    /*0x9095, GB2312 Code:*/ 0xE7DF, /*==>禮 Row:71 Col:63 */
+    /*0x9097, GB2312 Code:*/ 0xDAF5, /*==>般 Row:58 Col:85 */
+    /*0x9099, GB2312 Code:*/ 0xDAF8, /*==>頒 Row:58 Col:88 */
+    /*0x909B, GB2312 Code:*/ 0xDAF6, /*==>蟠 Row:58 Col:86 */
+    /*0x909D, GB2312 Code:*/ 0xDAF7, /*==>返 Row:58 Col:87 */
+    /*0x90A1, GB2312 Code:*/ 0xDAFA, /*==>勃 Row:58 Col:90 */
+    /*0x90A2, GB2312 Code:*/ 0xD0CF, /*==>饉 Row:48 Col:47 */
+    /*0x90A3, GB2312 Code:*/ 0xC4C7, /*==>컸 Row:36 Col:39 */
+    /*0x90A6, GB2312 Code:*/ 0xB0EE, /*==>곡 Row:16 Col:78 */
+    /*0x90AA, GB2312 Code:*/ 0xD0B0, /*==>逵 Row:48 Col:16 */
+    /*0x90AC, GB2312 Code:*/ 0xDAF9, /*==>飯 Row:58 Col:89 */
+    /*0x90AE, GB2312 Code:*/ 0xD3CA, /*==>錟 Row:51 Col:42 */
+    /*0x90AF, GB2312 Code:*/ 0xBAAA, /*==>벳 Row:26 Col:10 */
+    /*0x90B0, GB2312 Code:*/ 0xDBA2, /*==>跋 Row:59 Col:02 */
+    /*0x90B1, GB2312 Code:*/ 0xC7F1, /*==>헵 Row:39 Col:81 */
+    /*0x90B3, GB2312 Code:*/ 0xDAFC, /*==>撥 Row:58 Col:92 */
+    /*0x90B4, GB2312 Code:*/ 0xDAFB, /*==>拔 Row:58 Col:91 */
+    /*0x90B5, GB2312 Code:*/ 0xC9DB, /*==>� Row:41 Col:59 */
+    /*0x90B6, GB2312 Code:*/ 0xDAFD, /*==>渤 Row:58 Col:93 */
+    /*0x90B8, GB2312 Code:*/ 0xDBA1, /*==>發 Row:59 Col:01 */
+    /*0x90B9, GB2312 Code:*/ 0xD7DE, /*==>梨 Row:55 Col:62 */
+    /*0x90BA, GB2312 Code:*/ 0xDAFE, /*==>潑 Row:58 Col:94 */
+    /*0x90BB, GB2312 Code:*/ 0xC1DA, /*==>줅 Row:33 Col:58 */
+    /*0x90BE, GB2312 Code:*/ 0xDBA5, /*==>髮 Row:59 Col:05 */
+    /*0x90C1, GB2312 Code:*/ 0xD3F4, /*==>導 Row:51 Col:84 */
+    /*0x90C4, GB2312 Code:*/ 0xDBA7, /*==>倣 Row:59 Col:07 */
+    /*0x90C5, GB2312 Code:*/ 0xDBA4, /*==>鉢 Row:59 Col:04 */
+    /*0x90C7, GB2312 Code:*/ 0xDBA8, /*==>傍 Row:59 Col:08 */
+    /*0x90CA, GB2312 Code:*/ 0xBDBC, /*==>슨 Row:29 Col:28 */
+    /*0x90CE, GB2312 Code:*/ 0xC0C9, /*==>읠 Row:32 Col:41 */
+    /*0x90CF, GB2312 Code:*/ 0xDBA3, /*==>醱 Row:59 Col:03 */
+    /*0x90D0, GB2312 Code:*/ 0xDBA6, /*==>魃 Row:59 Col:06 */
+    /*0x90D1, GB2312 Code:*/ 0xD6A3, /*==>練 Row:54 Col:03 */
+    /*0x90D3, GB2312 Code:*/ 0xDBA9, /*==>坊 Row:59 Col:09 */
+    /*0x90D7, GB2312 Code:*/ 0xDBAD, /*==>彷 Row:59 Col:13 */
+    /*0x90DB, GB2312 Code:*/ 0xDBAE, /*==>房 Row:59 Col:14 */
+    /*0x90DC, GB2312 Code:*/ 0xDBAC, /*==>幇 Row:59 Col:12 */
+    /*0x90DD, GB2312 Code:*/ 0xBAC2, /*==>봔 Row:26 Col:34 */
+    /*0x90E1, GB2312 Code:*/ 0xBFA4, /*==>엘 Row:31 Col:04 */
+    /*0x90E2, GB2312 Code:*/ 0xDBAB, /*==>尨 Row:59 Col:11 */
+    /*0x90E6, GB2312 Code:*/ 0xDBAA, /*==>妨 Row:59 Col:10 */
+    /*0x90E7, GB2312 Code:*/ 0xD4C7, /*==>沌 Row:52 Col:39 */
+    /*0x90E8, GB2312 Code:*/ 0xB2BF, /*==>꼬 Row:18 Col:31 */
+    /*0x90EB, GB2312 Code:*/ 0xDBAF, /*==>放 Row:59 Col:15 */
+    /*0x90ED, GB2312 Code:*/ 0xB9F9, /*==>벋 Row:25 Col:89 */
+    /*0x90EF, GB2312 Code:*/ 0xDBB0, /*==>方 Row:59 Col:16 */
+    /*0x90F4, GB2312 Code:*/ 0xB3BB, /*==>내 Row:19 Col:27 */
+    /*0x90F8, GB2312 Code:*/ 0xB5A6, /*==>덱 Row:21 Col:06 */
+    /*0x90FD, GB2312 Code:*/ 0xB6BC, /*==>떼 Row:22 Col:28 */
+    /*0x90FE, GB2312 Code:*/ 0xDBB1, /*==>旁 Row:59 Col:17 */
+    /*0x9102, GB2312 Code:*/ 0xB6F5, /*==>란 Row:22 Col:85 */
+    /*0x9104, GB2312 Code:*/ 0xDBB2, /*==>昉 Row:59 Col:18 */
+    /*0x9119, GB2312 Code:*/ 0xB1C9, /*==>궜 Row:17 Col:41 */
+    /*0x911E, GB2312 Code:*/ 0xDBB4, /*==>榜 Row:59 Col:20 */
+    /*0x9122, GB2312 Code:*/ 0xDBB3, /*==>枋 Row:59 Col:19 */
+    /*0x9123, GB2312 Code:*/ 0xDBB5, /*==>滂 Row:59 Col:21 */
+    /*0x912F, GB2312 Code:*/ 0xDBB7, /*==>紡 Row:59 Col:23 */
+    /*0x9131, GB2312 Code:*/ 0xDBB6, /*==>磅 Row:59 Col:22 */
+    /*0x9139, GB2312 Code:*/ 0xDBB8, /*==>肪 Row:59 Col:24 */
+    /*0x9143, GB2312 Code:*/ 0xDBB9, /*==>膀 Row:59 Col:25 */
+    /*0x9146, GB2312 Code:*/ 0xDBBA, /*==>舫 Row:59 Col:26 */
+    /*0x9149, GB2312 Code:*/ 0xD3CF, /*==>遝 Row:51 Col:47 */
+    /*0x914A, GB2312 Code:*/ 0xF4FA, /*==>哨 Row:84 Col:90 */
+    /*0x914B, GB2312 Code:*/ 0xC7F5, /*==>혁 Row:39 Col:85 */
+    /*0x914C, GB2312 Code:*/ 0xD7C3, /*==>倫 Row:55 Col:35 */
+    /*0x914D, GB2312 Code:*/ 0xC5E4, /*==>토 Row:37 Col:68 */
+    /*0x914E, GB2312 Code:*/ 0xF4FC, /*==>抄 Row:84 Col:92 */
+    /*0x914F, GB2312 Code:*/ 0xF4FD, /*==>招 Row:84 Col:93 */
+    /*0x9150, GB2312 Code:*/ 0xF4FB, /*==>憔 Row:84 Col:91 */
+    /*0x9152, GB2312 Code:*/ 0xBEC6, /*==>아 Row:30 Col:38 */
+    /*0x9157, GB2312 Code:*/ 0xD0EF, /*==>器 Row:48 Col:79 */
+    /*0x915A, GB2312 Code:*/ 0xB7D3, /*==>롭 Row:23 Col:51 */
+    /*0x915D, GB2312 Code:*/ 0xD4CD, /*==>突 Row:52 Col:45 */
+    /*0x915E, GB2312 Code:*/ 0xCCAA, /*==>擊 Row:44 Col:10 */
+    /*0x9161, GB2312 Code:*/ 0xF5A2, /*==>楚 Row:85 Col:02 */
+    /*0x9162, GB2312 Code:*/ 0xF5A1, /*==>椒 Row:85 Col:01 */
+    /*0x9163, GB2312 Code:*/ 0xBAA8, /*==>벰 Row:26 Col:08 */
+    /*0x9164, GB2312 Code:*/ 0xF4FE, /*==>梢 Row:84 Col:94 */
+    /*0x9165, GB2312 Code:*/ 0xCBD6, /*==>更 Row:43 Col:54 */
+    /*0x9169, GB2312 Code:*/ 0xF5A4, /*==>炒 Row:85 Col:04 */
+    /*0x916A, GB2312 Code:*/ 0xC0D2, /*==>잃 Row:32 Col:50 */
+    /*0x916C, GB2312 Code:*/ 0xB3EA, /*==>녠 Row:19 Col:74 */
+    /*0x916E, GB2312 Code:*/ 0xCDAA, /*==>計 Row:45 Col:10 */
+    /*0x916F, GB2312 Code:*/ 0xF5A5, /*==>焦 Row:85 Col:05 */
+    /*0x9170, GB2312 Code:*/ 0xF5A3, /*==>樵 Row:85 Col:03 */
+    /*0x9171, GB2312 Code:*/ 0xBDB4, /*==>슈 Row:29 Col:20 */
+    /*0x9172, GB2312 Code:*/ 0xF5A8, /*==>礎 Row:85 Col:08 */
+    /*0x9174, GB2312 Code:*/ 0xF5A9, /*==>秒 Row:85 Col:09 */
+    /*0x9175, GB2312 Code:*/ 0xBDCD, /*==>싶 Row:29 Col:45 */
+    /*0x9176, GB2312 Code:*/ 0xC3B8, /*==>첩 Row:35 Col:24 */
+    /*0x9177, GB2312 Code:*/ 0xBFE1, /*==>욉 Row:31 Col:65 */
+    /*0x9178, GB2312 Code:*/ 0xCBE1, /*==>擧 Row:43 Col:65 */
+    /*0x9179, GB2312 Code:*/ 0xF5AA, /*==>稍 Row:85 Col:10 */
+    /*0x917D, GB2312 Code:*/ 0xF5A6, /*==>硝 Row:85 Col:06 */
+    /*0x917E, GB2312 Code:*/ 0xF5A7, /*==>礁 Row:85 Col:07 */
+    /*0x917F, GB2312 Code:*/ 0xC4F0, /*==>쿨 Row:36 Col:80 */
+    /*0x9185, GB2312 Code:*/ 0xF5AC, /*==>艸 Row:85 Col:12 */
+    /*0x9187, GB2312 Code:*/ 0xB4BC, /*==>뉼 Row:20 Col:28 */
+    /*0x9189, GB2312 Code:*/ 0xD7ED, /*==>釐 Row:55 Col:77 */
+    /*0x918B, GB2312 Code:*/ 0xB4D7, /*==>닝 Row:20 Col:55 */
+    /*0x918C, GB2312 Code:*/ 0xF5AB, /*==>肖 Row:85 Col:11 */
+    /*0x918D, GB2312 Code:*/ 0xF5AE, /*==>草 Row:85 Col:14 */
+    /*0x9190, GB2312 Code:*/ 0xF5AD, /*==>苕 Row:85 Col:13 */
+    /*0x9191, GB2312 Code:*/ 0xF5AF, /*==>蕉 Row:85 Col:15 */
+    /*0x9192, GB2312 Code:*/ 0xD0D1, /*==>今 Row:48 Col:49 */
+    /*0x919A, GB2312 Code:*/ 0xC3D1, /*==>총 Row:35 Col:49 */
+    /*0x919B, GB2312 Code:*/ 0xC8A9, /*==>홉 Row:40 Col:09 */
+    /*0x91A2, GB2312 Code:*/ 0xF5B0, /*==>貂 Row:85 Col:16 */
+    /*0x91A3, GB2312 Code:*/ 0xF5B1, /*==>超 Row:85 Col:17 */
+    /*0x91AA, GB2312 Code:*/ 0xF5B2, /*==>酢 Row:85 Col:18 */
+    /*0x91AD, GB2312 Code:*/ 0xF5B3, /*==>醋 Row:85 Col:19 */
+    /*0x91AE, GB2312 Code:*/ 0xF5B4, /*==>醮 Row:85 Col:20 */
+    /*0x91AF, GB2312 Code:*/ 0xF5B5, /*==>促 Row:85 Col:21 */
+    /*0x91B4, GB2312 Code:*/ 0xF5B7, /*==>燭 Row:85 Col:23 */
+    /*0x91B5, GB2312 Code:*/ 0xF5B6, /*==>囑 Row:85 Col:22 */
+    /*0x91BA, GB2312 Code:*/ 0xF5B8, /*==>矗 Row:85 Col:24 */
+    /*0x91C7, GB2312 Code:*/ 0xB2C9, /*==>꽃 Row:18 Col:41 */
+    /*0x91C9, GB2312 Code:*/ 0xD3D4, /*==>戇 Row:51 Col:52 */
+    /*0x91CA, GB2312 Code:*/ 0xCACD, /*==>姦 Row:42 Col:45 */
+    /*0x91CC, GB2312 Code:*/ 0xC0EF, /*==>쟁 Row:32 Col:79 */
+    /*0x91CD, GB2312 Code:*/ 0xD6D8, /*==>路 Row:54 Col:56 */
+    /*0x91CE, GB2312 Code:*/ 0xD2B0, /*==>柰 Row:50 Col:16 */
+    /*0x91CF, GB2312 Code:*/ 0xC1BF, /*==>좆 Row:33 Col:31 */
+    /*0x91D1, GB2312 Code:*/ 0xBDF0, /*==>쏜 Row:29 Col:80 */
+    /*0x91DC, GB2312 Code:*/ 0xB8AA, /*==>릉 Row:24 Col:10 */
+    /*0x9274, GB2312 Code:*/ 0xBCF8, /*==>순 Row:28 Col:88 */
+    /*0x928E, GB2312 Code:*/ 0xF6C6, /*==>緻 Row:86 Col:38 */
+    /*0x92AE, GB2312 Code:*/ 0xF6C7, /*==>置 Row:86 Col:39 */
+    /*0x92C8, GB2312 Code:*/ 0xF6C8, /*==>致 Row:86 Col:40 */
+    /*0x933E, GB2312 Code:*/ 0xF6C9, /*==>蚩 Row:86 Col:41 */
+    /*0x936A, GB2312 Code:*/ 0xF6CA, /*==>輜 Row:86 Col:42 */
+    /*0x938F, GB2312 Code:*/ 0xF6CC, /*==>馳 Row:86 Col:44 */
+    /*0x93CA, GB2312 Code:*/ 0xF6CB, /*==>雉 Row:86 Col:43 */
+    /*0x93D6, GB2312 Code:*/ 0xF7E9, /*==>巴 Row:87 Col:73 */
+    /*0x943E, GB2312 Code:*/ 0xF6CD, /*==>齒 Row:86 Col:45 */
+    /*0x946B, GB2312 Code:*/ 0xF6CE, /*==>則 Row:86 Col:46 */
+    /*0x9485, GB2312 Code:*/ 0xEEC4, /*==>猪 Row:78 Col:36 */
+    /*0x9486, GB2312 Code:*/ 0xEEC5, /*==>疽 Row:78 Col:37 */
+    /*0x9487, GB2312 Code:*/ 0xEEC6, /*==>箸 Row:78 Col:38 */
+    /*0x9488, GB2312 Code:*/ 0xD5EB, /*==>濾 Row:53 Col:75 */
+    /*0x9489, GB2312 Code:*/ 0xB6A4, /*==>땄 Row:22 Col:04 */
+    /*0x948A, GB2312 Code:*/ 0xEEC8, /*==>苧 Row:78 Col:40 */
+    /*0x948B, GB2312 Code:*/ 0xEEC7, /*==>紵 Row:78 Col:39 */
+    /*0x948C, GB2312 Code:*/ 0xEEC9, /*==>菹 Row:78 Col:41 */
+    /*0x948D, GB2312 Code:*/ 0xEECA, /*==>著 Row:78 Col:42 */
+    /*0x948E, GB2312 Code:*/ 0xC7A5, /*==>표 Row:39 Col:05 */
+    /*0x948F, GB2312 Code:*/ 0xEECB, /*==>藷 Row:78 Col:43 */
+    /*0x9490, GB2312 Code:*/ 0xEECC, /*==>詛 Row:78 Col:44 */
+    /*0x9492, GB2312 Code:*/ 0xB7B0, /*==>럭 Row:23 Col:16 */
+    /*0x9493, GB2312 Code:*/ 0xB5F6, /*==>딥 Row:21 Col:86 */
+    /*0x9494, GB2312 Code:*/ 0xEECD, /*==>貯 Row:78 Col:45 */
+    /*0x9495, GB2312 Code:*/ 0xEECF, /*==>這 Row:78 Col:47 */
+    /*0x9497, GB2312 Code:*/ 0xEECE, /*==>躇 Row:78 Col:46 */
+    /*0x9499, GB2312 Code:*/ 0xB8C6, /*==>맥 Row:24 Col:38 */
+    /*0x949A, GB2312 Code:*/ 0xEED0, /*==>邸 Row:78 Col:48 */
+    /*0x949B, GB2312 Code:*/ 0xEED1, /*==>雎 Row:78 Col:49 */
+    /*0x949C, GB2312 Code:*/ 0xEED2, /*==>齟 Row:78 Col:50 */
+    /*0x949D, GB2312 Code:*/ 0xB6DB, /*==>뛸 Row:22 Col:59 */
+    /*0x949E, GB2312 Code:*/ 0xB3AE, /*==>낟 Row:19 Col:14 */
+    /*0x949F, GB2312 Code:*/ 0xD6D3, /*==>爐 Row:54 Col:51 */
+    /*0x94A0, GB2312 Code:*/ 0xC4C6, /*==>컷 Row:36 Col:38 */
+    /*0x94A1, GB2312 Code:*/ 0xB1B5, /*==>굘 Row:17 Col:21 */
+    /*0x94A2, GB2312 Code:*/ 0xB8D6, /*==>멀 Row:24 Col:54 */
+    /*0x94A3, GB2312 Code:*/ 0xEED3, /*==>勣 Row:78 Col:51 */
+    /*0x94A4, GB2312 Code:*/ 0xEED4, /*==>吊 Row:78 Col:52 */
+    /*0x94A5, GB2312 Code:*/ 0xD4BF, /*==>篤 Row:52 Col:31 */
+    /*0x94A6, GB2312 Code:*/ 0xC7D5, /*==>합 Row:39 Col:53 */
+    /*0x94A7, GB2312 Code:*/ 0xBEFB, /*==>엉 Row:30 Col:91 */
+    /*0x94A8, GB2312 Code:*/ 0xCED9, /*==>槐 Row:46 Col:57 */
+    /*0x94A9, GB2312 Code:*/ 0xB9B3, /*==>뭄 Row:25 Col:19 */
+    /*0x94AA, GB2312 Code:*/ 0xEED6, /*==>寂 Row:78 Col:54 */
+    /*0x94AB, GB2312 Code:*/ 0xEED5, /*==>嫡 Row:78 Col:53 */
+    /*0x94AC, GB2312 Code:*/ 0xEED8, /*==>敵 Row:78 Col:56 */
+    /*0x94AD, GB2312 Code:*/ 0xEED7, /*==>摘 Row:78 Col:55 */
+    /*0x94AE, GB2312 Code:*/ 0xC5A5, /*==>큐 Row:37 Col:05 */
+    /*0x94AF, GB2312 Code:*/ 0xEED9, /*==>滴 Row:78 Col:57 */
+    /*0x94B0, GB2312 Code:*/ 0xEEDA, /*==>狄 Row:78 Col:58 */
+    /*0x94B1, GB2312 Code:*/ 0xC7AE, /*==>풀 Row:39 Col:14 */
+    /*0x94B2, GB2312 Code:*/ 0xEEDB, /*==>炙 Row:78 Col:59 */
+    /*0x94B3, GB2312 Code:*/ 0xC7AF, /*==>풂 Row:39 Col:15 */
+    /*0x94B4, GB2312 Code:*/ 0xEEDC, /*==>的 Row:78 Col:60 */
+    /*0x94B5, GB2312 Code:*/ 0xB2A7, /*==>꺌 Row:18 Col:07 */
+    /*0x94B6, GB2312 Code:*/ 0xEEDD, /*==>積 Row:78 Col:61 */
+    /*0x94B7, GB2312 Code:*/ 0xEEDE, /*==>笛 Row:78 Col:62 */
+    /*0x94B8, GB2312 Code:*/ 0xEEDF, /*==>籍 Row:78 Col:63 */
+    /*0x94B9, GB2312 Code:*/ 0xEEE0, /*==>績 Row:78 Col:64 */
+    /*0x94BA, GB2312 Code:*/ 0xEEE1, /*==>翟 Row:78 Col:65 */
+    /*0x94BB, GB2312 Code:*/ 0xD7EA, /*==>裏 Row:55 Col:74 */
+    /*0x94BC, GB2312 Code:*/ 0xEEE2, /*==>荻 Row:78 Col:66 */
+    /*0x94BD, GB2312 Code:*/ 0xEEE3, /*==>謫 Row:78 Col:67 */
+    /*0x94BE, GB2312 Code:*/ 0xBCD8, /*==>솜 Row:28 Col:56 */
+    /*0x94BF, GB2312 Code:*/ 0xEEE4, /*==>賊 Row:78 Col:68 */
+    /*0x94C0, GB2312 Code:*/ 0xD3CB, /*==>沓 Row:51 Col:43 */
+    /*0x94C1, GB2312 Code:*/ 0xCCFA, /*==>屆 Row:44 Col:90 */
+    /*0x94C2, GB2312 Code:*/ 0xB2AC, /*==>껄 Row:18 Col:12 */
+    /*0x94C3, GB2312 Code:*/ 0xC1E5, /*==>쥔 Row:33 Col:69 */
+    /*0x94C4, GB2312 Code:*/ 0xEEE5, /*==>赤 Row:78 Col:69 */
+    /*0x94C5, GB2312 Code:*/ 0xC7A6, /*==>푠 Row:39 Col:06 */
+    /*0x94C6, GB2312 Code:*/ 0xC3AD, /*==>챠 Row:35 Col:13 */
+    /*0x94C8, GB2312 Code:*/ 0xEEE6, /*==>跡 Row:78 Col:70 */
+    /*0x94C9, GB2312 Code:*/ 0xEEE7, /*==>蹟 Row:78 Col:71 */
+    /*0x94CA, GB2312 Code:*/ 0xEEE8, /*==>迪 Row:78 Col:72 */
+    /*0x94CB, GB2312 Code:*/ 0xEEE9, /*==>迹 Row:78 Col:73 */
+    /*0x94CC, GB2312 Code:*/ 0xEEEA, /*==>適 Row:78 Col:74 */
+    /*0x94CD, GB2312 Code:*/ 0xEEEB, /*==>鏑 Row:78 Col:75 */
+    /*0x94CE, GB2312 Code:*/ 0xEEEC, /*==>佃 Row:78 Col:76 */
+    /*0x94D0, GB2312 Code:*/ 0xEEED, /*==>佺 Row:78 Col:77 */
+    /*0x94D1, GB2312 Code:*/ 0xEEEE, /*==>傳 Row:78 Col:78 */
+    /*0x94D2, GB2312 Code:*/ 0xEEEF, /*==>全 Row:78 Col:79 */
+    /*0x94D5, GB2312 Code:*/ 0xEEF0, /*==>典 Row:78 Col:80 */
+    /*0x94D6, GB2312 Code:*/ 0xEEF1, /*==>前 Row:78 Col:81 */
+    /*0x94D7, GB2312 Code:*/ 0xEEF2, /*==>剪 Row:78 Col:82 */
+    /*0x94D8, GB2312 Code:*/ 0xEEF4, /*==>塼 Row:78 Col:84 */
+    /*0x94D9, GB2312 Code:*/ 0xEEF3, /*==>塡 Row:78 Col:83 */
+    /*0x94DB, GB2312 Code:*/ 0xEEF5, /*==>奠 Row:78 Col:85 */
+    /*0x94DC, GB2312 Code:*/ 0xCDAD, /*==>階 Row:45 Col:13 */
+    /*0x94DD, GB2312 Code:*/ 0xC2C1, /*==>쩝 Row:34 Col:33 */
+    /*0x94DE, GB2312 Code:*/ 0xEEF6, /*==>專 Row:78 Col:86 */
+    /*0x94DF, GB2312 Code:*/ 0xEEF7, /*==>展 Row:78 Col:87 */
+    /*0x94E0, GB2312 Code:*/ 0xEEF8, /*==>廛 Row:78 Col:88 */
+    /*0x94E1, GB2312 Code:*/ 0xD5A1, /*==>蘿 Row:53 Col:01 */
+    /*0x94E2, GB2312 Code:*/ 0xEEF9, /*==>悛 Row:78 Col:89 */
+    /*0x94E3, GB2312 Code:*/ 0xCFB3, /*==>毬 Row:47 Col:19 */
+    /*0x94E4, GB2312 Code:*/ 0xEEFA, /*==>戰 Row:78 Col:90 */
+    /*0x94E5, GB2312 Code:*/ 0xEEFB, /*==>栓 Row:78 Col:91 */
+    /*0x94E7, GB2312 Code:*/ 0xEEFC, /*==>殿 Row:78 Col:92 */
+    /*0x94E8, GB2312 Code:*/ 0xEEFD, /*==>氈 Row:78 Col:93 */
+    /*0x94E9, GB2312 Code:*/ 0xEFA1, /*==>煎 Row:79 Col:01 */
+    /*0x94EA, GB2312 Code:*/ 0xEEFE, /*==>澱 Row:78 Col:94 */
+    /*0x94EB, GB2312 Code:*/ 0xEFA2, /*==>琠 Row:79 Col:02 */
+    /*0x94EC, GB2312 Code:*/ 0xB8F5, /*==>몲 Row:24 Col:85 */
+    /*0x94ED, GB2312 Code:*/ 0xC3FA, /*==>츨 Row:35 Col:90 */
+    /*0x94EE, GB2312 Code:*/ 0xEFA3, /*==>田 Row:79 Col:03 */
+    /*0x94EF, GB2312 Code:*/ 0xEFA4, /*==>甸 Row:79 Col:04 */
+    /*0x94F0, GB2312 Code:*/ 0xBDC2, /*==>승 Row:29 Col:34 */
+    /*0x94F1, GB2312 Code:*/ 0xD2BF, /*==>奴 Row:50 Col:31 */
+    /*0x94F2, GB2312 Code:*/ 0xB2F9, /*==>끎 Row:18 Col:89 */
+    /*0x94F3, GB2312 Code:*/ 0xEFA5, /*==>畑 Row:79 Col:05 */
+    /*0x94F4, GB2312 Code:*/ 0xEFA6, /*==>癲 Row:79 Col:06 */
+    /*0x94F5, GB2312 Code:*/ 0xEFA7, /*==>筌 Row:79 Col:07 */
+    /*0x94F6, GB2312 Code:*/ 0xD2F8, /*==>陵 Row:50 Col:88 */
+    /*0x94F7, GB2312 Code:*/ 0xEFA8, /*==>箋 Row:79 Col:08 */
+    /*0x94F8, GB2312 Code:*/ 0xD6FD, /*==>聊 Row:54 Col:93 */
+    /*0x94F9, GB2312 Code:*/ 0xEFA9, /*==>箭 Row:79 Col:09 */
+    /*0x94FA, GB2312 Code:*/ 0xC6CC, /*==>팟 Row:38 Col:44 */
+    /*0x94FC, GB2312 Code:*/ 0xEFAA, /*==>篆 Row:79 Col:10 */
+    /*0x94FD, GB2312 Code:*/ 0xEFAB, /*==>纏 Row:79 Col:11 */
+    /*0x94FE, GB2312 Code:*/ 0xC1B4, /*==>졍 Row:33 Col:20 */
+    /*0x94FF, GB2312 Code:*/ 0xEFAC, /*==>詮 Row:79 Col:12 */
+    /*0x9500, GB2312 Code:*/ 0xCFFA, /*==>饋 Row:47 Col:90 */
+    /*0x9501, GB2312 Code:*/ 0xCBF8, /*==>傑 Row:43 Col:88 */
+    /*0x9502, GB2312 Code:*/ 0xEFAE, /*==>轉 Row:79 Col:14 */
+    /*0x9503, GB2312 Code:*/ 0xEFAD, /*==>輾 Row:79 Col:13 */
+    /*0x9504, GB2312 Code:*/ 0xB3FA, /*==>뇌 Row:19 Col:90 */
+    /*0x9505, GB2312 Code:*/ 0xB9F8, /*==>번 Row:25 Col:88 */
+    /*0x9506, GB2312 Code:*/ 0xEFAF, /*==>鈿 Row:79 Col:15 */
+    /*0x9507, GB2312 Code:*/ 0xEFB0, /*==>銓 Row:79 Col:16 */
+    /*0x9508, GB2312 Code:*/ 0xD0E2, /*==>扱 Row:48 Col:66 */
+    /*0x9509, GB2312 Code:*/ 0xEFB1, /*==>錢 Row:79 Col:17 */
+    /*0x950A, GB2312 Code:*/ 0xEFB2, /*==>鐫 Row:79 Col:18 */
+    /*0x950B, GB2312 Code:*/ 0xB7E6, /*==>룡 Row:23 Col:70 */
+    /*0x950C, GB2312 Code:*/ 0xD0BF, /*==>極 Row:48 Col:31 */
+    /*0x950D, GB2312 Code:*/ 0xEFB3, /*==>電 Row:79 Col:19 */
+    /*0x950E, GB2312 Code:*/ 0xEFB4, /*==>顚 Row:79 Col:20 */
+    /*0x950F, GB2312 Code:*/ 0xEFB5, /*==>顫 Row:79 Col:21 */
+    /*0x9510, GB2312 Code:*/ 0xC8F1, /*==>희 Row:40 Col:81 */
+    /*0x9511, GB2312 Code:*/ 0xCCE0, /*==>璥 Row:44 Col:64 */
+    /*0x9512, GB2312 Code:*/ 0xEFB6, /*==>餞 Row:79 Col:22 */
+    /*0x9513, GB2312 Code:*/ 0xEFB7, /*==>切 Row:79 Col:23 */
+    /*0x9514, GB2312 Code:*/ 0xEFB8, /*==>截 Row:79 Col:24 */
+    /*0x9515, GB2312 Code:*/ 0xEFB9, /*==>折 Row:79 Col:25 */
+    /*0x9516, GB2312 Code:*/ 0xEFBA, /*==>浙 Row:79 Col:26 */
+    /*0x9517, GB2312 Code:*/ 0xD5E0, /*==>輛 Row:53 Col:64 */
+    /*0x9518, GB2312 Code:*/ 0xEFBB, /*==>癤 Row:79 Col:27 */
+    /*0x9519, GB2312 Code:*/ 0xB4ED, /*==>댄 Row:20 Col:77 */
+    /*0x951A, GB2312 Code:*/ 0xC3AA, /*==>챗 Row:35 Col:10 */
+    /*0x951B, GB2312 Code:*/ 0xEFBC, /*==>竊 Row:79 Col:28 */
+    /*0x951D, GB2312 Code:*/ 0xEFBD, /*==>節 Row:79 Col:29 */
+    /*0x951E, GB2312 Code:*/ 0xEFBE, /*==>絶 Row:79 Col:30 */
+    /*0x951F, GB2312 Code:*/ 0xEFBF, /*==>占 Row:79 Col:31 */
+    /*0x9521, GB2312 Code:*/ 0xCEFD, /*==>具 Row:46 Col:93 */
+    /*0x9522, GB2312 Code:*/ 0xEFC0, /*==>岾 Row:79 Col:32 */
+    /*0x9523, GB2312 Code:*/ 0xC2E0, /*==>쭌 Row:34 Col:64 */
+    /*0x9524, GB2312 Code:*/ 0xB4B8, /*==>뉨 Row:20 Col:24 */
+    /*0x9525, GB2312 Code:*/ 0xD7B6, /*==>溜 Row:55 Col:22 */
+    /*0x9526, GB2312 Code:*/ 0xBDF5, /*==>쏩 Row:29 Col:85 */
+    /*0x9528, GB2312 Code:*/ 0xCFC7, /*==>逑 Row:47 Col:39 */
+    /*0x9529, GB2312 Code:*/ 0xEFC3, /*==>点 Row:79 Col:35 */
+    /*0x952A, GB2312 Code:*/ 0xEFC1, /*==>店 Row:79 Col:33 */
+    /*0x952B, GB2312 Code:*/ 0xEFC2, /*==>漸 Row:79 Col:34 */
+    /*0x952C, GB2312 Code:*/ 0xEFC4, /*==>粘 Row:79 Col:36 */
+    /*0x952D, GB2312 Code:*/ 0xB6A7, /*==>때 Row:22 Col:07 */
+    /*0x952E, GB2312 Code:*/ 0xBCFC, /*==>숩 Row:28 Col:92 */
+    /*0x952F, GB2312 Code:*/ 0xBEE2, /*==>얄 Row:30 Col:66 */
+    /*0x9530, GB2312 Code:*/ 0xC3CC, /*==>촌 Row:35 Col:44 */
+    /*0x9531, GB2312 Code:*/ 0xEFC5, /*==>霑 Row:79 Col:37 */
+    /*0x9532, GB2312 Code:*/ 0xEFC6, /*==>鮎 Row:79 Col:38 */
+    /*0x9534, GB2312 Code:*/ 0xEFC7, /*==>點 Row:79 Col:39 */
+    /*0x9535, GB2312 Code:*/ 0xEFCF, /*==>偵 Row:79 Col:47 */
+    /*0x9536, GB2312 Code:*/ 0xEFC8, /*==>接 Row:79 Col:40 */
+    /*0x9537, GB2312 Code:*/ 0xEFC9, /*==>摺 Row:79 Col:41 */
+    /*0x9538, GB2312 Code:*/ 0xEFCA, /*==>蝶 Row:79 Col:42 */
+    /*0x9539, GB2312 Code:*/ 0xC7C2, /*==>픈 Row:39 Col:34 */
+    /*0x953A, GB2312 Code:*/ 0xEFF1, /*==>精 Row:79 Col:81 */
+    /*0x953B, GB2312 Code:*/ 0xB6CD, /*==>똴 Row:22 Col:45 */
+    /*0x953C, GB2312 Code:*/ 0xEFCB, /*==>丁 Row:79 Col:43 */
+    /*0x953E, GB2312 Code:*/ 0xEFCC, /*==>井 Row:79 Col:44 */
+    /*0x953F, GB2312 Code:*/ 0xEFCD, /*==>亭 Row:79 Col:45 */
+    /*0x9540, GB2312 Code:*/ 0xB6C6, /*==>뗬 Row:22 Col:38 */
+    /*0x9541, GB2312 Code:*/ 0xC3BE, /*==>첸 Row:35 Col:30 */
+    /*0x9542, GB2312 Code:*/ 0xEFCE, /*==>停 Row:79 Col:46 */
+    /*0x9544, GB2312 Code:*/ 0xEFD0, /*==>呈 Row:79 Col:48 */
+    /*0x9545, GB2312 Code:*/ 0xEFD1, /*==>姃 Row:79 Col:49 */
+    /*0x9546, GB2312 Code:*/ 0xEFD2, /*==>定 Row:79 Col:50 */
+    /*0x9547, GB2312 Code:*/ 0xD5F2, /*==>麗 Row:53 Col:82 */
+    /*0x9549, GB2312 Code:*/ 0xEFD3, /*==>幀 Row:79 Col:51 */
+    /*0x954A, GB2312 Code:*/ 0xC4F7, /*==>퀄 Row:36 Col:87 */
+    /*0x954C, GB2312 Code:*/ 0xEFD4, /*==>庭 Row:79 Col:52 */
+    /*0x954D, GB2312 Code:*/ 0xC4F8, /*==>퀑 Row:36 Col:88 */
+    /*0x954E, GB2312 Code:*/ 0xEFD5, /*==>廷 Row:79 Col:53 */
+    /*0x954F, GB2312 Code:*/ 0xEFD6, /*==>征 Row:79 Col:54 */
+    /*0x9550, GB2312 Code:*/ 0xB8E4, /*==>멧 Row:24 Col:68 */
+    /*0x9551, GB2312 Code:*/ 0xB0F7, /*==>곳 Row:16 Col:87 */
+    /*0x9552, GB2312 Code:*/ 0xEFD7, /*==>情 Row:79 Col:55 */
+    /*0x9553, GB2312 Code:*/ 0xEFD8, /*==>挺 Row:79 Col:56 */
+    /*0x9554, GB2312 Code:*/ 0xEFD9, /*==>政 Row:79 Col:57 */
+    /*0x9556, GB2312 Code:*/ 0xEFDA, /*==>整 Row:79 Col:58 */
+    /*0x9557, GB2312 Code:*/ 0xEFDB, /*==>旌 Row:79 Col:59 */
+    /*0x9558, GB2312 Code:*/ 0xEFDC, /*==>晶 Row:79 Col:60 */
+    /*0x9559, GB2312 Code:*/ 0xEFDD, /*==>晸 Row:79 Col:61 */
+    /*0x955B, GB2312 Code:*/ 0xEFDE, /*==>柾 Row:79 Col:62 */
+    /*0x955C, GB2312 Code:*/ 0xBEB5, /*==>쓸 Row:30 Col:21 */
+    /*0x955D, GB2312 Code:*/ 0xEFE1, /*==>正 Row:79 Col:65 */
+    /*0x955E, GB2312 Code:*/ 0xEFDF, /*==>楨 Row:79 Col:63 */
+    /*0x955F, GB2312 Code:*/ 0xEFE0, /*==>檉 Row:79 Col:64 */
+    /*0x9561, GB2312 Code:*/ 0xEFE2, /*==>汀 Row:79 Col:66 */
+    /*0x9562, GB2312 Code:*/ 0xEFE3, /*==>淀 Row:79 Col:67 */
+    /*0x9563, GB2312 Code:*/ 0xC1CD, /*==>죌 Row:33 Col:45 */
+    /*0x9564, GB2312 Code:*/ 0xEFE4, /*==>淨 Row:79 Col:68 */
+    /*0x9565, GB2312 Code:*/ 0xEFE5, /*==>渟 Row:79 Col:69 */
+    /*0x9566, GB2312 Code:*/ 0xEFE6, /*==>湞 Row:79 Col:70 */
+    /*0x9567, GB2312 Code:*/ 0xEFE7, /*==>瀞 Row:79 Col:71 */
+    /*0x9568, GB2312 Code:*/ 0xEFE8, /*==>炡 Row:79 Col:72 */
+    /*0x9569, GB2312 Code:*/ 0xEFE9, /*==>玎 Row:79 Col:73 */
+    /*0x956A, GB2312 Code:*/ 0xEFEA, /*==>珽 Row:79 Col:74 */
+    /*0x956B, GB2312 Code:*/ 0xEFEB, /*==>町 Row:79 Col:75 */
+    /*0x956C, GB2312 Code:*/ 0xEFEC, /*==>睛 Row:79 Col:76 */
+    /*0x956D, GB2312 Code:*/ 0xC0D8, /*==>잊 Row:32 Col:56 */
+    /*0x956F, GB2312 Code:*/ 0xEFED, /*==>碇 Row:79 Col:77 */
+    /*0x9570, GB2312 Code:*/ 0xC1AD, /*==>젱 Row:33 Col:13 */
+    /*0x9571, GB2312 Code:*/ 0xEFEE, /*==>禎 Row:79 Col:78 */
+    /*0x9572, GB2312 Code:*/ 0xEFEF, /*==>程 Row:79 Col:79 */
+    /*0x9573, GB2312 Code:*/ 0xEFF0, /*==>穽 Row:79 Col:80 */
+    /*0x9576, GB2312 Code:*/ 0xCFE2, /*==>穹 Row:47 Col:66 */
+    /*0x957F, GB2312 Code:*/ 0xB3A4, /*==>낀 Row:19 Col:04 */
+    /*0x95E8, GB2312 Code:*/ 0xC3C5, /*==>쳔 Row:35 Col:37 */
+    /*0x95E9, GB2312 Code:*/ 0xE3C5, /*==>矢 Row:67 Col:37 */
+    /*0x95EA, GB2312 Code:*/ 0xC9C1, /*==>� Row:41 Col:33 */
+    /*0x95EB, GB2312 Code:*/ 0xE3C6, /*==>示 Row:67 Col:38 */
+    /*0x95ED, GB2312 Code:*/ 0xB1D5, /*==>균 Row:17 Col:53 */
+    /*0x95EE, GB2312 Code:*/ 0xCECA, /*==>狂 Row:46 Col:42 */
+    /*0x95EF, GB2312 Code:*/ 0xB4B3, /*==>눴 Row:20 Col:19 */
+    /*0x95F0, GB2312 Code:*/ 0xC8F2, /*==>흰 Row:40 Col:82 */
+    /*0x95F1, GB2312 Code:*/ 0xE3C7, /*==>翅 Row:67 Col:39 */
+    /*0x95F2, GB2312 Code:*/ 0xCFD0, /*==>國 Row:47 Col:48 */
+    /*0x95F3, GB2312 Code:*/ 0xE3C8, /*==>蒔 Row:67 Col:40 */
+    /*0x95F4, GB2312 Code:*/ 0xBCE4, /*==>쇌 Row:28 Col:68 */
+    /*0x95F5, GB2312 Code:*/ 0xE3C9, /*==>蓍 Row:67 Col:41 */
+    /*0x95F6, GB2312 Code:*/ 0xE3CA, /*==>視 Row:67 Col:42 */
+    /*0x95F7, GB2312 Code:*/ 0xC3C6, /*==>쳤 Row:35 Col:38 */
+    /*0x95F8, GB2312 Code:*/ 0xD5A2, /*==>螺 Row:53 Col:02 */
+    /*0x95F9, GB2312 Code:*/ 0xC4D6, /*==>켯 Row:36 Col:54 */
+    /*0x95FA, GB2312 Code:*/ 0xB9EB, /*==>밸 Row:25 Col:75 */
+    /*0x95FB, GB2312 Code:*/ 0xCEC5, /*==>壙 Row:46 Col:37 */
+    /*0x95FC, GB2312 Code:*/ 0xE3CB, /*==>試 Row:67 Col:43 */
+    /*0x95FD, GB2312 Code:*/ 0xC3F6, /*==>츙 Row:35 Col:86 */
+    /*0x95FE, GB2312 Code:*/ 0xE3CC, /*==>詩 Row:67 Col:44 */
+    /*0x9600, GB2312 Code:*/ 0xB7A7, /*==>랫 Row:23 Col:07 */
+    /*0x9601, GB2312 Code:*/ 0xB8F3, /*==>몬 Row:24 Col:83 */
+    /*0x9602, GB2312 Code:*/ 0xBAD2, /*==>불 Row:26 Col:50 */
+    /*0x9603, GB2312 Code:*/ 0xE3CD, /*==>諡 Row:67 Col:45 */
+    /*0x9604, GB2312 Code:*/ 0xE3CE, /*==>豕 Row:67 Col:46 */
+    /*0x9605, GB2312 Code:*/ 0xD4C4, /*==>敦 Row:52 Col:36 */
+    /*0x9606, GB2312 Code:*/ 0xE3CF, /*==>豺 Row:67 Col:47 */
+    /*0x9608, GB2312 Code:*/ 0xE3D0, /*==>埴 Row:67 Col:48 */
+    /*0x9609, GB2312 Code:*/ 0xD1CB, /*==>麒 Row:49 Col:43 */
+    /*0x960A, GB2312 Code:*/ 0xE3D1, /*==>寔 Row:67 Col:49 */
+    /*0x960B, GB2312 Code:*/ 0xE3D2, /*==>式 Row:67 Col:50 */
+    /*0x960C, GB2312 Code:*/ 0xE3D3, /*==>息 Row:67 Col:51 */
+    /*0x960D, GB2312 Code:*/ 0xE3D4, /*==>拭 Row:67 Col:52 */
+    /*0x960E, GB2312 Code:*/ 0xD1D6, /*==>娜 Row:49 Col:54 */
+    /*0x960F, GB2312 Code:*/ 0xE3D5, /*==>植 Row:67 Col:53 */
+    /*0x9610, GB2312 Code:*/ 0xB2FB, /*==>끔 Row:18 Col:91 */
+    /*0x9611, GB2312 Code:*/ 0xC0BB, /*==>을 Row:32 Col:27 */
+    /*0x9612, GB2312 Code:*/ 0xE3D6, /*==>殖 Row:67 Col:54 */
+    /*0x9614, GB2312 Code:*/ 0xC0AB, /*==>윔 Row:32 Col:11 */
+    /*0x9615, GB2312 Code:*/ 0xE3D7, /*==>湜 Row:67 Col:55 */
+    /*0x9616, GB2312 Code:*/ 0xE3D8, /*==>熄 Row:67 Col:56 */
+    /*0x9617, GB2312 Code:*/ 0xE3D9, /*==>篒 Row:67 Col:57 */
+    /*0x9619, GB2312 Code:*/ 0xE3DA, /*==>蝕 Row:67 Col:58 */
+    /*0x961A, GB2312 Code:*/ 0xE3DB, /*==>識 Row:67 Col:59 */
+    /*0x961C, GB2312 Code:*/ 0xB8B7, /*==>막 Row:24 Col:23 */
+    /*0x961D, GB2312 Code:*/ 0xDAE2, /*==>半 Row:58 Col:66 */
+    /*0x961F, GB2312 Code:*/ 0xB6D3, /*==>뚠 Row:22 Col:51 */
+    /*0x9621, GB2312 Code:*/ 0xDAE4, /*==>叛 Row:58 Col:68 */
+    /*0x9622, GB2312 Code:*/ 0xDAE3, /*==>反 Row:58 Col:67 */
+    /*0x962A, GB2312 Code:*/ 0xDAE6, /*==>搬 Row:58 Col:70 */
+    /*0x962E, GB2312 Code:*/ 0xC8EE, /*==>흣 Row:40 Col:78 */
+    /*0x9631, GB2312 Code:*/ 0xDAE5, /*==>拌 Row:58 Col:69 */
+    /*0x9632, GB2312 Code:*/ 0xB7C0, /*==>렝 Row:23 Col:32 */
+    /*0x9633, GB2312 Code:*/ 0xD1F4, /*==>捺 Row:49 Col:84 */
+    /*0x9634, GB2312 Code:*/ 0xD2F5, /*==>綾 Row:50 Col:85 */
+    /*0x9635, GB2312 Code:*/ 0xD5F3, /*==>黎 Row:53 Col:83 */
+    /*0x9636, GB2312 Code:*/ 0xBDD7, /*==>쌓 Row:29 Col:55 */
+    /*0x963B, GB2312 Code:*/ 0xD7E8, /*==>羸 Row:55 Col:72 */
+    /*0x963C, GB2312 Code:*/ 0xDAE8, /*==>斑 Row:58 Col:72 */
+    /*0x963D, GB2312 Code:*/ 0xDAE7, /*==>攀 Row:58 Col:71 */
+    /*0x963F, GB2312 Code:*/ 0xB0A2, /*==>각 Row:16 Col:02 */
+    /*0x9640, GB2312 Code:*/ 0xCDD3, /*==>顧 Row:45 Col:51 */
+    /*0x9642, GB2312 Code:*/ 0xDAE9, /*==>槃 Row:58 Col:73 */
+    /*0x9644, GB2312 Code:*/ 0xB8BD, /*==>맒 Row:24 Col:29 */
+    /*0x9645, GB2312 Code:*/ 0xBCCA, /*==>셥 Row:28 Col:42 */
+    /*0x9646, GB2312 Code:*/ 0xC2BD, /*==>쩍 Row:34 Col:29 */
+    /*0x9647, GB2312 Code:*/ 0xC2A4, /*==>짚 Row:34 Col:04 */
+    /*0x9648, GB2312 Code:*/ 0xB3C2, /*==>냈 Row:19 Col:34 */
+    /*0x9649, GB2312 Code:*/ 0xDAEA, /*==>泮 Row:58 Col:74 */
+    /*0x964B, GB2312 Code:*/ 0xC2AA, /*==>짧 Row:34 Col:10 */
+    /*0x964C, GB2312 Code:*/ 0xC4B0, /*==>캅 Row:36 Col:16 */
+    /*0x964D, GB2312 Code:*/ 0xBDB5, /*==>슉 Row:29 Col:21 */
+    /*0x9650, GB2312 Code:*/ 0xCFDE, /*==>掘 Row:47 Col:62 */
+    /*0x9654, GB2312 Code:*/ 0xDAEB, /*==>潘 Row:58 Col:75 */
+    /*0x9655, GB2312 Code:*/ 0xC9C2, /*==>� Row:41 Col:34 */
+    /*0x965B, GB2312 Code:*/ 0xB1DD, /*==>금 Row:17 Col:61 */
+    /*0x965F, GB2312 Code:*/ 0xDAEC, /*==>班 Row:58 Col:76 */
+    /*0x9661, GB2312 Code:*/ 0xB6B8, /*==>떳 Row:22 Col:24 */
+    /*0x9662, GB2312 Code:*/ 0xD4BA, /*==>牘 Row:52 Col:26 */
+    /*0x9664, GB2312 Code:*/ 0xB3FD, /*==>뇜 Row:19 Col:93 */
+    /*0x9667, GB2312 Code:*/ 0xDAED, /*==>畔 Row:58 Col:77 */
+    /*0x9668, GB2312 Code:*/ 0xD4C9, /*==>燉 Row:52 Col:41 */
+    /*0x9669, GB2312 Code:*/ 0xCFD5, /*==>麴 Row:47 Col:53 */
+    /*0x966A, GB2312 Code:*/ 0xC5E3, /*==>톈 Row:37 Col:67 */
+    /*0x966C, GB2312 Code:*/ 0xDAEE, /*==>瘢 Row:58 Col:78 */
+    /*0x9672, GB2312 Code:*/ 0xDAEF, /*==>盤 Row:58 Col:79 */
+    /*0x9674, GB2312 Code:*/ 0xDAF0, /*==>盼 Row:58 Col:80 */
+    /*0x9675, GB2312 Code:*/ 0xC1EA, /*==>쥬 Row:33 Col:74 */
+    /*0x9676, GB2312 Code:*/ 0xCCD5, /*==>憬 Row:44 Col:53 */
+    /*0x9677, GB2312 Code:*/ 0xCFDD, /*==>屈 Row:47 Col:61 */
+    /*0x9685, GB2312 Code:*/ 0xD3E7, /*==>袋 Row:51 Col:71 */
+    /*0x9686, GB2312 Code:*/ 0xC2A1, /*==>징 Row:34 Col:01 */
+    /*0x9688, GB2312 Code:*/ 0xDAF1, /*==>磐 Row:58 Col:81 */
+    /*0x968B, GB2312 Code:*/ 0xCBE5, /*==>距 Row:43 Col:69 */
+    /*0x968D, GB2312 Code:*/ 0xDAF2, /*==>磻 Row:58 Col:82 */
+    /*0x968F, GB2312 Code:*/ 0xCBE6, /*==>踞 Row:43 Col:70 */
+    /*0x9690, GB2312 Code:*/ 0xD2FE, /*==>茶 Row:50 Col:94 */
+    /*0x9694, GB2312 Code:*/ 0xB8F4, /*==>몰 Row:24 Col:84 */
+    /*0x9697, GB2312 Code:*/ 0xDAF3, /*==>礬 Row:58 Col:83 */
+    /*0x9698, GB2312 Code:*/ 0xB0AF, /*==>갗 Row:16 Col:15 */
+    /*0x9699, GB2312 Code:*/ 0xCFB6, /*==>灸 Row:47 Col:22 */
+    /*0x969C, GB2312 Code:*/ 0xD5CF, /*==>崍 Row:53 Col:47 */
+    /*0x96A7, GB2312 Code:*/ 0xCBED, /*==>健 Row:43 Col:77 */
+    /*0x96B0, GB2312 Code:*/ 0xDAF4, /*==>絆 Row:58 Col:84 */
+    /*0x96B3, GB2312 Code:*/ 0xE3C4, /*==>猜 Row:67 Col:36 */
+    /*0x96B6, GB2312 Code:*/ 0xC1A5, /*==>젖 Row:33 Col:05 */
+    /*0x96B9, GB2312 Code:*/ 0xF6BF, /*==>熾 Row:86 Col:31 */
+    /*0x96BC, GB2312 Code:*/ 0xF6C0, /*==>痔 Row:86 Col:32 */
+    /*0x96BD, GB2312 Code:*/ 0xF6C1, /*==>痴 Row:86 Col:33 */
+    /*0x96BE, GB2312 Code:*/ 0xC4D1, /*==>켜 Row:36 Col:49 */
+    /*0x96C0, GB2312 Code:*/ 0xC8B8, /*==>회 Row:40 Col:24 */
+    /*0x96C1, GB2312 Code:*/ 0xD1E3, /*==>洛 Row:49 Col:67 */
+    /*0x96C4, GB2312 Code:*/ 0xD0DB, /*==>衿 Row:48 Col:59 */
+    /*0x96C5, GB2312 Code:*/ 0xD1C5, /*==>錤 Row:49 Col:37 */
+    /*0x96C6, GB2312 Code:*/ 0xBCAF, /*==>섞 Row:28 Col:15 */
+    /*0x96C7, GB2312 Code:*/ 0xB9CD, /*==>믹 Row:25 Col:45 */
+    /*0x96C9, GB2312 Code:*/ 0xEFF4, /*==>訂 Row:79 Col:84 */
+    /*0x96CC, GB2312 Code:*/ 0xB4C6, /*==>늠 Row:20 Col:38 */
+    /*0x96CD, GB2312 Code:*/ 0xD3BA, /*==>啖 Row:51 Col:26 */
+    /*0x96CE, GB2312 Code:*/ 0xF6C2, /*==>癡 Row:86 Col:34 */
+    /*0x96CF, GB2312 Code:*/ 0xB3FB, /*==>뇐 Row:19 Col:91 */
+    /*0x96D2, GB2312 Code:*/ 0xF6C3, /*==>稚 Row:86 Col:35 */
+    /*0x96D5, GB2312 Code:*/ 0xB5F1, /*==>딕 Row:21 Col:81 */
+    /*0x96E0, GB2312 Code:*/ 0xF6C5, /*==>緇 Row:86 Col:37 */
+    /*0x96E8, GB2312 Code:*/ 0xD3EA, /*==>黛 Row:51 Col:74 */
+    /*0x96E9, GB2312 Code:*/ 0xF6A7, /*==>炊 Row:86 Col:07 */
+    /*0x96EA, GB2312 Code:*/ 0xD1A9, /*==>汽 Row:49 Col:09 */
+    /*0x96EF, GB2312 Code:*/ 0xF6A9, /*==>聚 Row:86 Col:09 */
+    /*0x96F3, GB2312 Code:*/ 0xF6A8, /*==>翠 Row:86 Col:08 */
+    /*0x96F6, GB2312 Code:*/ 0xC1E3, /*==>쥐 Row:33 Col:67 */
+    /*0x96F7, GB2312 Code:*/ 0xC0D7, /*==>잉 Row:32 Col:55 */
+    /*0x96F9, GB2312 Code:*/ 0xB1A2, /*==>괍 Row:17 Col:02 */
+    /*0x96FE, GB2312 Code:*/ 0xCEED, /*==>絞 Row:46 Col:77 */
+    /*0x9700, GB2312 Code:*/ 0xD0E8, /*==>矜 Row:48 Col:72 */
+    /*0x9701, GB2312 Code:*/ 0xF6AB, /*==>臭 Row:86 Col:11 */
+    /*0x9704, GB2312 Code:*/ 0xCFF6, /*==>櫃 Row:47 Col:86 */
+    /*0x9706, GB2312 Code:*/ 0xF6AA, /*==>脆 Row:86 Col:10 */
+    /*0x9707, GB2312 Code:*/ 0xD5F0, /*==>驢 Row:53 Col:80 */
+    /*0x9708, GB2312 Code:*/ 0xF6AC, /*==>趣 Row:86 Col:12 */
+    /*0x9709, GB2312 Code:*/ 0xC3B9, /*==>첫 Row:35 Col:25 */
+    /*0x970D, GB2312 Code:*/ 0xBBF4, /*==>샅 Row:27 Col:84 */
+    /*0x970E, GB2312 Code:*/ 0xF6AE, /*==>驟 Row:86 Col:14 */
+    /*0x970F, GB2312 Code:*/ 0xF6AD, /*==>醉 Row:86 Col:13 */
+    /*0x9713, GB2312 Code:*/ 0xC4DE, /*==>콤 Row:36 Col:62 */
+    /*0x9716, GB2312 Code:*/ 0xC1D8, /*==>준 Row:33 Col:56 */
+    /*0x971C, GB2312 Code:*/ 0xCBAA, /*==>岡 Row:43 Col:10 */
+    /*0x971E, GB2312 Code:*/ 0xCFBC, /*==>究 Row:47 Col:28 */
+    /*0x972A, GB2312 Code:*/ 0xF6AF, /*==>鷲 Row:86 Col:15 */
+    /*0x972D, GB2312 Code:*/ 0xF6B0, /*==>側 Row:86 Col:16 */
+    /*0x9730, GB2312 Code:*/ 0xF6B1, /*==>仄 Row:86 Col:17 */
+    /*0x9732, GB2312 Code:*/ 0xC2B6, /*==>쨋 Row:34 Col:22 */
+    /*0x9738, GB2312 Code:*/ 0xB0D4, /*==>게 Row:16 Col:52 */
+    /*0x9739, GB2312 Code:*/ 0xC5F9, /*==>툼 Row:37 Col:89 */
+    /*0x973E, GB2312 Code:*/ 0xF6B2, /*==>厠 Row:86 Col:18 */
+    /*0x9752, GB2312 Code:*/ 0xC7E0, /*==>행 Row:39 Col:64 */
+    /*0x9753, GB2312 Code:*/ 0xF6A6, /*==>就 Row:86 Col:06 */
+    /*0x9756, GB2312 Code:*/ 0xBEB8, /*==>씀 Row:30 Col:24 */
+    /*0x9759, GB2312 Code:*/ 0xBEB2, /*==>쓰 Row:30 Col:18 */
+    /*0x975B, GB2312 Code:*/ 0xB5E5, /*==>드 Row:21 Col:69 */
+    /*0x975E, GB2312 Code:*/ 0xB7C7, /*==>렷 Row:23 Col:39 */
+    /*0x9760, GB2312 Code:*/ 0xBFBF, /*==>옜 Row:31 Col:31 */
+    /*0x9761, GB2312 Code:*/ 0xC3D2, /*==>촤 Row:35 Col:50 */
+    /*0x9762, GB2312 Code:*/ 0xC3E6, /*==>충 Row:35 Col:70 */
+    /*0x9765, GB2312 Code:*/ 0xD8CC, /*==>亡 Row:56 Col:44 */
+    /*0x9769, GB2312 Code:*/ 0xB8EF, /*==>몌 Row:24 Col:79 */
+    /*0x9773, GB2312 Code:*/ 0xBDF9, /*==>쏸 Row:29 Col:89 */
+    /*0x9774, GB2312 Code:*/ 0xD1A5, /*==>棄 Row:49 Col:05 */
+    /*0x9776, GB2312 Code:*/ 0xB0D0, /*==>겆 Row:16 Col:48 */
+    /*0x977C, GB2312 Code:*/ 0xF7B0, /*==>耽 Row:87 Col:16 */
+    /*0x9785, GB2312 Code:*/ 0xF7B1, /*==>貪 Row:87 Col:17 */
+    /*0x978B, GB2312 Code:*/ 0xD0AC, /*==>糾 Row:48 Col:12 */
+    /*0x978D, GB2312 Code:*/ 0xB0B0, /*==>같 Row:16 Col:16 */
+    /*0x9791, GB2312 Code:*/ 0xF7B2, /*==>塔 Row:87 Col:18 */
+    /*0x9792, GB2312 Code:*/ 0xF7B3, /*==>搭 Row:87 Col:19 */
+    /*0x9794, GB2312 Code:*/ 0xF7B4, /*==>榻 Row:87 Col:20 */
+    /*0x9798, GB2312 Code:*/ 0xC7CA, /*==>필 Row:39 Col:42 */
+    /*0x97A0, GB2312 Code:*/ 0xBECF, /*==>암 Row:30 Col:47 */
+    /*0x97A3, GB2312 Code:*/ 0xF7B7, /*==>湯 Row:87 Col:23 */
+    /*0x97AB, GB2312 Code:*/ 0xF7B6, /*==>帑 Row:87 Col:22 */
+    /*0x97AD, GB2312 Code:*/ 0xB1DE, /*==>급 Row:17 Col:62 */
+    /*0x97AF, GB2312 Code:*/ 0xF7B5, /*==>宕 Row:87 Col:21 */
+    /*0x97B2, GB2312 Code:*/ 0xF7B8, /*==>糖 Row:87 Col:24 */
+    /*0x97B4, GB2312 Code:*/ 0xF7B9, /*==>蕩 Row:87 Col:25 */
+    /*0x97E6, GB2312 Code:*/ 0xCEA4, /*==>課 Row:46 Col:04 */
+    /*0x97E7, GB2312 Code:*/ 0xC8CD, /*==>훤 Row:40 Col:45 */
+    /*0x97E9, GB2312 Code:*/ 0xBAAB, /*==>벴 Row:26 Col:11 */
+    /*0x97EA, GB2312 Code:*/ 0xE8B8, /*==>甕 Row:72 Col:24 */
+    /*0x97EB, GB2312 Code:*/ 0xE8B9, /*==>癰 Row:72 Col:25 */
+    /*0x97EC, GB2312 Code:*/ 0xE8BA, /*==>翁 Row:72 Col:26 */
+    /*0x97ED, GB2312 Code:*/ 0xBEC2, /*==>씸 Row:30 Col:34 */
+    /*0x97F3, GB2312 Code:*/ 0xD2F4, /*==>稜 Row:50 Col:84 */
+    /*0x97F5, GB2312 Code:*/ 0xD4CF, /*==>冬 Row:52 Col:47 */
+    /*0x97F6, GB2312 Code:*/ 0xC9D8, /*==>� Row:41 Col:56 */
+    /*0x9875, GB2312 Code:*/ 0xD2B3, /*==>女 Row:50 Col:19 */
+    /*0x9876, GB2312 Code:*/ 0xB6A5, /*==>땅 Row:22 Col:05 */
+    /*0x9877, GB2312 Code:*/ 0xC7EA, /*==>헛 Row:39 Col:74 */
+    /*0x9878, GB2312 Code:*/ 0xF1FC, /*==>贈 Row:81 Col:92 */
+    /*0x9879, GB2312 Code:*/ 0xCFEE, /*==>淃 Row:47 Col:78 */
+    /*0x987A, GB2312 Code:*/ 0xCBB3, /*==>糠 Row:43 Col:19 */
+    /*0x987B, GB2312 Code:*/ 0xD0EB, /*==>伎 Row:48 Col:75 */
+    /*0x987C, GB2312 Code:*/ 0xE7EF, /*==>吳 Row:71 Col:79 */
+    /*0x987D, GB2312 Code:*/ 0xCDE7, /*==>汨 Row:45 Col:71 */
+    /*0x987E, GB2312 Code:*/ 0xB9CB, /*==>믓 Row:25 Col:43 */
+    /*0x987F, GB2312 Code:*/ 0xB6D9, /*==>뛰 Row:22 Col:57 */
+    /*0x9880, GB2312 Code:*/ 0xF1FD, /*==>之 Row:81 Col:93 */
+    /*0x9881, GB2312 Code:*/ 0xB0E4, /*==>겻 Row:16 Col:68 */
+    /*0x9882, GB2312 Code:*/ 0xCBCC, /*==>盖 Row:43 Col:44 */
+    /*0x9883, GB2312 Code:*/ 0xF1FE, /*==>只 Row:81 Col:94 */
+    /*0x9884, GB2312 Code:*/ 0xD4A4, /*==>渡 Row:52 Col:04 */
+    /*0x9885, GB2312 Code:*/ 0xC2AD, /*==>짯 Row:34 Col:13 */
+    /*0x9886, GB2312 Code:*/ 0xC1EC, /*==>쥴 Row:33 Col:76 */
+    /*0x9887, GB2312 Code:*/ 0xC6C4, /*==>파 Row:38 Col:36 */
+    /*0x9888, GB2312 Code:*/ 0xBEB1, /*==>쓩 Row:30 Col:17 */
+    /*0x9889, GB2312 Code:*/ 0xF2A1, /*==>咫 Row:82 Col:01 */
+    /*0x988A, GB2312 Code:*/ 0xBCD5, /*==>손 Row:28 Col:53 */
+    /*0x988C, GB2312 Code:*/ 0xF2A2, /*==>地 Row:82 Col:02 */
+    /*0x988D, GB2312 Code:*/ 0xF2A3, /*==>址 Row:82 Col:03 */
+    /*0x988F, GB2312 Code:*/ 0xF2A4, /*==>志 Row:82 Col:04 */
+    /*0x9890, GB2312 Code:*/ 0xD2C3, /*==>櫓 Row:50 Col:35 */
+    /*0x9891, GB2312 Code:*/ 0xC6B5, /*==>틉 Row:38 Col:21 */
+    /*0x9893, GB2312 Code:*/ 0xCDC7, /*==>膏 Row:45 Col:39 */
+    /*0x9894, GB2312 Code:*/ 0xF2A5, /*==>持 Row:82 Col:05 */
+    /*0x9896, GB2312 Code:*/ 0xD3B1, /*==>蛋 Row:51 Col:17 */
+    /*0x9897, GB2312 Code:*/ 0xBFC5, /*==>옮 Row:31 Col:37 */
+    /*0x9898, GB2312 Code:*/ 0xCCE2, /*==>痙 Row:44 Col:66 */
+    /*0x989A, GB2312 Code:*/ 0xF2A6, /*==>指 Row:82 Col:06 */
+    /*0x989B, GB2312 Code:*/ 0xF2A7, /*==>摯 Row:82 Col:07 */
+    /*0x989C, GB2312 Code:*/ 0xD1D5, /*==>奈 Row:49 Col:53 */
+    /*0x989D, GB2312 Code:*/ 0xB6EE, /*==>띨 Row:22 Col:78 */
+    /*0x989E, GB2312 Code:*/ 0xF2A8, /*==>支 Row:82 Col:08 */
+    /*0x989F, GB2312 Code:*/ 0xF2A9, /*==>旨 Row:82 Col:09 */
+    /*0x98A0, GB2312 Code:*/ 0xB5DF, /*==>뒹 Row:21 Col:63 */
+    /*0x98A1, GB2312 Code:*/ 0xF2AA, /*==>智 Row:82 Col:10 */
+    /*0x98A2, GB2312 Code:*/ 0xF2AB, /*==>枝 Row:82 Col:11 */
+    /*0x98A4, GB2312 Code:*/ 0xB2FC, /*==>끕 Row:18 Col:92 */
+    /*0x98A5, GB2312 Code:*/ 0xF2AC, /*==>枳 Row:82 Col:12 */
+    /*0x98A6, GB2312 Code:*/ 0xF2AD, /*==>止 Row:82 Col:13 */
+    /*0x98A7, GB2312 Code:*/ 0xC8A7, /*==>홅 Row:40 Col:07 */
+    /*0x98CE, GB2312 Code:*/ 0xB7E7, /*==>루 Row:23 Col:71 */
+    /*0x98D1, GB2312 Code:*/ 0xECA9, /*==>姨 Row:76 Col:09 */
+    /*0x98D2, GB2312 Code:*/ 0xECAA, /*==>履 Row:76 Col:10 */
+    /*0x98D3, GB2312 Code:*/ 0xECAB, /*==>已 Row:76 Col:11 */
+    /*0x98D5, GB2312 Code:*/ 0xECAC, /*==>弛 Row:76 Col:12 */
+    /*0x98D8, GB2312 Code:*/ 0xC6AE, /*==>트 Row:38 Col:14 */
+    /*0x98D9, GB2312 Code:*/ 0xECAD, /*==>彛 Row:76 Col:13 */
+    /*0x98DA, GB2312 Code:*/ 0xECAE, /*==>怡 Row:76 Col:14 */
+    /*0x98DE, GB2312 Code:*/ 0xB7C9, /*==>령 Row:23 Col:41 */
+    /*0x98DF, GB2312 Code:*/ 0xCAB3, /*==>稼 Row:42 Col:19 */
+    /*0x98E7, GB2312 Code:*/ 0xE2B8, /*==>綬 Row:66 Col:24 */
+    /*0x98E8, GB2312 Code:*/ 0xF7CF, /*==>土 Row:87 Col:47 */
+    /*0x990D, GB2312 Code:*/ 0xF7D0, /*==>討 Row:87 Col:48 */
+    /*0x9910, GB2312 Code:*/ 0xB2CD, /*==>꽜 Row:18 Col:45 */
+    /*0x992E, GB2312 Code:*/ 0xF7D1, /*==>慟 Row:87 Col:49 */
+    /*0x9954, GB2312 Code:*/ 0xF7D3, /*==>洞 Row:87 Col:51 */
+    /*0x9955, GB2312 Code:*/ 0xF7D2, /*==>桶 Row:87 Col:50 */
+    /*0x9963, GB2312 Code:*/ 0xE2BB, /*==>脩 Row:66 Col:27 */
+    /*0x9965, GB2312 Code:*/ 0xBCA2, /*==>샨 Row:28 Col:02 */
+    /*0x9967, GB2312 Code:*/ 0xE2BC, /*==>茱 Row:66 Col:28 */
+    /*0x9968, GB2312 Code:*/ 0xE2BD, /*==>蒐 Row:66 Col:29 */
+    /*0x9969, GB2312 Code:*/ 0xE2BE, /*==>蓚 Row:66 Col:30 */
+    /*0x996A, GB2312 Code:*/ 0xE2BF, /*==>藪 Row:66 Col:31 */
+    /*0x996B, GB2312 Code:*/ 0xE2C0, /*==>袖 Row:66 Col:32 */
+    /*0x996C, GB2312 Code:*/ 0xE2C1, /*==>誰 Row:66 Col:33 */
+    /*0x996D, GB2312 Code:*/ 0xB7B9, /*==>레 Row:23 Col:25 */
+    /*0x996E, GB2312 Code:*/ 0xD2FB, /*==>匿 Row:50 Col:91 */
+    /*0x996F, GB2312 Code:*/ 0xBDA4, /*==>숴 Row:29 Col:04 */
+    /*0x9970, GB2312 Code:*/ 0xCACE, /*==>干 Row:42 Col:46 */
+    /*0x9971, GB2312 Code:*/ 0xB1A5, /*==>괘 Row:17 Col:05 */
+    /*0x9972, GB2312 Code:*/ 0xCBC7, /*==>改 Row:43 Col:39 */
+    /*0x9974, GB2312 Code:*/ 0xE2C2, /*==>讐 Row:66 Col:34 */
+    /*0x9975, GB2312 Code:*/ 0xB6FC, /*==>랒 Row:22 Col:92 */
+    /*0x9976, GB2312 Code:*/ 0xC8C4, /*==>후 Row:40 Col:36 */
+    /*0x9977, GB2312 Code:*/ 0xE2C3, /*==>輸 Row:66 Col:35 */
+    /*0x997A, GB2312 Code:*/ 0xBDC8, /*==>싫 Row:29 Col:40 */
+    /*0x997C, GB2312 Code:*/ 0xB1FD, /*==>깰 Row:17 Col:93 */
+    /*0x997D, GB2312 Code:*/ 0xE2C4, /*==>遂 Row:66 Col:36 */
+    /*0x997F, GB2312 Code:*/ 0xB6F6, /*==>랄 Row:22 Col:86 */
+    /*0x9980, GB2312 Code:*/ 0xE2C5, /*==>邃 Row:66 Col:37 */
+    /*0x9981, GB2312 Code:*/ 0xC4D9, /*==>켸 Row:36 Col:57 */
+    /*0x9984, GB2312 Code:*/ 0xE2C6, /*==>酬 Row:66 Col:38 */
+    /*0x9985, GB2312 Code:*/ 0xCFDA, /*==>軍 Row:47 Col:58 */
+    /*0x9986, GB2312 Code:*/ 0xB9DD, /*==>반 Row:25 Col:61 */
+    /*0x9987, GB2312 Code:*/ 0xE2C7, /*==>銖 Row:66 Col:39 */
+    /*0x9988, GB2312 Code:*/ 0xC0A1, /*==>웩 Row:32 Col:01 */
+    /*0x998A, GB2312 Code:*/ 0xE2C8, /*==>銹 Row:66 Col:40 */
+    /*0x998B, GB2312 Code:*/ 0xB2F6, /*==>끈 Row:18 Col:86 */
+    /*0x998D, GB2312 Code:*/ 0xE2C9, /*==>隋 Row:66 Col:41 */
+    /*0x998F, GB2312 Code:*/ 0xC1F3, /*==>즙 Row:33 Col:83 */
+    /*0x9990, GB2312 Code:*/ 0xE2CA, /*==>隧 Row:66 Col:42 */
+    /*0x9991, GB2312 Code:*/ 0xE2CB, /*==>隨 Row:66 Col:43 */
+    /*0x9992, GB2312 Code:*/ 0xC2F8, /*==>착 Row:34 Col:88 */
+    /*0x9993, GB2312 Code:*/ 0xE2CC, /*==>雖 Row:66 Col:44 */
+    /*0x9994, GB2312 Code:*/ 0xE2CD, /*==>需 Row:66 Col:45 */
+    /*0x9995, GB2312 Code:*/ 0xE2CE, /*==>須 Row:66 Col:46 */
+    /*0x9996, GB2312 Code:*/ 0xCAD7, /*==>看 Row:42 Col:55 */
+    /*0x9997, GB2312 Code:*/ 0xD8B8, /*==>挽 Row:56 Col:24 */
+    /*0x9998, GB2312 Code:*/ 0xD9E5, /*==>懋 Row:57 Col:69 */
+    /*0x9999, GB2312 Code:*/ 0xCFE3, /*==>窮 Row:47 Col:67 */
+    /*0x99A5, GB2312 Code:*/ 0xF0A5, /*==>劑 Row:80 Col:05 */
+    /*0x99A8, GB2312 Code:*/ 0xDCB0, /*==>丙 Row:60 Col:16 */
+    /*0x9A6C, GB2312 Code:*/ 0xC2ED, /*==>쯩 Row:34 Col:77 */
+    /*0x9A6D, GB2312 Code:*/ 0xD4A6, /*==>濤 Row:52 Col:06 */
+    /*0x9A6E, GB2312 Code:*/ 0xCDD4, /*==>高 Row:45 Col:52 */
+    /*0x9A6F, GB2312 Code:*/ 0xD1B1, /*==>畸 Row:49 Col:17 */
+    /*0x9A70, GB2312 Code:*/ 0xB3DB, /*==>넴 Row:19 Col:59 */
+    /*0x9A71, GB2312 Code:*/ 0xC7FD, /*==>혜 Row:39 Col:93 */
+    /*0x9A73, GB2312 Code:*/ 0xB2B5, /*==>껨 Row:18 Col:21 */
+    /*0x9A74, GB2312 Code:*/ 0xC2BF, /*==>쩔 Row:34 Col:31 */
+    /*0x9A75, GB2312 Code:*/ 0xE6E0, /*==>縯 Row:70 Col:64 */
+    /*0x9A76, GB2312 Code:*/ 0xCABB, /*==>軻 Row:42 Col:27 */
+    /*0x9A77, GB2312 Code:*/ 0xE6E1, /*==>聯 Row:70 Col:65 */
+    /*0x9A78, GB2312 Code:*/ 0xE6E2, /*==>衍 Row:70 Col:66 */
+    /*0x9A79, GB2312 Code:*/ 0xBED4, /*==>앝 Row:30 Col:52 */
+    /*0x9A7A, GB2312 Code:*/ 0xE6E3, /*==>軟 Row:70 Col:67 */
+    /*0x9A7B, GB2312 Code:*/ 0xD7A4, /*==>壘 Row:55 Col:04 */
+    /*0x9A7C, GB2312 Code:*/ 0xCDD5, /*==>鼓 Row:45 Col:53 */
+    /*0x9A7D, GB2312 Code:*/ 0xE6E5, /*==>蓮 Row:70 Col:69 */
+    /*0x9A7E, GB2312 Code:*/ 0xBCDD, /*==>솨 Row:28 Col:61 */
+    /*0x9A7F, GB2312 Code:*/ 0xE6E4, /*==>輦 Row:70 Col:68 */
+    /*0x9A80, GB2312 Code:*/ 0xE6E6, /*==>連 Row:70 Col:70 */
+    /*0x9A81, GB2312 Code:*/ 0xE6E7, /*==>鉛 Row:70 Col:71 */
+    /*0x9A82, GB2312 Code:*/ 0xC2EE, /*==>찌 Row:34 Col:78 */
+    /*0x9A84, GB2312 Code:*/ 0xBDBE, /*==>슭 Row:29 Col:30 */
+    /*0x9A85, GB2312 Code:*/ 0xE6E8, /*==>鍊 Row:70 Col:72 */
+    /*0x9A86, GB2312 Code:*/ 0xC2E6, /*==>쭸 Row:34 Col:70 */
+    /*0x9A87, GB2312 Code:*/ 0xBAA7, /*==>벨 Row:26 Col:07 */
+    /*0x9A88, GB2312 Code:*/ 0xE6E9, /*==>鳶 Row:70 Col:73 */
+    /*0x9A8A, GB2312 Code:*/ 0xE6EA, /*==>列 Row:70 Col:74 */
+    /*0x9A8B, GB2312 Code:*/ 0xB3D2, /*==>넙 Row:19 Col:50 */
+    /*0x9A8C, GB2312 Code:*/ 0xD1E9, /*==>駱 Row:49 Col:73 */
+    /*0x9A8F, GB2312 Code:*/ 0xBFA5, /*==>엠 Row:31 Col:05 */
+    /*0x9A90, GB2312 Code:*/ 0xE6EB, /*==>劣 Row:70 Col:75 */
+    /*0x9A91, GB2312 Code:*/ 0xC6EF, /*==>폄 Row:38 Col:79 */
+    /*0x9A92, GB2312 Code:*/ 0xE6EC, /*==>咽 Row:70 Col:76 */
+    /*0x9A93, GB2312 Code:*/ 0xE6ED, /*==>悅 Row:70 Col:77 */
+    /*0x9A96, GB2312 Code:*/ 0xE6EE, /*==>涅 Row:70 Col:78 */
+    /*0x9A97, GB2312 Code:*/ 0xC6AD, /*==>튱 Row:38 Col:13 */
+    /*0x9A98, GB2312 Code:*/ 0xE6EF, /*==>烈 Row:70 Col:79 */
+    /*0x9A9A, GB2312 Code:*/ 0xC9A7, /*==>� Row:41 Col:07 */
+    /*0x9A9B, GB2312 Code:*/ 0xE6F0, /*==>熱 Row:70 Col:80 */
+    /*0x9A9C, GB2312 Code:*/ 0xE6F1, /*==>裂 Row:70 Col:81 */
+    /*0x9A9D, GB2312 Code:*/ 0xE6F2, /*==>說 Row:70 Col:82 */
+    /*0x9A9E, GB2312 Code:*/ 0xE5B9, /*==>亮 Row:69 Col:25 */
+    /*0x9A9F, GB2312 Code:*/ 0xE6F3, /*==>閱 Row:70 Col:83 */
+    /*0x9AA0, GB2312 Code:*/ 0xE6F4, /*==>厭 Row:70 Col:84 */
+    /*0x9AA1, GB2312 Code:*/ 0xC2E2, /*==>쭘 Row:34 Col:66 */
+    /*0x9AA2, GB2312 Code:*/ 0xE6F5, /*==>廉 Row:70 Col:85 */
+    /*0x9AA3, GB2312 Code:*/ 0xE6F6, /*==>念 Row:70 Col:86 */
+    /*0x9AA4, GB2312 Code:*/ 0xD6E8, /*==>朧 Row:54 Col:72 */
+    /*0x9AA5, GB2312 Code:*/ 0xE6F7, /*==>捻 Row:70 Col:87 */
+    /*0x9AA7, GB2312 Code:*/ 0xE6F8, /*==>染 Row:70 Col:88 */
+    /*0x9AA8, GB2312 Code:*/ 0xB9C7, /*==>므 Row:25 Col:39 */
+    /*0x9AB0, GB2312 Code:*/ 0xF7BB, /*==>台 Row:87 Col:27 */
+    /*0x9AB1, GB2312 Code:*/ 0xF7BA, /*==>兌 Row:87 Col:26 */
+    /*0x9AB6, GB2312 Code:*/ 0xF7BE, /*==>態 Row:87 Col:30 */
+    /*0x9AB7, GB2312 Code:*/ 0xF7BC, /*==>太 Row:87 Col:28 */
+    /*0x9AB8, GB2312 Code:*/ 0xBAA1, /*==>벙 Row:26 Col:01 */
+    /*0x9ABA, GB2312 Code:*/ 0xF7BF, /*==>殆 Row:87 Col:31 */
+    /*0x9ABC, GB2312 Code:*/ 0xF7C0, /*==>汰 Row:87 Col:32 */
+    /*0x9AC0, GB2312 Code:*/ 0xF7C2, /*==>笞 Row:87 Col:34 */
+    /*0x9AC1, GB2312 Code:*/ 0xF7C1, /*==>泰 Row:87 Col:33 */
+    /*0x9AC2, GB2312 Code:*/ 0xF7C4, /*==>苔 Row:87 Col:36 */
+    /*0x9AC5, GB2312 Code:*/ 0xF7C3, /*==>胎 Row:87 Col:35 */
+    /*0x9ACB, GB2312 Code:*/ 0xF7C5, /*==>跆 Row:87 Col:37 */
+    /*0x9ACC, GB2312 Code:*/ 0xF7C6, /*==>邰 Row:87 Col:38 */
+    /*0x9AD1, GB2312 Code:*/ 0xF7C7, /*==>颱 Row:87 Col:39 */
+    /*0x9AD3, GB2312 Code:*/ 0xCBE8, /*==>遽 Row:43 Col:72 */
+    /*0x9AD8, GB2312 Code:*/ 0xB8DF, /*==>멕 Row:24 Col:63 */
+    /*0x9ADF, GB2312 Code:*/ 0xF7D4, /*==>痛 Row:87 Col:52 */
+    /*0x9AE1, GB2312 Code:*/ 0xF7D5, /*==>筒 Row:87 Col:53 */
+    /*0x9AE6, GB2312 Code:*/ 0xF7D6, /*==>統 Row:87 Col:54 */
+    /*0x9AEB, GB2312 Code:*/ 0xF7D8, /*==>堆 Row:87 Col:56 */
+    /*0x9AED, GB2312 Code:*/ 0xF7DA, /*==>腿 Row:87 Col:58 */
+    /*0x9AEF, GB2312 Code:*/ 0xF7D7, /*==>通 Row:87 Col:55 */
+    /*0x9AF9, GB2312 Code:*/ 0xF7DB, /*==>褪 Row:87 Col:59 */
+    /*0x9AFB, GB2312 Code:*/ 0xF7D9, /*==>槌 Row:87 Col:57 */
+    /*0x9B03, GB2312 Code:*/ 0xD7D7, /*==>利 Row:55 Col:55 */
+    /*0x9B08, GB2312 Code:*/ 0xF7DC, /*==>退 Row:87 Col:60 */
+    /*0x9B0F, GB2312 Code:*/ 0xF7DD, /*==>頹 Row:87 Col:61 */
+    /*0x9B13, GB2312 Code:*/ 0xF7DE, /*==>偸 Row:87 Col:62 */
+    /*0x9B1F, GB2312 Code:*/ 0xF7DF, /*==>套 Row:87 Col:63 */
+    /*0x9B23, GB2312 Code:*/ 0xF7E0, /*==>妬 Row:87 Col:64 */
+    /*0x9B2F, GB2312 Code:*/ 0xDBCB, /*==>湃 Row:59 Col:43 */
+    /*0x9B32, GB2312 Code:*/ 0xD8AA, /*==>魔 Row:56 Col:10 */
+    /*0x9B3B, GB2312 Code:*/ 0xE5F7, /*==>円 Row:69 Col:87 */
+    /*0x9B3C, GB2312 Code:*/ 0xB9ED, /*==>뱁 Row:25 Col:77 */
+    /*0x9B41, GB2312 Code:*/ 0xBFFD, /*==>웡 Row:31 Col:93 */
+    /*0x9B42, GB2312 Code:*/ 0xBBEA, /*==>산 Row:27 Col:74 */
+    /*0x9B43, GB2312 Code:*/ 0xF7C9, /*==>擇 Row:87 Col:41 */
+    /*0x9B44, GB2312 Code:*/ 0xC6C7, /*==>판 Row:38 Col:39 */
+    /*0x9B45, GB2312 Code:*/ 0xF7C8, /*==>宅 Row:87 Col:40 */
+    /*0x9B47, GB2312 Code:*/ 0xF7CA, /*==>澤 Row:87 Col:42 */
+    /*0x9B48, GB2312 Code:*/ 0xF7CC, /*==>攄 Row:87 Col:44 */
+    /*0x9B49, GB2312 Code:*/ 0xF7CB, /*==>撑 Row:87 Col:43 */
+    /*0x9B4D, GB2312 Code:*/ 0xF7CD, /*==>兎 Row:87 Col:45 */
+    /*0x9B4F, GB2312 Code:*/ 0xCEBA, /*==>觀 Row:46 Col:26 */
+    /*0x9B51, GB2312 Code:*/ 0xF7CE, /*==>吐 Row:87 Col:46 */
+    /*0x9B54, GB2312 Code:*/ 0xC4A7, /*==>침 Row:36 Col:07 */
+    /*0x9C7C, GB2312 Code:*/ 0xD3E3, /*==>戴 Row:51 Col:67 */
+    /*0x9C7F, GB2312 Code:*/ 0xF6CF, /*==>勅 Row:86 Col:47 */
+    /*0x9C81, GB2312 Code:*/ 0xC2B3, /*==>쨀 Row:34 Col:19 */
+    /*0x9C82, GB2312 Code:*/ 0xF6D0, /*==>飭 Row:86 Col:48 */
+    /*0x9C85, GB2312 Code:*/ 0xF6D1, /*==>親 Row:86 Col:49 */
+    /*0x9C86, GB2312 Code:*/ 0xF6D2, /*==>七 Row:86 Col:50 */
+    /*0x9C87, GB2312 Code:*/ 0xF6D3, /*==>柒 Row:86 Col:51 */
+    /*0x9C88, GB2312 Code:*/ 0xF6D4, /*==>漆 Row:86 Col:52 */
+    /*0x9C8B, GB2312 Code:*/ 0xF6D6, /*==>寢 Row:86 Col:54 */
+    /*0x9C8D, GB2312 Code:*/ 0xB1AB, /*==>괴 Row:17 Col:11 */
+    /*0x9C8E, GB2312 Code:*/ 0xF6D7, /*==>枕 Row:86 Col:55 */
+    /*0x9C90, GB2312 Code:*/ 0xF6D8, /*==>沈 Row:86 Col:56 */
+    /*0x9C91, GB2312 Code:*/ 0xF6D9, /*==>浸 Row:86 Col:57 */
+    /*0x9C92, GB2312 Code:*/ 0xF6DA, /*==>琛 Row:86 Col:58 */
+    /*0x9C94, GB2312 Code:*/ 0xF6DB, /*==>砧 Row:86 Col:59 */
+    /*0x9C95, GB2312 Code:*/ 0xF6DC, /*==>針 Row:86 Col:60 */
+    /*0x9C9A, GB2312 Code:*/ 0xF6DD, /*==>鍼 Row:86 Col:61 */
+    /*0x9C9B, GB2312 Code:*/ 0xF6DE, /*==>蟄 Row:86 Col:62 */
+    /*0x9C9C, GB2312 Code:*/ 0xCFCA, /*==>銶 Row:47 Col:42 */
+    /*0x9C9E, GB2312 Code:*/ 0xF6DF, /*==>秤 Row:86 Col:63 */
+    /*0x9C9F, GB2312 Code:*/ 0xF6E0, /*==>稱 Row:86 Col:64 */
+    /*0x9CA0, GB2312 Code:*/ 0xF6E1, /*==>快 Row:86 Col:65 */
+    /*0x9CA1, GB2312 Code:*/ 0xF6E2, /*==>他 Row:86 Col:66 */
+    /*0x9CA2, GB2312 Code:*/ 0xF6E3, /*==>咤 Row:86 Col:67 */
+    /*0x9CA3, GB2312 Code:*/ 0xF6E4, /*==>唾 Row:86 Col:68 */
+    /*0x9CA4, GB2312 Code:*/ 0xC0F0, /*==>쟈 Row:32 Col:80 */
+    /*0x9CA5, GB2312 Code:*/ 0xF6E5, /*==>墮 Row:86 Col:69 */
+    /*0x9CA6, GB2312 Code:*/ 0xF6E6, /*==>妥 Row:86 Col:70 */
+    /*0x9CA7, GB2312 Code:*/ 0xF6E7, /*==>惰 Row:86 Col:71 */
+    /*0x9CA8, GB2312 Code:*/ 0xF6E8, /*==>打 Row:86 Col:72 */
+    /*0x9CA9, GB2312 Code:*/ 0xF6E9, /*==>拖 Row:86 Col:73 */
+    /*0x9CAB, GB2312 Code:*/ 0xF6EA, /*==>朶 Row:86 Col:74 */
+    /*0x9CAD, GB2312 Code:*/ 0xF6EB, /*==>楕 Row:86 Col:75 */
+    /*0x9CAE, GB2312 Code:*/ 0xF6EC, /*==>舵 Row:86 Col:76 */
+    /*0x9CB0, GB2312 Code:*/ 0xF6ED, /*==>陀 Row:86 Col:77 */
+    /*0x9CB1, GB2312 Code:*/ 0xF6EE, /*==>馱 Row:86 Col:78 */
+    /*0x9CB2, GB2312 Code:*/ 0xF6EF, /*==>駝 Row:86 Col:79 */
+    /*0x9CB3, GB2312 Code:*/ 0xF6F0, /*==>倬 Row:86 Col:80 */
+    /*0x9CB4, GB2312 Code:*/ 0xF6F1, /*==>卓 Row:86 Col:81 */
+    /*0x9CB5, GB2312 Code:*/ 0xF6F2, /*==>啄 Row:86 Col:82 */
+    /*0x9CB6, GB2312 Code:*/ 0xF6F3, /*==>坼 Row:86 Col:83 */
+    /*0x9CB7, GB2312 Code:*/ 0xF6F4, /*==>度 Row:86 Col:84 */
+    /*0x9CB8, GB2312 Code:*/ 0xBEA8, /*==>쑬 Row:30 Col:08 */
+    /*0x9CBA, GB2312 Code:*/ 0xF6F5, /*==>托 Row:86 Col:85 */
+    /*0x9CBB, GB2312 Code:*/ 0xF6F6, /*==>拓 Row:86 Col:86 */
+    /*0x9CBC, GB2312 Code:*/ 0xF6F7, /*==>擢 Row:86 Col:87 */
+    /*0x9CBD, GB2312 Code:*/ 0xF6F8, /*==>晫 Row:86 Col:88 */
+    /*0x9CC3, GB2312 Code:*/ 0xC8FA, /*==>힐 Row:40 Col:90 */
+    /*0x9CC4, GB2312 Code:*/ 0xF6F9, /*==>柝 Row:86 Col:89 */
+    /*0x9CC5, GB2312 Code:*/ 0xF6FA, /*==>濁 Row:86 Col:90 */
+    /*0x9CC6, GB2312 Code:*/ 0xF6FB, /*==>濯 Row:86 Col:91 */
+    /*0x9CC7, GB2312 Code:*/ 0xF6FC, /*==>琢 Row:86 Col:92 */
+    /*0x9CCA, GB2312 Code:*/ 0xF6FD, /*==>琸 Row:86 Col:93 */
+    /*0x9CCB, GB2312 Code:*/ 0xF6FE, /*==>託 Row:86 Col:94 */
+    /*0x9CCC, GB2312 Code:*/ 0xF7A1, /*==>鐸 Row:87 Col:01 */
+    /*0x9CCD, GB2312 Code:*/ 0xF7A2, /*==>呑 Row:87 Col:02 */
+    /*0x9CCE, GB2312 Code:*/ 0xF7A3, /*==>嘆 Row:87 Col:03 */
+    /*0x9CCF, GB2312 Code:*/ 0xF7A4, /*==>坦 Row:87 Col:04 */
+    /*0x9CD0, GB2312 Code:*/ 0xF7A5, /*==>彈 Row:87 Col:05 */
+    /*0x9CD3, GB2312 Code:*/ 0xF7A6, /*==>憚 Row:87 Col:06 */
+    /*0x9CD4, GB2312 Code:*/ 0xF7A7, /*==>歎 Row:87 Col:07 */
+    /*0x9CD5, GB2312 Code:*/ 0xF7A8, /*==>灘 Row:87 Col:08 */
+    /*0x9CD6, GB2312 Code:*/ 0xB1EE, /*==>까 Row:17 Col:78 */
+    /*0x9CD7, GB2312 Code:*/ 0xF7A9, /*==>炭 Row:87 Col:09 */
+    /*0x9CD8, GB2312 Code:*/ 0xF7AA, /*==>綻 Row:87 Col:10 */
+    /*0x9CD9, GB2312 Code:*/ 0xF7AB, /*==>誕 Row:87 Col:11 */
+    /*0x9CDC, GB2312 Code:*/ 0xF7AC, /*==>奪 Row:87 Col:12 */
+    /*0x9CDD, GB2312 Code:*/ 0xF7AD, /*==>脫 Row:87 Col:13 */
+    /*0x9CDE, GB2312 Code:*/ 0xC1DB, /*==>줆 Row:33 Col:59 */
+    /*0x9CDF, GB2312 Code:*/ 0xF7AE, /*==>探 Row:87 Col:14 */
+    /*0x9CE2, GB2312 Code:*/ 0xF7AF, /*==>眈 Row:87 Col:15 */
+    /*0x9E1F, GB2312 Code:*/ 0xC4F1, /*==>쿰 Row:36 Col:81 */
+    /*0x9E20, GB2312 Code:*/ 0xF0AF, /*==>第 Row:80 Col:15 */
+    /*0x9E21, GB2312 Code:*/ 0xBCA6, /*==>샷 Row:28 Col:06 */
+    /*0x9E22, GB2312 Code:*/ 0xF0B0, /*==>臍 Row:80 Col:16 */
+    /*0x9E23, GB2312 Code:*/ 0xC3F9, /*==>츤 Row:35 Col:89 */
+    /*0x9E25, GB2312 Code:*/ 0xC5B8, /*==>타 Row:37 Col:24 */
+    /*0x9E26, GB2312 Code:*/ 0xD1BB, /*==>綺 Row:49 Col:27 */
+    /*0x9E28, GB2312 Code:*/ 0xF0B1, /*==>薺 Row:80 Col:17 */
+    /*0x9E29, GB2312 Code:*/ 0xF0B2, /*==>製 Row:80 Col:18 */
+    /*0x9E2A, GB2312 Code:*/ 0xF0B3, /*==>諸 Row:80 Col:19 */
+    /*0x9E2B, GB2312 Code:*/ 0xF0B4, /*==>蹄 Row:80 Col:20 */
+    /*0x9E2C, GB2312 Code:*/ 0xF0B5, /*==>醍 Row:80 Col:21 */
+    /*0x9E2D, GB2312 Code:*/ 0xD1BC, /*==>羈 Row:49 Col:28 */
+    /*0x9E2F, GB2312 Code:*/ 0xD1EC, /*==>暖 Row:49 Col:76 */
+    /*0x9E31, GB2312 Code:*/ 0xF0B7, /*==>際 Row:80 Col:23 */
+    /*0x9E32, GB2312 Code:*/ 0xF0B6, /*==>除 Row:80 Col:22 */
+    /*0x9E33, GB2312 Code:*/ 0xD4A7, /*==>燾 Row:52 Col:07 */
+    /*0x9E35, GB2312 Code:*/ 0xCDD2, /*==>雇 Row:45 Col:50 */
+    /*0x9E36, GB2312 Code:*/ 0xF0B8, /*==>霽 Row:80 Col:24 */
+    /*0x9E37, GB2312 Code:*/ 0xF0BA, /*==>齊 Row:80 Col:26 */
+    /*0x9E38, GB2312 Code:*/ 0xF0B9, /*==>題 Row:80 Col:25 */
+    /*0x9E39, GB2312 Code:*/ 0xF0BB, /*==>俎 Row:80 Col:27 */
+    /*0x9E3A, GB2312 Code:*/ 0xF0BC, /*==>兆 Row:80 Col:28 */
+    /*0x9E3D, GB2312 Code:*/ 0xB8EB, /*==>몃 Row:24 Col:75 */
+    /*0x9E3E, GB2312 Code:*/ 0xF0BD, /*==>凋 Row:80 Col:29 */
+    /*0x9E3F, GB2312 Code:*/ 0xBAE8, /*==>븃 Row:26 Col:72 */
+    /*0x9E41, GB2312 Code:*/ 0xF0BE, /*==>助 Row:80 Col:30 */
+    /*0x9E42, GB2312 Code:*/ 0xF0BF, /*==>嘲 Row:80 Col:31 */
+    /*0x9E43, GB2312 Code:*/ 0xBEE9, /*==>얗 Row:30 Col:73 */
+    /*0x9E44, GB2312 Code:*/ 0xF0C0, /*==>弔 Row:80 Col:32 */
+    /*0x9E45, GB2312 Code:*/ 0xB6EC, /*==>띠 Row:22 Col:76 */
+    /*0x9E46, GB2312 Code:*/ 0xF0C1, /*==>彫 Row:80 Col:33 */
+    /*0x9E47, GB2312 Code:*/ 0xF0C2, /*==>措 Row:80 Col:34 */
+    /*0x9E48, GB2312 Code:*/ 0xF0C3, /*==>操 Row:80 Col:35 */
+    /*0x9E49, GB2312 Code:*/ 0xF0C4, /*==>早 Row:80 Col:36 */
+    /*0x9E4A, GB2312 Code:*/ 0xC8B5, /*==>홴 Row:40 Col:21 */
+    /*0x9E4B, GB2312 Code:*/ 0xF0C5, /*==>晁 Row:80 Col:37 */
+    /*0x9E4C, GB2312 Code:*/ 0xF0C6, /*==>曺 Row:80 Col:38 */
+    /*0x9E4E, GB2312 Code:*/ 0xF0C7, /*==>曹 Row:80 Col:39 */
+    /*0x9E4F, GB2312 Code:*/ 0xC5F4, /*==>툐 Row:37 Col:84 */
+    /*0x9E51, GB2312 Code:*/ 0xF0C8, /*==>朝 Row:80 Col:40 */
+    /*0x9E55, GB2312 Code:*/ 0xF0C9, /*==>條 Row:80 Col:41 */
+    /*0x9E57, GB2312 Code:*/ 0xF0CA, /*==>棗 Row:80 Col:42 */
+    /*0x9E58, GB2312 Code:*/ 0xF7BD, /*==>怠 Row:87 Col:29 */
+    /*0x9E5A, GB2312 Code:*/ 0xF0CB, /*==>槽 Row:80 Col:43 */
+    /*0x9E5B, GB2312 Code:*/ 0xF0CC, /*==>漕 Row:80 Col:44 */
+    /*0x9E5C, GB2312 Code:*/ 0xF0CD, /*==>潮 Row:80 Col:45 */
+    /*0x9E5E, GB2312 Code:*/ 0xF0CE, /*==>照 Row:80 Col:46 */
+    /*0x9E63, GB2312 Code:*/ 0xF0CF, /*==>燥 Row:80 Col:47 */
+    /*0x9E64, GB2312 Code:*/ 0xBAD7, /*==>붓 Row:26 Col:55 */
+    /*0x9E66, GB2312 Code:*/ 0xF0D0, /*==>爪 Row:80 Col:48 */
+    /*0x9E67, GB2312 Code:*/ 0xF0D1, /*==>璪 Row:80 Col:49 */
+    /*0x9E68, GB2312 Code:*/ 0xF0D2, /*==>眺 Row:80 Col:50 */
+    /*0x9E69, GB2312 Code:*/ 0xF0D3, /*==>祖 Row:80 Col:51 */
+    /*0x9E6A, GB2312 Code:*/ 0xF0D4, /*==>祚 Row:80 Col:52 */
+    /*0x9E6B, GB2312 Code:*/ 0xF0D5, /*==>租 Row:80 Col:53 */
+    /*0x9E6C, GB2312 Code:*/ 0xF0D6, /*==>稠 Row:80 Col:54 */
+    /*0x9E6D, GB2312 Code:*/ 0xF0D8, /*==>粗 Row:80 Col:56 */
+    /*0x9E70, GB2312 Code:*/ 0xD3A5, /*==>團 Row:51 Col:05 */
+    /*0x9E71, GB2312 Code:*/ 0xF0D7, /*==>窕 Row:80 Col:55 */
+    /*0x9E73, GB2312 Code:*/ 0xF0D9, /*==>糟 Row:80 Col:57 */
+    /*0x9E7E, GB2312 Code:*/ 0xF5BA, /*==>觸 Row:85 Col:26 */
+    /*0x9E7F, GB2312 Code:*/ 0xC2B9, /*==>쨔 Row:34 Col:25 */
+    /*0x9E82, GB2312 Code:*/ 0xF7E4, /*==>慝 Row:87 Col:68 */
+    /*0x9E87, GB2312 Code:*/ 0xF7E5, /*==>特 Row:87 Col:69 */
+    /*0x9E88, GB2312 Code:*/ 0xF7E6, /*==>闖 Row:87 Col:70 */
+    /*0x9E8B, GB2312 Code:*/ 0xF7E7, /*==>坡 Row:87 Col:71 */
+    /*0x9E92, GB2312 Code:*/ 0xF7E8, /*==>婆 Row:87 Col:72 */
+    /*0x9E93, GB2312 Code:*/ 0xC2B4, /*==>쨈 Row:34 Col:20 */
+    /*0x9E9D, GB2312 Code:*/ 0xF7EA, /*==>把 Row:87 Col:74 */
+    /*0x9E9F, GB2312 Code:*/ 0xF7EB, /*==>播 Row:87 Col:75 */
+    /*0x9EA6, GB2312 Code:*/ 0xC2F3, /*==>찝 Row:34 Col:83 */
+    /*0x9EB4, GB2312 Code:*/ 0xF4F0, /*==>替 Row:84 Col:80 */
+    /*0x9EB8, GB2312 Code:*/ 0xF4EF, /*==>剃 Row:84 Col:79 */
+    /*0x9EBB, GB2312 Code:*/ 0xC2E9, /*==>쮸 Row:34 Col:73 */
+    /*0x9EBD, GB2312 Code:*/ 0xF7E1, /*==>投 Row:87 Col:65 */
+    /*0x9EBE, GB2312 Code:*/ 0xF7E2, /*==>透 Row:87 Col:66 */
+    /*0x9EC4, GB2312 Code:*/ 0xBBC6, /*==>뼝 Row:27 Col:38 */
+    /*0x9EC9, GB2312 Code:*/ 0xD9E4, /*==>憮 Row:57 Col:68 */
+    /*0x9ECD, GB2312 Code:*/ 0xCAF2, /*==>敢 Row:42 Col:82 */
+    /*0x9ECE, GB2312 Code:*/ 0xC0E8, /*==>잭 Row:32 Col:72 */
+    /*0x9ECF, GB2312 Code:*/ 0xF0A4, /*==>制 Row:80 Col:04 */
+    /*0x9ED1, GB2312 Code:*/ 0xBADA, /*==>붚 Row:26 Col:58 */
+    /*0x9ED4, GB2312 Code:*/ 0xC7AD, /*==>푿 Row:39 Col:13 */
+    /*0x9ED8, GB2312 Code:*/ 0xC4AC, /*==>칵 Row:36 Col:12 */
+    /*0x9EDB, GB2312 Code:*/ 0xF7EC, /*==>擺 Row:87 Col:76 */
+    /*0x9EDC, GB2312 Code:*/ 0xF7ED, /*==>杷 Row:87 Col:77 */
+    /*0x9EDD, GB2312 Code:*/ 0xF7EE, /*==>波 Row:87 Col:78 */
+    /*0x9EDF, GB2312 Code:*/ 0xF7F0, /*==>爬 Row:87 Col:80 */
+    /*0x9EE0, GB2312 Code:*/ 0xF7EF, /*==>派 Row:87 Col:79 */
+    /*0x9EE2, GB2312 Code:*/ 0xF7F1, /*==>琶 Row:87 Col:81 */
+    /*0x9EE5, GB2312 Code:*/ 0xF7F4, /*==>芭 Row:87 Col:84 */
+    /*0x9EE7, GB2312 Code:*/ 0xF7F3, /*==>罷 Row:87 Col:83 */
+    /*0x9EE9, GB2312 Code:*/ 0xF7F2, /*==>破 Row:87 Col:82 */
+    /*0x9EEA, GB2312 Code:*/ 0xF7F5, /*==>跛 Row:87 Col:85 */
+    /*0x9EEF, GB2312 Code:*/ 0xF7F6, /*==>頗 Row:87 Col:86 */
+    /*0x9EF9, GB2312 Code:*/ 0xEDE9, /*==>樟 Row:77 Col:73 */
+    /*0x9EFB, GB2312 Code:*/ 0xEDEA, /*==>檣 Row:77 Col:74 */
+    /*0x9EFC, GB2312 Code:*/ 0xEDEB, /*==>欌 Row:77 Col:75 */
+    /*0x9EFE, GB2312 Code:*/ 0xF6BC, /*==>梔 Row:86 Col:28 */
+    /*0x9F0B, GB2312 Code:*/ 0xF6BD, /*==>治 Row:86 Col:29 */
+    /*0x9F0D, GB2312 Code:*/ 0xF6BE, /*==>淄 Row:86 Col:30 */
+    /*0x9F0E, GB2312 Code:*/ 0xB6A6, /*==>땋 Row:22 Col:06 */
+    /*0x9F10, GB2312 Code:*/ 0xD8BE, /*==>瞞 Row:56 Col:30 */
+    /*0x9F13, GB2312 Code:*/ 0xB9C4, /*==>뮬 Row:25 Col:36 */
+    /*0x9F17, GB2312 Code:*/ 0xD8BB, /*==>滿 Row:56 Col:27 */
+    /*0x9F19, GB2312 Code:*/ 0xDCB1, /*==>倂 Row:60 Col:17 */
+    /*0x9F20, GB2312 Code:*/ 0xCAF3, /*==>柑 Row:42 Col:83 */
+    /*0x9F22, GB2312 Code:*/ 0xF7F7, /*==>判 Row:87 Col:87 */
+    /*0x9F2C, GB2312 Code:*/ 0xF7F8, /*==>坂 Row:87 Col:88 */
+    /*0x9F2F, GB2312 Code:*/ 0xF7F9, /*==>板 Row:87 Col:89 */
+    /*0x9F37, GB2312 Code:*/ 0xF7FB, /*==>瓣 Row:87 Col:91 */
+    /*0x9F39, GB2312 Code:*/ 0xF7FA, /*==>版 Row:87 Col:90 */
+    /*0x9F3B, GB2312 Code:*/ 0xB1C7, /*==>권 Row:17 Col:39 */
+    /*0x9F3D, GB2312 Code:*/ 0xF7FC, /*==>販 Row:87 Col:92 */
+    /*0x9F3E, GB2312 Code:*/ 0xF7FD, /*==>辦 Row:87 Col:93 */
+    /*0x9F44, GB2312 Code:*/ 0xF7FE, /*==>鈑 Row:87 Col:94 */
+    /*0x9F50, GB2312 Code:*/ 0xC6EB, /*==>펭 Row:38 Col:75 */
+    /*0x9F51, GB2312 Code:*/ 0xECB4, /*==>珥 Row:76 Col:20 */
+    /*0x9F7F, GB2312 Code:*/ 0xB3DD, /*==>넷 Row:19 Col:61 */
+    /*0x9F80, GB2312 Code:*/ 0xF6B3, /*==>惻 Row:86 Col:19 */
+    /*0x9F83, GB2312 Code:*/ 0xF6B4, /*==>測 Row:86 Col:20 */
+    /*0x9F84, GB2312 Code:*/ 0xC1E4, /*==>쥑 Row:33 Col:68 */
+    /*0x9F85, GB2312 Code:*/ 0xF6B5, /*==>層 Row:86 Col:21 */
+    /*0x9F86, GB2312 Code:*/ 0xF6B6, /*==>侈 Row:86 Col:22 */
+    /*0x9F87, GB2312 Code:*/ 0xF6B7, /*==>値 Row:86 Col:23 */
+    /*0x9F88, GB2312 Code:*/ 0xF6B8, /*==>嗤 Row:86 Col:24 */
+    /*0x9F89, GB2312 Code:*/ 0xF6B9, /*==>峙 Row:86 Col:25 */
+    /*0x9F8A, GB2312 Code:*/ 0xF6BA, /*==>幟 Row:86 Col:26 */
+    /*0x9F8B, GB2312 Code:*/ 0xC8A3, /*==>호 Row:40 Col:03 */
+    /*0x9F8C, GB2312 Code:*/ 0xF6BB, /*==>恥 Row:86 Col:27 */
+    /*0x9F99, GB2312 Code:*/ 0xC1FA, /*==>질 Row:33 Col:90 */
+    /*0x9F9A, GB2312 Code:*/ 0xB9A8, /*==>묠 Row:25 Col:08 */
+    /*0x9F9B, GB2312 Code:*/ 0xEDE8, /*==>杖 Row:77 Col:72 */
+    /*0x9F9F, GB2312 Code:*/ 0xB9EA, /*==>밴 Row:25 Col:74 */
+    /*0x9FA0, GB2312 Code:*/ 0xD9DF, /*==>竗 Row:57 Col:63 */
+#if 0
+    /*0xE810, GB2312 Code:*/ 0xD7FA, /*==>?? Row:55 Col:90 */
+    /*0xE811, GB2312 Code:*/ 0xD7FB, /*==>?? Row:55 Col:91 */
+    /*0xE812, GB2312 Code:*/ 0xD7FC, /*==>?? Row:55 Col:92 */
+    /*0xE813, GB2312 Code:*/ 0xD7FD, /*==>?? Row:55 Col:93 */
+    /*0xE814  GB2312 Code:*/ 0xD7FE, /*==>?? Row:55 Col:94 */
+#endif
+};
+const u16 tab_UCS2_to_GBK[][2] =  
+{  
+   /*Unicode     GBK     俚 */  
+    {0x0023,     0x0023},
+    {0xFF0C,     0xA3AC},
+    {0x3002,     0xA1A3},
+    {0xFF1F,     0xA3BF},
+    {0xFF01,     0xA3A1},
+    {0xFF5E,     0xA1AB},
+    {0x3001,     0xA1A2},
+    {0xFF1A,     0xA3BA},
+    {0xFF03,     0xA3A3},
+    {0xFF1B,     0xA3BB},
+    {0xFF05,     0xA3A5},
+    {0xFF0A,     0xA3AA},
+    {0x2014,     0xA1AA},
+    {0x2026,     0xA1AD},
+    {0xFF06,     0xA3A6},
+    {0x00B7,     0xA1A4},
+    {0xFF04,     0xA1E7},
+    {0xFF08,     0xA3A8},
+    {0xFF09,     0xA3A9},
+    {0x2018,     0xA1AE},
+    {0x2019,     0xA1AF},
+    {0x201C,     0xA1B0},
+    {0x201D,     0xA1B1},
+    {0x005B,     0x005B},
+    {0x005D,     0x005D},
+    {0x300E,     0xA1BA},
+    {0x300F,     0xA1BB},
+    {0x3014,     0xA1B2},
+    {0x3015,     0xA1B3},
+    {0xFF5B,     0xA3FB},
+    {0xFF5D,     0xA3FD},
+    {0x3010,     0xA1BE},
+    {0x3011,     0xA1BF},
+    {0xFF5B,     0xA3FB},
+    {0xFF5D,     0xA3FD},
+    {0x3010,     0xA1BE},
+    {0x3011,     0xA1BF},
+    {0xFFE5,     0xA3A4},
+    {0xFFE1,     0xA1EA},
+    {0x2640,     0xA1E2},
+    {0x2016,     0xA1AC},
+    {0x3016,     0xA1BC},
+    {0x3017,     0xA1BD},
+    {0x300A,     0xA1B6},
+    {0x300B,     0xA1B7},
+    {0x300C,     0xA1B8},
+    {0x300D,     0xA1B9},
+    {0x002E,     0x002E},
+    {0x0040,     0x0040},
+    {0x007E,     0x007E},
+    {0x002D,     0x002D},
+    {0x002C,     0x002C},
+    {0x003A,     0x003A},
+    {0x002A,     0x002A},
+    {0x003F,     0x003F},
+    {0x0021,     0x0021},
+    {0x005F,     0x005F},
+    {0x0023,     0x0023},
+    {0x002F,     0x002F},
+    {0x003D,     0x003D},
+    {0x002B,     0x002B},
+    {0xFE49,     0xA968},
+    {0x0026,     0x0026},
+    {0x005E,     0x005E},
+    {0x003B,     0x003B},
+    {0x0025,     0x0025},
+    {0x2026,     0xA1AD},
+    {0x0024,     0x0024},
+    {0x0028,     0x0028},
+    {0x0029,     0x0029},
+    {0x005C,     0x005C},
+    {0x002E,     0x002E},
+    {0x003C,     0x003C},
+    {0x003E,     0x003E},
+    {0x007C,     0x007C},
+    {0x00B7,     0xA1A4},
+    {0x00A5,     0xA3A4},
+    {0x005B,     0x005B},
+    {0x005D,     0x005D},
+    {0x0022,     0x0022},
+    {0x007B,     0x007B},
+    {0x007D,     0x007D},
+    {0x2013,     0xA843},
+    {0x003C,     0x003C},
+    {0x003E,     0x003E},
+    {0x007C,     0x007C},
+    {0x00B7,     0xA1A4},
+    {0x00A5,     0xA3A4},
+    {0x005B,     0x5B20},
+    {0x005D,     0x005D},
+    {0x0022,     0x0022},
+    {0x007B,     0x007B},
+    {0x007D,     0x007D},
+    {0x2013,     0xA843},
+    {0x0027,     0x0027},
+    {0x20AC,     0x8020},
+};  

+ 373 - 0
luat/packages/iconv/utf8_to_ucs2.c

@@ -0,0 +1,373 @@
+/**************************************************************************
+ *              Copyright (C), AirM2M Tech. Co., Ltd.
+ *
+ * Name:    utf8_to_ucs2.c
+ * Author:  liweiqiang
+ * Version: V0.1
+ * Date:    2013/7/19
+ *
+ * Description:
+ *          utf8 转换为 ucs2 le/be
+ **************************************************************************/
+
+#include "stdio.h"
+#include "errno.h"
+
+#if 0
+/***************************************************************************** 
+ * 将一个字符的Unicode(UCS-2和UCS-4)编码转换成UTF-8编码. 
+ * 
+ * 参数: 
+ *    unic     字符的Unicode编码值 
+ *    pOutput  指向输出的用于存储UTF8编码值的缓冲区的指针 
+ *    outsize  pOutput缓冲的大小 
+ * 
+ * 返回值: 
+ *    返回转换后的字符的UTF8编码所占的字节数, 如果出错则返回 0 . 
+ * 
+ * 注意: 
+ *     1. UTF8没有字节序问题, 但是Unicode有字节序要求; 
+ *        字节序分为大端(Big Endian)和小端(Little Endian)两种; 
+ *        在Intel处理器中采用小端法表示, 在此采用小端法表示. (低地址存低位) 
+ *     2. 请保证 pOutput 缓冲区有最少有 6 字节的空间大小! 
+ ****************************************************************************/  
+static int enc_unicode_to_utf8_one(unsigned long unic, unsigned char *pOutput,  
+        int outSize)  
+{  
+    ASSERT(pOutput != NULL);  
+    ASSERT(outSize >= 6);  
+
+    if ( unic <= 0x0000007F )  
+    {  
+        // * U-00000000 - U-0000007F:  0xxxxxxx  
+        *pOutput     = (unic & 0x7F);  
+        return 1;  
+    }  
+    else if ( unic >= 0x00000080 && unic <= 0x000007FF )  
+    {  
+        // * U-00000080 - U-000007FF:  110xxxxx 10xxxxxx  
+        *(pOutput+1) = (unic & 0x3F) | 0x80;  
+        *pOutput     = ((unic >> 6) & 0x1F) | 0xC0;  
+        return 2;  
+    }  
+    else if ( unic >= 0x00000800 && unic <= 0x0000FFFF )  
+    {  
+        // * U-00000800 - U-0000FFFF:  1110xxxx 10xxxxxx 10xxxxxx  
+        *(pOutput+2) = (unic & 0x3F) | 0x80;  
+        *(pOutput+1) = ((unic >>  6) & 0x3F) | 0x80;  
+        *pOutput     = ((unic >> 12) & 0x0F) | 0xE0;  
+        return 3;  
+    }  
+    else if ( unic >= 0x00010000 && unic <= 0x001FFFFF )  
+    {  
+        // * U-00010000 - U-001FFFFF:  11110xxx 10xxxxxx 10xxxxxx 10xxxxxx  
+        *(pOutput+3) = (unic & 0x3F) | 0x80;  
+        *(pOutput+2) = ((unic >>  6) & 0x3F) | 0x80;  
+        *(pOutput+1) = ((unic >> 12) & 0x3F) | 0x80;  
+        *pOutput     = ((unic >> 18) & 0x07) | 0xF0;  
+        return 4;  
+    }  
+    else if ( unic >= 0x00200000 && unic <= 0x03FFFFFF )  
+    {  
+        // * U-00200000 - U-03FFFFFF:  111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx  
+        *(pOutput+4) = (unic & 0x3F) | 0x80;  
+        *(pOutput+3) = ((unic >>  6) & 0x3F) | 0x80;  
+        *(pOutput+2) = ((unic >> 12) & 0x3F) | 0x80;  
+        *(pOutput+1) = ((unic >> 18) & 0x3F) | 0x80;  
+        *pOutput     = ((unic >> 24) & 0x03) | 0xF8;  
+        return 5;  
+    }  
+    else if ( unic >= 0x04000000 && unic <= 0x7FFFFFFF )  
+    {  
+        // * U-04000000 - U-7FFFFFFF:  1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx  
+        *(pOutput+5) = (unic & 0x3F) | 0x80;  
+        *(pOutput+4) = ((unic >>  6) & 0x3F) | 0x80;  
+        *(pOutput+3) = ((unic >> 12) & 0x3F) | 0x80;  
+        *(pOutput+2) = ((unic >> 18) & 0x3F) | 0x80;  
+        *(pOutput+1) = ((unic >> 24) & 0x3F) | 0x80;  
+        *pOutput     = ((unic >> 30) & 0x01) | 0xFC;  
+        return 6;  
+    }  
+
+    return 0;  
+}  
+#endif
+
+static int enc_get_utf8_size(char c)
+{
+    int count = 0;
+    while (c & (1<<7))
+    {
+        c = c << 1;
+        count++;
+    }
+    return count == 0 ? 1 : count;
+}
+
+/***************************************************************************** 
+ * 将一个字符的UTF8编码转换成Unicode(UCS-2和UCS-4)编码. 
+ * 
+ * 参数: 
+ *    pInput      指向输入缓冲区, 以UTF-8编码 
+ *    pOutput     指向输出缓冲区, 其保存的数据即是Unicode编码值, 
+ *    endian      1 - big endian
+ *                0 - little endian
+ * 
+ * 返回值: 
+ *    成功则返回该字符的UTF8编码所占用的字节数; 失败则返回0. 
+ * 
+ * 注意: 
+ *     1. UTF8没有字节序问题, 但是Unicode有字节序要求; 
+ *        字节序分为大端(Big Endian)和小端(Little Endian)两种; 
+ *        在Intel处理器中采用小端法表示, 在此采用小端法表示. (低地址存低位) 
+ ****************************************************************************/  
+static int enc_utf8_to_unicode_one(const char* pInput, char* pOutput, int endian)
+{
+    char b1, b2, b3/*, b4, b5, b6*/;
+    int utfbytes = enc_get_utf8_size(*pInput);
+
+    switch ( utfbytes )
+    {
+        case 1:
+            if(endian)
+            {
+                *pOutput++ = 0x00;
+                *pOutput = *pInput;
+            }
+            else
+            {
+                *pOutput++ = *pInput;
+                *pOutput = 0x00;
+            }
+            return 2;
+        break;
+        case 2:
+            b1 = *pInput;
+            b2 = *(pInput + 1);
+            if ( (b2 & 0xE0) != 0x80 )
+            return -1;
+            if(endian)
+            {
+                *pOutput++ = (b1 >> 2) & 0x07;
+                *pOutput     = (b1 << 6) + (b2 & 0x3F);
+            }
+            else
+            {
+                *pOutput++     = (b1 << 6) + (b2 & 0x3F);
+                *pOutput = (b1 >> 2) & 0x07;
+            }
+            return 2;
+        break;
+        case 3:
+            b1 = *pInput;
+            b2 = *(pInput + 1);
+            b3 = *(pInput + 2);
+            if ( ((b2 & 0xC0) != 0x80) || ((b3 & 0xC0) != 0x80) )
+                return -1;
+            if(endian)
+            {
+                *pOutput++ = (b1 << 4) + ((b2 >> 2) & 0x0F);
+                *pOutput = (b2 << 6) + (b3 & 0x3F);
+            }
+            else
+            {
+                *pOutput++ = (b2 << 6) + (b3 & 0x3F);
+                *pOutput = (b1 << 4) + ((b2 >> 2) & 0x0F);
+            }
+            return 2;
+        break;
+#if 0
+        case 4:
+            b1 = *pInput;
+            b2 = *(pInput + 1);
+            b3 = *(pInput + 2);
+            b4 = *(pInput + 3);
+            if ( ((b2 & 0xC0) != 0x80) || ((b3 & 0xC0) != 0x80) 
+            || ((b4 & 0xC0) != 0x80) )
+                return -1;
+            *pOutput     = (b3 << 6) + (b4 & 0x3F);
+            *(pOutput+1) = (b2 << 4) + ((b3 >> 2) & 0x0F);
+            *(pOutput+2) = ((b1 << 2) & 0x1C)  + ((b2 >> 4) & 0x03);
+            return 3;
+        break;
+        case 5:
+            b1 = *pInput;
+            b2 = *(pInput + 1);
+            b3 = *(pInput + 2);
+            b4 = *(pInput + 3);
+            b5 = *(pInput + 4);
+            if ( ((b2 & 0xC0) != 0x80) || ((b3 & 0xC0) != 0x80) 
+            || ((b4 & 0xC0) != 0x80) || ((b5 & 0xC0) != 0x80) )
+                return -1;
+            *pOutput     = (b4 << 6) + (b5 & 0x3F);
+            *(pOutput+1) = (b3 << 4) + ((b4 >> 2) & 0x0F);
+            *(pOutput+2) = (b2 << 2) + ((b3 >> 4) & 0x03);
+            *(pOutput+3) = (b1 << 6);
+            return 4;
+        break;
+        case 6:
+            b1 = *pInput;
+            b2 = *(pInput + 1);
+            b3 = *(pInput + 2);
+            b4 = *(pInput + 3);
+            b5 = *(pInput + 4);
+            b6 = *(pInput + 5);
+            if ( ((b2 & 0xC0) != 0x80) || ((b3 & 0xC0) != 0x80) 
+            || ((b4 & 0xC0) != 0x80) || ((b5 & 0xC0) != 0x80) 
+            || ((b6 & 0xC0) != 0x80) )
+                return -1;
+            *pOutput     = (b5 << 6) + (b6 & 0x3F);
+            *(pOutput+1) = (b5 << 4) + ((b6 >> 2) & 0x0F);
+            *(pOutput+2) = (b3 << 2) + ((b4 >> 4) & 0x03);
+            *(pOutput+3) = ((b1 << 6) & 0x40) + (b2 & 0x3F);
+            return 4;
+        break;
+#endif
+        default:
+        break;
+    }
+
+    return -1;
+}
+
+static size_t enc_utf8_to_unicode(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft, int endian)
+{
+    size_t maxOLen = *outbytesleft;
+    size_t iLen = *inbytesleft;
+    char *src = *_inbuf;
+    char *dst = *_outbuf;
+    size_t iPos, oPos;
+    size_t utfbytes = 0, unicodeBytes = 0;
+    int result = 0;
+
+    for(iPos = 0, oPos = 0; iPos < iLen; )
+    {
+        if(oPos + 2 > maxOLen)
+        {
+            errno = E2BIG;
+            result = -1;
+            goto utf8_to_ucs2_exit;
+        }
+
+        utfbytes = enc_get_utf8_size(src[iPos]);
+
+        if(utfbytes == 0)
+            utfbytes = 1;
+
+        if((unicodeBytes = enc_utf8_to_unicode_one(&src[iPos], &dst[oPos], endian)) == -1)
+        {
+            errno = EINVAL;
+            result = -1;
+            break;
+        }
+
+        oPos += unicodeBytes;
+        iPos += utfbytes;
+    }
+
+utf8_to_ucs2_exit:
+    *inbytesleft -= iPos;
+    *_inbuf += iPos;
+    *outbytesleft -= oPos;
+
+    return (size_t)result;
+}
+
+size_t iconv_utf8_to_ucs2(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft)
+{
+    return enc_utf8_to_unicode(_inbuf, inbytesleft, _outbuf, outbytesleft, 0);
+}
+
+size_t iconv_utf8_to_ucs2be(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft)
+{
+    return enc_utf8_to_unicode(_inbuf, inbytesleft, _outbuf, outbytesleft, 1);
+}
+
+
+static size_t enc_unicode_to_utf8(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft, int endian)
+{
+    size_t maxOLen = *outbytesleft;
+    size_t iLen = *inbytesleft;
+    char *src = *_inbuf;
+    char *dst = *_outbuf;
+    size_t iPos, oPos;
+    size_t utfbytes = 0;
+    int result = 0;
+    size_t unicodeVal = 0;
+
+    for(iPos = 0, oPos = 0; iPos+1 < iLen;)
+    {
+        unicodeVal = ((endian==1) ? ((unsigned char)src[iPos]*256+(unsigned char)src[iPos+1]) : ((unsigned char)src[iPos+1]*256+(unsigned char)src[iPos]));
+        //printf("test1:%d,%X,%X,%X\n",endian,unicodeVal,src[iPos],src[iPos+1]);
+
+    	 if(unicodeVal <= 0x7F)
+    	 {
+    	     utfbytes = 1;    	 	
+    	 }
+    	 else if(unicodeVal > 0x7F && unicodeVal <= 0x07FF)
+    	 {
+    	     utfbytes = 2;
+    	 }
+    	 else if(unicodeVal > 0x07FF)
+    	 {
+    	     utfbytes = 3;
+    	 }
+    	 else
+    	 {
+    	     errno = EINVAL;
+            result = -1;
+            goto ucs2_to_utf8_exit;
+    	 }
+
+    	 
+        if(oPos + utfbytes > maxOLen)
+        {
+            errno = E2BIG;
+            result = -1;
+            goto ucs2_to_utf8_exit;
+        }
+
+        switch ( utfbytes )
+        {
+            case 1:
+                dst[oPos] = unicodeVal;
+                break;
+
+            case 2:
+                dst[oPos] = ((unicodeVal>>6)|0xE0)&0xDF;
+                dst[oPos+1] = ((char)(unicodeVal&0xFF)|0xC0)&0xBF;
+                break;
+
+            case 3: 
+                dst[oPos] = (((unicodeVal>>12)&0xFF)|0xF0)&0xEF;
+                dst[oPos+1] = (((unicodeVal>>6)&0xFF)|0xC0)&0xBF;
+                //printf("test:%X,%X,%X,%X,%X,",unicodeVal,unicodeVal>>6,((unicodeVal>>6)&0xFF),((unicodeVal>>6)&0xFF)|0xC0,dst[oPos+1]);
+                dst[oPos+2] =((unicodeVal&0xFF)|0xC0)&0xBF;
+                break;
+
+            default:
+                break;
+        }       
+
+        iPos += 2;
+        oPos += utfbytes;
+    }
+
+ucs2_to_utf8_exit:
+    *inbytesleft -= iPos;
+    *_inbuf += iPos;
+    *outbytesleft -= oPos;
+
+    return (size_t)result;
+}
+
+size_t iconv_ucs2_to_utf8(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft)
+{
+    return enc_unicode_to_utf8(_inbuf, inbytesleft, _outbuf, outbytesleft, 0);
+}
+
+size_t iconv_ucs2be_to_utf8(char **_inbuf, size_t *inbytesleft, char **_outbuf, size_t *outbytesleft)
+{
+    return enc_unicode_to_utf8(_inbuf, inbytesleft, _outbuf, outbytesleft, 1);
+}
+