diff --git a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/drv/drv_adc_measure.h b/board/EVB_LN882x/BSP/Inc/drv_adc_measure.h
similarity index 100%
rename from platform/vendor_bsp/LN/ln882x/include/driver_ln882x/drv/drv_adc_measure.h
rename to board/EVB_LN882x/BSP/Inc/drv_adc_measure.h
diff --git a/platform/vendor_bsp/LN/ln882x/include/serial/serial_p.h b/board/EVB_LN882x/BSP/Inc/serial_hw.h
similarity index 92%
rename from platform/vendor_bsp/LN/ln882x/include/serial/serial_p.h
rename to board/EVB_LN882x/BSP/Inc/serial_hw.h
index 353a8204ffc34234943553622b3206b3f99272a9..285336aa39acac9b7c55a3131134841fef8c6c0b 100644
--- a/platform/vendor_bsp/LN/ln882x/include/serial/serial_p.h
+++ b/board/EVB_LN882x/BSP/Inc/serial_hw.h
@@ -1,5 +1,5 @@
-#ifndef __SERIAL_P_H__
-#define __SERIAL_P_H__
+#ifndef __SERIAL_HW_H__
+#define __SERIAL_HW_H__
#include "hal/hal_uart.h"
@@ -37,4 +37,4 @@ struct SerialHardware *serial_hw_getdesc(SerialPortID port_id);
-#endif /* __SERIAL_P_H__ */
+#endif /* __SERIAL_HW_H__ */
diff --git a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/drv/drv_adc_measure.c b/board/EVB_LN882x/BSP/Src/drv_adc_measure.c
similarity index 95%
rename from platform/vendor_bsp/LN/ln882x/src/driver_ln882x/drv/drv_adc_measure.c
rename to board/EVB_LN882x/BSP/Src/drv_adc_measure.c
index 6024b2db4891b4cb638b3b990956b25b9f83ee05..0e32227e89921b65e73a21ef2ecdd40fe650c71a 100644
--- a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/drv/drv_adc_measure.c
+++ b/board/EVB_LN882x/BSP/Src/drv_adc_measure.c
@@ -1,5 +1,5 @@
#include "hal/hal_adc.h"
-#include "drv/drv_adc_measure.h"
+#include "drv_adc_measure.h"
void drv_adc_init(void)
{
diff --git a/board/EVB_LN882x/BSP/Src/iot_explorer_examples.c b/board/EVB_LN882x/BSP/Src/iot_explorer_examples.c
index fa77517ed9aa5cf63c717d537bda5e584ba7ff78..772f0f03626d1823324cc471780b330510ad0a88 100644
--- a/board/EVB_LN882x/BSP/Src/iot_explorer_examples.c
+++ b/board/EVB_LN882x/BSP/Src/iot_explorer_examples.c
@@ -8,7 +8,7 @@
#include "netif/ethernetif.h"
#include "wifi_manager/wifi_manager.h"
#include "lwip/tcpip.h"
-#include "drv/drv_adc_measure.h"
+#include "drv_adc_measure.h"
#include "utils/system_parameter.h"
#include "hal/hal_adc.h"
@@ -161,7 +161,7 @@ void application_entry(void *arg)
ART_ASSERT(1);
}
- reg_wifi_msg_callbcak(wifi_manager_get_handle(), WIFI_MSG_ID_STA_DHCP_GOT_IP,wifi_event_sta_got_ip_cb);
+ reg_wifi_msg_callbcak(WIFI_MSG_ID_STA_DHCP_GOT_IP,wifi_event_sta_got_ip_cb);
wifi_mode_enum_t wifi_mode = WIFI_MODE_STATION;
diff --git a/board/EVB_LN882x/BSP/Src/main.c b/board/EVB_LN882x/BSP/Src/main.c
index 193cca74dbaf5886b6a4802577ec67ed86b464d3..e83afe2e460bce9a3574e1281504cd677c4c2924 100644
--- a/board/EVB_LN882x/BSP/Src/main.c
+++ b/board/EVB_LN882x/BSP/Src/main.c
@@ -2,7 +2,7 @@
#include "cmsis_os.h"
#include "osal/osal.h"
-#define APPLICATION_TASK_STK_SIZE 6*256
+#define APPLICATION_TASK_STK_SIZE (8*1024)
extern void application_entry(void *arg);
osThreadDef(application_entry, osPriorityLow, 1, APPLICATION_TASK_STK_SIZE);//osPriorityNormal
@@ -17,7 +17,9 @@ __weak void application_entry(void *arg)
#include "wifi_manager/wifi_manager.h"
#include "utils/system_parameter.h"
#include "atcmd/at_task.h"
-
+#include "ln_kv_port.h"
+#include "ln_kv_api.h"
+#include "flash_partition_table.h"
int main(void)
{
@@ -28,10 +30,13 @@ int main(void)
at_init();
system_parameter_init();
+ if (KV_ERR_NONE != ln_kv_port_init(KV_SPACE_OFFSET, (KV_SPACE_OFFSET + KV_SPACE_SIZE))) {
+ LOG(LOG_LVL_ERROR, "KV init filed!\r\n");
+ }
wifi_init();
lwip_tcpip_init();
- wifi_manager_init(wifi_manager_get_handle());
+ wifi_manager_init();
osThreadCreate(osThread(application_entry), NULL); // Create TOS Tiny task
osKernelStart(); // Start TOS Tiny
diff --git a/board/EVB_LN882x/BSP/Src/mcu_init.c b/board/EVB_LN882x/BSP/Src/mcu_init.c
index 48b785687fd25d965b588f1c9e92dd7e60594655..30db24801ec0101ffd642061a11a3cd980a315d7 100644
--- a/board/EVB_LN882x/BSP/Src/mcu_init.c
+++ b/board/EVB_LN882x/BSP/Src/mcu_init.c
@@ -29,29 +29,6 @@ int fgetc(FILE *f)
return ch;
}
-
-//int flash_write(uint32_t addr, const void *buf, size_t len){
-// FLASH_Program(addr,len, (uint8_t *)buf);
-//}
-//int flash_read(uint32_t addr, void *buf, size_t len){
-// FLASH_ReadByCache(addr, len, (uint8_t *)buf);
-//}
-
-//void nvds_kv_init(void)
-//{
-// kv_flash_drv_t flash_drv;
-// kv_flash_prop_t flash_prop;
-//
-// flash_drv.write = flash_write;
-// flash_drv.read = flash_read;
-// flash_drv.erase = FLASH_Erase;
-//
-// flash_prop.sector_size_log2 = 8;
-// flash_prop.pgm_type = KV_FLASH_PROGRAM_TYPE_BYTE;
-// flash_prop.flash_start = SYSTEM_PARAMETER_OFFSET;
-// flash_prop.flash_size = SIZE_4KB*2;
-//}
-
void board_init(void)
{
SetSysClock();
@@ -64,8 +41,6 @@ void board_init(void)
log_init();//init log serial
cm_backtrace_init("wifi app", "HD_V2", "SW_V0.8");
-
-// nvds_kv_init();
}
diff --git a/board/EVB_LN882x/BSP/Src/mqttclient_examples.c b/board/EVB_LN882x/BSP/Src/mqttclient_examples.c
index 8ede3cbc3591f9908d1556581f018fe6f9e344f3..5ea38133be933b084519b39662ef8d734d26e5b3 100644
--- a/board/EVB_LN882x/BSP/Src/mqttclient_examples.c
+++ b/board/EVB_LN882x/BSP/Src/mqttclient_examples.c
@@ -8,7 +8,7 @@
#include "netif/ethernetif.h"
#include "wifi_manager/wifi_manager.h"
#include "lwip/tcpip.h"
-#include "drv/drv_adc_measure.h"
+#include "drv_adc_measure.h"
#include "utils/system_parameter.h"
#include "hal/hal_adc.h"
@@ -161,7 +161,7 @@ void application_entry(void *arg)
ART_ASSERT(1);
}
- reg_wifi_msg_callbcak(wifi_manager_get_handle(), WIFI_MSG_ID_STA_DHCP_GOT_IP,wifi_event_sta_got_ip_cb);
+ reg_wifi_msg_callbcak(WIFI_MSG_ID_STA_DHCP_GOT_IP,wifi_event_sta_got_ip_cb);
wifi_mode_enum_t wifi_mode = WIFI_MODE_STATION;
diff --git a/platform/vendor_bsp/LN/ln882x/src/serial/serial_hw.c b/board/EVB_LN882x/BSP/Src/serial_hw.c
similarity index 97%
rename from platform/vendor_bsp/LN/ln882x/src/serial/serial_hw.c
rename to board/EVB_LN882x/BSP/Src/serial_hw.c
index 9ad6a489b65f605b064191218472b54286d0ff5d..c6814fc337f380ac95a6aabf66243c968675e844 100644
--- a/platform/vendor_bsp/LN/ln882x/src/serial/serial_hw.c
+++ b/board/EVB_LN882x/BSP/Src/serial_hw.c
@@ -4,6 +4,7 @@
#include "serial/serial.h"
#include "hal/hal_syscon.h"
#include "hal/hal_uart.h"
+//#include "hal/hal_sleep.h"
#include "utils/debug/art_assert.h"
#define UART0_TX_BUF_SIZE CFG_UART0_TX_BUF_SIZE
@@ -158,6 +159,10 @@ static void hw_uart0_init(struct SerialHardware *_hw, struct Serial *serial, uin
//enable uart master switch
NVIC_EnableIRQ(UART0_IRQn);
+ /*
+ * Register with the sleep module to ensure that the serial port can be used during Light sleep
+ */
+// hal_sleep_register(MOD_UART0, NULL, NULL, NULL);
}
static void hw_uart1_init(struct SerialHardware *_hw, struct Serial *serial, uint32_t baudrate)
@@ -192,6 +197,11 @@ static void hw_uart1_init(struct SerialHardware *_hw, struct Serial *serial, uin
//enable uart master switch
NVIC_EnableIRQ(UART1_IRQn);
+
+ /*
+ * Register with the sleep module to ensure that the serial port can be used during Light sleep
+ */
+// hal_sleep_register(MOD_UART1, NULL, NULL, NULL);
}
/*
diff --git a/board/EVB_LN882x/KEIL/mqtt_client/TencentOS_tiny.uvoptx b/board/EVB_LN882x/KEIL/mqtt_client/TencentOS_tiny.uvoptx
index 162b6145a26002c07ac6cb43e009d2948ee80629..f2446d5c6f2f063b92c972300039e59cc39f4fe1 100644
--- a/board/EVB_LN882x/KEIL/mqtt_client/TencentOS_tiny.uvoptx
+++ b/board/EVB_LN882x/KEIL/mqtt_client/TencentOS_tiny.uvoptx
@@ -100,10 +100,7 @@
1
0
0
- 1
- 0
- 0
- 4
+ 6
@@ -234,19 +231,11 @@
0
- 0
- 0
-
-
-
-
-
-
-
-
+
+
+ 0
1
- 0
0
2
10000000
@@ -308,7 +297,7 @@
examples
- 1
+ 0
0
0
0
@@ -339,7 +328,7 @@
- Drivers/Drv
+ Drivers/HAL
0
0
0
@@ -351,34 +340,14 @@
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\drv\drv_adc_measure.c
- drv_adc_measure.c
- 0
- 0
-
-
-
-
- Drivers/HAL
- 0
- 0
- 0
- 0
-
- 5
- 7
- 1
- 0
- 0
- 0
..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\hal\hal_common.c
hal_common.c
0
0
- 5
- 8
+ 4
+ 7
1
0
0
@@ -389,8 +358,8 @@
0
- 5
- 9
+ 4
+ 8
1
0
0
@@ -401,8 +370,8 @@
0
- 5
- 10
+ 4
+ 9
1
0
0
@@ -413,8 +382,8 @@
0
- 5
- 11
+ 4
+ 10
1
0
0
@@ -425,8 +394,8 @@
0
- 5
- 12
+ 4
+ 11
1
0
0
@@ -437,8 +406,8 @@
0
- 5
- 13
+ 4
+ 12
1
0
0
@@ -449,8 +418,8 @@
0
- 5
- 14
+ 4
+ 13
1
0
0
@@ -461,8 +430,8 @@
0
- 5
- 15
+ 4
+ 14
1
0
0
@@ -473,8 +442,8 @@
0
- 5
- 16
+ 4
+ 15
1
0
0
@@ -485,8 +454,8 @@
0
- 5
- 17
+ 4
+ 16
1
0
0
@@ -497,8 +466,8 @@
0
- 5
- 18
+ 4
+ 17
1
0
0
@@ -509,8 +478,8 @@
0
- 5
- 19
+ 4
+ 18
1
0
0
@@ -529,8 +498,8 @@
0
0
- 6
- 20
+ 5
+ 19
1
0
0
@@ -541,8 +510,8 @@
0
- 6
- 21
+ 5
+ 20
1
0
0
@@ -553,8 +522,8 @@
0
- 6
- 22
+ 5
+ 21
1
0
0
@@ -565,8 +534,8 @@
0
- 6
- 23
+ 5
+ 22
1
0
0
@@ -577,8 +546,8 @@
0
- 6
- 24
+ 5
+ 23
1
0
0
@@ -589,8 +558,8 @@
0
- 6
- 25
+ 5
+ 24
1
0
0
@@ -601,8 +570,8 @@
0
- 6
- 26
+ 5
+ 25
1
0
0
@@ -613,8 +582,8 @@
0
- 6
- 27
+ 5
+ 26
1
0
0
@@ -625,8 +594,8 @@
0
- 6
- 28
+ 5
+ 27
1
0
0
@@ -637,8 +606,8 @@
0
- 6
- 29
+ 5
+ 28
1
0
0
@@ -649,8 +618,8 @@
0
- 6
- 30
+ 5
+ 29
1
0
0
@@ -661,8 +630,8 @@
0
- 6
- 31
+ 5
+ 30
1
0
0
@@ -673,8 +642,8 @@
0
- 6
- 32
+ 5
+ 31
1
0
0
@@ -685,8 +654,8 @@
0
- 6
- 33
+ 5
+ 32
1
0
0
@@ -697,8 +666,8 @@
0
- 6
- 34
+ 5
+ 33
1
0
0
@@ -709,8 +678,8 @@
0
- 6
- 35
+ 5
+ 34
1
0
0
@@ -721,8 +690,8 @@
0
- 6
- 36
+ 5
+ 35
1
0
0
@@ -733,8 +702,8 @@
0
- 6
- 37
+ 5
+ 36
1
0
0
@@ -745,8 +714,8 @@
0
- 6
- 38
+ 5
+ 37
1
0
0
@@ -757,8 +726,8 @@
0
- 6
- 39
+ 5
+ 38
1
0
0
@@ -769,8 +738,8 @@
0
- 6
- 40
+ 5
+ 39
1
0
0
@@ -781,8 +750,8 @@
0
- 6
- 41
+ 5
+ 40
1
0
0
@@ -793,8 +762,8 @@
0
- 6
- 42
+ 5
+ 41
1
0
0
@@ -805,8 +774,8 @@
0
- 6
- 43
+ 5
+ 42
1
0
0
@@ -825,8 +794,8 @@
0
0
- 7
- 44
+ 6
+ 43
1
0
0
@@ -837,8 +806,8 @@
0
- 7
- 45
+ 6
+ 44
2
0
0
@@ -849,8 +818,8 @@
0
- 7
- 46
+ 6
+ 45
1
0
0
@@ -869,8 +838,8 @@
0
0
- 8
- 47
+ 7
+ 46
5
0
0
@@ -881,8 +850,8 @@
0
- 8
- 48
+ 7
+ 47
5
0
0
@@ -901,8 +870,8 @@
0
0
- 9
- 49
+ 8
+ 48
1
0
0
@@ -921,8 +890,8 @@
0
0
- 10
- 50
+ 9
+ 49
1
0
0
@@ -932,35 +901,47 @@
0
0
-
-
-
- serial
- 0
- 0
- 0
- 0
- 11
+ 9
+ 50
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\serial_hw.c
+ serial_hw.c
+ 0
+ 0
+
+
+ 9
51
1
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial.c
- serial.c
+ ..\..\BSP\Src\drv_adc_measure.c
+ drv_adc_measure.c
0
0
+
+
+
+ serial
+ 0
+ 0
+ 0
+ 0
- 11
+ 10
52
1
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial_hw.c
- serial_hw.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial.c
+ serial.c
0
0
@@ -973,7 +954,7 @@
0
0
- 12
+ 11
53
1
0
@@ -993,7 +974,7 @@
0
0
- 13
+ 12
54
1
0
@@ -1005,7 +986,7 @@
0
- 13
+ 12
55
1
0
@@ -1017,7 +998,7 @@
0
- 13
+ 12
56
1
0
@@ -1029,7 +1010,7 @@
0
- 13
+ 12
57
1
0
@@ -1041,7 +1022,7 @@
0
- 13
+ 12
58
1
0
@@ -1053,7 +1034,7 @@
0
- 13
+ 12
59
1
0
@@ -1073,7 +1054,7 @@
0
0
- 14
+ 13
60
1
0
@@ -1085,7 +1066,7 @@
0
- 14
+ 13
61
1
0
@@ -1097,7 +1078,7 @@
0
- 14
+ 13
62
1
0
@@ -1109,7 +1090,7 @@
0
- 14
+ 13
63
1
0
@@ -1121,7 +1102,7 @@
0
- 14
+ 13
64
1
0
@@ -1133,7 +1114,7 @@
0
- 14
+ 13
65
1
0
@@ -1145,7 +1126,7 @@
0
- 14
+ 13
66
1
0
@@ -1157,7 +1138,7 @@
0
- 14
+ 13
67
1
0
@@ -1169,7 +1150,7 @@
0
- 14
+ 13
68
1
0
@@ -1181,7 +1162,7 @@
0
- 14
+ 13
69
1
0
@@ -1193,7 +1174,7 @@
0
- 14
+ 13
70
1
0
@@ -1205,7 +1186,7 @@
0
- 14
+ 13
71
1
0
@@ -1217,7 +1198,7 @@
0
- 14
+ 13
72
1
0
@@ -1237,7 +1218,7 @@
0
0
- 15
+ 14
73
5
0
@@ -1257,7 +1238,7 @@
0
0
- 16
+ 15
74
1
0
@@ -1269,7 +1250,7 @@
0
- 16
+ 15
75
1
0
@@ -1281,7 +1262,7 @@
0
- 16
+ 15
76
1
0
@@ -1293,7 +1274,7 @@
0
- 16
+ 15
77
1
0
@@ -1305,7 +1286,7 @@
0
- 16
+ 15
78
1
0
@@ -1317,7 +1298,7 @@
0
- 16
+ 15
79
1
0
@@ -1329,7 +1310,7 @@
0
- 16
+ 15
80
1
0
@@ -1349,7 +1330,7 @@
0
0
- 17
+ 16
81
4
0
@@ -1361,7 +1342,7 @@
0
- 17
+ 16
82
4
0
@@ -1373,14 +1354,14 @@
0
- 17
+ 16
83
4
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_driver.lib
- wifi_driver.lib
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\soc_driver.lib
+ soc_driver.lib
0
0
@@ -1393,7 +1374,7 @@
0
0
- 18
+ 17
84
1
0
@@ -1404,6 +1385,18 @@
0
0
+
+ 17
+ 85
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_port\wifi_port.c
+ wifi_port.c
+ 0
+ 0
+
@@ -1413,8 +1406,8 @@
0
0
- 19
- 85
+ 18
+ 86
1
0
0
@@ -1425,8 +1418,8 @@
0
- 19
- 86
+ 18
+ 87
1
0
0
@@ -1437,8 +1430,8 @@
0
- 19
- 87
+ 18
+ 88
1
0
0
@@ -1449,8 +1442,8 @@
0
- 19
- 88
+ 18
+ 89
1
0
0
@@ -1461,8 +1454,8 @@
0
- 19
- 89
+ 18
+ 90
1
0
0
@@ -1473,8 +1466,8 @@
0
- 19
- 90
+ 18
+ 91
1
0
0
@@ -1485,8 +1478,8 @@
0
- 19
- 91
+ 18
+ 92
1
0
0
@@ -1497,8 +1490,8 @@
0
- 19
- 92
+ 18
+ 93
1
0
0
@@ -1509,8 +1502,8 @@
0
- 19
- 93
+ 18
+ 94
1
0
0
@@ -1521,8 +1514,8 @@
0
- 19
- 94
+ 18
+ 95
1
0
0
@@ -1533,8 +1526,8 @@
0
- 19
- 95
+ 18
+ 96
1
0
0
@@ -1545,8 +1538,8 @@
0
- 19
- 96
+ 18
+ 97
1
0
0
@@ -1557,8 +1550,8 @@
0
- 19
- 97
+ 18
+ 98
1
0
0
@@ -1569,8 +1562,8 @@
0
- 19
- 98
+ 18
+ 99
1
0
0
@@ -1581,8 +1574,8 @@
0
- 19
- 99
+ 18
+ 100
1
0
0
@@ -1593,8 +1586,8 @@
0
- 19
- 100
+ 18
+ 101
1
0
0
@@ -1605,8 +1598,8 @@
0
- 19
- 101
+ 18
+ 102
1
0
0
@@ -1617,8 +1610,8 @@
0
- 19
- 102
+ 18
+ 103
1
0
0
@@ -1629,8 +1622,8 @@
0
- 19
- 103
+ 18
+ 104
1
0
0
@@ -1641,8 +1634,8 @@
0
- 19
- 104
+ 18
+ 105
1
0
0
@@ -1653,8 +1646,8 @@
0
- 19
- 105
+ 18
+ 106
1
0
0
@@ -1665,8 +1658,8 @@
0
- 19
- 106
+ 18
+ 107
1
0
0
@@ -1677,8 +1670,8 @@
0
- 19
- 107
+ 18
+ 108
1
0
0
@@ -1689,8 +1682,8 @@
0
- 19
- 108
+ 18
+ 109
1
0
0
@@ -1701,8 +1694,8 @@
0
- 19
- 109
+ 18
+ 110
1
0
0
@@ -1721,8 +1714,8 @@
0
0
- 20
- 110
+ 19
+ 111
1
0
0
@@ -1733,8 +1726,8 @@
0
- 20
- 111
+ 19
+ 112
1
0
0
@@ -1745,8 +1738,8 @@
0
- 20
- 112
+ 19
+ 113
1
0
0
@@ -1757,8 +1750,8 @@
0
- 20
- 113
+ 19
+ 114
1
0
0
@@ -1769,8 +1762,8 @@
0
- 20
- 114
+ 19
+ 115
1
0
0
@@ -1781,8 +1774,8 @@
0
- 20
- 115
+ 19
+ 116
1
0
0
@@ -1793,8 +1786,8 @@
0
- 20
- 116
+ 19
+ 117
1
0
0
@@ -1805,8 +1798,8 @@
0
- 20
- 117
+ 19
+ 118
1
0
0
@@ -1825,8 +1818,8 @@
0
0
- 21
- 118
+ 20
+ 119
1
0
0
@@ -1837,8 +1830,8 @@
0
- 21
- 119
+ 20
+ 120
1
0
0
@@ -1857,8 +1850,8 @@
0
0
- 22
- 120
+ 21
+ 121
1
0
0
@@ -1869,8 +1862,8 @@
0
- 22
- 121
+ 21
+ 122
1
0
0
@@ -1881,8 +1874,8 @@
0
- 22
- 122
+ 21
+ 123
5
0
0
@@ -1901,8 +1894,8 @@
0
0
- 23
- 123
+ 22
+ 124
1
0
0
@@ -1913,8 +1906,8 @@
0
- 23
- 124
+ 22
+ 125
1
0
0
@@ -1925,8 +1918,8 @@
0
- 23
- 125
+ 22
+ 126
1
0
0
@@ -1937,8 +1930,8 @@
0
- 23
- 126
+ 22
+ 127
1
0
0
@@ -1949,8 +1942,8 @@
0
- 23
- 127
+ 22
+ 128
1
0
0
@@ -1963,39 +1956,55 @@
- tos_components
+ fs
0
0
0
0
- 24
- 128
+ 23
+ 129
1
0
0
0
- ..\..\..\..\components\fs\kv\tos_kv.c
- tos_kv.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv\ln_kv.c
+ ln_kv.c
0
0
-
-
-
- nvds
- 0
- 0
- 0
- 0
- 25
- 129
+ 23
+ 130
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv_port\ln_kv_port.c
+ ln_kv_port.c
+ 0
+ 0
+
+
+ 23
+ 131
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\partition_mgr\flash_partition_mgr.c
+ flash_partition_mgr.c
+ 0
+ 0
+
+
+ 23
+ 132
1
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\nvds\nvds.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\nvds\nvds.c
nvds.c
0
0
@@ -2009,8 +2018,8 @@
0
0
- 26
- 130
+ 24
+ 133
1
0
0
@@ -2021,8 +2030,8 @@
0
- 26
- 131
+ 24
+ 134
5
0
0
@@ -2041,8 +2050,8 @@
0
0
- 27
- 132
+ 25
+ 135
1
0
0
@@ -2053,8 +2062,8 @@
0
- 27
- 133
+ 25
+ 136
1
0
0
@@ -2065,8 +2074,8 @@
0
- 27
- 134
+ 25
+ 137
1
0
0
@@ -2077,8 +2086,8 @@
0
- 27
- 135
+ 25
+ 138
1
0
0
@@ -2089,8 +2098,8 @@
0
- 27
- 136
+ 25
+ 139
1
0
0
@@ -2101,8 +2110,8 @@
0
- 27
- 137
+ 25
+ 140
1
0
0
@@ -2113,8 +2122,8 @@
0
- 27
- 138
+ 25
+ 141
1
0
0
@@ -2125,8 +2134,8 @@
0
- 27
- 139
+ 25
+ 142
1
0
0
@@ -2137,8 +2146,8 @@
0
- 27
- 140
+ 25
+ 143
1
0
0
@@ -2149,8 +2158,8 @@
0
- 27
- 141
+ 25
+ 144
1
0
0
@@ -2169,8 +2178,8 @@
0
0
- 28
- 142
+ 26
+ 145
1
0
0
@@ -2181,8 +2190,8 @@
0
- 28
- 143
+ 26
+ 146
5
0
0
@@ -2193,8 +2202,8 @@
0
- 28
- 144
+ 26
+ 147
5
0
0
@@ -2205,8 +2214,8 @@
0
- 28
- 145
+ 26
+ 148
1
0
0
@@ -2225,8 +2234,8 @@
0
0
- 29
- 146
+ 27
+ 149
1
0
0
@@ -2245,8 +2254,8 @@
0
0
- 30
- 147
+ 28
+ 150
1
0
0
@@ -2257,8 +2266,8 @@
0
- 30
- 148
+ 28
+ 151
1
0
0
@@ -2269,8 +2278,8 @@
0
- 30
- 149
+ 28
+ 152
1
0
0
@@ -2281,8 +2290,8 @@
0
- 30
- 150
+ 28
+ 153
1
0
0
@@ -2293,8 +2302,8 @@
0
- 30
- 151
+ 28
+ 154
1
0
0
@@ -2305,8 +2314,8 @@
0
- 30
- 152
+ 28
+ 155
1
0
0
@@ -2317,8 +2326,8 @@
0
- 30
- 153
+ 28
+ 156
1
0
0
diff --git a/board/EVB_LN882x/KEIL/mqtt_client/TencentOS_tiny.uvprojx b/board/EVB_LN882x/KEIL/mqtt_client/TencentOS_tiny.uvprojx
index e6baa5bac6798cea8b58f3d5b3565f293626c9d2..2001a48561bd89ad030e52987756e95143146663 100644
--- a/board/EVB_LN882x/KEIL/mqtt_client/TencentOS_tiny.uvprojx
+++ b/board/EVB_LN882x/KEIL/mqtt_client/TencentOS_tiny.uvprojx
@@ -10,8 +10,7 @@
TencentOS_tiny
0x4
ARM-ADS
- 5060750::V5.06 update 6 (build 750)::ARMCC
- 0
+ 5060061::V5.06 update 1 (build 61)::ARMCC
ARMCM4_FP
@@ -70,9 +69,9 @@
0
- 0
+ 1
0
-
+ python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\before_build.py flash_partition_cfg.json flash_partition_table.h
0
0
@@ -81,9 +80,9 @@
1
- 0
- .\after_build_ln882x.bat
-
+ 1
+ python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\after_build_soc.py @L
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\mkimage.exe cmd_app ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\boot_ln882x.bin @L.bin @L.asm flashimage.bin flash_partition_cfg.json ver=1.1
0
0
0
@@ -184,7 +183,6 @@
0
0
2
- 0
0
0
8
@@ -325,20 +323,16 @@
0
0
1
- 0
0
1
1
1
1
- 0
- 0
- 0
LN882x,ARM_MATH_CM4
- ..\..\BSP\Inc;..\..\TOS-CONFIG;..\..\..\..\kernel\pm\include;..\..\..\..\kernel\core\include;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\osal\cmsis_os;..\..\..\..\examples\helloworld;..\hello_world;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\driver_ln882x;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\ll\include;..\..\..\..\components\fs\kv\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\ln88xx;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\kernel;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\CMSIS_5.3.0;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\wifi_manager;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\net;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port\arch;..\..\..\..\components\connectivity\mqttclient\common;..\..\..\..\components\connectivity\mqttclient\mqtt;..\..\..\..\components\connectivity\mqttclient\mqttclient;..\..\..\..\components\connectivity\mqttclient\network;..\..\..\..\components\connectivity\mqttclient\platform\TencentOS-tiny
+ ..\..\BSP\Inc;..\..\TOS-CONFIG;..\..\..\..\kernel\pm\include;..\..\..\..\kernel\core\include;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\osal\cmsis_os;..\..\..\..\examples\helloworld;..\hello_world;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\driver_ln882x;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\ll\include;..\..\..\..\components\fs\kv\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\ln88xx;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\kernel;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\CMSIS_5.3.0;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\wifi_manager;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\net;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port\arch;..\..\..\..\components\connectivity\mqttclient\common;..\..\..\..\components\connectivity\mqttclient\mqtt;..\..\..\..\components\connectivity\mqttclient\mqttclient;..\..\..\..\components\connectivity\mqttclient\network;..\..\..\..\components\connectivity\mqttclient\platform\TencentOS-tiny;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv_port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\nvds;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\partition_mgr;..\mqtt_client
@@ -351,7 +345,6 @@
0
0
0
- 0
@@ -369,10 +362,10 @@
0x08000000
0x20000000
- .\firmware_XIP_ln882x.sct
+ .\ln882x.sct
- --no_autoat --keep=main.o(no_init_data)
+ --no_autoat --keep=*.o(no_init_data)
@@ -419,16 +412,6 @@
-
- Drivers/Drv
-
-
- drv_adc_measure.c
- 1
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\drv\drv_adc_measure.c
-
-
-
Drivers/HAL
@@ -514,15 +497,11 @@
2
2
2
- 2
2
0
0
2
2
- 2
- 2
- 2
@@ -728,6 +707,16 @@
1
..\..\BSP\Src\mcu_init.c
+
+ serial_hw.c
+ 1
+ ..\..\BSP\Src\serial_hw.c
+
+
+ drv_adc_measure.c
+ 1
+ ..\..\BSP\Src\drv_adc_measure.c
+
@@ -738,11 +727,6 @@
1
..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial.c
-
- serial_hw.c
- 1
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial_hw.c
-
@@ -924,9 +908,9 @@
..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_mac.lib
- wifi_driver.lib
+ soc_driver.lib
4
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_driver.lib
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\soc_driver.lib
@@ -938,6 +922,11 @@
1
..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_manager\wifi_manager.c
+
+ wifi_port.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_port\wifi_port.c
+
@@ -1005,15 +994,11 @@
2
2
2
- 2
2
0
0
2
2
- 2
- 2
- 2
@@ -1232,22 +1217,27 @@
- tos_components
+ fs
- tos_kv.c
+ ln_kv.c
1
- ..\..\..\..\components\fs\kv\tos_kv.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv\ln_kv.c
+
+
+ ln_kv_port.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv_port\ln_kv_port.c
+
+
+ flash_partition_mgr.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\partition_mgr\flash_partition_mgr.c
-
-
-
- nvds
-
nvds.c
1
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\nvds\nvds.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\nvds\nvds.c
diff --git a/board/EVB_LN882x/KEIL/mqtt_client/after_build_ln882x.bat b/board/EVB_LN882x/KEIL/mqtt_client/after_build_ln882x.bat
index cc2c067869bce6aeb41969ea95991bdbc55d9ebc..60675d37f1fb6229a9d0e94ce65d4c58c7401266 100644
--- a/board/EVB_LN882x/KEIL/mqtt_client/after_build_ln882x.bat
+++ b/board/EVB_LN882x/KEIL/mqtt_client/after_build_ln882x.bat
@@ -1,8 +1,4 @@
-
-python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\after_build_soc.py firmware_XIP
-
-..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\mkimage.exe ln882x flashimage ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\boot_ram_ln882x.bin firmware_XIP.bin flashimage.bin release=1 crp_enable=0 app_version=10 hw_version=0
-
-..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\fpu_patch.exe .\firmware_XIP.asm .\flashimage.bin
+python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\after_build_soc.py @L
+..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\mkimage.exe cmd_app ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\boot_ln882x.bin @L.bin @L.asm flashimage.bin flash_partition_cfg.json ver=1.1
diff --git a/board/EVB_LN882x/KEIL/mqtt_client/flash_partition_cfg.json b/board/EVB_LN882x/KEIL/mqtt_client/flash_partition_cfg.json
new file mode 100644
index 0000000000000000000000000000000000000000..91fec5375be9f0c1e687ff9525f4c3fd7d124452
--- /dev/null
+++ b/board/EVB_LN882x/KEIL/mqtt_client/flash_partition_cfg.json
@@ -0,0 +1,22 @@
+{
+ "Warning1":"警告,系统定义用户不可修改!!!",
+ "vendor_define":
+ [
+ {"partition_type": "BOOT", "start_addr": "0x00000000", "size_KB": 36 },
+ {"partition_type": "PART_TAB", "start_addr": "0x00009000", "size_KB": 4 }
+ ],
+
+
+ "Warning2":"以下数据,用户根据SOC flash容量以及具体需求修改,仅可以修改start_addr值和size值,且必须4KB对齐!!!",
+ "user_define":
+ [
+ {"partition_type": "KV", "start_addr": "0x0000A000", "size_KB": 8 },
+ {"partition_type": "SIMU_EEPROM", "start_addr": "0x0000C000", "size_KB": 8 },
+ {"partition_type": "APP", "start_addr": "0x0000E000", "size_KB": 800 },
+ {"partition_type": "OTA", "start_addr": "0x000D6000", "size_KB": 800 },
+ {"partition_type": "NVDS", "start_addr": "0x0019E000", "size_KB": 12 },
+ {"partition_type": "USER", "start_addr": "0x001A1000", "size_KB": 12 }
+ ]
+}
+
+
diff --git a/board/EVB_LN882x/KEIL/mqtt_client/flash_partition_table.h b/board/EVB_LN882x/KEIL/mqtt_client/flash_partition_table.h
index e068e5bfed174a79bb1f7fa841d5196c0de7bbce..08788e3cd33106dc76b6e0e27e56e1f1fdac627c 100644
--- a/board/EVB_LN882x/KEIL/mqtt_client/flash_partition_table.h
+++ b/board/EVB_LN882x/KEIL/mqtt_client/flash_partition_table.h
@@ -1,32 +1,56 @@
-#ifndef __FLASH_PARTITION_TABLE_H__
-#define __FLASH_PARTITION_TABLE_H__
+#ifndef __FLASH_PARTITION_TABLE__
+#define __FLASH_PARTITION_TABLE__
-//#define RETENTION_MEM_BASE 0x20028000
-//#define RETENTION_MEM_SIZE 0x2000
-#ifndef FLASH_BASE
-#define FLASH_BASE (0x10000000)
+//flash partition map,it's generated by the script based on the json file
+
+#define BOOT_SPACE_OFFSET (0x00000000)
+#define BOOT_SPACE_SIZE (1024*36)
+
+#define PART_TAB_SPACE_OFFSET (0x00009000)
+#define PART_TAB_SPACE_SIZE (1024*4)
+#if (PART_TAB_SPACE_OFFSET < (BOOT_SPACE_OFFSET + BOOT_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
+#endif
+
+#define KV_SPACE_OFFSET (0x0000A000)
+#define KV_SPACE_SIZE (1024*8)
+#if (KV_SPACE_OFFSET < (PART_TAB_SPACE_OFFSET + PART_TAB_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
+#endif
+
+#define SIMU_EEPROM_SPACE_OFFSET (0x0000C000)
+#define SIMU_EEPROM_SPACE_SIZE (1024*8)
+#if (SIMU_EEPROM_SPACE_OFFSET < (KV_SPACE_OFFSET + KV_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#ifndef FLASH_SIZE
-#define FLASH_SIZE (0x00200000)
+#define APP_SPACE_OFFSET (0x0000E000)
+#define APP_SPACE_SIZE (1024*800)
+#if (APP_SPACE_OFFSET < (SIMU_EEPROM_SPACE_OFFSET + SIMU_EEPROM_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#ifndef PRIMARY_PARTITION_OFFSET
-#define PRIMARY_PARTITION_OFFSET (0x0000F000)
+#define OTA_SPACE_OFFSET (0x000D6000)
+#define OTA_SPACE_SIZE (1024*800)
+#if (OTA_SPACE_OFFSET < (APP_SPACE_OFFSET + APP_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#define PRIMARY_PATTITION_START 0x0000F000
-#define PRIMARY_PATTITION_SIZE 0xE1000
-//#define USERAPP_SRAM_BASE 0x1FFF0000
-#define BACKUP_PATTITION_START 0x000F0000
-#define BACKUP_PATTITION_SIZE 0xE1000
-#define USERDATA_PATTITION_START 0x001D1000
-#define USERDATA_PATTITION_SIZE 0x23000
-
-//memory offset check
-#if ((PRIMARY_PATTITION_START < PRIMARY_PARTITION_OFFSET) || (BACKUP_PATTITION_START < PRIMARY_PATTITION_START) || (USERDATA_PATTITION_START < BACKUP_PATTITION_START) || (PRIMARY_PATTITION_START + PRIMARY_PATTITION_SIZE > BACKUP_PATTITION_START) || (BACKUP_PATTITION_START + BACKUP_PATTITION_SIZE > USERDATA_PATTITION_START) || (USERDATA_PATTITION_START + USERDATA_PATTITION_SIZE > FLASH_SIZE))
- #error "flash partition define error!"
+#define NVDS_SPACE_OFFSET (0x0019E000)
+#define NVDS_SPACE_SIZE (1024*12)
+#if (NVDS_SPACE_OFFSET < (OTA_SPACE_OFFSET + OTA_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#endif /* __FLASH_PARTITION_TABLE_H__ */
+#define USER_SPACE_OFFSET (0x001A1000)
+#define USER_SPACE_SIZE (1024*12)
+#if (USER_SPACE_OFFSET < (NVDS_SPACE_OFFSET + NVDS_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
+#endif
+
+
+#define IMAGE_HEADER_SIZE (0x100)
+
+#endif /* __FLASH_PARTITION_TABLE__ */
+
diff --git a/board/EVB_LN882x/KEIL/mqtt_client/firmware_XIP_ln882x.sct b/board/EVB_LN882x/KEIL/mqtt_client/ln882x.sct
similarity index 59%
rename from board/EVB_LN882x/KEIL/mqtt_client/firmware_XIP_ln882x.sct
rename to board/EVB_LN882x/KEIL/mqtt_client/ln882x.sct
index 50c5ed54a8fbe7c3a6368808b01626c5749c6815..26dc840bfa1c7850081bad4ed3086b3fbee26d7d 100644
--- a/board/EVB_LN882x/KEIL/mqtt_client/firmware_XIP_ln882x.sct
+++ b/board/EVB_LN882x/KEIL/mqtt_client/ln882x.sct
@@ -1,9 +1,9 @@
#! armcc -E
-#include ".\flash_partition_table.h"
+#include "flash_partition_table.h"
#include ".\..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\ln88xx\mem_map_ln882x.h"
-LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
+LR_FLASH CACHE_FLASH_BASE+APP_SPACE_OFFSET+IMAGE_HEADER_SIZE APP_SPACE_SIZE
{; load region size_region
ISR_VECTOR RAM_BASE ALIGN 0x100
@@ -11,7 +11,7 @@ LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
startup_*.o (RESET, +First)
}
- ER_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET + ImageLength(ISR_VECTOR) PRIMARY_PATTITION_SIZE
+ ER_FLASH CACHE_FLASH_BASE+APP_SPACE_OFFSET+IMAGE_HEADER_SIZE + ImageLength(ISR_VECTOR) APP_SPACE_SIZE
{; load address = execution address
*(InRoot$$Sections)
.ANY (+RO)
@@ -24,15 +24,15 @@ LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
ll_cache.o(+RO)
ll_dma.o(+RO)
ll_syscon.o(+RO)
- ll_sleep.o(+RO)
- ll_rtc.o(+RO)
+ ;ll_sleep.o(+RO)
+ ;ll_rtc.o(+RO)
cache.o(+RO)
qspi.o(+RO)
flash.o(+RO)
hal_dma.o(+RO)
hal_syscon.o(+RO)
- hal_sleep.o(+RO)
- hal_rtc.o(+RO)
+ ;hal_sleep.o(+RO)
+ ;hal_rtc.o(+RO)
;port.o(XIR)
;optional item
@@ -49,16 +49,32 @@ LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
startup_ln*(+RW +ZI)
}
- ER_DATA +0
+ ER_DATA_IN_B0 +0 RAM_BLOCK0_SIZE-ImageLength(ISR_VECTOR)-ImageLength(ER_CODE)-ImageLength(ER_STACK)
{
- *(.ARM.__at_0x1FFFFFFC)
- .ANY (+RW +ZI)
+ memp.o(+RW +ZI)
+ imem.o(+RW +ZI)
+ imem_if.o(+RW +ZI)
+ ;cglobals_sta.o(+RW +ZI)
+ ;event_manager.o(+RW +ZI)
+ iconfig.o(+RW +ZI)
+ common.o(+RW +ZI)
+ }
+
+ HEAP_SPACE0 +0 EMPTY RAM_BLOCK1_BASE-ImageLimit(ER_DATA_IN_B0)
+ {; Heap region
+ }
+
+ ER_DATA_IN_B1 RAM_BLOCK1_BASE RAM_BLOCK1_SIZE
+ {
+ *(wlan_mem_pkt)
+ *(wlan_mem_dscr)
+ .ANY (+RW +ZI)
}
;IQ Data area cannot be used by ER_DATA region
;ScatterAssert(ImageLimit(ER_DATA) < (0x20020300))
- HEAP_SPACE +0 EMPTY RETENTION_MEM_BASE-ImageLimit(ER_DATA)
+ HEAP_SPACE1 +0 EMPTY RETENTION_MEM_BASE-ImageLimit(ER_DATA_IN_B1)
{; Heap region
}
diff --git a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/TencentOS_tiny.uvoptx b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/TencentOS_tiny.uvoptx
index 4f505a61a725da0eb783f2e0e299144083d4a36b..b75098afb702125913485b2311433abc2e847b69 100644
--- a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/TencentOS_tiny.uvoptx
+++ b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/TencentOS_tiny.uvoptx
@@ -117,11 +117,6 @@
Segger\JL2CM3.dll
-
- 0
- DLGUARM
- d
-
0
ARMRTXEVENTFLAGS
@@ -153,7 +148,24 @@
-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512 -FS08000000 -FL080000 -FP0($$Device:STM32F103VE$Flash\STM32F10x_512.FLM)
-
+
+
+ 0
+ 0
+ 90
+ 1
+ 268493334
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\hal\hal_interrupt.c
+
+ \\firmware_XIP\../../../../platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_interrupt.c\90
+
+
0
@@ -185,6 +197,11 @@
1
phy_reg_val_table_1,0x10
+
+ 6
+ 1
+ k_curr_task
+
@@ -208,7 +225,7 @@
0
1
- 1
+ 0
0
0
0
@@ -288,7 +305,7 @@
Application/User
- 0
+ 1
0
0
0
@@ -308,7 +325,7 @@
examples
- 0
+ 1
0
0
0
@@ -363,7 +380,7 @@
- Drivers/Drv
+ Drivers/HAL
0
0
0
@@ -375,34 +392,14 @@
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\drv\drv_adc_measure.c
- drv_adc_measure.c
- 0
- 0
-
-
-
-
- Drivers/HAL
- 0
- 0
- 0
- 0
-
- 5
- 9
- 1
- 0
- 0
- 0
..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\hal\hal_common.c
hal_common.c
0
0
- 5
- 10
+ 4
+ 9
1
0
0
@@ -413,8 +410,8 @@
0
- 5
- 11
+ 4
+ 10
1
0
0
@@ -425,8 +422,8 @@
0
- 5
- 12
+ 4
+ 11
1
0
0
@@ -437,8 +434,8 @@
0
- 5
- 13
+ 4
+ 12
1
0
0
@@ -449,8 +446,8 @@
0
- 5
- 14
+ 4
+ 13
1
0
0
@@ -461,8 +458,8 @@
0
- 5
- 15
+ 4
+ 14
1
0
0
@@ -473,8 +470,8 @@
0
- 5
- 16
+ 4
+ 15
1
0
0
@@ -485,8 +482,8 @@
0
- 5
- 17
+ 4
+ 16
1
0
0
@@ -497,8 +494,8 @@
0
- 5
- 18
+ 4
+ 17
1
0
0
@@ -509,8 +506,8 @@
0
- 5
- 19
+ 4
+ 18
1
0
0
@@ -521,8 +518,8 @@
0
- 5
- 20
+ 4
+ 19
1
0
0
@@ -533,8 +530,8 @@
0
- 5
- 21
+ 4
+ 20
1
0
0
@@ -553,8 +550,8 @@
0
0
- 6
- 22
+ 5
+ 21
1
0
0
@@ -565,8 +562,8 @@
0
- 6
- 23
+ 5
+ 22
1
0
0
@@ -577,8 +574,8 @@
0
- 6
- 24
+ 5
+ 23
1
0
0
@@ -589,8 +586,8 @@
0
- 6
- 25
+ 5
+ 24
1
0
0
@@ -601,8 +598,8 @@
0
- 6
- 26
+ 5
+ 25
1
0
0
@@ -613,8 +610,8 @@
0
- 6
- 27
+ 5
+ 26
1
0
0
@@ -625,8 +622,8 @@
0
- 6
- 28
+ 5
+ 27
1
0
0
@@ -637,8 +634,8 @@
0
- 6
- 29
+ 5
+ 28
1
0
0
@@ -649,8 +646,8 @@
0
- 6
- 30
+ 5
+ 29
1
0
0
@@ -661,8 +658,8 @@
0
- 6
- 31
+ 5
+ 30
1
0
0
@@ -673,8 +670,8 @@
0
- 6
- 32
+ 5
+ 31
1
0
0
@@ -685,8 +682,8 @@
0
- 6
- 33
+ 5
+ 32
1
0
0
@@ -697,8 +694,8 @@
0
- 6
- 34
+ 5
+ 33
1
0
0
@@ -709,8 +706,8 @@
0
- 6
- 35
+ 5
+ 34
1
0
0
@@ -721,8 +718,8 @@
0
- 6
- 36
+ 5
+ 35
1
0
0
@@ -733,8 +730,8 @@
0
- 6
- 37
+ 5
+ 36
1
0
0
@@ -745,8 +742,8 @@
0
- 6
- 38
+ 5
+ 37
1
0
0
@@ -757,8 +754,8 @@
0
- 6
- 39
+ 5
+ 38
1
0
0
@@ -769,8 +766,8 @@
0
- 6
- 40
+ 5
+ 39
1
0
0
@@ -781,8 +778,8 @@
0
- 6
- 41
+ 5
+ 40
1
0
0
@@ -793,8 +790,8 @@
0
- 6
- 42
+ 5
+ 41
1
0
0
@@ -805,8 +802,8 @@
0
- 6
- 43
+ 5
+ 42
1
0
0
@@ -817,8 +814,8 @@
0
- 6
- 44
+ 5
+ 43
1
0
0
@@ -829,8 +826,8 @@
0
- 6
- 45
+ 5
+ 44
1
0
0
@@ -849,8 +846,8 @@
0
0
- 7
- 46
+ 6
+ 45
1
0
0
@@ -861,8 +858,8 @@
0
- 7
- 47
+ 6
+ 46
2
0
0
@@ -873,8 +870,8 @@
0
- 7
- 48
+ 6
+ 47
1
0
0
@@ -893,8 +890,8 @@
0
0
- 8
- 49
+ 7
+ 48
5
0
0
@@ -905,8 +902,8 @@
0
- 8
- 50
+ 7
+ 49
5
0
0
@@ -925,8 +922,8 @@
0
0
- 9
- 51
+ 8
+ 50
1
0
0
@@ -945,8 +942,8 @@
0
0
- 10
- 52
+ 9
+ 51
1
0
0
@@ -956,35 +953,47 @@
0
0
-
-
-
- serial
- 0
- 0
- 0
- 0
- 11
+ 9
+ 52
+ 1
+ 0
+ 0
+ 0
+ ..\..\BSP\Src\serial_hw.c
+ serial_hw.c
+ 0
+ 0
+
+
+ 9
53
1
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial.c
- serial.c
+ ..\..\BSP\Src\drv_adc_measure.c
+ drv_adc_measure.c
0
0
+
+
+
+ serial
+ 0
+ 0
+ 0
+ 0
- 11
+ 10
54
1
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial_hw.c
- serial_hw.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial.c
+ serial.c
0
0
@@ -997,7 +1006,7 @@
0
0
- 12
+ 11
55
1
0
@@ -1017,7 +1026,7 @@
0
0
- 13
+ 12
56
1
0
@@ -1029,7 +1038,7 @@
0
- 13
+ 12
57
1
0
@@ -1041,7 +1050,7 @@
0
- 13
+ 12
58
1
0
@@ -1053,7 +1062,7 @@
0
- 13
+ 12
59
1
0
@@ -1065,7 +1074,7 @@
0
- 13
+ 12
60
1
0
@@ -1077,7 +1086,7 @@
0
- 13
+ 12
61
1
0
@@ -1097,7 +1106,7 @@
0
0
- 14
+ 13
62
1
0
@@ -1109,7 +1118,7 @@
0
- 14
+ 13
63
1
0
@@ -1121,7 +1130,7 @@
0
- 14
+ 13
64
1
0
@@ -1133,7 +1142,7 @@
0
- 14
+ 13
65
1
0
@@ -1145,7 +1154,7 @@
0
- 14
+ 13
66
1
0
@@ -1157,7 +1166,7 @@
0
- 14
+ 13
67
1
0
@@ -1169,7 +1178,7 @@
0
- 14
+ 13
68
1
0
@@ -1181,7 +1190,7 @@
0
- 14
+ 13
69
1
0
@@ -1193,7 +1202,7 @@
0
- 14
+ 13
70
1
0
@@ -1205,7 +1214,7 @@
0
- 14
+ 13
71
1
0
@@ -1217,7 +1226,7 @@
0
- 14
+ 13
72
1
0
@@ -1229,7 +1238,7 @@
0
- 14
+ 13
73
1
0
@@ -1241,7 +1250,7 @@
0
- 14
+ 13
74
1
0
@@ -1261,7 +1270,7 @@
0
0
- 15
+ 14
75
5
0
@@ -1281,7 +1290,7 @@
0
0
- 16
+ 15
76
1
0
@@ -1293,7 +1302,7 @@
0
- 16
+ 15
77
1
0
@@ -1305,7 +1314,7 @@
0
- 16
+ 15
78
1
0
@@ -1317,7 +1326,7 @@
0
- 16
+ 15
79
1
0
@@ -1329,7 +1338,7 @@
0
- 16
+ 15
80
1
0
@@ -1341,7 +1350,7 @@
0
- 16
+ 15
81
1
0
@@ -1353,7 +1362,7 @@
0
- 16
+ 15
82
1
0
@@ -1373,7 +1382,7 @@
0
0
- 17
+ 16
83
4
0
@@ -1385,7 +1394,7 @@
0
- 17
+ 16
84
4
0
@@ -1397,14 +1406,14 @@
0
- 17
+ 16
85
4
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_driver.lib
- wifi_driver.lib
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\soc_driver.lib
+ soc_driver.lib
0
0
@@ -1417,7 +1426,7 @@
0
0
- 18
+ 17
86
1
0
@@ -1428,6 +1437,18 @@
0
0
+
+ 17
+ 87
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_port\wifi_port.c
+ wifi_port.c
+ 0
+ 0
+
@@ -1437,8 +1458,8 @@
0
0
- 19
- 87
+ 18
+ 88
1
0
0
@@ -1449,8 +1470,8 @@
0
- 19
- 88
+ 18
+ 89
1
0
0
@@ -1461,8 +1482,8 @@
0
- 19
- 89
+ 18
+ 90
1
0
0
@@ -1473,8 +1494,8 @@
0
- 19
- 90
+ 18
+ 91
1
0
0
@@ -1485,8 +1506,8 @@
0
- 19
- 91
+ 18
+ 92
1
0
0
@@ -1497,8 +1518,8 @@
0
- 19
- 92
+ 18
+ 93
1
0
0
@@ -1509,8 +1530,8 @@
0
- 19
- 93
+ 18
+ 94
1
0
0
@@ -1521,8 +1542,8 @@
0
- 19
- 94
+ 18
+ 95
1
0
0
@@ -1533,8 +1554,8 @@
0
- 19
- 95
+ 18
+ 96
1
0
0
@@ -1545,8 +1566,8 @@
0
- 19
- 96
+ 18
+ 97
1
0
0
@@ -1557,8 +1578,8 @@
0
- 19
- 97
+ 18
+ 98
1
0
0
@@ -1569,8 +1590,8 @@
0
- 19
- 98
+ 18
+ 99
1
0
0
@@ -1581,8 +1602,8 @@
0
- 19
- 99
+ 18
+ 100
1
0
0
@@ -1593,8 +1614,8 @@
0
- 19
- 100
+ 18
+ 101
1
0
0
@@ -1605,8 +1626,8 @@
0
- 19
- 101
+ 18
+ 102
1
0
0
@@ -1617,8 +1638,8 @@
0
- 19
- 102
+ 18
+ 103
1
0
0
@@ -1629,8 +1650,8 @@
0
- 19
- 103
+ 18
+ 104
1
0
0
@@ -1641,8 +1662,8 @@
0
- 19
- 104
+ 18
+ 105
1
0
0
@@ -1653,8 +1674,8 @@
0
- 19
- 105
+ 18
+ 106
1
0
0
@@ -1665,8 +1686,8 @@
0
- 19
- 106
+ 18
+ 107
1
0
0
@@ -1677,8 +1698,8 @@
0
- 19
- 107
+ 18
+ 108
1
0
0
@@ -1689,8 +1710,8 @@
0
- 19
- 108
+ 18
+ 109
1
0
0
@@ -1701,8 +1722,8 @@
0
- 19
- 109
+ 18
+ 110
1
0
0
@@ -1713,8 +1734,8 @@
0
- 19
- 110
+ 18
+ 111
1
0
0
@@ -1725,8 +1746,8 @@
0
- 19
- 111
+ 18
+ 112
1
0
0
@@ -1745,8 +1766,8 @@
0
0
- 20
- 112
+ 19
+ 113
1
0
0
@@ -1757,8 +1778,8 @@
0
- 20
- 113
+ 19
+ 114
1
0
0
@@ -1769,8 +1790,8 @@
0
- 20
- 114
+ 19
+ 115
1
0
0
@@ -1781,8 +1802,8 @@
0
- 20
- 115
+ 19
+ 116
1
0
0
@@ -1793,8 +1814,8 @@
0
- 20
- 116
+ 19
+ 117
1
0
0
@@ -1805,8 +1826,8 @@
0
- 20
- 117
+ 19
+ 118
1
0
0
@@ -1817,8 +1838,8 @@
0
- 20
- 118
+ 19
+ 119
1
0
0
@@ -1829,8 +1850,8 @@
0
- 20
- 119
+ 19
+ 120
1
0
0
@@ -1849,8 +1870,8 @@
0
0
- 21
- 120
+ 20
+ 121
1
0
0
@@ -1861,8 +1882,8 @@
0
- 21
- 121
+ 20
+ 122
1
0
0
@@ -1881,8 +1902,8 @@
0
0
- 22
- 122
+ 21
+ 123
1
0
0
@@ -1893,8 +1914,8 @@
0
- 22
- 123
+ 21
+ 124
1
0
0
@@ -1905,8 +1926,8 @@
0
- 22
- 124
+ 21
+ 125
5
0
0
@@ -1925,8 +1946,8 @@
0
0
- 23
- 125
+ 22
+ 126
1
0
0
@@ -1937,8 +1958,8 @@
0
- 23
- 126
+ 22
+ 127
1
0
0
@@ -1949,8 +1970,8 @@
0
- 23
- 127
+ 22
+ 128
1
0
0
@@ -1961,8 +1982,8 @@
0
- 23
- 128
+ 22
+ 129
1
0
0
@@ -1973,8 +1994,8 @@
0
- 23
- 129
+ 22
+ 130
1
0
0
@@ -1987,43 +2008,59 @@
- tos_components
+ fs
0
0
0
0
- 24
- 130
+ 23
+ 131
1
0
0
0
- ..\..\..\..\components\fs\kv\tos_kv.c
- tos_kv.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv\ln_kv.c
+ ln_kv.c
0
0
-
-
-
- nvds
- 0
- 0
- 0
- 0
- 25
- 131
+ 23
+ 132
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv_port\ln_kv_port.c
+ ln_kv_port.c
+ 0
+ 0
+
+
+ 23
+ 133
1
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\nvds\nvds.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\nvds\nvds.c
nvds.c
0
0
+
+ 23
+ 134
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\partition_mgr\flash_partition_mgr.c
+ flash_partition_mgr.c
+ 0
+ 0
+
@@ -2033,8 +2070,8 @@
0
0
- 26
- 132
+ 24
+ 135
1
0
0
@@ -2045,8 +2082,8 @@
0
- 26
- 133
+ 24
+ 136
1
0
0
@@ -2057,8 +2094,8 @@
0
- 26
- 134
+ 24
+ 137
1
0
0
@@ -2069,8 +2106,8 @@
0
- 26
- 135
+ 24
+ 138
1
0
0
@@ -2081,8 +2118,8 @@
0
- 26
- 136
+ 24
+ 139
1
0
0
@@ -2093,8 +2130,8 @@
0
- 26
- 137
+ 24
+ 140
1
0
0
@@ -2113,8 +2150,8 @@
0
0
- 27
- 138
+ 25
+ 141
1
0
0
@@ -2125,8 +2162,8 @@
0
- 27
- 139
+ 25
+ 142
1
0
0
@@ -2137,8 +2174,8 @@
0
- 27
- 140
+ 25
+ 143
1
0
0
@@ -2149,8 +2186,8 @@
0
- 27
- 141
+ 25
+ 144
1
0
0
@@ -2161,8 +2198,8 @@
0
- 27
- 142
+ 25
+ 145
1
0
0
@@ -2173,8 +2210,8 @@
0
- 27
- 143
+ 25
+ 146
1
0
0
@@ -2185,8 +2222,8 @@
0
- 27
- 144
+ 25
+ 147
1
0
0
@@ -2197,8 +2234,8 @@
0
- 27
- 145
+ 25
+ 148
1
0
0
@@ -2217,8 +2254,8 @@
0
0
- 28
- 146
+ 26
+ 149
1
0
0
@@ -2229,8 +2266,8 @@
0
- 28
- 147
+ 26
+ 150
1
0
0
@@ -2241,8 +2278,8 @@
0
- 28
- 148
+ 26
+ 151
1
0
0
@@ -2253,8 +2290,8 @@
0
- 28
- 149
+ 26
+ 152
1
0
0
@@ -2265,8 +2302,8 @@
0
- 28
- 150
+ 26
+ 153
1
0
0
@@ -2277,8 +2314,8 @@
0
- 28
- 151
+ 26
+ 154
1
0
0
@@ -2297,8 +2334,8 @@
0
0
- 29
- 152
+ 27
+ 155
1
0
0
@@ -2309,8 +2346,8 @@
0
- 29
- 153
+ 27
+ 156
1
0
0
@@ -2321,8 +2358,8 @@
0
- 29
- 154
+ 27
+ 157
1
0
0
@@ -2333,8 +2370,8 @@
0
- 29
- 155
+ 27
+ 158
1
0
0
@@ -2345,8 +2382,8 @@
0
- 29
- 156
+ 27
+ 159
1
0
0
@@ -2357,8 +2394,8 @@
0
- 29
- 157
+ 27
+ 160
1
0
0
@@ -2369,8 +2406,8 @@
0
- 29
- 158
+ 27
+ 161
1
0
0
@@ -2381,8 +2418,8 @@
0
- 29
- 159
+ 27
+ 162
1
0
0
@@ -2393,8 +2430,8 @@
0
- 29
- 160
+ 27
+ 163
1
0
0
@@ -2405,8 +2442,8 @@
0
- 29
- 161
+ 27
+ 164
1
0
0
@@ -2417,8 +2454,8 @@
0
- 29
- 162
+ 27
+ 165
1
0
0
@@ -2429,8 +2466,8 @@
0
- 29
- 163
+ 27
+ 166
1
0
0
@@ -2441,8 +2478,8 @@
0
- 29
- 164
+ 27
+ 167
1
0
0
@@ -2453,8 +2490,8 @@
0
- 29
- 165
+ 27
+ 168
1
0
0
@@ -2465,8 +2502,8 @@
0
- 29
- 166
+ 27
+ 169
1
0
0
@@ -2485,8 +2522,8 @@
0
0
- 30
- 167
+ 28
+ 170
1
0
0
@@ -2497,8 +2534,8 @@
0
- 30
- 168
+ 28
+ 171
1
0
0
@@ -2509,8 +2546,8 @@
0
- 30
- 169
+ 28
+ 172
1
0
0
@@ -2521,8 +2558,8 @@
0
- 30
- 170
+ 28
+ 173
1
0
0
@@ -2533,8 +2570,8 @@
0
- 30
- 171
+ 28
+ 174
1
0
0
@@ -2553,8 +2590,8 @@
0
0
- 31
- 172
+ 29
+ 175
1
0
0
@@ -2565,8 +2602,8 @@
0
- 31
- 173
+ 29
+ 176
1
0
0
@@ -2577,8 +2614,8 @@
0
- 31
- 174
+ 29
+ 177
1
0
0
@@ -2589,8 +2626,8 @@
0
- 31
- 175
+ 29
+ 178
1
0
0
@@ -2601,8 +2638,8 @@
0
- 31
- 176
+ 29
+ 179
1
0
0
@@ -2613,8 +2650,8 @@
0
- 31
- 177
+ 29
+ 180
1
0
0
@@ -2625,8 +2662,8 @@
0
- 31
- 178
+ 29
+ 181
1
0
0
@@ -2637,8 +2674,8 @@
0
- 31
- 179
+ 29
+ 182
1
0
0
@@ -2649,8 +2686,8 @@
0
- 31
- 180
+ 29
+ 183
1
0
0
@@ -2661,8 +2698,8 @@
0
- 31
- 181
+ 29
+ 184
1
0
0
@@ -2673,8 +2710,8 @@
0
- 31
- 182
+ 29
+ 185
1
0
0
@@ -2685,8 +2722,8 @@
0
- 31
- 183
+ 29
+ 186
1
0
0
@@ -2697,8 +2734,8 @@
0
- 31
- 184
+ 29
+ 187
1
0
0
@@ -2709,8 +2746,8 @@
0
- 31
- 185
+ 29
+ 188
1
0
0
@@ -2721,8 +2758,8 @@
0
- 31
- 186
+ 29
+ 189
1
0
0
@@ -2733,8 +2770,8 @@
0
- 31
- 187
+ 29
+ 190
1
0
0
@@ -2745,8 +2782,8 @@
0
- 31
- 188
+ 29
+ 191
1
0
0
@@ -2757,8 +2794,8 @@
0
- 31
- 189
+ 29
+ 192
1
0
0
@@ -2769,8 +2806,8 @@
0
- 31
- 190
+ 29
+ 193
1
0
0
@@ -2781,8 +2818,8 @@
0
- 31
- 191
+ 29
+ 194
1
0
0
@@ -2793,8 +2830,8 @@
0
- 31
- 192
+ 29
+ 195
1
0
0
@@ -2805,8 +2842,8 @@
0
- 31
- 193
+ 29
+ 196
1
0
0
@@ -2817,8 +2854,8 @@
0
- 31
- 194
+ 29
+ 197
1
0
0
@@ -2829,8 +2866,8 @@
0
- 31
- 195
+ 29
+ 198
1
0
0
@@ -2841,8 +2878,8 @@
0
- 31
- 196
+ 29
+ 199
1
0
0
@@ -2853,8 +2890,8 @@
0
- 31
- 197
+ 29
+ 200
1
0
0
@@ -2865,8 +2902,8 @@
0
- 31
- 198
+ 29
+ 201
1
0
0
@@ -2877,8 +2914,8 @@
0
- 31
- 199
+ 29
+ 202
1
0
0
@@ -2889,8 +2926,8 @@
0
- 31
- 200
+ 29
+ 203
1
0
0
@@ -2901,8 +2938,8 @@
0
- 31
- 201
+ 29
+ 204
1
0
0
@@ -2913,8 +2950,8 @@
0
- 31
- 202
+ 29
+ 205
1
0
0
@@ -2925,8 +2962,8 @@
0
- 31
- 203
+ 29
+ 206
1
0
0
@@ -2937,8 +2974,8 @@
0
- 31
- 204
+ 29
+ 207
1
0
0
@@ -2949,8 +2986,8 @@
0
- 31
- 205
+ 29
+ 208
1
0
0
@@ -2961,8 +2998,8 @@
0
- 31
- 206
+ 29
+ 209
1
0
0
@@ -2973,8 +3010,8 @@
0
- 31
- 207
+ 29
+ 210
1
0
0
@@ -2985,8 +3022,8 @@
0
- 31
- 208
+ 29
+ 211
1
0
0
@@ -2997,8 +3034,8 @@
0
- 31
- 209
+ 29
+ 212
1
0
0
@@ -3009,8 +3046,8 @@
0
- 31
- 210
+ 29
+ 213
1
0
0
@@ -3021,8 +3058,8 @@
0
- 31
- 211
+ 29
+ 214
1
0
0
@@ -3033,8 +3070,8 @@
0
- 31
- 212
+ 29
+ 215
1
0
0
@@ -3045,8 +3082,8 @@
0
- 31
- 213
+ 29
+ 216
1
0
0
@@ -3057,8 +3094,8 @@
0
- 31
- 214
+ 29
+ 217
1
0
0
@@ -3069,8 +3106,8 @@
0
- 31
- 215
+ 29
+ 218
1
0
0
@@ -3081,8 +3118,8 @@
0
- 31
- 216
+ 29
+ 219
1
0
0
@@ -3093,8 +3130,8 @@
0
- 31
- 217
+ 29
+ 220
1
0
0
@@ -3105,8 +3142,8 @@
0
- 31
- 218
+ 29
+ 221
1
0
0
@@ -3117,8 +3154,8 @@
0
- 31
- 219
+ 29
+ 222
1
0
0
@@ -3129,8 +3166,8 @@
0
- 31
- 220
+ 29
+ 223
1
0
0
@@ -3141,8 +3178,8 @@
0
- 31
- 221
+ 29
+ 224
1
0
0
@@ -3153,8 +3190,8 @@
0
- 31
- 222
+ 29
+ 225
1
0
0
@@ -3165,8 +3202,8 @@
0
- 31
- 223
+ 29
+ 226
1
0
0
@@ -3177,8 +3214,8 @@
0
- 31
- 224
+ 29
+ 227
1
0
0
@@ -3189,8 +3226,8 @@
0
- 31
- 225
+ 29
+ 228
1
0
0
@@ -3201,8 +3238,8 @@
0
- 31
- 226
+ 29
+ 229
1
0
0
@@ -3213,8 +3250,8 @@
0
- 31
- 227
+ 29
+ 230
1
0
0
@@ -3225,8 +3262,8 @@
0
- 31
- 228
+ 29
+ 231
1
0
0
@@ -3237,8 +3274,8 @@
0
- 31
- 229
+ 29
+ 232
1
0
0
@@ -3249,8 +3286,8 @@
0
- 31
- 230
+ 29
+ 233
1
0
0
@@ -3261,8 +3298,8 @@
0
- 31
- 231
+ 29
+ 234
1
0
0
@@ -3273,8 +3310,8 @@
0
- 31
- 232
+ 29
+ 235
1
0
0
@@ -3285,8 +3322,8 @@
0
- 31
- 233
+ 29
+ 236
1
0
0
@@ -3297,8 +3334,8 @@
0
- 31
- 234
+ 29
+ 237
1
0
0
@@ -3309,8 +3346,8 @@
0
- 31
- 235
+ 29
+ 238
1
0
0
@@ -3321,8 +3358,8 @@
0
- 31
- 236
+ 29
+ 239
1
0
0
@@ -3333,8 +3370,8 @@
0
- 31
- 237
+ 29
+ 240
1
0
0
@@ -3345,8 +3382,8 @@
0
- 31
- 238
+ 29
+ 241
1
0
0
@@ -3357,8 +3394,8 @@
0
- 31
- 239
+ 29
+ 242
1
0
0
@@ -3369,8 +3406,8 @@
0
- 31
- 240
+ 29
+ 243
1
0
0
@@ -3381,8 +3418,8 @@
0
- 31
- 241
+ 29
+ 244
1
0
0
@@ -3393,8 +3430,8 @@
0
- 31
- 242
+ 29
+ 245
1
0
0
@@ -3405,8 +3442,8 @@
0
- 31
- 243
+ 29
+ 246
1
0
0
@@ -3417,8 +3454,8 @@
0
- 31
- 244
+ 29
+ 247
1
0
0
@@ -3429,8 +3466,8 @@
0
- 31
- 245
+ 29
+ 248
1
0
0
@@ -3441,8 +3478,8 @@
0
- 31
- 246
+ 29
+ 249
1
0
0
@@ -3453,8 +3490,8 @@
0
- 31
- 247
+ 29
+ 250
1
0
0
@@ -3465,8 +3502,8 @@
0
- 31
- 248
+ 29
+ 251
1
0
0
@@ -3477,8 +3514,8 @@
0
- 31
- 249
+ 29
+ 252
1
0
0
@@ -3489,8 +3526,8 @@
0
- 31
- 250
+ 29
+ 253
1
0
0
@@ -3509,8 +3546,8 @@
0
0
- 32
- 251
+ 30
+ 254
1
0
0
@@ -3521,8 +3558,8 @@
0
- 32
- 252
+ 30
+ 255
1
0
0
@@ -3533,8 +3570,8 @@
0
- 32
- 253
+ 30
+ 256
1
0
0
diff --git a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/TencentOS_tiny.uvprojx b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/TencentOS_tiny.uvprojx
index fdee40ef35b459ea91adafb8352940bf838e3b29..633711e8199edae2b2ccbb5dc2f4580d11b6e5a0 100644
--- a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/TencentOS_tiny.uvprojx
+++ b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/TencentOS_tiny.uvprojx
@@ -70,9 +70,9 @@
0
- 0
+ 1
0
-
+ python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\before_build.py flash_partition_cfg.json flash_partition_table.h
0
0
@@ -81,9 +81,9 @@
1
- 0
- .\after_build_ln882x.bat
-
+ 1
+ python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\after_build_soc.py @L
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\mkimage.exe cmd_app ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\boot_ln882x.bin @L.bin @L.asm flashimage.bin flash_partition_cfg.json ver=1.1
0
0
0
@@ -338,7 +338,7 @@
LN882x,ARM_MATH_CM4,MBEDTLS_CONFIG_FILE=<qcloud/tls_psk_config.h>
- ..\..\BSP\Inc;..\..\TOS-CONFIG;..\..\..\..\kernel\pm\include;..\..\..\..\kernel\core\include;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\osal\cmsis_os;..\..\..\..\examples\helloworld;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\driver_ln882x;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\ll\include;..\..\..\..\components\fs\kv\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\ln88xx;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\kernel;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\CMSIS_5.3.0;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\wifi_manager;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\net;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port\arch;..\..\..\..\components\connectivity\qcloud-iot-explorer-sdk\3rdparty\include;..\..\..\..\components\connectivity\qcloud-iot-explorer-sdk\3rdparty\include\exports;..\..\..\..\components\connectivity\qcloud-iot-explorer-sdk\3rdparty\sdk_src\internal_inc;..\..\..\..\components\security\mbedtls\3rdparty\include;..\..\..\..\components\security\mbedtls\wrapper\include
+ ..\..\BSP\Inc;..\..\TOS-CONFIG;..\..\..\..\kernel\pm\include;..\..\..\..\kernel\core\include;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\osal\cmsis_os;..\..\..\..\examples\helloworld;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\driver_ln882x;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\ll\include;..\..\..\..\components\fs\kv\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\ln88xx;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\kernel;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\CMSIS_5.3.0;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\wifi_manager;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\net;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port\arch;..\..\..\..\components\connectivity\qcloud-iot-explorer-sdk\3rdparty\include;..\..\..\..\components\connectivity\qcloud-iot-explorer-sdk\3rdparty\include\exports;..\..\..\..\components\connectivity\qcloud-iot-explorer-sdk\3rdparty\sdk_src\internal_inc;..\..\..\..\components\security\mbedtls\3rdparty\include;..\..\..\..\components\security\mbedtls\wrapper\include;..\qcloud_iot_explorer;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv_port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\nvds;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\partition_mgr
@@ -369,10 +369,10 @@
0x08000000
0x20000000
- .\firmware_XIP_ln882x.sct
+ .\ln882x.sct
- --no_autoat --keep=main.o(no_init_data)
+ --no_autoat --keep=*.o(no_init_data)
@@ -429,16 +429,6 @@
-
- Drivers/Drv
-
-
- drv_adc_measure.c
- 1
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\drv\drv_adc_measure.c
-
-
-
Drivers/HAL
@@ -738,6 +728,16 @@
1
..\..\BSP\Src\mcu_init.c
+
+ serial_hw.c
+ 1
+ ..\..\BSP\Src\serial_hw.c
+
+
+ drv_adc_measure.c
+ 1
+ ..\..\BSP\Src\drv_adc_measure.c
+
@@ -748,11 +748,6 @@
1
..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial.c
-
- serial_hw.c
- 1
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial_hw.c
-
@@ -934,9 +929,9 @@
..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_mac.lib
- wifi_driver.lib
+ soc_driver.lib
4
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_driver.lib
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\soc_driver.lib
@@ -948,6 +943,11 @@
1
..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_manager\wifi_manager.c
+
+ wifi_port.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_port\wifi_port.c
+
@@ -1242,22 +1242,27 @@
- tos_components
+ fs
- tos_kv.c
+ ln_kv.c
1
- ..\..\..\..\components\fs\kv\tos_kv.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv\ln_kv.c
+
+
+ ln_kv_port.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv_port\ln_kv_port.c
-
-
-
- nvds
-
nvds.c
1
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\nvds\nvds.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\nvds\nvds.c
+
+
+ flash_partition_mgr.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\partition_mgr\flash_partition_mgr.c
diff --git a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/after_build_ln882x.bat b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/after_build_ln882x.bat
index cc2c067869bce6aeb41969ea95991bdbc55d9ebc..60675d37f1fb6229a9d0e94ce65d4c58c7401266 100644
--- a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/after_build_ln882x.bat
+++ b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/after_build_ln882x.bat
@@ -1,8 +1,4 @@
-
-python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\after_build_soc.py firmware_XIP
-
-..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\mkimage.exe ln882x flashimage ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\boot_ram_ln882x.bin firmware_XIP.bin flashimage.bin release=1 crp_enable=0 app_version=10 hw_version=0
-
-..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\fpu_patch.exe .\firmware_XIP.asm .\flashimage.bin
+python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\after_build_soc.py @L
+..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\mkimage.exe cmd_app ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\boot_ln882x.bin @L.bin @L.asm flashimage.bin flash_partition_cfg.json ver=1.1
diff --git a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/flash_partition_cfg.json b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/flash_partition_cfg.json
new file mode 100644
index 0000000000000000000000000000000000000000..91fec5375be9f0c1e687ff9525f4c3fd7d124452
--- /dev/null
+++ b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/flash_partition_cfg.json
@@ -0,0 +1,22 @@
+{
+ "Warning1":"警告,系统定义用户不可修改!!!",
+ "vendor_define":
+ [
+ {"partition_type": "BOOT", "start_addr": "0x00000000", "size_KB": 36 },
+ {"partition_type": "PART_TAB", "start_addr": "0x00009000", "size_KB": 4 }
+ ],
+
+
+ "Warning2":"以下数据,用户根据SOC flash容量以及具体需求修改,仅可以修改start_addr值和size值,且必须4KB对齐!!!",
+ "user_define":
+ [
+ {"partition_type": "KV", "start_addr": "0x0000A000", "size_KB": 8 },
+ {"partition_type": "SIMU_EEPROM", "start_addr": "0x0000C000", "size_KB": 8 },
+ {"partition_type": "APP", "start_addr": "0x0000E000", "size_KB": 800 },
+ {"partition_type": "OTA", "start_addr": "0x000D6000", "size_KB": 800 },
+ {"partition_type": "NVDS", "start_addr": "0x0019E000", "size_KB": 12 },
+ {"partition_type": "USER", "start_addr": "0x001A1000", "size_KB": 12 }
+ ]
+}
+
+
diff --git a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/flash_partition_table.h b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/flash_partition_table.h
index e068e5bfed174a79bb1f7fa841d5196c0de7bbce..08788e3cd33106dc76b6e0e27e56e1f1fdac627c 100644
--- a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/flash_partition_table.h
+++ b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/flash_partition_table.h
@@ -1,32 +1,56 @@
-#ifndef __FLASH_PARTITION_TABLE_H__
-#define __FLASH_PARTITION_TABLE_H__
+#ifndef __FLASH_PARTITION_TABLE__
+#define __FLASH_PARTITION_TABLE__
-//#define RETENTION_MEM_BASE 0x20028000
-//#define RETENTION_MEM_SIZE 0x2000
-#ifndef FLASH_BASE
-#define FLASH_BASE (0x10000000)
+//flash partition map,it's generated by the script based on the json file
+
+#define BOOT_SPACE_OFFSET (0x00000000)
+#define BOOT_SPACE_SIZE (1024*36)
+
+#define PART_TAB_SPACE_OFFSET (0x00009000)
+#define PART_TAB_SPACE_SIZE (1024*4)
+#if (PART_TAB_SPACE_OFFSET < (BOOT_SPACE_OFFSET + BOOT_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
+#endif
+
+#define KV_SPACE_OFFSET (0x0000A000)
+#define KV_SPACE_SIZE (1024*8)
+#if (KV_SPACE_OFFSET < (PART_TAB_SPACE_OFFSET + PART_TAB_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
+#endif
+
+#define SIMU_EEPROM_SPACE_OFFSET (0x0000C000)
+#define SIMU_EEPROM_SPACE_SIZE (1024*8)
+#if (SIMU_EEPROM_SPACE_OFFSET < (KV_SPACE_OFFSET + KV_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#ifndef FLASH_SIZE
-#define FLASH_SIZE (0x00200000)
+#define APP_SPACE_OFFSET (0x0000E000)
+#define APP_SPACE_SIZE (1024*800)
+#if (APP_SPACE_OFFSET < (SIMU_EEPROM_SPACE_OFFSET + SIMU_EEPROM_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#ifndef PRIMARY_PARTITION_OFFSET
-#define PRIMARY_PARTITION_OFFSET (0x0000F000)
+#define OTA_SPACE_OFFSET (0x000D6000)
+#define OTA_SPACE_SIZE (1024*800)
+#if (OTA_SPACE_OFFSET < (APP_SPACE_OFFSET + APP_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#define PRIMARY_PATTITION_START 0x0000F000
-#define PRIMARY_PATTITION_SIZE 0xE1000
-//#define USERAPP_SRAM_BASE 0x1FFF0000
-#define BACKUP_PATTITION_START 0x000F0000
-#define BACKUP_PATTITION_SIZE 0xE1000
-#define USERDATA_PATTITION_START 0x001D1000
-#define USERDATA_PATTITION_SIZE 0x23000
-
-//memory offset check
-#if ((PRIMARY_PATTITION_START < PRIMARY_PARTITION_OFFSET) || (BACKUP_PATTITION_START < PRIMARY_PATTITION_START) || (USERDATA_PATTITION_START < BACKUP_PATTITION_START) || (PRIMARY_PATTITION_START + PRIMARY_PATTITION_SIZE > BACKUP_PATTITION_START) || (BACKUP_PATTITION_START + BACKUP_PATTITION_SIZE > USERDATA_PATTITION_START) || (USERDATA_PATTITION_START + USERDATA_PATTITION_SIZE > FLASH_SIZE))
- #error "flash partition define error!"
+#define NVDS_SPACE_OFFSET (0x0019E000)
+#define NVDS_SPACE_SIZE (1024*12)
+#if (NVDS_SPACE_OFFSET < (OTA_SPACE_OFFSET + OTA_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#endif /* __FLASH_PARTITION_TABLE_H__ */
+#define USER_SPACE_OFFSET (0x001A1000)
+#define USER_SPACE_SIZE (1024*12)
+#if (USER_SPACE_OFFSET < (NVDS_SPACE_OFFSET + NVDS_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
+#endif
+
+
+#define IMAGE_HEADER_SIZE (0x100)
+
+#endif /* __FLASH_PARTITION_TABLE__ */
+
diff --git a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/firmware_XIP_ln882x.sct b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/ln882x.sct
similarity index 59%
rename from board/EVB_LN882x/KEIL/qcloud_iot_explorer/firmware_XIP_ln882x.sct
rename to board/EVB_LN882x/KEIL/qcloud_iot_explorer/ln882x.sct
index 50c5ed54a8fbe7c3a6368808b01626c5749c6815..26dc840bfa1c7850081bad4ed3086b3fbee26d7d 100644
--- a/board/EVB_LN882x/KEIL/qcloud_iot_explorer/firmware_XIP_ln882x.sct
+++ b/board/EVB_LN882x/KEIL/qcloud_iot_explorer/ln882x.sct
@@ -1,9 +1,9 @@
#! armcc -E
-#include ".\flash_partition_table.h"
+#include "flash_partition_table.h"
#include ".\..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\ln88xx\mem_map_ln882x.h"
-LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
+LR_FLASH CACHE_FLASH_BASE+APP_SPACE_OFFSET+IMAGE_HEADER_SIZE APP_SPACE_SIZE
{; load region size_region
ISR_VECTOR RAM_BASE ALIGN 0x100
@@ -11,7 +11,7 @@ LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
startup_*.o (RESET, +First)
}
- ER_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET + ImageLength(ISR_VECTOR) PRIMARY_PATTITION_SIZE
+ ER_FLASH CACHE_FLASH_BASE+APP_SPACE_OFFSET+IMAGE_HEADER_SIZE + ImageLength(ISR_VECTOR) APP_SPACE_SIZE
{; load address = execution address
*(InRoot$$Sections)
.ANY (+RO)
@@ -24,15 +24,15 @@ LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
ll_cache.o(+RO)
ll_dma.o(+RO)
ll_syscon.o(+RO)
- ll_sleep.o(+RO)
- ll_rtc.o(+RO)
+ ;ll_sleep.o(+RO)
+ ;ll_rtc.o(+RO)
cache.o(+RO)
qspi.o(+RO)
flash.o(+RO)
hal_dma.o(+RO)
hal_syscon.o(+RO)
- hal_sleep.o(+RO)
- hal_rtc.o(+RO)
+ ;hal_sleep.o(+RO)
+ ;hal_rtc.o(+RO)
;port.o(XIR)
;optional item
@@ -49,16 +49,32 @@ LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
startup_ln*(+RW +ZI)
}
- ER_DATA +0
+ ER_DATA_IN_B0 +0 RAM_BLOCK0_SIZE-ImageLength(ISR_VECTOR)-ImageLength(ER_CODE)-ImageLength(ER_STACK)
{
- *(.ARM.__at_0x1FFFFFFC)
- .ANY (+RW +ZI)
+ memp.o(+RW +ZI)
+ imem.o(+RW +ZI)
+ imem_if.o(+RW +ZI)
+ ;cglobals_sta.o(+RW +ZI)
+ ;event_manager.o(+RW +ZI)
+ iconfig.o(+RW +ZI)
+ common.o(+RW +ZI)
+ }
+
+ HEAP_SPACE0 +0 EMPTY RAM_BLOCK1_BASE-ImageLimit(ER_DATA_IN_B0)
+ {; Heap region
+ }
+
+ ER_DATA_IN_B1 RAM_BLOCK1_BASE RAM_BLOCK1_SIZE
+ {
+ *(wlan_mem_pkt)
+ *(wlan_mem_dscr)
+ .ANY (+RW +ZI)
}
;IQ Data area cannot be used by ER_DATA region
;ScatterAssert(ImageLimit(ER_DATA) < (0x20020300))
- HEAP_SPACE +0 EMPTY RETENTION_MEM_BASE-ImageLimit(ER_DATA)
+ HEAP_SPACE1 +0 EMPTY RETENTION_MEM_BASE-ImageLimit(ER_DATA_IN_B1)
{; Heap region
}
diff --git a/board/EVB_LN882x/KEIL/wifi_demo/.gitignore b/board/EVB_LN882x/KEIL/wifi_demo/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..31d89ac45a3ce4a91b4faef7393675c91aaa6774
--- /dev/null
+++ b/board/EVB_LN882x/KEIL/wifi_demo/.gitignore
@@ -0,0 +1,6 @@
+/Listings/
+/Objects/
+*.uvguix.*
+JLinkLog.txt
+*.bin
+*.asm
\ No newline at end of file
diff --git a/board/EVB_LN882x/KEIL/wifi_demo/TencentOS_tiny.uvoptx b/board/EVB_LN882x/KEIL/wifi_demo/TencentOS_tiny.uvoptx
index b56d87ad251dd5ef2aa7aa0486b970fd35d35074..553013ed30eeb90d6d769699e52cbfd3bb644ffe 100644
--- a/board/EVB_LN882x/KEIL/wifi_demo/TencentOS_tiny.uvoptx
+++ b/board/EVB_LN882x/KEIL/wifi_demo/TencentOS_tiny.uvoptx
@@ -114,11 +114,6 @@
Segger\JL2CM3.dll
-
- 0
- DLGUARM
-
-
0
ARMRTXEVENTFLAGS
@@ -150,7 +145,24 @@
-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F10x_512 -FS08000000 -FL080000 -FP0($$Device:STM32F103VE$Flash\STM32F10x_512.FLM)
-
+
+
+ 0
+ 0
+ 50
+ 1
+ 268506362
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\kernel\TencentOS_Adapter\TencentOS_mutex.c
+
+ \\firmware_XIP\../../../../platform/vendor_bsp/LN/ln882x/src/kernel/TencentOS_Adapter/TencentOS_mutex.c\50
+
+
0
@@ -340,7 +352,7 @@
- Drivers/Drv
+ Drivers/HAL
0
0
0
@@ -352,34 +364,14 @@
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\drv\drv_adc_measure.c
- drv_adc_measure.c
- 0
- 0
-
-
-
-
- Drivers/HAL
- 0
- 0
- 0
- 0
-
- 5
- 8
- 1
- 0
- 0
- 0
..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\hal\hal_common.c
hal_common.c
0
0
- 5
- 9
+ 4
+ 8
1
0
0
@@ -390,8 +382,8 @@
0
- 5
- 10
+ 4
+ 9
1
0
0
@@ -402,8 +394,8 @@
0
- 5
- 11
+ 4
+ 10
1
0
0
@@ -414,8 +406,8 @@
0
- 5
- 12
+ 4
+ 11
1
0
0
@@ -426,8 +418,8 @@
0
- 5
- 13
+ 4
+ 12
1
0
0
@@ -438,8 +430,8 @@
0
- 5
- 14
+ 4
+ 13
1
0
0
@@ -450,8 +442,8 @@
0
- 5
- 15
+ 4
+ 14
1
0
0
@@ -462,8 +454,8 @@
0
- 5
- 16
+ 4
+ 15
1
0
0
@@ -474,8 +466,8 @@
0
- 5
- 17
+ 4
+ 16
1
0
0
@@ -486,8 +478,8 @@
0
- 5
- 18
+ 4
+ 17
1
0
0
@@ -498,8 +490,8 @@
0
- 5
- 19
+ 4
+ 18
1
0
0
@@ -510,8 +502,8 @@
0
- 5
- 20
+ 4
+ 19
1
0
0
@@ -530,8 +522,8 @@
0
0
- 6
- 21
+ 5
+ 20
1
0
0
@@ -542,8 +534,8 @@
0
- 6
- 22
+ 5
+ 21
1
0
0
@@ -554,8 +546,8 @@
0
- 6
- 23
+ 5
+ 22
1
0
0
@@ -566,8 +558,8 @@
0
- 6
- 24
+ 5
+ 23
1
0
0
@@ -578,8 +570,8 @@
0
- 6
- 25
+ 5
+ 24
1
0
0
@@ -590,8 +582,8 @@
0
- 6
- 26
+ 5
+ 25
1
0
0
@@ -602,8 +594,8 @@
0
- 6
- 27
+ 5
+ 26
1
0
0
@@ -614,8 +606,8 @@
0
- 6
- 28
+ 5
+ 27
1
0
0
@@ -626,8 +618,8 @@
0
- 6
- 29
+ 5
+ 28
1
0
0
@@ -638,8 +630,8 @@
0
- 6
- 30
+ 5
+ 29
1
0
0
@@ -650,8 +642,8 @@
0
- 6
- 31
+ 5
+ 30
1
0
0
@@ -662,8 +654,8 @@
0
- 6
- 32
+ 5
+ 31
1
0
0
@@ -674,8 +666,8 @@
0
- 6
- 33
+ 5
+ 32
1
0
0
@@ -686,8 +678,8 @@
0
- 6
- 34
+ 5
+ 33
1
0
0
@@ -698,8 +690,8 @@
0
- 6
- 35
+ 5
+ 34
1
0
0
@@ -710,8 +702,8 @@
0
- 6
- 36
+ 5
+ 35
1
0
0
@@ -722,8 +714,8 @@
0
- 6
- 37
+ 5
+ 36
1
0
0
@@ -734,8 +726,8 @@
0
- 6
- 38
+ 5
+ 37
1
0
0
@@ -746,8 +738,8 @@
0
- 6
- 39
+ 5
+ 38
1
0
0
@@ -758,8 +750,8 @@
0
- 6
- 40
+ 5
+ 39
1
0
0
@@ -770,8 +762,8 @@
0
- 6
- 41
+ 5
+ 40
1
0
0
@@ -782,8 +774,8 @@
0
- 6
- 42
+ 5
+ 41
1
0
0
@@ -794,8 +786,8 @@
0
- 6
- 43
+ 5
+ 42
1
0
0
@@ -806,8 +798,8 @@
0
- 6
- 44
+ 5
+ 43
1
0
0
@@ -826,8 +818,8 @@
0
0
- 7
- 45
+ 6
+ 44
1
0
0
@@ -838,8 +830,8 @@
0
- 7
- 46
+ 6
+ 45
2
0
0
@@ -850,8 +842,8 @@
0
- 7
- 47
+ 6
+ 46
1
0
0
@@ -863,6 +855,26 @@
+
+ cmsis
+ 0
+ 0
+ 0
+ 0
+
+ 7
+ 47
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\osal\cmsis_os\cmsis_os.c
+ cmsis_os.c
+ 0
+ 0
+
+
+
config
0
@@ -896,7 +908,7 @@
- cmsis
+ bsp
0
0
0
@@ -908,60 +920,52 @@
0
0
0
- ..\..\..\..\osal\cmsis_os\cmsis_os.c
- cmsis_os.c
+ ..\..\BSP\Src\mcu_init.c
+ mcu_init.c
0
0
-
-
-
- bsp
- 0
- 0
- 0
- 0
- 10
+ 9
51
1
0
0
0
- ..\..\BSP\Src\mcu_init.c
- mcu_init.c
+ ..\..\BSP\Src\serial_hw.c
+ serial_hw.c
0
0
-
-
-
- serial
- 0
- 0
- 0
- 0
- 11
+ 9
52
1
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial.c
- serial.c
+ ..\..\BSP\Src\drv_adc_measure.c
+ drv_adc_measure.c
0
0
+
+
+
+ serial
+ 0
+ 0
+ 0
+ 0
- 11
+ 10
53
1
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial_hw.c
- serial_hw.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial.c
+ serial.c
0
0
@@ -974,7 +978,7 @@
0
0
- 12
+ 11
54
1
0
@@ -994,7 +998,7 @@
0
0
- 13
+ 12
55
1
0
@@ -1006,7 +1010,7 @@
0
- 13
+ 12
56
1
0
@@ -1018,7 +1022,7 @@
0
- 13
+ 12
57
1
0
@@ -1030,7 +1034,7 @@
0
- 13
+ 12
58
1
0
@@ -1042,7 +1046,7 @@
0
- 13
+ 12
59
1
0
@@ -1054,7 +1058,7 @@
0
- 13
+ 12
60
1
0
@@ -1074,7 +1078,7 @@
0
0
- 14
+ 13
61
1
0
@@ -1086,7 +1090,7 @@
0
- 14
+ 13
62
1
0
@@ -1098,7 +1102,7 @@
0
- 14
+ 13
63
1
0
@@ -1110,7 +1114,7 @@
0
- 14
+ 13
64
1
0
@@ -1122,7 +1126,7 @@
0
- 14
+ 13
65
1
0
@@ -1134,7 +1138,7 @@
0
- 14
+ 13
66
1
0
@@ -1146,7 +1150,7 @@
0
- 14
+ 13
67
1
0
@@ -1158,7 +1162,7 @@
0
- 14
+ 13
68
1
0
@@ -1170,7 +1174,7 @@
0
- 14
+ 13
69
1
0
@@ -1182,7 +1186,7 @@
0
- 14
+ 13
70
1
0
@@ -1194,7 +1198,7 @@
0
- 14
+ 13
71
1
0
@@ -1206,7 +1210,7 @@
0
- 14
+ 13
72
1
0
@@ -1218,7 +1222,7 @@
0
- 14
+ 13
73
1
0
@@ -1238,7 +1242,7 @@
0
0
- 15
+ 14
74
5
0
@@ -1258,7 +1262,7 @@
0
0
- 16
+ 15
75
1
0
@@ -1270,7 +1274,7 @@
0
- 16
+ 15
76
1
0
@@ -1282,7 +1286,7 @@
0
- 16
+ 15
77
1
0
@@ -1294,7 +1298,7 @@
0
- 16
+ 15
78
1
0
@@ -1306,7 +1310,7 @@
0
- 16
+ 15
79
1
0
@@ -1318,7 +1322,7 @@
0
- 16
+ 15
80
1
0
@@ -1330,7 +1334,7 @@
0
- 16
+ 15
81
1
0
@@ -1350,7 +1354,7 @@
0
0
- 17
+ 16
82
4
0
@@ -1362,26 +1366,26 @@
0
- 17
+ 16
83
4
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_mac.lib
- wifi_mac.lib
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\soc_driver.lib
+ soc_driver.lib
0
0
- 17
+ 16
84
4
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_driver.lib
- wifi_driver.lib
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_mac.lib
+ wifi_mac.lib
0
0
@@ -1394,7 +1398,7 @@
0
0
- 18
+ 17
85
1
0
@@ -1405,6 +1409,18 @@
0
0
+
+ 17
+ 86
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_port\wifi_port.c
+ wifi_port.c
+ 0
+ 0
+
@@ -1414,8 +1430,8 @@
0
0
- 19
- 86
+ 18
+ 87
1
0
0
@@ -1426,8 +1442,8 @@
0
- 19
- 87
+ 18
+ 88
1
0
0
@@ -1438,8 +1454,8 @@
0
- 19
- 88
+ 18
+ 89
1
0
0
@@ -1450,8 +1466,8 @@
0
- 19
- 89
+ 18
+ 90
1
0
0
@@ -1462,8 +1478,8 @@
0
- 19
- 90
+ 18
+ 91
1
0
0
@@ -1474,8 +1490,8 @@
0
- 19
- 91
+ 18
+ 92
1
0
0
@@ -1486,8 +1502,8 @@
0
- 19
- 92
+ 18
+ 93
1
0
0
@@ -1498,8 +1514,8 @@
0
- 19
- 93
+ 18
+ 94
1
0
0
@@ -1510,8 +1526,8 @@
0
- 19
- 94
+ 18
+ 95
1
0
0
@@ -1522,8 +1538,8 @@
0
- 19
- 95
+ 18
+ 96
1
0
0
@@ -1534,8 +1550,8 @@
0
- 19
- 96
+ 18
+ 97
1
0
0
@@ -1546,8 +1562,8 @@
0
- 19
- 97
+ 18
+ 98
1
0
0
@@ -1558,8 +1574,8 @@
0
- 19
- 98
+ 18
+ 99
1
0
0
@@ -1570,8 +1586,8 @@
0
- 19
- 99
+ 18
+ 100
1
0
0
@@ -1582,8 +1598,8 @@
0
- 19
- 100
+ 18
+ 101
1
0
0
@@ -1594,8 +1610,8 @@
0
- 19
- 101
+ 18
+ 102
1
0
0
@@ -1606,8 +1622,8 @@
0
- 19
- 102
+ 18
+ 103
1
0
0
@@ -1618,8 +1634,8 @@
0
- 19
- 103
+ 18
+ 104
1
0
0
@@ -1630,8 +1646,8 @@
0
- 19
- 104
+ 18
+ 105
1
0
0
@@ -1642,8 +1658,8 @@
0
- 19
- 105
+ 18
+ 106
1
0
0
@@ -1654,8 +1670,8 @@
0
- 19
- 106
+ 18
+ 107
1
0
0
@@ -1666,8 +1682,8 @@
0
- 19
- 107
+ 18
+ 108
1
0
0
@@ -1678,8 +1694,8 @@
0
- 19
- 108
+ 18
+ 109
1
0
0
@@ -1690,8 +1706,8 @@
0
- 19
- 109
+ 18
+ 110
1
0
0
@@ -1702,8 +1718,8 @@
0
- 19
- 110
+ 18
+ 111
1
0
0
@@ -1722,8 +1738,8 @@
0
0
- 20
- 111
+ 19
+ 112
1
0
0
@@ -1734,8 +1750,8 @@
0
- 20
- 112
+ 19
+ 113
1
0
0
@@ -1746,8 +1762,8 @@
0
- 20
- 113
+ 19
+ 114
1
0
0
@@ -1758,8 +1774,8 @@
0
- 20
- 114
+ 19
+ 115
1
0
0
@@ -1770,8 +1786,8 @@
0
- 20
- 115
+ 19
+ 116
1
0
0
@@ -1782,8 +1798,8 @@
0
- 20
- 116
+ 19
+ 117
1
0
0
@@ -1794,8 +1810,8 @@
0
- 20
- 117
+ 19
+ 118
1
0
0
@@ -1806,8 +1822,8 @@
0
- 20
- 118
+ 19
+ 119
1
0
0
@@ -1826,8 +1842,8 @@
0
0
- 21
- 119
+ 20
+ 120
1
0
0
@@ -1838,8 +1854,8 @@
0
- 21
- 120
+ 20
+ 121
1
0
0
@@ -1858,8 +1874,8 @@
0
0
- 22
- 121
+ 21
+ 122
1
0
0
@@ -1870,8 +1886,8 @@
0
- 22
- 122
+ 21
+ 123
1
0
0
@@ -1882,8 +1898,8 @@
0
- 22
- 123
+ 21
+ 124
5
0
0
@@ -1902,8 +1918,8 @@
0
0
- 23
- 124
+ 22
+ 125
1
0
0
@@ -1914,8 +1930,8 @@
0
- 23
- 125
+ 22
+ 126
1
0
0
@@ -1926,8 +1942,8 @@
0
- 23
- 126
+ 22
+ 127
1
0
0
@@ -1938,8 +1954,8 @@
0
- 23
- 127
+ 22
+ 128
1
0
0
@@ -1950,8 +1966,8 @@
0
- 23
- 128
+ 22
+ 129
1
0
0
@@ -1964,40 +1980,56 @@
- tos_components
+ fs
0
0
0
0
- 24
- 129
+ 23
+ 130
1
0
0
0
- ..\..\..\..\components\fs\kv\tos_kv.c
- tos_kv.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\nvds\nvds.c
+ nvds.c
0
0
-
-
-
- nvds
- 0
- 0
- 0
- 0
- 25
- 130
+ 23
+ 131
1
0
0
0
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\nvds\nvds.c
- nvds.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\partition_mgr\flash_partition_mgr.c
+ flash_partition_mgr.c
+ 0
+ 0
+
+
+ 23
+ 132
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv\ln_kv.c
+ ln_kv.c
+ 0
+ 0
+
+
+ 23
+ 133
+ 1
+ 0
+ 0
+ 0
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv_port\ln_kv_port.c
+ ln_kv_port.c
0
0
diff --git a/board/EVB_LN882x/KEIL/wifi_demo/TencentOS_tiny.uvprojx b/board/EVB_LN882x/KEIL/wifi_demo/TencentOS_tiny.uvprojx
index df6822f616945bb5460e71791f71fa9d4f035b8b..273f27bd7ff1b44a3dc8eb1a13dd69ca5d650f43 100644
--- a/board/EVB_LN882x/KEIL/wifi_demo/TencentOS_tiny.uvprojx
+++ b/board/EVB_LN882x/KEIL/wifi_demo/TencentOS_tiny.uvprojx
@@ -69,9 +69,9 @@
0
- 0
+ 1
0
-
+ python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\before_build.py flash_partition_cfg.json flash_partition_table.h
0
0
@@ -80,9 +80,9 @@
1
- 0
- .\after_build_ln882x.bat
-
+ 1
+ python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\after_build_soc.py @L
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\mkimage.exe cmd_app ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\boot_ln882x.bin @L.bin @L.asm flashimage.bin flash_partition_cfg.json ver=1.1
0
0
0
@@ -332,7 +332,7 @@
LN882x,ARM_MATH_CM4
- ..\..\BSP\Inc;..\..\TOS-CONFIG;..\..\..\..\kernel\pm\include;..\..\..\..\kernel\core\include;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\osal\cmsis_os;..\..\..\..\examples\helloworld;..\hello_world;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\driver_ln882x;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\ll\include;..\..\..\..\components\fs\kv\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\ln88xx;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\kernel;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\CMSIS_5.3.0;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\wifi_manager;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\net;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port\arch;..\..\..\..\examples\wifi_ln882x
+ ..\..\BSP\Inc;..\..\TOS-CONFIG;..\..\..\..\kernel\pm\include;..\..\..\..\kernel\core\include;..\..\..\..\arch\arm\arm-v7m\common\include;..\..\..\..\arch\arm\arm-v7m\cortex-m4\armcc;..\..\..\..\osal\cmsis_os;..\..\..\..\examples\helloworld;..\hello_world;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\driver_ln882x;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\ll\include;..\..\..\..\components\fs\kv\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\ln88xx;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\kernel;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\CMSIS_5.3.0;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\wifi_manager;..\..\..\..\platform\vendor_bsp\LN\ln882x\include\net;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\net\lwip-2.0.3\src\port\arch;..\..\..\..\examples\wifi_ln882x;..\wifi_demo;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv_port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\nvds;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\partition_mgr;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\ll\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\include;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Common;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Controller\AP;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Controller\AP-STA;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Controller\ModeIF;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Controller\STA;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Controller\STA\ProtIF;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP-STA;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP-STA\M802_11e;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP-STA\M802_11i;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP-STA\M802_11n;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP-STA\ProtIF;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP-STA\M802_11e;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP\M802_11e;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP\M802_11i;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP\M802_11n;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP\M802_1x;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\AP\ProtIF;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\STA;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\STA\M802_11e;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\STA\M802_11i;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\STA\M802_11n;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\STA\M802_1x;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\STA\ProtIF;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Core\ModeIF;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\Host;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\IF;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\MACHW;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\RF\ART2000;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\PHY\PHYHW\LN;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\PHY\PHYProt\P802_11n;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\TEMP_CAL;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\RF_HW;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\RF_IMG_CAL\hw_img_cal;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Edge\RF_IMG_CAL\image_cal;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\CSL;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Test\MacSwTest;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Utils\MM;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_mac\Utils\QM;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_port;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_if;..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_cfg\include
@@ -362,10 +362,10 @@
0x08000000
0x20000000
- .\firmware_XIP_ln882x.sct
+ .\ln882x.sct
- --no_autoat --keep=main.o(no_init_data)
+ --no_autoat --keep=*.o(no_init_data)
@@ -417,16 +417,6 @@
-
- Drivers/Drv
-
-
- drv_adc_measure.c
- 1
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\driver_ln882x\drv\drv_adc_measure.c
-
-
-
Drivers/HAL
@@ -689,6 +679,16 @@
+
+ cmsis
+
+
+ cmsis_os.c
+ 1
+ ..\..\..\..\osal\cmsis_os\cmsis_os.c
+
+
+
config
@@ -704,16 +704,6 @@
-
- cmsis
-
-
- cmsis_os.c
- 1
- ..\..\..\..\osal\cmsis_os\cmsis_os.c
-
-
-
bsp
@@ -722,6 +712,16 @@
1
..\..\BSP\Src\mcu_init.c
+
+ serial_hw.c
+ 1
+ ..\..\BSP\Src\serial_hw.c
+
+
+ drv_adc_measure.c
+ 1
+ ..\..\BSP\Src\drv_adc_measure.c
+
@@ -732,11 +732,6 @@
1
..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial.c
-
- serial_hw.c
- 1
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\serial\serial_hw.c
-
@@ -913,14 +908,14 @@
..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\arm_cortexM4lf_math.lib
- wifi_mac.lib
+ soc_driver.lib
4
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_mac.lib
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\soc_driver.lib
- wifi_driver.lib
+ wifi_mac.lib
4
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_driver.lib
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\wifi_mac.lib
@@ -932,6 +927,11 @@
1
..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_manager\wifi_manager.c
+
+ wifi_port.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\wifi\wifi_port\wifi_port.c
+
@@ -1222,22 +1222,27 @@
- tos_components
+ fs
- tos_kv.c
+ nvds.c
1
- ..\..\..\..\components\fs\kv\tos_kv.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\nvds\nvds.c
-
-
-
- nvds
-
- nvds.c
+ flash_partition_mgr.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\partition_mgr\flash_partition_mgr.c
+
+
+ ln_kv.c
+ 1
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv\ln_kv.c
+
+
+ ln_kv_port.c
1
- ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\nvds\nvds.c
+ ..\..\..\..\platform\vendor_bsp\LN\ln882x\src\fs\kv\kv_port\ln_kv_port.c
diff --git a/board/EVB_LN882x/KEIL/wifi_demo/after_build_ln882x.bat b/board/EVB_LN882x/KEIL/wifi_demo/after_build_ln882x.bat
index cc2c067869bce6aeb41969ea95991bdbc55d9ebc..60675d37f1fb6229a9d0e94ce65d4c58c7401266 100644
--- a/board/EVB_LN882x/KEIL/wifi_demo/after_build_ln882x.bat
+++ b/board/EVB_LN882x/KEIL/wifi_demo/after_build_ln882x.bat
@@ -1,8 +1,4 @@
-
-python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\after_build_soc.py firmware_XIP
-
-..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\mkimage.exe ln882x flashimage ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\boot_ram_ln882x.bin firmware_XIP.bin flashimage.bin release=1 crp_enable=0 app_version=10 hw_version=0
-
-..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\fpu_patch.exe .\firmware_XIP.asm .\flashimage.bin
+python ..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\user_cmd\after_build_soc.py @L
+..\..\..\..\platform\vendor_bsp\LN\ln882x\tools\bin\mkimage.exe cmd_app ..\..\..\..\platform\vendor_bsp\LN\ln882x\lib\boot_ln882x.bin @L.bin @L.asm flashimage.bin flash_partition_cfg.json ver=1.1
diff --git a/board/EVB_LN882x/KEIL/wifi_demo/flash_partition_cfg.json b/board/EVB_LN882x/KEIL/wifi_demo/flash_partition_cfg.json
new file mode 100644
index 0000000000000000000000000000000000000000..91fec5375be9f0c1e687ff9525f4c3fd7d124452
--- /dev/null
+++ b/board/EVB_LN882x/KEIL/wifi_demo/flash_partition_cfg.json
@@ -0,0 +1,22 @@
+{
+ "Warning1":"警告,系统定义用户不可修改!!!",
+ "vendor_define":
+ [
+ {"partition_type": "BOOT", "start_addr": "0x00000000", "size_KB": 36 },
+ {"partition_type": "PART_TAB", "start_addr": "0x00009000", "size_KB": 4 }
+ ],
+
+
+ "Warning2":"以下数据,用户根据SOC flash容量以及具体需求修改,仅可以修改start_addr值和size值,且必须4KB对齐!!!",
+ "user_define":
+ [
+ {"partition_type": "KV", "start_addr": "0x0000A000", "size_KB": 8 },
+ {"partition_type": "SIMU_EEPROM", "start_addr": "0x0000C000", "size_KB": 8 },
+ {"partition_type": "APP", "start_addr": "0x0000E000", "size_KB": 800 },
+ {"partition_type": "OTA", "start_addr": "0x000D6000", "size_KB": 800 },
+ {"partition_type": "NVDS", "start_addr": "0x0019E000", "size_KB": 12 },
+ {"partition_type": "USER", "start_addr": "0x001A1000", "size_KB": 12 }
+ ]
+}
+
+
diff --git a/board/EVB_LN882x/KEIL/wifi_demo/flash_partition_table.h b/board/EVB_LN882x/KEIL/wifi_demo/flash_partition_table.h
index e068e5bfed174a79bb1f7fa841d5196c0de7bbce..08788e3cd33106dc76b6e0e27e56e1f1fdac627c 100644
--- a/board/EVB_LN882x/KEIL/wifi_demo/flash_partition_table.h
+++ b/board/EVB_LN882x/KEIL/wifi_demo/flash_partition_table.h
@@ -1,32 +1,56 @@
-#ifndef __FLASH_PARTITION_TABLE_H__
-#define __FLASH_PARTITION_TABLE_H__
+#ifndef __FLASH_PARTITION_TABLE__
+#define __FLASH_PARTITION_TABLE__
-//#define RETENTION_MEM_BASE 0x20028000
-//#define RETENTION_MEM_SIZE 0x2000
-#ifndef FLASH_BASE
-#define FLASH_BASE (0x10000000)
+//flash partition map,it's generated by the script based on the json file
+
+#define BOOT_SPACE_OFFSET (0x00000000)
+#define BOOT_SPACE_SIZE (1024*36)
+
+#define PART_TAB_SPACE_OFFSET (0x00009000)
+#define PART_TAB_SPACE_SIZE (1024*4)
+#if (PART_TAB_SPACE_OFFSET < (BOOT_SPACE_OFFSET + BOOT_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
+#endif
+
+#define KV_SPACE_OFFSET (0x0000A000)
+#define KV_SPACE_SIZE (1024*8)
+#if (KV_SPACE_OFFSET < (PART_TAB_SPACE_OFFSET + PART_TAB_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
+#endif
+
+#define SIMU_EEPROM_SPACE_OFFSET (0x0000C000)
+#define SIMU_EEPROM_SPACE_SIZE (1024*8)
+#if (SIMU_EEPROM_SPACE_OFFSET < (KV_SPACE_OFFSET + KV_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#ifndef FLASH_SIZE
-#define FLASH_SIZE (0x00200000)
+#define APP_SPACE_OFFSET (0x0000E000)
+#define APP_SPACE_SIZE (1024*800)
+#if (APP_SPACE_OFFSET < (SIMU_EEPROM_SPACE_OFFSET + SIMU_EEPROM_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#ifndef PRIMARY_PARTITION_OFFSET
-#define PRIMARY_PARTITION_OFFSET (0x0000F000)
+#define OTA_SPACE_OFFSET (0x000D6000)
+#define OTA_SPACE_SIZE (1024*800)
+#if (OTA_SPACE_OFFSET < (APP_SPACE_OFFSET + APP_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#define PRIMARY_PATTITION_START 0x0000F000
-#define PRIMARY_PATTITION_SIZE 0xE1000
-//#define USERAPP_SRAM_BASE 0x1FFF0000
-#define BACKUP_PATTITION_START 0x000F0000
-#define BACKUP_PATTITION_SIZE 0xE1000
-#define USERDATA_PATTITION_START 0x001D1000
-#define USERDATA_PATTITION_SIZE 0x23000
-
-//memory offset check
-#if ((PRIMARY_PATTITION_START < PRIMARY_PARTITION_OFFSET) || (BACKUP_PATTITION_START < PRIMARY_PATTITION_START) || (USERDATA_PATTITION_START < BACKUP_PATTITION_START) || (PRIMARY_PATTITION_START + PRIMARY_PATTITION_SIZE > BACKUP_PATTITION_START) || (BACKUP_PATTITION_START + BACKUP_PATTITION_SIZE > USERDATA_PATTITION_START) || (USERDATA_PATTITION_START + USERDATA_PATTITION_SIZE > FLASH_SIZE))
- #error "flash partition define error!"
+#define NVDS_SPACE_OFFSET (0x0019E000)
+#define NVDS_SPACE_SIZE (1024*12)
+#if (NVDS_SPACE_OFFSET < (OTA_SPACE_OFFSET + OTA_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
#endif
-#endif /* __FLASH_PARTITION_TABLE_H__ */
+#define USER_SPACE_OFFSET (0x001A1000)
+#define USER_SPACE_SIZE (1024*12)
+#if (USER_SPACE_OFFSET < (NVDS_SPACE_OFFSET + NVDS_SPACE_SIZE))
+ #error "flash partition overlap,please check !!!"
+#endif
+
+
+#define IMAGE_HEADER_SIZE (0x100)
+
+#endif /* __FLASH_PARTITION_TABLE__ */
+
diff --git a/board/EVB_LN882x/KEIL/wifi_demo/firmware_XIP_ln882x.sct b/board/EVB_LN882x/KEIL/wifi_demo/ln882x.sct
similarity index 59%
rename from board/EVB_LN882x/KEIL/wifi_demo/firmware_XIP_ln882x.sct
rename to board/EVB_LN882x/KEIL/wifi_demo/ln882x.sct
index 50c5ed54a8fbe7c3a6368808b01626c5749c6815..26dc840bfa1c7850081bad4ed3086b3fbee26d7d 100644
--- a/board/EVB_LN882x/KEIL/wifi_demo/firmware_XIP_ln882x.sct
+++ b/board/EVB_LN882x/KEIL/wifi_demo/ln882x.sct
@@ -1,9 +1,9 @@
#! armcc -E
-#include ".\flash_partition_table.h"
+#include "flash_partition_table.h"
#include ".\..\..\..\..\platform\vendor_bsp\LN\ln882x\include\cpu\ARM_CM4F\ln88xx\mem_map_ln882x.h"
-LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
+LR_FLASH CACHE_FLASH_BASE+APP_SPACE_OFFSET+IMAGE_HEADER_SIZE APP_SPACE_SIZE
{; load region size_region
ISR_VECTOR RAM_BASE ALIGN 0x100
@@ -11,7 +11,7 @@ LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
startup_*.o (RESET, +First)
}
- ER_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET + ImageLength(ISR_VECTOR) PRIMARY_PATTITION_SIZE
+ ER_FLASH CACHE_FLASH_BASE+APP_SPACE_OFFSET+IMAGE_HEADER_SIZE + ImageLength(ISR_VECTOR) APP_SPACE_SIZE
{; load address = execution address
*(InRoot$$Sections)
.ANY (+RO)
@@ -24,15 +24,15 @@ LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
ll_cache.o(+RO)
ll_dma.o(+RO)
ll_syscon.o(+RO)
- ll_sleep.o(+RO)
- ll_rtc.o(+RO)
+ ;ll_sleep.o(+RO)
+ ;ll_rtc.o(+RO)
cache.o(+RO)
qspi.o(+RO)
flash.o(+RO)
hal_dma.o(+RO)
hal_syscon.o(+RO)
- hal_sleep.o(+RO)
- hal_rtc.o(+RO)
+ ;hal_sleep.o(+RO)
+ ;hal_rtc.o(+RO)
;port.o(XIR)
;optional item
@@ -49,16 +49,32 @@ LR_FLASH FLASH_BASE+PRIMARY_PARTITION_OFFSET PRIMARY_PATTITION_SIZE
startup_ln*(+RW +ZI)
}
- ER_DATA +0
+ ER_DATA_IN_B0 +0 RAM_BLOCK0_SIZE-ImageLength(ISR_VECTOR)-ImageLength(ER_CODE)-ImageLength(ER_STACK)
{
- *(.ARM.__at_0x1FFFFFFC)
- .ANY (+RW +ZI)
+ memp.o(+RW +ZI)
+ imem.o(+RW +ZI)
+ imem_if.o(+RW +ZI)
+ ;cglobals_sta.o(+RW +ZI)
+ ;event_manager.o(+RW +ZI)
+ iconfig.o(+RW +ZI)
+ common.o(+RW +ZI)
+ }
+
+ HEAP_SPACE0 +0 EMPTY RAM_BLOCK1_BASE-ImageLimit(ER_DATA_IN_B0)
+ {; Heap region
+ }
+
+ ER_DATA_IN_B1 RAM_BLOCK1_BASE RAM_BLOCK1_SIZE
+ {
+ *(wlan_mem_pkt)
+ *(wlan_mem_dscr)
+ .ANY (+RW +ZI)
}
;IQ Data area cannot be used by ER_DATA region
;ScatterAssert(ImageLimit(ER_DATA) < (0x20020300))
- HEAP_SPACE +0 EMPTY RETENTION_MEM_BASE-ImageLimit(ER_DATA)
+ HEAP_SPACE1 +0 EMPTY RETENTION_MEM_BASE-ImageLimit(ER_DATA_IN_B1)
{; Heap region
}
diff --git a/board/EVB_LN882x/startup/startup_ln882x.S b/board/EVB_LN882x/startup/startup_ln882x.S
new file mode 100644
index 0000000000000000000000000000000000000000..a112c2dd4f0cfdcf3b7888bce6f479e88aa2a5dc
--- /dev/null
+++ b/board/EVB_LN882x/startup/startup_ln882x.S
@@ -0,0 +1,290 @@
+;/**************************************************************************//**
+; * @file startup_ARMCM4.s
+; * @brief CMSIS Core Device Startup File for
+; * ARMCM4 Device Series
+; * @version V5.00
+; * @date 02. March 2016
+; ******************************************************************************/
+;/*
+; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; *
+; * SPDX-License-Identifier: Apache-2.0
+; *
+; * Licensed under the Apache License, Version 2.0 (the License); you may
+; * not use this file except in compliance with the License.
+; * You may obtain a copy of the License at
+; *
+; * www.apache.org/licenses/LICENSE-2.0
+; *
+; * Unless required by applicable law or agreed to in writing, software
+; * distributed under the License is distributed on an AS IS BASIS, WITHOUT
+; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+; * See the License for the specific language governing permissions and
+; * limitations under the License.
+; */
+
+;/*
+;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
+;*/
+
+
+; Stack Configuration
+; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Stack_Size EQU 0x00001800
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; Heap Configuration
+; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Heap_Size EQU 0x00000000
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ;(0x00)Top of Stack
+ DCD Reset_Handler ;(0x04)IRQ -15 Reset Handler
+ DCD NMI_Handler ;(0x08)IRQ -14 NMI Handler
+ DCD HardFault_Handler ;(0x0C)IRQ -13 Hard Fault Handler
+ DCD MemManage_Handler ;(0x10)IRQ -12 MPU Fault Handler
+ DCD BusFault_Handler ;(0x14)IRQ -11 Bus Fault Handler
+ DCD UsageFault_Handler ;(0x18)IRQ -10 Usage Fault Handler
+ DCD 0 ;(0x1C)IRQ -9 Reserved
+ DCD 0 ;(0x20)IRQ -8 Reserved
+ DCD 0 ;(0x24)IRQ -7 Reserved
+ DCD 0 ;(0x28)IRQ -6 Reserved
+ DCD SVC_Handler ;(0x2C)IRQ -5 SVCall Handler
+ DCD DebugMon_Handler ;(0x30)IRQ -4 Debug Monitor Handler
+ DCD 0 ;(0x34)IRQ -3 Reserved
+ DCD PendSV_Handler ;(0x38)IRQ -2 PendSV Handler
+ DCD SysTick_Handler ;(0x3C)IRQ -1 SysTick Handler
+
+ ; External Interrupts
+ DCD WDT_IRQHandler ;(0x40)IRQ0
+ DCD EXTERNAL_IRQHandler ;(0x44)IRQ1
+ DCD RTC_IRQHandler ;(0x48)IRQ2
+ DCD SLEEP_IRQHandler ;(0x4C)IRQ3
+ DCD MAC_IRQHandler ;(0x50)IRQ4
+ DCD DMA_IRQHandler ;(0x54)IRQ5
+ DCD QSPI_IRQHandler ;(0x58)IRQ6
+ DCD SDIO_FUN1_IRQHandler ;(0x5C)IRQ7
+ DCD SDIO_FUN2_IRQHandler ;(0x60)IRQ8
+ DCD SDIO_FUN3_IRQHandler ;(0x64)IRQ9
+ DCD SDIO_FUN4_IRQHandler ;(0x68)IRQ10
+ DCD SDIO_FUN5_IRQHandler ;(0x6C)IRQ11
+ DCD SDIO_FUN6_IRQHandler ;(0x70)IRQ12
+ DCD SDIO_FUN7_IRQHandler ;(0x74)IRQ13
+ DCD SDIO_ASYNC_HOST_IRQHandler ;(0x78)IRQ14
+ DCD SDIO_M2S_IRQHandler ;(0x7C)IRQ15
+ DCD CM4_INTR0_IRQHandler ;(0x80)IRQ16
+ DCD CM4_INTR1_IRQHandler ;(0x84)IRQ17
+ DCD CM4_INTR2_IRQHandler ;(0x88)IRQ18
+ DCD CM4_INTR3_IRQHandler ;(0x8C)IRQ19
+ DCD CM4_INTR4_IRQHandler ;(0x90)IRQ20
+ DCD CM4_INTR5_IRQHandler ;(0x94)IRQ21
+ DCD ADC_IRQHandler ;(0x98)IRQ22
+ DCD TIMER_IRQHandler ;(0x9C)IRQ23
+ DCD I2C0_IRQHandler ;(0xA0)IRQ24
+ DCD I2C1_IRQHandler ;(0xA4)IRQ25
+ DCD SPI0_IRQHandler ;(0xA8)IRQ26
+ DCD SPI2_IRQHandler ;(0xAC)IRQ27
+ DCD UART0_IRQHandler ;(0xB0)IRQ28
+ DCD UART1_IRQHandler ;(0xB4)IRQ29
+ DCD SPI1_IRQHandler ;(0xB8)IRQ30
+ DCD GPIO_IRQHandler ;(0xBC)IRQ31
+ DCD I2S_IRQHandler ;(0xC0)IRQ32
+ DCD PAOTD_IRQHandler ;(0xC4)IRQ33
+ DCD PWM_IRQHandler ;(0xC8)IRQ34
+ DCD TRNG_IRQHandler ;(0xCC)IRQ35
+ DCD AES_IRQHandler ;(0xD0)IRQ36
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+
+; Reset Handler
+
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+ LDR R4, =SystemInit
+ BLX R4
+ LDR R4, =__main
+ BX R4
+ ENDP
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+MemManage_Handler\
+ PROC
+ EXPORT MemManage_Handler [WEAK]
+ B .
+ ENDP
+BusFault_Handler\
+ PROC
+ EXPORT BusFault_Handler [WEAK]
+ B .
+ ENDP
+UsageFault_Handler\
+ PROC
+ EXPORT UsageFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+DebugMon_Handler\
+ PROC
+ EXPORT DebugMon_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+
+ EXPORT WDT_IRQHandler [WEAK]
+ EXPORT EXTERNAL_IRQHandler [WEAK]
+ EXPORT RTC_IRQHandler [WEAK]
+ EXPORT SLEEP_IRQHandler [WEAK]
+ EXPORT MAC_IRQHandler [WEAK]
+ EXPORT DMA_IRQHandler [WEAK]
+ EXPORT QSPI_IRQHandler [WEAK]
+ EXPORT SDIO_FUN1_IRQHandler [WEAK]
+ EXPORT SDIO_FUN2_IRQHandler [WEAK]
+ EXPORT SDIO_FUN3_IRQHandler [WEAK]
+ EXPORT SDIO_FUN4_IRQHandler [WEAK]
+ EXPORT SDIO_FUN5_IRQHandler [WEAK]
+ EXPORT SDIO_FUN6_IRQHandler [WEAK]
+ EXPORT SDIO_FUN7_IRQHandler [WEAK]
+ EXPORT SDIO_ASYNC_HOST_IRQHandler [WEAK]
+ EXPORT SDIO_M2S_IRQHandler [WEAK]
+ EXPORT CM4_INTR0_IRQHandler [WEAK]
+ EXPORT CM4_INTR1_IRQHandler [WEAK]
+ EXPORT CM4_INTR2_IRQHandler [WEAK]
+ EXPORT CM4_INTR3_IRQHandler [WEAK]
+ EXPORT CM4_INTR4_IRQHandler [WEAK]
+ EXPORT CM4_INTR5_IRQHandler [WEAK]
+ EXPORT ADC_IRQHandler [WEAK]
+ EXPORT TIMER_IRQHandler [WEAK]
+ EXPORT I2C0_IRQHandler [WEAK]
+ EXPORT I2C1_IRQHandler [WEAK]
+ EXPORT SPI0_IRQHandler [WEAK]
+ EXPORT SPI2_IRQHandler [WEAK]
+ EXPORT UART0_IRQHandler [WEAK]
+ EXPORT UART1_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT GPIO_IRQHandler [WEAK]
+ EXPORT I2S_IRQHandler [WEAK]
+ EXPORT PAOTD_IRQHandler [WEAK]
+ EXPORT PWM_IRQHandler [WEAK]
+ EXPORT TRNG_IRQHandler [WEAK]
+ EXPORT AES_IRQHandler [WEAK]
+WDT_IRQHandler
+EXTERNAL_IRQHandler
+RTC_IRQHandler
+SLEEP_IRQHandler
+MAC_IRQHandler
+DMA_IRQHandler
+QSPI_IRQHandler
+SDIO_FUN1_IRQHandler
+SDIO_FUN2_IRQHandler
+SDIO_FUN3_IRQHandler
+SDIO_FUN4_IRQHandler
+SDIO_FUN5_IRQHandler
+SDIO_FUN6_IRQHandler
+SDIO_FUN7_IRQHandler
+SDIO_ASYNC_HOST_IRQHandler
+SDIO_M2S_IRQHandler
+CM4_INTR0_IRQHandler
+CM4_INTR1_IRQHandler
+CM4_INTR2_IRQHandler
+CM4_INTR3_IRQHandler
+CM4_INTR4_IRQHandler
+CM4_INTR5_IRQHandler
+ADC_IRQHandler
+TIMER_IRQHandler
+I2C0_IRQHandler
+I2C1_IRQHandler
+SPI0_IRQHandler
+SPI2_IRQHandler
+UART0_IRQHandler
+UART1_IRQHandler
+SPI1_IRQHandler
+GPIO_IRQHandler
+I2S_IRQHandler
+PAOTD_IRQHandler
+PWM_IRQHandler
+TRNG_IRQHandler
+AES_IRQHandler
+ B .
+ ENDP
+ ALIGN
+
+
+; User Initial Stack & Heap
+
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap PROC
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+ ENDP
+
+ ALIGN
+
+ ENDIF
+
+
+ END
diff --git a/components/security/mbedtls/3rdparty/src/aes.c b/components/security/mbedtls/3rdparty/src/aes.c
index 5c939bba479ab7989d2c8f8e2048ed484afe76b6..59728c9b51a293e77aeaa00be415a2f3d145720c 100644
--- a/components/security/mbedtls/3rdparty/src/aes.c
+++ b/components/security/mbedtls/3rdparty/src/aes.c
@@ -397,8 +397,8 @@ static int aes_init_done = 0;
static void aes_gen_tables( void )
{
int i, x, y, z;
- int pow[256];
- int log[256];
+ static int pow[256];
+ static int log[256];
/*
* compute pow and log tables over GF(2^8)
diff --git a/components/security/mbedtls/3rdparty/src/ctr_drbg.c b/components/security/mbedtls/3rdparty/src/ctr_drbg.c
index d0e5ba862d2c32aed6aae232e9cda5efeeab566b..56b4cd8bde53dd9b6018c89ce49e2bd7a38279f6 100644
--- a/components/security/mbedtls/3rdparty/src/ctr_drbg.c
+++ b/components/security/mbedtls/3rdparty/src/ctr_drbg.c
@@ -321,7 +321,7 @@ void mbedtls_ctr_drbg_update( mbedtls_ctr_drbg_context *ctx,
int mbedtls_ctr_drbg_reseed( mbedtls_ctr_drbg_context *ctx,
const unsigned char *additional, size_t len )
{
- unsigned char seed[MBEDTLS_CTR_DRBG_MAX_SEED_INPUT];
+ static unsigned char seed[MBEDTLS_CTR_DRBG_MAX_SEED_INPUT];
size_t seedlen = 0;
int ret;
diff --git a/examples/wifi_ln882x/tcp_client_echo.c b/examples/wifi_ln882x/tcp_client_echo.c
index 743fc4bc4b2aaa8b4a32e88d96a334675933c1a0..199299a3c7d442322cbd2f3e1c887d340eb7c794 100644
--- a/examples/wifi_ln882x/tcp_client_echo.c
+++ b/examples/wifi_ln882x/tcp_client_echo.c
@@ -151,7 +151,7 @@ void tcp_client_echo_task_entry(void *arg)
void tcp_client_echo_task_creat(uint8_t * ser_ip, uint32_t port)
{
- target_ser_t ser = {0};
+ static target_ser_t ser = {0};
ser.ip = ser_ip;
ser.port = port;
diff --git a/examples/wifi_ln882x/tcp_server_echo.c b/examples/wifi_ln882x/tcp_server_echo.c
index 92fc0385ca700a1d3034cb3cac51e1dffe22dd09..25ec0396b5cd75ab3cd5c4e35a2afdba9134bfb4 100644
--- a/examples/wifi_ln882x/tcp_server_echo.c
+++ b/examples/wifi_ln882x/tcp_server_echo.c
@@ -156,7 +156,8 @@ void tcp_server_echo_task_entry(void *arg)
void tcp_server_echo_task_creat(uint32_t port)
{
- uint32_t server_port = port;
+ static uint32_t server_port;
+ server_port = port;
osThreadCreate(osThread(tcp_server_echo_task_entry), &server_port);
}
diff --git a/examples/wifi_ln882x/wifi_app_ln882x.c b/examples/wifi_ln882x/wifi_app_ln882x.c
index bb6f53aff489fe14303bf78b9a9f730c4eaadd26..ca1221c687c6ae577adc8d2991b065e6dff7793a 100644
--- a/examples/wifi_ln882x/wifi_app_ln882x.c
+++ b/examples/wifi_ln882x/wifi_app_ln882x.c
@@ -8,7 +8,7 @@
#include "netif/ethernetif.h"
#include "wifi_manager/wifi_manager.h"
#include "lwip/tcpip.h"
-#include "drv/drv_adc_measure.h"
+#include "drv_adc_measure.h"
#include "utils/system_parameter.h"
#include "hal/hal_adc.h"
@@ -165,7 +165,7 @@ void application_entry(void *arg)
ART_ASSERT(1);
}
- reg_wifi_msg_callbcak(wifi_manager_get_handle(), WIFI_MSG_ID_STA_DHCP_GOT_IP,wifi_event_sta_got_ip_cb);
+ reg_wifi_msg_callbcak(WIFI_MSG_ID_STA_DHCP_GOT_IP,wifi_event_sta_got_ip_cb);
wifi_mode_enum_t wifi_mode = WIFI_MODE_STATION;
@@ -198,7 +198,7 @@ void application_entry(void *arg)
};
tcp_server_echo_task_creat(8087);
- tcp_client_echo_task_creat((uint8_t *)"39.108.190.129", 8000);//ͨè(IP:120.76.100.197) 10002˿
+// tcp_client_echo_task_creat((uint8_t *)"39.108.190.129", 8000);//ͨè(IP:120.76.100.197) 10002˿
while(1)
{
diff --git a/platform/vendor_bsp/LN/ln882x/include/atcmd/at_cmd_wifi.h b/platform/vendor_bsp/LN/ln882x/include/atcmd/at_cmd_wifi.h
index 0630a412c8ceb456b21750cdb504c08e48f8b915..5d3ad84e7826421c44c72b1e9cc79cc2cd71f69b 100644
--- a/platform/vendor_bsp/LN/ln882x/include/atcmd/at_cmd_wifi.h
+++ b/platform/vendor_bsp/LN/ln882x/include/atcmd/at_cmd_wifi.h
@@ -37,9 +37,10 @@ char at_station_disconnect(void);
char at_station_set_scan_list_display_option(char *str);
char at_station_scan(char *str);
char at_station_scan_no_filter(char *str);
-#if WIFI_SNIFFER_TEST
+#if WIFI_TRACK
char at_notify_aplist(void);
char at_station_aplx(char *str);
+char at_station_aplist(char *str);
#endif
//softap
@@ -135,13 +136,8 @@ char at_get_cip_mux(char *str);
char at_set_netconn_disconnect(char *str);
char at_set_ip_close(char *str);
char at_get_cip_status(char *str);
-
#if WIFI_SWITCH
-void wifi_sniffer_deinit(void);
-void wifi_sniffer_reinit(void);
char at_wifi_switch(char *str);
-bool wifi_init(void);
-bool wifi_deinit(void);
#endif
char at_iperf(char *str);
diff --git a/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/interrupt.h b/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/interrupt.h
index a51831d10775c1366ced0b8d9cfbfedd14cd7357..95e8a16337ea4e4c4e77ba84084df408e4272386 100644
--- a/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/interrupt.h
+++ b/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/interrupt.h
@@ -45,39 +45,39 @@ WEAK void SysTick_Handler(void);
//
// Controller specific peripheral interrupts
//
-WEAK void WDT_IRQHandler();
-WEAK void EXTERNAL_IRQHandler();
-WEAK void RTC_IRQHandler();
-WEAK void SLEEP_IRQHandler();
-WEAK void MAC_IRQHandler();
-WEAK void DMAC_IRQHandler();
-WEAK void QSPI_IRQHandler();
-WEAK void SDIOCFUN1_IRQHandler();
-WEAK void SDIOCFUN2_IRQHandler();
-WEAK void SDIOCFUN3_IRQHandler();
-WEAK void SDIOCFUN4_IRQHandler();
-WEAK void SDIOCFUN5_IRQHandler();
-WEAK void SDIOCFUN6_IRQHandler();
-WEAK void SDIOCFUN7_IRQHandler();
-WEAK void SDIOC_ASYNC_HOST_IRQHandler();
-WEAK void SDIOC_M2S_IRQHandler();
-WEAK void CM4_INTR0_IRQHandler();
-WEAK void CM4_INTR1_IRQHandler();
-WEAK void CM4_INTR2_IRQHandler();
-WEAK void CM4_INTR3_IRQHandler();
-WEAK void CM4_INTR4_IRQHandler();
-WEAK void CM4_INTR5_IRQHandler();
-WEAK void ADCC_IRQHandler();
-WEAK void TIMER_IRQHandler();
-WEAK void I2C0_IRQHandler();
-WEAK void I2C1_IRQHandler();
-WEAK void SPIM_IRQHandler();
-WEAK void SPIS_IRQHandler();
-WEAK void UART0_IRQHandler();
-WEAK void UART1_IRQHandler();
-WEAK void SPIM2_IRQHandler();
-WEAK void GPIO_IRQHandler();
-WEAK void I2S_IRQHandler();
-WEAK void PAOTD_IRQHandler();
+WEAK void WDT_IRQHandler(void);
+WEAK void EXTERNAL_IRQHandler(void);
+WEAK void RTC_IRQHandler(void);
+WEAK void SLEEP_IRQHandler(void);
+WEAK void MAC_IRQHandler(void);
+WEAK void DMAC_IRQHandler(void);
+WEAK void QSPI_IRQHandler(void);
+WEAK void SDIOCFUN1_IRQHandler(void);
+WEAK void SDIOCFUN2_IRQHandler(void);
+WEAK void SDIOCFUN3_IRQHandler(void);
+WEAK void SDIOCFUN4_IRQHandler(void);
+WEAK void SDIOCFUN5_IRQHandler(void);
+WEAK void SDIOCFUN6_IRQHandler(void);
+WEAK void SDIOCFUN7_IRQHandler(void);
+WEAK void SDIOC_ASYNC_HOST_IRQHandler(void);
+WEAK void SDIOC_M2S_IRQHandler(void);
+WEAK void CM4_INTR0_IRQHandler(void);
+WEAK void CM4_INTR1_IRQHandler(void);
+WEAK void CM4_INTR2_IRQHandler(void);
+WEAK void CM4_INTR3_IRQHandler(void);
+WEAK void CM4_INTR4_IRQHandler(void);
+WEAK void CM4_INTR5_IRQHandler(void);
+WEAK void ADCC_IRQHandler(void);
+WEAK void TIMER_IRQHandler(void);
+WEAK void I2C0_IRQHandler(void);
+WEAK void I2C1_IRQHandler(void);
+WEAK void SPIM_IRQHandler(void);
+WEAK void SPIS_IRQHandler(void);
+WEAK void UART0_IRQHandler(void);
+WEAK void UART1_IRQHandler(void);
+WEAK void SPIM2_IRQHandler(void);
+WEAK void GPIO_IRQHandler(void);
+WEAK void I2S_IRQHandler(void);
+WEAK void PAOTD_IRQHandler(void);
#endif /* _INTERRUPT_H_ */
diff --git a/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/ln_compiler.h b/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/ln_compiler.h
new file mode 100644
index 0000000000000000000000000000000000000000..2a5940c91ee9bbfddc84a7dc1f5c8730ef1df394
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/ln_compiler.h
@@ -0,0 +1,125 @@
+#ifndef __LN_COMPILER_H__
+#define __LN_COMPILER_H__
+
+/*------------------ RealView Compiler -----------------*/
+#if defined(__CC_ARM)
+
+#define ARMCC_V5
+
+#define __ASM__ __asm
+#define __VOLATILE__ volatile
+
+#define __INLINE__ inline
+#define __STATIC__ static
+
+#if (__ARMCC_VERSION < 5060750)
+ #define __STATIC_INLINE__ static
+#else
+ #define __STATIC_INLINE__ static inline
+#endif
+
+#define likely(x) __builtin_expect(!!(x), 1)
+#define unlikely(x) __builtin_expect(!!(x), 0)
+#define __UNUSED__ __attribute__((__unused__))
+#define __USED__ __attribute__((__used__))
+#define __PACKED__ __attribute__((packed))
+#define __ALIGNED__(x) __attribute__((aligned(x)))
+#define __PURE__ __attribute__((__pure__))
+#define __CONST__ __attribute__((__const__))
+#define __NO_RETURN__ __attribute__((__noreturn__))
+#define __WEAK__ __attribute__((weak))
+
+/*------------------ ARM Compiler V6 -------------------*/
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+
+#define ARMCC_V6
+
+#define __ASM__ __asm
+#define __VOLATILE__ volatile
+
+#define __INLINE__ inline
+#define __STATIC__ static
+#define __STATIC_INLINE__ static inline
+
+#define likely(x) __builtin_expect(!!(x), 1)
+#define unlikely(x) __builtin_expect(!!(x), 0)
+#define __UNUSED__ __attribute__((__unused__))
+#define __USED__ __attribute__((__used__))
+#define __PACKED__ __attribute__((packed))
+#define __ALIGNED__(x) __attribute__((aligned(x)))
+#define __PURE__ __attribute__((__pure__))
+#define __CONST__ __attribute__((__const__))
+#define __NO_RETURN__ __attribute__((__noreturn__))
+#define __NAKED__ __attribute__((naked))
+#define __WEAK__ __attribute__((weak))
+
+/*------------------ ICC Compiler ----------------------*/
+#elif defined(__ICCARM__) || defined(__ICC430__) // __IAR_SYSTEMS_ICC__
+
+#define __ASM__ __asm
+#define __VOLATILE__ volatile
+
+#define __INLINE__ inline
+#define __STATIC__ static
+#define __STATIC_INLINE__ static inline
+
+#define likely(x) (x)
+#define unlikely(x) (x)
+#define __UNUSED__
+#define __USED__
+#define __PACKED__
+#define __ALIGNED__(x)
+#define __PURE__
+#define __CONST__
+#define __NO_RETURN__
+#define __NAKED__
+#define __WEAK__ __weak
+
+/*------------------ ICC Compiler for STM8/AVR ----------------------*/
+#elif defined(__IAR_SYSTEMS_ICC__)
+
+#define __ASM__ __asm
+#define __VOLATILE__ volatile
+
+#define __INLINE__ inline
+#define __STATIC__ static
+#define __STATIC_INLINE__ static inline
+
+#define likely(x) (x)
+#define unlikely(x) (x)
+#define __UNUSED__
+#define __USED__
+#define __PACKED__
+#define __ALIGNED__(x)
+#define __PURE__
+#define __CONST__
+#define __NO_RETURN__
+#define __NAKED__
+#define __WEAK__ __weak
+
+/*------------------ GNU Compiler ----------------------*/
+#elif defined(__GNUC__)
+
+#define __ASM__ __asm
+#define __VOLATILE__ volatile
+
+#define __INLINE__ inline
+#define __STATIC__ static
+#define __STATIC_INLINE__ static inline
+
+#define likely(x) __builtin_expect(!!(x), 1)
+#define unlikely(x) __builtin_expect(!!(x), 0)
+#define __UNUSED__ __attribute__((__unused__))
+#define __USED__ __attribute__((__used__))
+#define __PACKED__ __attribute__((packed))
+#define __ALIGNED__(x) __attribute__((aligned(x)))
+#define __PURE__ __attribute__((__pure__))
+#define __CONST__ __attribute__((__const__))
+#define __NO_RETURN__ __attribute__((__noreturn__))
+#define __NAKED__ __attribute__((naked))
+#define __WEAK__ __attribute__((weak))
+
+#endif
+
+#endif /* __LN_COMPILER_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/ln_types.h b/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/ln_types.h
new file mode 100644
index 0000000000000000000000000000000000000000..34eda1264eb47e2a41b64ffe40d340ac46ba8723
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/ln_types.h
@@ -0,0 +1,13 @@
+#ifndef __LN_TYPES_H__
+#define __LN_TYPES_H__
+
+#include
+#include
+
+
+#define LN_TRUE (1u)
+#define LN_FALSE (0u)
+
+
+#endif /* __LN_TYPES_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/mem_map_ln882x.h b/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/mem_map_ln882x.h
index 4cea7a53e6a2a5d938b623694bf78979fc50ef43..bcef9a64c5e03e3a498d540329bb79a048dbab2f 100644
--- a/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/mem_map_ln882x.h
+++ b/platform/vendor_bsp/LN/ln882x/include/cpu/ARM_CM4F/ln88xx/mem_map_ln882x.h
@@ -64,32 +64,15 @@
#define BOOTROM_RW_SECTION_LIMIT (SIZE_32KB)
//BOOTRAM
-#define BOOTRAM_BASE (RAM_BASE)
-#define BOOTRAM_LIMIT (SIZE_32KB)
-
+#define BOOTRAM_BASE (RAM_BASE)
+#define BOOTRAM_LIMIT (SIZE_4KB*9)
//FLASH
-#define FLASH_BASE_OFFSET (0)
-
-#define BOOTRAM_HEADER_ON_FLASH_OFFSET (FLASH_BASE_OFFSET)
-#define BOOTRAM_ON_FLASH_OFFSET (BOOTRAM_HEADER_ON_FLASH_OFFSET + BOOTRAM_HEADER_SIZE)
-#define BOOTRAM_PARTITION_SIZE (8 * SIZE_4KB)
-#define BOOTRAM_SIZE (BOOTRAM_PARTITION_SIZE - BOOTRAM_HEADER_SIZE)
-
-#define PARTITION_TABLE0_OFFSET (BOOTRAM_HEADER_ON_FLASH_OFFSET + BOOTRAM_PARTITION_SIZE)
-#define PARTITION_TABLE0_SIZE (SIZE_4KB)
+#define CACHE_FLASH_BASE (0x10000000)
-#define PARTITION_TABLE1_OFFSET (PARTITION_TABLE0_OFFSET + PARTITION_TABLE0_SIZE)
-#define PARTITION_TABLE1_SIZE (SIZE_4KB)
-#define PARTITION_TABLE_FLAG_OFFSET (PARTITION_TABLE1_OFFSET + PARTITION_TABLE1_SIZE)
-#define PARTITION_TABLE_FLAG_SIZE (SIZE_4KB)
-#define SYSTEM_PARAMETER_OFFSET (PARTITION_TABLE_FLAG_OFFSET + PARTITION_TABLE_FLAG_SIZE)
-#define SYSTEM_PARAMETER_SIZE (2 * SIZE_4KB)
-#define USR_NVDS_PARAM_OFFSET (SIZE_2MB-(3*SIZE_4KB))
-#define USR_NVDS_PARAM_SIZE (3 * SIZE_4KB)
+#endif /* __MEMORY_MAP_LN882X_H__ */
-#endif /* __MEMORY_MAP_LN882X_H__ */
diff --git a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_sleep.h b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_sleep.h
index 19825e7266d95845df1a4d896b445e2c1c7a2428..fe50357528aea358e38b1d070c3ec7cab993c393 100644
--- a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_sleep.h
+++ b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_sleep.h
@@ -6,49 +6,60 @@
#endif // __cplusplus
#include "types.h"
-#include "hal/hal_gpio.h"
+#include "hal/syscon_types.h"
#include "ll/ll_sleep.h"
-typedef enum {
- SLEEP_TIMER_WAKEUP = (1 << 0),
- MAC_WAKEUP = (1 << 1),
- EXT_INT_WAKEUP = (1 << 2),
- RTC_WAKEUP = (1 << 3),
-}hal_sleep_wakeup_src_enum_t;
-
-typedef void (* reinitialize_phy_cb_t)(void);
-typedef bool (* wifi_is_slept_cb_t)(void);
-typedef struct
-{
- GPIO_Num gpio;
- SYSTEM_EXT_INT_Triggle_Type triggle_type;
-}ext_irq_cfg_t ;
-typedef struct {
- sleep_mode_enum_t sleep_mode;
- uint32_t wakeup_src;//bit[0]--SLEEP_IRQn; bit[1]--MAC_IRQn;bit[2]--EXTERNAL_IRQn;bit[3]--RTC_IRQn
- ext_irq_cfg_t ext_irq_cfg;
-}hal_sleep_config_t;
-
-typedef struct
+typedef enum
{
- bool flag;
- hal_sleep_config_t sleep_config;
- uint32_t nvic_int_en[2];
- uint64_t compensation;
- uint32_t msec;
- wifi_is_slept_cb_t wifi_is_slept_cb;
- reinitialize_phy_cb_t reinit_phy_cb;
- bool inited;
-}hal_sleep_ctrl_t ;
-
-void hal_sleep_init(hal_sleep_config_t *sleep_config);
-void hal_sleep_deinit(void);
-void hal_sleep_set_config(hal_sleep_config_t *sleep_config);
+ ACTIVE = 0,
+ LIGHT_SLEEP,
+ DEEP_SLEEP,
+ RETENTION_SLEEP,
+ FROZEN_SLEEP
+}sleep_mode_enum_t;
+
+typedef enum {
+ MOD_QSPI = SW_CLKGATE_QSPI,
+ MOD_ADDC = SW_CLKGATE_ADCC,
+ MOD_I2S = SW_CLKGATE_I2S,
+ MOD_GPIO = SW_CLKGATE_GPIO,
+ MOD_SPIM = SW_CLKGATE_SPIM,
+ MOD_SPIS = SW_CLKGATE_SPIS,
+ MOD_I2C0 = SW_CLKGATE_I2C0,
+ MOD_I2C1 = SW_CLKGATE_I2C1,
+ MOD_UART0 = SW_CLKGATE_UART0,
+ MOD_UART1 = SW_CLKGATE_UART1,
+ MOD_SPIM2 = SW_CLKGATE_SPIM2,
+ MOD_WDT = SW_CLKGATE_WDT,
+ MOD_TIMER0 = SW_CLKGATE_TIMER,
+ MOD_TIMER1 = SW_CLKGATE_TIMER_1,
+ MOD_TIMER2 = SW_CLKGATE_TIMER_2,
+ MOD_TIMER3 = SW_CLKGATE_TIMER_3,
+ MOD_TIMER4 = SW_CLKGATE_TIMER_4,
+ MOD_DGBH = SW_CLKGATE_DBGH,
+ MOD_SDIO = SW_CLKGATE_SDIO,
+ MOD_MAC = SW_CLKGATE_MAC,
+ MOD_CACHE = SW_CLKGATE_CACHE,
+ MOD_DMA = SW_CLKGATE_DMA,
+ MOD_RFREG = SW_CLKGATE_RFREG,
+ MOD_PWM = SW_CLKGATE_PWM,
+ MOD_EF = SW_CLKGATE_EF,
+ MOD_TRNG = SW_CLKGATE_TRNG,
+ MOD_AES = SW_CLKGATE_AES,
+ MOD_EXT_INT,
+ MOD_MAX,
+}hal_peripheral_module_t;
+
+typedef bool (*sleep_condition_cb_t)(void);
+typedef void (*sleep_processing_cb_t)(void);
+
+int hal_sleep_set_mode(sleep_mode_enum_t sleep_mode);
sleep_mode_enum_t hal_sleep_get_mode(void);
+int hal_sleep_register(hal_peripheral_module_t peripheral_module, sleep_condition_cb_t sleep_condition, sleep_processing_cb_t pre_sleep_proc, sleep_processing_cb_t post_sleep_proc);
+int hal_sleep_unregister(hal_peripheral_module_t peripheral_module);
void hal_pre_sleep_processing(uint32_t *ticks);
uint32_t hal_post_sleep_processing(uint32_t ticks);
-void hal_sleep_register_callback(reinitialize_phy_cb_t reinit_phy_cb, wifi_is_slept_cb_t wifi_is_slept_cb);
-void hal_sleep_wakeup_source_set(hal_sleep_wakeup_src_enum_t wakeup_src);
+
#ifdef __cplusplus
}
#endif // __cplusplus
diff --git a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_syscon.h b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_syscon.h
index c9ac2be9b2e937c94c120fcc104ecd3dbcc3f833..e3a24b61904e8caa0267603f38fded82c01150b0 100644
--- a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_syscon.h
+++ b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_syscon.h
@@ -316,7 +316,26 @@ void HAL_SYSCON_RCO32K_Bitsel_Set(uint8_t bitsel);
void HAL_SYSCON_RCO32K_Cbit_Set(uint8_t cbit);
void HAL_SYSCON_Xtal40MCap_Set(uint8_t cap);
void HAL_SYSCON_PmuCfg(void);
-
+void HAL_SYSCON_AWO_phy_pd_en(uint8_t en);
+void HAL_SYSCON_AWO_phy_po_en(uint8_t en);
+void HAL_SYSCON_AWO_ldo18_po_en(uint8_t en);
+void HAL_SYSCON_AWO_sram_pd_en(uint8_t en);
+void HAL_SYSCON_AWO_sram_po_en(uint8_t en);
+void HAL_SYSCON_AWO_pmu_ret_en(uint8_t en);
+void HAL_SYSCON_AWO_pmu_unret_en(uint8_t en);
+void HAL_SYSCON_AWO_pdcmp_po(uint8_t po);
+void HAL_SYSCON_AWO_cpucore_retreg_po(uint8_t po);
+void HAL_SYSCON_AWO_idle_reg_set(uint32_t val);
+void HAL_SYSCON_AWO_lp_mode_awo(uint8_t lp_mode_awo);
+void HAL_SYSCON_AWO_clk_sel_set(uint32_t val);
+void HAL_SYSCON_CMP_rfreg_len(uint16_t rfreg_len);
+void HAL_SYSCON_CMP_rfreg_base_addr(uint16_t rfreg_base_addr);
+void HAL_SYSCON_CMP_rfreg_action_set(uint32_t val);
+uint8_t HAL_SYSCON_CMP_save_done_get(void);
+void HAL_SYSCON_AWO_sw_pwr_ctrl_set(uint32_t value);
+uint8_t HAL_SYSCON_AWO_pmu_fsm_get(void);
+uint8_t HAL_SYSCON_CMP_restore_done_get(void);
+void HAL_SYSCON_CMP_sw_clkg_set(uint32_t value);
#ifdef __cplusplus
}
#endif
diff --git a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_timer.h b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_timer.h
index c2acff5a053d8118fe3491b2ef147d6a401dd0db..738d158cbddde9e481f7a0a660f6217e23fdd51a 100644
--- a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_timer.h
+++ b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/hal_timer.h
@@ -7,6 +7,11 @@
extern "C" {
#endif /* __cplusplus */
+
+/** @brief Timer expire callback function definition*/
+typedef void (*timer_cb_func_t)(void);
+
+
/**
* @brief There are totally 4 hardware timers.
*
@@ -39,7 +44,7 @@ typedef enum
typedef enum
{
TIMER_MODE_FREERUNNING = 0, /**< TIMER_MODE_FREE_RUNNING: Use this mode if you want a single timed interrupt. */
- TIMER_MODE_USERDEFINED /**< TIMER_MODE_USER_DEFINED: Use this mode if you want a fixed, timed interrupt. */
+ TIMER_MODE_USERDEFINED /**< TIMER_MODE_USER_DEFINED: Use this mode if you want a periodic timer, timed interrupt. */
} TIMER_Mode;
@@ -62,6 +67,7 @@ typedef struct
TIMER_Mask mask; /**< mask: mask or unmask the timer interrupt */
TIMER_Mode mode; /**< mode: select the running mode of timer, free-running or user define mode */
uint32_t user_freq; /**< user_freq: user-defined timer clock frequency fx, which must meet the request: 321.5KHz <= fx <= 80MHz */
+ timer_cb_func_t cb_func;/**< cb_func: call back function when timer is expired */
} TIMER_InitTypeDef;
@@ -189,6 +195,7 @@ void HAL_TIMER_LoadCount2_Set(TIMER_Index index, uint32_t loadCount2);
*/
uint32_t HAL_TIMER_LoadCount2_Get(TIMER_Index index);
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
diff --git a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/syscon_types.h b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/syscon_types.h
index 61107f616cecc02e546c3685de8da4714512337f..a88b0be6b94271987b8c572c3a8def1b642afe07 100644
--- a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/syscon_types.h
+++ b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/hal/syscon_types.h
@@ -175,7 +175,6 @@ typedef enum
typedef enum
{
- SW_CLKGATE_PATCH = 0,
SW_CLKGATE_QSPI = 1,
SW_CLKGATE_ADCC = 2,
SW_CLKGATE_I2S = 3,
@@ -198,7 +197,11 @@ typedef enum
SW_CLKGATE_MAC = 20,
SW_CLKGATE_CACHE = 21,
SW_CLKGATE_DMA = 22,
- SW_CLKGATE_RFREG = 23
+ SW_CLKGATE_RFREG = 23,
+ SW_CLKGATE_PWM = 24,
+ SW_CLKGATE_EF = 25,
+ SW_CLKGATE_TRNG = 26,
+ SW_CLKGATE_AES = 27,
} SYSCON_ClkGate_Peripheral;
typedef enum
@@ -339,8 +342,7 @@ typedef enum
(clkgate) == SW_CLKGATE_CORE_MAC40M || \
(clkgate) == SW_CLKGATE_CORE_MAC80M)
-#define IS_CLKGATE_PERIPHERAL(clkgate) ((clkgate) == SW_CLKGATE_PATCH || \
- (clkgate) == SW_CLKGATE_QSPI || \
+#define IS_CLKGATE_PERIPHERAL(clkgate) ((clkgate) == SW_CLKGATE_QSPI || \
(clkgate) == SW_CLKGATE_ADCC || \
(clkgate) == SW_CLKGATE_I2S || \
(clkgate) == SW_CLKGATE_GPIO || \
@@ -362,7 +364,11 @@ typedef enum
(clkgate) == SW_CLKGATE_MAC || \
(clkgate) == SW_CLKGATE_CACHE || \
(clkgate) == SW_CLKGATE_DMA || \
- (clkgate) == SW_CLKGATE_RFREG)
+ (clkgate) == SW_CLKGATE_RFREG || \
+ (clkgate) == SW_CLKGATE_PWM || \
+ (clkgate) == SW_CLKGATE_EF || \
+ (clkgate) == SW_CLKGATE_TRNG || \
+ (clkgate) == SW_CLKGATE_AES)
#define IS_SPIM_INDEX(index) ((index) == SPIM_IO_EN0 || (index) == SPIM_IO_EN1 || (index) == SPIM_IO_EN2)
diff --git a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/ll/ll_sleep.h b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/ll/ll_sleep.h
index c88b67714786076a8f4bb4049380f8e12ac0616e..40bdaa93a68e976a047c576462220ed6b35f5db6 100644
--- a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/ll/ll_sleep.h
+++ b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/ll/ll_sleep.h
@@ -1,23 +1,12 @@
#ifndef __LL_SLEEP_H__
#define __LL_SLEEP_H__
-#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
-typedef enum
-{
- ACTIVE = 0,
- LIGHT_SLEEP,
- DEEP_SLEEP,
- RETENTION_SLEEP,
- FROZEN_SLEEP
-}sleep_mode_enum_t;
-
-void ll_pre_sleep_processing(sleep_mode_enum_t sleep_mode, uint8_t sram_powerdown);
-void ll_post_sleep_processing(sleep_mode_enum_t sleep_mode);
+void ll_sleep_mac_tsf_clk_switch(uint8_t ps_clk_switch);
#ifdef __cplusplus
}
diff --git a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/ll/ll_syscon.h b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/ll/ll_syscon.h
index ead9033e1d84af0aa558a32daa8e57b8f75a42ac..ed258e7c97227fad2783d93aeef4edbbc432a832 100644
--- a/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/ll/ll_syscon.h
+++ b/platform/vendor_bsp/LN/ln882x/include/driver_ln882x/ll/ll_syscon.h
@@ -332,7 +332,26 @@ void LL_SYSCON_EXT_INTR_Set_Triggle_Condition(SYSTEM_EXT_INT_Wakeup_Index ext_in
uint8_t LL_SYSCON_EXT_INTR_Stat(void);
uint8_t LL_SYSCON_EXT_INTR_Stat_Raw(void);
void LL_SYSCON_EXT_INTR_Clear(void);
-
+void LL_SYSCON_AWO_phy_pd_en(uint8_t en);
+void LL_SYSCON_AWO_phy_po_en(uint8_t en);
+void LL_SYSCON_AWO_ldo18_po_en(uint8_t en);
+void LL_SYSCON_AWO_sram_pd_en(uint8_t en);
+void LL_SYSCON_AWO_sram_po_en(uint8_t en);
+void LL_SYSCON_AWO_pmu_ret_en(uint8_t en);
+void LL_SYSCON_AWO_pmu_unret_en(uint8_t en);
+void LL_SYSCON_AWO_pdcmp_po(uint8_t po);
+void LL_SYSCON_AWO_cpucore_retreg_po(uint8_t po);
+void LL_SYSCON_AWO_idle_reg_set(uint32_t val);
+void LL_SYSCON_AWO_lp_mode_awo(uint8_t lp_mode_awo);
+void LL_SYSCON_AWO_clk_sel_set(uint32_t val);
+void LL_SYSCON_CMP_rfreg_len(uint16_t rfreg_len);
+void LL_SYSCON_CMP_rfreg_base_addr(uint16_t rfreg_base_addr);
+void LL_SYSCON_CMP_rfreg_action_set(uint32_t val);
+uint8_t LL_SYSCON_CMP_save_done_get(void);
+void LL_SYSCON_AWO_sw_pwr_ctrl_set(uint32_t val);
+uint8_t LL_SYSCON_AWO_pmu_fsm_get(void);
+uint8_t LL_SYSCON_CMP_restore_done_get(void);
+void LL_SYSCON_CMP_sw_clkg_set(uint32_t value);
#ifdef __cplusplus
}
#endif
diff --git a/platform/vendor_bsp/LN/ln882x/include/kernel/FreeRTOS_Adapter/freertos_queue.h b/platform/vendor_bsp/LN/ln882x/include/kernel/FreeRTOS_Adapter/freertos_queue.h
index f91a3ad48b499a6e84d2ff84cdfcf5bc63bd5592..ba8c3c99631c537c7f57a1aae02b9e5037afeb62 100644
--- a/platform/vendor_bsp/LN/ln882x/include/kernel/FreeRTOS_Adapter/freertos_queue.h
+++ b/platform/vendor_bsp/LN/ln882x/include/kernel/FreeRTOS_Adapter/freertos_queue.h
@@ -25,7 +25,6 @@ OS_Status OS_QueueCreate(OS_Queue_t *queue, uint32_t queueLen, uint32_t itemSize
OS_Status OS_QueueDelete(OS_Queue_t *queue);
OS_Status OS_QueueSend(OS_Queue_t *queue, const void *item, OS_Time_t waitMS);
OS_Status OS_QueueReceive(OS_Queue_t *queue, void *item, OS_Time_t waitMS);
-OS_Status OS_QueueFlush(OS_Queue_t *queue);
/**
diff --git a/platform/vendor_bsp/LN/ln882x/include/serial/serial.h b/platform/vendor_bsp/LN/ln882x/include/serial/serial.h
index 80898fb92ec1937741f9d1f5ac6935252f23ce58..d29cf1273878ff464353379b9bc2e4a3c9023b95 100644
--- a/platform/vendor_bsp/LN/ln882x/include/serial/serial.h
+++ b/platform/vendor_bsp/LN/ln882x/include/serial/serial.h
@@ -2,7 +2,7 @@
#define __SERIAL_H__
#include "proj_config.h"
-#include "serial/serial_p.h"
+#include "serial_hw.h"
#include "utils/fifo/fifobuf.h"
/** Human-readable serial error descriptions */
diff --git a/platform/vendor_bsp/LN/ln882x/include/utils/crc32.h b/platform/vendor_bsp/LN/ln882x/include/utils/crc32.h
index 75f028d21d26eb1e5990dde917bcb86da5f30958..d94660362e62f19cb506139b8bbb6ee6c9f073c6 100644
--- a/platform/vendor_bsp/LN/ln882x/include/utils/crc32.h
+++ b/platform/vendor_bsp/LN/ln882x/include/utils/crc32.h
@@ -1,13 +1,20 @@
-#ifndef CRC32_H
-#define CRC32_H
+#ifndef ___CRC32_H__
+#define ___CRC32_H__
#include
-uint32_t GetCrc32(uint8_t *ptr, int len);
+typedef struct {
+ uint32_t crc;
+} crc32_ctx_t;
+void ln_crc32_init(crc32_ctx_t *ctx);
+void ln_crc32_update(crc32_ctx_t *ctx, uint8_t *data, uint32_t len);
+uint32_t ln_crc32_final(crc32_ctx_t *ctx);
+uint32_t ln_crc32_signle_cal(uint8_t *ptr, int len);
-#endif
+
+#endif /* ___CRC32_H__ */
diff --git a/platform/vendor_bsp/LN/ln882x/include/utils/system_parameter.h b/platform/vendor_bsp/LN/ln882x/include/utils/system_parameter.h
index 65bc583af6d508e759f0a3f890fed23452f34796..2821589f459a453b3ee45bccfc76ae272d209772 100644
--- a/platform/vendor_bsp/LN/ln882x/include/utils/system_parameter.h
+++ b/platform/vendor_bsp/LN/ln882x/include/utils/system_parameter.h
@@ -15,7 +15,6 @@ typedef struct {
#define NETIF_HOSTNAME_LEN_MAX (8)
-#define WIFI_PSK_INFO_LIST_SIZE (2)
int system_parameter_init(void);
int system_parameter_deinit(void);
@@ -35,11 +34,10 @@ uint8_t system_parameter_get_dhcp_enable(void);
//ap_hostname config
int system_parameter_set_hostname(wifi_interface_enum_t if_index, uint8_t *hostname);
int system_parameter_get_hostname(wifi_interface_enum_t if_index, uint8_t *hostname);
-////PSK info
-int system_parameter_set_psk_info( wifi_psk_info_t *psk_info);
-int system_parameter_get_psk_info(wifi_psk_info_t *psk_info);
+
int system_parameter_set_wifi_mode(wifi_mode_enum_t wifi_mode);
wifi_mode_enum_t system_parameter_get_wifi_mode(void);
+
int system_parameter_set_dhcpd_config(server_config_t *server_config);
int system_parameter_get_dhcpd_config(server_config_t *server_config);
diff --git a/platform/vendor_bsp/LN/ln882x/include/wifi/wifi.h b/platform/vendor_bsp/LN/ln882x/include/wifi/wifi.h
index 79a33b7f1ee57939a0ec73ac1f55ad176aafff59..8c2fabd5e434225d2ddaca797d02b55b939bb620 100644
--- a/platform/vendor_bsp/LN/ln882x/include/wifi/wifi.h
+++ b/platform/vendor_bsp/LN/ln882x/include/wifi/wifi.h
@@ -183,7 +183,8 @@ void wifi_do_temp_cal_period(uint16_t adc_ch0_val);
//STA
bool wifi_station_scan(wifi_scan_config_t *config);
-int wifi_station_get_scan_ap_list(list_t **ap_list, bool sort);
+int wifi_station_get_scan_list_size(void);
+int wifi_station_get_scan_list(list_t *out_list, int out_list_size, bool sort);
void wifi_station_connect(wifi_sta_config_t *sta_config);
bool wifi_station_disconnect(void);
int8_t wifi_station_get_rssi(void);
diff --git a/platform/vendor_bsp/LN/ln882x/include/wifi_manager/wifi_manager.h b/platform/vendor_bsp/LN/ln882x/include/wifi_manager/wifi_manager.h
index 375682801df95a7efa1812e9bb487bf305b59276..2f8e17a384acae8c4accf5e3b3f0e2f120af3733 100644
--- a/platform/vendor_bsp/LN/ln882x/include/wifi_manager/wifi_manager.h
+++ b/platform/vendor_bsp/LN/ln882x/include/wifi_manager/wifi_manager.h
@@ -102,12 +102,10 @@ typedef struct wifi_manager_ctrl wifi_manager_ctrl_t;
//wifi get mode api (需要wifi_cfg 提供)
-bool reg_wifi_msg_callbcak(wifi_manager_ctrl_t *manager_ctrl, wifi_msg_id_enum_t msg_id, wifi_msg_callback_fun callback_fun);
+bool reg_wifi_msg_callbcak(wifi_msg_id_enum_t msg_id, wifi_msg_callback_fun callback_fun);
void notify_wifi_manager_task(wifi_msg_t * pWifiMsg);
-bool wifi_manager_init(wifi_manager_ctrl_t *manager_ctrl);
-bool wifi_manager_deinit(wifi_manager_ctrl_t *manager_ctrl);
-wifi_manager_ctrl_t *wifi_manager_get_handle(void);
-
+bool wifi_manager_init(void);
+bool wifi_manager_deinit(void);
#ifdef __cplusplus
}
diff --git a/platform/vendor_bsp/LN/ln882x/lib/boot_ln882x.bin b/platform/vendor_bsp/LN/ln882x/lib/boot_ln882x.bin
new file mode 100644
index 0000000000000000000000000000000000000000..c88d035069670c5d0c4bf332e8719a2eea9c92f2
Binary files /dev/null and b/platform/vendor_bsp/LN/ln882x/lib/boot_ln882x.bin differ
diff --git a/platform/vendor_bsp/LN/ln882x/lib/boot_ram_ln882x.bin b/platform/vendor_bsp/LN/ln882x/lib/boot_ram_ln882x.bin
deleted file mode 100644
index a9d195ca2d654c268d3600beb087b408e1ea4910..0000000000000000000000000000000000000000
Binary files a/platform/vendor_bsp/LN/ln882x/lib/boot_ram_ln882x.bin and /dev/null differ
diff --git a/platform/vendor_bsp/LN/ln882x/lib/wifi_driver.lib b/platform/vendor_bsp/LN/ln882x/lib/soc_driver.lib
similarity index 56%
rename from platform/vendor_bsp/LN/ln882x/lib/wifi_driver.lib
rename to platform/vendor_bsp/LN/ln882x/lib/soc_driver.lib
index 9f689b91f941d9885b13a5290fbba5bfe0cf48a0..0ce28005995caecac1ce7965deded7c4a3d4c0dd 100644
Binary files a/platform/vendor_bsp/LN/ln882x/lib/wifi_driver.lib and b/platform/vendor_bsp/LN/ln882x/lib/soc_driver.lib differ
diff --git a/platform/vendor_bsp/LN/ln882x/lib/wifi_mac.lib b/platform/vendor_bsp/LN/ln882x/lib/wifi_mac.lib
index 27097e2f63a86f6a04011ab9e866c8fa7b64d9ab..dfe2a7ad0d075c87439971330a483475ff72ff0b 100644
Binary files a/platform/vendor_bsp/LN/ln882x/lib/wifi_mac.lib and b/platform/vendor_bsp/LN/ln882x/lib/wifi_mac.lib differ
diff --git a/platform/vendor_bsp/LN/ln882x/src/atcmd/at_cmd_wifi.c b/platform/vendor_bsp/LN/ln882x/src/atcmd/at_cmd_wifi.c
index ee68e987da2133fcc4a23faf3d09a8053bd3ab15..e351f25d9bdd6de521cb570d08e4b56213af7212 100644
--- a/platform/vendor_bsp/LN/ln882x/src/atcmd/at_cmd_wifi.c
+++ b/platform/vendor_bsp/LN/ln882x/src/atcmd/at_cmd_wifi.c
@@ -17,7 +17,7 @@
#include "ping/ping.h"
#include "iperf/iperf.h"
#include "dhcpd/dhcpd.h"
-#include "nvds/nvds.h"
+#include "nvds.h"
#include "hal/hal_efuse.h"
#define RET_OK_STR ("\r\nOK\r\n")
@@ -673,7 +673,7 @@ char at_station_scan_no_filter(char *str)
scan_list_dsiplay_option_t *display_option = &g_scan_list_dsiplay_option;
int ap_count = 0;
ap_info_t *item_iterator = NULL;
- list_t *ap_list = NULL, *iterator;
+ list_t scan_list, *iterator, *prev;
#if WIFI_TRACK
at_printf("\r\n+CWLAPLN\r\n");
@@ -681,21 +681,40 @@ char at_station_scan_no_filter(char *str)
at_printf("\r\n+CWLAP\r\n");
#endif
- ap_count = wifi_station_get_scan_ap_list(&ap_list, (display_option->sort_enable == 1)? true : false);
- if(ap_list && ap_count > 0)
- {
+ ap_count = wifi_station_get_scan_list_size();
+ if(ap_count > 0){
+ //prepare scan_list space
+ list_init(&scan_list);
+ for(i = 0; i < ap_count; i++){
+ item_iterator = OS_Malloc(sizeof(ap_info_t));
+ if(item_iterator){
+ list_add(&scan_list, &(item_iterator->list));
+ }
+ }
+
+ //get ap list
+ wifi_station_get_scan_list(&scan_list, ap_count, (display_option->sort_enable == 1)? true : false);
at_printf("Auth{ 0: Open, 1: WEP, 2: WPA_PSK, 3:WPA2_PSK, 4:WPA_WPA2_PSK, 5: WPA2_ENTERPRISE}\r\n");
at_printf ("\r\nAP_num SSID RSSI Channel Auth_mode BSSID IMODE WPS Freq_offset FreqCal\r\n");
-
- for (iterator = ap_list->next, i = 1; iterator != ap_list; iterator = iterator->next, i++) {
+ for (iterator = scan_list.next, i = 0; iterator != &scan_list; iterator = iterator->next, i++) {
item_iterator = list_entry(iterator, ap_info_t, list);
at_printf ("%6d %-31s %4d %7d %9d "MACSTR" %2X %3d %11d %7d\r\n",
- i, item_iterator->ssid, item_iterator->rssi, item_iterator->channel, item_iterator->authmode,
+ (i + 1), item_iterator->ssid, item_iterator->rssi, item_iterator->channel, item_iterator->authmode,
MAC2STR(item_iterator->bssid),
item_iterator->imode, item_iterator->wps, item_iterator->freq_offset, item_iterator->freqcal_val
);
}
+ //free scan_list space
+ for (iterator = scan_list.next; iterator != &scan_list; iterator = iterator->next) {
+ prev = iterator->prev;
+ item_iterator = list_entry(iterator, ap_info_t, list);
+ list_rm(iterator);
+ if(item_iterator){
+ OS_Free(item_iterator);
+ }
+ iterator = prev;
+ }
}
at_printf(RET_OK_STR);
@@ -710,53 +729,119 @@ char at_notify_aplist(void)
int i=0;
int ap_count = 0;
ap_info_t *item_iterator = NULL;
- list_t *ap_list = NULL, *iterator;
+ list_t scan_list, *iterator, *prev;
+
+ ap_count = wifi_station_get_scan_list_size();
+ if(ap_count > 0){
+ //prepare scan_list space
+ list_init(&scan_list);
+ for(i = 0; i < ap_count; i++){
+ item_iterator = OS_Malloc(sizeof(ap_info_t));
+ if(item_iterator){
+ list_add(&scan_list, &(item_iterator->list));
+ }
+ }
- ap_count = wifi_station_get_scan_ap_list(&ap_list, true);
- at_printf("\r\nAT+ScanAp\r\n",ap_count);
- for (iterator = ap_list->next, i = 0; (i < 10) && (iterator != ap_list); iterator = iterator->next, i++)
- {
- item_iterator = list_entry(iterator, ap_info_t, list);
- at_printf(MACSTR";%d;%s\r\n", MAC2STR(item_iterator->bssid), item_iterator->rssi, item_iterator->ssid);
+ //get ap list
+ wifi_station_get_scan_list(&scan_list, ap_count, true);
+ at_printf("\r\nAT+ScanAp\r\n",ap_count);
+ for (iterator = scan_list.next, i = 0; (i < 10) && iterator != &scan_list; iterator = iterator->next, i++) {
+ item_iterator = list_entry(iterator, ap_info_t, list);
+ at_printf(MACSTR";%d;%s\r\n", MAC2STR(item_iterator->bssid), item_iterator->rssi, item_iterator->ssid);
+ }
+
+ //free scan_list space
+ for (iterator = scan_list.next; iterator != &scan_list; iterator = iterator->next) {
+ prev = iterator->prev;
+ item_iterator = list_entry(iterator, ap_info_t, list);
+ list_rm(iterator);
+ if(item_iterator){
+ OS_Free(item_iterator);
+ }
+ iterator = prev;
+ }
}
return AT_OK;
}
char at_station_aplx(char *str)
{
- int ap_count = 0;
+ int ap_count = 0, i;
ap_info_t *item_iterator = NULL;
- list_t *ap_list = NULL, *iterator;
+ list_t scan_list, *iterator, *prev;
+
+ ap_count = wifi_station_get_scan_list_size();
+ if(ap_count > 0){
+ //prepare scan_list space
+ list_init(&scan_list);
+ for(i = 0; i < ap_count; i++){
+ item_iterator = OS_Malloc(sizeof(ap_info_t));
+ if(item_iterator){
+ list_add(&scan_list, &(item_iterator->list));
+ }
+ }
- ap_count = wifi_station_get_scan_ap_list(&ap_list, true);
- for (iterator = ap_list->next; iterator != ap_list; iterator = iterator->next)
- {
- item_iterator = list_entry(iterator, ap_info_t, list);
- at_printf("\r\n+CWLAP:%d,\"%s\",%d,\""MACSTR"\",%d",
+ //get ap list
+ wifi_station_get_scan_list(&scan_list, ap_count, true);
+ for (iterator = scan_list.next; iterator != &scan_list; iterator = iterator->next) {
+ item_iterator = list_entry(iterator, ap_info_t, list);
+ at_printf("\r\n+CWLAP:%d,\"%s\",%d,\""MACSTR"\",%d",
item_iterator->authmode,
item_iterator->ssid,
item_iterator->rssi,
MAC2STR(item_iterator->bssid),
item_iterator->channel);
+ }
+
+ //free scan_list space
+ for (iterator = scan_list.next; iterator != &scan_list; iterator = iterator->next) {
+ prev = iterator->prev;
+ item_iterator = list_entry(iterator, ap_info_t, list);
+ list_rm(iterator);
+ if(item_iterator){
+ OS_Free(item_iterator);
+ }
+ iterator = prev;
+ }
}
at_printf("\r\n\r\nOK\r\n",ap_count);
return AT_OK;
}
char at_station_aplist(char *str)
{
- int ap_count = 0;
+ int ap_count = 0, i;
ap_info_t *item_iterator = NULL;
- list_t *ap_list = NULL, *iterator;
+ list_t scan_list, *iterator, *prev;
+
+ ap_count = wifi_station_get_scan_list_size();
+ if(ap_count > 0){
+ //prepare scan_list space
+ list_init(&scan_list);
+ for(i = 0; i < ap_count; i++){
+ item_iterator = OS_Malloc(sizeof(ap_info_t));
+ if(item_iterator){
+ list_add(&scan_list, &(item_iterator->list));
+ }
+ }
- ap_count = wifi_station_get_scan_ap_list(&ap_list, true);
- if(ap_count > 0)
- {
+ //get ap list
+ wifi_station_get_scan_list(&scan_list, ap_count, true);
at_printf("\r\n+CWLAPLST: %d, ",ap_count);
- for (iterator = ap_list->next; iterator != ap_list; iterator = iterator->next)
- {
+ for (iterator = scan_list.next; iterator != &scan_list; iterator = iterator->next) {
item_iterator = list_entry(iterator, ap_info_t, list);
at_printf(MACSTR" @ %d, ", MAC2STR(item_iterator->bssid), item_iterator->rssi);
}
+
+ //free scan_list space
+ for (iterator = scan_list.next; iterator != &scan_list; iterator = iterator->next) {
+ prev = iterator->prev;
+ item_iterator = list_entry(iterator, ap_info_t, list);
+ list_rm(iterator);
+ if(item_iterator){
+ OS_Free(item_iterator);
+ }
+ iterator = prev;
+ }
at_printf("\r\n\r\nOK\r\n");
}
else
@@ -3032,23 +3117,25 @@ char at_iperf(char *str)
#if WIFI_SWITCH
uint8_t wifi_en=1;
+extern void wifi_track_init(void);
+extern void wifi_track_reinit(void);
+extern void wifi_track_deinit(void);
+extern bool wifi_manager_init(void);
+extern bool wifi_manager_deinit(void);
char at_wifi_switch(char *str)
{
uint8_t en;
en=atoi(str);
- LOG(LOG_LVL_ERROR, "%s() 000 en=%d\r\n",__func__,en);
if(en&&wifi_en==0){
wifi_en=1;
- LOG(LOG_LVL_ERROR, "%s() 111 \r\n",__func__);
- wifi_init();
- wifi_manager_init(wifi_manager_get_handle());
- wifi_sniffer_reinit();//wifi_sniffer_init();//wifi_start(&init_param);
+ //wifi_init();
+ //wifi_manager_init();
+ wifi_track_reinit();
}else if(0==en&&wifi_en){
wifi_en=0;
- LOG(LOG_LVL_ERROR, "%s() 222 \r\n",__func__);
- wifi_sniffer_deinit();//call wifi_stop()
- wifi_manager_deinit(wifi_manager_get_handle());
- wifi_deinit();
+ wifi_track_deinit();//call wifi_stop()
+ //wifi_manager_deinit();
+ //wifi_deinit();
}
at_printf("OK\r\n");
diff --git a/platform/vendor_bsp/LN/ln882x/src/console/console.c b/platform/vendor_bsp/LN/ln882x/src/console/console.c
index 37fc48b3960c9ddc1d7f9702b24386147620c91b..17e4228421c260a9e10fd1be68927ff43b3d1338 100644
--- a/platform/vendor_bsp/LN/ln882x/src/console/console.c
+++ b/platform/vendor_bsp/LN/ln882x/src/console/console.c
@@ -8,9 +8,8 @@
#include "ln88xx.h"
#include "utils/debug/log.h"
#include "utils/debug/art_assert.h"
-#if WIFI_TRACK
-#include "ll/ll_gpio.h"
-#endif
+#include "hal/hal_gpio.h"
+
#if (CHIP_ROLE == CHIP_MCU)
#include "serial/serial.h"
@@ -132,17 +131,21 @@ void serial_rx_callbcak(void){
OS_SemaphoreRelease(&g_rx_sem);
}
#endif /*__CONFIG_OS_KERNEL */
-#if WIFI_TRACK
-extern GPIO_Value get_gpio_value(GPIO_Num gpio);
-#endif
+
void console_init(void)
{
CONSOLE_CTRL_T *console = &console_ctrl;
Serial_t *fd = NULL;
#if WIFI_TRACK
+ GPIO_InitTypeDef gpio_config = {
+ .dir = GPIO_INPUT,
+ .debounce = GPIO_DEBOUNCE_YES,
+ };
+
+ HAL_GPIO_Init(GPIOA_8, gpio_config);
int bd = 115200;
- if(get_gpio_value(GPIOA_8) == GPIO_VALUE_LOW)
+ if(HAL_GPIO_ReadPin(GPIOA_8) == GPIO_VALUE_LOW)
bd = CONSOLE_PORT_BAUDRATE;
else
bd = 9600;
diff --git a/platform/vendor_bsp/LN/ln882x/src/cpu/ARM_CM4F/ln88xx/system_ln88xx.c b/platform/vendor_bsp/LN/ln882x/src/cpu/ARM_CM4F/ln88xx/system_ln88xx.c
index 4ef8bb98b87147337fddf83a15c69ea4bc0a2b88..4c7f6b613a51fd4f2cf33f02855b0b662c49c1cc 100644
--- a/platform/vendor_bsp/LN/ln882x/src/cpu/ARM_CM4F/ln88xx/system_ln88xx.c
+++ b/platform/vendor_bsp/LN/ln882x/src/cpu/ARM_CM4F/ln88xx/system_ln88xx.c
@@ -16,9 +16,6 @@ extern uint32_t __Vectors[];
#define vector_table __Vectors
#endif
-/* This variable is a placeholder, defined at the junction of two blocks memory(SRAM0 and SRAM1) */
-int placeholder_between_sram0_and_sram1 __attribute__ ((section(".ARM.__at_0x1FFFFFFC"), zero_init));
-
/*----------------------------------------------------------------------------
System Core Clock Variable
*----------------------------------------------------------------------------*/
diff --git a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_sdio.c b/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_sdio.c
index 6c9ceaf4e821c55e907eb1c78f22e7ef276ec663..729f0c9917db62a6e12fc7d4ae5976ba44ed9372 100644
--- a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_sdio.c
+++ b/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_sdio.c
@@ -4,7 +4,7 @@
#include "hal/hal_syscon.h"
#include "utils/debug/log.h"
-static hal_sdio_ctrl_t g_hal_sdio_ctrl __attribute__((section("wlan_shared_mem"))) = {0,};
+static hal_sdio_ctrl_t g_hal_sdio_ctrl;
static hal_sdio_ctrl_t *hal_sdio_ctrl_get_handle(void)
{
return &g_hal_sdio_ctrl;
diff --git a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_sleep.c b/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_sleep.c
index 8f591d62f2e70cf62c36d59c61a393f53a46786f..41e4d00749fe6911ab454a51adb37581a3b23fcf 100644
--- a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_sleep.c
+++ b/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_sleep.c
@@ -14,7 +14,30 @@
#define SLEEP_TIMER_EXTRA_COMPENSATION_MSEC (0)
#define RTC_TIMER_EXTRA_COMPENSATION_MSEC (0)
-hal_sleep_ctrl_t g_sleep_ctrl __attribute__((section("retention_data"))) = {0};
+typedef struct
+{
+ int irq_num;
+ sleep_condition_cb_t sleep_condition;
+ sleep_processing_cb_t pre_sleep;
+ sleep_processing_cb_t post_sleep;
+}hal_sleep_action_t ;
+
+typedef struct {
+ sleep_mode_enum_t sleep_mode;
+ uint32_t peripheral_mod;
+ hal_sleep_action_t actions[29];
+}hal_sleep_config_t;
+
+typedef struct
+{
+ bool flag;
+ hal_sleep_config_t sleep_config;
+ uint32_t nvic_int_en[2];
+ uint64_t compensation;
+ uint32_t msec;
+}hal_sleep_ctrl_t ;
+
+hal_sleep_ctrl_t g_sleep_ctrl __attribute__((section("retention_data")));
static hal_sleep_ctrl_t *hal_sleep_get_handle(void)
{
@@ -24,15 +47,9 @@ static hal_sleep_ctrl_t *hal_sleep_get_handle(void)
void EXTERNAL_IRQHandler(void)
{
HAL_SYSCON_EXT_INTR_Clear();
- hal_sleep_wakeup_source_set(EXT_INT_WAKEUP);
}
-static void hal_sleep_external_irq_wakeup_init(SYSTEM_EXT_INT_Wakeup_Index ext_int_idx, SYSTEM_EXT_INT_Triggle_Type triggle)
-{
- HAL_SYSCON_EXT_INTR_Set_Triggle_Condition(ext_int_idx, triggle);
- HAL_SYSCON_EXT_INTR_Enable(ext_int_idx, true);
- NVIC_EnableIRQ(EXTERNAL_IRQn);
-}
-void hal_sleep_rtc_wakeup_init(uint32_t counter_match)
+
+static int hal_sleep_rtc_init(uint32_t counter_match)
{
RTC_InitTypeDef rtcConfig;
@@ -44,11 +61,13 @@ void hal_sleep_rtc_wakeup_init(uint32_t counter_match)
HAL_RTC_Init(rtcConfig);
HAL_RTC_Enable(RTC_ENABLE);
NVIC_EnableIRQ(RTC_IRQn);
+ return 0;
}
-void hal_sleep_rtc_wakeup_deinit(void)
+static int hal_sleep_rtc_deinit(void)
{
HAL_RTC_Enable(RTC_DISABLE);
NVIC_DisableIRQ(RTC_IRQn);
+ return 0;
}
void RTC_IRQHandler(void)
{
@@ -59,122 +78,316 @@ void RTC_IRQHandler(void)
HAL_RTC_ClearInt();
//disable RTC
- hal_sleep_rtc_wakeup_deinit();
-
- //set wakeup src
- hal_sleep_wakeup_source_set(RTC_WAKEUP);
+ hal_sleep_rtc_deinit();
}
}
+void SLEEP_IRQHandler(void)
+{
+ NVIC_DisableIRQ(SLEEP_IRQn);
+ //do nothing
+}
+
+#if 0
+#define RAM_RETENTION (1 << 0)
+#define RAM_MAC (1 << 1)
+#define RAM_CPU (1 << 2)
+#endif
-void hal_sleep_init(hal_sleep_config_t *sleep_config)
+#define PRE_SLEEP_LOOP_COUNT 10
+static void pre_sleep_processing_hardware(sleep_mode_enum_t sleep_mode, uint8_t sram_powerdown)
{
+ int i = 0;
hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
+ hal_sleep_config_t *sleep_config = &(sleep_ctrl->sleep_config);
- if(sleep_ctrl->inited){
- LOG(LOG_LVL_EMERG, "Function hal_sleep_init(*sleep_config) has been called, If you want to reconfigure, please call hal_sleep_deinit() and re-call hal_sleep_init(*sleep_config)\r\n");
+ if(sleep_mode < LIGHT_SLEEP || sleep_mode > FROZEN_SLEEP){
return;
}
- memset(sleep_ctrl, 0, sizeof(hal_sleep_ctrl_t));
- sleep_ctrl->inited = true;
- memcpy(&(sleep_ctrl->sleep_config), sleep_config, sizeof(hal_sleep_config_t));
+
+ if(sleep_mode >= RETENTION_SLEEP){
+ HAL_SYSCON_AWO_sram_pd_en(sram_powerdown);
+ HAL_SYSCON_AWO_sram_po_en(0x07);
+ HAL_SYSCON_AWO_pmu_ret_en(1);
+ HAL_SYSCON_AWO_pmu_unret_en(1);
+ HAL_SYSCON_AWO_pdcmp_po(0);
+ if(sleep_mode == FROZEN_SLEEP){
+ HAL_SYSCON_AWO_cpucore_retreg_po(0);//set 0 to enter frozon mode
+ HAL_SYSCON_AWO_idle_reg_set(0x52);
+ }else{
+ HAL_SYSCON_AWO_cpucore_retreg_po(1);
+ HAL_SYSCON_AWO_lp_mode_awo(1);
+ }
+ }else{//sleep_mode <= DEEP_SLEEP
+ HAL_SYSCON_AWO_sram_pd_en(sram_powerdown);
+ HAL_SYSCON_AWO_pmu_ret_en(0);
+ HAL_SYSCON_AWO_pmu_unret_en(0);
+
+ // if phy needs power down, then save phy reg to cmp
+ HAL_SYSCON_CMP_rfreg_len(0x158);
+ HAL_SYSCON_CMP_rfreg_base_addr(0x0);
+ HAL_SYSCON_CMP_rfreg_action_set(0x1);//bit 0 is save rf register
+ while(HAL_SYSCON_CMP_save_done_get() != 1);
+ }
+
+ if((sleep_mode >= DEEP_SLEEP) && (sleep_mode <= RETENTION_SLEEP)){
+ ll_sleep_mac_tsf_clk_switch(1);//switch to 32k and power saving
+ }
+
+ //set CM4 sleep mode
+ if(sleep_mode >= DEEP_SLEEP){
+ SCB->SCR |= (1<<2);
+ }else{
+ SCB->SCR &= ~(1<<2);
+ }
+ if(sleep_mode == LIGHT_SLEEP){
+ HAL_SYSCON_AWO_sw_pwr_ctrl_set(0x02);
+ while(i++ < PRE_SLEEP_LOOP_COUNT){
+ __NOP();
+ }
+ while(HAL_SYSCON_AWO_pmu_fsm_get() != 0);
+ HAL_SYSCON_CMP_sw_clkg_set(sleep_config->peripheral_mod|(1< FROZEN_SLEEP){
+ return;
+ }
+
+ if(sleep_mode <= DEEP_SLEEP){
+ if(sleep_mode == LIGHT_SLEEP){
+ HAL_SYSCON_AWO_sw_pwr_ctrl_set(0x01);
+ HAL_SYSCON_CMP_sw_clkg_set(0xFFFFFFFF);
+ while(HAL_SYSCON_AWO_pmu_fsm_get() != 0);
+ }
+ HAL_SYSCON_AWO_pmu_ret_en(0);
+ HAL_SYSCON_AWO_pmu_unret_en(0);
+ //restore RF register firstly
+ HAL_SYSCON_CMP_rfreg_len(0x158);
+ HAL_SYSCON_CMP_rfreg_base_addr(0x0);
+ HAL_SYSCON_CMP_rfreg_action_set(0x2);//bit 1 is restore rf register
+ while(HAL_SYSCON_CMP_restore_done_get() != 1);
+ }
+
+ if((sleep_mode >= DEEP_SLEEP) && (sleep_mode <= RETENTION_SLEEP)){
+ ll_sleep_mac_tsf_clk_switch(0);//switch to 40M
+ }
}
-static void hal_sleep_wakeup_source_clear_all(void)
+static int hal_sleep_peripheral_module_to_IRQn(hal_peripheral_module_t peripheral_module)
{
- hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
- hal_sleep_config_t *sleep_config = &(sleep_ctrl->sleep_config);
- sleep_config->wakeup_src = 0;
+ int ret = 0;
+
+ switch(peripheral_module){
+ case MOD_QSPI:
+ ret = QSPI_IRQn;
+ break;
+ case MOD_ADDC:
+ ret = ADC_IRQn;
+ break;
+ case MOD_I2S:
+ ret = I2S_IRQn;
+ break;
+ case MOD_GPIO:
+ ret = GPIO_IRQn;
+ break;
+ case MOD_SPIM:
+ ret = SPI0_IRQn;
+ break;
+ case MOD_SPIS:
+ ret = SPI2_IRQn;
+ break;
+ case MOD_I2C0:
+ ret = I2C0_IRQn;
+ break;
+ case MOD_I2C1:
+ ret = I2C1_IRQn;
+ break;
+ case MOD_UART0:
+ ret = UART0_IRQn;
+ break;
+ case MOD_UART1:
+ ret = UART1_IRQn;
+ break;
+ case MOD_SPIM2:
+ ret = SPI1_IRQn;
+ break;
+ case MOD_WDT:
+ ret = WDT_IRQn;
+ break;
+ case MOD_TIMER0:
+ ret = TIMER_IRQn;
+ break;
+ case MOD_TIMER1:
+ ret = TIMER_IRQn;
+ break;
+ case MOD_TIMER2:
+ ret = TIMER_IRQn;
+ break;
+ case MOD_TIMER3:
+ ret = TIMER_IRQn;
+ break;
+ case MOD_TIMER4:
+ ret = TIMER_IRQn;
+ break;
+ case MOD_SDIO:
+ ret = SDIO_FUN1_IRQn;
+ break;
+ case MOD_MAC:
+ ret = MAC_IRQn;
+ break;
+ case MOD_DMA:
+ ret = DMA_IRQn;
+ break;
+ case MOD_PWM:
+ ret = PWM_IRQn;
+ break;
+ case MOD_TRNG:
+ ret = TRNG_IRQn;
+ break;
+ case MOD_AES:
+ ret = AES_IRQn;
+ break;
+ case MOD_EXT_INT:
+ ret = EXTERNAL_IRQn;
+ break;
+ case MOD_DGBH:
+ case MOD_CACHE:
+ case MOD_RFREG:
+ case MOD_EF:
+ default:
+ break;
+ }
+ return ret;
}
-static void hal_sleep_wakeup_source_update(void)
-{
- hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
- hal_sleep_config_t *sleep_config = &(sleep_ctrl->sleep_config);
- sleep_mode_enum_t sleep_mode = sleep_config->sleep_mode;
- //clear wakeup source
- hal_sleep_wakeup_source_clear_all();
- if(sleep_mode >= LIGHT_SLEEP)
+static int log2(uint32_t val)
+{
+ int ret = 0;
+ switch(val)
{
- //жʹܼĴֵ
- sleep_ctrl->nvic_int_en[0] = NVIC->ISER[0];
- sleep_ctrl->nvic_int_en[1] = NVIC->ISER[1];
-
- //жʹܼĴ
- //disable all interrupts
- NVIC->ICER[0] = 0xFFFFFFFF;
- NVIC->ICER[1] = 0xFFFFFFFF;
+ case 0x1: ret = 0; break;
+ case 0x2: ret = 1; break;
+ case 0x4: ret = 2; break;
+ case 0x8: ret = 3; break;
+ case 0x10: ret = 4; break;
+ case 0x20: ret = 5; break;
+ case 0x40: ret = 6; break;
+ case 0x80: ret = 7; break;
+ case 0x100: ret = 8; break;
+ case 0x200: ret = 9; break;
+ case 0x400: ret = 10; break;
+ case 0x800: ret = 11; break;
+ case 0x1000: ret = 12; break;
+ case 0x2000: ret = 13; break;
+ case 0x4000: ret = 14; break;
+ case 0x8000: ret = 15; break;
+ case 0x10000: ret = 16; break;
+ case 0x20000: ret = 17; break;
+ case 0x40000: ret = 18; break;
+ case 0x80000: ret = 19; break;
+ case 0x100000: ret = 20; break;
+ case 0x200000: ret = 21; break;
+ case 0x400000: ret = 22; break;
+ case 0x800000: ret = 23; break;
+ case 0x1000000: ret = 24; break;
+ case 0x2000000: ret = 25; break;
+ case 0x4000000: ret = 26; break;
+ case 0x8000000: ret = 27; break;
+ case 0x10000000: ret = 28; break;
+ case 0x20000000: ret = 29; break;
+ case 0x40000000: ret = 30; break;
+ case 0x80000000: ret = 31; break;
+ default: break;
}
+ return ret;
+}
- //enable wakeup IRQ
- if(sleep_mode >= LIGHT_SLEEP){
- if(sleep_mode == LIGHT_SLEEP){
- NVIC_EnableIRQ(UART0_IRQn);
- NVIC_EnableIRQ(UART1_IRQn);
- }else{
- NVIC_EnableIRQ(SLEEP_IRQn);
- }
-
- #if WIFI_SWITCH==0
- if(sleep_mode <= DEEP_SLEEP){
- NVIC_EnableIRQ(MAC_IRQn);
- }
- #endif
+/**
+ * @brief Check whether can sleep
+ *
+ * @param none
+ *
+ * @note If can sleep, return true; else return flase.
+ */
+static bool hal_sleep_condition_check(hal_sleep_config_t *sleep_config)
+{
+ bool ret = true;
+ hal_sleep_action_t *action;
+ uint32_t value, tmp, idx;
- if(sleep_config->wakeup_src & EXT_INT_WAKEUP){
- //ext int wakeup init
- hal_sleep_external_irq_wakeup_init(HAL_GPIO_Mapping_To_Ext_Int(sleep_config->ext_irq_cfg.gpio), sleep_config->ext_irq_cfg.triggle_type);
+ if(!sleep_config){
+ return false;
+ }
+ value = sleep_config->peripheral_mod;
+ while(value){
+ tmp = value & (value - 1);
+ idx = log2(value - tmp);
+ action = &(sleep_config->actions[idx]);
+ if(action->sleep_condition){
+ ret = ret && action->sleep_condition();
}
+ value = tmp;
}
+ return ret;
}
-void hal_sleep_set_config(hal_sleep_config_t *sleep_config)
+static void hal_pre_sleep_processing_registered_cb(hal_sleep_config_t *sleep_config)
{
- hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
+ hal_sleep_action_t *action;
+ uint32_t value, tmp, idx;
- if(!sleep_ctrl->inited){
- LOG(LOG_LVL_EMERG, "Function hal_sleep_init(*sleep_config) has not been called before, so you can't set sleep_config!\r\n");
+ if(!sleep_config){
return;
}
- memcpy(&(sleep_ctrl->sleep_config), sleep_config, sizeof(hal_sleep_config_t));
+ value = sleep_config->peripheral_mod;
+ while(value){
+ tmp = value & (value - 1);
+ idx = log2(value - tmp);
+ action = &(sleep_config->actions[idx]);
+ NVIC_EnableIRQ((IRQn_Type)action->irq_num);
+ if(action->pre_sleep){
+ action->pre_sleep();
+ }
+ value = tmp;
+ }
}
-
-sleep_mode_enum_t hal_sleep_get_mode(void)
+static void hal_post_sleep_processing_registered_cb(hal_sleep_config_t *sleep_config)
{
- hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
- return sleep_ctrl->sleep_config.sleep_mode;
+ hal_sleep_action_t *action;
+ uint32_t value, tmp, idx;
+
+ if(!sleep_config){
+ return;
+ }
+ value = sleep_config->peripheral_mod;
+ while(value){
+ tmp = value & (value - 1);
+ idx = log2(value - tmp);
+ action = &(sleep_config->actions[idx]);
+ if(action->post_sleep){
+ action->post_sleep();
+ }
+ value = tmp;
+ }
}
-extern bool is_sta_sleeping(void);
-extern void initialize_phy(void);
-#define RAM_RETENTION (1 << 0)
-#define RAM_MAC (1 << 1)
-#define RAM_CPU (1 << 2)
-#if WIFI_SWITCH
-extern uint8_t wifi_en;
-#endif
+
void hal_pre_sleep_processing(uint32_t *ticks)
{
hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
sleep_mode_enum_t sleep_mode = hal_sleep_get_mode();
uint64_t u64val = (uint64_t)(*ticks) * 1000 / configTICK_RATE_HZ;
uint8_t sram_powerdown = 0x00;//RAM_RETENTION | RAM_MAC | RAM_CPU
+ hal_sleep_config_t *sleep_config = &(sleep_ctrl->sleep_config);
-#if WIFI_SWITCH
- if(sleep_mode < LIGHT_SLEEP || sleep_ctrl->flag || (wifi_en==1)){
+ if(sleep_mode < LIGHT_SLEEP || sleep_ctrl->flag){
*ticks = 0;
return;
}
- //LOG(LOG_LVL_INFO, "\r\n%s() line:%d\r\n",__func__,__LINE__);
-#else
- if(sleep_mode < LIGHT_SLEEP || sleep_ctrl->flag || (sleep_ctrl->wifi_is_slept_cb && !sleep_ctrl->wifi_is_slept_cb())){
+
+ if(!hal_sleep_condition_check(sleep_config)){
*ticks = 0;
return;
}
-#endif
if(u64val >> 32){
LOG(LOG_LVL_EMERG, "[%s, %d]ticks(%d) expected overflow!\r\n", __func__, __LINE__, *ticks);
@@ -187,22 +400,24 @@ void hal_pre_sleep_processing(uint32_t *ticks)
sleep_ctrl->flag = true;
- //set wakeup source
- hal_sleep_wakeup_source_update();
+ hal_pre_sleep_processing_registered_cb(sleep_config);
if(sleep_mode == LIGHT_SLEEP){
// LIGHT_SLEEP˯ģʽʱʹRTC
u64val = ((uint64_t)1000000 * (sleep_ctrl->msec - RTC_TIMER_EXTRA_COMPENSATION_MSEC))/HAL_SYSCON_Get32KPeriodNs();
- if(u64val >> 32){
- LOG(LOG_LVL_EMERG, "[%s, %d]RTC counter_match(%lld) overflow!\r\n", __func__, __LINE__, u64val);
- u64val = u64val & 0xFFFFFFFFULL;
- }
- hal_sleep_rtc_wakeup_init(u64val);
+ hal_sleep_rtc_init((uint32_t)u64val);
}else{
// ˯ģʽʱʹרŵsleep timer
sleep_ctrl->compensation = HAL_SYSCON_CalculateCompensateNs() + (uint64_t)SLEEP_TIMER_EXTRA_COMPENSATION_MSEC*1000000;
HAL_SYSCON_CPUSleepDurationEnable(((uint64_t)*ticks * 1000000000 / configTICK_RATE_HZ) - sleep_ctrl->compensation);
+ NVIC_EnableIRQ(SLEEP_IRQn);
}
- ll_pre_sleep_processing(sleep_mode, sram_powerdown);
+ //ll_pre_sleep_processing(sleep_mode, sram_powerdown);
+ pre_sleep_processing_hardware(sleep_mode, sram_powerdown);
+
+ HAL_SYSCON_AWO_clk_sel_set(0); // switch to crystal clock
+
+
+
}
uint32_t hal_post_sleep_processing(uint32_t ticks)
{
@@ -225,7 +440,7 @@ uint32_t hal_post_sleep_processing(uint32_t ticks)
}
sleep_ctrl->flag = false;
- ll_post_sleep_processing(mode);
+ post_sleep_processing_hardware(mode);
if(mode == LIGHT_SLEEP){
ticks = (((uint64_t)HAL_RTC_GetCurValue() * HAL_SYSCON_Get32KPeriodNs() / 1000000 + RTC_TIMER_EXTRA_COMPENSATION_MSEC) * configTICK_RATE_HZ) / 1000;
@@ -243,28 +458,67 @@ uint32_t hal_post_sleep_processing(uint32_t ticks)
NVIC->ISER[0] = sleep_ctrl->nvic_int_en[0];
NVIC->ISER[1] = sleep_ctrl->nvic_int_en[1];
}
- if(sleep_ctrl->reinit_phy_cb)
- {
- sleep_ctrl->reinit_phy_cb();
- }
+ hal_post_sleep_processing_registered_cb(&(sleep_ctrl->sleep_config));
+
+ HAL_SYSCON_AWO_clk_sel_set(1); // switch to system pll clock
return ticks;
}
-void hal_sleep_wakeup_source_set(hal_sleep_wakeup_src_enum_t wakeup_src)
+
+int hal_sleep_set_mode(sleep_mode_enum_t sleep_mode)
{
hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
- hal_sleep_config_t *sleep_config = &(sleep_ctrl->sleep_config);
- sleep_config->wakeup_src |= wakeup_src;
+
+ sleep_ctrl->sleep_config.sleep_mode = sleep_mode;
+
+ return 0;
}
-void hal_sleep_register_callback(reinitialize_phy_cb_t reinit_phy_cb, wifi_is_slept_cb_t wifi_is_slept_cb)
+
+sleep_mode_enum_t hal_sleep_get_mode(void)
{
hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
- sleep_ctrl->reinit_phy_cb = reinit_phy_cb;
- sleep_ctrl->wifi_is_slept_cb = wifi_is_slept_cb;
+ return sleep_ctrl->sleep_config.sleep_mode;
}
-void SLEEP_IRQHandler(void)
+int hal_sleep_register(hal_peripheral_module_t peripheral_module, sleep_condition_cb_t sleep_condition, sleep_processing_cb_t pre_sleep, sleep_processing_cb_t post_sleep)
{
- //do nothing
- hal_sleep_wakeup_source_set(SLEEP_TIMER_WAKEUP);
+ hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
+ hal_sleep_config_t *sleep_config = &(sleep_ctrl->sleep_config);
+ hal_sleep_action_t *action;
+
+ if(peripheral_module >= MOD_MAX || peripheral_module < MOD_QSPI){
+ return -1;
+ }
+
+ action = &(sleep_config->actions[peripheral_module]);
+ SET_BIT(sleep_config->peripheral_mod, peripheral_module);
+ action->irq_num = hal_sleep_peripheral_module_to_IRQn(peripheral_module);
+ if(sleep_condition){
+ action->sleep_condition = sleep_condition;
+ }
+ if(pre_sleep){
+ action->pre_sleep = pre_sleep;
+ }
+ if(post_sleep){
+ action->post_sleep = post_sleep;
+ }
+ return 0;
+}
+int hal_sleep_unregister(hal_peripheral_module_t peripheral_module)
+{
+ hal_sleep_ctrl_t *sleep_ctrl = hal_sleep_get_handle();
+ hal_sleep_config_t *sleep_config = &(sleep_ctrl->sleep_config);
+ hal_sleep_action_t *action;
+
+ if(peripheral_module >= MOD_MAX || peripheral_module < MOD_QSPI){
+ return -1;
+ }
+
+ action = &(sleep_config->actions[peripheral_module]);
+ CLR_BIT(sleep_config->peripheral_mod, peripheral_module);
+ action->irq_num = 0;
+ action->sleep_condition = NULL;
+ action->pre_sleep = NULL;
+ action->post_sleep = NULL;
+ return 0;
}
diff --git a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_syscon.c b/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_syscon.c
index d1b0cd26ba03160d87b948be23229d3f1a95c6d0..9e38e16cb8f46a1c19793a1b3183dd248630a5ca 100644
--- a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_syscon.c
+++ b/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_syscon.c
@@ -498,6 +498,7 @@ void HAL_SYSCON_EXT_INTR_Clear(void)
LL_SYSCON_EXT_INTR_Clear();
}
+
/**
* @brief Reset the mcu by software
*
@@ -526,13 +527,104 @@ void HAL_SYSCON_Xtal40MCap_Set(uint8_t cap)
LL_SYSCON_Xtal40MCap_Set(cap);
}
-
void HAL_SYSCON_PmuCfg(void)
{
LL_SYSCON_PMUReg_Set(0x8B050900);// (BUCK) r_vtrim: bit[9:8]=0b01 //00: 1.195 / 01: 1.202 / 10: 1.210 / 11: 1.218
- LL_SYSCON_PMUCfg_Set(0x20001603);// o_digldo_norvdd: bit[10:8]=0b100; o_digldo_retvdd: bit[14:12]=0b001
+ //LL_SYSCON_PMUCfg_Set(0x20001603);// o_digldo_norvdd: bit[10:8]=0b100; o_digldo_retvdd: bit[14:12]=0b001
+ LL_SYSCON_PMUCfg_Set(0x310746fd);// o_digldo_norvdd: bit[10:8]=0b100; o_digldo_retvdd: bit[14:12]=0b110
LL_SYSCON_Misc_Set(0x00002C0D);
LL_SYSCON_PMUAvdd_Set(0x00055DB6);// Avdd & PLL & RF voltage 55B75
}
+void HAL_SYSCON_AWO_phy_pd_en(uint8_t en)
+{
+ LL_SYSCON_AWO_phy_pd_en(en);
+}
+void HAL_SYSCON_AWO_phy_po_en(uint8_t en)
+{
+ LL_SYSCON_AWO_phy_po_en(en);
+}
+void HAL_SYSCON_AWO_ldo18_po_en(uint8_t en)
+{
+ LL_SYSCON_AWO_ldo18_po_en(en);
+}
+void HAL_SYSCON_AWO_sram_pd_en(uint8_t en)
+{
+ LL_SYSCON_AWO_sram_pd_en(en);
+}
+void HAL_SYSCON_AWO_sram_po_en(uint8_t en)
+{
+ LL_SYSCON_AWO_sram_po_en(en);
+}
+
+void HAL_SYSCON_AWO_pmu_ret_en(uint8_t en)
+{
+ LL_SYSCON_AWO_pmu_ret_en(en);
+}
+void HAL_SYSCON_AWO_pmu_unret_en(uint8_t en)
+{
+ LL_SYSCON_AWO_pmu_unret_en(en);
+}
+void HAL_SYSCON_AWO_pdcmp_po(uint8_t po)
+{
+ LL_SYSCON_AWO_pdcmp_po(po);
+}
+
+void HAL_SYSCON_AWO_cpucore_retreg_po(uint8_t po)
+{
+ LL_SYSCON_AWO_cpucore_retreg_po(po);
+}
+void HAL_SYSCON_AWO_idle_reg_set(uint32_t val)
+{
+ LL_SYSCON_AWO_idle_reg_set(val);
+}
+
+void HAL_SYSCON_AWO_lp_mode_awo(uint8_t lp_mode_awo)
+{
+ LL_SYSCON_AWO_lp_mode_awo(lp_mode_awo);
+}
+
+void HAL_SYSCON_AWO_clk_sel_set(uint32_t val)
+{
+ LL_SYSCON_AWO_clk_sel_set(val);
+}
+
+void HAL_SYSCON_CMP_rfreg_len(uint16_t rfreg_len)
+{
+ LL_SYSCON_CMP_rfreg_len(rfreg_len);
+}
+void HAL_SYSCON_CMP_rfreg_base_addr(uint16_t rfreg_base_addr)
+{
+ LL_SYSCON_CMP_rfreg_base_addr(rfreg_base_addr);
+}
+
+void HAL_SYSCON_CMP_rfreg_action_set(uint32_t val)
+{
+ LL_SYSCON_CMP_rfreg_action_set(val);
+}
+
+uint8_t HAL_SYSCON_CMP_save_done_get(void)
+{
+ return LL_SYSCON_CMP_save_done_get();
+}
+
+void HAL_SYSCON_AWO_sw_pwr_ctrl_set(uint32_t value)
+{
+ LL_SYSCON_AWO_sw_pwr_ctrl_set(value);
+}
+
+uint8_t HAL_SYSCON_AWO_pmu_fsm_get(void)
+{
+ return LL_SYSCON_AWO_pmu_fsm_get();
+}
+
+uint8_t HAL_SYSCON_CMP_restore_done_get(void)
+{
+ return LL_SYSCON_CMP_restore_done_get();
+}
+
+void HAL_SYSCON_CMP_sw_clkg_set(uint32_t value)
+{
+ LL_SYSCON_CMP_sw_clkg_set(value);
+}
diff --git a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_timer.c b/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_timer.c
index fdd1822b02938f40d7741afdec06e3865ea69980..a3cb4c4e9ffc5008eff6f3595397c3815c8698ee 100644
--- a/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_timer.c
+++ b/platform/vendor_bsp/LN/ln882x/src/driver_ln882x/hal/hal_timer.c
@@ -4,6 +4,7 @@
#include "ll/ll_syscon.h"
#include "hal/hal_common.h"
+timer_cb_func_t Timer_cb_func[4]={NULL};
/**
* @brief Initialize the timer according to the input param config.
@@ -16,6 +17,7 @@ void HAL_TIMER_Init(TIMER_InitTypeDef config)
assert_param(IS_TIMER_MODE(config.mode));
assert_param(IS_TIMER_MASK(config.mask));
assert_param( ((APBUS0_CLOCK / config.user_freq) >= 1 ) && ( (APBUS0_CLOCK / config.user_freq) <= 256 ));
+ assert_param(config.cb_func);
HAL_TIMER_Enable(config.index, TIMER_DISABLE);
@@ -52,6 +54,10 @@ void HAL_TIMER_Init(TIMER_InitTypeDef config)
default:
break;
}
+ if(config.cb_func)
+ {
+ Timer_cb_func[config.index-1]=config.cb_func;
+ }
}
@@ -233,4 +239,14 @@ uint32_t HAL_TIMER_LoadCount2_Get(TIMER_Index index)
return LL_TIMER_LoadCount2_Get(index);
}
-
+void TIMER_IRQHandler()
+{
+ TIMER_Index index;
+ for(index=TIMER_1;index<=TIMER_4;index++)
+ {
+ if(HAL_TIMER_Int_Status(index)&&Timer_cb_func[index-1])
+ {
+ Timer_cb_func[index-1]();
+ }
+ }
+}
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_agent.c b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_agent.c
new file mode 100644
index 0000000000000000000000000000000000000000..5e5a4736c348e6c9facbecebdf30424e7e009f3f
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_agent.c
@@ -0,0 +1,316 @@
+#include "string.h"
+#include "xz_decompress.h"
+#include "flash_partition_mgr.h"
+
+#include "ota_image.h"
+#include "ota_agent.h"
+#include "ota_port.h"
+
+
+static uint8_t temp_buf[LEN_4KB];
+
+static image_hdr_t app_header;
+static image_hdr_t ota_header;
+static partition_info_t partition_info_app;
+static partition_info_t partition_info_ota;
+
+static int verify_total_img_partition(partition_type_t type, \
+ partition_info_t *info, image_hdr_t *hdr)
+{
+ int err;
+
+ if (LN_TRUE != ln_fetch_partition_info(type, info)) {
+ return OTA_ERR_PARTITION_TAB;
+ }
+
+ if (OTA_ERR_NONE != (err = image_header_read(type, hdr))) {
+ return err;
+ }
+
+ if (OTA_ERR_NONE != (err = image_header_verify(hdr))) {
+ return err;
+ }
+
+ if (OTA_ERR_NONE != (err = image_body_verify(info->start_addr, hdr))) {
+ return err;
+ }
+
+ return OTA_ERR_NONE;
+}
+
+static int orig_image_do_restore(uint32_t app_body_offset, \
+ uint32_t ota_body_offset, uint32_t size)
+{
+ uint32_t i = 0;
+ uint32_t count_4k = size / LEN_4KB;
+ uint32_t remainder_4k = size % LEN_4KB;
+ ota_port_ctx_t * port = ota_get_port_ctx();
+
+ for (i = 0; i < count_4k; i++) {
+ port->flash_drv.read(ota_body_offset, temp_buf, LEN_4KB);
+ port->flash_drv.write(app_body_offset, temp_buf, LEN_4KB);
+ ota_body_offset += LEN_4KB;
+ app_body_offset += LEN_4KB;
+ }
+
+ if (remainder_4k) {
+ port->flash_drv.read(ota_body_offset, temp_buf, remainder_4k);
+ port->flash_drv.write(app_body_offset, temp_buf, remainder_4k);
+ }
+
+ return OTA_ERR_NONE;
+}
+
+static int decompress_read_cb(uint8_t **buf, uint32_t *buf_len)
+{
+ int32_t tmp_len;
+ uint32_t ota_xz_size = ota_header.img_size_orig_xz;
+ uint32_t ota_img_body_offset = partition_info_ota.start_addr + sizeof(image_hdr_t);
+ ota_port_ctx_t * port = ota_get_port_ctx();
+
+ static uint32_t xz_already_read = 0;
+
+ tmp_len = ota_xz_size - xz_already_read;
+ if (tmp_len > LEN_4KB) {
+ tmp_len = LEN_4KB;
+ }
+
+ *buf = temp_buf;
+
+ port->flash_drv.read(ota_img_body_offset + xz_already_read, *buf, tmp_len);
+
+ *buf_len = tmp_len;
+ xz_already_read += tmp_len;
+
+ return XZ_RET_OK;
+}
+
+static int decompress_write_cb(uint32_t offset, uint8_t *buf, uint32_t buf_len)
+{
+ uint32_t app_img_body_offset = partition_info_app.start_addr + sizeof(image_hdr_t);
+ ota_port_ctx_t * port = ota_get_port_ctx();
+ static uint32_t xz_already_write = 0;
+
+ port->flash_drv.write(app_img_body_offset + xz_already_write, buf, buf_len);
+
+ xz_already_write += buf_len;
+
+ return XZ_RET_OK;
+}
+
+static int xz_image_do_restore(uint32_t ota_body_offset, uint32_t size)
+{
+ write_cb_t out;
+ read_cb_t in;
+ xz_header_t xz_header = {0,};
+ ota_port_ctx_t * port = ota_get_port_ctx();
+
+ out.Write = decompress_write_cb;
+ in.Read = decompress_read_cb;
+
+ port->flash_drv.read(ota_body_offset, &xz_header, sizeof(xz_header_t));
+
+ if (XZ_RET_OK != xz_decompress_buf_to_buf(xz_header.header, &out, &in)) {
+ return OTA_ERR_DECOMPRESS;
+ }
+
+ return OTA_ERR_NONE;
+}
+
+static int restore_image(jump_to_app_t jump_to_app)
+{
+ static image_hdr_t img_hdr_temp;
+ upg_state_t upgrade_state;
+ uint32_t app_body_offset = 0;
+ uint32_t ota_body_offset = 0;
+ uint32_t size = 0;
+ ota_port_ctx_t * port = ota_get_port_ctx();
+ int err = OTA_ERR_NONE;
+
+ switch(ota_header.image_type)
+ {
+ case IMAGE_TYPE_ORIGINAL:
+ // copy header
+ port->flash_drv.write(partition_info_app.start_addr, &ota_header, sizeof(image_hdr_t));
+
+ // copy image
+ app_body_offset = partition_info_app.start_addr + sizeof(image_hdr_t);
+ ota_body_offset = partition_info_ota.start_addr + sizeof(image_hdr_t);
+ size = ota_header.img_size_orig;
+ if (OTA_ERR_NONE != (err = orig_image_do_restore(app_body_offset, \
+ ota_body_offset, size))) {
+ return err;
+ }
+
+ // verify app partition(new image)
+ if (OTA_ERR_NONE != (err = verify_total_img_partition(PARTITION_TYPE_APP, \
+ &partition_info_app, &app_header))) {
+ //TODO:HOOK
+ return err;
+ }
+
+ // update OTA upg state
+ upgrade_state = UPG_STATE_RESTORE_OK;
+
+ if (LN_TRUE != port->kv_ops.kv_set(KV_OTA_UPG_STATE, &upgrade_state, sizeof(upg_state_t))) {
+ //TODO:HOOK
+ return OTA_ERR_KV_RW;
+ }
+
+ jump_to_app(partition_info_app.start_addr + sizeof(image_hdr_t));
+ return OTA_ERR_NONE;
+
+ case IMAGE_TYPE_ORIGINAL_XZ:
+ // copy header
+ memcpy(&img_hdr_temp, &ota_header, sizeof(image_hdr_t));
+ img_hdr_temp.image_type = IMAGE_TYPE_ORIGINAL;
+ img_hdr_temp.header_crc32 = ln_crc32_signle_cal((uint8_t *)&img_hdr_temp, \
+ sizeof(image_hdr_t) - sizeof(uint32_t));
+
+ port->flash_drv.write(partition_info_app.start_addr, &img_hdr_temp, sizeof(image_hdr_t));
+
+ // copy image
+ ota_body_offset = partition_info_ota.start_addr + sizeof(image_hdr_t);
+ size = ota_header.img_size_orig_xz;
+
+ // it takes a lot of time.
+ if (OTA_ERR_NONE != (err = xz_image_do_restore(ota_body_offset, size))) {
+ return err;
+ }
+
+ // verify app partition(new image)
+ if (OTA_ERR_NONE != (err = verify_total_img_partition(PARTITION_TYPE_APP, \
+ &partition_info_app, &app_header))) {
+ //TODO:HOOK
+ return err;
+ }
+
+ // update OTA upg state
+ upgrade_state = UPG_STATE_RESTORE_OK;
+
+ if (LN_TRUE != port->kv_ops.kv_set(KV_OTA_UPG_STATE, &upgrade_state, sizeof(upg_state_t))) {
+ //TODO:HOOK
+ return OTA_ERR_KV_RW;
+ }
+
+ jump_to_app(partition_info_app.start_addr + sizeof(image_hdr_t));
+ return OTA_ERR_NONE;
+
+ case IMAGE_TYPE_DIFF:
+ case IMAGE_TYPE_DIFF_XZ:
+ if ((app_header.ver.ver_major == ota_header.ver_diff_depend.ver_major) && \
+ (app_header.ver.ver_minor == ota_header.ver_diff_depend.ver_minor))
+ {
+ // this feature is not supported yet.
+ return OTA_ERR_NOT_SUPPORT;
+ }
+ /* why? it's impossible to go into this branch */
+ else
+ {
+ // download ok! why? App should check it!
+ return OTA_ERR_IMPOSSIBLE_VER;
+ }
+
+ default:
+ return OTA_ERR_IMG_TYPE;
+ }
+}
+
+int ota_boot_upgrade_agent(jump_to_app_t jump_to_app)
+{
+ ota_port_ctx_t * port = ota_get_port_ctx();
+ upg_state_t upgrade_state;
+ uint32_t v_len = 0;
+ int err = OTA_ERR_NONE;
+
+ if (LN_TRUE != port->kv_ops.kv_get(KV_OTA_UPG_STATE, &upgrade_state, sizeof(upg_state_t), &v_len))
+ {
+ /* upg state param error,may be first startup or KV damaged */
+ if (OTA_ERR_NONE != (err = verify_total_img_partition(PARTITION_TYPE_APP, \
+ &partition_info_app, &app_header))) {
+ //TODO:HOOK
+ return err;
+ }
+
+ jump_to_app(partition_info_app.start_addr + sizeof(image_hdr_t));
+ return OTA_ERR_NONE;
+ }
+
+ if (UPG_STATE_DOWNLOAD_OK != upgrade_state)
+ {
+ if (OTA_ERR_NONE != (err = verify_total_img_partition(PARTITION_TYPE_APP, \
+ &partition_info_app, &app_header))) {
+ //TODO:HOOK
+ return err;
+ }
+
+ jump_to_app(partition_info_app.start_addr + sizeof(image_hdr_t));
+ return OTA_ERR_NONE;
+ }
+ else
+ {
+ if (OTA_ERR_NONE != (err = verify_total_img_partition(PARTITION_TYPE_APP, \
+ &partition_info_app, &app_header))) {
+ //last time copy err case.
+
+ //return errno
+ }
+ else
+ {
+ if (OTA_ERR_NONE != (err = verify_total_img_partition(PARTITION_TYPE_OTA, \
+ &partition_info_ota, &ota_header))) {
+ //update OTA upg state [upg restory filed]
+
+ //jump to app!
+ jump_to_app(partition_info_app.start_addr + sizeof(image_hdr_t));
+
+ return err;//ota err image but wo also jump to app
+ }
+
+ //version compare
+ if ((ota_header.ver.ver_major + ota_header.ver.ver_minor) > \
+ (app_header.ver.ver_major + app_header.ver.ver_minor))
+ {
+ port->flash_drv.erase(partition_info_app.start_addr, partition_info_app.size);
+ return restore_image(jump_to_app);
+
+ }
+ else if ((ota_header.ver.ver_major + ota_header.ver.ver_minor) == \
+ (app_header.ver.ver_major + app_header.ver.ver_minor))
+ {
+ /* a power loss may have occurred after the last restore before the UPG STATE update. */
+ if ((app_header.img_size_orig == ota_header.img_size_orig) && \
+ (app_header.img_crc32_orig == ota_header.img_crc32_orig))
+ {
+ //update OTA param
+ upgrade_state = UPG_STATE_RESTORE_OK;
+
+ if (LN_TRUE != port->kv_ops.kv_set(KV_OTA_UPG_STATE, &upgrade_state, sizeof(upg_state_t))) {
+ //TODO:HOOK
+ return OTA_ERR_KV_RW;
+ }
+
+ jump_to_app(partition_info_app.start_addr + sizeof(image_hdr_t));
+ return OTA_ERR_NONE;
+ }
+ /* why? it's impossible to go into this branch */
+ else
+ {
+ //TODO:HOOK
+ return OTA_ERR_IMPOSSIBLE_VER;
+ }
+ }
+ /* why? it's impossible to go into this branch */
+ else
+ {
+ //TODO:HOOK
+ return OTA_ERR_IMPOSSIBLE_VER;
+ }
+ }
+ }
+
+ return 0;
+}
+
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_agent.h b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_agent.h
new file mode 100644
index 0000000000000000000000000000000000000000..14a0941f5630b36a4412f7b34b8ddf922cb1d4eb
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_agent.h
@@ -0,0 +1,15 @@
+#ifndef __OTA_API_H__
+#define __OTA_API_H__
+
+#include "ota_err.h"
+#include "ota_types.h"
+#include "ota_port.h"
+
+typedef void (*jump_to_app_t)(uint32_t app_entity_offset);
+
+int ota_boot_upgrade_agent(jump_to_app_t jump_to_app);
+
+
+
+#endif /* __OTA_API_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_err.h b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_err.h
new file mode 100644
index 0000000000000000000000000000000000000000..925af6b01f45dd293c95dfd7876edc0d7474bad0
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_err.h
@@ -0,0 +1,24 @@
+#ifndef __OTA_ERR_H__
+#define __OTA_ERR_H__
+
+typedef enum {
+ OTA_ERR_NONE = 0u,
+ OTA_ERR_INVALID_PARAM,
+
+ OTA_ERR_KV_RW = 10u,
+ OTA_ERR_UPG_STATE,
+ OTA_ERR_PARTITION_TAB,
+ OTA_ERR_DECOMPRESS,
+
+ OTA_ERR_IMG_TYPE = 20u,
+ OTA_ERR_IMG_HEADER_READ,
+ OTA_ERR_IMG_HEADER_VERIFY,
+ OTA_ERR_IMG_ENTITY_VERIFY,
+
+ OTA_ERR_IMPOSSIBLE_VER = 30u,
+ OTA_ERR_NOT_SUPPORT,
+
+} ota_err_t;
+
+#endif /* __OTA_ERR_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_image.c b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_image.c
new file mode 100644
index 0000000000000000000000000000000000000000..a3314d2ffcc9a1424475b7030b98dc0aa51b7c75
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_image.c
@@ -0,0 +1,113 @@
+#include "ota_image.h"
+#include "ota_port.h"
+
+
+#define TEMP_BUF_LEN (128)
+static uint8_t temp_buf[TEMP_BUF_LEN];
+
+int image_header_read(partition_type_t type, image_hdr_t *header)
+{
+ partition_info_t info;
+ ota_port_ctx_t * port = ota_get_port_ctx();
+
+ if ((type != PARTITION_TYPE_APP) && (type != PARTITION_TYPE_OTA)) {
+ return OTA_ERR_INVALID_PARAM;
+ }
+
+ if (LN_TRUE == ln_fetch_partition_info(type, &info)) {
+ port->flash_drv.read(info.start_addr, (uint8_t*)header, sizeof(image_hdr_t));
+ return OTA_ERR_NONE;
+ }
+
+ return OTA_ERR_IMG_HEADER_READ;
+}
+
+int image_header_fast_read(uint32_t start_addr, image_hdr_t *header)
+{
+ ota_port_ctx_t * port = ota_get_port_ctx();
+
+ port->flash_drv.read(start_addr, (uint8_t*)header, sizeof(image_hdr_t));
+
+ return OTA_ERR_NONE;
+}
+
+int image_header_verify(image_hdr_t *header)
+{
+ if (header->header_crc32 == ln_crc32_signle_cal((uint8_t *)header, sizeof(image_hdr_t) - sizeof(uint32_t))) {
+ return OTA_ERR_NONE;
+ }
+
+ return OTA_ERR_IMG_HEADER_VERIFY;
+}
+
+int image_body_verify(uint32_t start_addr, image_hdr_t *header)
+{
+ uint32_t offset = 0;
+ uint32_t size = 0;
+ uint32_t i = 0;
+ uint32_t crc32_result = 0;
+ crc32_ctx_t crc_ctx = {0,};
+ ota_port_ctx_t * port = ota_get_port_ctx();
+
+ if (!header) {
+ return OTA_ERR_INVALID_PARAM;
+ }
+
+ offset = start_addr + sizeof(image_hdr_t);
+
+ switch (header->image_type)
+ {
+ case IMAGE_TYPE_ORIGINAL:
+ size = header->img_size_orig;
+ break;
+ case IMAGE_TYPE_ORIGINAL_XZ:
+ size = header->img_size_orig_xz;
+ break;
+ case IMAGE_TYPE_DIFF:
+ size = header->img_size_diff;
+ break;
+ case IMAGE_TYPE_DIFF_XZ:
+ size = header->img_size_diff_xz;
+ break;
+ default:
+ return OTA_ERR_IMG_TYPE;
+ }
+
+ /* calculate CRC32 checksum of flash image segment by segment */
+ ln_crc32_init(&crc_ctx);
+
+ for (i = 0; i < size/TEMP_BUF_LEN; i++) {
+ port->flash_drv.read(offset, temp_buf, TEMP_BUF_LEN);
+
+ ln_crc32_update(&crc_ctx, temp_buf, TEMP_BUF_LEN);
+
+ offset += TEMP_BUF_LEN;
+ }
+
+ port->flash_drv.read(offset, temp_buf, size % TEMP_BUF_LEN);
+ ln_crc32_update(&crc_ctx, temp_buf, size % TEMP_BUF_LEN);
+ crc32_result = ln_crc32_final(&crc_ctx);
+
+ /* check the CRC32 checksum */
+ switch (header->image_type)
+ {
+ case IMAGE_TYPE_ORIGINAL:
+ return ((crc32_result == header->img_crc32_orig) ? OTA_ERR_NONE : OTA_ERR_IMG_ENTITY_VERIFY);
+
+ case IMAGE_TYPE_ORIGINAL_XZ:
+ return ((crc32_result == header->img_crc32_orig_xz) ? OTA_ERR_NONE : OTA_ERR_IMG_ENTITY_VERIFY);
+
+ case IMAGE_TYPE_DIFF:
+ return ((crc32_result == header->img_crc32_diff) ? OTA_ERR_NONE : OTA_ERR_IMG_ENTITY_VERIFY);
+
+ case IMAGE_TYPE_DIFF_XZ:
+ return ((crc32_result == header->img_crc32_diff_xz) ? OTA_ERR_NONE : OTA_ERR_IMG_ENTITY_VERIFY);
+
+ default:
+ return OTA_ERR_IMG_TYPE;
+ }
+}
+
+
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_image.h b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_image.h
new file mode 100644
index 0000000000000000000000000000000000000000..0ed4381047cf6fd36b8c7debaeaf188ccf74eff0
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_image.h
@@ -0,0 +1,17 @@
+#ifndef __OTA_IMAGE_H__
+#define __OTA_IMAGE_H__
+
+#include "flash_partition_mgr.h"
+#include "ota_types.h"
+#include "ota_err.h"
+
+
+int image_header_read(partition_type_t type, image_hdr_t * header);
+int image_header_fast_read(uint32_t start_addr, image_hdr_t *header);
+int image_header_verify(image_hdr_t * header);
+int image_body_verify(uint32_t start_addr, image_hdr_t *header);
+
+
+#endif /* __OTA_IMAGE_H__ */
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_port.c b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_port.c
new file mode 100644
index 0000000000000000000000000000000000000000..12c027eb8069ff717a20f2e822fcb1f9bdeb9583
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_port.c
@@ -0,0 +1,72 @@
+#include "ota_port.h"
+#include "ota_err.h"
+#include "hal/flash.h"
+#include "ln_kv_api.h"
+#include "ln_kv_err.h"
+
+static ota_port_ctx_t ota_port;
+
+static int flash_read(uint32_t offset, void *buf, uint32_t len)
+{
+ return FLASH_Read(offset, len, buf);
+}
+
+static int flash_write(uint32_t offset, const void *buf, uint32_t len)
+{
+ return FLASH_Program(offset, len, (uint8_t*)buf);
+}
+
+static int flash_erase(uint32_t offset, uint32_t len)
+{
+ FLASH_Erase(offset, len);
+ return 0;
+}
+
+static int ota_kv_set(const char *key, const void *value, size_t v_len)
+{
+ if (KV_ERR_NONE == ln_kv_set(key,value,v_len)) {
+ return LN_TRUE;
+ }
+ return LN_FALSE;
+}
+
+static int ota_kv_get(const char *key, void *value_buf, size_t value_buf_size, size_t *v_len)
+{
+ if (KV_ERR_NONE == ln_kv_get(key,value_buf,value_buf_size,v_len)) {
+ return LN_TRUE;
+ }
+ return LN_FALSE;
+}
+
+static void chip_reboot(void)
+{
+
+}
+
+ota_err_t ota_port_init(void)
+{
+ ota_port.flash_drv.read = flash_read;
+ ota_port.flash_drv.write = flash_write;
+ ota_port.flash_drv.erase = flash_erase;
+
+ ota_port.kv_ops.kv_set = ota_kv_set;
+ ota_port.kv_ops.kv_get = ota_kv_get;
+
+ ota_port.chip_reboot = chip_reboot;
+
+ return OTA_ERR_NONE;
+}
+
+ota_port_ctx_t * ota_get_port_ctx(void)
+{
+ return &ota_port;
+}
+
+
+
+
+
+
+
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_port.h b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_port.h
new file mode 100644
index 0000000000000000000000000000000000000000..1d43e16bb0e8e1f93cfe7c91a3c1346fbc30f3af
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_port.h
@@ -0,0 +1,60 @@
+#ifndef __OTA_PORT_H__
+#define __OTA_PORT_H__
+
+#include "ln_types.h"
+#include "ln_kv_err.h"
+#include "ota_err.h"
+#include "utils/crc32.h"
+
+#define LEN_4KB (1024*4)
+
+typedef int (*ota_flash_write_t)(uint32_t addr, const void *buf, uint32_t len);
+typedef int (*ota_flash_read_t)(uint32_t addr, void *buf, uint32_t len);
+typedef int (*ota_flash_erase_t)(uint32_t addr, uint32_t len);
+typedef int (*ota_kv_set_t)(const char *key, const void *value, size_t v_len);
+typedef int (*ota_kv_get_t)(const char *key, void *value_buf, size_t value_buf_size, size_t *v_len);
+typedef void (*chip_reboot_t)(void);
+
+typedef struct {
+ ota_flash_write_t write;
+ ota_flash_read_t read;
+ ota_flash_erase_t erase;
+} ota_flash_drv_t;
+
+typedef struct {
+ ota_kv_set_t kv_set;
+ ota_kv_get_t kv_get;
+} ota_kv_ops_t;
+
+typedef struct {
+ ota_flash_drv_t flash_drv;
+ ota_kv_ops_t kv_ops;
+ chip_reboot_t chip_reboot;
+} ota_port_ctx_t;
+
+
+/**
+ * @brief ota port init.
+ * initialize some hardware api that ota module depend on.
+ *
+ * @attention None.
+ *
+ * @return errcode
+ * @retval #OTA_ERR_NONE initialize ok.
+ * @retval #OTA_ERR_* initialize failed.
+ */
+ota_err_t ota_port_init(void);
+
+/**
+ * @brief get ota port context.
+ * get ota port context.
+ *
+ * @attention None.
+ *
+ * @return the pointer of ota port context.
+ */
+ota_port_ctx_t * ota_get_port_ctx(void);
+
+
+#endif /* __OTA_PORT_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_types.h b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_types.h
new file mode 100644
index 0000000000000000000000000000000000000000..b64b9965ee16b7d4d02e737acc0b511217fb0556
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/ota_types.h
@@ -0,0 +1,50 @@
+#ifndef __OTA_TYPES_H__
+#define __OTA_TYPES_H__
+
+#include "ln_types.h"
+
+typedef enum {
+ IMAGE_ATTACHE = 0u, /*< it's an attache drvice image */
+ IMAGE_TYPE_ORIGINAL = 1u, /*< it's an original image */
+ IMAGE_TYPE_ORIGINAL_XZ = 2u, /*< it's an original image which is zipped */
+ IMAGE_TYPE_DIFF = 3u, /*< it's a diff image */
+ IMAGE_TYPE_DIFF_XZ = 4u, /*< it's a diff image which is zipped */
+ IMAGE_TYPE_PLACE = 0x12345678, /*< make different IDEs compatible */
+} image_type_t;
+
+typedef struct {
+ uint8_t ver_major; /*< major version number */
+ uint8_t ver_minor; /*< minor version number */
+} image_ver_t;
+
+typedef struct {
+ image_type_t image_type; /*< what's the image type */
+ image_ver_t ver; /*< image version number */
+ image_ver_t ver_diff_depend; /*< which version of the file that diff image depend on */
+ uint32_t img_size_orig; /*< size of original image */
+ uint32_t img_size_orig_xz; /*< size of original image which is zipped */
+ uint32_t img_size_diff; /*< size of diff image */
+ uint32_t img_size_diff_xz; /*< size of diff image which is zippede */
+ uint32_t img_crc32_orig; /*< checksum of original image */
+ uint32_t img_crc32_orig_xz; /*< checksum of original image which is zipped */
+ uint32_t img_crc32_diff; /*< checksum of diff image */
+ uint32_t img_crc32_diff_xz; /*< checksum of diff image which is zippede */
+ uint8_t res[212]; /*< reserved space */
+ uint32_t header_crc32; /*< checksum of the image header except for itself */
+} image_hdr_t;
+
+typedef enum {
+ UPG_STATE_DOWNLOAD_ING = 0u, /*< ota image downloading */
+ UPG_STATE_DOWNLOAD_OK = 1u, /*< ota image download finish and check success */
+ UPG_STATE_RESTORE_ING = 2u, /*< ota image restoring */
+ UPG_STATE_RESTORE_OK = 3u, /*< ota image restore finish and check success */
+ UPG_STATE_RESTORE_FILED = 4u, /*< ota image restore filed */
+ UPG_STATE_PLACE = 0x12345678, /*< make different IDEs compatible */
+} upg_state_t;
+
+#define KV_OTA_UPG_STATE "kv_ota_upg_state"
+
+
+#endif /*< __OTA_TYPES_H__ */
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/xz_decompress.c b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/xz_decompress.c
new file mode 100644
index 0000000000000000000000000000000000000000..a6e2426e6add421a3c50c1d6dcc66c3138432ed6
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/xz_decompress.c
@@ -0,0 +1,593 @@
+
+#include "xz_decompress.h"
+#include
+#include
+#include
+
+#define XZ_BASE_SIZE 1846
+#define XZ_LIT_SIZE 768
+
+#define kNumTopBits 24
+#define kTopValue ((uint32_t)1 << kNumTopBits)
+#define kNumBitModelTotalBits 11
+#define kBitModelTotal (1 << kNumBitModelTotalBits)
+#define kNumMoveBits 5
+
+typedef struct
+{
+ uint8_t* Buffer;
+ uint8_t* BufferLim;
+ uint32_t Range;
+ uint32_t Code;
+ read_cb_t* InCallback;
+ int read_cb_ret;
+ int ExtraBytes;
+} CRangeDecoder;
+
+typedef struct
+{
+ CRangeDecoder RangeDecoder;
+ uint8_t* Dictionary;
+ uint32_t DictionarySize;
+ uint32_t DictionaryPos;
+ uint32_t GlobalPos;
+ uint32_t Reps[4];
+ int lc;
+ int lp;
+ int pb;
+ int State;
+ int PreviousIsMatch;
+ int RemainLen;
+} XzVarState;
+
+uint8_t RangeDecoderReadByte(CRangeDecoder* rd)
+{
+ uint32_t size = 0;
+ if (rd->Buffer == rd->BufferLim)
+ {
+ rd->read_cb_ret = rd->InCallback->Read(&rd->Buffer, &size);
+ rd->BufferLim = rd->Buffer + size;
+ if (size == 0) {
+ rd->ExtraBytes = 1;
+ return 0xFF;
+ }
+ }
+ return (*rd->Buffer++);
+}
+
+#define ReadByte (RangeDecoderReadByte(rd))
+
+void RangeDecoderInit(CRangeDecoder* rd, read_cb_t* in_cb)
+{
+ rd->InCallback = in_cb;
+ rd->Buffer = rd->BufferLim = 0;
+ rd->ExtraBytes = 0;
+ rd->Code = 0;
+ rd->Range = (0xFFFFFFFF);
+ for (int i = 0; i < 5; i++) {
+ rd->Code = (rd->Code << 8) | ReadByte;
+ }
+}
+
+uint32_t RangeDecoderDecodeDirectBits(CRangeDecoder* rd, int numTotalBits)
+{
+ uint32_t range = rd->Range;
+ uint32_t code = rd->Code;
+ uint32_t result = 0;
+
+ for (int i = numTotalBits; i > 0; i--)
+ {
+ range >>= 1;
+ result <<= 1;
+
+ if (code >= range) {
+ code -= range;
+ result |= 1;
+ }
+
+ /* uint32_t t; */
+ /*
+ t = (code - range) >> 31;
+ t &= 1;
+ code -= range & (t - 1);
+ result = (result + result) | (1 - t);
+ */
+
+ if (range < kTopValue) {
+ range <<= 8;
+ code = (code << 8) | ReadByte;
+ }
+ }
+
+ rd->Range = range;
+ rd->Code = code;
+ return result;
+}
+
+int RangeDecoderBitDecode(prob_t* prob, CRangeDecoder* rd)
+{
+ uint32_t bound = (rd->Range >> kNumBitModelTotalBits)* (*prob);
+ if (rd->Code < bound)
+ {
+ rd->Range = bound;
+ *prob += (kBitModelTotal - *prob) >> kNumMoveBits;
+ if (rd->Range < kTopValue)
+ {
+ rd->Code = (rd->Code << 8) | ReadByte;
+ rd->Range <<= 8;
+ }
+ return 0;
+ }
+ else
+ {
+ rd->Range -= bound;
+ rd->Code -= bound;
+ *prob -= (*prob) >> kNumMoveBits;
+ if (rd->Range < kTopValue)
+ {
+ rd->Code = (rd->Code << 8) | ReadByte;
+ rd->Range <<= 8;
+ }
+ return 1;
+ }
+}
+
+int RangeDecoderBitTreeDecode(prob_t* probs, int numLevels, CRangeDecoder* rd)
+{
+ int mi = 1;
+ for (int i = numLevels; i > 0; i--) {
+ mi = (mi + mi) + RangeDecoderBitDecode(probs + mi, rd);
+ }
+ return mi - (1 << numLevels);
+}
+
+int RangeDecoderReverseBitTreeDecode(prob_t* probs, int numLevels, CRangeDecoder* rd)
+{
+ int mi = 1;
+ int symbol = 0;
+ for (int i = 0; i < numLevels; i++)
+ {
+ int bit = RangeDecoderBitDecode(probs + mi, rd);
+ mi = mi + mi + bit;
+ symbol |= (bit << i);
+ }
+ return symbol;
+}
+
+static uint8_t xz_literal_decode(prob_t* probs, CRangeDecoder* rd)
+{
+ int symbol = 1;
+ do
+ {
+ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
+ } while (symbol < 0x100);
+
+ return symbol;
+}
+
+static uint8_t xz_literal_decode_match(prob_t* probs, CRangeDecoder* rd, uint8_t matchByte)
+{
+ int symbol = 1;
+ int bit = 0, matchBit = 0;
+ do
+ {
+ matchBit = (matchByte >> 7) & 1;
+ matchByte <<= 1;
+ bit = RangeDecoderBitDecode(probs + ((1 + matchBit) << 8) + symbol, rd);
+ symbol = (symbol << 1) | bit;
+
+ if (matchBit != bit)
+ {
+ while (symbol < 0x100) {
+ symbol = (symbol + symbol) | RangeDecoderBitDecode(probs + symbol, rd);
+ }
+ break;
+ }
+ } while (symbol < 0x100);
+
+ return symbol;
+}
+
+#define kNumPosBitsMax 4
+#define kNumPosStatesMax (1 << kNumPosBitsMax)
+#define kLenNumLowBits 3
+#define kLenNumLowSymbols (1 << kLenNumLowBits)
+#define kLenNumMidBits 3
+#define kLenNumMidSymbols (1 << kLenNumMidBits)
+#define kLenNumHighBits 8
+#define kLenNumHighSymbols (1 << kLenNumHighBits)
+
+#define LenChoice 0
+#define LenChoice2 (LenChoice + 1)
+#define LenLow (LenChoice2 + 1)
+#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits))
+#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits))
+#define kNumLenProbs (LenHigh + kLenNumHighSymbols)
+
+static int xz_len_decode(prob_t* p, CRangeDecoder* rd, int posState)
+{
+ if (RangeDecoderBitDecode(p + LenChoice, rd) == 0)
+ return RangeDecoderBitTreeDecode(p + LenLow + (posState << kLenNumLowBits), kLenNumLowBits, rd);
+ if (RangeDecoderBitDecode(p + LenChoice2, rd) == 0)
+ return (kLenNumLowSymbols + RangeDecoderBitTreeDecode(p + LenMid + (posState << kLenNumMidBits), kLenNumMidBits, rd));
+
+ return (kLenNumLowSymbols + kLenNumMidSymbols + RangeDecoderBitTreeDecode(p + LenHigh, kLenNumHighBits, rd));
+}
+
+#define kNumStates 12
+#define kStartPosModelIndex 4
+#define kEndPosModelIndex 14
+#define kNumFullDistances (1 << (kEndPosModelIndex >> 1))
+
+#define kNumPosSlotBits 6
+#define kNumLenToPosStates 4
+#define kNumAlignBits 4
+#define kAlignTableSize (1 << kNumAlignBits)
+#define kMatchMinLen 2
+
+#define IsMatch 0
+#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax))
+#define IsRepG0 (IsRep + kNumStates)
+#define IsRepG1 (IsRepG0 + kNumStates)
+#define IsRepG2 (IsRepG1 + kNumStates)
+#define IsRep0Long (IsRepG2 + kNumStates)
+#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax))
+#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits))
+#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex)
+#define LenCoder (Align + kAlignTableSize)
+#define RepLenCoder (LenCoder + kNumLenProbs)
+#define Literal (RepLenCoder + kNumLenProbs)
+
+#if Literal != XZ_BASE_SIZE
+ #error
+#endif
+
+
+static int xz_decode(uint8_t* buf, uint8_t* out_stream, uint32_t out_size, uint32_t* out_size_processed)
+{
+ XzVarState* vs = (XzVarState*)buf;
+ prob_t* p = (prob_t*)(buf + sizeof(XzVarState));
+ CRangeDecoder rd = vs->RangeDecoder;
+ int state = vs->State;
+ int previousIsMatch = vs->PreviousIsMatch;
+ uint32_t rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3];
+ uint32_t nowPos = 0, pos = 0;
+ uint8_t previousByte = 0;
+
+ uint32_t posStateMask = (1 << (vs->pb)) - 1;
+ uint32_t literalPosMask = (1 << (vs->lp)) - 1;
+ int lc = vs->lc;
+ int remain_len = vs->RemainLen;
+ uint32_t globalPos = vs->GlobalPos;
+
+ uint8_t* dict = vs->Dictionary;
+ uint32_t dict_size = vs->DictionarySize;
+ uint32_t dictionaryPos = vs->DictionaryPos;
+
+ if (remain_len == -1) {
+ *out_size_processed = 0;
+ return XZ_RET_OK;
+ }
+
+ while ((remain_len > 0) && (nowPos < out_size))
+ {
+ pos = dictionaryPos - rep0;
+ if (pos >= dict_size)
+ pos += dict_size;
+
+ out_stream[nowPos++] = dict[dictionaryPos] = dict[pos];
+
+ if (++dictionaryPos == dict_size)
+ dictionaryPos = 0;
+
+ remain_len--;
+ }
+
+ if (dictionaryPos == 0)
+ previousByte = dict[dict_size - 1];
+ else
+ previousByte = dict[dictionaryPos - 1];
+
+ *out_size_processed = 0;
+ while (nowPos < out_size)
+ {
+ int posState = (int)((nowPos + globalPos) & posStateMask);
+
+ if (rd.read_cb_ret != XZ_RET_OK)
+ return rd.read_cb_ret;
+
+ if (rd.ExtraBytes != 0)
+ return XZ_RET_DATA_ERR;
+
+ if (RangeDecoderBitDecode(p + IsMatch + (state << kNumPosBitsMax) + posState, &rd) == 0)
+ {
+ prob_t* probs = p + Literal + (XZ_LIT_SIZE * ((((nowPos + globalPos) & literalPosMask) << lc) + (previousByte >> (8 - lc))));
+
+ if (state < 4) {
+ state = 0;
+ }
+ else if (state < 10) {
+ state -= 3;
+ }
+ else {
+ state -= 6;
+ }
+
+ if (previousIsMatch)
+ {
+ pos = dictionaryPos - rep0;
+ if (pos >= dict_size)
+ pos += dict_size;
+
+ uint8_t matchByte = dict[pos];
+ previousByte = xz_literal_decode_match(probs, &rd, matchByte);
+ previousIsMatch = 0;
+ }
+ else {
+ previousByte = xz_literal_decode(probs, &rd);
+ }
+
+ out_stream[nowPos++] = previousByte;
+
+ dict[dictionaryPos] = previousByte;
+
+ if (++dictionaryPos == dict_size)
+ dictionaryPos = 0;
+ }
+ else
+ {
+ previousIsMatch = 1;
+ if (RangeDecoderBitDecode(p + IsRep + state, &rd) == 1)
+ {
+ if (RangeDecoderBitDecode(p + IsRepG0 + state, &rd) == 0)
+ {
+ if (RangeDecoderBitDecode(p + IsRep0Long + (state << kNumPosBitsMax) + posState, &rd) == 0)
+ {
+ if ((nowPos + globalPos) == 0)
+ return XZ_RET_DATA_ERR;
+
+ state = state < 7 ? 9 : 11;
+
+ pos = dictionaryPos - rep0;
+ if (pos >= dict_size)
+ pos += dict_size;
+
+ previousByte = dict[pos];
+ dict[dictionaryPos] = previousByte;
+
+ if (++dictionaryPos == dict_size)
+ dictionaryPos = 0;
+
+ out_stream[nowPos++] = previousByte;
+ continue;
+ }
+ }
+ else
+ {
+ uint32_t distance;
+ if (RangeDecoderBitDecode(p + IsRepG1 + state, &rd) == 0)
+ distance = rep1;
+ else
+ {
+ if (RangeDecoderBitDecode(p + IsRepG2 + state, &rd) == 0)
+ distance = rep2;
+ else
+ {
+ distance = rep3;
+ rep3 = rep2;
+ }
+
+ rep2 = rep1;
+ }
+ rep1 = rep0;
+ rep0 = distance;
+ }
+ remain_len = xz_len_decode(p + RepLenCoder, &rd, posState);
+ state = state < 7 ? 8 : 11;
+ }
+ else
+ {
+ int posSlot;
+ rep3 = rep2;
+ rep2 = rep1;
+ rep1 = rep0;
+ state = (state < 7) ? 7 : 10;
+ remain_len = xz_len_decode(p + LenCoder, &rd, posState);
+
+ posSlot = RangeDecoderBitTreeDecode(p + PosSlot + \
+ ((remain_len < kNumLenToPosStates ? remain_len : kNumLenToPosStates - 1) << kNumPosSlotBits), kNumPosSlotBits, &rd);
+
+ if (posSlot >= kStartPosModelIndex)
+ {
+ int numDirectBits = ((posSlot >> 1) - 1);
+ rep0 = ((2 | ((uint32_t)posSlot & 1)) << numDirectBits);
+
+ if (posSlot < kEndPosModelIndex) {
+ rep0 += RangeDecoderReverseBitTreeDecode((p + SpecPos + rep0 - posSlot - 1), numDirectBits, &rd);
+ }
+ else {
+ rep0 += RangeDecoderDecodeDirectBits(&rd, numDirectBits - kNumAlignBits) << kNumAlignBits;
+ rep0 += RangeDecoderReverseBitTreeDecode(p + Align, kNumAlignBits, &rd);
+ }
+ }
+ else {
+ rep0 = posSlot;
+ }
+
+ rep0++;
+ }
+
+ if (rep0 == (uint32_t)(0)) {
+ remain_len = -1;/* it's for stream version */
+ break;
+ }
+
+ if (rep0 > nowPos + globalPos) {
+ return XZ_RET_DATA_ERR;
+ }
+
+ remain_len += kMatchMinLen;
+
+ do
+ {
+ pos = dictionaryPos - rep0;
+ if (pos >= dict_size) {
+ pos += dict_size;
+ }
+
+ previousByte = dict[pos];
+ dict[dictionaryPos] = previousByte;
+
+ if (++dictionaryPos == dict_size) {
+ dictionaryPos = 0;
+ }
+
+ out_stream[nowPos++] = previousByte;
+ remain_len--;
+ } while ((remain_len > 0) && (nowPos < out_size));
+ }
+ }
+
+ vs->RangeDecoder = rd;
+ vs->DictionaryPos = dictionaryPos;
+ vs->GlobalPos = globalPos + nowPos;
+ vs->Reps[0] = rep0;
+ vs->Reps[1] = rep1;
+ vs->Reps[2] = rep2;
+ vs->Reps[3] = rep3;
+ vs->State = state;
+ vs->PreviousIsMatch = previousIsMatch;
+ vs->RemainLen = remain_len;
+
+ *out_size_processed = nowPos;
+ return XZ_RET_OK;
+}
+
+char XZINTERNALDATA_MEMORY_ADDR[INTERNAL_DATA_BUF_SIZE] = { 0 };
+char DICTIONARY_MEMORY_ADDR[DICT_BUF_SIZE] = { 0 };
+char BLOCK_MEMORY_ADDR[BLOCK_BUF_SIZE] = { 0 };
+
+int xz_decompress_buf_to_buf(uint8_t* header, write_cb_t* out_cb, read_cb_t* in_cb)
+{
+ uint32_t nowPos = 0, out_size = 0, out_size_processed = 0;
+ uint8_t properties[5];
+ uint8_t prop0;
+ int lc, lp, pb;
+ uint8_t b = 0;
+ int ret = 0;
+
+ uint8_t* dict = NULL;
+ uint32_t dict_size = 0;
+ uint8_t* xzInternalData = NULL;
+ uint32_t xzInternalSize = 0;
+
+ memcpy(properties, header, sizeof(properties));
+ header += sizeof(properties);
+
+ for (int i = 0; i < 4; i++)
+ {
+ b = *(uint8_t*)header;
+ header += sizeof(b);
+ out_size += (uint32_t)(b) << (i * 8);
+ }
+
+ if (out_size == 0xFFFFFFFF) {
+ return XZ_RET_STREAM_VER_NOT_SUPP;
+ }
+
+ for (int i = 0; i < 4; i++)
+ {
+ b = *(uint8_t*)header;
+ header += sizeof(b);
+ if (b != 0) {
+ return XZ_RET_FILE_TOO_LONG;
+ }
+ }
+
+ prop0 = properties[0];
+ if (prop0 >= (9 * 5 * 5)) {
+ return XZ_RET_PROPERTIES_ERR;
+ }
+
+ for (pb = 0; prop0 >= (9 * 5); pb++, prop0 -= (9 * 5));
+ for (lp = 0; prop0 >= 9; lp++, prop0 -= 9);
+ lc = prop0;
+
+ for (int i = 0; i < 4; i++) {
+ dict_size += (uint32_t)(properties[1 + i]) << (i * 8);
+ }
+
+ //os_malloc(dict_size);
+ dict = (void*)DICTIONARY_MEMORY_ADDR;
+ if (dict == NULL) {
+ return XZ_RET_MEM_ALLOC_FILED;
+ }
+ if (dict_size > sizeof(DICTIONARY_MEMORY_ADDR)) {
+ return XZ_RET_NOT_ENOUGH_MEM;
+ }
+ memset(dict, 0, sizeof(DICTIONARY_MEMORY_ADDR));
+
+ //os_malloc(xzInternalSize);
+ xzInternalData = (void*)XZINTERNALDATA_MEMORY_ADDR;
+ if (xzInternalData == NULL) {
+ return XZ_RET_MEM_ALLOC_FILED;
+ }
+ xzInternalSize = (XZ_BASE_SIZE + (XZ_LIT_SIZE << (lc + lp))) * sizeof(prob_t);
+ xzInternalSize += sizeof(XzVarState);
+ if (xzInternalSize >= sizeof(XZINTERNALDATA_MEMORY_ADDR)) {
+ return XZ_RET_NOT_ENOUGH_MEM;
+ }
+ memset(xzInternalData, 0, sizeof(XZINTERNALDATA_MEMORY_ADDR));
+
+ //init param
+ {
+ XzVarState * vs = (XzVarState*)xzInternalData;
+ prob_t * p = (prob_t*)(xzInternalData + sizeof(XzVarState));
+ uint32_t numProbs = Literal + ((uint32_t)XZ_LIT_SIZE << (lc + lp));
+
+ vs->Dictionary = dict;
+ vs->DictionarySize = dict_size;
+ vs->DictionaryPos = 0;
+ vs->GlobalPos = 0;
+ vs->Reps[0] = vs->Reps[1] = vs->Reps[2] = vs->Reps[3] = 1;
+ vs->lc = lc;
+ vs->lp = lp;
+ vs->pb = pb;
+ vs->State = 0;
+ vs->PreviousIsMatch = 0;
+ vs->RemainLen = 0;
+
+ for (uint32_t i = 0; i < numProbs; i++) {
+ p[i] = kBitModelTotal >> 1;
+ }
+ RangeDecoderInit(&vs->RangeDecoder, in_cb);
+ }
+
+ //decode
+ for (nowPos = 0; nowPos < out_size;)
+ {
+ uint8_t* dest = (uint8_t*)BLOCK_MEMORY_ADDR;
+ uint32_t blockSize = out_size - nowPos;
+ if (blockSize > sizeof(BLOCK_MEMORY_ADDR)) {
+ blockSize = sizeof(BLOCK_MEMORY_ADDR);
+ }
+
+ if (XZ_RET_OK != (ret = xz_decode((uint8_t*)xzInternalData, ((uint8_t*)dest), blockSize, &out_size_processed))) {
+ return ret;
+ }
+ if (out_size_processed == 0) {
+ out_size = nowPos;
+ break;
+ }
+ out_cb->Write(nowPos, dest, out_size_processed);
+
+ nowPos += out_size_processed;
+ }
+
+ return 0;
+}
+
+
+
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/xz_decompress.h b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/xz_decompress.h
new file mode 100644
index 0000000000000000000000000000000000000000..641cbcba03bc0ad2bff06e4175351f3dac0cd5f0
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fota/ota_agent/xz_decompress.h
@@ -0,0 +1,43 @@
+
+#ifndef __XZ_DECOMPRESS_H__
+#define __XZ_DECOMPRESS_H__
+
+#include "stdint.h"
+
+#define prob_t uint16_t //uint32_t
+
+#define INTERNAL_DATA_BUF_SIZE (16*1024)
+#define DICT_BUF_SIZE (4*1024)
+#define BLOCK_BUF_SIZE (1*1024)
+
+typedef enum {
+ XZ_RET_OK = 0,
+ XZ_RET_DATA_ERR = -1,
+ XZ_RET_NOT_ENOUGH_MEM = -2,
+ XZ_RET_STREAM_VER_NOT_SUPP = -3,
+ XZ_RET_FILE_TOO_LONG = -4,
+ XZ_RET_PROPERTIES_ERR = -5,
+ XZ_RET_MEM_ALLOC_FILED = -6,
+}xz_errno_t;
+
+
+typedef struct
+{
+ int(*Read)(uint8_t** buf, uint32_t* buf_len);
+} read_cb_t;
+
+typedef struct
+{
+ int(*Write)(uint32_t offset, uint8_t* buf, uint32_t buf_len);
+} write_cb_t;
+
+typedef struct
+{
+ uint8_t header[13];
+} xz_header_t;
+
+
+int xz_decompress_buf_to_buf(uint8_t* header, write_cb_t* out_cb, read_cb_t* in_cb);
+
+#endif /* __XZ_DECOMPRESS_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv.c b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv.c
new file mode 100644
index 0000000000000000000000000000000000000000..d06470664fdcf8da2477588b6a6f57001eb0b971
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv.c
@@ -0,0 +1,1110 @@
+#include "ln_kv.h"
+#include "string.h"
+#include "ln_kv_api.h"
+
+static kv_ctl_t kv_ctl;
+static kv_err_t kv_gc(void);
+
+static uint8_t kv_checksum_crc8(uint8_t *buf, int nbyte)
+{
+ int i;
+ uint8_t crc = 0;
+
+#define POLY 0x31
+#define WIDTH 8
+#define TOP_BIT 0x80
+
+ while (nbyte--) {
+ crc ^= *buf++;
+ for (i = 0; i < WIDTH; ++i) {
+ if (crc & TOP_BIT) {
+ crc = (crc << 1) ^ POLY;
+ } else {
+ crc <<= 1;
+ }
+ }
+ crc &= 0xFF;
+ }
+
+ return crc;
+}
+
+__STATIC_INLINE__ void kv_lock(void)
+{
+#ifndef KV_CONFIG_OS_NONE
+ if (ln_kv_is_os_running()) {
+ ln_kv_mutex_lock(KV_MGR_LOCK);
+ }
+#endif
+}
+
+__STATIC_INLINE__ void kv_unlock(void)
+{
+#ifndef KV_CONFIG_OS_NONE
+ if (ln_kv_is_os_running()) {
+ ln_kv_mutex_unlock(KV_MGR_LOCK);
+ }
+#endif
+}
+
+static kv_err_t kv_flash_read(uint32_t addr, void *buf, size_t buf_size)
+{
+ if (KV_FLASH_READ(addr, buf, buf_size) < 0) {
+ return KV_ERR_FLASH_READ_FAILED;
+ }
+ return KV_ERR_NONE;
+}
+
+static kv_err_t kv_flash_write(uint32_t addr, void *buf, size_t buf_size)
+{
+ if (KV_FLASH_WRITE(addr, buf, buf_size) < 0) {
+ return KV_ERR_FLASH_WRITE_FAILED;
+ }
+ return KV_ERR_NONE;
+}
+
+static kv_err_t kv_flash_erase(uint32_t start, size_t len)
+{
+ if (KV_FLASH_ERASE(start, len) < 0) {
+ return KV_ERR_FLASH_ERASE_FAILED;
+ }
+ return KV_ERR_NONE;
+}
+
+static kv_err_t kv_flash_wunit_modify(uint32_t addr, kv_wunit_t data)
+{
+ return kv_flash_write(addr, &data, sizeof(kv_wunit_t));
+}
+
+static kv_err_t kv_flash_blk_erase(uint32_t blk_start)
+{
+ return kv_flash_erase(blk_start, KV_BLK_SIZE);
+}
+
+static void kv_flash_ctl_init(uint32_t flash_start, uint32_t flash_end, kv_flash_drv_t *flash_drv, kv_flash_prop_t *flash_prop)
+{
+ memcpy(&kv_ctl.flash_ctl.flash_drv, flash_drv, sizeof(kv_flash_drv_t));
+
+ KV_FLASH_START = flash_start;
+ KV_FLASH_END = flash_end;
+ KV_FLASH_SECTOR_SIZE_LOG2 = flash_prop->sector_size_log2;
+
+ KV_FLASH_WRITE_ALIGN = sizeof(kv_byte_t);
+}
+
+static kv_err_t kv_blk_hdr_read(uint32_t blk_start, kv_blk_hdr_t *blk_hdr)
+{
+ return kv_flash_read(blk_start, blk_hdr, sizeof(kv_blk_hdr_t));
+}
+
+static kv_err_t kv_blk_format(uint32_t blk_start)
+{
+ if (kv_flash_blk_erase(blk_start) != KV_ERR_NONE) {
+ return KV_ERR_FLASH_ERASE_FAILED;
+ }
+
+ if (kv_flash_wunit_modify(KV_ADDR_OF_FIELD(blk_start, kv_blk_hdr_t, magic),
+ KV_BLK_HDR_MAGIC) != KV_ERR_NONE) {
+ return KV_ERR_FLASH_WRITE_FAILED;
+ }
+
+ kv_blk_set_fresh(blk_start);
+
+ return KV_ERR_NONE;
+}
+
+static uint32_t kv_blk_next_fresh(void)
+{
+ uint32_t cur_blk;
+
+ KV_BLK_FOR_EACH_FROM(cur_blk, KV_MGR_WORKSPACE) {
+ if (kv_blk_is_fresh(cur_blk)) {
+ return cur_blk;
+ }
+ }
+
+ return KV_BLK_INVALID;
+}
+
+static uint32_t kv_blk_search_inuse(uint32_t item_size)
+{
+ uint32_t cur_blk;
+
+ KV_BLK_FOR_EACH_FROM(cur_blk, KV_MGR_WORKSPACE) {
+ if (kv_blk_is_inuse(cur_blk) &&
+ kv_blk_freesz_get(cur_blk) >= item_size) {
+ return cur_blk;
+ }
+ }
+
+ return KV_BLK_INVALID;
+}
+
+static uint32_t kv_blk_search_suitable(uint32_t item_size)
+{
+ uint32_t the_blk;
+
+ // no more writeable block, no need to do the next logic
+ if (KV_NO_WRITEABLE_BLK()) {
+ return KV_BLK_INVALID;
+ }
+
+ // no more blocks with sufficient space, searched before
+ if (KV_MGR_WORKSPACE == KV_BLK_INVALID) {
+ return KV_BLK_INVALID;
+ }
+
+ do {
+ // current workspace is just ok(workspace is kinda cache)
+ if (kv_blk_freesz_get(KV_MGR_WORKSPACE) >= item_size) {
+ return KV_MGR_WORKSPACE;
+ }
+
+ // first we should search in inuse blocks
+ the_blk = kv_blk_search_inuse(item_size);
+ if (the_blk != KV_BLK_INVALID) {
+ KV_MGR_WORKSPACE = the_blk;
+ return KV_MGR_WORKSPACE;
+ }
+
+ // no more fresh block, cannot allocate new block and cannot do gc neither.
+ if (KV_MGR_BLK_NUM_FRESH < 1) {
+ return KV_BLK_INVALID;
+ }
+
+ // if we have more than one fresh block, just give it out
+ if (KV_MGR_BLK_NUM_FRESH > 1) {
+ KV_MGR_WORKSPACE = kv_blk_next_fresh();
+ return KV_MGR_WORKSPACE;
+ }
+
+ // no more block inuse has sufficient space, and only one fresh block left, we should try gc
+ if (KV_MGR_BLK_NUM_FRESH == 1) {
+ if (kv_gc() != KV_ERR_NONE) {
+ // no more dirty block to gc, we give out the last precious fresh block(no more gc any more)
+ KV_MGR_WORKSPACE = kv_blk_next_fresh();
+ return KV_MGR_WORKSPACE;
+ }
+ }
+ } while (LN_TRUE);
+}
+
+static kv_err_t kv_item_hdr_write(uint32_t item_start, kv_item_hdr_t *item_hdr)
+{
+ if (kv_flash_write(KV_ADDR_OF_FIELD(item_start, kv_item_hdr_t, checksum),
+ &item_hdr->checksum,
+ KV_ITEM_HDR_SIZE - sizeof(kv_wunit_t) * 2) != KV_ERR_NONE) {
+ return KV_ERR_FLASH_WRITE_FAILED;
+ }
+
+ return kv_flash_wunit_modify(KV_ADDR_OF_FIELD(item_start, kv_item_hdr_t, magic),
+ item_hdr->magic);
+}
+
+static kv_err_t kv_item_write(uint32_t item_start, kv_item_hdr_t *item_hdr, const uint8_t *item_body, uint32_t item_body_len)
+{
+ // write header, if a power down happen here, we can know it by header magic verify.
+ if (kv_item_hdr_write(item_start, item_hdr) != KV_ERR_NONE) {
+ return KV_ERR_FLASH_WRITE_FAILED;
+ }
+
+ // if a power down happen here, we can know it by checksum verify.
+
+ // write body(key & value)
+ return kv_flash_write(item_start + KV_ITEM_HDR_SIZE, (void *)item_body, item_body_len);
+}
+
+static kv_err_t kv_item_hdr_read(uint32_t item_start, kv_item_hdr_t *item_hdr)
+{
+ return kv_flash_read(item_start, item_hdr, sizeof(kv_item_hdr_t));
+}
+
+static kv_err_t kv_item_body_read(kv_item_t *item)
+{
+ uint8_t *kv_buf = NULL;
+
+ kv_buf = (uint8_t *)ln_kv_malloc(KV_ITEM_SIZE_OF_BODY(item));
+ if (!kv_buf) {
+ return KV_ERR_OUT_OF_MEMORY;
+ }
+
+ if (kv_flash_read(KV_ITEM_ADDR_OF_BODY(item), kv_buf,
+ KV_ITEM_SIZE_OF_BODY(item)) != KV_ERR_NONE) {
+ ln_kv_free(kv_buf);
+ return KV_ERR_FLASH_READ_FAILED;
+ }
+
+ item->body = kv_buf;
+
+ return KV_ERR_NONE;
+}
+
+static kv_err_t kv_item_do_delete(uint32_t item_start)
+{
+ // set the discarded_flag on the flash
+ return kv_flash_wunit_modify(KV_ADDR_OF_FIELD(item_start, kv_item_hdr_t, discarded_flag), KV_ITEM_DISCARDED);
+}
+
+static kv_err_t kv_item_delete_aux(uint32_t item_start)
+{
+ if (kv_item_do_delete(item_start) != KV_ERR_NONE) {
+ return KV_ERR_FLASH_WRITE_FAILED;
+ }
+
+ kv_blk_set_dirty(KV_ITEM_ADDR2BLK(item_start));
+
+ return KV_ERR_NONE;
+}
+
+static kv_err_t kv_item_delete(kv_item_t *item)
+{
+ return kv_item_delete_aux(item->pos);
+}
+
+static kv_err_t kv_item_try_delete(kv_item_t *item)
+{
+ uint8_t *prev_key;
+ uint32_t prev_pos;
+ uint8_t prev_k_len, k_len;
+ kv_item_hdr_t prev_item_hdr;
+
+ prev_pos = item->hdr.prev_pos;
+
+ if (kv_item_hdr_read(prev_pos, &prev_item_hdr) != KV_ERR_NONE) {
+ return KV_ERR_FLASH_READ_FAILED;
+ }
+
+ if (!KV_ITEM_IS_LEGAL(&prev_item_hdr) ||
+ KV_ITEM_IS_DISCARDED(&prev_item_hdr)) {
+ /* situation 1 in kv_item_update, the prev_pos is in a fresh block now(for gc sake),
+ no need to delete the previous one.
+ */
+ return KV_ERR_NONE;
+ }
+
+ // test if situation 2 in kv_item_update happened
+
+ k_len = item->hdr.k_len;
+ prev_k_len = prev_item_hdr.k_len;
+
+ if (k_len != prev_k_len) {
+ return KV_ERR_NONE;
+ }
+
+ prev_key = (uint8_t *)ln_kv_malloc(k_len);
+ if (!prev_key) {
+ return KV_ERR_OUT_OF_MEMORY;
+ }
+
+ if (kv_flash_read(prev_pos + KV_ITEM_HDR_SIZE, prev_key, k_len) != KV_ERR_NONE) {
+ ln_kv_free(prev_key);
+ return KV_ERR_FLASH_READ_FAILED;
+ }
+
+ // key changes, means another turn of gc happened, the previous block is filled with new item.
+ if (memcmp(prev_key, (void *)KV_ITEM_ADDR_OF_BODY(item), k_len) != 0) {
+ ln_kv_free(prev_key);
+ return KV_ERR_NONE;
+ }
+
+ // the previous item is still there, delete it.
+ return kv_item_delete_aux(prev_pos);
+}
+
+__STATIC_INLINE__ void kv_item_free(kv_item_t *item)
+{
+ if (item->body) {
+ ln_kv_free(item->body);
+ }
+ ln_kv_free(item);
+}
+
+static int kv_item_hdr_verify(kv_item_hdr_t *item_hdr, uint32_t item_start, uint32_t blk_start)
+{
+ uint8_t k_len;
+ uint16_t v_len;
+
+ k_len = item_hdr->k_len;
+ v_len = item_hdr->v_len;
+
+ // 1. test key/value size
+ if (k_len == 0 || \
+ v_len == 0 || \
+ k_len == (uint8_t)-1 || \
+ v_len == (uint16_t)-1) {
+ return LN_FALSE;
+ }
+
+ // 2. test the flash address range
+ if (item_start + KV_ITEM_SIZE(k_len, v_len) > KV_BLK_END(blk_start)) {
+ return LN_FALSE;
+ }
+
+ if (item_start + KV_ITEM_SIZE(k_len, v_len) > KV_FLASH_END) {
+ return LN_FALSE;
+ }
+
+ return LN_TRUE;
+}
+
+__STATIC_INLINE__ int kv_item_body_verify(kv_item_t *item)
+{
+ return item->hdr.checksum == kv_checksum_crc8(item->body, item->hdr.k_len + item->hdr.v_len);
+}
+
+__STATIC_INLINE__ int kv_item_is_updated_one(kv_item_t *item)
+{
+ return item->hdr.prev_pos != 0 && item->pos != item->hdr.prev_pos;
+}
+
+static int kv_item_is_moved(kv_item_t *item)
+{
+ kv_err_t err;
+ int is_moved = LN_FALSE;
+ kv_item_hdr_t item_hdr;
+ uint8_t *body_backup = NULL;
+
+ // drag the header out of the flash
+ err = kv_item_hdr_read(item->pos, &item_hdr);
+ if (err != KV_ERR_NONE) {
+ return LN_FALSE;
+ }
+
+ // compare the header
+ if (memcmp(&item_hdr, &item->hdr, sizeof(kv_item_hdr_t)) != 0) {
+ return LN_TRUE;
+ }
+
+ // backup the body
+ body_backup = item->body;
+
+ // drag the body out of the flash
+ err = kv_item_body_read(item);
+ if (err != KV_ERR_NONE) {
+ return LN_FALSE;
+ }
+
+ // compare the body
+ if (memcmp(body_backup, item->body, item->hdr.k_len + item->hdr.v_len) != 0) {
+ is_moved = LN_TRUE;
+ }
+
+ ln_kv_free(item->body);
+ item->body = body_backup;
+
+ return is_moved;
+}
+
+static kv_err_t kv_item_do_gc(kv_item_t *item, const void *dummy)
+{
+ kv_err_t err;
+
+ err = kv_item_body_read(item);
+ if (err != KV_ERR_NONE) {
+ return err;
+ }
+
+ if (kv_item_write(KV_BLK_USABLE_ADDR(KV_MGR_WORKSPACE),
+ &item->hdr, item->body,
+ KV_ITEM_SIZE_OF_BODY(item)) != KV_ERR_NONE) {
+ return KV_ERR_FLASH_WRITE_FAILED;
+ }
+
+ // reduce the free_size
+ kv_blk_freesz_reduce(KV_MGR_WORKSPACE, KV_ITEM_SIZE_OF_ITEM(item));
+
+ return KV_ERR_NEXT_LOOP;
+}
+
+static kv_err_t kv_item_do_fetch_new_copy(kv_item_t *item, const void *the_item)
+{
+ kv_err_t err;
+ kv_item_t *dst_item;
+ uint8_t k_len, dst_k_len;
+ uint16_t v_len, dst_v_len;
+
+ dst_item = (kv_item_t *)the_item;
+ dst_k_len = dst_item->hdr.k_len;
+ dst_v_len = dst_item->hdr.v_len;
+
+ k_len = item->hdr.k_len;
+ v_len = item->hdr.v_len;
+
+ if (k_len != dst_k_len ||
+ v_len != dst_v_len) {
+ return KV_ERR_NEXT_LOOP;
+ }
+
+ err = kv_item_body_read(item);
+ if (err != KV_ERR_NONE) {
+ return err;
+ }
+
+ if (memcmp(item->body, dst_item->body, k_len + v_len) == 0) {
+ return KV_ERR_NONE;
+ }
+
+ return KV_ERR_NEXT_LOOP;
+}
+
+static kv_err_t kv_item_do_fetch(kv_item_t *item, const void *key)
+{
+ kv_err_t err;
+ uint8_t k_len;
+
+ k_len = item->hdr.k_len;
+
+ if (strlen((const char *)key) != k_len) {
+ return KV_ERR_NEXT_LOOP;
+ }
+
+ err = kv_item_body_read(item);
+ if (err != KV_ERR_NONE) {
+ return err;
+ }
+
+ if (memcmp(item->body, key, k_len) == 0) {
+ return KV_ERR_NONE;
+ }
+
+ return KV_ERR_NEXT_LOOP;
+}
+
+static kv_err_t kv_item_do_recovery(kv_item_t *item, const void *dummy)
+{
+ kv_err_t err;
+
+ err = kv_item_body_read(item);
+ if (err != KV_ERR_NONE) {
+ return err;
+ }
+
+ if (!kv_item_body_verify(item)) {
+ err = kv_item_delete(item);
+ } else if (kv_item_is_updated_one(item)) {
+ err = kv_item_try_delete(item);
+ }
+
+ if (err != KV_ERR_NONE) {
+ return err;
+ }
+
+ return KV_ERR_NEXT_LOOP;
+}
+
+static kv_err_t kv_item_walkthru(uint32_t blk_start,kv_item_walker_t walker,
+ const void *patten,
+ kv_item_t **item_out)
+{
+ kv_err_t err;
+ uint32_t cur_item;
+ kv_item_t *item;
+ kv_item_hdr_t *item_hdr;
+ int is_item_integral = LN_TRUE;
+
+ if (item_out) {
+ *item_out = NULL;
+ }
+
+ cur_item = KV_BLK_FIRST_ITEM(blk_start);
+
+ do {
+ is_item_integral = LN_TRUE;
+
+ item = (kv_item_t *)ln_kv_malloc(sizeof(kv_item_t));
+ if (!item) {
+ return KV_ERR_OUT_OF_MEMORY;
+ }
+
+ item->body = NULL;
+ item_hdr = &item->hdr;
+
+ // drag the item header out of the flash to see whether is a legal item
+ err = kv_item_hdr_read(cur_item, item_hdr);
+ if (err != KV_ERR_NONE) {
+ kv_item_free(item);
+ return err;
+ }
+
+ if (!KV_ITEM_IS_LEGAL(item_hdr)) {
+ if (KV_ITEM_IS_FRESH(item_hdr)) {
+ // situation 1, it's a fresh item slot, meet the ending
+ kv_item_free(item);
+ break;
+ }
+
+ // situation 2, meet power down, probably broken, just mark the item as discarded
+ is_item_integral = LN_FALSE;
+ }
+
+ if (!is_item_integral ||
+ !kv_item_hdr_verify(item_hdr, cur_item, blk_start)) {
+ // it's no integral item, or header verify illegal
+ if (kv_item_do_delete(cur_item) == KV_ERR_NONE) {
+ kv_blk_set_dirty(blk_start);
+ }
+
+ cur_item += KV_ITEM_HDR_SIZE;
+ kv_item_free(item);
+
+ continue;
+ }
+
+ if (!KV_ITEM_IS_DISCARDED(item_hdr)) {
+ // tell the item where he is, he does not know yet.
+ item->pos = cur_item;
+
+ err = walker(item, patten);
+ if (err == KV_ERR_NONE) {
+ if (item_out) {
+ *item_out = item;
+ }
+ return KV_ERR_NONE;
+ } else if (err != KV_ERR_NEXT_LOOP) {
+ kv_item_free(item);
+ return err;
+ }
+ } else {
+ // it's a discarded item, deleted before
+ kv_blk_set_dirty(blk_start);
+ }
+
+ cur_item += KV_ITEM_SIZE(item_hdr->k_len, item_hdr->v_len);
+ kv_item_free(item);
+ } while (cur_item + KV_ITEM_HDR_SIZE < KV_BLK_END(blk_start));
+
+ // have walked through all the items, get enough information to refresh the index(blk_info).
+ if (cur_item == KV_BLK_FIRST_ITEM(blk_start)) {
+ // come from fresh block break
+ kv_blk_set_fresh(blk_start);
+ } else if (cur_item + KV_ITEM_HDR_SIZE < KV_BLK_END(blk_start)) {
+ // come from while ending
+ kv_blk_freesz_set(blk_start, KV_BLK_END(blk_start) - cur_item);
+ kv_blk_set_inuse(blk_start);
+ } else {
+ // go across the boarder, means the space left is insufficient
+ kv_blk_freesz_set(blk_start, 0);
+ kv_blk_reset_inuse(blk_start);
+ }
+
+ return KV_ERR_NONE;
+}
+
+static kv_item_t *kv_item_do_find(uint32_t blk_start, const char *key)
+{
+ kv_item_t *the_item;
+
+ if (kv_item_walkthru(blk_start, kv_item_do_fetch, key, &the_item) == KV_ERR_NONE) {
+ return the_item;
+ }
+
+ return NULL;
+}
+
+static kv_item_t *kv_item_find(const char *key)
+{
+ uint32_t cur_blk;
+ kv_item_t *item;
+
+ KV_BLK_FOR_EACH(cur_blk) {
+ if (kv_blk_is_bad(cur_blk) ||
+ kv_blk_is_fresh(cur_blk)) {
+ continue;
+ }
+
+ item = kv_item_do_find(cur_blk, key);
+ if (item) {
+ return item;
+ }
+ }
+ return NULL;
+}
+
+static kv_item_t *kv_item_do_find_new_copy(uint32_t blk_start, kv_item_t *item)
+{
+ kv_item_t *the_item;
+
+ if (kv_item_walkthru(blk_start, kv_item_do_fetch_new_copy,
+ item, &the_item) == KV_ERR_NONE) {
+ return the_item;
+ }
+
+ return NULL;
+}
+
+static kv_item_t *kv_item_find_new_copy(kv_item_t *the_item)
+{
+ uint32_t cur_blk;
+ kv_item_t *item;
+
+ KV_BLK_FOR_EACH(cur_blk) {
+ if (kv_blk_is_bad(cur_blk) ||
+ kv_blk_is_fresh(cur_blk)) {
+ continue;
+ }
+
+ item = kv_item_do_find_new_copy(cur_blk, the_item);
+ if (item) {
+ return item;
+ }
+ }
+ return NULL;
+}
+
+static kv_err_t kv_item_do_save(uint32_t item_start, const char *k, const void *v, size_t v_len, uint32_t prev_pos)
+{
+ kv_err_t err;
+ uint8_t k_len;
+ uint32_t kv_len;
+ kv_item_hdr_t item_hdr;
+ uint8_t *kv_buf = NULL;
+
+ k_len = strlen(k);
+ kv_len = KV_ITEM_BODY_SIZE(k_len, v_len);
+
+ kv_buf = (uint8_t *)ln_kv_malloc(kv_len);
+ if (!kv_buf) {
+ return KV_ERR_OUT_OF_MEMORY;
+ }
+
+ memset(kv_buf, 0, kv_len);
+ memcpy(kv_buf, k, k_len);
+ memcpy(kv_buf + k_len, v, v_len);
+
+ item_hdr.magic = KV_ITEM_HDR_MAGIC;
+ item_hdr.checksum = kv_checksum_crc8(kv_buf, k_len + v_len);
+
+ item_hdr.k_len = k_len;
+ item_hdr.v_len = v_len;
+ item_hdr.prev_pos = prev_pos;
+
+ // we donnot deal with the discarded_flag here
+ err = kv_item_write(item_start, &item_hdr, kv_buf, kv_len);
+
+ ln_kv_free(kv_buf);
+
+ return err;
+}
+
+static int kv_item_value_is_match(kv_item_t *item, const void *value, size_t value_len)
+{
+ uint8_t k_len;
+ uint16_t v_len;
+
+ k_len = item->hdr.k_len;
+ v_len = item->hdr.v_len;
+
+ if (value_len != v_len) {
+ return LN_FALSE;
+ }
+
+ if (memcmp(item->body + k_len, value, v_len) != 0) {
+ return LN_FALSE;
+ }
+
+ return LN_TRUE;
+}
+
+static kv_err_t kv_item_fix(kv_item_t *item)
+{
+ kv_item_t *moved_item;
+
+ moved_item = kv_item_find_new_copy(item);
+ if (!moved_item) {
+ return KV_ERR_POS_FIX_FAILED;
+ }
+
+ item->pos = moved_item->pos;
+
+ kv_item_free(moved_item);
+
+ return KV_ERR_NONE;
+}
+
+static kv_err_t kv_item_save(const char *k, const void *v, size_t v_len, kv_item_t *prev_item)
+{
+ kv_err_t err;
+ uint32_t blk_start, k_len, item_size;
+
+ k_len = strlen(k);
+ item_size = KV_ITEM_SIZE(k_len, v_len);
+
+ blk_start = kv_blk_search_suitable(item_size);
+ if (blk_start == KV_BLK_INVALID) {
+ return KV_ERR_INSUFFICIENT_SPACE;
+ }
+
+ if (prev_item && kv_item_is_moved(prev_item)) {
+ err = kv_item_fix(prev_item);
+ if (err != KV_ERR_NONE) {
+ return err;
+ }
+ }
+
+ err = kv_item_do_save(KV_BLK_USABLE_ADDR(blk_start), k, v, v_len, prev_item ? prev_item->pos : 0);
+ if (err != KV_ERR_NONE) {
+ return err;
+ }
+
+ // reduce the free_size
+ kv_blk_freesz_reduce(blk_start, item_size);
+
+ if (kv_blk_is_fresh(blk_start)) {
+ kv_blk_reset_fresh(blk_start);
+
+ if (!kv_blk_is_full(blk_start)) {
+ kv_blk_set_inuse(blk_start);
+ }
+ } else if (kv_blk_is_full(blk_start)) {
+ kv_blk_reset_inuse(blk_start);
+ }
+
+ return KV_ERR_NONE;
+}
+
+static kv_err_t kv_item_update(kv_item_t *item, const char *key, const void *value, size_t value_len)
+{
+ kv_err_t err;
+
+ if (kv_item_value_is_match(item, value, value_len)) {
+ return KV_ERR_NONE;
+ }
+
+ /* save first, then delete, is trying best to keep data integrality. */
+
+ err = kv_item_save(key, value, value_len, item);
+ if (err != KV_ERR_NONE) {
+ return err;
+ }
+
+ return kv_item_delete(item);
+}
+
+static kv_err_t kv_param_verify(uint32_t flash_start, uint32_t flash_end, kv_flash_drv_t *flash_drv, kv_flash_prop_t *flash_prop)
+{
+ if (!flash_drv || !flash_prop) {
+ return KV_ERR_INVALID_PARAM;
+ }
+
+ if (!KV_IS_ALINGED_LOG2(flash_start, flash_prop->sector_size_log2)) {
+ return KV_ERR_INVALID_PARAM;
+ }
+
+ if (!KV_IS_ALINGED_LOG2(flash_end, flash_prop->sector_size_log2)) {
+ return KV_ERR_INVALID_PARAM;
+ }
+
+ return KV_ERR_NONE;
+}
+
+__STATIC_INLINE__ kv_err_t kv_mgr_index_build(uint32_t blk_start)
+{
+ return kv_item_walkthru(blk_start, kv_item_do_recovery, NULL, NULL);
+}
+
+static int kv_mgr_blk_index_rebuild(void)
+{
+ uint32_t cur_blk;
+ int is_rebuild_done = LN_FALSE;
+
+ KV_BLK_FOR_EACH(cur_blk) {
+ if (kv_blk_is_hanging(cur_blk)) {
+ if (kv_mgr_index_build(cur_blk) == KV_ERR_NONE) {
+ kv_blk_reset_hanging(cur_blk);
+ is_rebuild_done = LN_TRUE;
+ }
+ }
+ }
+
+ return is_rebuild_done;
+}
+
+static kv_err_t kv_mgr_workspace_locate(void)
+{
+ uint32_t cur_blk;
+
+ /* we give blocks with KV_BLK_FLAG_HANGING a chance to rebuild index */
+ if (KV_MGR_BLK_NUM_HANGING > 0) {
+ kv_mgr_blk_index_rebuild();
+ }
+
+ if (KV_NO_WRITEABLE_BLK()) {
+ return KV_ERR_NO_WRITEABLE_BLK;
+ }
+
+ KV_BLK_FOR_EACH(cur_blk) {
+ if (KV_MGR_BLK_NUM_INUSE == 0) {
+ if (kv_blk_is_fresh(cur_blk)) {
+ KV_MGR_WORKSPACE = cur_blk;
+ return KV_ERR_NONE;
+ }
+ } else if (kv_blk_is_inuse(cur_blk)) {
+ KV_MGR_WORKSPACE = cur_blk;
+ return KV_ERR_NONE;
+ }
+ }
+
+ return KV_ERR_NONE;
+}
+
+static void kv_mgr_ctl_build(void)
+{
+ uint32_t cur_blk;
+ kv_blk_hdr_t blk_hdr;
+
+ KV_BLK_FOR_EACH(cur_blk) {
+ if (kv_blk_hdr_read(cur_blk, &blk_hdr) != KV_ERR_NONE) {
+ // sth must be wrong seriously with this block
+ kv_blk_set_bad(cur_blk);
+ continue;
+ }
+
+ if (!KV_BLK_IS_LEGAL(&blk_hdr)) {
+ if (kv_blk_format(cur_blk) != KV_ERR_NONE) {
+ // sth must be wrong seriously with this block
+ kv_blk_set_bad(cur_blk);
+ }
+ // we get a fresh block
+ continue;
+ }
+
+ // do index building
+ if (kv_mgr_index_build(cur_blk) != KV_ERR_NONE) {
+ // sth goes wrong while index building, we give it a mark
+ kv_blk_set_hanging(cur_blk);
+ continue;
+ }
+ }
+}
+
+static kv_err_t kv_mgr_ctl_init(void)
+{
+ kv_blk_detail_t *blk_detail;
+
+ KV_MGR_BLK_NUM_TOTAL = KV_FLASH_SIZE / KV_FLASH_SECTOR_SIZE;
+
+ blk_detail = (kv_blk_detail_t *)ln_kv_malloc(sizeof(kv_blk_detail_t) * KV_MGR_BLK_NUM_TOTAL);
+ if (!blk_detail) {
+ return KV_ERR_OUT_OF_MEMORY;
+ }
+
+ memset(blk_detail, 0, sizeof(kv_blk_detail_t) * KV_MGR_BLK_NUM_TOTAL);
+ KV_MGR_BLK_DETAIL = blk_detail;
+
+#ifndef KV_CONFIG_OS_NONE
+ if (ln_kv_mutex_create(KV_MGR_LOCK) != LN_TRUE) {
+ return KV_ERR_INTERNAL_ERROR;
+ }
+#endif
+
+ return KV_ERR_NONE;
+}
+
+static void kv_mgr_ctl_deinit(void)
+{
+#ifndef KV_CONFIG_OS_NONE
+ ln_kv_mutex_delete(KV_MGR_LOCK);
+#endif
+ ln_kv_free(KV_MGR_BLK_DETAIL);
+ KV_MGR_BLK_DETAIL = NULL;
+
+ memset(&kv_ctl, 0, sizeof(kv_ctl));
+}
+
+static kv_err_t kv_do_gc(uint32_t dirty_blk)
+{
+ return kv_item_walkthru(dirty_blk, kv_item_do_gc, NULL, NULL);
+}
+
+static kv_err_t kv_gc(void)
+{
+ uint32_t cur_blk, workspace_backup;
+ int is_gc_done = LN_FALSE, is_rebuild_done = LN_FALSE;
+
+ /* we give blocks with KV_BLK_FLAG_HANGING a chance to rebuild index */
+ if (KV_MGR_BLK_NUM_HANGING > 0) {
+ is_rebuild_done = kv_mgr_blk_index_rebuild();
+ }
+
+ workspace_backup = KV_MGR_WORKSPACE;
+
+ // there must be at least one fresh block left, make workspace pointer to the fresh one
+ KV_MGR_WORKSPACE = kv_blk_next_fresh();
+
+ KV_BLK_FOR_EACH(cur_blk) {
+ if (kv_blk_is_dirty(cur_blk)) {
+ if (kv_do_gc(cur_blk) != KV_ERR_NONE) {
+ // cannot do gc for this block, give others a try
+ continue;
+ }
+
+ kv_blk_reset_inuse(cur_blk);
+
+ if (kv_blk_format(cur_blk) != KV_ERR_NONE) {
+ kv_blk_set_bad(cur_blk);
+ }
+
+ kv_blk_reset_fresh(KV_MGR_WORKSPACE);
+
+ if (!kv_blk_is_full(KV_MGR_WORKSPACE)) {
+ kv_blk_set_inuse(KV_MGR_WORKSPACE);
+ }
+
+ is_gc_done = LN_TRUE;
+
+ break;
+ }
+ }
+
+ if (!is_gc_done) {
+ // if do nothing, should restore the workspace;
+ KV_MGR_WORKSPACE = workspace_backup;
+ }
+
+ return (is_gc_done || is_rebuild_done) ? KV_ERR_NONE : KV_ERR_GC_NOTHING;
+}
+
+kv_err_t ln_kv_init(uint32_t flash_start, uint32_t flash_end, kv_flash_drv_t *flash_drv, kv_flash_prop_t *flash_prop)
+{
+ kv_err_t err;
+
+ if (kv_param_verify(flash_start, flash_end, flash_drv, flash_prop) != KV_ERR_NONE) {
+ return KV_ERR_INVALID_PARAM;
+ }
+
+ memset(&kv_ctl, 0, sizeof(kv_ctl));
+
+ kv_flash_ctl_init(flash_start, flash_end, flash_drv, flash_prop);
+
+ err = kv_mgr_ctl_init();
+ if (err != KV_ERR_NONE) {
+ return err;
+ }
+
+ kv_mgr_ctl_build();
+
+ return kv_mgr_workspace_locate();
+}
+
+kv_err_t ln_kv_deinit(void)
+{
+ kv_mgr_ctl_deinit();
+ return KV_ERR_NONE;
+}
+
+kv_err_t ln_kv_set(const char *key, const void *value, size_t value_len)
+{
+ kv_err_t err;
+ kv_item_t *item;
+
+ if (!key || !value) {
+ return KV_ERR_INVALID_PARAM;
+ }
+
+ if (strlen(key) >= (uint8_t)-1 ||
+ value_len >= (uint16_t)-1) {
+ return KV_ERR_SIZE_EXCEEDED;
+ }
+
+ kv_lock();
+
+ item = kv_item_find(key);
+ if (item) { // already exist
+ err = kv_item_update(item, key, value, value_len);
+ kv_item_free(item);
+ } else {
+ err = kv_item_save(key, value, value_len, NULL);
+ }
+
+ kv_unlock();
+
+ return err;
+}
+
+kv_err_t ln_kv_get(const char *key, void *value_buf, size_t value_buf_size, size_t *value_len)
+{
+ uint8_t k_len;
+ uint16_t v_len;
+ kv_item_t *item;
+
+ if (!key || !value_buf || !value_len) {
+ return KV_ERR_INVALID_PARAM;
+ }
+
+ if (strlen(key) >= (uint8_t)-1) {
+ return KV_ERR_SIZE_EXCEEDED;
+ }
+
+ kv_lock();
+
+ item = kv_item_find(key);
+ if (!item) {
+ kv_unlock();
+ return KV_ERR_NOT_EXIST;
+ }
+
+ kv_unlock();
+
+ k_len = item->hdr.k_len;
+ v_len = item->hdr.v_len;
+ *value_len = v_len;
+
+ if (value_buf_size < v_len) {
+ kv_item_free(item);
+ return KV_ERR_BUF_TOO_SHORT;
+ }
+
+ memcpy(value_buf, item->body + k_len, v_len);
+ kv_item_free(item);
+
+ return KV_ERR_NONE;
+}
+
+int ln_kv_has_key(const char *key)
+{
+ int has_key;
+
+ if (!key) {
+ return KV_ERR_INVALID_PARAM;
+ }
+
+ if (strlen(key) >= (uint8_t)-1) {
+ return KV_ERR_SIZE_EXCEEDED;
+ }
+
+ kv_lock();
+ has_key = kv_item_find(key) ? LN_TRUE : LN_FALSE;
+ kv_unlock();
+
+ return has_key;
+}
+
+kv_err_t ln_kv_del(const char *key)
+{
+ kv_err_t err;
+ kv_item_t *item;
+
+ if (!key) {
+ return KV_ERR_INVALID_PARAM;
+ }
+
+ if (strlen(key) >= (uint8_t)-1) {
+ return KV_ERR_SIZE_EXCEEDED;
+ }
+
+ kv_lock();
+
+ item = kv_item_find(key);
+ if (!item) {
+ kv_unlock();
+ return KV_ERR_NOT_EXIST;
+ }
+
+ err = kv_item_delete(item);
+ kv_item_free(item);
+
+ kv_unlock();
+
+ return err;
+}
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv.h b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv.h
new file mode 100644
index 0000000000000000000000000000000000000000..59119408778ce178499bd97b7f3347eaf1bb987d
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv.h
@@ -0,0 +1,291 @@
+#ifndef __LN_KV_H__
+#define __LN_KV_H__
+
+#include "ln_compiler.h"
+#include "ln_types.h"
+#include "ln_kv_err.h"
+#include "ln_kv_flash.h"
+#include "ln_kv_port.h"
+#include "ln_kv_api.h"
+
+typedef uint64_t kv_wunit_t;
+
+typedef uint8_t kv_byte_t; // byte
+typedef uint16_t kv_hword_t; // half word
+typedef uint32_t kv_word_t; // word
+typedef uint64_t kv_dword_t; // double word
+
+#define KV_BLK_FLAG_FRESH 0x01 /* a totally virgin block */
+#define KV_BLK_FLAG_INUSE 0x02 /* in-use */
+#define KV_BLK_FLAG_DIRTY 0x04 /* has discarded item inside */
+#define KV_BLK_FLAG_BAD 0x08 /* bad block, maybe device error */
+#define KV_BLK_FLAG_HANGING 0x10 /* index building failed, we mark a hanging flag here, and will give another chance to do a retry */
+
+#define KV_FLASH_START (kv_ctl.flash_ctl.flash_start)
+#define KV_FLASH_END (kv_ctl.flash_ctl.flash_end)
+#define KV_FLASH_SIZE (KV_FLASH_END - KV_FLASH_START)
+#define KV_FLASH_SECTOR_SIZE_LOG2 (kv_ctl.flash_ctl.sector_size_log2)
+#define KV_FLASH_SECTOR_SIZE (1 << KV_FLASH_SECTOR_SIZE_LOG2)
+#define KV_FLASH_WRITE_ALIGN (kv_ctl.flash_ctl.flash_write_align)
+
+#define KV_FLASH_WRITE ((kv_flash_write_t)(kv_ctl.flash_ctl.flash_drv.write))
+#define KV_FLASH_READ ((kv_flash_read_t)(kv_ctl.flash_ctl.flash_drv.read))
+#define KV_FLASH_ERASE ((kv_flash_erase_t)(kv_ctl.flash_ctl.flash_drv.erase))
+
+#define KV_IS_ALINGED(v, align) ((v) % (align) == 0)
+#define KV_IS_ALINGED_LOG2(v, align_log2) KV_IS_ALINGED(v, (1 << (align_log2)))
+#define KV_ALIGN_UP(v, align) (((v) + ((align) - 1)) & ~((align) - 1))
+#define KV_ALIGN_DOWN(v, align) ((v) - ((v) & ((align) - 1)))
+#define KV_OFFSET_OF_FIELD(type, field) ((uint32_t)&(((type *)0)->field))
+#define KV_ADDR_OF_FIELD(addr, type, field) (addr + KV_OFFSET_OF_FIELD(type, field))
+
+#define KV_ALIGNED_SIZE(len) KV_ALIGN_UP(len, KV_FLASH_WRITE_ALIGN)
+
+#ifndef KV_CONFIG_OS_NONE
+ #define KV_MGR_LOCK (&kv_ctl.mgr_ctl.kv_lock)
+#endif
+#define KV_MGR_BLK_NUM_FRESH (kv_ctl.mgr_ctl.blk_info.num_fresh)
+#define KV_MGR_BLK_NUM_INUSE (kv_ctl.mgr_ctl.blk_info.num_inuse)
+#define KV_MGR_BLK_NUM_HANGING (kv_ctl.mgr_ctl.blk_info.num_hanging)
+#define KV_MGR_BLK_NUM_TOTAL (kv_ctl.mgr_ctl.blk_info.num_total)
+#define KV_MGR_BLK_DETAIL (kv_ctl.mgr_ctl.blk_info.blk_detail)
+#define KV_MGR_WORKSPACE (kv_ctl.mgr_ctl.workspace)
+
+#define KV_NO_WRITEABLE_BLK() (KV_MGR_BLK_NUM_INUSE == 0 && KV_MGR_BLK_NUM_FRESH == 0)
+
+#define KV_ITEM_HDR_MAGIC 0xABCD1234DCBA4321
+#define KV_ITEM_DISCARDED 0x0F0F0F0F0F0F0F0F
+#define KV_ITEM_IS_DISCARDED(item_hdr) ((item_hdr)->discarded_flag == KV_ITEM_DISCARDED)
+#define KV_ITEM_IS_LEGAL(item_hdr) ((item_hdr)->magic == KV_ITEM_HDR_MAGIC)
+#define KV_ITEM_IS_FRESH(item_hdr) ((item_hdr)->magic == (kv_wunit_t)-1 && \
+ (item_hdr)->discarded_flag == (kv_wunit_t)-1 && \
+ (item_hdr)->checksum == (uint8_t)-1 && \
+ (item_hdr)->k_len == (uint8_t)-1 && \
+ (item_hdr)->v_len == (uint16_t)-1 && \
+ (item_hdr)->prev_pos == (uint32_t)-1)
+
+#define KV_ITEM_ADDR2BLK(item_start) (KV_ALIGN_DOWN((item_start) - KV_FLASH_START, KV_BLK_SIZE) + KV_FLASH_START)
+#define KV_ITEM_HDR_SIZE KV_ALIGNED_SIZE(sizeof(kv_item_hdr_t))
+#define KV_ITEM_BODY_SIZE(k_len, v_len) KV_ALIGNED_SIZE(k_len + v_len)
+#define KV_ITEM_SIZE(k_len, v_len) (KV_ITEM_HDR_SIZE + KV_ITEM_BODY_SIZE(k_len, v_len))
+#define KV_ITEM_SIZE_OF_ITEM(item) KV_ITEM_SIZE(item->hdr.k_len, item->hdr.v_len)
+#define KV_ITEM_SIZE_OF_BODY(item) KV_ITEM_BODY_SIZE(item->hdr.k_len, item->hdr.v_len)
+#define KV_ITEM_ADDR_OF_BODY(item) (item->pos + KV_ITEM_HDR_SIZE)
+
+#define KV_BLK_HDR_MAGIC 0x1234ABCD4321DCBA
+#define KV_BLK_IS_LEGAL(blk_hdr) ((blk_hdr)->magic == KV_BLK_HDR_MAGIC)
+#define KV_BLK_INVALID ((uint32_t)-1)
+#define KV_BLK_HDR_SIZE KV_ALIGNED_SIZE(sizeof(kv_blk_hdr_t))
+#define KV_BLK_SIZE (KV_FLASH_SECTOR_SIZE)
+#define KV_BLK_FRESH_SIZE (KV_BLK_SIZE - KV_BLK_HDR_SIZE)
+#define KV_BLK_END(blk_start) (blk_start + KV_BLK_SIZE)
+#define KV_BLK_USABLE_ADDR(blk_start) (KV_BLK_END(blk_start) - kv_blk_freesz_get(blk_start))
+#define KV_BLK_ADDR2IDX(blk_start) ((blk_start - KV_FLASH_START) / KV_BLK_SIZE)
+#define KV_BLK_FIRST_ITEM(blk_start) (blk_start + KV_BLK_HDR_SIZE)
+#define KV_BLK_NEXT(blk_start) (blk_start + KV_BLK_SIZE >= KV_FLASH_END ? KV_FLASH_START : blk_start + KV_BLK_SIZE)
+
+#define KV_BLK_FOR_EACH_FROM(cur_blk, start_blk) \
+ for (cur_blk = KV_BLK_NEXT(start_blk); \
+ cur_blk != start_blk; \
+ cur_blk = KV_BLK_NEXT(cur_blk))
+
+#define KV_BLK_FOR_EACH(cur_blk) \
+ for (cur_blk = KV_FLASH_START; \
+ cur_blk < KV_FLASH_END; \
+ cur_blk += KV_BLK_SIZE)
+
+typedef struct kv_flash_control_st {
+ uint8_t sector_size_log2;
+ uint8_t flash_write_align;
+ uint32_t flash_start;
+ uint32_t flash_end;
+
+ kv_flash_drv_t flash_drv;
+} kv_flash_ctl_t;
+
+typedef struct kv_blk_detail_st {
+ uint8_t blk_flags; /*< flags indicating the status of the blk, see KV_BLK_FLAG_* */
+ uint32_t free_size; /*< how many usable flash left */
+} kv_blk_detail_t;
+
+typedef struct kv_blk_info_st {
+ uint16_t num_inuse;
+ uint16_t num_fresh;
+ uint16_t num_hanging;
+ uint16_t num_total;
+
+ kv_blk_detail_t *blk_detail;
+} kv_blk_info_t;
+
+typedef struct kv_manager_control_st {
+ uint32_t workspace;
+ kv_blk_info_t blk_info;
+
+#ifndef KV_CONFIG_OS_NONE
+ kv_mutex_t kv_lock;
+#endif
+} kv_mgr_ctl_t;
+
+typedef struct kv_control_st {
+ kv_flash_ctl_t flash_ctl;
+ kv_mgr_ctl_t mgr_ctl;
+} kv_ctl_t;
+
+typedef struct kv_block_header_st {
+ kv_wunit_t magic; /*< is this block formatted? */
+} __PACKED__ kv_blk_hdr_t;
+
+typedef struct kv_item_header_st {
+ kv_wunit_t discarded_flag; /*< is this item a discarded one, deleted or updated */
+ kv_wunit_t magic; /*< for item header integrity verification */
+ uint8_t checksum; /*< checksum for key/value buffer */
+ uint8_t k_len; /*< key length */
+ uint16_t v_len; /*< value length */
+ uint32_t prev_pos; /*< previous position of this item */
+} __PACKED__ kv_item_hdr_t;
+
+typedef struct kv_item_st {
+ kv_item_hdr_t hdr; /*< item header */
+ uint32_t pos; /*< where this item is */
+ uint8_t *body; /*< item body: key/value buffer */
+} kv_item_t;
+
+static kv_ctl_t kv_ctl;
+
+__STATIC_INLINE__ void kv_blk_freesz_set(uint32_t blk_start, uint32_t free_size)
+{
+ KV_MGR_BLK_DETAIL[KV_BLK_ADDR2IDX(blk_start)].free_size = free_size;
+}
+
+__STATIC_INLINE__ uint32_t kv_blk_freesz_get(uint32_t blk_start)
+{
+ return KV_MGR_BLK_DETAIL[KV_BLK_ADDR2IDX(blk_start)].free_size;
+}
+
+__STATIC_INLINE__ void kv_blk_freesz_reduce(uint32_t blk_start, uint32_t size_reduced)
+{
+ kv_blk_freesz_set(blk_start, kv_blk_freesz_get(blk_start) - size_reduced);
+}
+
+__STATIC_INLINE__ int kv_blk_is_full(uint32_t blk_start)
+{
+ return kv_blk_freesz_get(blk_start) <= KV_ITEM_HDR_SIZE;
+}
+
+__STATIC_INLINE__ void kv_blk_flags_set(uint32_t blk_start, uint8_t blk_flags)
+{
+ KV_MGR_BLK_DETAIL[KV_BLK_ADDR2IDX(blk_start)].blk_flags = blk_flags;
+}
+
+__STATIC_INLINE__ uint8_t kv_blk_flags_get(uint32_t blk_start)
+{
+ return KV_MGR_BLK_DETAIL[KV_BLK_ADDR2IDX(blk_start)].blk_flags;
+}
+
+__STATIC_INLINE__ void kv_blk_flags_add(uint32_t blk_start, uint8_t blk_flags)
+{
+ KV_MGR_BLK_DETAIL[KV_BLK_ADDR2IDX(blk_start)].blk_flags |= blk_flags;
+}
+
+__STATIC_INLINE__ void kv_blk_flags_rmv(uint32_t blk_start, uint8_t blk_flags)
+{
+ KV_MGR_BLK_DETAIL[KV_BLK_ADDR2IDX(blk_start)].blk_flags &= ~blk_flags;
+}
+
+__STATIC_INLINE__ int kv_blk_is_fresh(uint32_t blk_start)
+{
+ return kv_blk_flags_get(blk_start) & KV_BLK_FLAG_FRESH;
+}
+
+__STATIC_INLINE__ int kv_blk_is_inuse(uint32_t blk_start)
+{
+ return kv_blk_flags_get(blk_start) & KV_BLK_FLAG_INUSE;
+}
+
+__STATIC_INLINE__ int kv_blk_is_dirty(uint32_t blk_start)
+{
+ return kv_blk_flags_get(blk_start) & KV_BLK_FLAG_DIRTY;
+}
+
+__STATIC_INLINE__ int kv_blk_is_bad(uint32_t blk_start)
+{
+ return kv_blk_flags_get(blk_start) & KV_BLK_FLAG_BAD;
+}
+
+__STATIC_INLINE__ int kv_blk_is_hanging(uint32_t blk_start)
+{
+ return kv_blk_flags_get(blk_start) & KV_BLK_FLAG_HANGING;
+}
+
+__STATIC_INLINE__ void kv_blk_set_fresh(uint32_t blk_start)
+{
+ if (!kv_blk_is_fresh(blk_start)) {
+ ++KV_MGR_BLK_NUM_FRESH;
+ }
+
+ kv_blk_freesz_set(blk_start, KV_BLK_FRESH_SIZE);
+ kv_blk_flags_set(blk_start, KV_BLK_FLAG_FRESH);
+}
+
+__STATIC_INLINE__ void kv_blk_set_inuse(uint32_t blk_start)
+{
+ if (!kv_blk_is_inuse(blk_start)) {
+ ++KV_MGR_BLK_NUM_INUSE;
+ }
+
+ kv_blk_flags_add(blk_start, KV_BLK_FLAG_INUSE);
+}
+
+__STATIC_INLINE__ void kv_blk_set_dirty(uint32_t blk_start)
+{
+ kv_blk_flags_add(blk_start, KV_BLK_FLAG_DIRTY);
+}
+
+__STATIC_INLINE__ void kv_blk_set_bad(uint32_t blk_start)
+{
+ kv_blk_flags_set(blk_start, KV_BLK_FLAG_BAD);
+}
+
+__STATIC_INLINE__ void kv_blk_set_hanging(uint32_t blk_start)
+{
+ if (!kv_blk_is_hanging(blk_start)) {
+ ++KV_MGR_BLK_NUM_HANGING;
+ }
+
+ kv_blk_flags_add(blk_start, KV_BLK_FLAG_HANGING);
+}
+
+__STATIC_INLINE__ void kv_blk_reset_fresh(uint32_t blk_start)
+{
+ if (kv_blk_is_fresh(blk_start)) {
+ --KV_MGR_BLK_NUM_FRESH;
+ }
+
+ kv_blk_flags_rmv(blk_start, KV_BLK_FLAG_FRESH);
+}
+
+__STATIC_INLINE__ void kv_blk_reset_inuse(uint32_t blk_start)
+{
+ if (kv_blk_is_inuse(blk_start)) {
+ --KV_MGR_BLK_NUM_INUSE;
+ }
+
+ kv_blk_flags_rmv(blk_start, KV_BLK_FLAG_INUSE);
+}
+
+__STATIC_INLINE__ void kv_blk_reset_hanging(uint32_t blk_start)
+{
+ if (kv_blk_is_hanging(blk_start)) {
+ --KV_MGR_BLK_NUM_HANGING;
+ }
+
+ kv_blk_flags_rmv(blk_start, KV_BLK_FLAG_HANGING);
+}
+
+typedef kv_err_t (*kv_item_walker_t)(kv_item_t *item, const void *patten);
+
+kv_err_t ln_kv_init(uint32_t flash_start, uint32_t flash_end, kv_flash_drv_t *flash_drv, kv_flash_prop_t *flash_prop);
+
+
+#endif /* __LN_KV_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv_api.h b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv_api.h
new file mode 100644
index 0000000000000000000000000000000000000000..be0c08f5e3d20d10cdf91f0b8d02aea3793379a6
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv_api.h
@@ -0,0 +1,16 @@
+#ifndef __LN_KV_API_H__
+#define __LN_KV_API_H__
+
+#include "ln_types.h"
+#include "ln_kv_err.h"
+#include "ln_kv_api.h"
+
+kv_err_t ln_kv_port_init(uint32_t flash_start, uint32_t flash_end);
+kv_err_t ln_kv_deinit(void);
+kv_err_t ln_kv_set(const char *key, const void *value, size_t v_len);
+kv_err_t ln_kv_get(const char *key, void *value_buf, size_t value_buf_size, size_t *v_len);
+int ln_kv_has_key(const char *key);
+kv_err_t ln_kv_del(const char *key);
+
+#endif /* __LN_KV_API_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv_err.h b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv_err.h
new file mode 100644
index 0000000000000000000000000000000000000000..3a892140d2d2a608808144376431ca9cf30608af
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv_err.h
@@ -0,0 +1,36 @@
+#ifndef __LN_KV_ERR_H__
+#define __LN_KV_ERR_H__
+
+typedef enum kv_err_en {
+ KV_ERR_NONE = 0u,
+
+ KV_ERR_BUF_TOO_SHORT = 10u,
+ KV_ERR_BLK_STATUS_ERROR,
+
+ KV_ERR_DATA_FETCH_FAILED = 20u,
+
+ KV_ERR_FLASH_ERASE_FAILED = 30u,
+ KV_ERR_FLASH_READ_FAILED,
+ KV_ERR_FLASH_WRITE_FAILED,
+
+ KV_ERR_GC_NOTHING = 40u,
+
+ KV_ERR_INTERNAL_ERROR = 50u,
+ KV_ERR_INSUFFICIENT_SPACE,
+ KV_ERR_INVALID_PARAM,
+ KV_ERR_INVALID_ITEM,
+
+ KV_ERR_NEXT_LOOP = 60u,
+ KV_ERR_NOT_EXIST,
+ KV_ERR_NO_WRITEABLE_BLK,
+
+ KV_ERR_OUT_OF_MEMORY = 70u,
+
+ KV_ERR_POS_FIX_FAILED =80u,
+
+ KV_ERR_SIZE_EXCEEDED = 90u,
+} kv_err_t;
+
+
+#endif /* __LN_KV_ERR_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv_flash.h b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv_flash.h
new file mode 100644
index 0000000000000000000000000000000000000000..13184bd2559f36db33b2fbefee7684a951988717
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv/ln_kv_flash.h
@@ -0,0 +1,21 @@
+#ifndef __LN_KV_FLASH_H__
+#define __LN_KV_FLASH_H__
+
+#include "ln_types.h"
+
+typedef int (*kv_flash_write_t)(uint32_t addr, const void *buf, size_t len);
+typedef int (*kv_flash_read_t)(uint32_t addr, void *buf, size_t len);
+typedef int (*kv_flash_erase_t)(uint32_t addr, size_t len);
+
+typedef struct kv_flash_drv_st {
+ kv_flash_write_t write;
+ kv_flash_read_t read;
+ kv_flash_erase_t erase;
+} kv_flash_drv_t;
+
+typedef struct kv_flash_property_st {
+ uint8_t sector_size_log2;
+} kv_flash_prop_t;
+
+#endif /* __LN_KV_FLASH_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv_port/ln_kv_port.c b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv_port/ln_kv_port.c
new file mode 100644
index 0000000000000000000000000000000000000000..0c2cb38fa0691372e6faec687a27d727f6248567
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv_port/ln_kv_port.c
@@ -0,0 +1,37 @@
+#include "ln_kv_port.h"
+#include "ln_kv_flash.h"
+#include "ln_kv.h"
+#include "hal/flash.h"
+
+
+static kv_flash_drv_t flash_drv;
+static kv_flash_prop_t flash_prop;
+
+static int flash_read(uint32_t offset, void *buf, uint32_t len)
+{
+ return FLASH_Read(offset, len, buf);
+}
+
+static int flash_write(uint32_t offset, const void *buf, uint32_t len)
+{
+ return FLASH_Program(offset, len, (uint8_t*)buf);
+}
+
+static int flash_erase(uint32_t offset, uint32_t len)
+{
+ FLASH_Erase(offset, len);
+ return 0;
+}
+
+kv_err_t ln_kv_port_init(uint32_t flash_start, uint32_t flash_end)
+{
+ flash_drv.read = flash_read;
+ flash_drv.write = flash_write;
+ flash_drv.erase = flash_erase;
+
+ flash_prop.sector_size_log2 = KV_CONFIG_FLASH_SECT_SIZE_LOG2;
+
+ return ln_kv_init(flash_start, flash_end, &flash_drv, &flash_prop);
+}
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv_port/ln_kv_port.h b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv_port/ln_kv_port.h
new file mode 100644
index 0000000000000000000000000000000000000000..8f317f6f16a9bed49cfb6e9e8c01110384a06164
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/kv/kv_port/ln_kv_port.h
@@ -0,0 +1,80 @@
+#ifndef __LN_KV_PORT_H__
+#define __LN_KV_PORT_H__
+
+#include "proj_config.h"
+#include "ln_types.h"
+#include "ln_kv_err.h"
+#include "ln_compiler.h"
+#include "mem_map_ln882x.h"
+
+
+#ifndef __CONFIG_OS_KERNEL
+ #define KV_CONFIG_OS_NONE
+#endif
+#define KV_CONFIG_FLASH_SECT_SIZE_LOG2 (12)
+
+
+#if defined(KV_CONFIG_OS_NONE)
+ #include "stdlib.h"
+
+ __STATIC_INLINE__ void *ln_kv_malloc(size_t size)
+ {
+ return malloc(size);
+ }
+
+ __STATIC_INLINE__ void ln_kv_free(void *ptr)
+ {
+ free(ptr);
+ }
+
+#else /* KV_CONFIG_OS_NONE */
+ #include "osal/osal.h"
+
+ typedef OS_Mutex_t kv_mutex_t;
+
+ __STATIC_INLINE__ int ln_kv_is_os_running(void)
+ {
+ if (OS_ThreadIsSchedulerRunning()){
+ return LN_TRUE;
+ }
+ return LN_FALSE;
+ }
+
+ __STATIC_INLINE__ int ln_kv_mutex_create(kv_mutex_t *mutex)
+ {
+ if (OS_OK == OS_MutexCreate(mutex)) {
+ return LN_TRUE;
+ }
+ return LN_FALSE;
+ }
+
+ __STATIC_INLINE__ void ln_kv_mutex_delete(kv_mutex_t *mutex)
+ {
+ OS_MutexDelete(mutex);
+ }
+
+ __STATIC_INLINE__ void ln_kv_mutex_lock(kv_mutex_t *mutex)
+ {
+ OS_MutexLock(mutex, OS_WAIT_FOREVER);
+ }
+
+ __STATIC_INLINE__ void ln_kv_mutex_unlock(kv_mutex_t *mutex)
+ {
+ OS_MutexUnlock(mutex);
+ }
+
+ __STATIC_INLINE__ void *ln_kv_malloc(size_t size)
+ {
+ return OS_Malloc(size);
+ }
+
+ __STATIC_INLINE__ void ln_kv_free(void *ptr)
+ {
+ OS_Free(ptr);
+ }
+#endif /* KV_CONFIG_OS_NONE */
+
+
+
+#endif /* __LN_KV_PORT_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/nvds/nvds.c b/platform/vendor_bsp/LN/ln882x/src/fs/nvds/nvds.c
similarity index 99%
rename from platform/vendor_bsp/LN/ln882x/src/nvds/nvds.c
rename to platform/vendor_bsp/LN/ln882x/src/fs/nvds/nvds.c
index 8e83545d3523cef50965d49d85d0608457bb7939..c0a1a06265f63e04c33896ddf378045f91c843d3 100644
--- a/platform/vendor_bsp/LN/ln882x/src/nvds/nvds.c
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/nvds/nvds.c
@@ -1,4 +1,4 @@
-#include "nvds/nvds.h"
+#include "nvds.h"
#include "hal/flash.h"
diff --git a/platform/vendor_bsp/LN/ln882x/include/nvds/nvds.h b/platform/vendor_bsp/LN/ln882x/src/fs/nvds/nvds.h
similarity index 94%
rename from platform/vendor_bsp/LN/ln882x/include/nvds/nvds.h
rename to platform/vendor_bsp/LN/ln882x/src/fs/nvds/nvds.h
index b9030c5bcf0b281a97d1b7a71bde4a709e99f157..515f5fc2b7404c6e6c6e0f2032509fb7a93a45ad 100644
--- a/platform/vendor_bsp/LN/ln882x/include/nvds/nvds.h
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/nvds/nvds.h
@@ -2,8 +2,9 @@
#define __NVDS_H__
#include "ln88xx.h"
+#include "flash_partition_table.h"
-#define USR_NVDS_SECT1_OFFSET (USR_NVDS_PARAM_OFFSET)
+#define USR_NVDS_SECT1_OFFSET (NVDS_SPACE_OFFSET)
#define USR_NVDS_SECT2_OFFSET (USR_NVDS_SECT1_OFFSET + SIZE_4KB)
#define USR_NVDS_FLAG_OFFSET (USR_NVDS_SECT2_OFFSET + SIZE_4KB)
diff --git a/platform/vendor_bsp/LN/ln882x/src/fs/partition_mgr/flash_partition_mgr.c b/platform/vendor_bsp/LN/ln882x/src/fs/partition_mgr/flash_partition_mgr.c
new file mode 100644
index 0000000000000000000000000000000000000000..56068cfd3f35c2f7e627bedae6b6e786f98874e0
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/partition_mgr/flash_partition_mgr.c
@@ -0,0 +1,61 @@
+#include "flash_partition_mgr.h"
+
+#include "hal/flash.h"
+#include "utils/crc32.h"
+
+
+int ln_verify_partition_table(void)
+{
+ partition_info_t rd_info;
+
+ for (uint32_t i = 0; i < PARTITION_TAB_SIZE; i += sizeof(partition_info_t))
+ {
+ FLASH_Read((PARTITION_TAB_BASE + i), sizeof(partition_info_t), (uint8_t *)&rd_info);
+
+ if ((rd_info.type == 0) && \
+ (rd_info.start_addr == 0) && \
+ (rd_info.size == 0) && \
+ (rd_info.crc32 == 0))
+ {
+ return LN_TRUE;
+ }
+ else
+ {
+ if (rd_info.crc32 != ln_crc32_signle_cal((uint8_t *)&rd_info, sizeof(partition_info_t) - sizeof(uint32_t))) {
+ return LN_FALSE;
+ }
+ }
+ }
+ return LN_FALSE;
+}
+
+int ln_fetch_partition_info(partition_type_t type, partition_info_t *info)
+{
+ if (!info) {
+ return LN_FALSE;
+ }
+
+ for (uint32_t i = 0; i < PARTITION_TAB_SIZE; i += sizeof(partition_info_t))
+ {
+ FLASH_Read((PARTITION_TAB_BASE + i), sizeof(partition_info_t), (uint8_t *)info);
+
+ if (info->type == type)
+ {
+ if (info->crc32 == ln_crc32_signle_cal((uint8_t *)info, sizeof(partition_info_t) - sizeof(uint32_t))) {
+ return LN_TRUE;
+ } else {
+ return LN_FALSE;
+ }
+ }
+ else if ((info->type == 0) && \
+ (info->start_addr == 0) && \
+ (info->size == 0) && \
+ (info->crc32 == 0))
+ {
+ return LN_FALSE;
+ }
+ }
+ return LN_FALSE;
+}
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/fs/partition_mgr/flash_partition_mgr.h b/platform/vendor_bsp/LN/ln882x/src/fs/partition_mgr/flash_partition_mgr.h
new file mode 100644
index 0000000000000000000000000000000000000000..de37b4d9894294a516a3fe3e5439faabf815b3c3
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/fs/partition_mgr/flash_partition_mgr.h
@@ -0,0 +1,58 @@
+#ifndef __FLASH_PARTITION_MGR_H__
+#define __FLASH_PARTITION_MGR_H__
+#include "ln_types.h"
+
+
+#define PARTITION_TAB_BASE (1024*36)/* < Warning: Do not change it! */
+#define PARTITION_TAB_SIZE (1024*4) /* < Warning: Do not change it! */
+
+typedef enum {
+ PARTITION_TYPE_APP = 0u, /*< application */
+ PARTITION_TYPE_OTA = 1u, /*< ota temp*/
+ PARTITION_TYPE_KV = 2u, /*< Key-Value */
+ PARTITION_TYPE_NVDS = 3u, /*< nvds(NVRAM) */
+ PARTITION_TYPE_SIMU_EEPROM = 4u, /*< simulation eeprom*/
+ PARTITION_TYPE_USER = 5u, /*< user defined */
+ PARTITION_TYPE_PLACE = 0x12345678, /*< make different IDEs compatible */
+} partition_type_t;
+
+typedef struct {
+ partition_type_t type; /*< what's the type of partition */
+ uint32_t start_addr; /*< start address */
+ uint32_t size; /*< partition size */
+ uint32_t crc32; /*< checksum of the partition info except itself */
+} partition_info_t;
+
+
+/**
+ * @brief Verify partition table.
+ * verify the main partition table of flash.
+ *
+ * @attention None
+ *
+ * @return whether the verification is successful.
+ * @retval #LN_TRUE successful.
+ * @retval #LN_FALSE failed.
+ */
+int ln_verify_partition_table(void);
+
+/**
+ * @brief fetch partition info.
+ * Fetch partition information for a specified type partition.
+ *
+ * @attention None
+ *
+ * @param[in] type types indicating the type of the partition entity, see PARTITION_TYPE_*.
+ * @param[out] info pointer to a partition info struct.
+ *
+ * @return Whether to fetch info successfully.
+ * @retval #LN_TRUE successful.
+ * @retval #LN_FALSE failed.
+ */
+int ln_fetch_partition_info(partition_type_t type, partition_info_t * info);
+
+
+
+#endif /* __FLASH_PARTITION_MGR_H__ */
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_common.c b/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_common.c
index 50f4cee7cacac7cc10e0ef2271aff75bb906a670..782720f8b6d4a5239060b91dba2210ea41043a67 100644
--- a/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_common.c
+++ b/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_common.c
@@ -8,10 +8,14 @@
#include "ln88xx.h"
#ifdef __CC_ARM
- extern unsigned int Image$$HEAP_SPACE$$ZI$$Base;
- extern unsigned int Image$$HEAP_SPACE$$ZI$$Limit;
- #define HEAP_START (&Image$$HEAP_SPACE$$ZI$$Base)
- #define HEAP_END (&Image$$HEAP_SPACE$$ZI$$Limit)
+ extern unsigned int Image$$HEAP_SPACE0$$ZI$$Base;
+ extern unsigned int Image$$HEAP_SPACE0$$ZI$$Limit;
+ extern unsigned int Image$$HEAP_SPACE1$$ZI$$Base;
+ extern unsigned int Image$$HEAP_SPACE1$$ZI$$Limit;
+ #define HEAP0_START (&Image$$HEAP_SPACE0$$ZI$$Base)
+ #define HEAP0_END (&Image$$HEAP_SPACE0$$ZI$$Limit)
+ #define HEAP1_START (&Image$$HEAP_SPACE1$$ZI$$Base)
+ #define HEAP1_END (&Image$$HEAP_SPACE1$$ZI$$Limit)
#elif __ICCARM__
#error "TODO: support iar compiler!!!"
#elif __GNUC__
@@ -29,11 +33,14 @@ static HeapRegion_t xHeapRegions[] = {
void OS_HeapSizeConfig(void)
{
- xHeapRegions[0].pucStartAddress = (uint8_t *)(HEAP_START);
- xHeapRegions[0].xSizeInBytes = (size_t) ((uint8_t *)HEAP_END - (uint8_t *)HEAP_START);
+ xHeapRegions[0].pucStartAddress = (uint8_t *)(HEAP0_START);
+ xHeapRegions[0].xSizeInBytes = (size_t) ((uint8_t *)HEAP0_END - (uint8_t *)HEAP0_START);
- xHeapRegions[1].pucStartAddress = NULL;
- xHeapRegions[1].xSizeInBytes = 0;
+ xHeapRegions[1].pucStartAddress = (uint8_t *)(HEAP1_START);
+ xHeapRegions[1].xSizeInBytes = (size_t) ((uint8_t *)HEAP1_END - (uint8_t *)HEAP1_START);
+
+ xHeapRegions[2].pucStartAddress = NULL;
+ xHeapRegions[2].xSizeInBytes = 0;
}
void OS_DefineHeapRegions(void)
diff --git a/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_mutex.c b/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_mutex.c
index 875c49dd4b92f3b603a9bfedd1bc5ece4bb0648e..eb0ed1fc98c088ac5c7ee56b317de29699f28c1e 100644
--- a/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_mutex.c
+++ b/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_mutex.c
@@ -50,7 +50,7 @@ OS_Status OS_MutexDelete(OS_Mutex_t *mutex)
* @param[in] waitMS The maximum amount of time (in millisecond) the thread
* should remain in the blocked state to wait for the mutex
* to become unlocked.
- * HAL_WAIT_FOREVER for waiting forever, zero for no waiting.
+ * OS_WAIT_FOREVER for waiting forever, zero for no waiting.
* @retval OS_Status, OS_OK on success
*/
OS_Status OS_MutexLock(OS_Mutex_t *mutex, OS_Time_t waitMS)
diff --git a/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_queue.c b/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_queue.c
index 2e02bf55387f9db166fc0f554aa5814350fe3368..aa0ffc3ae5cb5994bb44fe1ce8e56f01abcbd318 100644
--- a/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_queue.c
+++ b/platform/vendor_bsp/LN/ln882x/src/kernel/FreeRTOS_Adapter/freertos_queue.c
@@ -36,16 +36,9 @@ OS_Status OS_QueueCreate(OS_Queue_t *queue, uint32_t queueLen, uint32_t itemSize
*/
OS_Status OS_QueueDelete(OS_Queue_t *queue)
{
- UBaseType_t ret;
OS_HANDLE_ASSERT(OS_QueueIsValid(queue), queue->handle);
- ret = uxQueueMessagesWaiting(queue->handle);
- if (ret > 0) {
- OS_ERR("queue %"OS_HANDLE_F" is not empty\r\n", queue->handle);
- return OS_FAIL;
- }
-
vQueueDelete(queue->handle);
OS_QueueSetInvalid(queue);
return OS_OK;
@@ -134,13 +127,3 @@ OS_Status OS_QueueReceive(OS_Queue_t *queue, void *item, OS_Time_t waitMS)
return OS_OK;
}
-OS_Status OS_QueueFlush(OS_Queue_t *queue)
-{
- void *item;
-
- OS_HANDLE_ASSERT(OS_QueueIsValid(queue), queue->handle);
- while(uxQueueMessagesWaiting(queue->handle)){
- OS_QueueReceive(queue,item,OS_WAIT_FOREVER);
- }
- return OS_OK;
-}
diff --git a/platform/vendor_bsp/LN/ln882x/src/kernel/TencentOS_Adapter/TencentOS_common.c b/platform/vendor_bsp/LN/ln882x/src/kernel/TencentOS_Adapter/TencentOS_common.c
index 400aab84e2de4f8e3ed1a0dcc7d276237b2fcf73..e6ffa37080f791f0df6d032594c78b2180105e7d 100644
--- a/platform/vendor_bsp/LN/ln882x/src/kernel/TencentOS_Adapter/TencentOS_common.c
+++ b/platform/vendor_bsp/LN/ln882x/src/kernel/TencentOS_Adapter/TencentOS_common.c
@@ -8,10 +8,14 @@
#include "ln88xx.h"
#ifdef __CC_ARM
- extern unsigned int Image$$HEAP_SPACE$$ZI$$Base;
- extern unsigned int Image$$HEAP_SPACE$$ZI$$Limit;
- #define HEAP_START (&Image$$HEAP_SPACE$$ZI$$Base)
- #define HEAP_END (&Image$$HEAP_SPACE$$ZI$$Limit)
+ extern unsigned int Image$$HEAP_SPACE0$$ZI$$Base;
+ extern unsigned int Image$$HEAP_SPACE0$$ZI$$Limit;
+ #define HEAP0_START (&Image$$HEAP_SPACE0$$ZI$$Base)
+ #define HEAP0_END (&Image$$HEAP_SPACE0$$ZI$$Limit)
+ extern unsigned int Image$$HEAP_SPACE1$$ZI$$Base;
+ extern unsigned int Image$$HEAP_SPACE1$$ZI$$Limit;
+ #define HEAP1_START (&Image$$HEAP_SPACE1$$ZI$$Base)
+ #define HEAP1_END (&Image$$HEAP_SPACE1$$ZI$$Limit)
#elif __ICCARM__
#error "TODO: support iar compiler!!!"
#elif __GNUC__
@@ -25,12 +29,18 @@
void os_heap_mem_add_pool(void)
{
- uint8_t * heap_pool0_base = (uint8_t *)((((uint32_t)HEAP_START) + sizeof(size_t) - 1U) & ~(sizeof(size_t)-1U));
-
- size_t pool0_size = ((uint32_t)HEAP_END - (uint32_t)heap_pool0_base);
+ uint8_t * heap_pool0_base = (uint8_t *)((((uint32_t)HEAP0_START) + sizeof(size_t) - 1U) & ~(sizeof(size_t)-1U));
+ size_t pool0_size = ((uint32_t)HEAP0_END - (uint32_t)heap_pool0_base);
+
+ uint8_t * heap_pool1_base = (uint8_t *)((((uint32_t)HEAP1_START) + sizeof(size_t) - 1U) & ~(sizeof(size_t)-1U));
+ size_t pool1_size = ((uint32_t)HEAP1_END - (uint32_t)heap_pool1_base);
if(K_ERR_NONE != tos_mmheap_pool_add(heap_pool0_base, pool0_size)){
- LOG(LOG_LVL_ERROR,"[%s, %d]add pool fail.\r\n", __func__, __LINE__);
+ LOG(LOG_LVL_ERROR,"[%s, %d]add pool0 fail.\r\n", __func__, __LINE__);
+ };
+
+ if(K_ERR_NONE != tos_mmheap_pool_add(heap_pool1_base, pool1_size)){
+ LOG(LOG_LVL_ERROR,"[%s, %d]add pool1 fail.\r\n", __func__, __LINE__);
};
}
diff --git a/platform/vendor_bsp/LN/ln882x/src/kernel/TencentOS_Adapter/TencentOS_semaphore.c b/platform/vendor_bsp/LN/ln882x/src/kernel/TencentOS_Adapter/TencentOS_semaphore.c
index 12f5e0b01a268084f03dd5c4ac3525acace5b2dd..acca0d61780c0e13fb3381581859cde97514f295 100644
--- a/platform/vendor_bsp/LN/ln882x/src/kernel/TencentOS_Adapter/TencentOS_semaphore.c
+++ b/platform/vendor_bsp/LN/ln882x/src/kernel/TencentOS_Adapter/TencentOS_semaphore.c
@@ -72,7 +72,7 @@ OS_Status OS_SemaphoreWait(OS_Semaphore_t *sem, OS_Time_t waitMS)
if (err == K_ERR_NONE) {
return OS_OK;
} else {
- OS_ERR("err:%d,OS_SemaphoreWait filed.\r\n", err);
+// OS_ERR("err:%d,OS_SemaphoreWait filed.\r\n", err);
return OS_FAIL;
}
}
diff --git a/platform/vendor_bsp/LN/ln882x/src/net/lwip-2.0.3/src/port/lwipopts.h b/platform/vendor_bsp/LN/ln882x/src/net/lwip-2.0.3/src/port/lwipopts.h
index 5318d47b292bf862fdf733c339c4ab3289bc8d7d..2506459fd36259858e42dd83b86b4bece6af0a2f 100644
--- a/platform/vendor_bsp/LN/ln882x/src/net/lwip-2.0.3/src/port/lwipopts.h
+++ b/platform/vendor_bsp/LN/ln882x/src/net/lwip-2.0.3/src/port/lwipopts.h
@@ -53,7 +53,7 @@ a lot of data that needs to be copied, this should be set high. */
/* ---------- Pbuf options ---------- */
/* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
-#define PBUF_POOL_SIZE 35
+#define PBUF_POOL_SIZE 25
/* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
#define PBUF_POOL_BUFSIZE 500//(NETIF_MTU + PBUF_LINK_HLEN)
@@ -68,7 +68,7 @@ a lot of data that needs to be copied, this should be set high. */
/* TCP sender buffer space (bytes). */
#define TCP_SND_BUF (7 * TCP_MSS)
/* TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. */
-#define TCP_SND_QUEUELEN (42)//(5 * TCP_SND_BUF/TCP_MSS)
+#define TCP_SND_QUEUELEN (5 * TCP_SND_BUF/TCP_MSS)
/* TCP receive window. */
#define TCP_WND (6 * TCP_MSS)
/* Maximum number of retransmissions of data segments. */
diff --git a/platform/vendor_bsp/LN/ln882x/src/serial/serial.c b/platform/vendor_bsp/LN/ln882x/src/serial/serial.c
index a6707250a89d15dac97ea0a9e5b353038624d552..0c149cb775b06991c0f91e4595017b533f332f08 100644
--- a/platform/vendor_bsp/LN/ln882x/src/serial/serial.c
+++ b/platform/vendor_bsp/LN/ln882x/src/serial/serial.c
@@ -1,6 +1,6 @@
#include
#include "serial/serial.h"
-#include "serial/serial_p.h"
+#include "serial_hw.h"
#include "utils/fifo/fifobuf.h"
#include "utils/debug/art_assert.h"
diff --git a/platform/vendor_bsp/LN/ln882x/src/utils/art_string.c b/platform/vendor_bsp/LN/ln882x/src/utils/art_string.c
index 5407db6e75a42b8422139a6ea464f3e0343f3306..dd417e0dda587bbd41e8fe7c1a0ca717cd2c6124 100644
--- a/platform/vendor_bsp/LN/ln882x/src/utils/art_string.c
+++ b/platform/vendor_bsp/LN/ln882x/src/utils/art_string.c
@@ -5,6 +5,8 @@
#include "utils/debug/log.h"
#include "utils/debug/art_assert.h"
+#define LN_MAC_OUI "00-50-C2"
+
/***************************************************************
* substring
* ܣַָλõӴ
@@ -250,12 +252,26 @@ int generate_mac_randomly(unsigned char *addr)
HAL_TRNG_Init(TRNG, initStruct);
HAL_TRNG_Start(TRNG);
while(!HAL_TRNG_isDataReady(TRNG) || HAL_TRNG_isBusy(TRNG));
+#ifdef LN_MAC_OUI
+ uint32_t addr0, addr1, addr2;
+ sscanf(LN_MAC_OUI, "%X-%X-%X", &addr0, &addr1, &addr2);
+ *addr = addr0 & 0xFF;
+ *(addr + 1) = addr1 & 0xFF;
+ *(addr + 2) = addr2 & 0xFF;
+ for (int i = 0; i < 1; i++) {
+ trngNumber[i] = HAL_TRNG_GetRandomNumber(TRNG, i);
+ }
+ HAL_TRNG_Stop(TRNG);
+ memcpy(addr + 3, trngNumber, 3);
+#else
for (int i = 0; i < 2; i++) {
trngNumber[i] = HAL_TRNG_GetRandomNumber(TRNG, i);
}
HAL_TRNG_Stop(TRNG);
memcpy(addr, trngNumber, 6);
CLR_BIT(addr[0],0);
+ CLR_BIT(addr[0],1);
+#endif
return 0;
}
diff --git a/platform/vendor_bsp/LN/ln882x/src/utils/crc32.c b/platform/vendor_bsp/LN/ln882x/src/utils/crc32.c
index 38d2eab79af0fe38e40136ee75177cf9a5211567..02ccdeaab21e734eb7041f203cc0c291dfc783ee 100644
--- a/platform/vendor_bsp/LN/ln882x/src/utils/crc32.c
+++ b/platform/vendor_bsp/LN/ln882x/src/utils/crc32.c
@@ -1,7 +1,7 @@
#include "utils/crc32.h"
-const uint32_t Crc32Table[256] = {
+static const uint32_t Crc32Table[256] = {
0x00000000,0x77073096,0xEE0E612C,0x990951BA,
0x076DC419,0x706AF48F,0xE963A535,0x9E6495A3,
0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,
@@ -69,9 +69,27 @@ const uint32_t Crc32Table[256] = {
};
-uint32_t GetCrc32(uint8_t *ptr, int len)
+
+void ln_crc32_init(crc32_ctx_t *ctx)
+{
+ ctx->crc = 0xFFFFFFFFL;
+}
+
+void ln_crc32_update(crc32_ctx_t *ctx, uint8_t *data, uint32_t len)
+{
+ for (uint32_t i = 0; i < len; i++)
+ {
+ ctx->crc = (ctx->crc >> 8) ^ Crc32Table[(ctx->crc & 0xFF) ^ *data++];
+ }
+}
+
+uint32_t ln_crc32_final(crc32_ctx_t *ctx)
+{
+ return ctx->crc ^= 0xFFFFFFFFUL;
+}
+
+uint32_t ln_crc32_signle_cal(uint8_t *ptr, int len)
{
-
uint32_t crc = 0xFFFFFFFF;
while (len > 0)
{
@@ -80,7 +98,6 @@ uint32_t GetCrc32(uint8_t *ptr, int len)
len--;
}
return crc^0xffffffff;
-
}
diff --git a/platform/vendor_bsp/LN/ln882x/src/utils/eeprom.c b/platform/vendor_bsp/LN/ln882x/src/utils/eeprom.c
index 2caaa8304594022a4af3238a95a56c50536c55c4..1a48b30b9332daee51ca89cbdb9128024d0c458d 100644
--- a/platform/vendor_bsp/LN/ln882x/src/utils/eeprom.c
+++ b/platform/vendor_bsp/LN/ln882x/src/utils/eeprom.c
@@ -8,11 +8,12 @@
#include "osal/osal.h"
#include "utils/eeprom.h"
#include "utils/system_parameter.h"
+#include "flash_partition_table.h"
#define PAGE_SIZE (1*SIZE_4KB)
/* EEPROM start address in Flash */
-#define EEPROM_START_ADDRESS ((uint32_t)(SYSTEM_PARAMETER_OFFSET))
+#define EEPROM_START_ADDRESS ((uint32_t)(SIMU_EEPROM_SPACE_OFFSET))
/* Pages 0 and 1 base and end addresses */
#define PAGE0_BASE_ADDRESS ((uint32_t)(EEPROM_START_ADDRESS))
diff --git a/platform/vendor_bsp/LN/ln882x/src/utils/gbk_to_unicode.c b/platform/vendor_bsp/LN/ln882x/src/utils/gbk_to_unicode.c
index 2b359ffad18234d5b64e9c2bb80fba3967b1ffc4..19c003c80425eb7929ba3aac3a94ee3586c20438 100644
--- a/platform/vendor_bsp/LN/ln882x/src/utils/gbk_to_unicode.c
+++ b/platform/vendor_bsp/LN/ln882x/src/utils/gbk_to_unicode.c
@@ -3,7 +3,14 @@
#include "utils/debug/art_assert.h"
#include "utils/gbk_to_unicode.h"
#include "utils/debug/log.h"
-
+#if WIFI_TRACK
+static const unsigned short table_GBK_to_UCS2[][2] = {
+ {0,0},
+};
+static const unsigned short table_BIG5_to_UCS2[][2] = {
+ {0,0},
+};
+#else
static const unsigned short table_GBK_to_UCS2[][2] = {
#if ZH_CN_WHOLE_SET_SUPPORT
{0xD2BB, 0X4E00}, //{0xE4, 0xB8, 0x80}, //一
@@ -6771,3498 +6778,3498 @@ static const unsigned short table_GBK_to_UCS2[][2] = {
{0xD9DF, 0X9FA0}, //{0xE9, 0xBE, 0xA0}, //龠
#else
{0xD2BB, 0x4E00}, //{0xE4, 0xB8, 0x80}, // һ
- {0xB6A1, 0x4E01}, //{0xE4, 0xB8, 0x81}, //
- {0xC6DF, 0x4E03}, //{0xE4, 0xB8, 0x83}, //
- {0xCDF2, 0x4E07}, //{0xE4, 0xB8, 0x87}, //
- {0xD5C9, 0x4E08}, //{0xE4, 0xB8, 0x88}, //
- {0xC8FD, 0x4E09}, //{0xE4, 0xB8, 0x89}, //
- {0xC9CF, 0x4E0A}, //{0xE4, 0xB8, 0x8A}, //
- {0xCFC2, 0x4E0B}, //{0xE4, 0xB8, 0x8B}, //
- {0xB2BB, 0x4E0D}, //{0xE4, 0xB8, 0x8D}, //
- {0xD3EB, 0x4E0E}, //{0xE4, 0xB8, 0x8E}, //
+ {0xB6A1, 0x4E01}, //{0xE4, 0xB8, 0x81}, // ��
+ {0xC6DF, 0x4E03}, //{0xE4, 0xB8, 0x83}, // ��
+ {0xCDF2, 0x4E07}, //{0xE4, 0xB8, 0x87}, // ��
+ {0xD5C9, 0x4E08}, //{0xE4, 0xB8, 0x88}, // ��
+ {0xC8FD, 0x4E09}, //{0xE4, 0xB8, 0x89}, // ��
+ {0xC9CF, 0x4E0A}, //{0xE4, 0xB8, 0x8A}, // ��
+ {0xCFC2, 0x4E0B}, //{0xE4, 0xB8, 0x8B}, // ��
+ {0xB2BB, 0x4E0D}, //{0xE4, 0xB8, 0x8D}, // ��
+ {0xD3EB, 0x4E0E}, //{0xE4, 0xB8, 0x8E}, // ��
{0xD8A4, 0x4E10}, //{0xE4, 0xB8, 0x90}, // ؤ
- {0xB3F3, 0x4E11}, //{0xE4, 0xB8, 0x91}, //
+ {0xB3F3, 0x4E11}, //{0xE4, 0xB8, 0x91}, // ��
{0xD7A8, 0x4E13}, //{0xE4, 0xB8, 0x93}, // ר
- {0xC7D2, 0x4E14}, //{0xE4, 0xB8, 0x94}, //
- {0xCAC0, 0x4E16}, //{0xE4, 0xB8, 0x96}, //
- {0xC7F0, 0x4E18}, //{0xE4, 0xB8, 0x98}, //
- {0xB1FB, 0x4E19}, //{0xE4, 0xB8, 0x99}, //
+ {0xC7D2, 0x4E14}, //{0xE4, 0xB8, 0x94}, // ��
+ {0xCAC0, 0x4E16}, //{0xE4, 0xB8, 0x96}, // ��
+ {0xC7F0, 0x4E18}, //{0xE4, 0xB8, 0x98}, // ��
+ {0xB1FB, 0x4E19}, //{0xE4, 0xB8, 0x99}, // ��
{0xD2B5, 0x4E1A}, //{0xE4, 0xB8, 0x9A}, // ҵ
- {0xB4D4, 0x4E1B}, //{0xE4, 0xB8, 0x9B}, //
- {0xB6AB, 0x4E1C}, //{0xE4, 0xB8, 0x9C}, //
+ {0xB4D4, 0x4E1B}, //{0xE4, 0xB8, 0x9B}, // ��
+ {0xB6AB, 0x4E1C}, //{0xE4, 0xB8, 0x9C}, // ��
{0xCBBF, 0x4E1D}, //{0xE4, 0xB8, 0x9D}, // ˿
- {0xB6AA, 0x4E22}, //{0xE4, 0xB8, 0xA2}, //
- {0xC1BD, 0x4E24}, //{0xE4, 0xB8, 0xA4}, //
- {0xD1CF, 0x4E25}, //{0xE4, 0xB8, 0xA5}, //
+ {0xB6AA, 0x4E22}, //{0xE4, 0xB8, 0xA2}, // ��
+ {0xC1BD, 0x4E24}, //{0xE4, 0xB8, 0xA4}, // }
+ {0xD1CF, 0x4E25}, //{0xE4, 0xB8, 0xA5}, // ��
{0xC9A5, 0x4E27}, //{0xE4, 0xB8, 0xA7}, // ɥ
- {0xB8F6, 0x4E2A}, //{0xE4, 0xB8, 0xAA}, //
- {0xD6D0, 0x4E2D}, //{0xE4, 0xB8, 0xAD}, //
- {0xB7E1, 0x4E30}, //{0xE4, 0xB8, 0xB0}, //
- {0xB4AE, 0x4E32}, //{0xE4, 0xB8, 0xB2}, //
- {0xC1D9, 0x4E34}, //{0xE4, 0xB8, 0xB4}, //
- {0xCDE8, 0x4E38}, //{0xE4, 0xB8, 0xB8}, //
- {0xB5A4, 0x4E39}, //{0xE4, 0xB8, 0xB9}, //
+ {0xB8F6, 0x4E2A}, //{0xE4, 0xB8, 0xAA}, // ��
+ {0xD6D0, 0x4E2D}, //{0xE4, 0xB8, 0xAD}, // ��
+ {0xB7E1, 0x4E30}, //{0xE4, 0xB8, 0xB0}, // ��
+ {0xB4AE, 0x4E32}, //{0xE4, 0xB8, 0xB2}, // ��
+ {0xC1D9, 0x4E34}, //{0xE4, 0xB8, 0xB4}, // ��
+ {0xCDE8, 0x4E38}, //{0xE4, 0xB8, 0xB8}, // ��
+ {0xB5A4, 0x4E39}, //{0xE4, 0xB8, 0xB9}, // ��
{0xCEAA, 0x4E3A}, //{0xE4, 0xB8, 0xBA}, // Ϊ
- {0xD6F7, 0x4E3B}, //{0xE4, 0xB8, 0xBB}, //
- {0xC0F6, 0x4E3D}, //{0xE4, 0xB8, 0xBD}, //
- {0xBED9, 0x4E3E}, //{0xE4, 0xB8, 0xBE}, //
- {0xC4CB, 0x4E43}, //{0xE4, 0xB9, 0x83}, //
- {0xBEC3, 0x4E45}, //{0xE4, 0xB9, 0x85}, //
+ {0xD6F7, 0x4E3B}, //{0xE4, 0xB8, 0xBB}, // ��
+ {0xC0F6, 0x4E3D}, //{0xE4, 0xB8, 0xBD}, // ��
+ {0xBED9, 0x4E3E}, //{0xE4, 0xB8, 0xBE}, // ��
+ {0xC4CB, 0x4E43}, //{0xE4, 0xB9, 0x83}, // ��
+ {0xBEC3, 0x4E45}, //{0xE4, 0xB9, 0x85}, // ��
{0xC3B4, 0x4E48}, //{0xE4, 0xB9, 0x88}, // ô
- {0xD2E5, 0x4E49}, //{0xE4, 0xB9, 0x89}, //
+ {0xD2E5, 0x4E49}, //{0xE4, 0xB9, 0x89}, // ��
{0xD6AE, 0x4E4B}, //{0xE4, 0xB9, 0x8B}, // ֮
- {0xCEDA, 0x4E4C}, //{0xE4, 0xB9, 0x8C}, //
+ {0xCEDA, 0x4E4C}, //{0xE4, 0xB9, 0x8C}, // ��
{0xD5A7, 0x4E4D}, //{0xE4, 0xB9, 0x8D}, // է
- {0xBAF5, 0x4E4E}, //{0xE4, 0xB9, 0x8E}, //
- {0xB7A6, 0x4E4F}, //{0xE4, 0xB9, 0x8F}, //
- {0xC0D6, 0x4E50}, //{0xE4, 0xB9, 0x90}, //
+ {0xBAF5, 0x4E4E}, //{0xE4, 0xB9, 0x8E}, // ��
+ {0xB7A6, 0x4E4F}, //{0xE4, 0xB9, 0x8F}, // ��
+ {0xC0D6, 0x4E50}, //{0xE4, 0xB9, 0x90}, // ��
{0xC6B9, 0x4E52}, //{0xE4, 0xB9, 0x92}, // ƹ
- {0xC5D2, 0x4E53}, //{0xE4, 0xB9, 0x93}, //
- {0xC7C7, 0x4E54}, //{0xE4, 0xB9, 0x94}, //
- {0xB9D4, 0x4E56}, //{0xE4, 0xB9, 0x96}, //
- {0xB3CB, 0x4E58}, //{0xE4, 0xB9, 0x98}, //
- {0xD2D2, 0x4E59}, //{0xE4, 0xB9, 0x99}, //
- {0xBEC5, 0x4E5D}, //{0xE4, 0xB9, 0x9D}, //
- {0xC6F2, 0x4E5E}, //{0xE4, 0xB9, 0x9E}, //
+ {0xC5D2, 0x4E53}, //{0xE4, 0xB9, 0x93}, // ��
+ {0xC7C7, 0x4E54}, //{0xE4, 0xB9, 0x94}, // ��
+ {0xB9D4, 0x4E56}, //{0xE4, 0xB9, 0x96}, // ��
+ {0xB3CB, 0x4E58}, //{0xE4, 0xB9, 0x98}, // ��
+ {0xD2D2, 0x4E59}, //{0xE4, 0xB9, 0x99}, // ��
+ {0xBEC5, 0x4E5D}, //{0xE4, 0xB9, 0x9D}, // ��
+ {0xC6F2, 0x4E5E}, //{0xE4, 0xB9, 0x9E}, // ��
{0xD2B2, 0x4E5F}, //{0xE4, 0xB9, 0x9F}, // Ҳ
{0xCFB0, 0x4E60}, //{0xE4, 0xB9, 0xA0}, // ϰ
- {0xCFE7, 0x4E61}, //{0xE4, 0xB9, 0xA1}, //
- {0xCAE9, 0x4E66}, //{0xE4, 0xB9, 0xA6}, //
- {0xC2F2, 0x4E70}, //{0xE4, 0xB9, 0xB0}, //
- {0xC2D2, 0x4E71}, //{0xE4, 0xB9, 0xB1}, //
- {0xC8E9, 0x4E73}, //{0xE4, 0xB9, 0xB3}, //
- {0xC1CB, 0x4E86}, //{0xE4, 0xBA, 0x86}, //
- {0xD3E8, 0x4E88}, //{0xE4, 0xBA, 0x88}, //
- {0xD5F9, 0x4E89}, //{0xE4, 0xBA, 0x89}, //
- {0xCAC2, 0x4E8B}, //{0xE4, 0xBA, 0x8B}, //
- {0xB6FE, 0x4E8C}, //{0xE4, 0xBA, 0x8C}, //
- {0xD3DA, 0x4E8E}, //{0xE4, 0xBA, 0x8E}, //
- {0xBFF7, 0x4E8F}, //{0xE4, 0xBA, 0x8F}, //
- {0xD4C6, 0x4E91}, //{0xE4, 0xBA, 0x91}, //
- {0xBBA5, 0x4E92}, //{0xE4, 0xBA, 0x92}, //
- {0xCEE5, 0x4E94}, //{0xE4, 0xBA, 0x94}, //
- {0xBEAE, 0x4E95}, //{0xE4, 0xBA, 0x95}, //
- {0xD1C7, 0x4E9A}, //{0xE4, 0xBA, 0x9A}, //
+ {0xCFE7, 0x4E61}, //{0xE4, 0xB9, 0xA1}, // ��
+ {0xCAE9, 0x4E66}, //{0xE4, 0xB9, 0xA6}, // ��
+ {0xC2F2, 0x4E70}, //{0xE4, 0xB9, 0xB0}, // ��
+ {0xC2D2, 0x4E71}, //{0xE4, 0xB9, 0xB1}, // ��
+ {0xC8E9, 0x4E73}, //{0xE4, 0xB9, 0xB3}, // ��
+ {0xC1CB, 0x4E86}, //{0xE4, 0xBA, 0x86}, // ��
+ {0xD3E8, 0x4E88}, //{0xE4, 0xBA, 0x88}, // ��
+ {0xD5F9, 0x4E89}, //{0xE4, 0xBA, 0x89}, // ��
+ {0xCAC2, 0x4E8B}, //{0xE4, 0xBA, 0x8B}, // ��
+ {0xB6FE, 0x4E8C}, //{0xE4, 0xBA, 0x8C}, // ��
+ {0xD3DA, 0x4E8E}, //{0xE4, 0xBA, 0x8E}, // ��
+ {0xBFF7, 0x4E8F}, //{0xE4, 0xBA, 0x8F}, // ��
+ {0xD4C6, 0x4E91}, //{0xE4, 0xBA, 0x91}, // ��
+ {0xBBA5, 0x4E92}, //{0xE4, 0xBA, 0x92}, // ��
+ {0xCEE5, 0x4E94}, //{0xE4, 0xBA, 0x94}, // ��
+ {0xBEAE, 0x4E95}, //{0xE4, 0xBA, 0x95}, // ��
+ {0xD1C7, 0x4E9A}, //{0xE4, 0xBA, 0x9A}, // ��
{0xD0A9, 0x4E9B}, //{0xE4, 0xBA, 0x9B}, // Щ
- {0xCDF6, 0x4EA1}, //{0xE4, 0xBA, 0xA1}, //
- {0xBDBB, 0x4EA4}, //{0xE4, 0xBA, 0xA4}, //
- {0xBAA5, 0x4EA5}, //{0xE4, 0xBA, 0xA5}, //
- {0xD2E0, 0x4EA6}, //{0xE4, 0xBA, 0xA6}, //
- {0xB2FA, 0x4EA7}, //{0xE4, 0xBA, 0xA7}, //
+ {0xCDF6, 0x4EA1}, //{0xE4, 0xBA, 0xA1}, // ��
+ {0xBDBB, 0x4EA4}, //{0xE4, 0xBA, 0xA4}, // ��
+ {0xBAA5, 0x4EA5}, //{0xE4, 0xBA, 0xA5}, // ��
+ {0xD2E0, 0x4EA6}, //{0xE4, 0xBA, 0xA6}, // ��
+ {0xB2FA, 0x4EA7}, //{0xE4, 0xBA, 0xA7}, // ��
{0xC4B6, 0x4EA9}, //{0xE4, 0xBA, 0xA9}, // Ķ
- {0xCFED, 0x4EAB}, //{0xE4, 0xBA, 0xAB}, //
- {0xBEA9, 0x4EAC}, //{0xE4, 0xBA, 0xAC}, //
+ {0xCFED, 0x4EAB}, //{0xE4, 0xBA, 0xAB}, // ��
+ {0xBEA9, 0x4EAC}, //{0xE4, 0xBA, 0xAC}, // ��
{0xCDA4, 0x4EAD}, //{0xE4, 0xBA, 0xAD}, // ͤ
- {0xC1C1, 0x4EAE}, //{0xE4, 0xBA, 0xAE}, //
- {0xC7D7, 0x4EB2}, //{0xE4, 0xBA, 0xB2}, //
- {0xC8CB, 0x4EBA}, //{0xE4, 0xBA, 0xBA}, //
- {0xD2DA, 0x4EBF}, //{0xE4, 0xBA, 0xBF}, //
+ {0xC1C1, 0x4EAE}, //{0xE4, 0xBA, 0xAE}, // ��
+ {0xC7D7, 0x4EB2}, //{0xE4, 0xBA, 0xB2}, // ��
+ {0xC8CB, 0x4EBA}, //{0xE4, 0xBA, 0xBA}, // ��
+ {0xD2DA, 0x4EBF}, //{0xE4, 0xBA, 0xBF}, // ��
{0xCAB2, 0x4EC0}, //{0xE4, 0xBB, 0x80}, // ʲ
- {0xC8CA, 0x4EC1}, //{0xE4, 0xBB, 0x81}, //
- {0xBDF6, 0x4EC5}, //{0xE4, 0xBB, 0x85}, //
- {0xC6CD, 0x4EC6}, //{0xE4, 0xBB, 0x86}, //
- {0xB3F0, 0x4EC7}, //{0xE4, 0xBB, 0x87}, //
- {0xBDF1, 0x4ECA}, //{0xE4, 0xBB, 0x8A}, //
- {0xBDE9, 0x4ECB}, //{0xE4, 0xBB, 0x8B}, //
- {0xC8D4, 0x4ECD}, //{0xE4, 0xBB, 0x8D}, //
- {0xB4D3, 0x4ECE}, //{0xE4, 0xBB, 0x8E}, //
- {0xC2D8, 0x4ED1}, //{0xE4, 0xBB, 0x91}, //
- {0xB2D6, 0x4ED3}, //{0xE4, 0xBB, 0x93}, //
- {0xD7D0, 0x4ED4}, //{0xE4, 0xBB, 0x94}, //
- {0xCBFB, 0x4ED6}, //{0xE4, 0xBB, 0x96}, //
- {0xD5CC, 0x4ED7}, //{0xE4, 0xBB, 0x97}, //
- {0xB8B6, 0x4ED8}, //{0xE4, 0xBB, 0x98}, //
- {0xCFC9, 0x4ED9}, //{0xE4, 0xBB, 0x99}, //
- {0xB4FA, 0x4EE3}, //{0xE4, 0xBB, 0xA3}, //
- {0xC1EE, 0x4EE4}, //{0xE4, 0xBB, 0xA4}, //
- {0xD2D4, 0x4EE5}, //{0xE4, 0xBB, 0xA5}, //
- {0xD2C7, 0x4EEA}, //{0xE4, 0xBB, 0xAA}, //
- {0xC3C7, 0x4EEC}, //{0xE4, 0xBB, 0xAC}, //
- {0xD1F6, 0x4EF0}, //{0xE4, 0xBB, 0xB0}, //
- {0xD6D9, 0x4EF2}, //{0xE4, 0xBB, 0xB2}, //
- {0xBCFE, 0x4EF6}, //{0xE4, 0xBB, 0xB6}, //
- {0xBCDB, 0x4EF7}, //{0xE4, 0xBB, 0xB7}, //
- {0xC8CE, 0x4EFB}, //{0xE4, 0xBB, 0xBB}, //
- {0xB7DD, 0x4EFD}, //{0xE4, 0xBB, 0xBD}, //
- {0xB7C2, 0x4EFF}, //{0xE4, 0xBB, 0xBF}, //
- {0xC6F3, 0x4F01}, //{0xE4, 0xBC, 0x81}, //
- {0xD2C1, 0x4F0A}, //{0xE4, 0xBC, 0x8A}, //
- {0xCEE9, 0x4F0D}, //{0xE4, 0xBC, 0x8D}, //
- {0xB7FC, 0x4F0F}, //{0xE4, 0xBC, 0x8F}, //
- {0xB7A5, 0x4F10}, //{0xE4, 0xBC, 0x90}, //
- {0xD0DD, 0x4F11}, //{0xE4, 0xBC, 0x91}, //
- {0xD6DA, 0x4F17}, //{0xE4, 0xBC, 0x97}, //
- {0xD3C5, 0x4F18}, //{0xE4, 0xBC, 0x98}, //
- {0xBBEF, 0x4F19}, //{0xE4, 0xBC, 0x99}, //
- {0xBBE1, 0x4F1A}, //{0xE4, 0xBC, 0x9A}, //
+ {0xC8CA, 0x4EC1}, //{0xE4, 0xBB, 0x81}, // ��
+ {0xBDF6, 0x4EC5}, //{0xE4, 0xBB, 0x85}, // ��
+ {0xC6CD, 0x4EC6}, //{0xE4, 0xBB, 0x86}, // ��
+ {0xB3F0, 0x4EC7}, //{0xE4, 0xBB, 0x87}, // ��
+ {0xBDF1, 0x4ECA}, //{0xE4, 0xBB, 0x8A}, // ��
+ {0xBDE9, 0x4ECB}, //{0xE4, 0xBB, 0x8B}, // ��
+ {0xC8D4, 0x4ECD}, //{0xE4, 0xBB, 0x8D}, // ��
+ {0xB4D3, 0x4ECE}, //{0xE4, 0xBB, 0x8E}, // ��
+ {0xC2D8, 0x4ED1}, //{0xE4, 0xBB, 0x91}, // ��
+ {0xB2D6, 0x4ED3}, //{0xE4, 0xBB, 0x93}, // ��
+ {0xD7D0, 0x4ED4}, //{0xE4, 0xBB, 0x94}, // ��
+ {0xCBFB, 0x4ED6}, //{0xE4, 0xBB, 0x96}, // ��
+ {0xD5CC, 0x4ED7}, //{0xE4, 0xBB, 0x97}, // ��
+ {0xB8B6, 0x4ED8}, //{0xE4, 0xBB, 0x98}, // ��
+ {0xCFC9, 0x4ED9}, //{0xE4, 0xBB, 0x99}, // ��
+ {0xB4FA, 0x4EE3}, //{0xE4, 0xBB, 0xA3}, // ��
+ {0xC1EE, 0x4EE4}, //{0xE4, 0xBB, 0xA4}, // ��
+ {0xD2D4, 0x4EE5}, //{0xE4, 0xBB, 0xA5}, // ��
+ {0xD2C7, 0x4EEA}, //{0xE4, 0xBB, 0xAA}, // ��
+ {0xC3C7, 0x4EEC}, //{0xE4, 0xBB, 0xAC}, // ��
+ {0xD1F6, 0x4EF0}, //{0xE4, 0xBB, 0xB0}, // ��
+ {0xD6D9, 0x4EF2}, //{0xE4, 0xBB, 0xB2}, // ��
+ {0xBCFE, 0x4EF6}, //{0xE4, 0xBB, 0xB6}, // ��
+ {0xBCDB, 0x4EF7}, //{0xE4, 0xBB, 0xB7}, // ��
+ {0xC8CE, 0x4EFB}, //{0xE4, 0xBB, 0xBB}, // ��
+ {0xB7DD, 0x4EFD}, //{0xE4, 0xBB, 0xBD}, // ��
+ {0xB7C2, 0x4EFF}, //{0xE4, 0xBB, 0xBF}, // ��
+ {0xC6F3, 0x4F01}, //{0xE4, 0xBC, 0x81}, // ��
+ {0xD2C1, 0x4F0A}, //{0xE4, 0xBC, 0x8A}, // ��
+ {0xCEE9, 0x4F0D}, //{0xE4, 0xBC, 0x8D}, // ��
+ {0xB7FC, 0x4F0F}, //{0xE4, 0xBC, 0x8F}, // ��
+ {0xB7A5, 0x4F10}, //{0xE4, 0xBC, 0x90}, // ��
+ {0xD0DD, 0x4F11}, //{0xE4, 0xBC, 0x91}, // ��
+ {0xD6DA, 0x4F17}, //{0xE4, 0xBC, 0x97}, // ��
+ {0xD3C5, 0x4F18}, //{0xE4, 0xBC, 0x98}, // ��
+ {0xBBEF, 0x4F19}, //{0xE4, 0xBC, 0x99}, // ��
+ {0xBBE1, 0x4F1A}, //{0xE4, 0xBC, 0x9A}, // ��
{0xC9A1, 0x4F1E}, //{0xE4, 0xBC, 0x9E}, // ɡ
{0xCEB0, 0x4F1F}, //{0xE4, 0xBC, 0x9F}, // ΰ
- {0xB4AB, 0x4F20}, //{0xE4, 0xBC, 0xA0}, //
- {0xC9CB, 0x4F24}, //{0xE4, 0xBC, 0xA4}, //
- {0xC2D7, 0x4F26}, //{0xE4, 0xBC, 0xA6}, //
+ {0xB4AB, 0x4F20}, //{0xE4, 0xBC, 0xA0}, // ��
+ {0xC9CB, 0x4F24}, //{0xE4, 0xBC, 0xA4}, // ��
+ {0xC2D7, 0x4F26}, //{0xE4, 0xBC, 0xA6}, // ��
{0xCEB1, 0x4F2A}, //{0xE4, 0xBC, 0xAA}, // α
- {0xB2AE, 0x4F2F}, //{0xE4, 0xBC, 0xAF}, //
- {0xB9C0, 0x4F30}, //{0xE4, 0xBC, 0xB0}, //
- {0xB0E9, 0x4F34}, //{0xE4, 0xBC, 0xB4}, //
- {0xC1E6, 0x4F36}, //{0xE4, 0xBC, 0xB6}, //
- {0xC9EC, 0x4F38}, //{0xE4, 0xBC, 0xB8}, //
- {0xCBC5, 0x4F3A}, //{0xE4, 0xBC, 0xBA}, //
- {0xCBC6, 0x4F3C}, //{0xE4, 0xBC, 0xBC}, //
- {0xB5E8, 0x4F43}, //{0xE4, 0xBD, 0x83}, //
- {0xB5AB, 0x4F46}, //{0xE4, 0xBD, 0x86}, //
+ {0xB2AE, 0x4F2F}, //{0xE4, 0xBC, 0xAF}, // ��
+ {0xB9C0, 0x4F30}, //{0xE4, 0xBC, 0xB0}, // ��
+ {0xB0E9, 0x4F34}, //{0xE4, 0xBC, 0xB4}, // ��
+ {0xC1E6, 0x4F36}, //{0xE4, 0xBC, 0xB6}, // ��
+ {0xC9EC, 0x4F38}, //{0xE4, 0xBC, 0xB8}, // ��
+ {0xCBC5, 0x4F3A}, //{0xE4, 0xBC, 0xBA}, // ��
+ {0xCBC6, 0x4F3C}, //{0xE4, 0xBC, 0xBC}, // ��
+ {0xB5E8, 0x4F43}, //{0xE4, 0xBD, 0x83}, // ��
+ {0xB5AB, 0x4F46}, //{0xE4, 0xBD, 0x86}, // ��
{0xCEBB, 0x4F4D}, //{0xE4, 0xBD, 0x8D}, // λ
- {0xB5CD, 0x4F4E}, //{0xE4, 0xBD, 0x8E}, //
+ {0xB5CD, 0x4F4E}, //{0xE4, 0xBD, 0x8E}, // ��
{0xD7A1, 0x4F4F}, //{0xE4, 0xBD, 0x8F}, // ס
- {0xD3D3, 0x4F51}, //{0xE4, 0xBD, 0x91}, //
- {0xCCE5, 0x4F53}, //{0xE4, 0xBD, 0x93}, //
- {0xBACE, 0x4F55}, //{0xE4, 0xBD, 0x95}, //
- {0xD3E0, 0x4F59}, //{0xE4, 0xBD, 0x99}, //
- {0xB7F0, 0x4F5B}, //{0xE4, 0xBD, 0x9B}, //
- {0xD7F7, 0x4F5C}, //{0xE4, 0xBD, 0x9C}, //
- {0xC4E3, 0x4F60}, //{0xE4, 0xBD, 0xA0}, //
+ {0xD3D3, 0x4F51}, //{0xE4, 0xBD, 0x91}, // ��
+ {0xCCE5, 0x4F53}, //{0xE4, 0xBD, 0x93}, // ��
+ {0xBACE, 0x4F55}, //{0xE4, 0xBD, 0x95}, // ��
+ {0xD3E0, 0x4F59}, //{0xE4, 0xBD, 0x99}, // ��
+ {0xB7F0, 0x4F5B}, //{0xE4, 0xBD, 0x9B}, // ��
+ {0xD7F7, 0x4F5C}, //{0xE4, 0xBD, 0x9C}, // ��
+ {0xC4E3, 0x4F60}, //{0xE4, 0xBD, 0xA0}, // ��
{0xD3B6, 0x4F63}, //{0xE4, 0xBD, 0xA3}, // Ӷ
- {0xC5E5, 0x4F69}, //{0xE4, 0xBD, 0xA9}, //
- {0xBCD1, 0x4F73}, //{0xE4, 0xBD, 0xB3}, //
+ {0xC5E5, 0x4F69}, //{0xE4, 0xBD, 0xA9}, // ��
+ {0xBCD1, 0x4F73}, //{0xE4, 0xBD, 0xB3}, // ��
{0xCAB9, 0x4F7F}, //{0xE4, 0xBD, 0xBF}, // ʹ
{0xD6B6, 0x4F84}, //{0xE4, 0xBE, 0x84}, // ֶ
- {0xB3DE, 0x4F88}, //{0xE4, 0xBE, 0x88}, //
- {0xC0FD, 0x4F8B}, //{0xE4, 0xBE, 0x8B}, //
- {0xCACC, 0x4F8D}, //{0xE4, 0xBE, 0x8D}, //
- {0xB9A9, 0x4F9B}, //{0xE4, 0xBE, 0x9B}, //
- {0xD2C0, 0x4F9D}, //{0xE4, 0xBE, 0x9D}, //
- {0xCFC0, 0x4FA0}, //{0xE4, 0xBE, 0xA0}, //
- {0xC2C2, 0x4FA3}, //{0xE4, 0xBE, 0xA3}, //
- {0xBDC4, 0x4FA5}, //{0xE4, 0xBE, 0xA5}, //
- {0xD5EC, 0x4FA6}, //{0xE4, 0xBE, 0xA6}, //
- {0xB2E0, 0x4FA7}, //{0xE4, 0xBE, 0xA7}, //
- {0xC7C8, 0x4FA8}, //{0xE4, 0xBE, 0xA8}, //
- {0xCEEA, 0x4FAE}, //{0xE4, 0xBE, 0xAE}, //
- {0xBAEE, 0x4FAF}, //{0xE4, 0xBE, 0xAF}, //
- {0xC7D6, 0x4FB5}, //{0xE4, 0xBE, 0xB5}, //
- {0xB1E3, 0x4FBF}, //{0xE4, 0xBE, 0xBF}, //
- {0xB4D9, 0x4FC3}, //{0xE4, 0xBF, 0x83}, //
- {0xB6ED, 0x4FC4}, //{0xE4, 0xBF, 0x84}, //
- {0xBFA1, 0x4FCA}, //{0xE4, 0xBF, 0x8A}, //
- {0xC7CE, 0x4FCF}, //{0xE4, 0xBF, 0x8F}, //
- {0xC0FE, 0x4FD0}, //{0xE4, 0xBF, 0x90}, //
- {0xCBD7, 0x4FD7}, //{0xE4, 0xBF, 0x97}, //
- {0xB7FD, 0x4FD8}, //{0xE4, 0xBF, 0x98}, //
- {0xB1A3, 0x4FDD}, //{0xE4, 0xBF, 0x9D}, //
- {0xD0C5, 0x4FE1}, //{0xE4, 0xBF, 0xA1}, //
- {0xC1A9, 0x4FE9}, //{0xE4, 0xBF, 0xA9}, //
- {0xBCF3, 0x4FED}, //{0xE4, 0xBF, 0xAD}, //
- {0xD0DE, 0x4FEE}, //{0xE4, 0xBF, 0xAE}, //
- {0xB8A9, 0x4FEF}, //{0xE4, 0xBF, 0xAF}, //
- {0xBEE3, 0x4FF1}, //{0xE4, 0xBF, 0xB1}, //
- {0xB0B3, 0x4FFA}, //{0xE4, 0xBF, 0xBA}, //
- {0xB1B6, 0x500D}, //{0xE5, 0x80, 0x8D}, //
- {0xB5B9, 0x5012}, //{0xE5, 0x80, 0x92}, //
- {0xBEF3, 0x5014}, //{0xE5, 0x80, 0x94}, //
- {0xCCC8, 0x5018}, //{0xE5, 0x80, 0x98}, //
- {0xBAF2, 0x5019}, //{0xE5, 0x80, 0x99}, //
- {0xD2D0, 0x501A}, //{0xE5, 0x80, 0x9A}, //
- {0xBDE8, 0x501F}, //{0xE5, 0x80, 0x9F}, //
- {0xB3AB, 0x5021}, //{0xE5, 0x80, 0xA1}, //
- {0xBEEB, 0x5026}, //{0xE5, 0x80, 0xA6}, //
+ {0xB3DE, 0x4F88}, //{0xE4, 0xBE, 0x88}, // ��
+ {0xC0FD, 0x4F8B}, //{0xE4, 0xBE, 0x8B}, // ��
+ {0xCACC, 0x4F8D}, //{0xE4, 0xBE, 0x8D}, // ��
+ {0xB9A9, 0x4F9B}, //{0xE4, 0xBE, 0x9B}, // ��
+ {0xD2C0, 0x4F9D}, //{0xE4, 0xBE, 0x9D}, // ��
+ {0xCFC0, 0x4FA0}, //{0xE4, 0xBE, 0xA0}, // ��
+ {0xC2C2, 0x4FA3}, //{0xE4, 0xBE, 0xA3}, // ��
+ {0xBDC4, 0x4FA5}, //{0xE4, 0xBE, 0xA5}, // ��
+ {0xD5EC, 0x4FA6}, //{0xE4, 0xBE, 0xA6}, // ��
+ {0xB2E0, 0x4FA7}, //{0xE4, 0xBE, 0xA7}, // ��
+ {0xC7C8, 0x4FA8}, //{0xE4, 0xBE, 0xA8}, // ��
+ {0xCEEA, 0x4FAE}, //{0xE4, 0xBE, 0xAE}, // ��
+ {0xBAEE, 0x4FAF}, //{0xE4, 0xBE, 0xAF}, // ��
+ {0xC7D6, 0x4FB5}, //{0xE4, 0xBE, 0xB5}, // ��
+ {0xB1E3, 0x4FBF}, //{0xE4, 0xBE, 0xBF}, // ��
+ {0xB4D9, 0x4FC3}, //{0xE4, 0xBF, 0x83}, // ��
+ {0xB6ED, 0x4FC4}, //{0xE4, 0xBF, 0x84}, // ��
+ {0xBFA1, 0x4FCA}, //{0xE4, 0xBF, 0x8A}, // ��
+ {0xC7CE, 0x4FCF}, //{0xE4, 0xBF, 0x8F}, // ��
+ {0xC0FE, 0x4FD0}, //{0xE4, 0xBF, 0x90}, // ��
+ {0xCBD7, 0x4FD7}, //{0xE4, 0xBF, 0x97}, // ��
+ {0xB7FD, 0x4FD8}, //{0xE4, 0xBF, 0x98}, // ��
+ {0xB1A3, 0x4FDD}, //{0xE4, 0xBF, 0x9D}, // ��
+ {0xD0C5, 0x4FE1}, //{0xE4, 0xBF, 0xA1}, // ��
+ {0xC1A9, 0x4FE9}, //{0xE4, 0xBF, 0xA9}, // i
+ {0xBCF3, 0x4FED}, //{0xE4, 0xBF, 0xAD}, // ��
+ {0xD0DE, 0x4FEE}, //{0xE4, 0xBF, 0xAE}, // ��
+ {0xB8A9, 0x4FEF}, //{0xE4, 0xBF, 0xAF}, // ��
+ {0xBEE3, 0x4FF1}, //{0xE4, 0xBF, 0xB1}, // ��
+ {0xB0B3, 0x4FFA}, //{0xE4, 0xBF, 0xBA}, // ��
+ {0xB1B6, 0x500D}, //{0xE5, 0x80, 0x8D}, // ��
+ {0xB5B9, 0x5012}, //{0xE5, 0x80, 0x92}, // ��
+ {0xBEF3, 0x5014}, //{0xE5, 0x80, 0x94}, // ��
+ {0xCCC8, 0x5018}, //{0xE5, 0x80, 0x98}, // ��
+ {0xBAF2, 0x5019}, //{0xE5, 0x80, 0x99}, // ��
+ {0xD2D0, 0x501A}, //{0xE5, 0x80, 0x9A}, // ��
+ {0xBDE8, 0x501F}, //{0xE5, 0x80, 0x9F}, // ��
+ {0xB3AB, 0x5021}, //{0xE5, 0x80, 0xA1}, // ��
+ {0xBEEB, 0x5026}, //{0xE5, 0x80, 0xA6}, // ��
{0xD5AE, 0x503A}, //{0xE5, 0x80, 0xBA}, // ծ
{0xD6B5, 0x503C}, //{0xE5, 0x80, 0xBC}, // ֵ
- {0xC7E3, 0x503E}, //{0xE5, 0x80, 0xBE}, //
- {0xBCD9, 0x5047}, //{0xE5, 0x81, 0x87}, //
- {0xD9CB, 0x504E}, //{0xE5, 0x81, 0x8E}, //
+ {0xC7E3, 0x503E}, //{0xE5, 0x80, 0xBE}, // ��
+ {0xBCD9, 0x5047}, //{0xE5, 0x81, 0x87}, // ��
+ {0xD9CB, 0x504E}, //{0xE5, 0x81, 0x8E}, // ��
{0xC6AB, 0x504F}, //{0xE5, 0x81, 0x8F}, // ƫ
- {0xD7F6, 0x505A}, //{0xE5, 0x81, 0x9A}, //
+ {0xD7F6, 0x505A}, //{0xE5, 0x81, 0x9A}, // ��
{0xCDA3, 0x505C}, //{0xE5, 0x81, 0x9C}, // ͣ
- {0xBDA1, 0x5065}, //{0xE5, 0x81, 0xA5}, //
+ {0xBDA1, 0x5065}, //{0xE5, 0x81, 0xA5}, // ��
{0xC5BC, 0x5076}, //{0xE5, 0x81, 0xB6}, // ż
{0xCDB5, 0x5077}, //{0xE5, 0x81, 0xB7}, // ͵
- {0xB3A5, 0x507F}, //{0xE5, 0x81, 0xBF}, //
- {0xBFFE, 0x5080}, //{0xE5, 0x82, 0x80}, //
- {0xB8B5, 0x5085}, //{0xE5, 0x82, 0x85}, //
- {0xB0F8, 0x508D}, //{0xE5, 0x82, 0x8D}, //
- {0xB4A2, 0x50A8}, //{0xE5, 0x82, 0xA8}, //
- {0xB4DF, 0x50AC}, //{0xE5, 0x82, 0xAC}, //
- {0xB0C1, 0x50B2}, //{0xE5, 0x82, 0xB2}, //
+ {0xB3A5, 0x507F}, //{0xE5, 0x81, 0xBF}, // ��
+ {0xBFFE, 0x5080}, //{0xE5, 0x82, 0x80}, // ��
+ {0xB8B5, 0x5085}, //{0xE5, 0x82, 0x85}, // ��
+ {0xB0F8, 0x508D}, //{0xE5, 0x82, 0x8D}, // ��
+ {0xB4A2, 0x50A8}, //{0xE5, 0x82, 0xA8}, // ��
+ {0xB4DF, 0x50AC}, //{0xE5, 0x82, 0xAC}, // ��
+ {0xB0C1, 0x50B2}, //{0xE5, 0x82, 0xB2}, // ��
{0xC9B5, 0x50BB}, //{0xE5, 0x82, 0xBB}, // ɵ
- {0xCFF1, 0x50CF}, //{0xE5, 0x83, 0x8F}, //
- {0xC1C5, 0x50DA}, //{0xE5, 0x83, 0x9A}, //
+ {0xCFF1, 0x50CF}, //{0xE5, 0x83, 0x8F}, // ��
+ {0xC1C5, 0x50DA}, //{0xE5, 0x83, 0x9A}, // ��
{0xC9AE, 0x50E7}, //{0xE5, 0x83, 0xA7}, // ɮ
- {0xBDA9, 0x50F5}, //{0xE5, 0x83, 0xB5}, //
+ {0xBDA9, 0x50F5}, //{0xE5, 0x83, 0xB5}, // ��
{0xC6A7, 0x50FB}, //{0xE5, 0x83, 0xBB}, // Ƨ
- {0xC8E5, 0x5112}, //{0xE5, 0x84, 0x92}, //
- {0xC0DC, 0x5121}, //{0xE5, 0x84, 0xA1}, //
- {0xB6F9, 0x513F}, //{0xE5, 0x84, 0xBF}, //
- {0xD4CA, 0x5141}, //{0xE5, 0x85, 0x81}, //
+ {0xC8E5, 0x5112}, //{0xE5, 0x84, 0x92}, // ��
+ {0xC0DC, 0x5121}, //{0xE5, 0x84, 0xA1}, // ��
+ {0xB6F9, 0x513F}, //{0xE5, 0x84, 0xBF}, // ��
+ {0xD4CA, 0x5141}, //{0xE5, 0x85, 0x81}, // ��
{0xD4AA, 0x5143}, //{0xE5, 0x85, 0x83}, // Ԫ
- {0xD0D6, 0x5144}, //{0xE5, 0x85, 0x84}, //
- {0xB3E4, 0x5145}, //{0xE5, 0x85, 0x85}, //
- {0xD5D7, 0x5146}, //{0xE5, 0x85, 0x86}, //
- {0xCFC8, 0x5148}, //{0xE5, 0x85, 0x88}, //
- {0xB9E2, 0x5149}, //{0xE5, 0x85, 0x89}, //
- {0xBFCB, 0x514B}, //{0xE5, 0x85, 0x8B}, //
- {0xC3E2, 0x514D}, //{0xE5, 0x85, 0x8D}, //
- {0xB6D2, 0x5151}, //{0xE5, 0x85, 0x91}, //
- {0xCDC3, 0x5154}, //{0xE5, 0x85, 0x94}, //
- {0xB5B3, 0x515A}, //{0xE5, 0x85, 0x9A}, //
- {0xB6B5, 0x515C}, //{0xE5, 0x85, 0x9C}, //
- {0xBEA4, 0x5162}, //{0xE5, 0x85, 0xA2}, //
- {0xC8EB, 0x5165}, //{0xE5, 0x85, 0xA5}, //
+ {0xD0D6, 0x5144}, //{0xE5, 0x85, 0x84}, // ��
+ {0xB3E4, 0x5145}, //{0xE5, 0x85, 0x85}, // ��
+ {0xD5D7, 0x5146}, //{0xE5, 0x85, 0x86}, // ��
+ {0xCFC8, 0x5148}, //{0xE5, 0x85, 0x88}, // ��
+ {0xB9E2, 0x5149}, //{0xE5, 0x85, 0x89}, // ��
+ {0xBFCB, 0x514B}, //{0xE5, 0x85, 0x8B}, // ��
+ {0xC3E2, 0x514D}, //{0xE5, 0x85, 0x8D}, // ��
+ {0xB6D2, 0x5151}, //{0xE5, 0x85, 0x91}, // ��
+ {0xCDC3, 0x5154}, //{0xE5, 0x85, 0x94}, // ��
+ {0xB5B3, 0x515A}, //{0xE5, 0x85, 0x9A}, // ��
+ {0xB6B5, 0x515C}, //{0xE5, 0x85, 0x9C}, // ��
+ {0xBEA4, 0x5162}, //{0xE5, 0x85, 0xA2}, // ��
+ {0xC8EB, 0x5165}, //{0xE5, 0x85, 0xA5}, // ��
{0xC8AB, 0x5168}, //{0xE5, 0x85, 0xA8}, // ȫ
- {0xB0CB, 0x516B}, //{0xE5, 0x85, 0xAB}, //
- {0xB9AB, 0x516C}, //{0xE5, 0x85, 0xAC}, //
- {0xC1F9, 0x516D}, //{0xE5, 0x85, 0xAD}, //
- {0xC0BC, 0x5170}, //{0xE5, 0x85, 0xB0}, //
- {0xB9B2, 0x5171}, //{0xE5, 0x85, 0xB1}, //
- {0xB9D8, 0x5173}, //{0xE5, 0x85, 0xB3}, //
- {0xD0CB, 0x5174}, //{0xE5, 0x85, 0xB4}, //
- {0xB1F8, 0x5175}, //{0xE5, 0x85, 0xB5}, //
- {0xC6E4, 0x5176}, //{0xE5, 0x85, 0xB6}, //
- {0xBEDF, 0x5177}, //{0xE5, 0x85, 0xB7}, //
- {0xB5E4, 0x5178}, //{0xE5, 0x85, 0xB8}, //
- {0xD1F8, 0x517B}, //{0xE5, 0x85, 0xBB}, //
- {0xBCE6, 0x517C}, //{0xE5, 0x85, 0xBC}, //
- {0xCADE, 0x517D}, //{0xE5, 0x85, 0xBD}, //
- {0xBCBD, 0x5180}, //{0xE5, 0x86, 0x80}, //
- {0xC4DA, 0x5185}, //{0xE5, 0x86, 0x85}, //
- {0xB8D4, 0x5188}, //{0xE5, 0x86, 0x88}, //
- {0xB2E1, 0x518C}, //{0xE5, 0x86, 0x8C}, //
- {0xD4D9, 0x518D}, //{0xE5, 0x86, 0x8D}, //
+ {0xB0CB, 0x516B}, //{0xE5, 0x85, 0xAB}, // ��
+ {0xB9AB, 0x516C}, //{0xE5, 0x85, 0xAC}, // ��
+ {0xC1F9, 0x516D}, //{0xE5, 0x85, 0xAD}, // ��
+ {0xC0BC, 0x5170}, //{0xE5, 0x85, 0xB0}, // <
+ {0xB9B2, 0x5171}, //{0xE5, 0x85, 0xB1}, // ��
+ {0xB9D8, 0x5173}, //{0xE5, 0x85, 0xB3}, // ��
+ {0xD0CB, 0x5174}, //{0xE5, 0x85, 0xB4}, // ��
+ {0xB1F8, 0x5175}, //{0xE5, 0x85, 0xB5}, // ��
+ {0xC6E4, 0x5176}, //{0xE5, 0x85, 0xB6}, // ��
+ {0xBEDF, 0x5177}, //{0xE5, 0x85, 0xB7}, // ��
+ {0xB5E4, 0x5178}, //{0xE5, 0x85, 0xB8}, // ��
+ {0xD1F8, 0x517B}, //{0xE5, 0x85, 0xBB}, // ��
+ {0xBCE6, 0x517C}, //{0xE5, 0x85, 0xBC}, // ��
+ {0xCADE, 0x517D}, //{0xE5, 0x85, 0xBD}, // ��
+ {0xBCBD, 0x5180}, //{0xE5, 0x86, 0x80}, // ��
+ {0xC4DA, 0x5185}, //{0xE5, 0x86, 0x85}, // ��
+ {0xB8D4, 0x5188}, //{0xE5, 0x86, 0x88}, // ��
+ {0xB2E1, 0x518C}, //{0xE5, 0x86, 0x8C}, // ��
+ {0xD4D9, 0x518D}, //{0xE5, 0x86, 0x8D}, // ��
{0xC3B0, 0x5192}, //{0xE5, 0x86, 0x92}, // ð
- {0xC3E1, 0x5195}, //{0xE5, 0x86, 0x95}, //
- {0xC8DF, 0x5197}, //{0xE5, 0x86, 0x97}, //
+ {0xC3E1, 0x5195}, //{0xE5, 0x86, 0x95}, // ��
+ {0xC8DF, 0x5197}, //{0xE5, 0x86, 0x97}, // ��
{0xD0B4, 0x5199}, //{0xE5, 0x86, 0x99}, // д
- {0xBEFC, 0x519B}, //{0xE5, 0x86, 0x9B}, //
+ {0xBEFC, 0x519B}, //{0xE5, 0x86, 0x9B}, // ��
{0xC5A9, 0x519C}, //{0xE5, 0x86, 0x9C}, // ũ
- {0xB9DA, 0x51A0}, //{0xE5, 0x86, 0xA0}, //
+ {0xB9DA, 0x51A0}, //{0xE5, 0x86, 0xA0}, // ��
{0xD4A9, 0x51A4}, //{0xE5, 0x86, 0xA4}, // ԩ
- {0xB6AC, 0x51AC}, //{0xE5, 0x86, 0xAC}, //
- {0xB7EB, 0x51AF}, //{0xE5, 0x86, 0xAF}, //
- {0xB1F9, 0x51B0}, //{0xE5, 0x86, 0xB0}, //
- {0xB3E5, 0x51B2}, //{0xE5, 0x86, 0xB2}, //
- {0xBEF6, 0x51B3}, //{0xE5, 0x86, 0xB3}, //
- {0xBFF6, 0x51B5}, //{0xE5, 0x86, 0xB5}, //
+ {0xB6AC, 0x51AC}, //{0xE5, 0x86, 0xAC}, // ��
+ {0xB7EB, 0x51AF}, //{0xE5, 0x86, 0xAF}, // ��
+ {0xB1F9, 0x51B0}, //{0xE5, 0x86, 0xB0}, // ��
+ {0xB3E5, 0x51B2}, //{0xE5, 0x86, 0xB2}, // ��
+ {0xBEF6, 0x51B3}, //{0xE5, 0x86, 0xB3}, // ��
+ {0xBFF6, 0x51B5}, //{0xE5, 0x86, 0xB5}, // ��
{0xD2B1, 0x51B6}, //{0xE5, 0x86, 0xB6}, // ұ
- {0xC0E4, 0x51B7}, //{0xE5, 0x86, 0xB7}, //
- {0xB6B3, 0x51BB}, //{0xE5, 0x86, 0xBB}, //
- {0xBEBB, 0x51C0}, //{0xE5, 0x87, 0x80}, //
- {0xC6E0, 0x51C4}, //{0xE5, 0x87, 0x84}, //
+ {0xC0E4, 0x51B7}, //{0xE5, 0x86, 0xB7}, // ��
+ {0xB6B3, 0x51BB}, //{0xE5, 0x86, 0xBB}, // ��
+ {0xBEBB, 0x51C0}, //{0xE5, 0x87, 0x80}, // ��
+ {0xC6E0, 0x51C4}, //{0xE5, 0x87, 0x84}, // ��
{0xD7BC, 0x51C6}, //{0xE5, 0x87, 0x86}, //
- {0xC1B9, 0x51C9}, //{0xE5, 0x87, 0x89}, //
- {0xC1E8, 0x51CC}, //{0xE5, 0x87, 0x8C}, //
- {0xBCF5, 0x51CF}, //{0xE5, 0x87, 0x8F}, //
- {0xB4D5, 0x51D1}, //{0xE5, 0x87, 0x91}, //
- {0xC1DD, 0x51DB}, //{0xE5, 0x87, 0x9B}, //
- {0xC4FD, 0x51DD}, //{0xE5, 0x87, 0x9D}, //
- {0xBCB8, 0x51E0}, //{0xE5, 0x87, 0xA0}, //
- {0xB7B2, 0x51E1}, //{0xE5, 0x87, 0xA1}, //
- {0xB7EF, 0x51E4}, //{0xE5, 0x87, 0xA4}, //
- {0xD9EC, 0x51EB}, //{0xE5, 0x87, 0xAB}, //
+ {0xC1B9, 0x51C9}, //{0xE5, 0x87, 0x89}, // y
+ {0xC1E8, 0x51CC}, //{0xE5, 0x87, 0x8C}, // ��
+ {0xBCF5, 0x51CF}, //{0xE5, 0x87, 0x8F}, // ��
+ {0xB4D5, 0x51D1}, //{0xE5, 0x87, 0x91}, // ��
+ {0xC1DD, 0x51DB}, //{0xE5, 0x87, 0x9B}, // ��
+ {0xC4FD, 0x51DD}, //{0xE5, 0x87, 0x9D}, // ��
+ {0xBCB8, 0x51E0}, //{0xE5, 0x87, 0xA0}, // ��
+ {0xB7B2, 0x51E1}, //{0xE5, 0x87, 0xA1}, // ��
+ {0xB7EF, 0x51E4}, //{0xE5, 0x87, 0xA4}, // ��
+ {0xD9EC, 0x51EB}, //{0xE5, 0x87, 0xAB}, // ��
{0xC6BE, 0x51ED}, //{0xE5, 0x87, 0xAD}, // ƾ
- {0xBFAD, 0x51EF}, //{0xE5, 0x87, 0xAF}, //
- {0xBBCB, 0x51F0}, //{0xE5, 0x87, 0xB0}, //
- {0xB5CA, 0x51F3}, //{0xE5, 0x87, 0xB3}, //
- {0xD0D7, 0x51F6}, //{0xE5, 0x87, 0xB6}, //
+ {0xBFAD, 0x51EF}, //{0xE5, 0x87, 0xAF}, // ��
+ {0xBBCB, 0x51F0}, //{0xE5, 0x87, 0xB0}, // ��
+ {0xB5CA, 0x51F3}, //{0xE5, 0x87, 0xB3}, // ��
+ {0xD0D7, 0x51F6}, //{0xE5, 0x87, 0xB6}, // ��
{0xCDB9, 0x51F8}, //{0xE5, 0x87, 0xB8}, //
- {0xB0BC, 0x51F9}, //{0xE5, 0x87, 0xB9}, //
- {0xB3F6, 0x51FA}, //{0xE5, 0x87, 0xBA}, //
- {0xBBF7, 0x51FB}, //{0xE5, 0x87, 0xBB}, //
- {0xBAAF, 0x51FD}, //{0xE5, 0x87, 0xBD}, //
- {0xD4E4, 0x51FF}, //{0xE5, 0x87, 0xBF}, //
- {0xB5B6, 0x5200}, //{0xE5, 0x88, 0x80}, //
- {0xB5F3, 0x5201}, //{0xE5, 0x88, 0x81}, //
- {0xC8D0, 0x5203}, //{0xE5, 0x88, 0x83}, //
- {0xB7D6, 0x5206}, //{0xE5, 0x88, 0x86}, //
- {0xC7D0, 0x5207}, //{0xE5, 0x88, 0x87}, //
- {0xBFAF, 0x520A}, //{0xE5, 0x88, 0x8A}, //
- {0xD0CC, 0x5211}, //{0xE5, 0x88, 0x91}, //
- {0xBBAE, 0x5212}, //{0xE5, 0x88, 0x92}, //
- {0xC1D0, 0x5217}, //{0xE5, 0x88, 0x97}, //
- {0xC1F5, 0x5218}, //{0xE5, 0x88, 0x98}, //
- {0xD4F2, 0x5219}, //{0xE5, 0x88, 0x99}, //
- {0xB8D5, 0x521A}, //{0xE5, 0x88, 0x9A}, //
- {0xB4B4, 0x521B}, //{0xE5, 0x88, 0x9B}, //
- {0xB3F5, 0x521D}, //{0xE5, 0x88, 0x9D}, //
+ {0xB0BC, 0x51F9}, //{0xE5, 0x87, 0xB9}, // ��
+ {0xB3F6, 0x51FA}, //{0xE5, 0x87, 0xBA}, // ��
+ {0xBBF7, 0x51FB}, //{0xE5, 0x87, 0xBB}, // ��
+ {0xBAAF, 0x51FD}, //{0xE5, 0x87, 0xBD}, // ��
+ {0xD4E4, 0x51FF}, //{0xE5, 0x87, 0xBF}, // ��
+ {0xB5B6, 0x5200}, //{0xE5, 0x88, 0x80}, // ��
+ {0xB5F3, 0x5201}, //{0xE5, 0x88, 0x81}, // ��
+ {0xC8D0, 0x5203}, //{0xE5, 0x88, 0x83}, // ��
+ {0xB7D6, 0x5206}, //{0xE5, 0x88, 0x86}, // ��
+ {0xC7D0, 0x5207}, //{0xE5, 0x88, 0x87}, // ��
+ {0xBFAF, 0x520A}, //{0xE5, 0x88, 0x8A}, // ��
+ {0xD0CC, 0x5211}, //{0xE5, 0x88, 0x91}, // ��
+ {0xBBAE, 0x5212}, //{0xE5, 0x88, 0x92}, // ��
+ {0xC1D0, 0x5217}, //{0xE5, 0x88, 0x97}, // ��
+ {0xC1F5, 0x5218}, //{0xE5, 0x88, 0x98}, // ��
+ {0xD4F2, 0x5219}, //{0xE5, 0x88, 0x99}, // ��
+ {0xB8D5, 0x521A}, //{0xE5, 0x88, 0x9A}, // ��
+ {0xB4B4, 0x521B}, //{0xE5, 0x88, 0x9B}, // ��
+ {0xB3F5, 0x521D}, //{0xE5, 0x88, 0x9D}, // ��
{0xC9BE, 0x5220}, //{0xE5, 0x88, 0xA0}, // ɾ
- {0xC5D0, 0x5224}, //{0xE5, 0x88, 0xA4}, //
- {0xC5D9, 0x5228}, //{0xE5, 0x88, 0xA8}, //
- {0xC0FB, 0x5229}, //{0xE5, 0x88, 0xA9}, //
- {0xB1F0, 0x522B}, //{0xE5, 0x88, 0xAB}, //
- {0xB9CE, 0x522E}, //{0xE5, 0x88, 0xAE}, //
- {0xB5BD, 0x5230}, //{0xE5, 0x88, 0xB0}, //
- {0xD6C6, 0x5236}, //{0xE5, 0x88, 0xB6}, //
+ {0xC5D0, 0x5224}, //{0xE5, 0x88, 0xA4}, // ��
+ {0xC5D9, 0x5228}, //{0xE5, 0x88, 0xA8}, // ��
+ {0xC0FB, 0x5229}, //{0xE5, 0x88, 0xA9}, // ��
+ {0xB1F0, 0x522B}, //{0xE5, 0x88, 0xAB}, // ��
+ {0xB9CE, 0x522E}, //{0xE5, 0x88, 0xAE}, // ��
+ {0xB5BD, 0x5230}, //{0xE5, 0x88, 0xB0}, // ��
+ {0xD6C6, 0x5236}, //{0xE5, 0x88, 0xB6}, // ��
{0xCBA2, 0x5237}, //{0xE5, 0x88, 0xB7}, // ˢ
{0xC8AF, 0x5238}, //{0xE5, 0x88, 0xB8}, // ȯ
{0xC9B2, 0x5239}, //{0xE5, 0x88, 0xB9}, // ɲ
- {0xB4CC, 0x523A}, //{0xE5, 0x88, 0xBA}, //
- {0xBFCC, 0x523B}, //{0xE5, 0x88, 0xBB}, //
- {0xB9F4, 0x523D}, //{0xE5, 0x88, 0xBD}, //
- {0xBCC1, 0x5242}, //{0xE5, 0x89, 0x82}, //
- {0xCCEA, 0x5243}, //{0xE5, 0x89, 0x83}, //
- {0xCFF7, 0x524A}, //{0xE5, 0x89, 0x8A}, //
+ {0xB4CC, 0x523A}, //{0xE5, 0x88, 0xBA}, // ��
+ {0xBFCC, 0x523B}, //{0xE5, 0x88, 0xBB}, // ��
+ {0xB9F4, 0x523D}, //{0xE5, 0x88, 0xBD}, // ��
+ {0xBCC1, 0x5242}, //{0xE5, 0x89, 0x82}, // ��
+ {0xCCEA, 0x5243}, //{0xE5, 0x89, 0x83}, // ��
+ {0xCFF7, 0x524A}, //{0xE5, 0x89, 0x8A}, // ��
{0xC7B0, 0x524D}, //{0xE5, 0x89, 0x8D}, // ǰ
- {0xBDA3, 0x5251}, //{0xE5, 0x89, 0x91}, //
- {0xCCDE, 0x5254}, //{0xE5, 0x89, 0x94}, //
- {0xC6CA, 0x5256}, //{0xE5, 0x89, 0x96}, //
- {0xB0FE, 0x5265}, //{0xE5, 0x89, 0xA5}, //
- {0xBEE7, 0x5267}, //{0xE5, 0x89, 0xA7}, //
+ {0xBDA3, 0x5251}, //{0xE5, 0x89, 0x91}, // ��
+ {0xCCDE, 0x5254}, //{0xE5, 0x89, 0x94}, // ��
+ {0xC6CA, 0x5256}, //{0xE5, 0x89, 0x96}, // ��
+ {0xB0FE, 0x5265}, //{0xE5, 0x89, 0xA5}, // ��
+ {0xBEE7, 0x5267}, //{0xE5, 0x89, 0xA7}, // ��
{0xCAA3, 0x5269}, //{0xE5, 0x89, 0xA9}, // ʣ
- {0xBCF4, 0x526A}, //{0xE5, 0x89, 0xAA}, //
- {0xB8B1, 0x526F}, //{0xE5, 0x89, 0xAF}, //
- {0xB8EE, 0x5272}, //{0xE5, 0x89, 0xB2}, //
- {0xBDCB, 0x527F}, //{0xE5, 0x89, 0xBF}, //
- {0xC5FC, 0x5288}, //{0xE5, 0x8A, 0x88}, //
- {0xC1A6, 0x529B}, //{0xE5, 0x8A, 0x9B}, //
+ {0xBCF4, 0x526A}, //{0xE5, 0x89, 0xAA}, // ��
+ {0xB8B1, 0x526F}, //{0xE5, 0x89, 0xAF}, // ��
+ {0xB8EE, 0x5272}, //{0xE5, 0x89, 0xB2}, // ��
+ {0xBDCB, 0x527F}, //{0xE5, 0x89, 0xBF}, // ��
+ {0xC5FC, 0x5288}, //{0xE5, 0x8A, 0x88}, // ��
+ {0xC1A6, 0x529B}, //{0xE5, 0x8A, 0x9B}, // f
{0xC8B0, 0x529D}, //{0xE5, 0x8A, 0x9D}, // Ȱ
- {0xB0EC, 0x529E}, //{0xE5, 0x8A, 0x9E}, //
- {0xB9A6, 0x529F}, //{0xE5, 0x8A, 0x9F}, //
- {0xBCD3, 0x52A0}, //{0xE5, 0x8A, 0xA0}, //
- {0xCEF1, 0x52A1}, //{0xE5, 0x8A, 0xA1}, //
- {0xC1D3, 0x52A3}, //{0xE5, 0x8A, 0xA3}, //
- {0xB6AF, 0x52A8}, //{0xE5, 0x8A, 0xA8}, //
- {0xD6FA, 0x52A9}, //{0xE5, 0x8A, 0xA9}, //
+ {0xB0EC, 0x529E}, //{0xE5, 0x8A, 0x9E}, // ��
+ {0xB9A6, 0x529F}, //{0xE5, 0x8A, 0x9F}, // ��
+ {0xBCD3, 0x52A0}, //{0xE5, 0x8A, 0xA0}, // ��
+ {0xCEF1, 0x52A1}, //{0xE5, 0x8A, 0xA1}, // ��
+ {0xC1D3, 0x52A3}, //{0xE5, 0x8A, 0xA3}, // ��
+ {0xB6AF, 0x52A8}, //{0xE5, 0x8A, 0xA8}, // ��
+ {0xD6FA, 0x52A9}, //{0xE5, 0x8A, 0xA9}, // ��
{0xC5AC, 0x52AA}, //{0xE5, 0x8A, 0xAA}, // Ŭ
- {0xBDD9, 0x52AB}, //{0xE5, 0x8A, 0xAB}, //
- {0xC0F8, 0x52B1}, //{0xE5, 0x8A, 0xB1}, //
- {0xBEA2, 0x52B2}, //{0xE5, 0x8A, 0xB2}, //
- {0xC0CD, 0x52B3}, //{0xE5, 0x8A, 0xB3}, //
- {0xCAC6, 0x52BF}, //{0xE5, 0x8A, 0xBF}, //
- {0xB2AA, 0x52C3}, //{0xE5, 0x8B, 0x83}, //
- {0xD3C2, 0x52C7}, //{0xE5, 0x8B, 0x87}, //
- {0xC3E3, 0x52C9}, //{0xE5, 0x8B, 0x89}, //
+ {0xBDD9, 0x52AB}, //{0xE5, 0x8A, 0xAB}, // ��
+ {0xC0F8, 0x52B1}, //{0xE5, 0x8A, 0xB1}, // ��
+ {0xBEA2, 0x52B2}, //{0xE5, 0x8A, 0xB2}, // ��
+ {0xC0CD, 0x52B3}, //{0xE5, 0x8A, 0xB3}, // ��
+ {0xCAC6, 0x52BF}, //{0xE5, 0x8A, 0xBF}, // ��
+ {0xB2AA, 0x52C3}, //{0xE5, 0x8B, 0x83}, // ��
+ {0xD3C2, 0x52C7}, //{0xE5, 0x8B, 0x87}, // ��
+ {0xC3E3, 0x52C9}, //{0xE5, 0x8B, 0x89}, // ��
{0xD1AB, 0x52CB}, //{0xE5, 0x8B, 0x8B}, // ѫ
- {0xC0D5, 0x52D2}, //{0xE5, 0x8B, 0x92}, //
- {0xBFB1, 0x52D8}, //{0xE5, 0x8B, 0x98}, //
+ {0xC0D5, 0x52D2}, //{0xE5, 0x8B, 0x92}, // ��
+ {0xBFB1, 0x52D8}, //{0xE5, 0x8B, 0x98}, // ��
{0xC4BC, 0x52DF}, //{0xE5, 0x8B, 0x9F}, // ļ
- {0xC7DA, 0x52E4}, //{0xE5, 0x8B, 0xA4}, //
- {0xC9D7, 0x52FA}, //{0xE5, 0x8B, 0xBA}, //
- {0xB9B4, 0x52FE}, //{0xE5, 0x8B, 0xBE}, //
- {0xCEF0, 0x52FF}, //{0xE5, 0x8B, 0xBF}, //
- {0xD4C8, 0x5300}, //{0xE5, 0x8C, 0x80}, //
- {0xB0FC, 0x5305}, //{0xE5, 0x8C, 0x85}, //
- {0xB4D2, 0x5306}, //{0xE5, 0x8C, 0x86}, //
- {0xD0D9, 0x5308}, //{0xE5, 0x8C, 0x88}, //
+ {0xC7DA, 0x52E4}, //{0xE5, 0x8B, 0xA4}, // ��
+ {0xC9D7, 0x52FA}, //{0xE5, 0x8B, 0xBA}, // ��
+ {0xB9B4, 0x52FE}, //{0xE5, 0x8B, 0xBE}, // ��
+ {0xCEF0, 0x52FF}, //{0xE5, 0x8B, 0xBF}, // ��
+ {0xD4C8, 0x5300}, //{0xE5, 0x8C, 0x80}, // ��
+ {0xB0FC, 0x5305}, //{0xE5, 0x8C, 0x85}, // ��
+ {0xB4D2, 0x5306}, //{0xE5, 0x8C, 0x86}, // ��
+ {0xD0D9, 0x5308}, //{0xE5, 0x8C, 0x88}, // ��
{0xD8B0, 0x5315}, //{0xE5, 0x8C, 0x95}, // ذ
- {0xBBAF, 0x5316}, //{0xE5, 0x8C, 0x96}, //
- {0xB1B1, 0x5317}, //{0xE5, 0x8C, 0x97}, //
- {0xB3D7, 0x5319}, //{0xE5, 0x8C, 0x99}, //
- {0xBDB3, 0x5320}, //{0xE5, 0x8C, 0xA0}, //
+ {0xBBAF, 0x5316}, //{0xE5, 0x8C, 0x96}, // ��
+ {0xB1B1, 0x5317}, //{0xE5, 0x8C, 0x97}, // ��
+ {0xB3D7, 0x5319}, //{0xE5, 0x8C, 0x99}, // ��
+ {0xBDB3, 0x5320}, //{0xE5, 0x8C, 0xA0}, // ��
{0xCFBB, 0x5323}, //{0xE5, 0x8C, 0xA3}, // ϻ
- {0xB7CB, 0x532A}, //{0xE5, 0x8C, 0xAA}, //
+ {0xB7CB, 0x532A}, //{0xE5, 0x8C, 0xAA}, // ��
{0xC6A5, 0x5339}, //{0xE5, 0x8C, 0xB9}, // ƥ
- {0xC7F8, 0x533A}, //{0xE5, 0x8C, 0xBA}, //
+ {0xC7F8, 0x533A}, //{0xE5, 0x8C, 0xBA}, // ��
{0xD2BD, 0x533B}, //{0xE5, 0x8C, 0xBB}, // ҽ
- {0xD8D2, 0x533E}, //{0xE5, 0x8C, 0xBE}, //
- {0xC4E4, 0x533F}, //{0xE5, 0x8C, 0xBF}, //
+ {0xD8D2, 0x533E}, //{0xE5, 0x8C, 0xBE}, // ��
+ {0xC4E4, 0x533F}, //{0xE5, 0x8C, 0xBF}, // ��
{0xCAAE, 0x5341}, //{0xE5, 0x8D, 0x81}, // ʮ
{0xC7A7, 0x5343}, //{0xE5, 0x8D, 0x83}, // ǧ
- {0xC9FD, 0x5347}, //{0xE5, 0x8D, 0x87}, //
- {0xCEE7, 0x5348}, //{0xE5, 0x8D, 0x88}, //
- {0xB0EB, 0x534A}, //{0xE5, 0x8D, 0x8A}, //
- {0xBBAA, 0x534E}, //{0xE5, 0x8D, 0x8E}, //
+ {0xC9FD, 0x5347}, //{0xE5, 0x8D, 0x87}, // ��
+ {0xCEE7, 0x5348}, //{0xE5, 0x8D, 0x88}, // ��
+ {0xB0EB, 0x534A}, //{0xE5, 0x8D, 0x8A}, // ��
+ {0xBBAA, 0x534E}, //{0xE5, 0x8D, 0x8E}, // ��
{0xD0AD, 0x534F}, //{0xE5, 0x8D, 0x8F}, // Э
- {0xB1B0, 0x5351}, //{0xE5, 0x8D, 0x91}, //
- {0xD7E4, 0x5352}, //{0xE5, 0x8D, 0x92}, //
+ {0xB1B0, 0x5351}, //{0xE5, 0x8D, 0x91}, // ��
+ {0xD7E4, 0x5352}, //{0xE5, 0x8D, 0x92}, // ��
{0xD7BF, 0x5353}, //{0xE5, 0x8D, 0x93}, //
- {0xB5A5, 0x5355}, //{0xE5, 0x8D, 0x95}, //
- {0xC2F4, 0x5356}, //{0xE5, 0x8D, 0x96}, //
- {0xC4CF, 0x5357}, //{0xE5, 0x8D, 0x97}, //
- {0xB2A9, 0x535A}, //{0xE5, 0x8D, 0x9A}, //
- {0xB2B7, 0x535C}, //{0xE5, 0x8D, 0x9C}, //
+ {0xB5A5, 0x5355}, //{0xE5, 0x8D, 0x95}, // ��
+ {0xC2F4, 0x5356}, //{0xE5, 0x8D, 0x96}, // ��
+ {0xC4CF, 0x5357}, //{0xE5, 0x8D, 0x97}, // ��
+ {0xB2A9, 0x535A}, //{0xE5, 0x8D, 0x9A}, // ��
+ {0xB2B7, 0x535C}, //{0xE5, 0x8D, 0x9C}, // ��
{0xD5BC, 0x5360}, //{0xE5, 0x8D, 0xA0}, // ռ
- {0xBFA8, 0x5361}, //{0xE5, 0x8D, 0xA1}, //
+ {0xBFA8, 0x5361}, //{0xE5, 0x8D, 0xA1}, // ��
{0xC2AC, 0x5362}, //{0xE5, 0x8D, 0xA2}, // ¬
{0xC2B1, 0x5364}, //{0xE5, 0x8D, 0xA4}, // ±
- {0xD8D4, 0x5366}, //{0xE5, 0x8D, 0xA6}, //
- {0xCED4, 0x5367}, //{0xE5, 0x8D, 0xA7}, //
- {0xCEC0, 0x536B}, //{0xE5, 0x8D, 0xAB}, //
+ {0xD8D4, 0x5366}, //{0xE5, 0x8D, 0xA6}, // ��
+ {0xCED4, 0x5367}, //{0xE5, 0x8D, 0xA7}, // ��
+ {0xCEC0, 0x536B}, //{0xE5, 0x8D, 0xAB}, // ��
{0xD3A1, 0x5370}, //{0xE5, 0x8D, 0xB0}, // ӡ
{0xCEA3, 0x5371}, //{0xE5, 0x8D, 0xB1}, // Σ
- {0xBCB4, 0x5373}, //{0xE5, 0x8D, 0xB3}, //
+ {0xBCB4, 0x5373}, //{0xE5, 0x8D, 0xB3}, // ��
{0xC8B4, 0x5374}, //{0xE5, 0x8D, 0xB4}, // ȴ
- {0xC2D1, 0x5375}, //{0xE5, 0x8D, 0xB5}, //
- {0xBEED, 0x5377}, //{0xE5, 0x8D, 0xB7}, //
+ {0xC2D1, 0x5375}, //{0xE5, 0x8D, 0xB5}, // ��
+ {0xBEED, 0x5377}, //{0xE5, 0x8D, 0xB7}, // ��
{0xD0B6, 0x5378}, //{0xE5, 0x8D, 0xB8}, // ж
- {0xC7E4, 0x537F}, //{0xE5, 0x8D, 0xBF}, //
- {0xB3A7, 0x5382}, //{0xE5, 0x8E, 0x82}, //
- {0xCCFC, 0x5385}, //{0xE5, 0x8E, 0x85}, //
- {0xC0FA, 0x5386}, //{0xE5, 0x8E, 0x86}, //
- {0xC0F7, 0x5389}, //{0xE5, 0x8E, 0x89}, //
+ {0xC7E4, 0x537F}, //{0xE5, 0x8D, 0xBF}, // ��
+ {0xB3A7, 0x5382}, //{0xE5, 0x8E, 0x82}, // ��
+ {0xCCFC, 0x5385}, //{0xE5, 0x8E, 0x85}, // ��
+ {0xC0FA, 0x5386}, //{0xE5, 0x8E, 0x86}, // ��
+ {0xC0F7, 0x5389}, //{0xE5, 0x8E, 0x89}, // ��
{0xD1B9, 0x538B}, //{0xE5, 0x8E, 0x8B}, // ѹ
- {0xD1E1, 0x538C}, //{0xE5, 0x8E, 0x8C}, //
- {0xB2DE, 0x5395}, //{0xE5, 0x8E, 0x95}, //
- {0xC0E5, 0x5398}, //{0xE5, 0x8E, 0x98}, //
- {0xBAF1, 0x539A}, //{0xE5, 0x8E, 0x9A}, //
+ {0xD1E1, 0x538C}, //{0xE5, 0x8E, 0x8C}, // ��
+ {0xB2DE, 0x5395}, //{0xE5, 0x8E, 0x95}, // ��
+ {0xC0E5, 0x5398}, //{0xE5, 0x8E, 0x98}, // ��
+ {0xBAF1, 0x539A}, //{0xE5, 0x8E, 0x9A}, // ��
{0xD4AD, 0x539F}, //{0xE5, 0x8E, 0x9F}, // ԭ
- {0xCFE1, 0x53A2}, //{0xE5, 0x8E, 0xA2}, //
- {0xCFC3, 0x53A6}, //{0xE5, 0x8E, 0xA6}, //
- {0xB3F8, 0x53A8}, //{0xE5, 0x8E, 0xA8}, //
+ {0xCFE1, 0x53A2}, //{0xE5, 0x8E, 0xA2}, // ��
+ {0xCFC3, 0x53A6}, //{0xE5, 0x8E, 0xA6}, // ��
+ {0xB3F8, 0x53A8}, //{0xE5, 0x8E, 0xA8}, // ��
{0xC8A5, 0x53BB}, //{0xE5, 0x8E, 0xBB}, // ȥ
- {0xCFD8, 0x53BF}, //{0xE5, 0x8E, 0xBF}, //
- {0xB2CE, 0x53C2}, //{0xE5, 0x8F, 0x82}, //
- {0xD3D6, 0x53C8}, //{0xE5, 0x8F, 0x88}, //
- {0xB2E6, 0x53C9}, //{0xE5, 0x8F, 0x89}, //
- {0xBCB0, 0x53CA}, //{0xE5, 0x8F, 0x8A}, //
- {0xD3D1, 0x53CB}, //{0xE5, 0x8F, 0x8B}, //
+ {0xCFD8, 0x53BF}, //{0xE5, 0x8E, 0xBF}, // ��
+ {0xB2CE, 0x53C2}, //{0xE5, 0x8F, 0x82}, // ��
+ {0xD3D6, 0x53C8}, //{0xE5, 0x8F, 0x88}, // ��
+ {0xB2E6, 0x53C9}, //{0xE5, 0x8F, 0x89}, // ��
+ {0xBCB0, 0x53CA}, //{0xE5, 0x8F, 0x8A}, // ��
+ {0xD3D1, 0x53CB}, //{0xE5, 0x8F, 0x8B}, // ��
{0xCBAB, 0x53CC}, //{0xE5, 0x8F, 0x8C}, // ˫
- {0xB7B4, 0x53CD}, //{0xE5, 0x8F, 0x8D}, //
- {0xB7A2, 0x53D1}, //{0xE5, 0x8F, 0x91}, //
- {0xCAE5, 0x53D4}, //{0xE5, 0x8F, 0x94}, //
+ {0xB7B4, 0x53CD}, //{0xE5, 0x8F, 0x8D}, // ��
+ {0xB7A2, 0x53D1}, //{0xE5, 0x8F, 0x91}, // ��
+ {0xCAE5, 0x53D4}, //{0xE5, 0x8F, 0x94}, // ��
{0xC8A1, 0x53D6}, //{0xE5, 0x8F, 0x96}, // ȡ
- {0xCADC, 0x53D7}, //{0xE5, 0x8F, 0x97}, //
- {0xB1E4, 0x53D8}, //{0xE5, 0x8F, 0x98}, //
- {0xD0F0, 0x53D9}, //{0xE5, 0x8F, 0x99}, //
- {0xC5D1, 0x53DB}, //{0xE5, 0x8F, 0x9B}, //
- {0xB5FE, 0x53E0}, //{0xE5, 0x8F, 0xA0}, //
- {0xBFDA, 0x53E3}, //{0xE5, 0x8F, 0xA3}, //
- {0xB9C5, 0x53E4}, //{0xE5, 0x8F, 0xA4}, //
- {0xBEE4, 0x53E5}, //{0xE5, 0x8F, 0xA5}, //
- {0xC1ED, 0x53E6}, //{0xE5, 0x8F, 0xA6}, //
+ {0xCADC, 0x53D7}, //{0xE5, 0x8F, 0x97}, // ��
+ {0xB1E4, 0x53D8}, //{0xE5, 0x8F, 0x98}, // ��
+ {0xD0F0, 0x53D9}, //{0xE5, 0x8F, 0x99}, // ��
+ {0xC5D1, 0x53DB}, //{0xE5, 0x8F, 0x9B}, // ��
+ {0xB5FE, 0x53E0}, //{0xE5, 0x8F, 0xA0}, // ��
+ {0xBFDA, 0x53E3}, //{0xE5, 0x8F, 0xA3}, // ��
+ {0xB9C5, 0x53E4}, //{0xE5, 0x8F, 0xA4}, // ��
+ {0xBEE4, 0x53E5}, //{0xE5, 0x8F, 0xA5}, // ��
+ {0xC1ED, 0x53E6}, //{0xE5, 0x8F, 0xA6}, // ��
{0xDFB6, 0x53E8}, //{0xE5, 0x8F, 0xA8}, // ߶
{0xD6BB, 0x53EA}, //{0xE5, 0x8F, 0xAA}, // ֻ
- {0xBDD0, 0x53EB}, //{0xE5, 0x8F, 0xAB}, //
- {0xD5D9, 0x53EC}, //{0xE5, 0x8F, 0xAC}, //
- {0xB0C8, 0x53ED}, //{0xE5, 0x8F, 0xAD}, //
- {0xB6A3, 0x53EE}, //{0xE5, 0x8F, 0xAE}, //
- {0xBFC9, 0x53EF}, //{0xE5, 0x8F, 0xAF}, //
+ {0xBDD0, 0x53EB}, //{0xE5, 0x8F, 0xAB}, // ��
+ {0xD5D9, 0x53EC}, //{0xE5, 0x8F, 0xAC}, // ��
+ {0xB0C8, 0x53ED}, //{0xE5, 0x8F, 0xAD}, // ��
+ {0xB6A3, 0x53EE}, //{0xE5, 0x8F, 0xAE}, // ��
+ {0xBFC9, 0x53EF}, //{0xE5, 0x8F, 0xAF}, // ��
{0xCCA8, 0x53F0}, //{0xE5, 0x8F, 0xB0}, // ̨
{0xCAB7, 0x53F2}, //{0xE5, 0x8F, 0xB2}, // ʷ
- {0xD3D2, 0x53F3}, //{0xE5, 0x8F, 0xB3}, //
+ {0xD3D2, 0x53F3}, //{0xE5, 0x8F, 0xB3}, // ��
{0xD2B6, 0x53F6}, //{0xE5, 0x8F, 0xB6}, // Ҷ
- {0xBAC5, 0x53F7}, //{0xE5, 0x8F, 0xB7}, //
+ {0xBAC5, 0x53F7}, //{0xE5, 0x8F, 0xB7}, // ��
{0xCBBE, 0x53F8}, //{0xE5, 0x8F, 0xB8}, // ˾
{0xCCBE, 0x53F9}, //{0xE5, 0x8F, 0xB9}, // ̾
- {0xB5F0, 0x53FC}, //{0xE5, 0x8F, 0xBC}, //
+ {0xB5F0, 0x53FC}, //{0xE5, 0x8F, 0xBC}, // ��
{0xDFB4, 0x53FD}, //{0xE5, 0x8F, 0xBD}, // ߴ
- {0xD3F5, 0x5401}, //{0xE5, 0x90, 0x81}, //
- {0xB3D4, 0x5403}, //{0xE5, 0x90, 0x83}, //
- {0xB8F7, 0x5404}, //{0xE5, 0x90, 0x84}, //
+ {0xD3F5, 0x5401}, //{0xE5, 0x90, 0x81}, // ��
+ {0xB3D4, 0x5403}, //{0xE5, 0x90, 0x83}, // ��
+ {0xB8F7, 0x5404}, //{0xE5, 0x90, 0x84}, // ��
{0xDFBA, 0x5406}, //{0xE5, 0x90, 0x86}, // ߺ
- {0xBACF, 0x5408}, //{0xE5, 0x90, 0x88}, //
- {0xBCAA, 0x5409}, //{0xE5, 0x90, 0x89}, //
- {0xB5F5, 0x540A}, //{0xE5, 0x90, 0x8A}, //
+ {0xBACF, 0x5408}, //{0xE5, 0x90, 0x88}, // ��
+ {0xBCAA, 0x5409}, //{0xE5, 0x90, 0x89}, // ��
+ {0xB5F5, 0x540A}, //{0xE5, 0x90, 0x8A}, // ��
{0xCDAC, 0x540C}, //{0xE5, 0x90, 0x8C}, // ͬ
- {0xC3FB, 0x540D}, //{0xE5, 0x90, 0x8D}, //
- {0xBAF3, 0x540E}, //{0xE5, 0x90, 0x8E}, //
- {0xC0F4, 0x540F}, //{0xE5, 0x90, 0x8F}, //
- {0xCDC2, 0x5410}, //{0xE5, 0x90, 0x90}, //
- {0xCFF2, 0x5411}, //{0xE5, 0x90, 0x91}, //
- {0xCFC5, 0x5413}, //{0xE5, 0x90, 0x93}, //
- {0xC2C0, 0x5415}, //{0xE5, 0x90, 0x95}, //
- {0xC2F0, 0x5417}, //{0xE5, 0x90, 0x97}, //
- {0xBEFD, 0x541B}, //{0xE5, 0x90, 0x9B}, //
- {0xC1DF, 0x541D}, //{0xE5, 0x90, 0x9D}, //
- {0xCDCC, 0x541E}, //{0xE5, 0x90, 0x9E}, //
- {0xD2F7, 0x541F}, //{0xE5, 0x90, 0x9F}, //
- {0xB7CD, 0x5420}, //{0xE5, 0x90, 0xA0}, //
- {0xB7F1, 0x5426}, //{0xE5, 0x90, 0xA6}, //
- {0xB0C9, 0x5427}, //{0xE5, 0x90, 0xA7}, //
- {0xB6D6, 0x5428}, //{0xE5, 0x90, 0xA8}, //
- {0xB7D4, 0x5429}, //{0xE5, 0x90, 0xA9}, //
- {0xBAAC, 0x542B}, //{0xE5, 0x90, 0xAB}, //
- {0xCCFD, 0x542C}, //{0xE5, 0x90, 0xAC}, //
- {0xBFD4, 0x542D}, //{0xE5, 0x90, 0xAD}, //
+ {0xC3FB, 0x540D}, //{0xE5, 0x90, 0x8D}, // ��
+ {0xBAF3, 0x540E}, //{0xE5, 0x90, 0x8E}, // ��
+ {0xC0F4, 0x540F}, //{0xE5, 0x90, 0x8F}, // ��
+ {0xCDC2, 0x5410}, //{0xE5, 0x90, 0x90}, // ��
+ {0xCFF2, 0x5411}, //{0xE5, 0x90, 0x91}, // ��
+ {0xCFC5, 0x5413}, //{0xE5, 0x90, 0x93}, // ��
+ {0xC2C0, 0x5415}, //{0xE5, 0x90, 0x95}, // ��
+ {0xC2F0, 0x5417}, //{0xE5, 0x90, 0x97}, // ��
+ {0xBEFD, 0x541B}, //{0xE5, 0x90, 0x9B}, // ��
+ {0xC1DF, 0x541D}, //{0xE5, 0x90, 0x9D}, // ��
+ {0xCDCC, 0x541E}, //{0xE5, 0x90, 0x9E}, // ��
+ {0xD2F7, 0x541F}, //{0xE5, 0x90, 0x9F}, // ��
+ {0xB7CD, 0x5420}, //{0xE5, 0x90, 0xA0}, // ��
+ {0xB7F1, 0x5426}, //{0xE5, 0x90, 0xA6}, // ��
+ {0xB0C9, 0x5427}, //{0xE5, 0x90, 0xA7}, // ��
+ {0xB6D6, 0x5428}, //{0xE5, 0x90, 0xA8}, // ��
+ {0xB7D4, 0x5429}, //{0xE5, 0x90, 0xA9}, // ��
+ {0xBAAC, 0x542B}, //{0xE5, 0x90, 0xAB}, // ��
+ {0xCCFD, 0x542C}, //{0xE5, 0x90, 0xAC}, // ��
+ {0xBFD4, 0x542D}, //{0xE5, 0x90, 0xAD}, // ��
{0xCBB1, 0x542E}, //{0xE5, 0x90, 0xAE}, // ˱
- {0xC6F4, 0x542F}, //{0xE5, 0x90, 0xAF}, //
+ {0xC6F4, 0x542F}, //{0xE5, 0x90, 0xAF}, // ��
{0xD6A8, 0x5431}, //{0xE5, 0x90, 0xB1}, // ֨
- {0xCEE2, 0x5434}, //{0xE5, 0x90, 0xB4}, //
- {0xB3B3, 0x5435}, //{0xE5, 0x90, 0xB5}, //
- {0xCEFC, 0x5438}, //{0xE5, 0x90, 0xB8}, //
- {0xB4B5, 0x5439}, //{0xE5, 0x90, 0xB9}, //
- {0xCEC7, 0x543B}, //{0xE5, 0x90, 0xBB}, //
- {0xBAF0, 0x543C}, //{0xE5, 0x90, 0xBC}, //
+ {0xCEE2, 0x5434}, //{0xE5, 0x90, 0xB4}, // ��
+ {0xB3B3, 0x5435}, //{0xE5, 0x90, 0xB5}, // ��
+ {0xCEFC, 0x5438}, //{0xE5, 0x90, 0xB8}, // ��
+ {0xB4B5, 0x5439}, //{0xE5, 0x90, 0xB9}, // ��
+ {0xCEC7, 0x543B}, //{0xE5, 0x90, 0xBB}, // ��
+ {0xBAF0, 0x543C}, //{0xE5, 0x90, 0xBC}, // ��
{0xD1BD, 0x5440}, //{0xE5, 0x91, 0x80}, // ѽ
- {0xB4F4, 0x5446}, //{0xE5, 0x91, 0x86}, //
- {0xB3CA, 0x5448}, //{0xE5, 0x91, 0x88}, //
- {0xB8E6, 0x544A}, //{0xE5, 0x91, 0x8A}, //
- {0xC4C5, 0x5450}, //{0xE5, 0x91, 0x90}, //
+ {0xB4F4, 0x5446}, //{0xE5, 0x91, 0x86}, // ��
+ {0xB3CA, 0x5448}, //{0xE5, 0x91, 0x88}, // ��
+ {0xB8E6, 0x544A}, //{0xE5, 0x91, 0x8A}, // ��
+ {0xC4C5, 0x5450}, //{0xE5, 0x91, 0x90}, // ��
{0xC5BB, 0x5455}, //{0xE5, 0x91, 0x95}, // Ż
{0xD4B1, 0x5458}, //{0xE5, 0x91, 0x98}, // Ա
{0xC7BA, 0x545B}, //{0xE5, 0x91, 0x9B}, // Ǻ
- {0xCED8, 0x545C}, //{0xE5, 0x91, 0x9C}, //
- {0xC4D8, 0x5462}, //{0xE5, 0x91, 0xA2}, //
- {0xD6DC, 0x5468}, //{0xE5, 0x91, 0xA8}, //
+ {0xCED8, 0x545C}, //{0xE5, 0x91, 0x9C}, // ��
+ {0xC4D8, 0x5462}, //{0xE5, 0x91, 0xA2}, // ��
+ {0xD6DC, 0x5468}, //{0xE5, 0x91, 0xA8}, // ��
{0xCEB6, 0x5473}, //{0xE5, 0x91, 0xB3}, // ζ
- {0xBAC7, 0x5475}, //{0xE5, 0x91, 0xB5}, //
- {0xC9EB, 0x547B}, //{0xE5, 0x91, 0xBB}, //
- {0xBAF4, 0x547C}, //{0xE5, 0x91, 0xBC}, //
- {0xC3FC, 0x547D}, //{0xE5, 0x91, 0xBD}, //
- {0xC5D8, 0x5486}, //{0xE5, 0x92, 0x86}, //
- {0xBACD, 0x548C}, //{0xE5, 0x92, 0x8C}, //
+ {0xBAC7, 0x5475}, //{0xE5, 0x91, 0xB5}, // ��
+ {0xC9EB, 0x547B}, //{0xE5, 0x91, 0xBB}, // ��
+ {0xBAF4, 0x547C}, //{0xE5, 0x91, 0xBC}, // ��
+ {0xC3FC, 0x547D}, //{0xE5, 0x91, 0xBD}, // ��
+ {0xC5D8, 0x5486}, //{0xE5, 0x92, 0x86}, // ��
+ {0xBACD, 0x548C}, //{0xE5, 0x92, 0x8C}, // ��
{0xD3BD, 0x548F}, //{0xE5, 0x92, 0x8F}, // ӽ
- {0xB8C0, 0x5490}, //{0xE5, 0x92, 0x90}, //
- {0xD6E4, 0x5492}, //{0xE5, 0x92, 0x92}, //
- {0xB9BE, 0x5495}, //{0xE5, 0x92, 0x95}, //
- {0xBFA7, 0x5496}, //{0xE5, 0x92, 0x96}, //
- {0xC1FC, 0x5499}, //{0xE5, 0x92, 0x99}, //
- {0xDFD6, 0x54A7}, //{0xE5, 0x92, 0xA7}, //
- {0xD7C9, 0x54A8}, //{0xE5, 0x92, 0xA8}, //
- {0xDFE4, 0x54AA}, //{0xE5, 0x92, 0xAA}, //
+ {0xB8C0, 0x5490}, //{0xE5, 0x92, 0x90}, // ��
+ {0xD6E4, 0x5492}, //{0xE5, 0x92, 0x92}, // ��
+ {0xB9BE, 0x5495}, //{0xE5, 0x92, 0x95}, // ��
+ {0xBFA7, 0x5496}, //{0xE5, 0x92, 0x96}, // ��
+ {0xC1FC, 0x5499}, //{0xE5, 0x92, 0x99}, // ��
+ {0xDFD6, 0x54A7}, //{0xE5, 0x92, 0xA7}, // ��
+ {0xD7C9, 0x54A8}, //{0xE5, 0x92, 0xA8}, // ��
+ {0xDFE4, 0x54AA}, //{0xE5, 0x92, 0xAA}, // ��
{0xD2A7, 0x54AC}, //{0xE5, 0x92, 0xAC}, // ҧ
- {0xD4DB, 0x54B1}, //{0xE5, 0x92, 0xB1}, //
- {0xBFC8, 0x54B3}, //{0xE5, 0x92, 0xB3}, //
- {0xCFCC, 0x54B8}, //{0xE5, 0x92, 0xB8}, //
- {0xD1CA, 0x54BD}, //{0xE5, 0x92, 0xBD}, //
- {0xB0A7, 0x54C0}, //{0xE5, 0x93, 0x80}, //
+ {0xD4DB, 0x54B1}, //{0xE5, 0x92, 0xB1}, // ��
+ {0xBFC8, 0x54B3}, //{0xE5, 0x92, 0xB3}, // ��
+ {0xCFCC, 0x54B8}, //{0xE5, 0x92, 0xB8}, // ��
+ {0xD1CA, 0x54BD}, //{0xE5, 0x92, 0xBD}, // ��
+ {0xB0A7, 0x54C0}, //{0xE5, 0x93, 0x80}, // ��
{0xC6B7, 0x54C1}, //{0xE5, 0x93, 0x81}, // Ʒ
- {0xBAE5, 0x54C4}, //{0xE5, 0x93, 0x84}, //
- {0xB6DF, 0x54C6}, //{0xE5, 0x93, 0x86}, //
- {0xB9FE, 0x54C8}, //{0xE5, 0x93, 0x88}, //
- {0xCFEC, 0x54CD}, //{0xE5, 0x93, 0x8D}, //
- {0xB0A5, 0x54CE}, //{0xE5, 0x93, 0x8E}, //
- {0xD1C6, 0x54D1}, //{0xE5, 0x93, 0x91}, //
- {0xBBA9, 0x54D7}, //{0xE5, 0x93, 0x97}, //
+ {0xBAE5, 0x54C4}, //{0xE5, 0x93, 0x84}, // ��
+ {0xB6DF, 0x54C6}, //{0xE5, 0x93, 0x86}, // ��
+ {0xB9FE, 0x54C8}, //{0xE5, 0x93, 0x88}, // ��
+ {0xCFEC, 0x54CD}, //{0xE5, 0x93, 0x8D}, // ��
+ {0xB0A5, 0x54CE}, //{0xE5, 0x93, 0x8E}, // ��
+ {0xD1C6, 0x54D1}, //{0xE5, 0x93, 0x91}, // ��
+ {0xBBA9, 0x54D7}, //{0xE5, 0x93, 0x97}, // ��
{0xD3B4, 0x54DF}, //{0xE5, 0x93, 0x9F}, // Ӵ
- {0xB8E7, 0x54E5}, //{0xE5, 0x93, 0xA5}, //
- {0xC9DA, 0x54E8}, //{0xE5, 0x93, 0xA8}, //
- {0xC1A8, 0x54E9}, //{0xE5, 0x93, 0xA9}, //
- {0xC4C4, 0x54EA}, //{0xE5, 0x93, 0xAA}, //
- {0xBFDE, 0x54ED}, //{0xE5, 0x93, 0xAD}, //
- {0xCFF8, 0x54EE}, //{0xE5, 0x93, 0xAE}, //
- {0xD5DC, 0x54F2}, //{0xE5, 0x93, 0xB2}, //
- {0xB2B8, 0x54FA}, //{0xE5, 0x93, 0xBA}, //
- {0xBADF, 0x54FC}, //{0xE5, 0x93, 0xBC}, //
- {0xD1E4, 0x5501}, //{0xE5, 0x94, 0x81}, //
- {0xCBF4, 0x5506}, //{0xE5, 0x94, 0x86}, //
- {0xB4BD, 0x5507}, //{0xE5, 0x94, 0x87}, //
- {0xB0A6, 0x5509}, //{0xE5, 0x94, 0x89}, //
- {0xCCC6, 0x5510}, //{0xE5, 0x94, 0x90}, //
- {0xDFEB, 0x5520}, //{0xE5, 0x94, 0xA0}, //
- {0xBBBD, 0x5524}, //{0xE5, 0x94, 0xA4}, //
- {0xDFF3, 0x5527}, //{0xE5, 0x94, 0xA7}, //
- {0xBBA3, 0x552C}, //{0xE5, 0x94, 0xAC}, //
- {0xCADB, 0x552E}, //{0xE5, 0x94, 0xAE}, //
+ {0xB8E7, 0x54E5}, //{0xE5, 0x93, 0xA5}, // ��
+ {0xC9DA, 0x54E8}, //{0xE5, 0x93, 0xA8}, // ��
+ {0xC1A8, 0x54E9}, //{0xE5, 0x93, 0xA9}, // h
+ {0xC4C4, 0x54EA}, //{0xE5, 0x93, 0xAA}, // ��
+ {0xBFDE, 0x54ED}, //{0xE5, 0x93, 0xAD}, // ��
+ {0xCFF8, 0x54EE}, //{0xE5, 0x93, 0xAE}, // ��
+ {0xD5DC, 0x54F2}, //{0xE5, 0x93, 0xB2}, // ��
+ {0xB2B8, 0x54FA}, //{0xE5, 0x93, 0xBA}, // ��
+ {0xBADF, 0x54FC}, //{0xE5, 0x93, 0xBC}, // ��
+ {0xD1E4, 0x5501}, //{0xE5, 0x94, 0x81}, // ��
+ {0xCBF4, 0x5506}, //{0xE5, 0x94, 0x86}, // ��
+ {0xB4BD, 0x5507}, //{0xE5, 0x94, 0x87}, // ��
+ {0xB0A6, 0x5509}, //{0xE5, 0x94, 0x89}, // ��
+ {0xCCC6, 0x5510}, //{0xE5, 0x94, 0x90}, // ��
+ {0xDFEB, 0x5520}, //{0xE5, 0x94, 0xA0}, // ��
+ {0xBBBD, 0x5524}, //{0xE5, 0x94, 0xA4}, // ��
+ {0xDFF3, 0x5527}, //{0xE5, 0x94, 0xA7}, // ��
+ {0xBBA3, 0x552C}, //{0xE5, 0x94, 0xAC}, // ��
+ {0xCADB, 0x552E}, //{0xE5, 0x94, 0xAE}, // ��
{0xCEA8, 0x552F}, //{0xE5, 0x94, 0xAF}, // Ψ
- {0xB3AA, 0x5531}, //{0xE5, 0x94, 0xB1}, //
- {0xCDD9, 0x553E}, //{0xE5, 0x94, 0xBE}, //
- {0xBFD0, 0x5543}, //{0xE5, 0x95, 0x83}, //
- {0xD7C4, 0x5544}, //{0xE5, 0x95, 0x84}, //
- {0xC9CC, 0x5546}, //{0xE5, 0x95, 0x86}, //
- {0xB0A1, 0x554A}, //{0xE5, 0x95, 0x8A}, //
- {0xB7C8, 0x5561}, //{0xE5, 0x95, 0xA1}, //
+ {0xB3AA, 0x5531}, //{0xE5, 0x94, 0xB1}, // ��
+ {0xCDD9, 0x553E}, //{0xE5, 0x94, 0xBE}, // ��
+ {0xBFD0, 0x5543}, //{0xE5, 0x95, 0x83}, // ��
+ {0xD7C4, 0x5544}, //{0xE5, 0x95, 0x84}, // ��
+ {0xC9CC, 0x5546}, //{0xE5, 0x95, 0x86}, // ��
+ {0xB0A1, 0x554A}, //{0xE5, 0x95, 0x8A}, // ��
+ {0xB7C8, 0x5561}, //{0xE5, 0x95, 0xA1}, // ��
{0xC6A1, 0x5564}, //{0xE5, 0x95, 0xA4}, // ơ
{0xC9B6, 0x5565}, //{0xE5, 0x95, 0xA5}, // ɶ
- {0xC0B2, 0x5566}, //{0xE5, 0x95, 0xA6}, //
+ {0xC0B2, 0x5566}, //{0xE5, 0x95, 0xA6}, // 2
{0xD0A5, 0x5578}, //{0xE5, 0x95, 0xB8}, // Х
- {0xCCE4, 0x557C}, //{0xE5, 0x95, 0xBC}, //
+ {0xCCE4, 0x557C}, //{0xE5, 0x95, 0xBC}, // ��
{0xCEB9, 0x5582}, //{0xE5, 0x96, 0x82}, // ι
- {0xC9C6, 0x5584}, //{0xE5, 0x96, 0x84}, //
- {0xC0AE, 0x5587}, //{0xE5, 0x96, 0x87}, //
- {0xBAED, 0x5589}, //{0xE5, 0x96, 0x89}, //
- {0xBAB0, 0x558A}, //{0xE5, 0x96, 0x8A}, //
- {0xB4AD, 0x5598}, //{0xE5, 0x96, 0x98}, //
+ {0xC9C6, 0x5584}, //{0xE5, 0x96, 0x84}, // ��
+ {0xC0AE, 0x5587}, //{0xE5, 0x96, 0x87}, // .
+ {0xBAED, 0x5589}, //{0xE5, 0x96, 0x89}, // ��
+ {0xBAB0, 0x558A}, //{0xE5, 0x96, 0x8A}, // ��
+ {0xB4AD, 0x5598}, //{0xE5, 0x96, 0x98}, // ��
{0xCFB2, 0x559C}, //{0xE5, 0x96, 0x9C}, // ϲ
- {0xBAC8, 0x559D}, //{0xE5, 0x96, 0x9D}, //
- {0xD0FA, 0x55A7}, //{0xE5, 0x96, 0xA7}, //
- {0xD4FB, 0x55B3}, //{0xE5, 0x96, 0xB3}, //
- {0xC5E7, 0x55B7}, //{0xE5, 0x96, 0xB7}, //
- {0xD3F7, 0x55BB}, //{0xE5, 0x96, 0xBB}, //
- {0xD0E1, 0x55C5}, //{0xE5, 0x97, 0x85}, //
+ {0xBAC8, 0x559D}, //{0xE5, 0x96, 0x9D}, // ��
+ {0xD0FA, 0x55A7}, //{0xE5, 0x96, 0xA7}, // ��
+ {0xD4FB, 0x55B3}, //{0xE5, 0x96, 0xB3}, // ��
+ {0xC5E7, 0x55B7}, //{0xE5, 0x96, 0xB7}, // ��
+ {0xD3F7, 0x55BB}, //{0xE5, 0x96, 0xBB}, // ��
+ {0xD0E1, 0x55C5}, //{0xE5, 0x97, 0x85}, // ��
{0xC9A4, 0x55D3}, //{0xE5, 0x97, 0x93}, // ɤ
- {0xCAC8, 0x55DC}, //{0xE5, 0x97, 0x9C}, //
- {0xCECB, 0x55E1}, //{0xE5, 0x97, 0xA1}, //
- {0xE0CD, 0x55E4}, //{0xE5, 0x97, 0xA4}, //
- {0xE0C2, 0x55E6}, //{0xE5, 0x97, 0xA6}, //
- {0xCBD4, 0x55FD}, //{0xE5, 0x97, 0xBD}, //
- {0xE0D6, 0x5600}, //{0xE5, 0x98, 0x80}, //
- {0xE0D2, 0x5601}, //{0xE5, 0x98, 0x81}, //
- {0xBCCE, 0x5609}, //{0xE5, 0x98, 0x89}, //
- {0xD6F6, 0x5631}, //{0xE5, 0x98, 0xB1}, //
- {0xB3B0, 0x5632}, //{0xE5, 0x98, 0xB2}, //
- {0xD7EC, 0x5634}, //{0xE5, 0x98, 0xB4}, //
+ {0xCAC8, 0x55DC}, //{0xE5, 0x97, 0x9C}, // ��
+ {0xCECB, 0x55E1}, //{0xE5, 0x97, 0xA1}, // ��
+ {0xE0CD, 0x55E4}, //{0xE5, 0x97, 0xA4}, // ��
+ {0xE0C2, 0x55E6}, //{0xE5, 0x97, 0xA6}, // ��
+ {0xCBD4, 0x55FD}, //{0xE5, 0x97, 0xBD}, // ��
+ {0xE0D6, 0x5600}, //{0xE5, 0x98, 0x80}, // ��
+ {0xE0D2, 0x5601}, //{0xE5, 0x98, 0x81}, // ��
+ {0xBCCE, 0x5609}, //{0xE5, 0x98, 0x89}, // ��
+ {0xD6F6, 0x5631}, //{0xE5, 0x98, 0xB1}, // ��
+ {0xB3B0, 0x5632}, //{0xE5, 0x98, 0xB2}, // ��
+ {0xD7EC, 0x5634}, //{0xE5, 0x98, 0xB4}, // ��
{0xCBBB, 0x5636}, //{0xE5, 0x98, 0xB6}, // ˻
- {0xE0DA, 0x5639}, //{0xE5, 0x98, 0xB9}, //
- {0xBAD9, 0x563F}, //{0xE5, 0x98, 0xBF}, //
- {0xC6F7, 0x5668}, //{0xE5, 0x99, 0xA8}, //
+ {0xE0DA, 0x5639}, //{0xE5, 0x98, 0xB9}, // ��
+ {0xBAD9, 0x563F}, //{0xE5, 0x98, 0xBF}, // ��
+ {0xC6F7, 0x5668}, //{0xE5, 0x99, 0xA8}, // ��
{0xD8AC, 0x5669}, //{0xE5, 0x99, 0xA9}, // ج
- {0xD4EB, 0x566A}, //{0xE5, 0x99, 0xAA}, //
- {0xBABF, 0x568E}, //{0xE5, 0x9A, 0x8E}, //
- {0xCFF9, 0x56A3}, //{0xE5, 0x9A, 0xA3}, //
- {0xC8C2, 0x56B7}, //{0xE5, 0x9A, 0xB7}, //
- {0xBDC0, 0x56BC}, //{0xE5, 0x9A, 0xBC}, //
- {0xC4D2, 0x56CA}, //{0xE5, 0x9B, 0x8A}, //
- {0xC7F4, 0x56DA}, //{0xE5, 0x9B, 0x9A}, //
- {0xCBC4, 0x56DB}, //{0xE5, 0x9B, 0x9B}, //
- {0xBBD8, 0x56DE}, //{0xE5, 0x9B, 0x9E}, //
- {0xD2F2, 0x56E0}, //{0xE5, 0x9B, 0xA0}, //
- {0xCDC5, 0x56E2}, //{0xE5, 0x9B, 0xA2}, //
- {0xB6DA, 0x56E4}, //{0xE5, 0x9B, 0xA4}, //
+ {0xD4EB, 0x566A}, //{0xE5, 0x99, 0xAA}, // ��
+ {0xBABF, 0x568E}, //{0xE5, 0x9A, 0x8E}, // ��
+ {0xCFF9, 0x56A3}, //{0xE5, 0x9A, 0xA3}, // ��
+ {0xC8C2, 0x56B7}, //{0xE5, 0x9A, 0xB7}, // ��
+ {0xBDC0, 0x56BC}, //{0xE5, 0x9A, 0xBC}, // ��
+ {0xC4D2, 0x56CA}, //{0xE5, 0x9B, 0x8A}, // ��
+ {0xC7F4, 0x56DA}, //{0xE5, 0x9B, 0x9A}, // ��
+ {0xCBC4, 0x56DB}, //{0xE5, 0x9B, 0x9B}, // ��
+ {0xBBD8, 0x56DE}, //{0xE5, 0x9B, 0x9E}, // ��
+ {0xD2F2, 0x56E0}, //{0xE5, 0x9B, 0xA0}, // ��
+ {0xCDC5, 0x56E2}, //{0xE5, 0x9B, 0xA2}, // ��
+ {0xB6DA, 0x56E4}, //{0xE5, 0x9B, 0xA4}, // ��
{0xD4B0, 0x56ED}, //{0xE5, 0x9B, 0xAD}, //
- {0xC0A7, 0x56F0}, //{0xE5, 0x9B, 0xB0}, //
- {0xB4D1, 0x56F1}, //{0xE5, 0x9B, 0xB1}, //
+ {0xC0A7, 0x56F0}, //{0xE5, 0x9B, 0xB0}, // '
+ {0xB4D1, 0x56F1}, //{0xE5, 0x9B, 0xB1}, // ��
{0xCEA7, 0x56F4}, //{0xE5, 0x9B, 0xB4}, // Χ
- {0xB9CC, 0x56FA}, //{0xE5, 0x9B, 0xBA}, //
- {0xB9FA, 0x56FD}, //{0xE5, 0x9B, 0xBD}, //
+ {0xB9CC, 0x56FA}, //{0xE5, 0x9B, 0xBA}, // ��
+ {0xB9FA, 0x56FD}, //{0xE5, 0x9B, 0xBD}, // ��
{0xCDBC, 0x56FE}, //{0xE5, 0x9B, 0xBE}, // ͼ
- {0xC6D4, 0x5703}, //{0xE5, 0x9C, 0x83}, //
+ {0xC6D4, 0x5703}, //{0xE5, 0x9C, 0x83}, // ��
{0xD4B2, 0x5706}, //{0xE5, 0x9C, 0x86}, // Բ
{0xC8A6, 0x5708}, //{0xE5, 0x9C, 0x88}, // Ȧ
- {0xCDC1, 0x571F}, //{0xE5, 0x9C, 0x9F}, //
+ {0xCDC1, 0x571F}, //{0xE5, 0x9C, 0x9F}, // ��
{0xCAA5, 0x5723}, //{0xE5, 0x9C, 0xA3}, // ʥ
- {0xD4DA, 0x5728}, //{0xE5, 0x9C, 0xA8}, //
- {0xB5D8, 0x5730}, //{0xE5, 0x9C, 0xB0}, //
- {0xB3A1, 0x573A}, //{0xE5, 0x9C, 0xBA}, //
- {0xBBF8, 0x573E}, //{0xE5, 0x9C, 0xBE}, //
+ {0xD4DA, 0x5728}, //{0xE5, 0x9C, 0xA8}, // ��
+ {0xB5D8, 0x5730}, //{0xE5, 0x9C, 0xB0}, // ��
+ {0xB3A1, 0x573A}, //{0xE5, 0x9C, 0xBA}, // ��
+ {0xBBF8, 0x573E}, //{0xE5, 0x9C, 0xBE}, // ��
{0xD6B7, 0x5740}, //{0xE5, 0x9D, 0x80}, // ַ
- {0xBEF9, 0x5747}, //{0xE5, 0x9D, 0x87}, //
- {0xB7BB, 0x574A}, //{0xE5, 0x9D, 0x8A}, //
- {0xBFB2, 0x574E}, //{0xE5, 0x9D, 0x8E}, //
- {0xBBB5, 0x574F}, //{0xE5, 0x9D, 0x8F}, //
- {0xD7F8, 0x5750}, //{0xE5, 0x9D, 0x90}, //
- {0xBFD3, 0x5751}, //{0xE5, 0x9D, 0x91}, //
- {0xBFE9, 0x5757}, //{0xE5, 0x9D, 0x97}, //
- {0xBCE1, 0x575A}, //{0xE5, 0x9D, 0x9A}, //
+ {0xBEF9, 0x5747}, //{0xE5, 0x9D, 0x87}, // ��
+ {0xB7BB, 0x574A}, //{0xE5, 0x9D, 0x8A}, // ��
+ {0xBFB2, 0x574E}, //{0xE5, 0x9D, 0x8E}, // ��
+ {0xBBB5, 0x574F}, //{0xE5, 0x9D, 0x8F}, // ��
+ {0xD7F8, 0x5750}, //{0xE5, 0x9D, 0x90}, // ��
+ {0xBFD3, 0x5751}, //{0xE5, 0x9D, 0x91}, // ��
+ {0xBFE9, 0x5757}, //{0xE5, 0x9D, 0x97}, // ��
+ {0xBCE1, 0x575A}, //{0xE5, 0x9D, 0x9A}, // ��
{0xCCB3, 0x575B}, //{0xE5, 0x9D, 0x9B}, // ̳
- {0xB0D3, 0x575D}, //{0xE5, 0x9D, 0x9D}, //
- {0xCEEB, 0x575E}, //{0xE5, 0x9D, 0x9E}, //
- {0xB7D8, 0x575F}, //{0xE5, 0x9D, 0x9F}, //
+ {0xB0D3, 0x575D}, //{0xE5, 0x9D, 0x9D}, // ��
+ {0xCEEB, 0x575E}, //{0xE5, 0x9D, 0x9E}, // ��
+ {0xB7D8, 0x575F}, //{0xE5, 0x9D, 0x9F}, // ��
{0xD7B9, 0x5760}, //{0xE5, 0x9D, 0xA0}, //
- {0xC6C2, 0x5761}, //{0xE5, 0x9D, 0xA1}, //
- {0xC0A4, 0x5764}, //{0xE5, 0x9D, 0xA4}, //
+ {0xC6C2, 0x5761}, //{0xE5, 0x9D, 0xA1}, // ��
+ {0xC0A4, 0x5764}, //{0xE5, 0x9D, 0xA4}, // $
{0xCCB9, 0x5766}, //{0xE5, 0x9D, 0xA6}, // ̹
{0xC6BA, 0x576A}, //{0xE5, 0x9D, 0xAA}, // ƺ
- {0xC5F7, 0x576F}, //{0xE5, 0x9D, 0xAF}, //
- {0xBFC0, 0x5777}, //{0xE5, 0x9D, 0xB7}, //
- {0xB4B9, 0x5782}, //{0xE5, 0x9E, 0x82}, //
- {0xC0AC, 0x5783}, //{0xE5, 0x9E, 0x83}, //
+ {0xC5F7, 0x576F}, //{0xE5, 0x9D, 0xAF}, // ��
+ {0xBFC0, 0x5777}, //{0xE5, 0x9D, 0xB7}, // ��
+ {0xB4B9, 0x5782}, //{0xE5, 0x9E, 0x82}, // ��
+ {0xC0AC, 0x5783}, //{0xE5, 0x9E, 0x83}, // ,
{0xC2A2, 0x5784}, //{0xE5, 0x9E, 0x84}, // ¢
- {0xD0CD, 0x578B}, //{0xE5, 0x9E, 0x8B}, //
- {0xC0DD, 0x5792}, //{0xE5, 0x9E, 0x92}, //
- {0xB6E2, 0x579B}, //{0xE5, 0x9E, 0x9B}, //
- {0xB9B8, 0x57A2}, //{0xE5, 0x9E, 0xA2}, //
- {0xBFD1, 0x57A6}, //{0xE5, 0x9E, 0xA6}, //
- {0xB5E6, 0x57AB}, //{0xE5, 0x9E, 0xAB}, //
- {0xBFE5, 0x57AE}, //{0xE5, 0x9E, 0xAE}, //
- {0xB9A1, 0x57C2}, //{0xE5, 0x9F, 0x82}, //
- {0xB0A3, 0x57C3}, //{0xE5, 0x9F, 0x83}, //
- {0xC2F1, 0x57CB}, //{0xE5, 0x9F, 0x8B}, //
- {0xB3C7, 0x57CE}, //{0xE5, 0x9F, 0x8E}, //
- {0xD3F2, 0x57DF}, //{0xE5, 0x9F, 0x9F}, //
- {0xB2BA, 0x57E0}, //{0xE5, 0x9F, 0xA0}, //
- {0xC5E0, 0x57F9}, //{0xE5, 0x9F, 0xB9}, //
- {0xBBF9, 0x57FA}, //{0xE5, 0x9F, 0xBA}, //
- {0xCCC3, 0x5802}, //{0xE5, 0xA0, 0x82}, //
- {0xB6D1, 0x5806}, //{0xE5, 0xA0, 0x86}, //
- {0xB6E9, 0x5815}, //{0xE5, 0xA0, 0x95}, //
- {0xB1A4, 0x5821}, //{0xE5, 0xA0, 0xA1}, //
- {0xB5CC, 0x5824}, //{0xE5, 0xA0, 0xA4}, //
- {0xBFB0, 0x582A}, //{0xE5, 0xA0, 0xAA}, //
- {0xD1DF, 0x5830}, //{0xE5, 0xA0, 0xB0}, //
- {0xB6C2, 0x5835}, //{0xE5, 0xA0, 0xB5}, //
- {0xCBFA, 0x584C}, //{0xE5, 0xA1, 0x8C}, //
- {0xCBDC, 0x5851}, //{0xE5, 0xA1, 0x91}, //
- {0xCBFE, 0x5854}, //{0xE5, 0xA1, 0x94}, //
- {0xCCC1, 0x5858}, //{0xE5, 0xA1, 0x98}, //
- {0xC8FB, 0x585E}, //{0xE5, 0xA1, 0x9E}, //
- {0xCCEE, 0x586B}, //{0xE5, 0xA1, 0xAB}, //
- {0xBEB3, 0x5883}, //{0xE5, 0xA2, 0x83}, //
- {0xCAFB, 0x5885}, //{0xE5, 0xA2, 0x85}, //
+ {0xD0CD, 0x578B}, //{0xE5, 0x9E, 0x8B}, // ��
+ {0xC0DD, 0x5792}, //{0xE5, 0x9E, 0x92}, // ��
+ {0xB6E2, 0x579B}, //{0xE5, 0x9E, 0x9B}, // ��
+ {0xB9B8, 0x57A2}, //{0xE5, 0x9E, 0xA2}, // ��
+ {0xBFD1, 0x57A6}, //{0xE5, 0x9E, 0xA6}, // ��
+ {0xB5E6, 0x57AB}, //{0xE5, 0x9E, 0xAB}, // ��
+ {0xBFE5, 0x57AE}, //{0xE5, 0x9E, 0xAE}, // ��
+ {0xB9A1, 0x57C2}, //{0xE5, 0x9F, 0x82}, // ��
+ {0xB0A3, 0x57C3}, //{0xE5, 0x9F, 0x83}, // ��
+ {0xC2F1, 0x57CB}, //{0xE5, 0x9F, 0x8B}, // ��
+ {0xB3C7, 0x57CE}, //{0xE5, 0x9F, 0x8E}, // ��
+ {0xD3F2, 0x57DF}, //{0xE5, 0x9F, 0x9F}, // ��
+ {0xB2BA, 0x57E0}, //{0xE5, 0x9F, 0xA0}, // ��
+ {0xC5E0, 0x57F9}, //{0xE5, 0x9F, 0xB9}, // ��
+ {0xBBF9, 0x57FA}, //{0xE5, 0x9F, 0xBA}, // ��
+ {0xCCC3, 0x5802}, //{0xE5, 0xA0, 0x82}, // ��
+ {0xB6D1, 0x5806}, //{0xE5, 0xA0, 0x86}, // ��
+ {0xB6E9, 0x5815}, //{0xE5, 0xA0, 0x95}, // ��
+ {0xB1A4, 0x5821}, //{0xE5, 0xA0, 0xA1}, // ��
+ {0xB5CC, 0x5824}, //{0xE5, 0xA0, 0xA4}, // ��
+ {0xBFB0, 0x582A}, //{0xE5, 0xA0, 0xAA}, // ��
+ {0xD1DF, 0x5830}, //{0xE5, 0xA0, 0xB0}, // ��
+ {0xB6C2, 0x5835}, //{0xE5, 0xA0, 0xB5}, // ��
+ {0xCBFA, 0x584C}, //{0xE5, 0xA1, 0x8C}, // ��
+ {0xCBDC, 0x5851}, //{0xE5, 0xA1, 0x91}, // ��
+ {0xCBFE, 0x5854}, //{0xE5, 0xA1, 0x94}, // ��
+ {0xCCC1, 0x5858}, //{0xE5, 0xA1, 0x98}, // ��
+ {0xC8FB, 0x585E}, //{0xE5, 0xA1, 0x9E}, // ��
+ {0xCCEE, 0x586B}, //{0xE5, 0xA1, 0xAB}, // ��
+ {0xBEB3, 0x5883}, //{0xE5, 0xA2, 0x83}, // ��
+ {0xCAFB, 0x5885}, //{0xE5, 0xA2, 0x85}, // ��
{0xC4B9, 0x5893}, //{0xE5, 0xA2, 0x93}, // Ĺ
{0xC7BD, 0x5899}, //{0xE5, 0xA2, 0x99}, // ǽ
- {0xD4F6, 0x589E}, //{0xE5, 0xA2, 0x9E}, //
+ {0xD4F6, 0x589E}, //{0xE5, 0xA2, 0x9E}, // ��
{0xC4AB, 0x58A8}, //{0xE5, 0xA2, 0xA8}, // ī
- {0xB6D5, 0x58A9}, //{0xE5, 0xA2, 0xA9}, //
- {0xB1DA, 0x58C1}, //{0xE5, 0xA3, 0x81}, //
- {0xBABE, 0x58D5}, //{0xE5, 0xA3, 0x95}, //
- {0xC8C0, 0x58E4}, //{0xE5, 0xA3, 0xA4}, //
+ {0xB6D5, 0x58A9}, //{0xE5, 0xA2, 0xA9}, // ��
+ {0xB1DA, 0x58C1}, //{0xE5, 0xA3, 0x81}, // ��
+ {0xBABE, 0x58D5}, //{0xE5, 0xA3, 0x95}, // ��
+ {0xC8C0, 0x58E4}, //{0xE5, 0xA3, 0xA4}, // ��
{0xCABF, 0x58EB}, //{0xE5, 0xA3, 0xAB}, // ʿ
{0xD7B3, 0x58EE}, //{0xE5, 0xA3, 0xAE}, // ׳
- {0xC9F9, 0x58F0}, //{0xE5, 0xA3, 0xB0}, //
- {0xBFC7, 0x58F3}, //{0xE5, 0xA3, 0xB3}, //
- {0xBAF8, 0x58F6}, //{0xE5, 0xA3, 0xB6}, //
+ {0xC9F9, 0x58F0}, //{0xE5, 0xA3, 0xB0}, // ��
+ {0xBFC7, 0x58F3}, //{0xE5, 0xA3, 0xB3}, // ��
+ {0xBAF8, 0x58F6}, //{0xE5, 0xA3, 0xB6}, // ��
{0xD2BC, 0x58F9}, //{0xE5, 0xA3, 0xB9}, // Ҽ
- {0xB4A6, 0x5904}, //{0xE5, 0xA4, 0x84}, //
- {0xB1B8, 0x5907}, //{0xE5, 0xA4, 0x87}, //
- {0xB8B4, 0x590D}, //{0xE5, 0xA4, 0x8D}, //
- {0xCFC4, 0x590F}, //{0xE5, 0xA4, 0x8F}, //
+ {0xB4A6, 0x5904}, //{0xE5, 0xA4, 0x84}, // ��
+ {0xB1B8, 0x5907}, //{0xE5, 0xA4, 0x87}, // ��
+ {0xB8B4, 0x590D}, //{0xE5, 0xA4, 0x8D}, // ��
+ {0xCFC4, 0x590F}, //{0xE5, 0xA4, 0x8F}, // ��
{0xCFA6, 0x5915}, //{0xE5, 0xA4, 0x95}, // Ϧ
- {0xCDE2, 0x5916}, //{0xE5, 0xA4, 0x96}, //
- {0xB6E0, 0x591A}, //{0xE5, 0xA4, 0x9A}, //
+ {0xCDE2, 0x5916}, //{0xE5, 0xA4, 0x96}, // ��
+ {0xB6E0, 0x591A}, //{0xE5, 0xA4, 0x9A}, // ��
{0xD2B9, 0x591C}, //{0xE5, 0xA4, 0x9C}, // ҹ
- {0xB9BB, 0x591F}, //{0xE5, 0xA4, 0x9F}, //
- {0xB4F3, 0x5927}, //{0xE5, 0xA4, 0xA7}, //
- {0xCCEC, 0x5929}, //{0xE5, 0xA4, 0xA9}, //
+ {0xB9BB, 0x591F}, //{0xE5, 0xA4, 0x9F}, // ��
+ {0xB4F3, 0x5927}, //{0xE5, 0xA4, 0xA7}, // ��
+ {0xCCEC, 0x5929}, //{0xE5, 0xA4, 0xA9}, // ��
{0xCCAB, 0x592A}, //{0xE5, 0xA4, 0xAA}, // ̫
- {0xB7F2, 0x592B}, //{0xE5, 0xA4, 0xAB}, //
+ {0xB7F2, 0x592B}, //{0xE5, 0xA4, 0xAB}, // ��
{0xD8B2, 0x592D}, //{0xE5, 0xA4, 0xAD}, // ز
- {0xD1EB, 0x592E}, //{0xE5, 0xA4, 0xAE}, //
- {0xBABB, 0x592F}, //{0xE5, 0xA4, 0xAF}, //
+ {0xD1EB, 0x592E}, //{0xE5, 0xA4, 0xAE}, // ��
+ {0xBABB, 0x592F}, //{0xE5, 0xA4, 0xAF}, // ��
{0xCAA7, 0x5931}, //{0xE5, 0xA4, 0xB1}, // ʧ
{0xCDB7, 0x5934}, //{0xE5, 0xA4, 0xB4}, // ͷ
- {0xD2C4, 0x5937}, //{0xE5, 0xA4, 0xB7}, //
- {0xBFE4, 0x5938}, //{0xE5, 0xA4, 0xB8}, //
- {0xBCD0, 0x5939}, //{0xE5, 0xA4, 0xB9}, //
- {0xB6E1, 0x593A}, //{0xE5, 0xA4, 0xBA}, //
- {0xD1D9, 0x5944}, //{0xE5, 0xA5, 0x84}, //
- {0xC6E6, 0x5947}, //{0xE5, 0xA5, 0x87}, //
- {0xC4CE, 0x5948}, //{0xE5, 0xA5, 0x88}, //
- {0xB7EE, 0x5949}, //{0xE5, 0xA5, 0x89}, //
- {0xB7DC, 0x594B}, //{0xE5, 0xA5, 0x8B}, //
- {0xD7E0, 0x594F}, //{0xE5, 0xA5, 0x8F}, //
- {0xC6F5, 0x5951}, //{0xE5, 0xA5, 0x91}, //
- {0xB1BC, 0x5954}, //{0xE5, 0xA5, 0x94}, //
- {0xDEC8, 0x5955}, //{0xE5, 0xA5, 0x95}, //
- {0xBDB1, 0x5956}, //{0xE5, 0xA5, 0x96}, //
- {0xCCD7, 0x5957}, //{0xE5, 0xA5, 0x97}, //
- {0xB5EC, 0x5960}, //{0xE5, 0xA5, 0xA0}, //
- {0xC9DD, 0x5962}, //{0xE5, 0xA5, 0xA2}, //
- {0xB0C2, 0x5965}, //{0xE5, 0xA5, 0xA5}, //
+ {0xD2C4, 0x5937}, //{0xE5, 0xA4, 0xB7}, // ��
+ {0xBFE4, 0x5938}, //{0xE5, 0xA4, 0xB8}, // ��
+ {0xBCD0, 0x5939}, //{0xE5, 0xA4, 0xB9}, // ��
+ {0xB6E1, 0x593A}, //{0xE5, 0xA4, 0xBA}, // ��
+ {0xD1D9, 0x5944}, //{0xE5, 0xA5, 0x84}, // ��
+ {0xC6E6, 0x5947}, //{0xE5, 0xA5, 0x87}, // ��
+ {0xC4CE, 0x5948}, //{0xE5, 0xA5, 0x88}, // ��
+ {0xB7EE, 0x5949}, //{0xE5, 0xA5, 0x89}, // ��
+ {0xB7DC, 0x594B}, //{0xE5, 0xA5, 0x8B}, // ��
+ {0xD7E0, 0x594F}, //{0xE5, 0xA5, 0x8F}, // ��
+ {0xC6F5, 0x5951}, //{0xE5, 0xA5, 0x91}, // ��
+ {0xB1BC, 0x5954}, //{0xE5, 0xA5, 0x94}, // ��
+ {0xDEC8, 0x5955}, //{0xE5, 0xA5, 0x95}, // ��
+ {0xBDB1, 0x5956}, //{0xE5, 0xA5, 0x96}, // ��
+ {0xCCD7, 0x5957}, //{0xE5, 0xA5, 0x97}, // ��
+ {0xB5EC, 0x5960}, //{0xE5, 0xA5, 0xA0}, // ��
+ {0xC9DD, 0x5962}, //{0xE5, 0xA5, 0xA2}, // ��
+ {0xB0C2, 0x5965}, //{0xE5, 0xA5, 0xA5}, // ��
{0xC5AE, 0x5973}, //{0xE5, 0xA5, 0xB3}, // Ů
{0xC5AB, 0x5974}, //{0xE5, 0xA5, 0xB4}, // ū
- {0xC4CC, 0x5976}, //{0xE5, 0xA5, 0xB6}, //
- {0xBCE9, 0x5978}, //{0xE5, 0xA5, 0xB8}, //
- {0xCBFD, 0x5979}, //{0xE5, 0xA5, 0xB9}, //
- {0xBAC3, 0x597D}, //{0xE5, 0xA5, 0xBD}, //
- {0xC8E7, 0x5982}, //{0xE5, 0xA6, 0x82}, //
- {0xCDFD, 0x5984}, //{0xE5, 0xA6, 0x84}, //
+ {0xC4CC, 0x5976}, //{0xE5, 0xA5, 0xB6}, // ��
+ {0xBCE9, 0x5978}, //{0xE5, 0xA5, 0xB8}, // ��
+ {0xCBFD, 0x5979}, //{0xE5, 0xA5, 0xB9}, // ��
+ {0xBAC3, 0x597D}, //{0xE5, 0xA5, 0xBD}, // ��
+ {0xC8E7, 0x5982}, //{0xE5, 0xA6, 0x82}, // ��
+ {0xCDFD, 0x5984}, //{0xE5, 0xA6, 0x84}, // ��
{0xD7B1, 0x5986}, //{0xE5, 0xA6, 0x86}, // ױ
- {0xB8BE, 0x5987}, //{0xE5, 0xA6, 0x87}, //
- {0xC2E8, 0x5988}, //{0xE5, 0xA6, 0x88}, //
- {0xB6CA, 0x5992}, //{0xE5, 0xA6, 0x92}, //
- {0xBCCB, 0x5993}, //{0xE5, 0xA6, 0x93}, //
- {0xD1FD, 0x5996}, //{0xE5, 0xA6, 0x96}, //
- {0xC3EE, 0x5999}, //{0xE5, 0xA6, 0x99}, //
- {0xCDD7, 0x59A5}, //{0xE5, 0xA6, 0xA5}, //
- {0xB7C1, 0x59A8}, //{0xE5, 0xA6, 0xA8}, //
- {0xC3C3, 0x59B9}, //{0xE5, 0xA6, 0xB9}, //
- {0xC6DE, 0x59BB}, //{0xE5, 0xA6, 0xBB}, //
+ {0xB8BE, 0x5987}, //{0xE5, 0xA6, 0x87}, // ��
+ {0xC2E8, 0x5988}, //{0xE5, 0xA6, 0x88}, // ��
+ {0xB6CA, 0x5992}, //{0xE5, 0xA6, 0x92}, // ��
+ {0xBCCB, 0x5993}, //{0xE5, 0xA6, 0x93}, // ��
+ {0xD1FD, 0x5996}, //{0xE5, 0xA6, 0x96}, // ��
+ {0xC3EE, 0x5999}, //{0xE5, 0xA6, 0x99}, // ��
+ {0xCDD7, 0x59A5}, //{0xE5, 0xA6, 0xA5}, // ��
+ {0xB7C1, 0x59A8}, //{0xE5, 0xA6, 0xA8}, // ��
+ {0xC3C3, 0x59B9}, //{0xE5, 0xA6, 0xB9}, // ��
+ {0xC6DE, 0x59BB}, //{0xE5, 0xA6, 0xBB}, // ��
{0xC4B7, 0x59C6}, //{0xE5, 0xA7, 0x86}, // ķ
- {0xE6A2, 0x59CA}, //{0xE5, 0xA7, 0x8A}, //
+ {0xE6A2, 0x59CA}, //{0xE5, 0xA7, 0x8A}, // �
{0xCABC, 0x59CB}, //{0xE5, 0xA7, 0x8B}, // ʼ
- {0xBDE3, 0x59D0}, //{0xE5, 0xA7, 0x90}, //
- {0xB9C3, 0x59D1}, //{0xE5, 0xA7, 0x91}, //
- {0xD0D5, 0x59D3}, //{0xE5, 0xA7, 0x93}, //
+ {0xBDE3, 0x59D0}, //{0xE5, 0xA7, 0x90}, // ��
+ {0xB9C3, 0x59D1}, //{0xE5, 0xA7, 0x91}, // ��
+ {0xD0D5, 0x59D3}, //{0xE5, 0xA7, 0x93}, // ��
{0xCEAF, 0x59D4}, //{0xE5, 0xA7, 0x94}, // ί
{0xD2A6, 0x59DA}, //{0xE5, 0xA7, 0x9A}, // Ҧ
- {0xBDAA, 0x59DC}, //{0xE5, 0xA7, 0x9C}, //
- {0xC0D1, 0x59E5}, //{0xE5, 0xA7, 0xA5}, //
- {0xD2CC, 0x59E8}, //{0xE5, 0xA7, 0xA8}, //
- {0xD2F6, 0x59FB}, //{0xE5, 0xA7, 0xBB}, //
- {0xD7CB, 0x59FF}, //{0xE5, 0xA7, 0xBF}, //
- {0xCDFE, 0x5A01}, //{0xE5, 0xA8, 0x81}, //
- {0xCDDE, 0x5A03}, //{0xE5, 0xA8, 0x83}, //
+ {0xBDAA, 0x59DC}, //{0xE5, 0xA7, 0x9C}, // ��
+ {0xC0D1, 0x59E5}, //{0xE5, 0xA7, 0xA5}, // ��
+ {0xD2CC, 0x59E8}, //{0xE5, 0xA7, 0xA8}, // ��
+ {0xD2F6, 0x59FB}, //{0xE5, 0xA7, 0xBB}, // ��
+ {0xD7CB, 0x59FF}, //{0xE5, 0xA7, 0xBF}, // ��
+ {0xCDFE, 0x5A01}, //{0xE5, 0xA8, 0x81}, // ��
+ {0xCDDE, 0x5A03}, //{0xE5, 0xA8, 0x83}, // ��
{0xC2A6, 0x5A04}, //{0xE5, 0xA8, 0x84}, // ¦
- {0xBDBF, 0x5A07}, //{0xE5, 0xA8, 0x87}, //
- {0xC4EF, 0x5A18}, //{0xE5, 0xA8, 0x98}, //
- {0xC4C8, 0x5A1C}, //{0xE5, 0xA8, 0x9C}, //
- {0xC3E4, 0x5A29}, //{0xE5, 0xA8, 0xA9}, //
- {0xD3E9, 0x5A31}, //{0xE5, 0xA8, 0xB1}, //
+ {0xBDBF, 0x5A07}, //{0xE5, 0xA8, 0x87}, // ��
+ {0xC4EF, 0x5A18}, //{0xE5, 0xA8, 0x98}, // ��
+ {0xC4C8, 0x5A1C}, //{0xE5, 0xA8, 0x9C}, // ��
+ {0xC3E4, 0x5A29}, //{0xE5, 0xA8, 0xA9}, // ��
+ {0xD3E9, 0x5A31}, //{0xE5, 0xA8, 0xB1}, // ��
{0xC8A2, 0x5A36}, //{0xE5, 0xA8, 0xB6}, // Ȣ
- {0xC6C5, 0x5A46}, //{0xE5, 0xA9, 0x86}, //
- {0xCDF1, 0x5A49}, //{0xE5, 0xA9, 0x89}, //
- {0xBBE9, 0x5A5A}, //{0xE5, 0xA9, 0x9A}, //
+ {0xC6C5, 0x5A46}, //{0xE5, 0xA9, 0x86}, // ��
+ {0xCDF1, 0x5A49}, //{0xE5, 0xA9, 0x89}, // ��
+ {0xBBE9, 0x5A5A}, //{0xE5, 0xA9, 0x9A}, // ��
{0xD3A4, 0x5A74}, //{0xE5, 0xA9, 0xB4}, // Ӥ
- {0xC9F4, 0x5A76}, //{0xE5, 0xA9, 0xB6}, //
- {0xD0F6, 0x5A7F}, //{0xE5, 0xA9, 0xBF}, //
+ {0xC9F4, 0x5A76}, //{0xE5, 0xA9, 0xB6}, // ��
+ {0xD0F6, 0x5A7F}, //{0xE5, 0xA9, 0xBF}, // ��
{0xC3BD, 0x5A92}, //{0xE5, 0xAA, 0x92}, // ý
- {0xC3C4, 0x5A9A}, //{0xE5, 0xAA, 0x9A}, //
+ {0xC3C4, 0x5A9A}, //{0xE5, 0xAA, 0x9A}, // ��
{0xCFB1, 0x5AB3}, //{0xE5, 0xAA, 0xB3}, // ϱ
- {0xBCDE, 0x5AC1}, //{0xE5, 0xAB, 0x81}, //
+ {0xBCDE, 0x5AC1}, //{0xE5, 0xAB, 0x81}, // ��
{0xC9A9, 0x5AC2}, //{0xE5, 0xAB, 0x82}, // ɩ
- {0xBCB5, 0x5AC9}, //{0xE5, 0xAB, 0x89}, //
- {0xCFD3, 0x5ACC}, //{0xE5, 0xAB, 0x8C}, //
- {0xB5D5, 0x5AE1}, //{0xE5, 0xAB, 0xA1}, //
- {0xC4DB, 0x5AE9}, //{0xE5, 0xAB, 0xA9}, //
- {0xE6D2, 0x5B09}, //{0xE5, 0xAC, 0x89}, //
- {0xD7D3, 0x5B50}, //{0xE5, 0xAD, 0x90}, //
- {0xBFD7, 0x5B54}, //{0xE5, 0xAD, 0x94}, //
- {0xD4D0, 0x5B55}, //{0xE5, 0xAD, 0x95}, //
- {0xD7D6, 0x5B57}, //{0xE5, 0xAD, 0x97}, //
- {0xB4E6, 0x5B58}, //{0xE5, 0xAD, 0x98}, //
- {0xCBEF, 0x5B59}, //{0xE5, 0xAD, 0x99}, //
+ {0xBCB5, 0x5AC9}, //{0xE5, 0xAB, 0x89}, // ��
+ {0xCFD3, 0x5ACC}, //{0xE5, 0xAB, 0x8C}, // ��
+ {0xB5D5, 0x5AE1}, //{0xE5, 0xAB, 0xA1}, // ��
+ {0xC4DB, 0x5AE9}, //{0xE5, 0xAB, 0xA9}, // ��
+ {0xE6D2, 0x5B09}, //{0xE5, 0xAC, 0x89}, // ��
+ {0xD7D3, 0x5B50}, //{0xE5, 0xAD, 0x90}, // ��
+ {0xBFD7, 0x5B54}, //{0xE5, 0xAD, 0x94}, // ��
+ {0xD4D0, 0x5B55}, //{0xE5, 0xAD, 0x95}, // ��
+ {0xD7D6, 0x5B57}, //{0xE5, 0xAD, 0x97}, // ��
+ {0xB4E6, 0x5B58}, //{0xE5, 0xAD, 0x98}, // ��
+ {0xCBEF, 0x5B59}, //{0xE5, 0xAD, 0x99}, // ��
{0xD0A2, 0x5B5D}, //{0xE5, 0xAD, 0x9D}, // Т
- {0xC3CF, 0x5B5F}, //{0xE5, 0xAD, 0x9F}, //
- {0xBCBE, 0x5B63}, //{0xE5, 0xAD, 0xA3}, //
- {0xB9C2, 0x5B64}, //{0xE5, 0xAD, 0xA4}, //
+ {0xC3CF, 0x5B5F}, //{0xE5, 0xAD, 0x9F}, // ��
+ {0xBCBE, 0x5B63}, //{0xE5, 0xAD, 0xA3}, // ��
+ {0xB9C2, 0x5B64}, //{0xE5, 0xAD, 0xA4}, // ��
{0xD1A7, 0x5B66}, //{0xE5, 0xAD, 0xA6}, // ѧ
- {0xBAA2, 0x5B69}, //{0xE5, 0xAD, 0xA9}, //
- {0xB7F5, 0x5B75}, //{0xE5, 0xAD, 0xB5}, //
- {0xC4F5, 0x5B7D}, //{0xE5, 0xAD, 0xBD}, //
- {0xC4FE, 0x5B81}, //{0xE5, 0xAE, 0x81}, //
- {0xCBFC, 0x5B83}, //{0xE5, 0xAE, 0x83}, //
+ {0xBAA2, 0x5B69}, //{0xE5, 0xAD, 0xA9}, // ��
+ {0xB7F5, 0x5B75}, //{0xE5, 0xAD, 0xB5}, // ��
+ {0xC4F5, 0x5B7D}, //{0xE5, 0xAD, 0xBD}, // ��
+ {0xC4FE, 0x5B81}, //{0xE5, 0xAE, 0x81}, // ��
+ {0xCBFC, 0x5B83}, //{0xE5, 0xAE, 0x83}, // ��
{0xD5AC, 0x5B85}, //{0xE5, 0xAE, 0x85}, // լ
- {0xD3EE, 0x5B87}, //{0xE5, 0xAE, 0x87}, //
- {0xCAD8, 0x5B88}, //{0xE5, 0xAE, 0x88}, //
- {0xB0B2, 0x5B89}, //{0xE5, 0xAE, 0x89}, //
- {0xCBCE, 0x5B8B}, //{0xE5, 0xAE, 0x8B}, //
- {0xCDEA, 0x5B8C}, //{0xE5, 0xAE, 0x8C}, //
- {0xBAEA, 0x5B8F}, //{0xE5, 0xAE, 0x8F}, //
- {0xD7DA, 0x5B97}, //{0xE5, 0xAE, 0x97}, //
- {0xB9D9, 0x5B98}, //{0xE5, 0xAE, 0x98}, //
- {0xD6E6, 0x5B99}, //{0xE5, 0xAE, 0x99}, //
- {0xB6A8, 0x5B9A}, //{0xE5, 0xAE, 0x9A}, //
- {0xCDF0, 0x5B9B}, //{0xE5, 0xAE, 0x9B}, //
- {0xD2CB, 0x5B9C}, //{0xE5, 0xAE, 0x9C}, //
- {0xB1A6, 0x5B9D}, //{0xE5, 0xAE, 0x9D}, //
+ {0xD3EE, 0x5B87}, //{0xE5, 0xAE, 0x87}, // ��
+ {0xCAD8, 0x5B88}, //{0xE5, 0xAE, 0x88}, // ��
+ {0xB0B2, 0x5B89}, //{0xE5, 0xAE, 0x89}, // ��
+ {0xCBCE, 0x5B8B}, //{0xE5, 0xAE, 0x8B}, // ��
+ {0xCDEA, 0x5B8C}, //{0xE5, 0xAE, 0x8C}, // ��
+ {0xBAEA, 0x5B8F}, //{0xE5, 0xAE, 0x8F}, // ��
+ {0xD7DA, 0x5B97}, //{0xE5, 0xAE, 0x97}, // ��
+ {0xB9D9, 0x5B98}, //{0xE5, 0xAE, 0x98}, // ��
+ {0xD6E6, 0x5B99}, //{0xE5, 0xAE, 0x99}, // ��
+ {0xB6A8, 0x5B9A}, //{0xE5, 0xAE, 0x9A}, // ��
+ {0xCDF0, 0x5B9B}, //{0xE5, 0xAE, 0x9B}, // ��
+ {0xD2CB, 0x5B9C}, //{0xE5, 0xAE, 0x9C}, // ��
+ {0xB1A6, 0x5B9D}, //{0xE5, 0xAE, 0x9D}, // ��
{0xCAB5, 0x5B9E}, //{0xE5, 0xAE, 0x9E}, // ʵ
- {0xB3E8, 0x5BA0}, //{0xE5, 0xAE, 0xA0}, //
- {0xC9F3, 0x5BA1}, //{0xE5, 0xAE, 0xA1}, //
- {0xBFCD, 0x5BA2}, //{0xE5, 0xAE, 0xA2}, //
- {0xD0FB, 0x5BA3}, //{0xE5, 0xAE, 0xA3}, //
- {0xCAD2, 0x5BA4}, //{0xE5, 0xAE, 0xA4}, //
- {0xBBC2, 0x5BA6}, //{0xE5, 0xAE, 0xA6}, //
- {0xCFDC, 0x5BAA}, //{0xE5, 0xAE, 0xAA}, //
- {0xB9AC, 0x5BAB}, //{0xE5, 0xAE, 0xAB}, //
- {0xD4D7, 0x5BB0}, //{0xE5, 0xAE, 0xB0}, //
- {0xBAA6, 0x5BB3}, //{0xE5, 0xAE, 0xB3}, //
- {0xD1E7, 0x5BB4}, //{0xE5, 0xAE, 0xB4}, //
- {0xCFFC, 0x5BB5}, //{0xE5, 0xAE, 0xB5}, //
- {0xBCD2, 0x5BB6}, //{0xE5, 0xAE, 0xB6}, //
- {0xC8DD, 0x5BB9}, //{0xE5, 0xAE, 0xB9}, //
- {0xBFED, 0x5BBD}, //{0xE5, 0xAE, 0xBD}, //
- {0xB1F6, 0x5BBE}, //{0xE5, 0xAE, 0xBE}, //
- {0xCBDE, 0x5BBF}, //{0xE5, 0xAE, 0xBF}, //
- {0xBCC5, 0x5BC2}, //{0xE5, 0xAF, 0x82}, //
- {0xBCC4, 0x5BC4}, //{0xE5, 0xAF, 0x84}, //
- {0xC3DC, 0x5BC6}, //{0xE5, 0xAF, 0x86}, //
- {0xBFDC, 0x5BC7}, //{0xE5, 0xAF, 0x87}, //
- {0xB8BB, 0x5BCC}, //{0xE5, 0xAF, 0x8C}, //
- {0xBAAE, 0x5BD2}, //{0xE5, 0xAF, 0x92}, //
+ {0xB3E8, 0x5BA0}, //{0xE5, 0xAE, 0xA0}, // ��
+ {0xC9F3, 0x5BA1}, //{0xE5, 0xAE, 0xA1}, // ��
+ {0xBFCD, 0x5BA2}, //{0xE5, 0xAE, 0xA2}, // ��
+ {0xD0FB, 0x5BA3}, //{0xE5, 0xAE, 0xA3}, // ��
+ {0xCAD2, 0x5BA4}, //{0xE5, 0xAE, 0xA4}, // ��
+ {0xBBC2, 0x5BA6}, //{0xE5, 0xAE, 0xA6}, // ��
+ {0xCFDC, 0x5BAA}, //{0xE5, 0xAE, 0xAA}, // ��
+ {0xB9AC, 0x5BAB}, //{0xE5, 0xAE, 0xAB}, // ��
+ {0xD4D7, 0x5BB0}, //{0xE5, 0xAE, 0xB0}, // ��
+ {0xBAA6, 0x5BB3}, //{0xE5, 0xAE, 0xB3}, // ��
+ {0xD1E7, 0x5BB4}, //{0xE5, 0xAE, 0xB4}, // ��
+ {0xCFFC, 0x5BB5}, //{0xE5, 0xAE, 0xB5}, // ��
+ {0xBCD2, 0x5BB6}, //{0xE5, 0xAE, 0xB6}, // ��
+ {0xC8DD, 0x5BB9}, //{0xE5, 0xAE, 0xB9}, // ��
+ {0xBFED, 0x5BBD}, //{0xE5, 0xAE, 0xBD}, // ��
+ {0xB1F6, 0x5BBE}, //{0xE5, 0xAE, 0xBE}, // ��
+ {0xCBDE, 0x5BBF}, //{0xE5, 0xAE, 0xBF}, // ��
+ {0xBCC5, 0x5BC2}, //{0xE5, 0xAF, 0x82}, // ��
+ {0xBCC4, 0x5BC4}, //{0xE5, 0xAF, 0x84}, // ��
+ {0xC3DC, 0x5BC6}, //{0xE5, 0xAF, 0x86}, // ��
+ {0xBFDC, 0x5BC7}, //{0xE5, 0xAF, 0x87}, // ��
+ {0xB8BB, 0x5BCC}, //{0xE5, 0xAF, 0x8C}, // ��
+ {0xBAAE, 0x5BD2}, //{0xE5, 0xAF, 0x92}, // ��
{0xD4A2, 0x5BD3}, //{0xE5, 0xAF, 0x93}, // Ԣ
- {0xC7DE, 0x5BDD}, //{0xE5, 0xAF, 0x9D}, //
+ {0xC7DE, 0x5BDD}, //{0xE5, 0xAF, 0x9D}, // ��
{0xC4AF, 0x5BDE}, //{0xE5, 0xAF, 0x9E}, // į
- {0xB2EC, 0x5BDF}, //{0xE5, 0xAF, 0x9F}, //
- {0xB9D1, 0x5BE1}, //{0xE5, 0xAF, 0xA1}, //
- {0xC1C8, 0x5BE5}, //{0xE5, 0xAF, 0xA5}, //
+ {0xB2EC, 0x5BDF}, //{0xE5, 0xAF, 0x9F}, // ��
+ {0xB9D1, 0x5BE1}, //{0xE5, 0xAF, 0xA1}, // ��
+ {0xC1C8, 0x5BE5}, //{0xE5, 0xAF, 0xA5}, // ��
{0xD5AF, 0x5BE8}, //{0xE5, 0xAF, 0xA8}, // կ
- {0xB4E7, 0x5BF8}, //{0xE5, 0xAF, 0xB8}, //
- {0xB6D4, 0x5BF9}, //{0xE5, 0xAF, 0xB9}, //
- {0xCBC2, 0x5BFA}, //{0xE5, 0xAF, 0xBA}, //
+ {0xB4E7, 0x5BF8}, //{0xE5, 0xAF, 0xB8}, // ��
+ {0xB6D4, 0x5BF9}, //{0xE5, 0xAF, 0xB9}, // ��
+ {0xCBC2, 0x5BFA}, //{0xE5, 0xAF, 0xBA}, // ��
{0xD1B0, 0x5BFB}, //{0xE5, 0xAF, 0xBB}, // Ѱ
- {0xB5BC, 0x5BFC}, //{0xE5, 0xAF, 0xBC}, //
- {0xCAD9, 0x5BFF}, //{0xE5, 0xAF, 0xBF}, //
- {0xB7E2, 0x5C01}, //{0xE5, 0xB0, 0x81}, //
- {0xC9E4, 0x5C04}, //{0xE5, 0xB0, 0x84}, //
- {0xBDAB, 0x5C06}, //{0xE5, 0xB0, 0x86}, //
+ {0xB5BC, 0x5BFC}, //{0xE5, 0xAF, 0xBC}, // ��
+ {0xCAD9, 0x5BFF}, //{0xE5, 0xAF, 0xBF}, // ��
+ {0xB7E2, 0x5C01}, //{0xE5, 0xB0, 0x81}, // ��
+ {0xC9E4, 0x5C04}, //{0xE5, 0xB0, 0x84}, // ��
+ {0xBDAB, 0x5C06}, //{0xE5, 0xB0, 0x86}, // ��
{0xCEBE, 0x5C09}, //{0xE5, 0xB0, 0x89}, // ξ
- {0xD7F0, 0x5C0A}, //{0xE5, 0xB0, 0x8A}, //
+ {0xD7F0, 0x5C0A}, //{0xE5, 0xB0, 0x8A}, // ��
{0xD0A1, 0x5C0F}, //{0xE5, 0xB0, 0x8F}, // С
- {0xC9D9, 0x5C11}, //{0xE5, 0xB0, 0x91}, //
- {0xB6FB, 0x5C14}, //{0xE5, 0xB0, 0x94}, //
- {0xBCE2, 0x5C16}, //{0xE5, 0xB0, 0x96}, //
- {0xB3BE, 0x5C18}, //{0xE5, 0xB0, 0x98}, //
- {0xC9D0, 0x5C1A}, //{0xE5, 0xB0, 0x9A}, //
- {0xB3A2, 0x5C1D}, //{0xE5, 0xB0, 0x9D}, //
- {0xD3C8, 0x5C24}, //{0xE5, 0xB0, 0xA4}, //
- {0xBECD, 0x5C31}, //{0xE5, 0xB0, 0xB1}, //
+ {0xC9D9, 0x5C11}, //{0xE5, 0xB0, 0x91}, // ��
+ {0xB6FB, 0x5C14}, //{0xE5, 0xB0, 0x94}, // ��
+ {0xBCE2, 0x5C16}, //{0xE5, 0xB0, 0x96}, // ��
+ {0xB3BE, 0x5C18}, //{0xE5, 0xB0, 0x98}, // ��
+ {0xC9D0, 0x5C1A}, //{0xE5, 0xB0, 0x9A}, // ��
+ {0xB3A2, 0x5C1D}, //{0xE5, 0xB0, 0x9D}, // ��
+ {0xD3C8, 0x5C24}, //{0xE5, 0xB0, 0xA4}, // ��
+ {0xBECD, 0x5C31}, //{0xE5, 0xB0, 0xB1}, // ��
{0xCAAC, 0x5C38}, //{0xE5, 0xB0, 0xB8}, // ʬ
- {0xB3DF, 0x5C3A}, //{0xE5, 0xB0, 0xBA}, //
- {0xC4E1, 0x5C3C}, //{0xE5, 0xB0, 0xBC}, //
- {0xBEA1, 0x5C3D}, //{0xE5, 0xB0, 0xBD}, //
+ {0xB3DF, 0x5C3A}, //{0xE5, 0xB0, 0xBA}, // ��
+ {0xC4E1, 0x5C3C}, //{0xE5, 0xB0, 0xBC}, // ��
+ {0xBEA1, 0x5C3D}, //{0xE5, 0xB0, 0xBD}, // ��
{0xCEB2, 0x5C3E}, //{0xE5, 0xB0, 0xBE}, // β
- {0xC4F2, 0x5C3F}, //{0xE5, 0xB0, 0xBF}, //
- {0xBED6, 0x5C40}, //{0xE5, 0xB1, 0x80}, //
+ {0xC4F2, 0x5C3F}, //{0xE5, 0xB0, 0xBF}, // ��
+ {0xBED6, 0x5C40}, //{0xE5, 0xB1, 0x80}, // ��
{0xC6A8, 0x5C41}, //{0xE5, 0xB1, 0x81}, // ƨ
- {0xB2E3, 0x5C42}, //{0xE5, 0xB1, 0x82}, //
- {0xBED3, 0x5C45}, //{0xE5, 0xB1, 0x85}, //
- {0xC7FC, 0x5C48}, //{0xE5, 0xB1, 0x88}, //
- {0xCCEB, 0x5C49}, //{0xE5, 0xB1, 0x89}, //
- {0xBDEC, 0x5C4A}, //{0xE5, 0xB1, 0x8A}, //
- {0xCEDD, 0x5C4B}, //{0xE5, 0xB1, 0x8B}, //
+ {0xB2E3, 0x5C42}, //{0xE5, 0xB1, 0x82}, // ��
+ {0xBED3, 0x5C45}, //{0xE5, 0xB1, 0x85}, // ��
+ {0xC7FC, 0x5C48}, //{0xE5, 0xB1, 0x88}, // ��
+ {0xCCEB, 0x5C49}, //{0xE5, 0xB1, 0x89}, // ��
+ {0xBDEC, 0x5C4A}, //{0xE5, 0xB1, 0x8A}, // ��
+ {0xCEDD, 0x5C4B}, //{0xE5, 0xB1, 0x8B}, // ��
{0xCABA, 0x5C4E}, //{0xE5, 0xB1, 0x8E}, // ʺ
- {0xC6C1, 0x5C4F}, //{0xE5, 0xB1, 0x8F}, //
+ {0xC6C1, 0x5C4F}, //{0xE5, 0xB1, 0x8F}, // ��
{0xD0BC, 0x5C51}, //{0xE5, 0xB1, 0x91}, // м
{0xD5B9, 0x5C55}, //{0xE5, 0xB1, 0x95}, // չ
- {0xCAF4, 0x5C5E}, //{0xE5, 0xB1, 0x9E}, //
- {0xCDC0, 0x5C60}, //{0xE5, 0xB1, 0xA0}, //
- {0xC2C5, 0x5C61}, //{0xE5, 0xB1, 0xA1}, //
- {0xC2C4, 0x5C65}, //{0xE5, 0xB1, 0xA5}, //
- {0xCDCD, 0x5C6F}, //{0xE5, 0xB1, 0xAF}, //
+ {0xCAF4, 0x5C5E}, //{0xE5, 0xB1, 0x9E}, // ��
+ {0xCDC0, 0x5C60}, //{0xE5, 0xB1, 0xA0}, // ��
+ {0xC2C5, 0x5C61}, //{0xE5, 0xB1, 0xA1}, // ��
+ {0xC2C4, 0x5C65}, //{0xE5, 0xB1, 0xA5}, // ��
+ {0xCDCD, 0x5C6F}, //{0xE5, 0xB1, 0xAF}, // ��
{0xC9BD, 0x5C71}, //{0xE5, 0xB1, 0xB1}, // ɽ
- {0xD2D9, 0x5C79}, //{0xE5, 0xB1, 0xB9}, //
- {0xD3EC, 0x5C7F}, //{0xE5, 0xB1, 0xBF}, //
- {0xCBEA, 0x5C81}, //{0xE5, 0xB2, 0x81}, //
- {0xC6F1, 0x5C82}, //{0xE5, 0xB2, 0x82}, //
- {0xB2ED, 0x5C94}, //{0xE5, 0xB2, 0x94}, //
- {0xE1AB, 0x5C96}, //{0xE5, 0xB2, 0x96}, //
- {0xB8DA, 0x5C97}, //{0xE5, 0xB2, 0x97}, //
- {0xB5BA, 0x5C9B}, //{0xE5, 0xB2, 0x9B}, //
- {0xD1D2, 0x5CA9}, //{0xE5, 0xB2, 0xA9}, //
- {0xC1EB, 0x5CAD}, //{0xE5, 0xB2, 0xAD}, //
- {0xD4C0, 0x5CB3}, //{0xE5, 0xB2, 0xB3}, //
- {0xB0B6, 0x5CB8}, //{0xE5, 0xB2, 0xB8}, //
+ {0xD2D9, 0x5C79}, //{0xE5, 0xB1, 0xB9}, // ��
+ {0xD3EC, 0x5C7F}, //{0xE5, 0xB1, 0xBF}, // ��
+ {0xCBEA, 0x5C81}, //{0xE5, 0xB2, 0x81}, // ��
+ {0xC6F1, 0x5C82}, //{0xE5, 0xB2, 0x82}, // ��
+ {0xB2ED, 0x5C94}, //{0xE5, 0xB2, 0x94}, // ��
+ {0xE1AB, 0x5C96}, //{0xE5, 0xB2, 0x96}, // �
+ {0xB8DA, 0x5C97}, //{0xE5, 0xB2, 0x97}, // ��
+ {0xB5BA, 0x5C9B}, //{0xE5, 0xB2, 0x9B}, // ��
+ {0xD1D2, 0x5CA9}, //{0xE5, 0xB2, 0xA9}, // ��
+ {0xC1EB, 0x5CAD}, //{0xE5, 0xB2, 0xAD}, // ��
+ {0xD4C0, 0x5CB3}, //{0xE5, 0xB2, 0xB3}, // ��
+ {0xB0B6, 0x5CB8}, //{0xE5, 0xB2, 0xB8}, // ��
{0xCFBF, 0x5CE1}, //{0xE5, 0xB3, 0xA1}, // Ͽ
- {0xC2CD, 0x5CE6}, //{0xE5, 0xB3, 0xA6}, //
- {0xC7CD, 0x5CED}, //{0xE5, 0xB3, 0xAD}, //
- {0xB7E5, 0x5CF0}, //{0xE5, 0xB3, 0xB0}, //
- {0xBEFE, 0x5CFB}, //{0xE5, 0xB3, 0xBB}, //
- {0xB3E7, 0x5D07}, //{0xE5, 0xB4, 0x87}, //
- {0xC6E9, 0x5D0E}, //{0xE5, 0xB4, 0x8E}, //
- {0xB4DE, 0x5D14}, //{0xE5, 0xB4, 0x94}, //
- {0xD1C2, 0x5D16}, //{0xE5, 0xB4, 0x96}, //
- {0xB1C0, 0x5D29}, //{0xE5, 0xB4, 0xA9}, //
+ {0xC2CD, 0x5CE6}, //{0xE5, 0xB3, 0xA6}, // ��
+ {0xC7CD, 0x5CED}, //{0xE5, 0xB3, 0xAD}, // ��
+ {0xB7E5, 0x5CF0}, //{0xE5, 0xB3, 0xB0}, // ��
+ {0xBEFE, 0x5CFB}, //{0xE5, 0xB3, 0xBB}, // ��
+ {0xB3E7, 0x5D07}, //{0xE5, 0xB4, 0x87}, // ��
+ {0xC6E9, 0x5D0E}, //{0xE5, 0xB4, 0x8E}, // ��
+ {0xB4DE, 0x5D14}, //{0xE5, 0xB4, 0x94}, // ��
+ {0xD1C2, 0x5D16}, //{0xE5, 0xB4, 0x96}, // ��
+ {0xB1C0, 0x5D29}, //{0xE5, 0xB4, 0xA9}, // ��
{0xD5B8, 0x5D2D}, //{0xE5, 0xB4, 0xAD}, // ո
{0xC7B6, 0x5D4C}, //{0xE5, 0xB5, 0x8C}, // Ƕ
{0xCEA1, 0x5DCD}, //{0xE5, 0xB7, 0x8D}, // Ρ
- {0xB4A8, 0x5DDD}, //{0xE5, 0xB7, 0x9D}, //
- {0xD6DD, 0x5DDE}, //{0xE5, 0xB7, 0x9E}, //
+ {0xB4A8, 0x5DDD}, //{0xE5, 0xB7, 0x9D}, // ��
+ {0xD6DD, 0x5DDE}, //{0xE5, 0xB7, 0x9E}, // ��
{0xD1B2, 0x5DE1}, //{0xE5, 0xB7, 0xA1}, // Ѳ
- {0xB3B2, 0x5DE2}, //{0xE5, 0xB7, 0xA2}, //
- {0xB9A4, 0x5DE5}, //{0xE5, 0xB7, 0xA5}, //
- {0xD7F3, 0x5DE6}, //{0xE5, 0xB7, 0xA6}, //
- {0xC7C9, 0x5DE7}, //{0xE5, 0xB7, 0xA7}, //
- {0xBEDE, 0x5DE8}, //{0xE5, 0xB7, 0xA8}, //
- {0xB9AE, 0x5DE9}, //{0xE5, 0xB7, 0xA9}, //
- {0xCED7, 0x5DEB}, //{0xE5, 0xB7, 0xAB}, //
- {0xB2EE, 0x5DEE}, //{0xE5, 0xB7, 0xAE}, //
- {0xBCBA, 0x5DF1}, //{0xE5, 0xB7, 0xB1}, //
- {0xD2D1, 0x5DF2}, //{0xE5, 0xB7, 0xB2}, //
- {0xB0CD, 0x5DF4}, //{0xE5, 0xB7, 0xB4}, //
- {0xCFEF, 0x5DF7}, //{0xE5, 0xB7, 0xB7}, //
- {0xBDED, 0x5DFE}, //{0xE5, 0xB7, 0xBE}, //
- {0xB1D2, 0x5E01}, //{0xE5, 0xB8, 0x81}, //
- {0xCAD0, 0x5E02}, //{0xE5, 0xB8, 0x82}, //
- {0xB2BC, 0x5E03}, //{0xE5, 0xB8, 0x83}, //
+ {0xB3B2, 0x5DE2}, //{0xE5, 0xB7, 0xA2}, // ��
+ {0xB9A4, 0x5DE5}, //{0xE5, 0xB7, 0xA5}, // ��
+ {0xD7F3, 0x5DE6}, //{0xE5, 0xB7, 0xA6}, // ��
+ {0xC7C9, 0x5DE7}, //{0xE5, 0xB7, 0xA7}, // ��
+ {0xBEDE, 0x5DE8}, //{0xE5, 0xB7, 0xA8}, // ��
+ {0xB9AE, 0x5DE9}, //{0xE5, 0xB7, 0xA9}, // ��
+ {0xCED7, 0x5DEB}, //{0xE5, 0xB7, 0xAB}, // ��
+ {0xB2EE, 0x5DEE}, //{0xE5, 0xB7, 0xAE}, // ��
+ {0xBCBA, 0x5DF1}, //{0xE5, 0xB7, 0xB1}, // ��
+ {0xD2D1, 0x5DF2}, //{0xE5, 0xB7, 0xB2}, // ��
+ {0xB0CD, 0x5DF4}, //{0xE5, 0xB7, 0xB4}, // ��
+ {0xCFEF, 0x5DF7}, //{0xE5, 0xB7, 0xB7}, // ��
+ {0xBDED, 0x5DFE}, //{0xE5, 0xB7, 0xBE}, // ��
+ {0xB1D2, 0x5E01}, //{0xE5, 0xB8, 0x81}, // ��
+ {0xCAD0, 0x5E02}, //{0xE5, 0xB8, 0x82}, // ��
+ {0xB2BC, 0x5E03}, //{0xE5, 0xB8, 0x83}, // ��
{0xCBA7, 0x5E05}, //{0xE5, 0xB8, 0x85}, // ˧
- {0xB7AB, 0x5E06}, //{0xE5, 0xB8, 0x86}, //
+ {0xB7AB, 0x5E06}, //{0xE5, 0xB8, 0x86}, // ��
{0xCAA6, 0x5E08}, //{0xE5, 0xB8, 0x88}, // ʦ
{0xCFA3, 0x5E0C}, //{0xE5, 0xB8, 0x8C}, // ϣ
- {0xD5CA, 0x5E10}, //{0xE5, 0xB8, 0x90}, //
- {0xC5C1, 0x5E15}, //{0xE5, 0xB8, 0x95}, //
- {0xCCFB, 0x5E16}, //{0xE5, 0xB8, 0x96}, //
- {0xC1B1, 0x5E18}, //{0xE5, 0xB8, 0x98}, //
- {0xD6E3, 0x5E1A}, //{0xE5, 0xB8, 0x9A}, //
- {0xD6C4, 0x5E1C}, //{0xE5, 0xB8, 0x9C}, //
- {0xB5DB, 0x5E1D}, //{0xE5, 0xB8, 0x9D}, //
- {0xB4F8, 0x5E26}, //{0xE5, 0xB8, 0xA6}, //
+ {0xD5CA, 0x5E10}, //{0xE5, 0xB8, 0x90}, // ��
+ {0xC5C1, 0x5E15}, //{0xE5, 0xB8, 0x95}, // ��
+ {0xCCFB, 0x5E16}, //{0xE5, 0xB8, 0x96}, // ��
+ {0xC1B1, 0x5E18}, //{0xE5, 0xB8, 0x98}, // q
+ {0xD6E3, 0x5E1A}, //{0xE5, 0xB8, 0x9A}, // ��
+ {0xD6C4, 0x5E1C}, //{0xE5, 0xB8, 0x9C}, // ��
+ {0xB5DB, 0x5E1D}, //{0xE5, 0xB8, 0x9D}, // ��
+ {0xB4F8, 0x5E26}, //{0xE5, 0xB8, 0xA6}, // ��
{0xCFAF, 0x5E2D}, //{0xE5, 0xB8, 0xAD}, // ϯ
- {0xB0EF, 0x5E2E}, //{0xE5, 0xB8, 0xAE}, //
- {0xB3A3, 0x5E38}, //{0xE5, 0xB8, 0xB8}, //
+ {0xB0EF, 0x5E2E}, //{0xE5, 0xB8, 0xAE}, // ��
+ {0xB3A3, 0x5E38}, //{0xE5, 0xB8, 0xB8}, // ��
{0xC3B1, 0x5E3D}, //{0xE5, 0xB8, 0xBD}, // ñ
- {0xB7F9, 0x5E45}, //{0xE5, 0xB9, 0x85}, //
- {0xBBCF, 0x5E4C}, //{0xE5, 0xB9, 0x8C}, //
- {0xE1A3, 0x5E54}, //{0xE5, 0xB9, 0x94}, //
+ {0xB7F9, 0x5E45}, //{0xE5, 0xB9, 0x85}, // ��
+ {0xBBCF, 0x5E4C}, //{0xE5, 0xB9, 0x8C}, // ��
+ {0xE1A3, 0x5E54}, //{0xE5, 0xB9, 0x94}, // �
{0xC4BB, 0x5E55}, //{0xE5, 0xB9, 0x95}, // Ļ
- {0xB4B1, 0x5E62}, //{0xE5, 0xB9, 0xA2}, //
- {0xB8C9, 0x5E72}, //{0xE5, 0xB9, 0xB2}, //
+ {0xB4B1, 0x5E62}, //{0xE5, 0xB9, 0xA2}, // ��
+ {0xB8C9, 0x5E72}, //{0xE5, 0xB9, 0xB2}, // ��
{0xC6BD, 0x5E73}, //{0xE5, 0xB9, 0xB3}, // ƽ
- {0xC4EA, 0x5E74}, //{0xE5, 0xB9, 0xB4}, //
- {0xB2A2, 0x5E76}, //{0xE5, 0xB9, 0xB6}, //
- {0xD0D2, 0x5E78}, //{0xE5, 0xB9, 0xB8}, //
- {0xBBC3, 0x5E7B}, //{0xE5, 0xB9, 0xBB}, //
- {0xD3D7, 0x5E7C}, //{0xE5, 0xB9, 0xBC}, //
- {0xD3C4, 0x5E7D}, //{0xE5, 0xB9, 0xBD}, //
- {0xB9E3, 0x5E7F}, //{0xE5, 0xB9, 0xBF}, //
+ {0xC4EA, 0x5E74}, //{0xE5, 0xB9, 0xB4}, // ��
+ {0xB2A2, 0x5E76}, //{0xE5, 0xB9, 0xB6}, // ��
+ {0xD0D2, 0x5E78}, //{0xE5, 0xB9, 0xB8}, // ��
+ {0xBBC3, 0x5E7B}, //{0xE5, 0xB9, 0xBB}, // ��
+ {0xD3D7, 0x5E7C}, //{0xE5, 0xB9, 0xBC}, // ��
+ {0xD3C4, 0x5E7D}, //{0xE5, 0xB9, 0xBD}, // ��
+ {0xB9E3, 0x5E7F}, //{0xE5, 0xB9, 0xBF}, // ��
{0xD7AF, 0x5E84}, //{0xE5, 0xBA, 0x84}, // ׯ
- {0xC7EC, 0x5E86}, //{0xE5, 0xBA, 0x86}, //
- {0xB1D3, 0x5E87}, //{0xE5, 0xBA, 0x87}, //
- {0xB4B2, 0x5E8A}, //{0xE5, 0xBA, 0x8A}, //
- {0xD0F2, 0x5E8F}, //{0xE5, 0xBA, 0x8F}, //
+ {0xC7EC, 0x5E86}, //{0xE5, 0xBA, 0x86}, // ��
+ {0xB1D3, 0x5E87}, //{0xE5, 0xBA, 0x87}, // ��
+ {0xB4B2, 0x5E8A}, //{0xE5, 0xBA, 0x8A}, // ��
+ {0xD0F2, 0x5E8F}, //{0xE5, 0xBA, 0x8F}, // ��
{0xC2AE, 0x5E90}, //{0xE5, 0xBA, 0x90}, // ®
- {0xBFE2, 0x5E93}, //{0xE5, 0xBA, 0x93}, //
+ {0xBFE2, 0x5E93}, //{0xE5, 0xBA, 0x93}, // ��
{0xD3A6, 0x5E94}, //{0xE5, 0xBA, 0x94}, // Ӧ
- {0xB5D7, 0x5E95}, //{0xE5, 0xBA, 0x95}, //
- {0xB5EA, 0x5E97}, //{0xE5, 0xBA, 0x97}, //
- {0xC3ED, 0x5E99}, //{0xE5, 0xBA, 0x99}, //
- {0xB8AE, 0x5E9C}, //{0xE5, 0xBA, 0x9C}, //
- {0xC5D3, 0x5E9E}, //{0xE5, 0xBA, 0x9E}, //
- {0xB7CF, 0x5E9F}, //{0xE5, 0xBA, 0x9F}, //
- {0xB6C8, 0x5EA6}, //{0xE5, 0xBA, 0xA6}, //
- {0xD7F9, 0x5EA7}, //{0xE5, 0xBA, 0xA7}, //
+ {0xB5D7, 0x5E95}, //{0xE5, 0xBA, 0x95}, // ��
+ {0xB5EA, 0x5E97}, //{0xE5, 0xBA, 0x97}, // ��
+ {0xC3ED, 0x5E99}, //{0xE5, 0xBA, 0x99}, // ��
+ {0xB8AE, 0x5E9C}, //{0xE5, 0xBA, 0x9C}, // ��
+ {0xC5D3, 0x5E9E}, //{0xE5, 0xBA, 0x9E}, // ��
+ {0xB7CF, 0x5E9F}, //{0xE5, 0xBA, 0x9F}, // ��
+ {0xB6C8, 0x5EA6}, //{0xE5, 0xBA, 0xA6}, // ��
+ {0xD7F9, 0x5EA7}, //{0xE5, 0xBA, 0xA7}, // ��
{0xCDA5, 0x5EAD}, //{0xE5, 0xBA, 0xAD}, // ͥ
- {0xE2D6, 0x5EB5}, //{0xE5, 0xBA, 0xB5}, //
- {0xCAFC, 0x5EB6}, //{0xE5, 0xBA, 0xB6}, //
- {0xBFB5, 0x5EB7}, //{0xE5, 0xBA, 0xB7}, //
+ {0xE2D6, 0x5EB5}, //{0xE5, 0xBA, 0xB5}, // ��
+ {0xCAFC, 0x5EB6}, //{0xE5, 0xBA, 0xB6}, // ��
+ {0xBFB5, 0x5EB7}, //{0xE5, 0xBA, 0xB7}, // ��
{0xD3B9, 0x5EB8}, //{0xE5, 0xBA, 0xB8}, // ӹ
- {0xC1AE, 0x5EC9}, //{0xE5, 0xBB, 0x89}, //
- {0xC0C8, 0x5ECA}, //{0xE5, 0xBB, 0x8A}, //
- {0xC0AA, 0x5ED3}, //{0xE5, 0xBB, 0x93}, //
- {0xD1D3, 0x5EF6}, //{0xE5, 0xBB, 0xB6}, //
+ {0xC1AE, 0x5EC9}, //{0xE5, 0xBB, 0x89}, // n
+ {0xC0C8, 0x5ECA}, //{0xE5, 0xBB, 0x8A}, // ��
+ {0xC0AA, 0x5ED3}, //{0xE5, 0xBB, 0x93}, // *
+ {0xD1D3, 0x5EF6}, //{0xE5, 0xBB, 0xB6}, // ��
{0xCDA2, 0x5EF7}, //{0xE5, 0xBB, 0xB7}, // ͢
- {0xBDA8, 0x5EFA}, //{0xE5, 0xBB, 0xBA}, //
- {0xBFAA, 0x5F00}, //{0xE5, 0xBC, 0x80}, //
- {0xD2EC, 0x5F02}, //{0xE5, 0xBC, 0x82}, //
- {0xC6FA, 0x5F03}, //{0xE5, 0xBC, 0x83}, //
+ {0xBDA8, 0x5EFA}, //{0xE5, 0xBB, 0xBA}, // ��
+ {0xBFAA, 0x5F00}, //{0xE5, 0xBC, 0x80}, // ��
+ {0xD2EC, 0x5F02}, //{0xE5, 0xBC, 0x82}, // ��
+ {0xC6FA, 0x5F03}, //{0xE5, 0xBC, 0x83}, // ��
{0xC5AA, 0x5F04}, //{0xE5, 0xBC, 0x84}, // Ū
- {0xB1D7, 0x5F0A}, //{0xE5, 0xBC, 0x8A}, //
+ {0xB1D7, 0x5F0A}, //{0xE5, 0xBC, 0x8A}, // ��
{0xCABD, 0x5F0F}, //{0xE5, 0xBC, 0x8F}, // ʽ
- {0xB9AD, 0x5F13}, //{0xE5, 0xBC, 0x93}, //
- {0xD2FD, 0x5F15}, //{0xE5, 0xBC, 0x95}, //
- {0xB3DA, 0x5F1B}, //{0xE5, 0xBC, 0x9B}, //
- {0xB5DC, 0x5F1F}, //{0xE5, 0xBC, 0x9F}, //
- {0xD5C5, 0x5F20}, //{0xE5, 0xBC, 0xA0}, //
- {0xC3D6, 0x5F25}, //{0xE5, 0xBC, 0xA5}, //
- {0xCFD2, 0x5F26}, //{0xE5, 0xBC, 0xA6}, //
- {0xBBA1, 0x5F27}, //{0xE5, 0xBC, 0xA7}, //
- {0xCDE4, 0x5F2F}, //{0xE5, 0xBC, 0xAF}, //
- {0xC8F5, 0x5F31}, //{0xE5, 0xBC, 0xB1}, //
- {0xB5AF, 0x5F39}, //{0xE5, 0xBC, 0xB9}, //
+ {0xB9AD, 0x5F13}, //{0xE5, 0xBC, 0x93}, // ��
+ {0xD2FD, 0x5F15}, //{0xE5, 0xBC, 0x95}, // ��
+ {0xB3DA, 0x5F1B}, //{0xE5, 0xBC, 0x9B}, // ��
+ {0xB5DC, 0x5F1F}, //{0xE5, 0xBC, 0x9F}, // ��
+ {0xD5C5, 0x5F20}, //{0xE5, 0xBC, 0xA0}, // ��
+ {0xC3D6, 0x5F25}, //{0xE5, 0xBC, 0xA5}, // ��
+ {0xCFD2, 0x5F26}, //{0xE5, 0xBC, 0xA6}, // ��
+ {0xBBA1, 0x5F27}, //{0xE5, 0xBC, 0xA7}, // ��
+ {0xCDE4, 0x5F2F}, //{0xE5, 0xBC, 0xAF}, // ��
+ {0xC8F5, 0x5F31}, //{0xE5, 0xBC, 0xB1}, // ��
+ {0xB5AF, 0x5F39}, //{0xE5, 0xBC, 0xB9}, // ��
{0xC7BF, 0x5F3A}, //{0xE5, 0xBC, 0xBA}, // ǿ
- {0xB9E9, 0x5F52}, //{0xE5, 0xBD, 0x92}, //
- {0xB5B1, 0x5F53}, //{0xE5, 0xBD, 0x93}, //
+ {0xB9E9, 0x5F52}, //{0xE5, 0xBD, 0x92}, // ��
+ {0xB5B1, 0x5F53}, //{0xE5, 0xBD, 0x93}, // ��
{0xC2BC, 0x5F55}, //{0xE5, 0xBD, 0x95}, // ¼
- {0xD0CE, 0x5F62}, //{0xE5, 0xBD, 0xA2}, //
+ {0xD0CE, 0x5F62}, //{0xE5, 0xBD, 0xA2}, // ��
{0xCDAE, 0x5F64}, //{0xE5, 0xBD, 0xA4}, // ͮ
- {0xB2CA, 0x5F69}, //{0xE5, 0xBD, 0xA9}, //
- {0xB1EB, 0x5F6A}, //{0xE5, 0xBD, 0xAA}, //
- {0xB1F2, 0x5F6C}, //{0xE5, 0xBD, 0xAC}, //
- {0xC5ED, 0x5F6D}, //{0xE5, 0xBD, 0xAD}, //
- {0xD5C3, 0x5F70}, //{0xE5, 0xBD, 0xB0}, //
+ {0xB2CA, 0x5F69}, //{0xE5, 0xBD, 0xA9}, // ��
+ {0xB1EB, 0x5F6A}, //{0xE5, 0xBD, 0xAA}, // ��
+ {0xB1F2, 0x5F6C}, //{0xE5, 0xBD, 0xAC}, // ��
+ {0xC5ED, 0x5F6D}, //{0xE5, 0xBD, 0xAD}, // ��
+ {0xD5C3, 0x5F70}, //{0xE5, 0xBD, 0xB0}, // ��
{0xD3B0, 0x5F71}, //{0xE5, 0xBD, 0xB1}, // Ӱ
- {0xD2DB, 0x5F79}, //{0xE5, 0xBD, 0xB9}, //
- {0xB3B9, 0x5F7B}, //{0xE5, 0xBD, 0xBB}, //
- {0xB1CB, 0x5F7C}, //{0xE5, 0xBD, 0xBC}, //
- {0xCDF9, 0x5F80}, //{0xE5, 0xBE, 0x80}, //
- {0xD5F7, 0x5F81}, //{0xE5, 0xBE, 0x81}, //
- {0xBEB6, 0x5F84}, //{0xE5, 0xBE, 0x84}, //
- {0xB4FD, 0x5F85}, //{0xE5, 0xBE, 0x85}, //
- {0xBADC, 0x5F88}, //{0xE5, 0xBE, 0x88}, //
- {0xBBB2, 0x5F8A}, //{0xE5, 0xBE, 0x8A}, //
- {0xC2C9, 0x5F8B}, //{0xE5, 0xBE, 0x8B}, //
- {0xD0EC, 0x5F90}, //{0xE5, 0xBE, 0x90}, //
+ {0xD2DB, 0x5F79}, //{0xE5, 0xBD, 0xB9}, // ��
+ {0xB3B9, 0x5F7B}, //{0xE5, 0xBD, 0xBB}, // ��
+ {0xB1CB, 0x5F7C}, //{0xE5, 0xBD, 0xBC}, // ��
+ {0xCDF9, 0x5F80}, //{0xE5, 0xBE, 0x80}, // ��
+ {0xD5F7, 0x5F81}, //{0xE5, 0xBE, 0x81}, // ��
+ {0xBEB6, 0x5F84}, //{0xE5, 0xBE, 0x84}, // ��
+ {0xB4FD, 0x5F85}, //{0xE5, 0xBE, 0x85}, // ��
+ {0xBADC, 0x5F88}, //{0xE5, 0xBE, 0x88}, // ��
+ {0xBBB2, 0x5F8A}, //{0xE5, 0xBE, 0x8A}, // ��
+ {0xC2C9, 0x5F8B}, //{0xE5, 0xBE, 0x8B}, // ��
+ {0xD0EC, 0x5F90}, //{0xE5, 0xBE, 0x90}, // ��
{0xCDBD, 0x5F92}, //{0xE5, 0xBE, 0x92}, // ͽ
- {0xB5C3, 0x5F97}, //{0xE5, 0xBE, 0x97}, //
- {0xC5C7, 0x5F98}, //{0xE5, 0xBE, 0x98}, //
- {0xD3F9, 0x5FA1}, //{0xE5, 0xBE, 0xA1}, //
+ {0xB5C3, 0x5F97}, //{0xE5, 0xBE, 0x97}, // ��
+ {0xC5C7, 0x5F98}, //{0xE5, 0xBE, 0x98}, // ��
+ {0xD3F9, 0x5FA1}, //{0xE5, 0xBE, 0xA1}, // ��
{0xD1AD, 0x5FAA}, //{0xE5, 0xBE, 0xAA}, // ѭ
{0xCEA2, 0x5FAE}, //{0xE5, 0xBE, 0xAE}, //
- {0xB5C2, 0x5FB7}, //{0xE5, 0xBE, 0xB7}, //
- {0xBBD5, 0x5FBD}, //{0xE5, 0xBE, 0xBD}, //
- {0xD0C4, 0x5FC3}, //{0xE5, 0xBF, 0x83}, //
- {0xB1D8, 0x5FC5}, //{0xE5, 0xBF, 0x85}, //
- {0xD2E4, 0x5FC6}, //{0xE5, 0xBF, 0x86}, //
- {0xBCC9, 0x5FCC}, //{0xE5, 0xBF, 0x8C}, //
- {0xC8CC, 0x5FCD}, //{0xE5, 0xBF, 0x8D}, //
+ {0xB5C2, 0x5FB7}, //{0xE5, 0xBE, 0xB7}, // ��
+ {0xBBD5, 0x5FBD}, //{0xE5, 0xBE, 0xBD}, // ��
+ {0xD0C4, 0x5FC3}, //{0xE5, 0xBF, 0x83}, // ��
+ {0xB1D8, 0x5FC5}, //{0xE5, 0xBF, 0x85}, // ��
+ {0xD2E4, 0x5FC6}, //{0xE5, 0xBF, 0x86}, // ��
+ {0xBCC9, 0x5FCC}, //{0xE5, 0xBF, 0x8C}, // ��
+ {0xC8CC, 0x5FCD}, //{0xE5, 0xBF, 0x8D}, // ��
{0xD6BE, 0x5FD7}, //{0xE5, 0xBF, 0x97}, // ־
- {0xCDFC, 0x5FD8}, //{0xE5, 0xBF, 0x98}, //
+ {0xCDFC, 0x5FD8}, //{0xE5, 0xBF, 0x98}, // ��
{0xC3A6, 0x5FD9}, //{0xE5, 0xBF, 0x99}, // æ
- {0xD6D2, 0x5FE0}, //{0xE5, 0xBF, 0xA0}, //
- {0xD3C7, 0x5FE7}, //{0xE5, 0xBF, 0xA7}, //
- {0xBFEC, 0x5FEB}, //{0xE5, 0xBF, 0xAB}, //
- {0xB3C0, 0x5FF1}, //{0xE5, 0xBF, 0xB1}, //
- {0xC4EE, 0x5FF5}, //{0xE5, 0xBF, 0xB5}, //
- {0xBAF6, 0x5FFD}, //{0xE5, 0xBF, 0xBD}, //
- {0xB7DE, 0x5FFF}, //{0xE5, 0xBF, 0xBF}, //
- {0xBBB3, 0x6000}, //{0xE6, 0x80, 0x80}, //
+ {0xD6D2, 0x5FE0}, //{0xE5, 0xBF, 0xA0}, // ��
+ {0xD3C7, 0x5FE7}, //{0xE5, 0xBF, 0xA7}, // ��
+ {0xBFEC, 0x5FEB}, //{0xE5, 0xBF, 0xAB}, // ��
+ {0xB3C0, 0x5FF1}, //{0xE5, 0xBF, 0xB1}, // ��
+ {0xC4EE, 0x5FF5}, //{0xE5, 0xBF, 0xB5}, // ��
+ {0xBAF6, 0x5FFD}, //{0xE5, 0xBF, 0xBD}, // ��
+ {0xB7DE, 0x5FFF}, //{0xE5, 0xBF, 0xBF}, // ��
+ {0xBBB3, 0x6000}, //{0xE6, 0x80, 0x80}, // ��
{0xCCAC, 0x6001}, //{0xE6, 0x80, 0x81}, // ̬
- {0xD4F5, 0x600E}, //{0xE6, 0x80, 0x8E}, //
+ {0xD4F5, 0x600E}, //{0xE6, 0x80, 0x8E}, // ��
{0xC5AD, 0x6012}, //{0xE6, 0x80, 0x92}, // ŭ
- {0xD5FA, 0x6014}, //{0xE6, 0x80, 0x94}, //
- {0xC5C2, 0x6015}, //{0xE6, 0x80, 0x95}, //
- {0xB2C0, 0x6016}, //{0xE6, 0x80, 0x96}, //
- {0xC1AF, 0x601C}, //{0xE6, 0x80, 0x9C}, //
+ {0xD5FA, 0x6014}, //{0xE6, 0x80, 0x94}, // ��
+ {0xC5C2, 0x6015}, //{0xE6, 0x80, 0x95}, // ��
+ {0xB2C0, 0x6016}, //{0xE6, 0x80, 0x96}, // ��
+ {0xC1AF, 0x601C}, //{0xE6, 0x80, 0x9C}, // o
{0xCBBC, 0x601D}, //{0xE6, 0x80, 0x9D}, // ˼
- {0xB5A1, 0x6020}, //{0xE6, 0x80, 0xA0}, //
- {0xBCB1, 0x6025}, //{0xE6, 0x80, 0xA5}, //
- {0xD0D4, 0x6027}, //{0xE6, 0x80, 0xA7}, //
+ {0xB5A1, 0x6020}, //{0xE6, 0x80, 0xA0}, // ��
+ {0xBCB1, 0x6025}, //{0xE6, 0x80, 0xA5}, // ��
+ {0xD0D4, 0x6027}, //{0xE6, 0x80, 0xA7}, // ��
{0xD4B9, 0x6028}, //{0xE6, 0x80, 0xA8}, // Թ
- {0xB9D6, 0x602A}, //{0xE6, 0x80, 0xAA}, //
- {0xC7D3, 0x602F}, //{0xE6, 0x80, 0xAF}, //
- {0xD7DC, 0x603B}, //{0xE6, 0x80, 0xBB}, //
- {0xCAD1, 0x6043}, //{0xE6, 0x81, 0x83}, //
- {0xC1B5, 0x604B}, //{0xE6, 0x81, 0x8B}, //
- {0xBBD0, 0x604D}, //{0xE6, 0x81, 0x8D}, //
- {0xBFD6, 0x6050}, //{0xE6, 0x81, 0x90}, //
- {0xBAE3, 0x6052}, //{0xE6, 0x81, 0x92}, //
+ {0xB9D6, 0x602A}, //{0xE6, 0x80, 0xAA}, // ��
+ {0xC7D3, 0x602F}, //{0xE6, 0x80, 0xAF}, // ��
+ {0xD7DC, 0x603B}, //{0xE6, 0x80, 0xBB}, // ��
+ {0xCAD1, 0x6043}, //{0xE6, 0x81, 0x83}, // ��
+ {0xC1B5, 0x604B}, //{0xE6, 0x81, 0x8B}, // u
+ {0xBBD0, 0x604D}, //{0xE6, 0x81, 0x8D}, // ��
+ {0xBFD6, 0x6050}, //{0xE6, 0x81, 0x90}, // ��
+ {0xBAE3, 0x6052}, //{0xE6, 0x81, 0x92}, // ��
{0xCBA1, 0x6055}, //{0xE6, 0x81, 0x95}, // ˡ
- {0xBBD6, 0x6062}, //{0xE6, 0x81, 0xA2}, //
- {0xD0F4, 0x6064}, //{0xE6, 0x81, 0xA4}, //
- {0xBADE, 0x6068}, //{0xE6, 0x81, 0xA8}, //
- {0xB6F7, 0x6069}, //{0xE6, 0x81, 0xA9}, //
- {0xCCF1, 0x606C}, //{0xE6, 0x81, 0xAC}, //
- {0xB9A7, 0x606D}, //{0xE6, 0x81, 0xAD}, //
+ {0xBBD6, 0x6062}, //{0xE6, 0x81, 0xA2}, // ��
+ {0xD0F4, 0x6064}, //{0xE6, 0x81, 0xA4}, // ��
+ {0xBADE, 0x6068}, //{0xE6, 0x81, 0xA8}, // ��
+ {0xB6F7, 0x6069}, //{0xE6, 0x81, 0xA9}, // ��
+ {0xCCF1, 0x606C}, //{0xE6, 0x81, 0xAC}, // ��
+ {0xB9A7, 0x606D}, //{0xE6, 0x81, 0xAD}, // ��
{0xCFA2, 0x606F}, //{0xE6, 0x81, 0xAF}, // Ϣ
{0xC7A1, 0x6070}, //{0xE6, 0x81, 0xB0}, // ǡ
- {0xBFD2, 0x6073}, //{0xE6, 0x81, 0xB3}, //
- {0xB6F1, 0x6076}, //{0xE6, 0x81, 0xB6}, //
- {0xC4D5, 0x607C}, //{0xE6, 0x81, 0xBC}, //
- {0xC7C4, 0x6084}, //{0xE6, 0x82, 0x84}, //
+ {0xBFD2, 0x6073}, //{0xE6, 0x81, 0xB3}, // ��
+ {0xB6F1, 0x6076}, //{0xE6, 0x81, 0xB6}, // ��
+ {0xC4D5, 0x607C}, //{0xE6, 0x81, 0xBC}, // ��
+ {0xC7C4, 0x6084}, //{0xE6, 0x82, 0x84}, // ��
{0xCFA4, 0x6089}, //{0xE6, 0x82, 0x89}, // Ϥ
- {0xBAB7, 0x608D}, //{0xE6, 0x82, 0x8D}, //
- {0xBBDA, 0x6094}, //{0xE6, 0x82, 0x94}, //
- {0xCEF2, 0x609F}, //{0xE6, 0x82, 0x9F}, //
- {0xD3C6, 0x60A0}, //{0xE6, 0x82, 0xA0}, //
- {0xBBBC, 0x60A3}, //{0xE6, 0x82, 0xA3}, //
- {0xD4C3, 0x60A6}, //{0xE6, 0x82, 0xA6}, //
- {0xC4FA, 0x60A8}, //{0xE6, 0x82, 0xA8}, //
- {0xD0FC, 0x60AC}, //{0xE6, 0x82, 0xAC}, //
- {0xC3F5, 0x60AF}, //{0xE6, 0x82, 0xAF}, //
- {0xB1AF, 0x60B2}, //{0xE6, 0x82, 0xB2}, //
- {0xE3B2, 0x60B4}, //{0xE6, 0x82, 0xB4}, //
- {0xB5BF, 0x60BC}, //{0xE6, 0x82, 0xBC}, //
- {0xC7E9, 0x60C5}, //{0xE6, 0x83, 0x85}, //
- {0xBEAA, 0x60CA}, //{0xE6, 0x83, 0x8A}, //
- {0xCDEF, 0x60CB}, //{0xE6, 0x83, 0x8B}, //
- {0xBBF3, 0x60D1}, //{0xE6, 0x83, 0x91}, //
- {0xCCE8, 0x60D5}, //{0xE6, 0x83, 0x95}, //
+ {0xBAB7, 0x608D}, //{0xE6, 0x82, 0x8D}, // ��
+ {0xBBDA, 0x6094}, //{0xE6, 0x82, 0x94}, // ��
+ {0xCEF2, 0x609F}, //{0xE6, 0x82, 0x9F}, // ��
+ {0xD3C6, 0x60A0}, //{0xE6, 0x82, 0xA0}, // ��
+ {0xBBBC, 0x60A3}, //{0xE6, 0x82, 0xA3}, // ��
+ {0xD4C3, 0x60A6}, //{0xE6, 0x82, 0xA6}, // ��
+ {0xC4FA, 0x60A8}, //{0xE6, 0x82, 0xA8}, // ��
+ {0xD0FC, 0x60AC}, //{0xE6, 0x82, 0xAC}, // ��
+ {0xC3F5, 0x60AF}, //{0xE6, 0x82, 0xAF}, // ��
+ {0xB1AF, 0x60B2}, //{0xE6, 0x82, 0xB2}, // ��
+ {0xE3B2, 0x60B4}, //{0xE6, 0x82, 0xB4}, // �
+ {0xB5BF, 0x60BC}, //{0xE6, 0x82, 0xBC}, // ��
+ {0xC7E9, 0x60C5}, //{0xE6, 0x83, 0x85}, // ��
+ {0xBEAA, 0x60CA}, //{0xE6, 0x83, 0x8A}, // ��
+ {0xCDEF, 0x60CB}, //{0xE6, 0x83, 0x8B}, // ��
+ {0xBBF3, 0x60D1}, //{0xE6, 0x83, 0x91}, // ��
+ {0xCCE8, 0x60D5}, //{0xE6, 0x83, 0x95}, // ��
{0xCFA7, 0x60DC}, //{0xE6, 0x83, 0x9C}, // ϧ
- {0xBBDD, 0x60E0}, //{0xE6, 0x83, 0xA0}, //
- {0xB5EB, 0x60E6}, //{0xE6, 0x83, 0xA6}, //
- {0xBEE5, 0x60E7}, //{0xE6, 0x83, 0xA7}, //
- {0xB2D2, 0x60E8}, //{0xE6, 0x83, 0xA8}, //
- {0xB3CD, 0x60E9}, //{0xE6, 0x83, 0xA9}, //
- {0xB1B9, 0x60EB}, //{0xE6, 0x83, 0xAB}, //
- {0xB2D1, 0x60ED}, //{0xE6, 0x83, 0xAD}, //
- {0xB9DF, 0x60EF}, //{0xE6, 0x83, 0xAF}, //
- {0xB6E8, 0x60F0}, //{0xE6, 0x83, 0xB0}, //
- {0xCFEB, 0x60F3}, //{0xE6, 0x83, 0xB3}, //
- {0xBBCC, 0x60F6}, //{0xE6, 0x83, 0xB6}, //
- {0xC8C7, 0x60F9}, //{0xE6, 0x83, 0xB9}, //
- {0xB3EE, 0x6101}, //{0xE6, 0x84, 0x81}, //
- {0xD3FA, 0x6108}, //{0xE6, 0x84, 0x88}, //
- {0xD3E4, 0x6109}, //{0xE6, 0x84, 0x89}, //
- {0xD2E2, 0x610F}, //{0xE6, 0x84, 0x8F}, //
- {0xE3B5, 0x6115}, //{0xE6, 0x84, 0x95}, //
- {0xD3DE, 0x611A}, //{0xE6, 0x84, 0x9A}, //
- {0xB8D0, 0x611F}, //{0xE6, 0x84, 0x9F}, //
- {0xB7DF, 0x6124}, //{0xE6, 0x84, 0xA4}, //
- {0xC0A2, 0x6127}, //{0xE6, 0x84, 0xA7}, //
+ {0xBBDD, 0x60E0}, //{0xE6, 0x83, 0xA0}, // ��
+ {0xB5EB, 0x60E6}, //{0xE6, 0x83, 0xA6}, // ��
+ {0xBEE5, 0x60E7}, //{0xE6, 0x83, 0xA7}, // ��
+ {0xB2D2, 0x60E8}, //{0xE6, 0x83, 0xA8}, // ��
+ {0xB3CD, 0x60E9}, //{0xE6, 0x83, 0xA9}, // ��
+ {0xB1B9, 0x60EB}, //{0xE6, 0x83, 0xAB}, // ��
+ {0xB2D1, 0x60ED}, //{0xE6, 0x83, 0xAD}, // ��
+ {0xB9DF, 0x60EF}, //{0xE6, 0x83, 0xAF}, // ��
+ {0xB6E8, 0x60F0}, //{0xE6, 0x83, 0xB0}, // ��
+ {0xCFEB, 0x60F3}, //{0xE6, 0x83, 0xB3}, // ��
+ {0xBBCC, 0x60F6}, //{0xE6, 0x83, 0xB6}, // ��
+ {0xC8C7, 0x60F9}, //{0xE6, 0x83, 0xB9}, // ��
+ {0xB3EE, 0x6101}, //{0xE6, 0x84, 0x81}, // ��
+ {0xD3FA, 0x6108}, //{0xE6, 0x84, 0x88}, // ��
+ {0xD3E4, 0x6109}, //{0xE6, 0x84, 0x89}, // ��
+ {0xD2E2, 0x610F}, //{0xE6, 0x84, 0x8F}, // ��
+ {0xE3B5, 0x6115}, //{0xE6, 0x84, 0x95}, // �
+ {0xD3DE, 0x611A}, //{0xE6, 0x84, 0x9A}, // ��
+ {0xB8D0, 0x611F}, //{0xE6, 0x84, 0x9F}, // ��
+ {0xB7DF, 0x6124}, //{0xE6, 0x84, 0xA4}, // ��
+ {0xC0A2, 0x6127}, //{0xE6, 0x84, 0xA7}, // "
{0xD4B8, 0x613F}, //{0xE6, 0x84, 0xBF}, // Ը
- {0xB4C8, 0x6148}, //{0xE6, 0x85, 0x88}, //
- {0xBBC5, 0x614C}, //{0xE6, 0x85, 0x8C}, //
- {0xC9F7, 0x614E}, //{0xE6, 0x85, 0x8E}, //
+ {0xB4C8, 0x6148}, //{0xE6, 0x85, 0x88}, // ��
+ {0xBBC5, 0x614C}, //{0xE6, 0x85, 0x8C}, // ��
+ {0xC9F7, 0x614E}, //{0xE6, 0x85, 0x8E}, // ��
{0xC4BD, 0x6155}, //{0xE6, 0x85, 0x95}, // Ľ
- {0xC2FD, 0x6162}, //{0xE6, 0x85, 0xA2}, //
- {0xBBDB, 0x6167}, //{0xE6, 0x85, 0xA7}, //
- {0xBFAE, 0x6168}, //{0xE6, 0x85, 0xA8}, //
+ {0xC2FD, 0x6162}, //{0xE6, 0x85, 0xA2}, // ��
+ {0xBBDB, 0x6167}, //{0xE6, 0x85, 0xA7}, // ��
+ {0xBFAE, 0x6168}, //{0xE6, 0x85, 0xA8}, // ��
{0xCEBF, 0x6170}, //{0xE6, 0x85, 0xB0}, // ο
- {0xBFB6, 0x6177}, //{0xE6, 0x85, 0xB7}, //
- {0xB1EF, 0x618B}, //{0xE6, 0x86, 0x8B}, //
- {0xD4F7, 0x618E}, //{0xE6, 0x86, 0x8E}, //
- {0xE3BE, 0x6194}, //{0xE6, 0x86, 0x94}, //
- {0xBAA9, 0x61A8}, //{0xE6, 0x86, 0xA8}, //
- {0xBAB6, 0x61BE}, //{0xE6, 0x86, 0xBE}, //
- {0xB6AE, 0x61C2}, //{0xE6, 0x87, 0x82}, //
+ {0xBFB6, 0x6177}, //{0xE6, 0x85, 0xB7}, // ��
+ {0xB1EF, 0x618B}, //{0xE6, 0x86, 0x8B}, // ��
+ {0xD4F7, 0x618E}, //{0xE6, 0x86, 0x8E}, // ��
+ {0xE3BE, 0x6194}, //{0xE6, 0x86, 0x94}, // �
+ {0xBAA9, 0x61A8}, //{0xE6, 0x86, 0xA8}, // ��
+ {0xBAB6, 0x61BE}, //{0xE6, 0x86, 0xBE}, // ��
+ {0xB6AE, 0x61C2}, //{0xE6, 0x87, 0x82}, // ��
{0xD0B8, 0x61C8}, //{0xE6, 0x87, 0x88}, // и
- {0xB0C3, 0x61CA}, //{0xE6, 0x87, 0x8A}, //
- {0xC0C1, 0x61D2}, //{0xE6, 0x87, 0x92}, //
+ {0xB0C3, 0x61CA}, //{0xE6, 0x87, 0x8A}, // ��
+ {0xC0C1, 0x61D2}, //{0xE6, 0x87, 0x92}, // ��
{0xC5B3, 0x61E6}, //{0xE6, 0x87, 0xA6}, // ų
- {0xB8EA, 0x6208}, //{0xE6, 0x88, 0x88}, //
+ {0xB8EA, 0x6208}, //{0xE6, 0x88, 0x88}, // ��
{0xCFB7, 0x620F}, //{0xE6, 0x88, 0x8F}, // Ϸ
- {0xB3C9, 0x6210}, //{0xE6, 0x88, 0x90}, //
- {0xCED2, 0x6211}, //{0xE6, 0x88, 0x91}, //
- {0xBDE4, 0x6212}, //{0xE6, 0x88, 0x92}, //
- {0xBBF2, 0x6216}, //{0xE6, 0x88, 0x96}, //
+ {0xB3C9, 0x6210}, //{0xE6, 0x88, 0x90}, // ��
+ {0xCED2, 0x6211}, //{0xE6, 0x88, 0x91}, // ��
+ {0xBDE4, 0x6212}, //{0xE6, 0x88, 0x92}, // ��
+ {0xBBF2, 0x6216}, //{0xE6, 0x88, 0x96}, // ��
{0xD5BD, 0x6218}, //{0xE6, 0x88, 0x98}, // ս
- {0xC6DD, 0x621A}, //{0xE6, 0x88, 0x9A}, //
- {0xBDD8, 0x622A}, //{0xE6, 0x88, 0xAA}, //
- {0xB4C1, 0x6233}, //{0xE6, 0x88, 0xB3}, //
- {0xB4F7, 0x6234}, //{0xE6, 0x88, 0xB4}, //
- {0xBBA7, 0x6237}, //{0xE6, 0x88, 0xB7}, //
- {0xB7BF, 0x623F}, //{0xE6, 0x88, 0xBF}, //
- {0xCBF9, 0x6240}, //{0xE6, 0x89, 0x80}, //
- {0xB1E2, 0x6241}, //{0xE6, 0x89, 0x81}, //
- {0xC9C8, 0x6247}, //{0xE6, 0x89, 0x87}, //
- {0xCAD6, 0x624B}, //{0xE6, 0x89, 0x8B}, //
- {0xB2C5, 0x624D}, //{0xE6, 0x89, 0x8D}, //
- {0xD4FA, 0x624E}, //{0xE6, 0x89, 0x8E}, //
- {0xC6CB, 0x6251}, //{0xE6, 0x89, 0x91}, //
- {0xB0C7, 0x6252}, //{0xE6, 0x89, 0x92}, //
- {0xB4F2, 0x6253}, //{0xE6, 0x89, 0x93}, //
- {0xC8D3, 0x6254}, //{0xE6, 0x89, 0x94}, //
- {0xCDD0, 0x6258}, //{0xE6, 0x89, 0x98}, //
- {0xBFB8, 0x625B}, //{0xE6, 0x89, 0x9B}, //
- {0xBFDB, 0x6263}, //{0xE6, 0x89, 0xA3}, //
+ {0xC6DD, 0x621A}, //{0xE6, 0x88, 0x9A}, // ��
+ {0xBDD8, 0x622A}, //{0xE6, 0x88, 0xAA}, // ��
+ {0xB4C1, 0x6233}, //{0xE6, 0x88, 0xB3}, // ��
+ {0xB4F7, 0x6234}, //{0xE6, 0x88, 0xB4}, // ��
+ {0xBBA7, 0x6237}, //{0xE6, 0x88, 0xB7}, // ��
+ {0xB7BF, 0x623F}, //{0xE6, 0x88, 0xBF}, // ��
+ {0xCBF9, 0x6240}, //{0xE6, 0x89, 0x80}, // ��
+ {0xB1E2, 0x6241}, //{0xE6, 0x89, 0x81}, // ��
+ {0xC9C8, 0x6247}, //{0xE6, 0x89, 0x87}, // ��
+ {0xCAD6, 0x624B}, //{0xE6, 0x89, 0x8B}, // ��
+ {0xB2C5, 0x624D}, //{0xE6, 0x89, 0x8D}, // ��
+ {0xD4FA, 0x624E}, //{0xE6, 0x89, 0x8E}, // ��
+ {0xC6CB, 0x6251}, //{0xE6, 0x89, 0x91}, // ��
+ {0xB0C7, 0x6252}, //{0xE6, 0x89, 0x92}, // ��
+ {0xB4F2, 0x6253}, //{0xE6, 0x89, 0x93}, // ��
+ {0xC8D3, 0x6254}, //{0xE6, 0x89, 0x94}, // ��
+ {0xCDD0, 0x6258}, //{0xE6, 0x89, 0x98}, // ��
+ {0xBFB8, 0x625B}, //{0xE6, 0x89, 0x9B}, // ��
+ {0xBFDB, 0x6263}, //{0xE6, 0x89, 0xA3}, // ��
{0xD6B4, 0x6267}, //{0xE6, 0x89, 0xA7}, // ִ
- {0xC0A9, 0x6269}, //{0xE6, 0x89, 0xA9}, //
+ {0xC0A9, 0x6269}, //{0xE6, 0x89, 0xA9}, // )
{0xC9A8, 0x626B}, //{0xE6, 0x89, 0xAB}, // ɨ
- {0xD1EF, 0x626C}, //{0xE6, 0x89, 0xAC}, //
+ {0xD1EF, 0x626C}, //{0xE6, 0x89, 0xAC}, // ��
{0xC5A4, 0x626D}, //{0xE6, 0x89, 0xAD}, // Ť
- {0xB0E7, 0x626E}, //{0xE6, 0x89, 0xAE}, //
- {0xB3B6, 0x626F}, //{0xE6, 0x89, 0xAF}, //
- {0xC8C5, 0x6270}, //{0xE6, 0x89, 0xB0}, //
- {0xB0E2, 0x6273}, //{0xE6, 0x89, 0xB3}, //
- {0xB7F6, 0x6276}, //{0xE6, 0x89, 0xB6}, //
- {0xC5FA, 0x6279}, //{0xE6, 0x89, 0xB9}, //
- {0xB6F3, 0x627C}, //{0xE6, 0x89, 0xBC}, //
- {0xD5D2, 0x627E}, //{0xE6, 0x89, 0xBE}, //
- {0xB3D0, 0x627F}, //{0xE6, 0x89, 0xBF}, //
- {0xBCBC, 0x6280}, //{0xE6, 0x8A, 0x80}, //
- {0xB3AD, 0x6284}, //{0xE6, 0x8A, 0x84}, //
- {0xB0D1, 0x628A}, //{0xE6, 0x8A, 0x8A}, //
- {0xD2D6, 0x6291}, //{0xE6, 0x8A, 0x91}, //
- {0xCAE3, 0x6292}, //{0xE6, 0x8A, 0x92}, //
+ {0xB0E7, 0x626E}, //{0xE6, 0x89, 0xAE}, // ��
+ {0xB3B6, 0x626F}, //{0xE6, 0x89, 0xAF}, // ��
+ {0xC8C5, 0x6270}, //{0xE6, 0x89, 0xB0}, // ��
+ {0xB0E2, 0x6273}, //{0xE6, 0x89, 0xB3}, // ��
+ {0xB7F6, 0x6276}, //{0xE6, 0x89, 0xB6}, // ��
+ {0xC5FA, 0x6279}, //{0xE6, 0x89, 0xB9}, // ��
+ {0xB6F3, 0x627C}, //{0xE6, 0x89, 0xBC}, // ��
+ {0xD5D2, 0x627E}, //{0xE6, 0x89, 0xBE}, // ��
+ {0xB3D0, 0x627F}, //{0xE6, 0x89, 0xBF}, // ��
+ {0xBCBC, 0x6280}, //{0xE6, 0x8A, 0x80}, // ��
+ {0xB3AD, 0x6284}, //{0xE6, 0x8A, 0x84}, // ��
+ {0xB0D1, 0x628A}, //{0xE6, 0x8A, 0x8A}, // ��
+ {0xD2D6, 0x6291}, //{0xE6, 0x8A, 0x91}, // ��
+ {0xCAE3, 0x6292}, //{0xE6, 0x8A, 0x92}, // ��
{0xD7A5, 0x6293}, //{0xE6, 0x8A, 0x93}, // ץ
{0xCDB6, 0x6295}, //{0xE6, 0x8A, 0x95}, // Ͷ
- {0xB6B6, 0x6296}, //{0xE6, 0x8A, 0x96}, //
- {0xBFB9, 0x6297}, //{0xE6, 0x8A, 0x97}, //
- {0xD5DB, 0x6298}, //{0xE6, 0x8A, 0x98}, //
- {0xB8A7, 0x629A}, //{0xE6, 0x8A, 0x9A}, //
- {0xC5D7, 0x629B}, //{0xE6, 0x8A, 0x9B}, //
- {0xBFD9, 0x62A0}, //{0xE6, 0x8A, 0xA0}, //
- {0xC2D5, 0x62A1}, //{0xE6, 0x8A, 0xA1}, //
- {0xC7C0, 0x62A2}, //{0xE6, 0x8A, 0xA2}, //
- {0xBBA4, 0x62A4}, //{0xE6, 0x8A, 0xA4}, //
- {0xB1A8, 0x62A5}, //{0xE6, 0x8A, 0xA5}, //
- {0xC5FB, 0x62AB}, //{0xE6, 0x8A, 0xAB}, //
+ {0xB6B6, 0x6296}, //{0xE6, 0x8A, 0x96}, // ��
+ {0xBFB9, 0x6297}, //{0xE6, 0x8A, 0x97}, // ��
+ {0xD5DB, 0x6298}, //{0xE6, 0x8A, 0x98}, // ��
+ {0xB8A7, 0x629A}, //{0xE6, 0x8A, 0x9A}, // ��
+ {0xC5D7, 0x629B}, //{0xE6, 0x8A, 0x9B}, // ��
+ {0xBFD9, 0x62A0}, //{0xE6, 0x8A, 0xA0}, // ��
+ {0xC2D5, 0x62A1}, //{0xE6, 0x8A, 0xA1}, // ��
+ {0xC7C0, 0x62A2}, //{0xE6, 0x8A, 0xA2}, // ��
+ {0xBBA4, 0x62A4}, //{0xE6, 0x8A, 0xA4}, // ��
+ {0xB1A8, 0x62A5}, //{0xE6, 0x8A, 0xA5}, // ��
+ {0xC5FB, 0x62AB}, //{0xE6, 0x8A, 0xAB}, // ��
{0xCCA7, 0x62AC}, //{0xE6, 0x8A, 0xAC}, // ̧
- {0xB1A7, 0x62B1}, //{0xE6, 0x8A, 0xB1}, //
- {0xB5D6, 0x62B5}, //{0xE6, 0x8A, 0xB5}, //
+ {0xB1A7, 0x62B1}, //{0xE6, 0x8A, 0xB1}, // ��
+ {0xB5D6, 0x62B5}, //{0xE6, 0x8A, 0xB5}, // ��
{0xC4A8, 0x62B9}, //{0xE6, 0x8A, 0xB9}, // Ĩ
{0xD1BA, 0x62BC}, //{0xE6, 0x8A, 0xBC}, // Ѻ
- {0xB3E9, 0x62BD}, //{0xE6, 0x8A, 0xBD}, //
- {0xB7F7, 0x62C2}, //{0xE6, 0x8B, 0x82}, //
- {0xD6F4, 0x62C4}, //{0xE6, 0x8B, 0x84}, //
- {0xB5A3, 0x62C5}, //{0xE6, 0x8B, 0x85}, //
- {0xB2F0, 0x62C6}, //{0xE6, 0x8B, 0x86}, //
+ {0xB3E9, 0x62BD}, //{0xE6, 0x8A, 0xBD}, // ��
+ {0xB7F7, 0x62C2}, //{0xE6, 0x8B, 0x82}, // ��
+ {0xD6F4, 0x62C4}, //{0xE6, 0x8B, 0x84}, // ��
+ {0xB5A3, 0x62C5}, //{0xE6, 0x8B, 0x85}, // ��
+ {0xB2F0, 0x62C6}, //{0xE6, 0x8B, 0x86}, // ��
{0xC4B4, 0x62C7}, //{0xE6, 0x8B, 0x87}, // Ĵ
- {0xC0AD, 0x62C9}, //{0xE6, 0x8B, 0x89}, //
- {0xB0E8, 0x62CC}, //{0xE6, 0x8B, 0x8C}, //
- {0xC5C4, 0x62CD}, //{0xE6, 0x8B, 0x8D}, //
- {0xB9D5, 0x62D0}, //{0xE6, 0x8B, 0x90}, //
- {0xBEDC, 0x62D2}, //{0xE6, 0x8B, 0x92}, //
- {0xCDD8, 0x62D3}, //{0xE6, 0x8B, 0x93}, //
- {0xB0CE, 0x62D4}, //{0xE6, 0x8B, 0x94}, //
- {0xCDCF, 0x62D6}, //{0xE6, 0x8B, 0x96}, //
- {0xDED6, 0x62D7}, //{0xE6, 0x8B, 0x97}, //
- {0xBED0, 0x62D8}, //{0xE6, 0x8B, 0x98}, //
+ {0xC0AD, 0x62C9}, //{0xE6, 0x8B, 0x89}, // -
+ {0xB0E8, 0x62CC}, //{0xE6, 0x8B, 0x8C}, // ��
+ {0xC5C4, 0x62CD}, //{0xE6, 0x8B, 0x8D}, // ��
+ {0xB9D5, 0x62D0}, //{0xE6, 0x8B, 0x90}, // ��
+ {0xBEDC, 0x62D2}, //{0xE6, 0x8B, 0x92}, // ��
+ {0xCDD8, 0x62D3}, //{0xE6, 0x8B, 0x93}, // ��
+ {0xB0CE, 0x62D4}, //{0xE6, 0x8B, 0x94}, // ��
+ {0xCDCF, 0x62D6}, //{0xE6, 0x8B, 0x96}, // ��
+ {0xDED6, 0x62D7}, //{0xE6, 0x8B, 0x97}, // ��
+ {0xBED0, 0x62D8}, //{0xE6, 0x8B, 0x98}, // ��
{0xD7BE, 0x62D9}, //{0xE6, 0x8B, 0x99}, //
- {0xD5D0, 0x62DB}, //{0xE6, 0x8B, 0x9B}, //
- {0xB0DD, 0x62DC}, //{0xE6, 0x8B, 0x9C}, //
- {0xC4E2, 0x62DF}, //{0xE6, 0x8B, 0x9F}, //
+ {0xD5D0, 0x62DB}, //{0xE6, 0x8B, 0x9B}, // ��
+ {0xB0DD, 0x62DC}, //{0xE6, 0x8B, 0x9C}, // ��
+ {0xC4E2, 0x62DF}, //{0xE6, 0x8B, 0x9F}, // ��
{0xC2A3, 0x62E2}, //{0xE6, 0x8B, 0xA2}, // £
- {0xBCF0, 0x62E3}, //{0xE6, 0x8B, 0xA3}, //
+ {0xBCF0, 0x62E3}, //{0xE6, 0x8B, 0xA3}, // ��
{0xD3B5, 0x62E5}, //{0xE6, 0x8B, 0xA5}, // ӵ
- {0xC0B9, 0x62E6}, //{0xE6, 0x8B, 0xA6}, //
+ {0xC0B9, 0x62E6}, //{0xE6, 0x8B, 0xA6}, // 9
{0xC5A1, 0x62E7}, //{0xE6, 0x8B, 0xA7}, // š
- {0xB2A6, 0x62E8}, //{0xE6, 0x8B, 0xA8}, //
- {0xD4F1, 0x62E9}, //{0xE6, 0x8B, 0xA9}, //
- {0xC0A8, 0x62EC}, //{0xE6, 0x8B, 0xAC}, //
- {0xCAC3, 0x62ED}, //{0xE6, 0x8B, 0xAD}, //
- {0xD5FC, 0x62EF}, //{0xE6, 0x8B, 0xAF}, //
- {0xB9B0, 0x62F1}, //{0xE6, 0x8B, 0xB1}, //
+ {0xB2A6, 0x62E8}, //{0xE6, 0x8B, 0xA8}, // ��
+ {0xD4F1, 0x62E9}, //{0xE6, 0x8B, 0xA9}, // ��
+ {0xC0A8, 0x62EC}, //{0xE6, 0x8B, 0xAC}, // (
+ {0xCAC3, 0x62ED}, //{0xE6, 0x8B, 0xAD}, // ��
+ {0xD5FC, 0x62EF}, //{0xE6, 0x8B, 0xAF}, // ��
+ {0xB9B0, 0x62F1}, //{0xE6, 0x8B, 0xB1}, // ��
{0xC8AD, 0x62F3}, //{0xE6, 0x8B, 0xB3}, // ȭ
{0xCBA9, 0x62F4}, //{0xE6, 0x8B, 0xB4}, // ˩
- {0xBFBD, 0x62F7}, //{0xE6, 0x8B, 0xB7}, //
+ {0xBFBD, 0x62F7}, //{0xE6, 0x8B, 0xB7}, // ��
{0xC6B4, 0x62FC}, //{0xE6, 0x8B, 0xBC}, // ƴ
{0xCAB0, 0x62FE}, //{0xE6, 0x8B, 0xBE}, // ʰ
- {0xC4C3, 0x62FF}, //{0xE6, 0x8B, 0xBF}, //
- {0xB3D6, 0x6301}, //{0xE6, 0x8C, 0x81}, //
- {0xB9D2, 0x6302}, //{0xE6, 0x8C, 0x82}, //
+ {0xC4C3, 0x62FF}, //{0xE6, 0x8B, 0xBF}, // ��
+ {0xB3D6, 0x6301}, //{0xE6, 0x8C, 0x81}, // ��
+ {0xB9D2, 0x6302}, //{0xE6, 0x8C, 0x82}, // ��
{0xD6B8, 0x6307}, //{0xE6, 0x8C, 0x87}, // ָ
- {0xB0B4, 0x6309}, //{0xE6, 0x8C, 0x89}, //
- {0xBFE6, 0x630E}, //{0xE6, 0x8C, 0x8E}, //
- {0xCCF4, 0x6311}, //{0xE6, 0x8C, 0x91}, //
- {0xCDDA, 0x6316}, //{0xE6, 0x8C, 0x96}, //
+ {0xB0B4, 0x6309}, //{0xE6, 0x8C, 0x89}, // ��
+ {0xBFE6, 0x630E}, //{0xE6, 0x8C, 0x8E}, // ��
+ {0xCCF4, 0x6311}, //{0xE6, 0x8C, 0x91}, // ��
+ {0xCDDA, 0x6316}, //{0xE6, 0x8C, 0x96}, // ��
{0xD6BF, 0x631A}, //{0xE6, 0x8C, 0x9A}, // ֿ
{0xD0AE, 0x631F}, //{0xE6, 0x8C, 0x9F}, // Ю
- {0xC4D3, 0x6320}, //{0xE6, 0x8C, 0xA0}, //
- {0xB5B2, 0x6321}, //{0xE6, 0x8C, 0xA1}, //
- {0xD5F5, 0x6323}, //{0xE6, 0x8C, 0xA3}, //
- {0xBCB7, 0x6324}, //{0xE6, 0x8C, 0xA4}, //
- {0xBBD3, 0x6325}, //{0xE6, 0x8C, 0xA5}, //
- {0xB0A4, 0x6328}, //{0xE6, 0x8C, 0xA8}, //
+ {0xC4D3, 0x6320}, //{0xE6, 0x8C, 0xA0}, // ��
+ {0xB5B2, 0x6321}, //{0xE6, 0x8C, 0xA1}, // ��
+ {0xD5F5, 0x6323}, //{0xE6, 0x8C, 0xA3}, // ��
+ {0xBCB7, 0x6324}, //{0xE6, 0x8C, 0xA4}, // ��
+ {0xBBD3, 0x6325}, //{0xE6, 0x8C, 0xA5}, // ��
+ {0xB0A4, 0x6328}, //{0xE6, 0x8C, 0xA8}, // ��
{0xC5B2, 0x632A}, //{0xE6, 0x8C, 0xAA}, // Ų
- {0xB4EC, 0x632B}, //{0xE6, 0x8C, 0xAB}, //
- {0xD5F1, 0x632F}, //{0xE6, 0x8C, 0xAF}, //
+ {0xB4EC, 0x632B}, //{0xE6, 0x8C, 0xAB}, // ��
+ {0xD5F1, 0x632F}, //{0xE6, 0x8C, 0xAF}, // ��
{0xCDA6, 0x633A}, //{0xE6, 0x8C, 0xBA}, // ͦ
- {0xCDEC, 0x633D}, //{0xE6, 0x8C, 0xBD}, //
- {0xCEE6, 0x6342}, //{0xE6, 0x8D, 0x82}, //
+ {0xCDEC, 0x633D}, //{0xE6, 0x8C, 0xBD}, // ��
+ {0xCEE6, 0x6342}, //{0xE6, 0x8D, 0x82}, // ��
{0xCDB1, 0x6345}, //{0xE6, 0x8D, 0x85}, // ͱ
- {0xC0A6, 0x6346}, //{0xE6, 0x8D, 0x86}, //
+ {0xC0A6, 0x6346}, //{0xE6, 0x8D, 0x86}, // &
{0xD7BD, 0x6349}, //{0xE6, 0x8D, 0x89}, //
- {0xB0C6, 0x634C}, //{0xE6, 0x8D, 0x8C}, //
- {0xBAB4, 0x634D}, //{0xE6, 0x8D, 0x8D}, //
- {0xC9D3, 0x634E}, //{0xE6, 0x8D, 0x8E}, //
- {0xC4F3, 0x634F}, //{0xE6, 0x8D, 0x8F}, //
- {0xBEE8, 0x6350}, //{0xE6, 0x8D, 0x90}, //
- {0xB2B6, 0x6355}, //{0xE6, 0x8D, 0x95}, //
- {0xC0CC, 0x635E}, //{0xE6, 0x8D, 0x9E}, //
- {0xCBF0, 0x635F}, //{0xE6, 0x8D, 0x9F}, //
- {0xBCF1, 0x6361}, //{0xE6, 0x8D, 0xA1}, //
- {0xBBBB, 0x6362}, //{0xE6, 0x8D, 0xA2}, //
- {0xB5B7, 0x6363}, //{0xE6, 0x8D, 0xA3}, //
- {0xC5F5, 0x6367}, //{0xE6, 0x8D, 0xA7}, //
- {0xBEDD, 0x636E}, //{0xE6, 0x8D, 0xAE}, //
- {0xB4B7, 0x6376}, //{0xE6, 0x8D, 0xB6}, //
- {0xBDDD, 0x6377}, //{0xE6, 0x8D, 0xB7}, //
- {0xDEE0, 0x637A}, //{0xE6, 0x8D, 0xBA}, //
- {0xC4ED, 0x637B}, //{0xE6, 0x8D, 0xBB}, //
- {0xCFC6, 0x6380}, //{0xE6, 0x8E, 0x80}, //
- {0xB5E0, 0x6382}, //{0xE6, 0x8E, 0x82}, //
- {0xCADA, 0x6388}, //{0xE6, 0x8E, 0x88}, //
- {0xB5F4, 0x6389}, //{0xE6, 0x8E, 0x89}, //
- {0xD5C6, 0x638C}, //{0xE6, 0x8E, 0x8C}, //
- {0xCCCD, 0x638F}, //{0xE6, 0x8E, 0x8F}, //
- {0xC6FE, 0x6390}, //{0xE6, 0x8E, 0x90}, //
- {0xC5C5, 0x6392}, //{0xE6, 0x8E, 0x92}, //
+ {0xB0C6, 0x634C}, //{0xE6, 0x8D, 0x8C}, // ��
+ {0xBAB4, 0x634D}, //{0xE6, 0x8D, 0x8D}, // ��
+ {0xC9D3, 0x634E}, //{0xE6, 0x8D, 0x8E}, // ��
+ {0xC4F3, 0x634F}, //{0xE6, 0x8D, 0x8F}, // ��
+ {0xBEE8, 0x6350}, //{0xE6, 0x8D, 0x90}, // ��
+ {0xB2B6, 0x6355}, //{0xE6, 0x8D, 0x95}, // ��
+ {0xC0CC, 0x635E}, //{0xE6, 0x8D, 0x9E}, // ��
+ {0xCBF0, 0x635F}, //{0xE6, 0x8D, 0x9F}, // ��
+ {0xBCF1, 0x6361}, //{0xE6, 0x8D, 0xA1}, // ��
+ {0xBBBB, 0x6362}, //{0xE6, 0x8D, 0xA2}, // ��
+ {0xB5B7, 0x6363}, //{0xE6, 0x8D, 0xA3}, // ��
+ {0xC5F5, 0x6367}, //{0xE6, 0x8D, 0xA7}, // ��
+ {0xBEDD, 0x636E}, //{0xE6, 0x8D, 0xAE}, // ��
+ {0xB4B7, 0x6376}, //{0xE6, 0x8D, 0xB6}, // ��
+ {0xBDDD, 0x6377}, //{0xE6, 0x8D, 0xB7}, // ��
+ {0xDEE0, 0x637A}, //{0xE6, 0x8D, 0xBA}, // ��
+ {0xC4ED, 0x637B}, //{0xE6, 0x8D, 0xBB}, // ��
+ {0xCFC6, 0x6380}, //{0xE6, 0x8E, 0x80}, // ��
+ {0xB5E0, 0x6382}, //{0xE6, 0x8E, 0x82}, // ��
+ {0xCADA, 0x6388}, //{0xE6, 0x8E, 0x88}, // ��
+ {0xB5F4, 0x6389}, //{0xE6, 0x8E, 0x89}, // ��
+ {0xD5C6, 0x638C}, //{0xE6, 0x8E, 0x8C}, // ��
+ {0xCCCD, 0x638F}, //{0xE6, 0x8E, 0x8F}, // ��
+ {0xC6FE, 0x6390}, //{0xE6, 0x8E, 0x90}, // ��
+ {0xC5C5, 0x6392}, //{0xE6, 0x8E, 0x92}, // ��
{0xD2B4, 0x6396}, //{0xE6, 0x8E, 0x96}, // Ҵ
- {0xBEF2, 0x6398}, //{0xE6, 0x8E, 0x98}, //
- {0xC2D3, 0x63A0}, //{0xE6, 0x8E, 0xA0}, //
+ {0xBEF2, 0x6398}, //{0xE6, 0x8E, 0x98}, // ��
+ {0xC2D3, 0x63A0}, //{0xE6, 0x8E, 0xA0}, // ��
{0xCCBD, 0x63A2}, //{0xE6, 0x8E, 0xA2}, // ̽
- {0xBDD3, 0x63A5}, //{0xE6, 0x8E, 0xA5}, //
- {0xBFD8, 0x63A7}, //{0xE6, 0x8E, 0xA7}, //
- {0xCDC6, 0x63A8}, //{0xE6, 0x8E, 0xA8}, //
- {0xD1DA, 0x63A9}, //{0xE6, 0x8E, 0xA9}, //
- {0xB4EB, 0x63AA}, //{0xE6, 0x8E, 0xAA}, //
- {0xEAFE, 0x63B0}, //{0xE6, 0x8E, 0xB0}, //
- {0xD6C0, 0x63B7}, //{0xE6, 0x8E, 0xB7}, //
- {0xB5A7, 0x63B8}, //{0xE6, 0x8E, 0xB8}, //
- {0xB2F4, 0x63BA}, //{0xE6, 0x8E, 0xBA}, //
- {0xC8E0, 0x63C9}, //{0xE6, 0x8F, 0x89}, //
- {0xD7E1, 0x63CD}, //{0xE6, 0x8F, 0x8D}, //
- {0xC3E8, 0x63CF}, //{0xE6, 0x8F, 0x8F}, //
- {0xCCE1, 0x63D0}, //{0xE6, 0x8F, 0x90}, //
- {0xB2E5, 0x63D2}, //{0xE6, 0x8F, 0x92}, //
+ {0xBDD3, 0x63A5}, //{0xE6, 0x8E, 0xA5}, // ��
+ {0xBFD8, 0x63A7}, //{0xE6, 0x8E, 0xA7}, // ��
+ {0xCDC6, 0x63A8}, //{0xE6, 0x8E, 0xA8}, // ��
+ {0xD1DA, 0x63A9}, //{0xE6, 0x8E, 0xA9}, // ��
+ {0xB4EB, 0x63AA}, //{0xE6, 0x8E, 0xAA}, // ��
+ {0xEAFE, 0x63B0}, //{0xE6, 0x8E, 0xB0}, // ��
+ {0xD6C0, 0x63B7}, //{0xE6, 0x8E, 0xB7}, // ��
+ {0xB5A7, 0x63B8}, //{0xE6, 0x8E, 0xB8}, // ��
+ {0xB2F4, 0x63BA}, //{0xE6, 0x8E, 0xBA}, // ��
+ {0xC8E0, 0x63C9}, //{0xE6, 0x8F, 0x89}, // ��
+ {0xD7E1, 0x63CD}, //{0xE6, 0x8F, 0x8D}, // ��
+ {0xC3E8, 0x63CF}, //{0xE6, 0x8F, 0x8F}, // ��
+ {0xCCE1, 0x63D0}, //{0xE6, 0x8F, 0x90}, // ��
+ {0xB2E5, 0x63D2}, //{0xE6, 0x8F, 0x92}, // ��
{0xD2BE, 0x63D6}, //{0xE6, 0x8F, 0x96}, // Ҿ
- {0xCED5, 0x63E1}, //{0xE6, 0x8F, 0xA1}, //
- {0xB4A7, 0x63E3}, //{0xE6, 0x8F, 0xA3}, //
- {0xBFAB, 0x63E9}, //{0xE6, 0x8F, 0xA9}, //
- {0xBEBE, 0x63EA}, //{0xE6, 0x8F, 0xAA}, //
- {0xBDD2, 0x63ED}, //{0xE6, 0x8F, 0xAD}, //
+ {0xCED5, 0x63E1}, //{0xE6, 0x8F, 0xA1}, // ��
+ {0xB4A7, 0x63E3}, //{0xE6, 0x8F, 0xA3}, // ��
+ {0xBFAB, 0x63E9}, //{0xE6, 0x8F, 0xA9}, // ��
+ {0xBEBE, 0x63EA}, //{0xE6, 0x8F, 0xAA}, // ��
+ {0xBDD2, 0x63ED}, //{0xE6, 0x8F, 0xAD}, // ��
{0xD4AE, 0x63F4}, //{0xE6, 0x8F, 0xB4}, // Ԯ
- {0xC0BF, 0x63FD}, //{0xE6, 0x8F, 0xBD}, //
- {0xB2F3, 0x6400}, //{0xE6, 0x90, 0x80}, //
- {0xB8E9, 0x6401}, //{0xE6, 0x90, 0x81}, //
+ {0xC0BF, 0x63FD}, //{0xE6, 0x8F, 0xBD}, // ?
+ {0xB2F3, 0x6400}, //{0xE6, 0x90, 0x80}, // ��
+ {0xB8E9, 0x6401}, //{0xE6, 0x90, 0x81}, // ��
{0xC2A7, 0x6402}, //{0xE6, 0x90, 0x82}, // §
- {0xBDC1, 0x6405}, //{0xE6, 0x90, 0x85}, //
- {0xB2AB, 0x640F}, //{0xE6, 0x90, 0x8F}, //
- {0xB4EA, 0x6413}, //{0xE6, 0x90, 0x93}, //
+ {0xBDC1, 0x6405}, //{0xE6, 0x90, 0x85}, // ��
+ {0xB2AB, 0x640F}, //{0xE6, 0x90, 0x8F}, // ��
+ {0xB4EA, 0x6413}, //{0xE6, 0x90, 0x93}, // ��
{0xC9A6, 0x6414}, //{0xE6, 0x90, 0x94}, // ɦ
- {0xCBD1, 0x641C}, //{0xE6, 0x90, 0x9C}, //
- {0xB8E3, 0x641E}, //{0xE6, 0x90, 0x9E}, //
- {0xCCC2, 0x642A}, //{0xE6, 0x90, 0xAA}, //
- {0xB0E1, 0x642C}, //{0xE6, 0x90, 0xAC}, //
- {0xB4EE, 0x642D}, //{0xE6, 0x90, 0xAD}, //
+ {0xCBD1, 0x641C}, //{0xE6, 0x90, 0x9C}, // ��
+ {0xB8E3, 0x641E}, //{0xE6, 0x90, 0x9E}, // ��
+ {0xCCC2, 0x642A}, //{0xE6, 0x90, 0xAA}, // ��
+ {0xB0E1, 0x642C}, //{0xE6, 0x90, 0xAC}, // ��
+ {0xB4EE, 0x642D}, //{0xE6, 0x90, 0xAD}, // ��
{0xD0AF, 0x643A}, //{0xE6, 0x90, 0xBA}, // Я
- {0xC9E3, 0x6444}, //{0xE6, 0x91, 0x84}, //
- {0xB0DA, 0x6446}, //{0xE6, 0x91, 0x86}, //
+ {0xC9E3, 0x6444}, //{0xE6, 0x91, 0x84}, // ��
+ {0xB0DA, 0x6446}, //{0xE6, 0x91, 0x86}, // ��
{0xD2A1, 0x6447}, //{0xE6, 0x91, 0x87}, // ҡ
{0xCCAF, 0x644A}, //{0xE6, 0x91, 0x8A}, // ̯
{0xCBA4, 0x6454}, //{0xE6, 0x91, 0x94}, // ˤ
{0xD5AA, 0x6458}, //{0xE6, 0x91, 0x98}, // ժ
- {0xB4DD, 0x6467}, //{0xE6, 0x91, 0xA7}, //
+ {0xB4DD, 0x6467}, //{0xE6, 0x91, 0xA7}, // ��
{0xC4A6, 0x6469}, //{0xE6, 0x91, 0xA9}, // Ħ
- {0xC3FE, 0x6478}, //{0xE6, 0x91, 0xB8}, //
+ {0xC3FE, 0x6478}, //{0xE6, 0x91, 0xB8}, // ��
{0xC4A1, 0x6479}, //{0xE6, 0x91, 0xB9}, // ġ
{0xC6B2, 0x6487}, //{0xE6, 0x92, 0x87}, // Ʋ
- {0xB3C5, 0x6491}, //{0xE6, 0x92, 0x91}, //
- {0xC8F6, 0x6492}, //{0xE6, 0x92, 0x92}, //
+ {0xB3C5, 0x6491}, //{0xE6, 0x92, 0x91}, // ��
+ {0xC8F6, 0x6492}, //{0xE6, 0x92, 0x92}, // ��
{0xCBBA, 0x6495}, //{0xE6, 0x92, 0x95}, // ˺
{0xD7B2, 0x649E}, //{0xE6, 0x92, 0x9E}, // ײ
- {0xB3B7, 0x64A4}, //{0xE6, 0x92, 0xA4}, //
- {0xC1C3, 0x64A9}, //{0xE6, 0x92, 0xA9}, //
- {0xC7CB, 0x64AC}, //{0xE6, 0x92, 0xAC}, //
- {0xB2A5, 0x64AD}, //{0xE6, 0x92, 0xAD}, //
- {0xB4E9, 0x64AE}, //{0xE6, 0x92, 0xAE}, //
+ {0xB3B7, 0x64A4}, //{0xE6, 0x92, 0xA4}, // ��
+ {0xC1C3, 0x64A9}, //{0xE6, 0x92, 0xA9}, // ��
+ {0xC7CB, 0x64AC}, //{0xE6, 0x92, 0xAC}, // ��
+ {0xB2A5, 0x64AD}, //{0xE6, 0x92, 0xAD}, // ��
+ {0xB4E9, 0x64AE}, //{0xE6, 0x92, 0xAE}, // ��
{0xD7AB, 0x64B0}, //{0xE6, 0x92, 0xB0}, //
- {0xC4EC, 0x64B5}, //{0xE6, 0x92, 0xB5}, //
- {0xBAB3, 0x64BC}, //{0xE6, 0x92, 0xBC}, //
- {0xC0DE, 0x64C2}, //{0xE6, 0x93, 0x82}, //
- {0xC9C3, 0x64C5}, //{0xE6, 0x93, 0x85}, //
- {0xB2D9, 0x64CD}, //{0xE6, 0x93, 0x8D}, //
- {0xC7E6, 0x64CE}, //{0xE6, 0x93, 0x8E}, //
- {0xC7DC, 0x64D2}, //{0xE6, 0x93, 0x92}, //
- {0xB2C1, 0x64E6}, //{0xE6, 0x93, 0xA6}, //
- {0xC5CA, 0x6500}, //{0xE6, 0x94, 0x80}, //
- {0xD4DC, 0x6512}, //{0xE6, 0x94, 0x92}, //
- {0xC8C1, 0x6518}, //{0xE6, 0x94, 0x98}, //
+ {0xC4EC, 0x64B5}, //{0xE6, 0x92, 0xB5}, // ��
+ {0xBAB3, 0x64BC}, //{0xE6, 0x92, 0xBC}, // ��
+ {0xC0DE, 0x64C2}, //{0xE6, 0x93, 0x82}, // ��
+ {0xC9C3, 0x64C5}, //{0xE6, 0x93, 0x85}, // ��
+ {0xB2D9, 0x64CD}, //{0xE6, 0x93, 0x8D}, // ��
+ {0xC7E6, 0x64CE}, //{0xE6, 0x93, 0x8E}, // ��
+ {0xC7DC, 0x64D2}, //{0xE6, 0x93, 0x92}, // ��
+ {0xB2C1, 0x64E6}, //{0xE6, 0x93, 0xA6}, // ��
+ {0xC5CA, 0x6500}, //{0xE6, 0x94, 0x80}, // ��
+ {0xD4DC, 0x6512}, //{0xE6, 0x94, 0x92}, // ��
+ {0xC8C1, 0x6518}, //{0xE6, 0x94, 0x98}, // ��
{0xD6A7, 0x652F}, //{0xE6, 0x94, 0xAF}, // ֧
- {0xCAD5, 0x6536}, //{0xE6, 0x94, 0xB6}, //
- {0xB8C4, 0x6539}, //{0xE6, 0x94, 0xB9}, //
- {0xB9A5, 0x653B}, //{0xE6, 0x94, 0xBB}, //
- {0xB7C5, 0x653E}, //{0xE6, 0x94, 0xBE}, //
- {0xD5FE, 0x653F}, //{0xE6, 0x94, 0xBF}, //
- {0xB9CA, 0x6545}, //{0xE6, 0x95, 0x85}, //
+ {0xCAD5, 0x6536}, //{0xE6, 0x94, 0xB6}, // ��
+ {0xB8C4, 0x6539}, //{0xE6, 0x94, 0xB9}, // ��
+ {0xB9A5, 0x653B}, //{0xE6, 0x94, 0xBB}, // ��
+ {0xB7C5, 0x653E}, //{0xE6, 0x94, 0xBE}, // ��
+ {0xD5FE, 0x653F}, //{0xE6, 0x94, 0xBF}, // ��
+ {0xB9CA, 0x6545}, //{0xE6, 0x95, 0x85}, // ��
{0xD0A7, 0x6548}, //{0xE6, 0x95, 0x88}, // Ч
- {0xB5D0, 0x654C}, //{0xE6, 0x95, 0x8C}, //
- {0xC3F4, 0x654F}, //{0xE6, 0x95, 0x8F}, //
- {0xBEC8, 0x6551}, //{0xE6, 0x95, 0x91}, //
- {0xBDCC, 0x6559}, //{0xE6, 0x95, 0x99}, //
- {0xC1B2, 0x655B}, //{0xE6, 0x95, 0x9B}, //
- {0xB3A8, 0x655E}, //{0xE6, 0x95, 0x9E}, //
- {0xB8D2, 0x6562}, //{0xE6, 0x95, 0xA2}, //
+ {0xB5D0, 0x654C}, //{0xE6, 0x95, 0x8C}, // ��
+ {0xC3F4, 0x654F}, //{0xE6, 0x95, 0x8F}, // ��
+ {0xBEC8, 0x6551}, //{0xE6, 0x95, 0x91}, // ��
+ {0xBDCC, 0x6559}, //{0xE6, 0x95, 0x99}, // ��
+ {0xC1B2, 0x655B}, //{0xE6, 0x95, 0x9B}, // r
+ {0xB3A8, 0x655E}, //{0xE6, 0x95, 0x9E}, // ��
+ {0xB8D2, 0x6562}, //{0xE6, 0x95, 0xA2}, // ��
{0xC9A2, 0x6563}, //{0xE6, 0x95, 0xA3}, // ɢ
- {0xB6D8, 0x6566}, //{0xE6, 0x95, 0xA6}, //
- {0xBEB4, 0x656C}, //{0xE6, 0x95, 0xAC}, //
- {0xCAFD, 0x6570}, //{0xE6, 0x95, 0xB0}, //
- {0xC7C3, 0x6572}, //{0xE6, 0x95, 0xB2}, //
- {0xD5FB, 0x6574}, //{0xE6, 0x95, 0xB4}, //
- {0xB7F3, 0x6577}, //{0xE6, 0x95, 0xB7}, //
- {0xCEC4, 0x6587}, //{0xE6, 0x96, 0x87}, //
+ {0xB6D8, 0x6566}, //{0xE6, 0x95, 0xA6}, // ��
+ {0xBEB4, 0x656C}, //{0xE6, 0x95, 0xAC}, // ��
+ {0xCAFD, 0x6570}, //{0xE6, 0x95, 0xB0}, // ��
+ {0xC7C3, 0x6572}, //{0xE6, 0x95, 0xB2}, // ��
+ {0xD5FB, 0x6574}, //{0xE6, 0x95, 0xB4}, // ��
+ {0xB7F3, 0x6577}, //{0xE6, 0x95, 0xB7}, // ��
+ {0xCEC4, 0x6587}, //{0xE6, 0x96, 0x87}, // ��
{0xD5AB, 0x658B}, //{0xE6, 0x96, 0x8B}, // ի
- {0xB0DF, 0x6591}, //{0xE6, 0x96, 0x91}, //
- {0xB6B7, 0x6597}, //{0xE6, 0x96, 0x97}, //
- {0xC1CF, 0x6599}, //{0xE6, 0x96, 0x99}, //
+ {0xB0DF, 0x6591}, //{0xE6, 0x96, 0x91}, // ��
+ {0xB6B7, 0x6597}, //{0xE6, 0x96, 0x97}, // ��
+ {0xC1CF, 0x6599}, //{0xE6, 0x96, 0x99}, // ��
{0xD0B1, 0x659C}, //{0xE6, 0x96, 0x9C}, // б
- {0xD5E5, 0x659F}, //{0xE6, 0x96, 0x9F}, //
- {0xBDEF, 0x65A4}, //{0xE6, 0x96, 0xA4}, //
- {0xB3E2, 0x65A5}, //{0xE6, 0x96, 0xA5}, //
- {0xB8AB, 0x65A7}, //{0xE6, 0x96, 0xA7}, //
+ {0xD5E5, 0x659F}, //{0xE6, 0x96, 0x9F}, // ��
+ {0xBDEF, 0x65A4}, //{0xE6, 0x96, 0xA4}, // ��
+ {0xB3E2, 0x65A5}, //{0xE6, 0x96, 0xA5}, // ��
+ {0xB8AB, 0x65A7}, //{0xE6, 0x96, 0xA7}, // ��
{0xD5B6, 0x65A9}, //{0xE6, 0x96, 0xA9}, // ն
- {0xB6CF, 0x65AD}, //{0xE6, 0x96, 0xAD}, //
+ {0xB6CF, 0x65AD}, //{0xE6, 0x96, 0xAD}, // ��
{0xCBB9, 0x65AF}, //{0xE6, 0x96, 0xAF}, // ˹
- {0xD0C2, 0x65B0}, //{0xE6, 0x96, 0xB0}, //
- {0xB7BD, 0x65B9}, //{0xE6, 0x96, 0xB9}, //
+ {0xD0C2, 0x65B0}, //{0xE6, 0x96, 0xB0}, // ��
+ {0xB7BD, 0x65B9}, //{0xE6, 0x96, 0xB9}, // ��
{0xCAA9, 0x65BD}, //{0xE6, 0x96, 0xBD}, // ʩ
- {0xC5D4, 0x65C1}, //{0xE6, 0x97, 0x81}, //
- {0xC2C3, 0x65C5}, //{0xE6, 0x97, 0x85}, //
- {0xD0FD, 0x65CB}, //{0xE6, 0x97, 0x8B}, //
- {0xD7E5, 0x65CF}, //{0xE6, 0x97, 0x8F}, //
- {0xC6EC, 0x65D7}, //{0xE6, 0x97, 0x97}, //
- {0xCEDE, 0x65E0}, //{0xE6, 0x97, 0xA0}, //
- {0xBCC8, 0x65E2}, //{0xE6, 0x97, 0xA2}, //
- {0xC8D5, 0x65E5}, //{0xE6, 0x97, 0xA5}, //
- {0xB5A9, 0x65E6}, //{0xE6, 0x97, 0xA6}, //
- {0xBEC9, 0x65E7}, //{0xE6, 0x97, 0xA7}, //
+ {0xC5D4, 0x65C1}, //{0xE6, 0x97, 0x81}, // ��
+ {0xC2C3, 0x65C5}, //{0xE6, 0x97, 0x85}, // ��
+ {0xD0FD, 0x65CB}, //{0xE6, 0x97, 0x8B}, // ��
+ {0xD7E5, 0x65CF}, //{0xE6, 0x97, 0x8F}, // ��
+ {0xC6EC, 0x65D7}, //{0xE6, 0x97, 0x97}, // ��
+ {0xCEDE, 0x65E0}, //{0xE6, 0x97, 0xA0}, // ��
+ {0xBCC8, 0x65E2}, //{0xE6, 0x97, 0xA2}, // ��
+ {0xC8D5, 0x65E5}, //{0xE6, 0x97, 0xA5}, // ��
+ {0xB5A9, 0x65E6}, //{0xE6, 0x97, 0xA6}, // ��
+ {0xBEC9, 0x65E7}, //{0xE6, 0x97, 0xA7}, // ��
{0xD6BC, 0x65E8}, //{0xE6, 0x97, 0xA8}, // ּ
- {0xD4E7, 0x65E9}, //{0xE6, 0x97, 0xA9}, //
+ {0xD4E7, 0x65E9}, //{0xE6, 0x97, 0xA9}, // ��
{0xD1AE, 0x65EC}, //{0xE6, 0x97, 0xAC}, // Ѯ
- {0xD0F1, 0x65ED}, //{0xE6, 0x97, 0xAD}, //
- {0xBAB5, 0x65F1}, //{0xE6, 0x97, 0xB1}, //
+ {0xD0F1, 0x65ED}, //{0xE6, 0x97, 0xAD}, // ��
+ {0xBAB5, 0x65F1}, //{0xE6, 0x97, 0xB1}, // ��
{0xCAB1, 0x65F6}, //{0xE6, 0x97, 0xB6}, // ʱ
- {0xBFF5, 0x65F7}, //{0xE6, 0x97, 0xB7}, //
- {0xCDFA, 0x65FA}, //{0xE6, 0x97, 0xBA}, //
- {0xB0BA, 0x6602}, //{0xE6, 0x98, 0x82}, //
- {0xC0A5, 0x6606}, //{0xE6, 0x98, 0x86}, //
- {0xB2FD, 0x660C}, //{0xE6, 0x98, 0x8C}, //
- {0xC3F7, 0x660E}, //{0xE6, 0x98, 0x8E}, //
- {0xBBE8, 0x660F}, //{0xE6, 0x98, 0x8F}, //
- {0xD2D7, 0x6613}, //{0xE6, 0x98, 0x93}, //
- {0xCEF4, 0x6614}, //{0xE6, 0x98, 0x94}, //
- {0xEABC, 0x6619}, //{0xE6, 0x98, 0x99}, //
- {0xD0C7, 0x661F}, //{0xE6, 0x98, 0x9F}, //
+ {0xBFF5, 0x65F7}, //{0xE6, 0x97, 0xB7}, // ��
+ {0xCDFA, 0x65FA}, //{0xE6, 0x97, 0xBA}, // ��
+ {0xB0BA, 0x6602}, //{0xE6, 0x98, 0x82}, // ��
+ {0xC0A5, 0x6606}, //{0xE6, 0x98, 0x86}, // %
+ {0xB2FD, 0x660C}, //{0xE6, 0x98, 0x8C}, // ��
+ {0xC3F7, 0x660E}, //{0xE6, 0x98, 0x8E}, // ��
+ {0xBBE8, 0x660F}, //{0xE6, 0x98, 0x8F}, // ��
+ {0xD2D7, 0x6613}, //{0xE6, 0x98, 0x93}, // ��
+ {0xCEF4, 0x6614}, //{0xE6, 0x98, 0x94}, // ��
+ {0xEABC, 0x6619}, //{0xE6, 0x98, 0x99}, // �
+ {0xD0C7, 0x661F}, //{0xE6, 0x98, 0x9F}, // ��
{0xD3B3, 0x6620}, //{0xE6, 0x98, 0xA0}, // ӳ
- {0xB4BA, 0x6625}, //{0xE6, 0x98, 0xA5}, //
- {0xC3C1, 0x6627}, //{0xE6, 0x98, 0xA7}, //
- {0xD7F2, 0x6628}, //{0xE6, 0x98, 0xA8}, //
- {0xD5D1, 0x662D}, //{0xE6, 0x98, 0xAD}, //
- {0xCAC7, 0x662F}, //{0xE6, 0x98, 0xAF}, //
- {0xEAC7, 0x6635}, //{0xE6, 0x98, 0xB5}, //
- {0xD6E7, 0x663C}, //{0xE6, 0x98, 0xBC}, //
- {0xCFD4, 0x663E}, //{0xE6, 0x98, 0xBE}, //
- {0xBBCE, 0x6643}, //{0xE6, 0x99, 0x83}, //
- {0xBDFA, 0x664B}, //{0xE6, 0x99, 0x8B}, //
- {0xC9CE, 0x664C}, //{0xE6, 0x99, 0x8C}, //
+ {0xB4BA, 0x6625}, //{0xE6, 0x98, 0xA5}, // ��
+ {0xC3C1, 0x6627}, //{0xE6, 0x98, 0xA7}, // ��
+ {0xD7F2, 0x6628}, //{0xE6, 0x98, 0xA8}, // ��
+ {0xD5D1, 0x662D}, //{0xE6, 0x98, 0xAD}, // ��
+ {0xCAC7, 0x662F}, //{0xE6, 0x98, 0xAF}, // ��
+ {0xEAC7, 0x6635}, //{0xE6, 0x98, 0xB5}, // ��
+ {0xD6E7, 0x663C}, //{0xE6, 0x98, 0xBC}, // ��
+ {0xCFD4, 0x663E}, //{0xE6, 0x98, 0xBE}, // ��
+ {0xBBCE, 0x6643}, //{0xE6, 0x99, 0x83}, // ��
+ {0xBDFA, 0x664B}, //{0xE6, 0x99, 0x8B}, // ��
+ {0xC9CE, 0x664C}, //{0xE6, 0x99, 0x8C}, // ��
{0xC9B9, 0x6652}, //{0xE6, 0x99, 0x92}, // ɹ
- {0xCFFE, 0x6653}, //{0xE6, 0x99, 0x93}, //
- {0xD4CE, 0x6655}, //{0xE6, 0x99, 0x95}, //
- {0xCDED, 0x665A}, //{0xE6, 0x99, 0x9A}, //
- {0xCEEE, 0x6664}, //{0xE6, 0x99, 0xA4}, //
- {0xBBDE, 0x6666}, //{0xE6, 0x99, 0xA6}, //
- {0xB3BF, 0x6668}, //{0xE6, 0x99, 0xA8}, //
- {0xC6D5, 0x666E}, //{0xE6, 0x99, 0xAE}, //
- {0xBEB0, 0x666F}, //{0xE6, 0x99, 0xAF}, //
- {0xCEFA, 0x6670}, //{0xE6, 0x99, 0xB0}, //
- {0xC7E7, 0x6674}, //{0xE6, 0x99, 0xB4}, //
- {0xBEA7, 0x6676}, //{0xE6, 0x99, 0xB6}, //
- {0xD6C7, 0x667A}, //{0xE6, 0x99, 0xBA}, //
- {0xC1C0, 0x667E}, //{0xE6, 0x99, 0xBE}, //
- {0xD4DD, 0x6682}, //{0xE6, 0x9A, 0x82}, //
+ {0xCFFE, 0x6653}, //{0xE6, 0x99, 0x93}, // ��
+ {0xD4CE, 0x6655}, //{0xE6, 0x99, 0x95}, // ��
+ {0xCDED, 0x665A}, //{0xE6, 0x99, 0x9A}, // ��
+ {0xCEEE, 0x6664}, //{0xE6, 0x99, 0xA4}, // ��
+ {0xBBDE, 0x6666}, //{0xE6, 0x99, 0xA6}, // ��
+ {0xB3BF, 0x6668}, //{0xE6, 0x99, 0xA8}, // ��
+ {0xC6D5, 0x666E}, //{0xE6, 0x99, 0xAE}, // ��
+ {0xBEB0, 0x666F}, //{0xE6, 0x99, 0xAF}, // ��
+ {0xCEFA, 0x6670}, //{0xE6, 0x99, 0xB0}, // ��
+ {0xC7E7, 0x6674}, //{0xE6, 0x99, 0xB4}, // ��
+ {0xBEA7, 0x6676}, //{0xE6, 0x99, 0xB6}, // ��
+ {0xD6C7, 0x667A}, //{0xE6, 0x99, 0xBA}, // ��
+ {0xC1C0, 0x667E}, //{0xE6, 0x99, 0xBE}, // ��
+ {0xD4DD, 0x6682}, //{0xE6, 0x9A, 0x82}, // ��
{0xCFBE, 0x6687}, //{0xE6, 0x9A, 0x87}, // Ͼ
- {0xCAEE, 0x6691}, //{0xE6, 0x9A, 0x91}, //
+ {0xCAEE, 0x6691}, //{0xE6, 0x9A, 0x91}, // ��
{0xC5AF, 0x6696}, //{0xE6, 0x9A, 0x96}, // ů
- {0xB0B5, 0x6697}, //{0xE6, 0x9A, 0x97}, //
+ {0xB0B5, 0x6697}, //{0xE6, 0x9A, 0x97}, // ��
{0xC4BA, 0x66AE}, //{0xE6, 0x9A, 0xAE}, // ĺ
- {0xB1A9, 0x66B4}, //{0xE6, 0x9A, 0xB4}, //
- {0xCAEF, 0x66D9}, //{0xE6, 0x9B, 0x99}, //
- {0xC7FA, 0x66F2}, //{0xE6, 0x9B, 0xB2}, //
- {0xB8FC, 0x66F4}, //{0xE6, 0x9B, 0xB4}, //
- {0xB2DC, 0x66F9}, //{0xE6, 0x9B, 0xB9}, //
- {0xC2FC, 0x66FC}, //{0xE6, 0x9B, 0xBC}, //
- {0xD4F8, 0x66FE}, //{0xE6, 0x9B, 0xBE}, //
- {0xCCE6, 0x66FF}, //{0xE6, 0x9B, 0xBF}, //
- {0xD7EE, 0x6700}, //{0xE6, 0x9C, 0x80}, //
- {0xD4C2, 0x6708}, //{0xE6, 0x9C, 0x88}, //
- {0xD3D0, 0x6709}, //{0xE6, 0x9C, 0x89}, //
- {0xC5F3, 0x670B}, //{0xE6, 0x9C, 0x8B}, //
- {0xB7FE, 0x670D}, //{0xE6, 0x9C, 0x8D}, //
- {0xC0CA, 0x6717}, //{0xE6, 0x9C, 0x97}, //
- {0xCDFB, 0x671B}, //{0xE6, 0x9C, 0x9B}, //
- {0xB3AF, 0x671D}, //{0xE6, 0x9C, 0x9D}, //
- {0xC6DA, 0x671F}, //{0xE6, 0x9C, 0x9F}, //
- {0xEBFC, 0x6726}, //{0xE6, 0x9C, 0xA6}, //
+ {0xB1A9, 0x66B4}, //{0xE6, 0x9A, 0xB4}, // ��
+ {0xCAEF, 0x66D9}, //{0xE6, 0x9B, 0x99}, // ��
+ {0xC7FA, 0x66F2}, //{0xE6, 0x9B, 0xB2}, // ��
+ {0xB8FC, 0x66F4}, //{0xE6, 0x9B, 0xB4}, // ��
+ {0xB2DC, 0x66F9}, //{0xE6, 0x9B, 0xB9}, // ��
+ {0xC2FC, 0x66FC}, //{0xE6, 0x9B, 0xBC}, // ��
+ {0xD4F8, 0x66FE}, //{0xE6, 0x9B, 0xBE}, // ��
+ {0xCCE6, 0x66FF}, //{0xE6, 0x9B, 0xBF}, // ��
+ {0xD7EE, 0x6700}, //{0xE6, 0x9C, 0x80}, // ��
+ {0xD4C2, 0x6708}, //{0xE6, 0x9C, 0x88}, // ��
+ {0xD3D0, 0x6709}, //{0xE6, 0x9C, 0x89}, // ��
+ {0xC5F3, 0x670B}, //{0xE6, 0x9C, 0x8B}, // ��
+ {0xB7FE, 0x670D}, //{0xE6, 0x9C, 0x8D}, // ��
+ {0xC0CA, 0x6717}, //{0xE6, 0x9C, 0x97}, // ��
+ {0xCDFB, 0x671B}, //{0xE6, 0x9C, 0x9B}, // ��
+ {0xB3AF, 0x671D}, //{0xE6, 0x9C, 0x9D}, // ��
+ {0xC6DA, 0x671F}, //{0xE6, 0x9C, 0x9F}, // ��
+ {0xEBFC, 0x6726}, //{0xE6, 0x9C, 0xA6}, // ��
{0xC4BE, 0x6728}, //{0xE6, 0x9C, 0xA8}, // ľ
{0xCEB4, 0x672A}, //{0xE6, 0x9C, 0xAA}, // δ
{0xC4A9, 0x672B}, //{0xE6, 0x9C, 0xAB}, // ĩ
- {0xB1BE, 0x672C}, //{0xE6, 0x9C, 0xAC}, //
- {0xCAF5, 0x672F}, //{0xE6, 0x9C, 0xAF}, //
- {0xD6EC, 0x6731}, //{0xE6, 0x9C, 0xB1}, //
- {0xC6D3, 0x6734}, //{0xE6, 0x9C, 0xB4}, //
- {0xB6E4, 0x6735}, //{0xE6, 0x9C, 0xB5}, //
- {0xBBFA, 0x673A}, //{0xE6, 0x9C, 0xBA}, //
- {0xD0E0, 0x673D}, //{0xE6, 0x9C, 0xBD}, //
+ {0xB1BE, 0x672C}, //{0xE6, 0x9C, 0xAC}, // ��
+ {0xCAF5, 0x672F}, //{0xE6, 0x9C, 0xAF}, // ��
+ {0xD6EC, 0x6731}, //{0xE6, 0x9C, 0xB1}, // ��
+ {0xC6D3, 0x6734}, //{0xE6, 0x9C, 0xB4}, // ��
+ {0xB6E4, 0x6735}, //{0xE6, 0x9C, 0xB5}, // ��
+ {0xBBFA, 0x673A}, //{0xE6, 0x9C, 0xBA}, // ��
+ {0xD0E0, 0x673D}, //{0xE6, 0x9C, 0xBD}, // ��
{0xC9B1, 0x6740}, //{0xE6, 0x9D, 0x80}, // ɱ
- {0xD4D3, 0x6742}, //{0xE6, 0x9D, 0x82}, //
+ {0xD4D3, 0x6742}, //{0xE6, 0x9D, 0x82}, // ��
{0xC8A8, 0x6743}, //{0xE6, 0x9D, 0x83}, // Ȩ
- {0xB8CB, 0x6746}, //{0xE6, 0x9D, 0x86}, //
- {0xE8BE, 0x6748}, //{0xE6, 0x9D, 0x88}, //
+ {0xB8CB, 0x6746}, //{0xE6, 0x9D, 0x86}, // ��
+ {0xE8BE, 0x6748}, //{0xE6, 0x9D, 0x88}, // �
{0xC9BC, 0x6749}, //{0xE6, 0x9D, 0x89}, // ɼ
- {0xC0EE, 0x674E}, //{0xE6, 0x9D, 0x8E}, //
- {0xD0D3, 0x674F}, //{0xE6, 0x9D, 0x8F}, //
- {0xB2C4, 0x6750}, //{0xE6, 0x9D, 0x90}, //
- {0xB4E5, 0x6751}, //{0xE6, 0x9D, 0x91}, //
- {0xD5C8, 0x6756}, //{0xE6, 0x9D, 0x96}, //
- {0xB6C5, 0x675C}, //{0xE6, 0x9D, 0x9C}, //
- {0xCAF8, 0x675F}, //{0xE6, 0x9D, 0x9F}, //
- {0xB8DC, 0x6760}, //{0xE6, 0x9D, 0xA0}, //
- {0xCCF5, 0x6761}, //{0xE6, 0x9D, 0xA1}, //
- {0xC0B4, 0x6765}, //{0xE6, 0x9D, 0xA5}, //
- {0xD1EE, 0x6768}, //{0xE6, 0x9D, 0xA8}, //
- {0xBABC, 0x676D}, //{0xE6, 0x9D, 0xAD}, //
- {0xB1AD, 0x676F}, //{0xE6, 0x9D, 0xAF}, //
- {0xBDDC, 0x6770}, //{0xE6, 0x9D, 0xB0}, //
- {0xCBC9, 0x677E}, //{0xE6, 0x9D, 0xBE}, //
- {0xB0E5, 0x677F}, //{0xE6, 0x9D, 0xBF}, //
- {0xBCAB, 0x6781}, //{0xE6, 0x9E, 0x81}, //
- {0xB9B9, 0x6784}, //{0xE6, 0x9E, 0x84}, //
- {0xCDF7, 0x6789}, //{0xE6, 0x9E, 0x89}, //
- {0xCEF6, 0x6790}, //{0xE6, 0x9E, 0x90}, //
- {0xD5ED, 0x6795}, //{0xE6, 0x9E, 0x95}, //
- {0xC1D6, 0x6797}, //{0xE6, 0x9E, 0x97}, //
+ {0xC0EE, 0x674E}, //{0xE6, 0x9D, 0x8E}, // ��
+ {0xD0D3, 0x674F}, //{0xE6, 0x9D, 0x8F}, // ��
+ {0xB2C4, 0x6750}, //{0xE6, 0x9D, 0x90}, // ��
+ {0xB4E5, 0x6751}, //{0xE6, 0x9D, 0x91}, // ��
+ {0xD5C8, 0x6756}, //{0xE6, 0x9D, 0x96}, // ��
+ {0xB6C5, 0x675C}, //{0xE6, 0x9D, 0x9C}, // ��
+ {0xCAF8, 0x675F}, //{0xE6, 0x9D, 0x9F}, // ��
+ {0xB8DC, 0x6760}, //{0xE6, 0x9D, 0xA0}, // ��
+ {0xCCF5, 0x6761}, //{0xE6, 0x9D, 0xA1}, // ��
+ {0xC0B4, 0x6765}, //{0xE6, 0x9D, 0xA5}, // 4
+ {0xD1EE, 0x6768}, //{0xE6, 0x9D, 0xA8}, // ��
+ {0xBABC, 0x676D}, //{0xE6, 0x9D, 0xAD}, // ��
+ {0xB1AD, 0x676F}, //{0xE6, 0x9D, 0xAF}, // ��
+ {0xBDDC, 0x6770}, //{0xE6, 0x9D, 0xB0}, // ��
+ {0xCBC9, 0x677E}, //{0xE6, 0x9D, 0xBE}, // ��
+ {0xB0E5, 0x677F}, //{0xE6, 0x9D, 0xBF}, // ��
+ {0xBCAB, 0x6781}, //{0xE6, 0x9E, 0x81}, // ��
+ {0xB9B9, 0x6784}, //{0xE6, 0x9E, 0x84}, // ��
+ {0xCDF7, 0x6789}, //{0xE6, 0x9E, 0x89}, // ��
+ {0xCEF6, 0x6790}, //{0xE6, 0x9E, 0x90}, // ��
+ {0xD5ED, 0x6795}, //{0xE6, 0x9E, 0x95}, // ��
+ {0xC1D6, 0x6797}, //{0xE6, 0x9E, 0x97}, // ��
{0xC3B6, 0x679A}, //{0xE6, 0x9E, 0x9A}, // ö
- {0xB9FB, 0x679C}, //{0xE6, 0x9E, 0x9C}, //
+ {0xB9FB, 0x679C}, //{0xE6, 0x9E, 0x9C}, // ��
{0xD6A6, 0x679D}, //{0xE6, 0x9E, 0x9D}, // ֦
- {0xCAE0, 0x67A2}, //{0xE6, 0x9E, 0xA2}, //
- {0xD4E6, 0x67A3}, //{0xE6, 0x9E, 0xA3}, //
+ {0xCAE0, 0x67A2}, //{0xE6, 0x9E, 0xA2}, // ��
+ {0xD4E6, 0x67A3}, //{0xE6, 0x9E, 0xA3}, // ��
{0xC7B9, 0x67AA}, //{0xE6, 0x9E, 0xAA}, // ǹ
- {0xB7E3, 0x67AB}, //{0xE6, 0x9E, 0xAB}, //
- {0xBFDD, 0x67AF}, //{0xE6, 0x9E, 0xAF}, //
- {0xBCDC, 0x67B6}, //{0xE6, 0x9E, 0xB6}, //
- {0xBCCF, 0x67B7}, //{0xE6, 0x9E, 0xB7}, //
- {0xB1FA, 0x67C4}, //{0xE6, 0x9F, 0x84}, //
- {0xB0D8, 0x67CF}, //{0xE6, 0x9F, 0x8F}, //
+ {0xB7E3, 0x67AB}, //{0xE6, 0x9E, 0xAB}, // ��
+ {0xBFDD, 0x67AF}, //{0xE6, 0x9E, 0xAF}, // ��
+ {0xBCDC, 0x67B6}, //{0xE6, 0x9E, 0xB6}, // ��
+ {0xBCCF, 0x67B7}, //{0xE6, 0x9E, 0xB7}, // ��
+ {0xB1FA, 0x67C4}, //{0xE6, 0x9F, 0x84}, // ��
+ {0xB0D8, 0x67CF}, //{0xE6, 0x9F, 0x8F}, // ��
{0xC4B3, 0x67D0}, //{0xE6, 0x9F, 0x90}, // ij
- {0xB8CC, 0x67D1}, //{0xE6, 0x9F, 0x91}, //
- {0xC6E2, 0x67D2}, //{0xE6, 0x9F, 0x92}, //
+ {0xB8CC, 0x67D1}, //{0xE6, 0x9F, 0x91}, // ��
+ {0xC6E2, 0x67D2}, //{0xE6, 0x9F, 0x92}, // ��
{0xC8BE, 0x67D3}, //{0xE6, 0x9F, 0x93}, // Ⱦ
- {0xC8E1, 0x67D4}, //{0xE6, 0x9F, 0x94}, //
- {0xB9F1, 0x67DC}, //{0xE6, 0x9F, 0x9C}, //
- {0xC4FB, 0x67E0}, //{0xE6, 0x9F, 0xA0}, //
- {0xB2E9, 0x67E5}, //{0xE6, 0x9F, 0xA5}, //
- {0xBCED, 0x67EC}, //{0xE6, 0x9F, 0xAC}, //
- {0xD6F9, 0x67F1}, //{0xE6, 0x9F, 0xB1}, //
- {0xC1F8, 0x67F3}, //{0xE6, 0x9F, 0xB3}, //
- {0xB2F1, 0x67F4}, //{0xE6, 0x9F, 0xB4}, //
- {0xCAC1, 0x67FF}, //{0xE6, 0x9F, 0xBF}, //
+ {0xC8E1, 0x67D4}, //{0xE6, 0x9F, 0x94}, // ��
+ {0xB9F1, 0x67DC}, //{0xE6, 0x9F, 0x9C}, // ��
+ {0xC4FB, 0x67E0}, //{0xE6, 0x9F, 0xA0}, // ��
+ {0xB2E9, 0x67E5}, //{0xE6, 0x9F, 0xA5}, // ��
+ {0xBCED, 0x67EC}, //{0xE6, 0x9F, 0xAC}, // ��
+ {0xD6F9, 0x67F1}, //{0xE6, 0x9F, 0xB1}, // ��
+ {0xC1F8, 0x67F3}, //{0xE6, 0x9F, 0xB3}, // ��
+ {0xB2F1, 0x67F4}, //{0xE6, 0x9F, 0xB4}, // ��
+ {0xCAC1, 0x67FF}, //{0xE6, 0x9F, 0xBF}, // ��
{0xD5A4, 0x6805}, //{0xE6, 0xA0, 0x85}, // դ
- {0xB1EA, 0x6807}, //{0xE6, 0xA0, 0x87}, //
+ {0xB1EA, 0x6807}, //{0xE6, 0xA0, 0x87}, // ��
{0xD5BB, 0x6808}, //{0xE6, 0xA0, 0x88}, // ջ
- {0xB6B0, 0x680B}, //{0xE6, 0xA0, 0x8B}, //
- {0xC0B8, 0x680F}, //{0xE6, 0xA0, 0x8F}, //
- {0xCAF7, 0x6811}, //{0xE6, 0xA0, 0x91}, //
+ {0xB6B0, 0x680B}, //{0xE6, 0xA0, 0x8B}, // ��
+ {0xC0B8, 0x680F}, //{0xE6, 0xA0, 0x8F}, // 8
+ {0xCAF7, 0x6811}, //{0xE6, 0xA0, 0x91}, // ��
{0xCBA8, 0x6813}, //{0xE6, 0xA0, 0x93}, // ˨
- {0xC6DC, 0x6816}, //{0xE6, 0xA0, 0x96}, //
- {0xC0F5, 0x6817}, //{0xE6, 0xA0, 0x97}, //
+ {0xC6DC, 0x6816}, //{0xE6, 0xA0, 0x96}, // ��
+ {0xC0F5, 0x6817}, //{0xE6, 0xA0, 0x97}, // ��
{0xD0A3, 0x6821}, //{0xE6, 0xA0, 0xA1}, // У
- {0xD6EA, 0x682A}, //{0xE6, 0xA0, 0xAA}, //
- {0xD1F9, 0x6837}, //{0xE6, 0xA0, 0xB7}, //
- {0xBACB, 0x6838}, //{0xE6, 0xA0, 0xB8}, //
- {0xB8F9, 0x6839}, //{0xE6, 0xA0, 0xB9}, //
- {0xB8F1, 0x683C}, //{0xE6, 0xA0, 0xBC}, //
- {0xD4D4, 0x683D}, //{0xE6, 0xA0, 0xBD}, //
- {0xB9F0, 0x6842}, //{0xE6, 0xA1, 0x82}, //
- {0xCCD2, 0x6843}, //{0xE6, 0xA1, 0x83}, //
+ {0xD6EA, 0x682A}, //{0xE6, 0xA0, 0xAA}, // ��
+ {0xD1F9, 0x6837}, //{0xE6, 0xA0, 0xB7}, // ��
+ {0xBACB, 0x6838}, //{0xE6, 0xA0, 0xB8}, // ��
+ {0xB8F9, 0x6839}, //{0xE6, 0xA0, 0xB9}, // ��
+ {0xB8F1, 0x683C}, //{0xE6, 0xA0, 0xBC}, // ��
+ {0xD4D4, 0x683D}, //{0xE6, 0xA0, 0xBD}, // ��
+ {0xB9F0, 0x6842}, //{0xE6, 0xA1, 0x82}, // ��
+ {0xCCD2, 0x6843}, //{0xE6, 0xA1, 0x83}, // ��
{0xCEA6, 0x6845}, //{0xE6, 0xA1, 0x85}, // Φ
- {0xBFF2, 0x6846}, //{0xE6, 0xA1, 0x86}, //
- {0xB0B8, 0x6848}, //{0xE6, 0xA1, 0x88}, //
- {0xD7C0, 0x684C}, //{0xE6, 0xA1, 0x8C}, //
+ {0xBFF2, 0x6846}, //{0xE6, 0xA1, 0x86}, // ��
+ {0xB0B8, 0x6848}, //{0xE6, 0xA1, 0x88}, // ��
+ {0xD7C0, 0x684C}, //{0xE6, 0xA1, 0x8C}, // ��
{0xCDA9, 0x6850}, //{0xE6, 0xA1, 0x90}, // ͩ
{0xC9A3, 0x6851}, //{0xE6, 0xA1, 0x91}, // ɣ
- {0xB5B5, 0x6863}, //{0xE6, 0xA1, 0xA3}, //
- {0xC7C5, 0x6865}, //{0xE6, 0xA1, 0xA5}, //
- {0xE8EB, 0x6866}, //{0xE6, 0xA1, 0xA6}, //
- {0xBDB0, 0x6868}, //{0xE6, 0xA1, 0xA8}, //
+ {0xB5B5, 0x6863}, //{0xE6, 0xA1, 0xA3}, // ��
+ {0xC7C5, 0x6865}, //{0xE6, 0xA1, 0xA5}, // ��
+ {0xE8EB, 0x6866}, //{0xE6, 0xA1, 0xA6}, // ��
+ {0xBDB0, 0x6868}, //{0xE6, 0xA1, 0xA8}, // ��
{0xD7AE, 0x6869}, //{0xE6, 0xA1, 0xA9}, //
{0xCDB0, 0x6876}, //{0xE6, 0xA1, 0xB6}, // Ͱ
- {0xC1BA, 0x6881}, //{0xE6, 0xA2, 0x81}, //
+ {0xC1BA, 0x6881}, //{0xE6, 0xA2, 0x81}, // z
{0xC3B7, 0x6885}, //{0xE6, 0xA2, 0x85}, // ÷
- {0xB0F0, 0x6886}, //{0xE6, 0xA2, 0x86}, //
- {0xB9A3, 0x6897}, //{0xE6, 0xA2, 0x97}, //
- {0xC9D2, 0x68A2}, //{0xE6, 0xA2, 0xA2}, //
- {0xC3CE, 0x68A6}, //{0xE6, 0xA2, 0xA6}, //
- {0xCEE0, 0x68A7}, //{0xE6, 0xA2, 0xA7}, //
- {0xC0E6, 0x68A8}, //{0xE6, 0xA2, 0xA8}, //
- {0xCBF3, 0x68AD}, //{0xE6, 0xA2, 0xAD}, //
- {0xCCDD, 0x68AF}, //{0xE6, 0xA2, 0xAF}, //
+ {0xB0F0, 0x6886}, //{0xE6, 0xA2, 0x86}, // ��
+ {0xB9A3, 0x6897}, //{0xE6, 0xA2, 0x97}, // ��
+ {0xC9D2, 0x68A2}, //{0xE6, 0xA2, 0xA2}, // ��
+ {0xC3CE, 0x68A6}, //{0xE6, 0xA2, 0xA6}, // ��
+ {0xCEE0, 0x68A7}, //{0xE6, 0xA2, 0xA7}, // ��
+ {0xC0E6, 0x68A8}, //{0xE6, 0xA2, 0xA8}, // ��
+ {0xCBF3, 0x68AD}, //{0xE6, 0xA2, 0xAD}, // ��
+ {0xCCDD, 0x68AF}, //{0xE6, 0xA2, 0xAF}, // ��
{0xD0B5, 0x68B0}, //{0xE6, 0xA2, 0xB0}, // е
- {0xCAE1, 0x68B3}, //{0xE6, 0xA2, 0xB3}, //
- {0xBCEC, 0x68C0}, //{0xE6, 0xA3, 0x80}, //
- {0xC3DE, 0x68C9}, //{0xE6, 0xA3, 0x89}, //
- {0xC6E5, 0x68CB}, //{0xE6, 0xA3, 0x8B}, //
- {0xB9F7, 0x68CD}, //{0xE6, 0xA3, 0x8D}, //
- {0xB0F4, 0x68D2}, //{0xE6, 0xA3, 0x92}, //
- {0xD7D8, 0x68D5}, //{0xE6, 0xA3, 0x95}, //
- {0xBCAC, 0x68D8}, //{0xE6, 0xA3, 0x98}, //
- {0xC5EF, 0x68DA}, //{0xE6, 0xA3, 0x9A}, //
- {0xCCC4, 0x68E0}, //{0xE6, 0xA3, 0xA0}, //
+ {0xCAE1, 0x68B3}, //{0xE6, 0xA2, 0xB3}, // ��
+ {0xBCEC, 0x68C0}, //{0xE6, 0xA3, 0x80}, // ��
+ {0xC3DE, 0x68C9}, //{0xE6, 0xA3, 0x89}, // ��
+ {0xC6E5, 0x68CB}, //{0xE6, 0xA3, 0x8B}, // ��
+ {0xB9F7, 0x68CD}, //{0xE6, 0xA3, 0x8D}, // ��
+ {0xB0F4, 0x68D2}, //{0xE6, 0xA3, 0x92}, // ��
+ {0xD7D8, 0x68D5}, //{0xE6, 0xA3, 0x95}, // ��
+ {0xBCAC, 0x68D8}, //{0xE6, 0xA3, 0x98}, // ��
+ {0xC5EF, 0x68DA}, //{0xE6, 0xA3, 0x9A}, // ��
+ {0xCCC4, 0x68E0}, //{0xE6, 0xA3, 0xA0}, // ��
{0xC9AD, 0x68EE}, //{0xE6, 0xA3, 0xAE}, // ɭ
- {0xC0E2, 0x68F1}, //{0xE6, 0xA3, 0xB1}, //
- {0xBFC3, 0x68F5}, //{0xE6, 0xA3, 0xB5}, //
- {0xB9D7, 0x68FA}, //{0xE6, 0xA3, 0xBA}, //
- {0xD2CE, 0x6905}, //{0xE6, 0xA4, 0x85}, //
+ {0xC0E2, 0x68F1}, //{0xE6, 0xA3, 0xB1}, // ��
+ {0xBFC3, 0x68F5}, //{0xE6, 0xA3, 0xB5}, // ��
+ {0xB9D7, 0x68FA}, //{0xE6, 0xA3, 0xBA}, // ��
+ {0xD2CE, 0x6905}, //{0xE6, 0xA4, 0x85}, // ��
{0xD6B2, 0x690D}, //{0xE6, 0xA4, 0x8D}, // ֲ
{0xD7B5, 0x690E}, //{0xE6, 0xA4, 0x8E}, //
- {0xBDB7, 0x6912}, //{0xE6, 0xA4, 0x92}, //
- {0xCDD6, 0x692D}, //{0xE6, 0xA4, 0xAD}, //
+ {0xBDB7, 0x6912}, //{0xE6, 0xA4, 0x92}, // ��
+ {0xCDD6, 0x692D}, //{0xE6, 0xA4, 0xAD}, // ��
{0xD2AC, 0x6930}, //{0xE6, 0xA4, 0xB0}, // Ҭ
- {0xB4BB, 0x693F}, //{0xE6, 0xA4, 0xBF}, //
+ {0xB4BB, 0x693F}, //{0xE6, 0xA4, 0xBF}, // ��
{0xD0A8, 0x6954}, //{0xE6, 0xA5, 0x94}, // Ш
- {0xB3FE, 0x695A}, //{0xE6, 0xA5, 0x9A}, //
- {0xC0E3, 0x695E}, //{0xE6, 0xA5, 0x9E}, //
- {0xE9B9, 0x6963}, //{0xE6, 0xA5, 0xA3}, //
- {0xBFAC, 0x6977}, //{0xE6, 0xA5, 0xB7}, //
+ {0xB3FE, 0x695A}, //{0xE6, 0xA5, 0x9A}, // ��
+ {0xC0E3, 0x695E}, //{0xE6, 0xA5, 0x9E}, // ��
+ {0xE9B9, 0x6963}, //{0xE6, 0xA5, 0xA3}, // �
+ {0xBFAC, 0x6977}, //{0xE6, 0xA5, 0xB7}, // ��
{0xC2A5, 0x697C}, //{0xE6, 0xA5, 0xBC}, // ¥
- {0xB8C5, 0x6982}, //{0xE6, 0xA6, 0x82}, //
- {0xE9AD, 0x6984}, //{0xE6, 0xA6, 0x84}, //
- {0xD3DC, 0x6986}, //{0xE6, 0xA6, 0x86}, //
- {0xC0C6, 0x6994}, //{0xE6, 0xA6, 0x94}, //
- {0xE9C5, 0x6995}, //{0xE6, 0xA6, 0x95}, //
- {0xE9BB, 0x699B}, //{0xE6, 0xA6, 0x9B}, //
- {0xB0F1, 0x699C}, //{0xE6, 0xA6, 0x9C}, //
+ {0xB8C5, 0x6982}, //{0xE6, 0xA6, 0x82}, // ��
+ {0xE9AD, 0x6984}, //{0xE6, 0xA6, 0x84}, // �
+ {0xD3DC, 0x6986}, //{0xE6, 0xA6, 0x86}, // ��
+ {0xC0C6, 0x6994}, //{0xE6, 0xA6, 0x94}, // ��
+ {0xE9C5, 0x6995}, //{0xE6, 0xA6, 0x95}, // ��
+ {0xE9BB, 0x699B}, //{0xE6, 0xA6, 0x9B}, // �
+ {0xB0F1, 0x699C}, //{0xE6, 0xA6, 0x9C}, // ��
{0xD5A5, 0x69A8}, //{0xE6, 0xA6, 0xA8}, // ե
- {0xC1F1, 0x69B4}, //{0xE6, 0xA6, 0xB4}, //
- {0xBBB1, 0x69D0}, //{0xE6, 0xA7, 0x90}, //
- {0xB2DB, 0x69FD}, //{0xE6, 0xA7, 0xBD}, //
- {0xB7AE, 0x6A0A}, //{0xE6, 0xA8, 0x8A}, //
- {0xD5C1, 0x6A1F}, //{0xE6, 0xA8, 0x9F}, //
+ {0xC1F1, 0x69B4}, //{0xE6, 0xA6, 0xB4}, // ��
+ {0xBBB1, 0x69D0}, //{0xE6, 0xA7, 0x90}, // ��
+ {0xB2DB, 0x69FD}, //{0xE6, 0xA7, 0xBD}, // ��
+ {0xB7AE, 0x6A0A}, //{0xE6, 0xA8, 0x8A}, // ��
+ {0xD5C1, 0x6A1F}, //{0xE6, 0xA8, 0x9F}, // ��
{0xC4A3, 0x6A21}, //{0xE6, 0xA8, 0xA1}, // ģ
- {0xBAE1, 0x6A2A}, //{0xE6, 0xA8, 0xAA}, //
+ {0xBAE1, 0x6A2A}, //{0xE6, 0xA8, 0xAA}, // ��
{0xD3A3, 0x6A31}, //{0xE6, 0xA8, 0xB1}, // ӣ
- {0xE9CF, 0x6A44}, //{0xE6, 0xA9, 0x84}, //
- {0xE9D9, 0x6A58}, //{0xE6, 0xA9, 0x98}, //
- {0xB3C8, 0x6A59}, //{0xE6, 0xA9, 0x99}, //
- {0xCFF0, 0x6A61}, //{0xE6, 0xA9, 0xA1}, //
- {0xB3F7, 0x6A71}, //{0xE6, 0xA9, 0xB1}, //
+ {0xE9CF, 0x6A44}, //{0xE6, 0xA9, 0x84}, // ��
+ {0xE9D9, 0x6A58}, //{0xE6, 0xA9, 0x98}, // ��
+ {0xB3C8, 0x6A59}, //{0xE6, 0xA9, 0x99}, // ��
+ {0xCFF0, 0x6A61}, //{0xE6, 0xA9, 0xA1}, // ��
+ {0xB3F7, 0x6A71}, //{0xE6, 0xA9, 0xB1}, // ��
{0xCCB4, 0x6A80}, //{0xE6, 0xAA, 0x80}, // ̴
- {0xE9DC, 0x6A90}, //{0xE6, 0xAA, 0x90}, //
- {0xE9DD, 0x6AA9}, //{0xE6, 0xAA, 0xA9}, //
- {0xC3CA, 0x6AAC}, //{0xE6, 0xAA, 0xAC}, //
+ {0xE9DC, 0x6A90}, //{0xE6, 0xAA, 0x90}, // ��
+ {0xE9DD, 0x6AA9}, //{0xE6, 0xAA, 0xA9}, // ��
+ {0xC3CA, 0x6AAC}, //{0xE6, 0xAA, 0xAC}, // ��
{0xC7B7, 0x6B20}, //{0xE6, 0xAC, 0xA0}, // Ƿ
- {0xB4CE, 0x6B21}, //{0xE6, 0xAC, 0xA1}, //
- {0xBBB6, 0x6B22}, //{0xE6, 0xAC, 0xA2}, //
- {0xD0C0, 0x6B23}, //{0xE6, 0xAC, 0xA3}, //
+ {0xB4CE, 0x6B21}, //{0xE6, 0xAC, 0xA1}, // ��
+ {0xBBB6, 0x6B22}, //{0xE6, 0xAC, 0xA2}, // ��
+ {0xD0C0, 0x6B23}, //{0xE6, 0xAC, 0xA3}, // ��
{0xC5B7, 0x6B27}, //{0xE6, 0xAC, 0xA7}, // ŷ
- {0xD3FB, 0x6B32}, //{0xE6, 0xAC, 0xB2}, //
- {0xC6DB, 0x6B3A}, //{0xE6, 0xAC, 0xBA}, //
- {0xBFEE, 0x6B3E}, //{0xE6, 0xAC, 0xBE}, //
+ {0xD3FB, 0x6B32}, //{0xE6, 0xAC, 0xB2}, // ��
+ {0xC6DB, 0x6B3A}, //{0xE6, 0xAC, 0xBA}, // ��
+ {0xBFEE, 0x6B3E}, //{0xE6, 0xAC, 0xBE}, // ��
{0xD0AA, 0x6B47}, //{0xE6, 0xAD, 0x87}, // Ъ
{0xC7B8, 0x6B49}, //{0xE6, 0xAD, 0x89}, // Ǹ
- {0xB8E8, 0x6B4C}, //{0xE6, 0xAD, 0x8C}, //
+ {0xB8E8, 0x6B4C}, //{0xE6, 0xAD, 0x8C}, // ��
{0xD6B9, 0x6B62}, //{0xE6, 0xAD, 0xA2}, // ֹ
- {0xD5FD, 0x6B63}, //{0xE6, 0xAD, 0xA3}, //
- {0xB4CB, 0x6B64}, //{0xE6, 0xAD, 0xA4}, //
- {0xB2BD, 0x6B65}, //{0xE6, 0xAD, 0xA5}, //
- {0xCEE4, 0x6B66}, //{0xE6, 0xAD, 0xA6}, //
- {0xC6E7, 0x6B67}, //{0xE6, 0xAD, 0xA7}, //
- {0xCDE1, 0x6B6A}, //{0xE6, 0xAD, 0xAA}, //
- {0xB4F5, 0x6B79}, //{0xE6, 0xAD, 0xB9}, //
- {0xCBC0, 0x6B7B}, //{0xE6, 0xAD, 0xBB}, //
- {0xBCDF, 0x6B7C}, //{0xE6, 0xAD, 0xBC}, //
- {0xD1EA, 0x6B83}, //{0xE6, 0xAE, 0x83}, //
+ {0xD5FD, 0x6B63}, //{0xE6, 0xAD, 0xA3}, // ��
+ {0xB4CB, 0x6B64}, //{0xE6, 0xAD, 0xA4}, // ��
+ {0xB2BD, 0x6B65}, //{0xE6, 0xAD, 0xA5}, // ��
+ {0xCEE4, 0x6B66}, //{0xE6, 0xAD, 0xA6}, // ��
+ {0xC6E7, 0x6B67}, //{0xE6, 0xAD, 0xA7}, // ��
+ {0xCDE1, 0x6B6A}, //{0xE6, 0xAD, 0xAA}, // ��
+ {0xB4F5, 0x6B79}, //{0xE6, 0xAD, 0xB9}, // ��
+ {0xCBC0, 0x6B7B}, //{0xE6, 0xAD, 0xBB}, // ��
+ {0xBCDF, 0x6B7C}, //{0xE6, 0xAD, 0xBC}, // ��
+ {0xD1EA, 0x6B83}, //{0xE6, 0xAE, 0x83}, // ��
{0xD1B3, 0x6B89}, //{0xE6, 0xAE, 0x89}, // ѳ
- {0xCAE2, 0x6B8A}, //{0xE6, 0xAE, 0x8A}, //
- {0xB2D0, 0x6B8B}, //{0xE6, 0xAE, 0x8B}, //
+ {0xCAE2, 0x6B8A}, //{0xE6, 0xAE, 0x8A}, // ��
+ {0xB2D0, 0x6B8B}, //{0xE6, 0xAE, 0x8B}, // ��
{0xD6B3, 0x6B96}, //{0xE6, 0xAE, 0x96}, // ֳ
{0xC5B9, 0x6BB4}, //{0xE6, 0xAE, 0xB4}, // Ź
- {0xB6CE, 0x6BB5}, //{0xE6, 0xAE, 0xB5}, //
- {0xD2F3, 0x6BB7}, //{0xE6, 0xAE, 0xB7}, //
- {0xB5EE, 0x6BBF}, //{0xE6, 0xAE, 0xBF}, //
- {0xBBD9, 0x6BC1}, //{0xE6, 0xAF, 0x81}, //
- {0xD2E3, 0x6BC5}, //{0xE6, 0xAF, 0x85}, //
+ {0xB6CE, 0x6BB5}, //{0xE6, 0xAE, 0xB5}, // ��
+ {0xD2F3, 0x6BB7}, //{0xE6, 0xAE, 0xB7}, // ��
+ {0xB5EE, 0x6BBF}, //{0xE6, 0xAE, 0xBF}, // ��
+ {0xBBD9, 0x6BC1}, //{0xE6, 0xAF, 0x81}, // ��
+ {0xD2E3, 0x6BC5}, //{0xE6, 0xAF, 0x85}, // ��
{0xC4B8, 0x6BCD}, //{0xE6, 0xAF, 0x8D}, // ĸ
{0xC3BF, 0x6BCF}, //{0xE6, 0xAF, 0x8F}, // ÿ
- {0xB6BE, 0x6BD2}, //{0xE6, 0xAF, 0x92}, //
- {0xB1C8, 0x6BD4}, //{0xE6, 0xAF, 0x94}, //
- {0xB1CF, 0x6BD5}, //{0xE6, 0xAF, 0x95}, //
- {0xB1D0, 0x6BD9}, //{0xE6, 0xAF, 0x99}, //
+ {0xB6BE, 0x6BD2}, //{0xE6, 0xAF, 0x92}, // ��
+ {0xB1C8, 0x6BD4}, //{0xE6, 0xAF, 0x94}, // ��
+ {0xB1CF, 0x6BD5}, //{0xE6, 0xAF, 0x95}, // ��
+ {0xB1D0, 0x6BD9}, //{0xE6, 0xAF, 0x99}, // ��
{0xC3AB, 0x6BDB}, //{0xE6, 0xAF, 0x9B}, // ë
{0xD5B1, 0x6BE1}, //{0xE6, 0xAF, 0xA1}, // ձ
- {0xBAC1, 0x6BEB}, //{0xE6, 0xAF, 0xAB}, //
+ {0xBAC1, 0x6BEB}, //{0xE6, 0xAF, 0xAB}, // ��
{0xCCBA, 0x6BEF}, //{0xE6, 0xAF, 0xAF}, // ̺
- {0xCACF, 0x6C0F}, //{0xE6, 0xB0, 0x8F}, //
- {0xC3F1, 0x6C11}, //{0xE6, 0xB0, 0x91}, //
+ {0xCACF, 0x6C0F}, //{0xE6, 0xB0, 0x8F}, // ��
+ {0xC3F1, 0x6C11}, //{0xE6, 0xB0, 0x91}, // ��
{0xC3A5, 0x6C13}, //{0xE6, 0xB0, 0x93}, // å
- {0xC6F8, 0x6C14}, //{0xE6, 0xB0, 0x94}, //
- {0xB7D5, 0x6C1B}, //{0xE6, 0xB0, 0x9B}, //
- {0xC7E2, 0x6C22}, //{0xE6, 0xB0, 0xA2}, //
- {0xD1F5, 0x6C27}, //{0xE6, 0xB0, 0xA7}, //
- {0xB0B1, 0x6C28}, //{0xE6, 0xB0, 0xA8}, //
- {0xB5AA, 0x6C2E}, //{0xE6, 0xB0, 0xAE}, //
- {0xC2C8, 0x6C2F}, //{0xE6, 0xB0, 0xAF}, //
+ {0xC6F8, 0x6C14}, //{0xE6, 0xB0, 0x94}, // ��
+ {0xB7D5, 0x6C1B}, //{0xE6, 0xB0, 0x9B}, // ��
+ {0xC7E2, 0x6C22}, //{0xE6, 0xB0, 0xA2}, // ��
+ {0xD1F5, 0x6C27}, //{0xE6, 0xB0, 0xA7}, // ��
+ {0xB0B1, 0x6C28}, //{0xE6, 0xB0, 0xA8}, // ��
+ {0xB5AA, 0x6C2E}, //{0xE6, 0xB0, 0xAE}, // ��
+ {0xC2C8, 0x6C2F}, //{0xE6, 0xB0, 0xAF}, // ��
{0xCBAE, 0x6C34}, //{0xE6, 0xB0, 0xB4}, // ˮ
- {0xD3C0, 0x6C38}, //{0xE6, 0xB0, 0xB8}, //
+ {0xD3C0, 0x6C38}, //{0xE6, 0xB0, 0xB8}, // ��
{0xD6AD, 0x6C41}, //{0xE6, 0xB1, 0x81}, // ֭
- {0xC7F3, 0x6C42}, //{0xE6, 0xB1, 0x82}, //
- {0xBBE3, 0x6C47}, //{0xE6, 0xB1, 0x87}, //
- {0xBABA, 0x6C49}, //{0xE6, 0xB1, 0x89}, //
- {0xBAB9, 0x6C57}, //{0xE6, 0xB1, 0x97}, //
+ {0xC7F3, 0x6C42}, //{0xE6, 0xB1, 0x82}, // ��
+ {0xBBE3, 0x6C47}, //{0xE6, 0xB1, 0x87}, // ��
+ {0xBABA, 0x6C49}, //{0xE6, 0xB1, 0x89}, // ��
+ {0xBAB9, 0x6C57}, //{0xE6, 0xB1, 0x97}, // ��
{0xD1B4, 0x6C5B}, //{0xE6, 0xB1, 0x9B}, // Ѵ
- {0xB9AF, 0x6C5E}, //{0xE6, 0xB1, 0x9E}, //
- {0xBDAD, 0x6C5F}, //{0xE6, 0xB1, 0x9F}, //
- {0xB3D8, 0x6C60}, //{0xE6, 0xB1, 0xA0}, //
- {0xCEDB, 0x6C61}, //{0xE6, 0xB1, 0xA1}, //
- {0xCCC0, 0x6C64}, //{0xE6, 0xB1, 0xA4}, //
- {0xCDF4, 0x6C6A}, //{0xE6, 0xB1, 0xAA}, //
+ {0xB9AF, 0x6C5E}, //{0xE6, 0xB1, 0x9E}, // ��
+ {0xBDAD, 0x6C5F}, //{0xE6, 0xB1, 0x9F}, // ��
+ {0xB3D8, 0x6C60}, //{0xE6, 0xB1, 0xA0}, // ��
+ {0xCEDB, 0x6C61}, //{0xE6, 0xB1, 0xA1}, // ��
+ {0xCCC0, 0x6C64}, //{0xE6, 0xB1, 0xA4}, // ��
+ {0xCDF4, 0x6C6A}, //{0xE6, 0xB1, 0xAA}, // ��
{0xCCAD, 0x6C70}, //{0xE6, 0xB1, 0xB0}, // ̭
- {0xD0DA, 0x6C79}, //{0xE6, 0xB1, 0xB9}, //
- {0xC6FB, 0x6C7D}, //{0xE6, 0xB1, 0xBD}, //
- {0xCED6, 0x6C83}, //{0xE6, 0xB2, 0x83}, //
- {0xC9F2, 0x6C88}, //{0xE6, 0xB2, 0x88}, //
- {0xB3C1, 0x6C89}, //{0xE6, 0xB2, 0x89}, //
- {0xE3E5, 0x6C90}, //{0xE6, 0xB2, 0x90}, //
+ {0xD0DA, 0x6C79}, //{0xE6, 0xB1, 0xB9}, // ��
+ {0xC6FB, 0x6C7D}, //{0xE6, 0xB1, 0xBD}, // ��
+ {0xCED6, 0x6C83}, //{0xE6, 0xB2, 0x83}, // ��
+ {0xC9F2, 0x6C88}, //{0xE6, 0xB2, 0x88}, // ��
+ {0xB3C1, 0x6C89}, //{0xE6, 0xB2, 0x89}, // ��
+ {0xE3E5, 0x6C90}, //{0xE6, 0xB2, 0x90}, // ��
{0xC9B3, 0x6C99}, //{0xE6, 0xB2, 0x99}, // ɳ
- {0xC5E6, 0x6C9B}, //{0xE6, 0xB2, 0x9B}, //
- {0xB9B5, 0x6C9F}, //{0xE6, 0xB2, 0x9F}, //
+ {0xC5E6, 0x6C9B}, //{0xE6, 0xB2, 0x9B}, // ��
+ {0xB9B5, 0x6C9F}, //{0xE6, 0xB2, 0x9F}, // ��
{0xC3BB, 0x6CA1}, //{0xE6, 0xB2, 0xA1}, // û
- {0xC1A4, 0x6CA5}, //{0xE6, 0xB2, 0xA5}, //
- {0xC2D9, 0x6CA6}, //{0xE6, 0xB2, 0xA6}, //
- {0xB2D7, 0x6CA7}, //{0xE6, 0xB2, 0xA7}, //
- {0xBBA6, 0x6CAA}, //{0xE6, 0xB2, 0xAA}, //
+ {0xC1A4, 0x6CA5}, //{0xE6, 0xB2, 0xA5}, // d
+ {0xC2D9, 0x6CA6}, //{0xE6, 0xB2, 0xA6}, // ��
+ {0xB2D7, 0x6CA7}, //{0xE6, 0xB2, 0xA7}, // ��
+ {0xBBA6, 0x6CAA}, //{0xE6, 0xB2, 0xAA}, // ��
{0xC4AD, 0x6CAB}, //{0xE6, 0xB2, 0xAB}, // ĭ
- {0xBEDA, 0x6CAE}, //{0xE6, 0xB2, 0xAE}, //
- {0xBAD3, 0x6CB3}, //{0xE6, 0xB2, 0xB3}, //
- {0xB7D0, 0x6CB8}, //{0xE6, 0xB2, 0xB8}, //
- {0xD3CD, 0x6CB9}, //{0xE6, 0xB2, 0xB9}, //
- {0xD6CE, 0x6CBB}, //{0xE6, 0xB2, 0xBB}, //
- {0xD5D3, 0x6CBC}, //{0xE6, 0xB2, 0xBC}, //
- {0xB9C1, 0x6CBD}, //{0xE6, 0xB2, 0xBD}, //
+ {0xBEDA, 0x6CAE}, //{0xE6, 0xB2, 0xAE}, // ��
+ {0xBAD3, 0x6CB3}, //{0xE6, 0xB2, 0xB3}, // ��
+ {0xB7D0, 0x6CB8}, //{0xE6, 0xB2, 0xB8}, // ��
+ {0xD3CD, 0x6CB9}, //{0xE6, 0xB2, 0xB9}, // ��
+ {0xD6CE, 0x6CBB}, //{0xE6, 0xB2, 0xBB}, // ��
+ {0xD5D3, 0x6CBC}, //{0xE6, 0xB2, 0xBC}, // ��
+ {0xB9C1, 0x6CBD}, //{0xE6, 0xB2, 0xBD}, // ��
{0xD5B4, 0x6CBE}, //{0xE6, 0xB2, 0xBE}, // մ
- {0xD1D8, 0x6CBF}, //{0xE6, 0xB2, 0xBF}, //
+ {0xD1D8, 0x6CBF}, //{0xE6, 0xB2, 0xBF}, // ��
{0xD0B9, 0x6CC4}, //{0xE6, 0xB3, 0x84}, // й
{0xC8AA, 0x6CC9}, //{0xE6, 0xB3, 0x89}, // Ȫ
- {0xB2B4, 0x6CCA}, //{0xE6, 0xB3, 0x8A}, //
- {0xC3DA, 0x6CCC}, //{0xE6, 0xB3, 0x8C}, //
- {0xB7A8, 0x6CD5}, //{0xE6, 0xB3, 0x95}, //
- {0xB7BA, 0x6CDB}, //{0xE6, 0xB3, 0x9B}, //
+ {0xB2B4, 0x6CCA}, //{0xE6, 0xB3, 0x8A}, // ��
+ {0xC3DA, 0x6CCC}, //{0xE6, 0xB3, 0x8C}, // ��
+ {0xB7A8, 0x6CD5}, //{0xE6, 0xB3, 0x95}, // ��
+ {0xB7BA, 0x6CDB}, //{0xE6, 0xB3, 0x9B}, // ��
{0xC5A2, 0x6CDE}, //{0xE6, 0xB3, 0x9E}, // Ţ
- {0xC5DD, 0x6CE1}, //{0xE6, 0xB3, 0xA1}, //
- {0xB2A8, 0x6CE2}, //{0xE6, 0xB3, 0xA2}, //
- {0xC6FC, 0x6CE3}, //{0xE6, 0xB3, 0xA3}, //
- {0xC4E0, 0x6CE5}, //{0xE6, 0xB3, 0xA5}, //
+ {0xC5DD, 0x6CE1}, //{0xE6, 0xB3, 0xA1}, // ��
+ {0xB2A8, 0x6CE2}, //{0xE6, 0xB3, 0xA2}, // ��
+ {0xC6FC, 0x6CE3}, //{0xE6, 0xB3, 0xA3}, // ��
+ {0xC4E0, 0x6CE5}, //{0xE6, 0xB3, 0xA5}, // ��
{0xD7A2, 0x6CE8}, //{0xE6, 0xB3, 0xA8}, // ע
- {0xC0E1, 0x6CEA}, //{0xE6, 0xB3, 0xAA}, //
+ {0xC0E1, 0x6CEA}, //{0xE6, 0xB3, 0xAA}, // ��
{0xCCA9, 0x6CF0}, //{0xE6, 0xB3, 0xB0}, // ̩
{0xD3BE, 0x6CF3}, //{0xE6, 0xB3, 0xB3}, // Ӿ
- {0xB1C3, 0x6CF5}, //{0xE6, 0xB3, 0xB5}, //
+ {0xB1C3, 0x6CF5}, //{0xE6, 0xB3, 0xB5}, // ��
{0xD0BA, 0x6CFB}, //{0xE6, 0xB3, 0xBB}, // к
- {0xC6C3, 0x6CFC}, //{0xE6, 0xB3, 0xBC}, //
- {0xD4F3, 0x6CFD}, //{0xE6, 0xB3, 0xBD}, //
- {0xBDE0, 0x6D01}, //{0xE6, 0xB4, 0x81}, //
- {0xD1F3, 0x6D0B}, //{0xE6, 0xB4, 0x8B}, //
- {0xC8F7, 0x6D12}, //{0xE6, 0xB4, 0x92}, //
+ {0xC6C3, 0x6CFC}, //{0xE6, 0xB3, 0xBC}, // ��
+ {0xD4F3, 0x6CFD}, //{0xE6, 0xB3, 0xBD}, // ��
+ {0xBDE0, 0x6D01}, //{0xE6, 0xB4, 0x81}, // ��
+ {0xD1F3, 0x6D0B}, //{0xE6, 0xB4, 0x8B}, // ��
+ {0xC8F7, 0x6D12}, //{0xE6, 0xB4, 0x92}, // ��
{0xCFB4, 0x6D17}, //{0xE6, 0xB4, 0x97}, // ϴ
- {0xC2E5, 0x6D1B}, //{0xE6, 0xB4, 0x9B}, //
- {0xB6B4, 0x6D1E}, //{0xE6, 0xB4, 0x9E}, //
- {0xBDF2, 0x6D25}, //{0xE6, 0xB4, 0xA5}, //
- {0xBAE9, 0x6D2A}, //{0xE6, 0xB4, 0xAA}, //
- {0xD6DE, 0x6D32}, //{0xE6, 0xB4, 0xB2}, //
- {0xBBEE, 0x6D3B}, //{0xE6, 0xB4, 0xBB}, //
- {0xCDDD, 0x6D3C}, //{0xE6, 0xB4, 0xBC}, //
+ {0xC2E5, 0x6D1B}, //{0xE6, 0xB4, 0x9B}, // ��
+ {0xB6B4, 0x6D1E}, //{0xE6, 0xB4, 0x9E}, // ��
+ {0xBDF2, 0x6D25}, //{0xE6, 0xB4, 0xA5}, // ��
+ {0xBAE9, 0x6D2A}, //{0xE6, 0xB4, 0xAA}, // ��
+ {0xD6DE, 0x6D32}, //{0xE6, 0xB4, 0xB2}, // ��
+ {0xBBEE, 0x6D3B}, //{0xE6, 0xB4, 0xBB}, // ��
+ {0xCDDD, 0x6D3C}, //{0xE6, 0xB4, 0xBC}, // ��
{0xC7A2, 0x6D3D}, //{0xE6, 0xB4, 0xBD}, // Ǣ
- {0xC5C9, 0x6D3E}, //{0xE6, 0xB4, 0xBE}, //
- {0xC1F7, 0x6D41}, //{0xE6, 0xB5, 0x81}, //
+ {0xC5C9, 0x6D3E}, //{0xE6, 0xB4, 0xBE}, // ��
+ {0xC1F7, 0x6D41}, //{0xE6, 0xB5, 0x81}, // ��
{0xC7B3, 0x6D45}, //{0xE6, 0xB5, 0x85}, // dz
- {0xBDAC, 0x6D46}, //{0xE6, 0xB5, 0x86}, //
- {0xBDBD, 0x6D47}, //{0xE6, 0xB5, 0x87}, //
- {0xD7C7, 0x6D4A}, //{0xE6, 0xB5, 0x8A}, //
- {0xB2E2, 0x6D4B}, //{0xE6, 0xB5, 0x8B}, //
- {0xBCC3, 0x6D4E}, //{0xE6, 0xB5, 0x8E}, //
- {0xBBEB, 0x6D51}, //{0xE6, 0xB5, 0x91}, //
+ {0xBDAC, 0x6D46}, //{0xE6, 0xB5, 0x86}, // ��
+ {0xBDBD, 0x6D47}, //{0xE6, 0xB5, 0x87}, // ��
+ {0xD7C7, 0x6D4A}, //{0xE6, 0xB5, 0x8A}, // ��
+ {0xB2E2, 0x6D4B}, //{0xE6, 0xB5, 0x8B}, // ��
+ {0xBCC3, 0x6D4E}, //{0xE6, 0xB5, 0x8E}, // ��
+ {0xBBEB, 0x6D51}, //{0xE6, 0xB5, 0x91}, // ��
{0xC5A8, 0x6D53}, //{0xE6, 0xB5, 0x93}, // Ũ
- {0xD5E3, 0x6D59}, //{0xE6, 0xB5, 0x99}, //
- {0xC6D6, 0x6D66}, //{0xE6, 0xB5, 0xA6}, //
- {0xBAC6, 0x6D69}, //{0xE6, 0xB5, 0xA9}, //
- {0xC0CB, 0x6D6A}, //{0xE6, 0xB5, 0xAA}, //
- {0xB8A1, 0x6D6E}, //{0xE6, 0xB5, 0xAE}, //
+ {0xD5E3, 0x6D59}, //{0xE6, 0xB5, 0x99}, // ��
+ {0xC6D6, 0x6D66}, //{0xE6, 0xB5, 0xA6}, // ��
+ {0xBAC6, 0x6D69}, //{0xE6, 0xB5, 0xA9}, // ��
+ {0xC0CB, 0x6D6A}, //{0xE6, 0xB5, 0xAA}, // ��
+ {0xB8A1, 0x6D6E}, //{0xE6, 0xB5, 0xAE}, // ��
{0xD4A1, 0x6D74}, //{0xE6, 0xB5, 0xB4}, // ԡ
- {0xBAA3, 0x6D77}, //{0xE6, 0xB5, 0xB7}, //
- {0xBDFE, 0x6D78}, //{0xE6, 0xB5, 0xB8}, //
+ {0xBAA3, 0x6D77}, //{0xE6, 0xB5, 0xB7}, // ��
+ {0xBDFE, 0x6D78}, //{0xE6, 0xB5, 0xB8}, // ��
{0xCDBF, 0x6D82}, //{0xE6, 0xB6, 0x82}, // Ϳ
- {0xCFFB, 0x6D88}, //{0xE6, 0xB6, 0x88}, //
- {0xC9E6, 0x6D89}, //{0xE6, 0xB6, 0x89}, //
+ {0xCFFB, 0x6D88}, //{0xE6, 0xB6, 0x88}, // ��
+ {0xC9E6, 0x6D89}, //{0xE6, 0xB6, 0x89}, // ��
{0xD3BF, 0x6D8C}, //{0xE6, 0xB6, 0x8C}, // ӿ
- {0xCFD1, 0x6D8E}, //{0xE6, 0xB6, 0x8E}, //
- {0xCCE9, 0x6D95}, //{0xE6, 0xB6, 0x95}, //
- {0xCCCE, 0x6D9B}, //{0xE6, 0xB6, 0x9B}, //
- {0xC0D4, 0x6D9D}, //{0xE6, 0xB6, 0x9D}, //
- {0xCED0, 0x6DA1}, //{0xE6, 0xB6, 0xA1}, //
- {0xBBC1, 0x6DA3}, //{0xE6, 0xB6, 0xA3}, //
- {0xB5D3, 0x6DA4}, //{0xE6, 0xB6, 0xA4}, //
- {0xC8F3, 0x6DA6}, //{0xE6, 0xB6, 0xA6}, //
- {0xBDA7, 0x6DA7}, //{0xE6, 0xB6, 0xA7}, //
- {0xD5C7, 0x6DA8}, //{0xE6, 0xB6, 0xA8}, //
+ {0xCFD1, 0x6D8E}, //{0xE6, 0xB6, 0x8E}, // ��
+ {0xCCE9, 0x6D95}, //{0xE6, 0xB6, 0x95}, // ��
+ {0xCCCE, 0x6D9B}, //{0xE6, 0xB6, 0x9B}, // ��
+ {0xC0D4, 0x6D9D}, //{0xE6, 0xB6, 0x9D}, // ��
+ {0xCED0, 0x6DA1}, //{0xE6, 0xB6, 0xA1}, // ��
+ {0xBBC1, 0x6DA3}, //{0xE6, 0xB6, 0xA3}, // ��
+ {0xB5D3, 0x6DA4}, //{0xE6, 0xB6, 0xA4}, // ��
+ {0xC8F3, 0x6DA6}, //{0xE6, 0xB6, 0xA6}, // ��
+ {0xBDA7, 0x6DA7}, //{0xE6, 0xB6, 0xA7}, // ��
+ {0xD5C7, 0x6DA8}, //{0xE6, 0xB6, 0xA8}, // ��
{0xC9AC, 0x6DA9}, //{0xE6, 0xB6, 0xA9}, // ɬ
- {0xE4CC, 0x6DAE}, //{0xE6, 0xB6, 0xAE}, //
- {0xD1C4, 0x6DAF}, //{0xE6, 0xB6, 0xAF}, //
+ {0xE4CC, 0x6DAE}, //{0xE6, 0xB6, 0xAE}, // ��
+ {0xD1C4, 0x6DAF}, //{0xE6, 0xB6, 0xAF}, // ��
{0xD2BA, 0x6DB2}, //{0xE6, 0xB6, 0xB2}, // Һ
- {0xBAAD, 0x6DB5}, //{0xE6, 0xB6, 0xB5}, //
- {0xB5ED, 0x6DC0}, //{0xE6, 0xB7, 0x80}, //
- {0xCFFD, 0x6DC6}, //{0xE6, 0xB7, 0x86}, //
- {0xC1DC, 0x6DCB}, //{0xE6, 0xB7, 0x8B}, //
- {0xCCCA, 0x6DCC}, //{0xE6, 0xB7, 0x8C}, //
- {0xCAE7, 0x6DD1}, //{0xE6, 0xB7, 0x91}, //
- {0xCCD4, 0x6DD8}, //{0xE6, 0xB7, 0x98}, //
- {0xB5AD, 0x6DE1}, //{0xE6, 0xB7, 0xA1}, //
- {0xD3D9, 0x6DE4}, //{0xE6, 0xB7, 0xA4}, //
- {0xD2F9, 0x6DEB}, //{0xE6, 0xB7, 0xAB}, //
- {0xBBB4, 0x6DEE}, //{0xE6, 0xB7, 0xAE}, //
- {0xC9EE, 0x6DF1}, //{0xE6, 0xB7, 0xB1}, //
- {0xB4BE, 0x6DF3}, //{0xE6, 0xB7, 0xB3}, //
- {0xBBEC, 0x6DF7}, //{0xE6, 0xB7, 0xB7}, //
- {0xD1CD, 0x6DF9}, //{0xE6, 0xB7, 0xB9}, //
- {0xCCED, 0x6DFB}, //{0xE6, 0xB7, 0xBB}, //
- {0xC7E5, 0x6E05}, //{0xE6, 0xB8, 0x85}, //
+ {0xBAAD, 0x6DB5}, //{0xE6, 0xB6, 0xB5}, // ��
+ {0xB5ED, 0x6DC0}, //{0xE6, 0xB7, 0x80}, // ��
+ {0xCFFD, 0x6DC6}, //{0xE6, 0xB7, 0x86}, // ��
+ {0xC1DC, 0x6DCB}, //{0xE6, 0xB7, 0x8B}, // ��
+ {0xCCCA, 0x6DCC}, //{0xE6, 0xB7, 0x8C}, // ��
+ {0xCAE7, 0x6DD1}, //{0xE6, 0xB7, 0x91}, // ��
+ {0xCCD4, 0x6DD8}, //{0xE6, 0xB7, 0x98}, // ��
+ {0xB5AD, 0x6DE1}, //{0xE6, 0xB7, 0xA1}, // ��
+ {0xD3D9, 0x6DE4}, //{0xE6, 0xB7, 0xA4}, // ��
+ {0xD2F9, 0x6DEB}, //{0xE6, 0xB7, 0xAB}, // ��
+ {0xBBB4, 0x6DEE}, //{0xE6, 0xB7, 0xAE}, // ��
+ {0xC9EE, 0x6DF1}, //{0xE6, 0xB7, 0xB1}, // ��
+ {0xB4BE, 0x6DF3}, //{0xE6, 0xB7, 0xB3}, // ��
+ {0xBBEC, 0x6DF7}, //{0xE6, 0xB7, 0xB7}, // ��
+ {0xD1CD, 0x6DF9}, //{0xE6, 0xB7, 0xB9}, // ��
+ {0xCCED, 0x6DFB}, //{0xE6, 0xB7, 0xBB}, // ��
+ {0xC7E5, 0x6E05}, //{0xE6, 0xB8, 0x85}, // ��
{0xD4A8, 0x6E0A}, //{0xE6, 0xB8, 0x8A}, // Ԩ
- {0xBDA5, 0x6E10}, //{0xE6, 0xB8, 0x90}, //
- {0xD3E6, 0x6E14}, //{0xE6, 0xB8, 0x94}, //
- {0xC9F8, 0x6E17}, //{0xE6, 0xB8, 0x97}, //
- {0xC7FE, 0x6E20}, //{0xE6, 0xB8, 0xA0}, //
- {0xB6C9, 0x6E21}, //{0xE6, 0xB8, 0xA1}, //
- {0xD4FC, 0x6E23}, //{0xE6, 0xB8, 0xA3}, //
- {0xB2B3, 0x6E24}, //{0xE6, 0xB8, 0xA4}, //
- {0xCEC2, 0x6E29}, //{0xE6, 0xB8, 0xA9}, //
- {0xB8DB, 0x6E2F}, //{0xE6, 0xB8, 0xAF}, //
- {0xBFCA, 0x6E34}, //{0xE6, 0xB8, 0xB4}, //
- {0xD3CE, 0x6E38}, //{0xE6, 0xB8, 0xB8}, //
- {0xC3EC, 0x6E3A}, //{0xE6, 0xB8, 0xBA}, //
- {0xC5C8, 0x6E43}, //{0xE6, 0xB9, 0x83}, //
- {0xBAFE, 0x6E56}, //{0xE6, 0xB9, 0x96}, //
- {0xCFE6, 0x6E58}, //{0xE6, 0xB9, 0x98}, //
- {0xCDE5, 0x6E7E}, //{0xE6, 0xB9, 0xBE}, //
+ {0xBDA5, 0x6E10}, //{0xE6, 0xB8, 0x90}, // ��
+ {0xD3E6, 0x6E14}, //{0xE6, 0xB8, 0x94}, // ��
+ {0xC9F8, 0x6E17}, //{0xE6, 0xB8, 0x97}, // ��
+ {0xC7FE, 0x6E20}, //{0xE6, 0xB8, 0xA0}, // ��
+ {0xB6C9, 0x6E21}, //{0xE6, 0xB8, 0xA1}, // ��
+ {0xD4FC, 0x6E23}, //{0xE6, 0xB8, 0xA3}, // ��
+ {0xB2B3, 0x6E24}, //{0xE6, 0xB8, 0xA4}, // ��
+ {0xCEC2, 0x6E29}, //{0xE6, 0xB8, 0xA9}, // ��
+ {0xB8DB, 0x6E2F}, //{0xE6, 0xB8, 0xAF}, // ��
+ {0xBFCA, 0x6E34}, //{0xE6, 0xB8, 0xB4}, // ��
+ {0xD3CE, 0x6E38}, //{0xE6, 0xB8, 0xB8}, // ��
+ {0xC3EC, 0x6E3A}, //{0xE6, 0xB8, 0xBA}, // ��
+ {0xC5C8, 0x6E43}, //{0xE6, 0xB9, 0x83}, // ��
+ {0xBAFE, 0x6E56}, //{0xE6, 0xB9, 0x96}, // ��
+ {0xCFE6, 0x6E58}, //{0xE6, 0xB9, 0x98}, // ��
+ {0xCDE5, 0x6E7E}, //{0xE6, 0xB9, 0xBE}, // ��
{0xCAAA, 0x6E7F}, //{0xE6, 0xB9, 0xBF}, // ʪ
- {0xC0A3, 0x6E83}, //{0xE6, 0xBA, 0x83}, //
- {0xBDA6, 0x6E85}, //{0xE6, 0xBA, 0x85}, //
- {0xB8C8, 0x6E89}, //{0xE6, 0xBA, 0x89}, //
+ {0xC0A3, 0x6E83}, //{0xE6, 0xBA, 0x83}, // #
+ {0xBDA6, 0x6E85}, //{0xE6, 0xBA, 0x85}, // ��
+ {0xB8C8, 0x6E89}, //{0xE6, 0xBA, 0x89}, // ��
{0xD4B4, 0x6E90}, //{0xE6, 0xBA, 0x90}, // Դ
- {0xC1EF, 0x6E9C}, //{0xE6, 0xBA, 0x9C}, //
- {0xD2E7, 0x6EA2}, //{0xE6, 0xBA, 0xA2}, //
+ {0xC1EF, 0x6E9C}, //{0xE6, 0xBA, 0x9C}, // ��
+ {0xD2E7, 0x6EA2}, //{0xE6, 0xBA, 0xA2}, // ��
{0xCFAA, 0x6EAA}, //{0xE6, 0xBA, 0xAA}, // Ϫ
- {0xCBDD, 0x6EAF}, //{0xE6, 0xBA, 0xAF}, //
- {0xC8DC, 0x6EB6}, //{0xE6, 0xBA, 0xB6}, //
- {0xC4E7, 0x6EBA}, //{0xE6, 0xBA, 0xBA}, //
- {0xD7CC, 0x6ECB}, //{0xE6, 0xBB, 0x8B}, //
- {0xBBAC, 0x6ED1}, //{0xE6, 0xBB, 0x91}, //
- {0xD7D2, 0x6ED3}, //{0xE6, 0xBB, 0x93}, //
- {0xCCCF, 0x6ED4}, //{0xE6, 0xBB, 0x94}, //
- {0xB9F6, 0x6EDA}, //{0xE6, 0xBB, 0x9A}, //
- {0xD6CD, 0x6EDE}, //{0xE6, 0xBB, 0x9E}, //
- {0xC2FA, 0x6EE1}, //{0xE6, 0xBB, 0xA1}, //
- {0xC2CB, 0x6EE4}, //{0xE6, 0xBB, 0xA4}, //
- {0xC0C4, 0x6EE5}, //{0xE6, 0xBB, 0xA5}, //
- {0xB1F5, 0x6EE8}, //{0xE6, 0xBB, 0xA8}, //
+ {0xCBDD, 0x6EAF}, //{0xE6, 0xBA, 0xAF}, // ��
+ {0xC8DC, 0x6EB6}, //{0xE6, 0xBA, 0xB6}, // ��
+ {0xC4E7, 0x6EBA}, //{0xE6, 0xBA, 0xBA}, // ��
+ {0xD7CC, 0x6ECB}, //{0xE6, 0xBB, 0x8B}, // ��
+ {0xBBAC, 0x6ED1}, //{0xE6, 0xBB, 0x91}, // ��
+ {0xD7D2, 0x6ED3}, //{0xE6, 0xBB, 0x93}, // ��
+ {0xCCCF, 0x6ED4}, //{0xE6, 0xBB, 0x94}, // ��
+ {0xB9F6, 0x6EDA}, //{0xE6, 0xBB, 0x9A}, // ��
+ {0xD6CD, 0x6EDE}, //{0xE6, 0xBB, 0x9E}, // ��
+ {0xC2FA, 0x6EE1}, //{0xE6, 0xBB, 0xA1}, // ��
+ {0xC2CB, 0x6EE4}, //{0xE6, 0xBB, 0xA4}, // ��
+ {0xC0C4, 0x6EE5}, //{0xE6, 0xBB, 0xA5}, // ��
+ {0xB1F5, 0x6EE8}, //{0xE6, 0xBB, 0xA8}, // ��
{0xCCB2, 0x6EE9}, //{0xE6, 0xBB, 0xA9}, // ̲
- {0xB5CE, 0x6EF4}, //{0xE6, 0xBB, 0xB4}, //
+ {0xB5CE, 0x6EF4}, //{0xE6, 0xBB, 0xB4}, // ��
{0xC6AF, 0x6F02}, //{0xE6, 0xBC, 0x82}, // Ư
- {0xC6E1, 0x6F06}, //{0xE6, 0xBC, 0x86}, //
+ {0xC6E1, 0x6F06}, //{0xE6, 0xBC, 0x86}, // ��
{0xC2A9, 0x6F0F}, //{0xE6, 0xBC, 0x8F}, // ©
- {0xC0EC, 0x6F13}, //{0xE6, 0xBC, 0x93}, //
- {0xD1DD, 0x6F14}, //{0xE6, 0xBC, 0x94}, //
+ {0xC0EC, 0x6F13}, //{0xE6, 0xBC, 0x93}, // ��
+ {0xD1DD, 0x6F14}, //{0xE6, 0xBC, 0x94}, // ��
{0xC4AE, 0x6F20}, //{0xE6, 0xBC, 0xA0}, // Į
- {0xE4F6, 0x6F29}, //{0xE6, 0xBC, 0xA9}, //
- {0xC2FE, 0x6F2B}, //{0xE6, 0xBC, 0xAB}, //
- {0xCAFE, 0x6F31}, //{0xE6, 0xBC, 0xB1}, //
- {0xD1FA, 0x6F3E}, //{0xE6, 0xBC, 0xBE}, //
- {0xC5CB, 0x6F58}, //{0xE6, 0xBD, 0x98}, //
+ {0xE4F6, 0x6F29}, //{0xE6, 0xBC, 0xA9}, // ��
+ {0xC2FE, 0x6F2B}, //{0xE6, 0xBC, 0xAB}, // ��
+ {0xCAFE, 0x6F31}, //{0xE6, 0xBC, 0xB1}, // ��
+ {0xD1FA, 0x6F3E}, //{0xE6, 0xBC, 0xBE}, // ��
+ {0xC5CB, 0x6F58}, //{0xE6, 0xBD, 0x98}, // ��
{0xC7B1, 0x6F5C}, //{0xE6, 0xBD, 0x9C}, // DZ
- {0xC1CA, 0x6F66}, //{0xE6, 0xBD, 0xA6}, //
+ {0xC1CA, 0x6F66}, //{0xE6, 0xBD, 0xA6}, // ��
{0xCCB6, 0x6F6D}, //{0xE6, 0xBD, 0xAD}, // ̶
- {0xB3B1, 0x6F6E}, //{0xE6, 0xBD, 0xAE}, //
- {0xB3CE, 0x6F84}, //{0xE6, 0xBE, 0x84}, //
- {0xB3BA, 0x6F88}, //{0xE6, 0xBE, 0x88}, //
- {0xC5EC, 0x6F8E}, //{0xE6, 0xBE, 0x8E}, //
- {0xC0BD, 0x6F9C}, //{0xE6, 0xBE, 0x9C}, //
- {0xD4E8, 0x6FA1}, //{0xE6, 0xBE, 0xA1}, //
- {0xB0C4, 0x6FB3}, //{0xE6, 0xBE, 0xB3}, //
- {0xBCA4, 0x6FC0}, //{0xE6, 0xBF, 0x80}, //
- {0xB1F4, 0x6FD2}, //{0xE6, 0xBF, 0x92}, //
- {0xC6D9, 0x7011}, //{0xE7, 0x80, 0x91}, //
- {0xB9E0, 0x704C}, //{0xE7, 0x81, 0x8C}, //
- {0xBBF0, 0x706B}, //{0xE7, 0x81, 0xAB}, //
- {0xC3F0, 0x706D}, //{0xE7, 0x81, 0xAD}, //
- {0xB5C6, 0x706F}, //{0xE7, 0x81, 0xAF}, //
- {0xBBD2, 0x7070}, //{0xE7, 0x81, 0xB0}, //
- {0xC1E9, 0x7075}, //{0xE7, 0x81, 0xB5}, //
- {0xD4EE, 0x7076}, //{0xE7, 0x81, 0xB6}, //
- {0xBEC4, 0x7078}, //{0xE7, 0x81, 0xB8}, //
- {0xD7C6, 0x707C}, //{0xE7, 0x81, 0xBC}, //
- {0xD4D6, 0x707E}, //{0xE7, 0x81, 0xBE}, //
- {0xB2D3, 0x707F}, //{0xE7, 0x81, 0xBF}, //
+ {0xB3B1, 0x6F6E}, //{0xE6, 0xBD, 0xAE}, // ��
+ {0xB3CE, 0x6F84}, //{0xE6, 0xBE, 0x84}, // ��
+ {0xB3BA, 0x6F88}, //{0xE6, 0xBE, 0x88}, // ��
+ {0xC5EC, 0x6F8E}, //{0xE6, 0xBE, 0x8E}, // ��
+ {0xC0BD, 0x6F9C}, //{0xE6, 0xBE, 0x9C}, // =
+ {0xD4E8, 0x6FA1}, //{0xE6, 0xBE, 0xA1}, // ��
+ {0xB0C4, 0x6FB3}, //{0xE6, 0xBE, 0xB3}, // ��
+ {0xBCA4, 0x6FC0}, //{0xE6, 0xBF, 0x80}, // ��
+ {0xB1F4, 0x6FD2}, //{0xE6, 0xBF, 0x92}, // ��
+ {0xC6D9, 0x7011}, //{0xE7, 0x80, 0x91}, // ��
+ {0xB9E0, 0x704C}, //{0xE7, 0x81, 0x8C}, // ��
+ {0xBBF0, 0x706B}, //{0xE7, 0x81, 0xAB}, // ��
+ {0xC3F0, 0x706D}, //{0xE7, 0x81, 0xAD}, // ��
+ {0xB5C6, 0x706F}, //{0xE7, 0x81, 0xAF}, // ��
+ {0xBBD2, 0x7070}, //{0xE7, 0x81, 0xB0}, // ��
+ {0xC1E9, 0x7075}, //{0xE7, 0x81, 0xB5}, // ��
+ {0xD4EE, 0x7076}, //{0xE7, 0x81, 0xB6}, // ��
+ {0xBEC4, 0x7078}, //{0xE7, 0x81, 0xB8}, // ��
+ {0xD7C6, 0x707C}, //{0xE7, 0x81, 0xBC}, // ��
+ {0xD4D6, 0x707E}, //{0xE7, 0x81, 0xBE}, // ��
+ {0xB2D3, 0x707F}, //{0xE7, 0x81, 0xBF}, // ��
{0xC2AF, 0x7089}, //{0xE7, 0x82, 0x89}, // ¯
- {0xB4B6, 0x708A}, //{0xE7, 0x82, 0x8A}, //
- {0xD1D7, 0x708E}, //{0xE7, 0x82, 0x8E}, //
- {0xB3B4, 0x7092}, //{0xE7, 0x82, 0x92}, //
- {0xBFBB, 0x7095}, //{0xE7, 0x82, 0x95}, //
- {0xECC5, 0x70AB}, //{0xE7, 0x82, 0xAB}, //
- {0xBEE6, 0x70AC}, //{0xE7, 0x82, 0xAC}, //
+ {0xB4B6, 0x708A}, //{0xE7, 0x82, 0x8A}, // ��
+ {0xD1D7, 0x708E}, //{0xE7, 0x82, 0x8E}, // ��
+ {0xB3B4, 0x7092}, //{0xE7, 0x82, 0x92}, // ��
+ {0xBFBB, 0x7095}, //{0xE7, 0x82, 0x95}, // ��
+ {0xECC5, 0x70AB}, //{0xE7, 0x82, 0xAB}, // ��
+ {0xBEE6, 0x70AC}, //{0xE7, 0x82, 0xAC}, // ��
{0xCCBF, 0x70AD}, //{0xE7, 0x82, 0xAD}, // ̿
- {0xC5DA, 0x70AE}, //{0xE7, 0x82, 0xAE}, //
+ {0xC5DA, 0x70AE}, //{0xE7, 0x82, 0xAE}, // ��
{0xD5A8, 0x70B8}, //{0xE7, 0x82, 0xB8}, // ը
- {0xB5E3, 0x70B9}, //{0xE7, 0x82, 0xB9}, //
- {0xC1B6, 0x70BC}, //{0xE7, 0x82, 0xBC}, //
+ {0xB5E3, 0x70B9}, //{0xE7, 0x82, 0xB9}, // ��
+ {0xC1B6, 0x70BC}, //{0xE7, 0x82, 0xBC}, // ��
{0xCBB8, 0x70C1}, //{0xE7, 0x83, 0x81}, // ˸
- {0xC0C3, 0x70C2}, //{0xE7, 0x83, 0x82}, //
- {0xC1D2, 0x70C8}, //{0xE7, 0x83, 0x88}, //
- {0xBAE6, 0x70D8}, //{0xE7, 0x83, 0x98}, //
- {0xC0D3, 0x70D9}, //{0xE7, 0x83, 0x99}, //
- {0xD6F2, 0x70DB}, //{0xE7, 0x83, 0x9B}, //
- {0xD1CC, 0x70DF}, //{0xE7, 0x83, 0x9F}, //
- {0xBFBE, 0x70E4}, //{0xE7, 0x83, 0xA4}, //
- {0xB7B3, 0x70E6}, //{0xE7, 0x83, 0xA6}, //
- {0xC9D5, 0x70E7}, //{0xE7, 0x83, 0xA7}, //
- {0xCCCC, 0x70EB}, //{0xE7, 0x83, 0xAB}, //
- {0xC8C8, 0x70ED}, //{0xE7, 0x83, 0xAD}, //
- {0xC5EB, 0x70F9}, //{0xE7, 0x83, 0xB9}, //
- {0xBAB8, 0x710A}, //{0xE7, 0x84, 0x8A}, //
- {0xBBC0, 0x7115}, //{0xE7, 0x84, 0x95}, //
- {0xB1BA, 0x7119}, //{0xE7, 0x84, 0x99}, //
- {0xB7D9, 0x711A}, //{0xE7, 0x84, 0x9A}, //
- {0xBDB9, 0x7126}, //{0xE7, 0x84, 0xA6}, //
- {0xD1E6, 0x7130}, //{0xE7, 0x84, 0xB0}, //
+ {0xC0C3, 0x70C2}, //{0xE7, 0x83, 0x82}, // ��
+ {0xC1D2, 0x70C8}, //{0xE7, 0x83, 0x88}, // ��
+ {0xBAE6, 0x70D8}, //{0xE7, 0x83, 0x98}, // ��
+ {0xC0D3, 0x70D9}, //{0xE7, 0x83, 0x99}, // ��
+ {0xD6F2, 0x70DB}, //{0xE7, 0x83, 0x9B}, // ��
+ {0xD1CC, 0x70DF}, //{0xE7, 0x83, 0x9F}, // ��
+ {0xBFBE, 0x70E4}, //{0xE7, 0x83, 0xA4}, // ��
+ {0xB7B3, 0x70E6}, //{0xE7, 0x83, 0xA6}, // ��
+ {0xC9D5, 0x70E7}, //{0xE7, 0x83, 0xA7}, // ��
+ {0xCCCC, 0x70EB}, //{0xE7, 0x83, 0xAB}, // ��
+ {0xC8C8, 0x70ED}, //{0xE7, 0x83, 0xAD}, // ��
+ {0xC5EB, 0x70F9}, //{0xE7, 0x83, 0xB9}, // ��
+ {0xBAB8, 0x710A}, //{0xE7, 0x84, 0x8A}, // ��
+ {0xBBC0, 0x7115}, //{0xE7, 0x84, 0x95}, // ��
+ {0xB1BA, 0x7119}, //{0xE7, 0x84, 0x99}, // ��
+ {0xB7D9, 0x711A}, //{0xE7, 0x84, 0x9A}, // ��
+ {0xBDB9, 0x7126}, //{0xE7, 0x84, 0xA6}, // ��
+ {0xD1E6, 0x7130}, //{0xE7, 0x84, 0xB0}, // ��
{0xC8BB, 0x7136}, //{0xE7, 0x84, 0xB6}, // Ȼ
- {0xBBCD, 0x714C}, //{0xE7, 0x85, 0x8C}, //
- {0xBCE5, 0x714E}, //{0xE7, 0x85, 0x8E}, //
+ {0xBBCD, 0x714C}, //{0xE7, 0x85, 0x8C}, // ��
+ {0xBCE5, 0x714E}, //{0xE7, 0x85, 0x8E}, // ��
{0xC9B7, 0x715E}, //{0xE7, 0x85, 0x9E}, // ɷ
{0xC3BA, 0x7164}, //{0xE7, 0x85, 0xA4}, // ú
- {0xD5D5, 0x7167}, //{0xE7, 0x85, 0xA7}, //
- {0xD6F3, 0x716E}, //{0xE7, 0x85, 0xAE}, //
+ {0xD5D5, 0x7167}, //{0xE7, 0x85, 0xA7}, // ��
+ {0xD6F3, 0x716E}, //{0xE7, 0x85, 0xAE}, // ��
{0xCFA8, 0x7184}, //{0xE7, 0x86, 0x84}, // Ϩ
- {0xD0DC, 0x718A}, //{0xE7, 0x86, 0x8A}, //
+ {0xD0DC, 0x718A}, //{0xE7, 0x86, 0x8A}, // ��
{0xD1AC, 0x718F}, //{0xE7, 0x86, 0x8F}, // Ѭ
- {0xC8DB, 0x7194}, //{0xE7, 0x86, 0x94}, //
- {0xCEF5, 0x7199}, //{0xE7, 0x86, 0x99}, //
- {0xCAEC, 0x719F}, //{0xE7, 0x86, 0x9F}, //
- {0xB0BE, 0x71AC}, //{0xE7, 0x86, 0xAC}, //
+ {0xC8DB, 0x7194}, //{0xE7, 0x86, 0x94}, // ��
+ {0xCEF5, 0x7199}, //{0xE7, 0x86, 0x99}, // ��
+ {0xCAEC, 0x719F}, //{0xE7, 0x86, 0x9F}, // ��
+ {0xB0BE, 0x71AC}, //{0xE7, 0x86, 0xAC}, // ��
{0xC8BC, 0x71C3}, //{0xE7, 0x87, 0x83}, // ȼ
- {0xC1C7, 0x71CE}, //{0xE7, 0x87, 0x8E}, //
- {0xD1E0, 0x71D5}, //{0xE7, 0x87, 0x95}, //
- {0xD4EF, 0x71E5}, //{0xE7, 0x87, 0xA5}, //
- {0xB1AC, 0x7206}, //{0xE7, 0x88, 0x86}, //
+ {0xC1C7, 0x71CE}, //{0xE7, 0x87, 0x8E}, // ��
+ {0xD1E0, 0x71D5}, //{0xE7, 0x87, 0x95}, // ��
+ {0xD4EF, 0x71E5}, //{0xE7, 0x87, 0xA5}, // ��
+ {0xB1AC, 0x7206}, //{0xE7, 0x88, 0x86}, // ��
{0xD7A6, 0x722A}, //{0xE7, 0x88, 0xAA}, // צ
- {0xC5C0, 0x722C}, //{0xE7, 0x88, 0xAC}, //
- {0xB0AE, 0x7231}, //{0xE7, 0x88, 0xB1}, //
- {0xBEF4, 0x7235}, //{0xE7, 0x88, 0xB5}, //
- {0xB8B8, 0x7236}, //{0xE7, 0x88, 0xB6}, //
+ {0xC5C0, 0x722C}, //{0xE7, 0x88, 0xAC}, // ��
+ {0xB0AE, 0x7231}, //{0xE7, 0x88, 0xB1}, // ��
+ {0xBEF4, 0x7235}, //{0xE7, 0x88, 0xB5}, // ��
+ {0xB8B8, 0x7236}, //{0xE7, 0x88, 0xB6}, // ��
{0xD2AF, 0x7237}, //{0xE7, 0x88, 0xB7}, // ү
- {0xB0D6, 0x7238}, //{0xE7, 0x88, 0xB8}, //
- {0xB5F9, 0x7239}, //{0xE7, 0x88, 0xB9}, //
+ {0xB0D6, 0x7238}, //{0xE7, 0x88, 0xB8}, // ��
+ {0xB5F9, 0x7239}, //{0xE7, 0x88, 0xB9}, // ��
{0xCBAC, 0x723D}, //{0xE7, 0x88, 0xBD}, // ˬ
{0xC6AC, 0x7247}, //{0xE7, 0x89, 0x87}, // Ƭ
- {0xB0E6, 0x7248}, //{0xE7, 0x89, 0x88}, //
- {0xC5C6, 0x724C}, //{0xE7, 0x89, 0x8C}, //
- {0xEBB9, 0x724D}, //{0xE7, 0x89, 0x8D}, //
- {0xD1C0, 0x7259}, //{0xE7, 0x89, 0x99}, //
+ {0xB0E6, 0x7248}, //{0xE7, 0x89, 0x88}, // ��
+ {0xC5C6, 0x724C}, //{0xE7, 0x89, 0x8C}, // ��
+ {0xEBB9, 0x724D}, //{0xE7, 0x89, 0x8D}, // �
+ {0xD1C0, 0x7259}, //{0xE7, 0x89, 0x99}, // ��
{0xC5A3, 0x725B}, //{0xE7, 0x89, 0x9B}, // ţ
{0xC4B5, 0x7261}, //{0xE7, 0x89, 0xA1}, // ĵ
- {0xC0CE, 0x7262}, //{0xE7, 0x89, 0xA2}, //
- {0xC4C1, 0x7267}, //{0xE7, 0x89, 0xA7}, //
- {0xCEEF, 0x7269}, //{0xE7, 0x89, 0xA9}, //
- {0xC9FC, 0x7272}, //{0xE7, 0x89, 0xB2}, //
+ {0xC0CE, 0x7262}, //{0xE7, 0x89, 0xA2}, // ��
+ {0xC4C1, 0x7267}, //{0xE7, 0x89, 0xA7}, // ��
+ {0xCEEF, 0x7269}, //{0xE7, 0x89, 0xA9}, // ��
+ {0xC9FC, 0x7272}, //{0xE7, 0x89, 0xB2}, // ��
{0xC7A3, 0x7275}, //{0xE7, 0x89, 0xB5}, // ǣ
- {0xCCD8, 0x7279}, //{0xE7, 0x89, 0xB9}, //
- {0xCEFE, 0x727A}, //{0xE7, 0x89, 0xBA}, //
+ {0xCCD8, 0x7279}, //{0xE7, 0x89, 0xB9}, // ��
+ {0xCEFE, 0x727A}, //{0xE7, 0x89, 0xBA}, // ��
{0xCFAC, 0x7280}, //{0xE7, 0x8A, 0x80}, // Ϭ
- {0xC0E7, 0x7281}, //{0xE7, 0x8A, 0x81}, //
+ {0xC0E7, 0x7281}, //{0xE7, 0x8A, 0x81}, // ��
{0xC8AE, 0x72AC}, //{0xE7, 0x8A, 0xAC}, // Ȯ
- {0xB7B8, 0x72AF}, //{0xE7, 0x8A, 0xAF}, //
+ {0xB7B8, 0x72AF}, //{0xE7, 0x8A, 0xAF}, // ��
{0xD7B4, 0x72B6}, //{0xE7, 0x8A, 0xB6}, // ״
- {0xD3CC, 0x72B9}, //{0xE7, 0x8A, 0xB9}, //
- {0xBFF1, 0x72C2}, //{0xE7, 0x8B, 0x82}, //
- {0xB1B7, 0x72C8}, //{0xE7, 0x8B, 0x88}, //
- {0xBAFC, 0x72D0}, //{0xE7, 0x8B, 0x90}, //
- {0xB9B7, 0x72D7}, //{0xE7, 0x8B, 0x97}, //
- {0xC4FC, 0x72DE}, //{0xE7, 0x8B, 0x9E}, //
- {0xBADD, 0x72E0}, //{0xE7, 0x8B, 0xA0}, //
- {0xBDC6, 0x72E1}, //{0xE7, 0x8B, 0xA1}, //
- {0xB6C0, 0x72EC}, //{0xE7, 0x8B, 0xAC}, //
- {0xCFC1, 0x72ED}, //{0xE7, 0x8B, 0xAD}, //
+ {0xD3CC, 0x72B9}, //{0xE7, 0x8A, 0xB9}, // ��
+ {0xBFF1, 0x72C2}, //{0xE7, 0x8B, 0x82}, // ��
+ {0xB1B7, 0x72C8}, //{0xE7, 0x8B, 0x88}, // ��
+ {0xBAFC, 0x72D0}, //{0xE7, 0x8B, 0x90}, // ��
+ {0xB9B7, 0x72D7}, //{0xE7, 0x8B, 0x97}, // ��
+ {0xC4FC, 0x72DE}, //{0xE7, 0x8B, 0x9E}, // ��
+ {0xBADD, 0x72E0}, //{0xE7, 0x8B, 0xA0}, // ��
+ {0xBDC6, 0x72E1}, //{0xE7, 0x8B, 0xA1}, // ��
+ {0xB6C0, 0x72EC}, //{0xE7, 0x8B, 0xAC}, // ��
+ {0xCFC1, 0x72ED}, //{0xE7, 0x8B, 0xAD}, // ��
{0xCAA8, 0x72EE}, //{0xE7, 0x8B, 0xAE}, // ʨ
- {0xD5F8, 0x72F0}, //{0xE7, 0x8B, 0xB0}, //
- {0xD3FC, 0x72F1}, //{0xE7, 0x8B, 0xB1}, //
- {0xC0EA, 0x72F8}, //{0xE7, 0x8B, 0xB8}, //
- {0xC0C7, 0x72FC}, //{0xE7, 0x8B, 0xBC}, //
- {0xC1D4, 0x730E}, //{0xE7, 0x8C, 0x8E}, //
- {0xB2FE, 0x7316}, //{0xE7, 0x8C, 0x96}, //
- {0xC3CD, 0x731B}, //{0xE7, 0x8C, 0x9B}, //
- {0xB2C2, 0x731C}, //{0xE7, 0x8C, 0x9C}, //
- {0xD0C9, 0x7329}, //{0xE7, 0x8C, 0xA9}, //
- {0xD6ED, 0x732A}, //{0xE7, 0x8C, 0xAA}, //
+ {0xD5F8, 0x72F0}, //{0xE7, 0x8B, 0xB0}, // ��
+ {0xD3FC, 0x72F1}, //{0xE7, 0x8B, 0xB1}, // ��
+ {0xC0EA, 0x72F8}, //{0xE7, 0x8B, 0xB8}, // ��
+ {0xC0C7, 0x72FC}, //{0xE7, 0x8B, 0xBC}, // ��
+ {0xC1D4, 0x730E}, //{0xE7, 0x8C, 0x8E}, // ��
+ {0xB2FE, 0x7316}, //{0xE7, 0x8C, 0x96}, // ��
+ {0xC3CD, 0x731B}, //{0xE7, 0x8C, 0x9B}, // ��
+ {0xB2C2, 0x731C}, //{0xE7, 0x8C, 0x9C}, // ��
+ {0xD0C9, 0x7329}, //{0xE7, 0x8C, 0xA9}, // ��
+ {0xD6ED, 0x732A}, //{0xE7, 0x8C, 0xAA}, // ��
{0xC3A8, 0x732B}, //{0xE7, 0x8C, 0xAB}, // è
- {0xE2AC, 0x732C}, //{0xE7, 0x8C, 0xAC}, //
- {0xCFD7, 0x732E}, //{0xE7, 0x8C, 0xAE}, //
- {0xBAEF, 0x7334}, //{0xE7, 0x8C, 0xB4}, //
- {0xBBAB, 0x733E}, //{0xE7, 0x8C, 0xBE}, //
+ {0xE2AC, 0x732C}, //{0xE7, 0x8C, 0xAC}, // �
+ {0xCFD7, 0x732E}, //{0xE7, 0x8C, 0xAE}, // ��
+ {0xBAEF, 0x7334}, //{0xE7, 0x8C, 0xB4}, // ��
+ {0xBBAB, 0x733E}, //{0xE7, 0x8C, 0xBE}, // ��
{0xD4B3, 0x733F}, //{0xE7, 0x8C, 0xBF}, // Գ
- {0xD0FE, 0x7384}, //{0xE7, 0x8E, 0x84}, //
- {0xC2CA, 0x7387}, //{0xE7, 0x8E, 0x87}, //
- {0xD3F1, 0x7389}, //{0xE7, 0x8E, 0x89}, //
- {0xCDF5, 0x738B}, //{0xE7, 0x8E, 0x8B}, //
- {0xBEC1, 0x7396}, //{0xE7, 0x8E, 0x96}, //
- {0xC2EA, 0x739B}, //{0xE7, 0x8E, 0x9B}, //
- {0xCDE6, 0x73A9}, //{0xE7, 0x8E, 0xA9}, //
+ {0xD0FE, 0x7384}, //{0xE7, 0x8E, 0x84}, // ��
+ {0xC2CA, 0x7387}, //{0xE7, 0x8E, 0x87}, // ��
+ {0xD3F1, 0x7389}, //{0xE7, 0x8E, 0x89}, // ��
+ {0xCDF5, 0x738B}, //{0xE7, 0x8E, 0x8B}, // ��
+ {0xBEC1, 0x7396}, //{0xE7, 0x8E, 0x96}, // ��
+ {0xC2EA, 0x739B}, //{0xE7, 0x8E, 0x9B}, // ��
+ {0xCDE6, 0x73A9}, //{0xE7, 0x8E, 0xA9}, // ��
{0xC3B5, 0x73AB}, //{0xE7, 0x8E, 0xAB}, // õ
- {0xBBB7, 0x73AF}, //{0xE7, 0x8E, 0xAF}, //
- {0xCFD6, 0x73B0}, //{0xE7, 0x8E, 0xB0}, //
- {0xC1E1, 0x73B2}, //{0xE7, 0x8E, 0xB2}, //
- {0xE7E8, 0x73B7}, //{0xE7, 0x8E, 0xB7}, //
- {0xB2A3, 0x73BB}, //{0xE7, 0x8E, 0xBB}, //
+ {0xBBB7, 0x73AF}, //{0xE7, 0x8E, 0xAF}, // ��
+ {0xCFD6, 0x73B0}, //{0xE7, 0x8E, 0xB0}, // ��
+ {0xC1E1, 0x73B2}, //{0xE7, 0x8E, 0xB2}, // ��
+ {0xE7E8, 0x73B7}, //{0xE7, 0x8E, 0xB7}, // ��
+ {0xB2A3, 0x73BB}, //{0xE7, 0x8E, 0xBB}, // ��
{0xC9BA, 0x73CA}, //{0xE7, 0x8F, 0x8A}, // ɺ
- {0xD5E4, 0x73CD}, //{0xE7, 0x8F, 0x8D}, //
- {0xD6E9, 0x73E0}, //{0xE7, 0x8F, 0xA0}, //
- {0xB0E0, 0x73ED}, //{0xE7, 0x8F, 0xAD}, //
- {0xC7F2, 0x7403}, //{0xE7, 0x90, 0x83}, //
- {0xC0C5, 0x7405}, //{0xE7, 0x90, 0x85}, //
- {0xC0ED, 0x7406}, //{0xE7, 0x90, 0x86}, //
- {0xC1F0, 0x7409}, //{0xE7, 0x90, 0x89}, //
- {0xCBF6, 0x7410}, //{0xE7, 0x90, 0x90}, //
- {0xD7C1, 0x7422}, //{0xE7, 0x90, 0xA2}, //
- {0xC1D5, 0x7433}, //{0xE7, 0x90, 0xB3}, //
- {0xC7D9, 0x7434}, //{0xE7, 0x90, 0xB4}, //
- {0xC7ED, 0x743C}, //{0xE7, 0x90, 0xBC}, //
- {0xC8F0, 0x745E}, //{0xE7, 0x91, 0x9E}, //
+ {0xD5E4, 0x73CD}, //{0xE7, 0x8F, 0x8D}, // ��
+ {0xD6E9, 0x73E0}, //{0xE7, 0x8F, 0xA0}, // ��
+ {0xB0E0, 0x73ED}, //{0xE7, 0x8F, 0xAD}, // ��
+ {0xC7F2, 0x7403}, //{0xE7, 0x90, 0x83}, // ��
+ {0xC0C5, 0x7405}, //{0xE7, 0x90, 0x85}, // ��
+ {0xC0ED, 0x7406}, //{0xE7, 0x90, 0x86}, // ��
+ {0xC1F0, 0x7409}, //{0xE7, 0x90, 0x89}, // ��
+ {0xCBF6, 0x7410}, //{0xE7, 0x90, 0x90}, // ��
+ {0xD7C1, 0x7422}, //{0xE7, 0x90, 0xA2}, // ��
+ {0xC1D5, 0x7433}, //{0xE7, 0x90, 0xB3}, // ��
+ {0xC7D9, 0x7434}, //{0xE7, 0x90, 0xB4}, // ��
+ {0xC7ED, 0x743C}, //{0xE7, 0x90, 0xBC}, // ��
+ {0xC8F0, 0x745E}, //{0xE7, 0x91, 0x9E}, // ��
{0xC9AA, 0x745F}, //{0xE7, 0x91, 0x9F}, // ɪ
- {0xB9E5, 0x7470}, //{0xE7, 0x91, 0xB0}, //
- {0xC1A7, 0x7483}, //{0xE7, 0x92, 0x83}, //
- {0xE8B5, 0x74A7}, //{0xE7, 0x92, 0xA7}, //
- {0xB9CF, 0x74DC}, //{0xE7, 0x93, 0x9C}, //
+ {0xB9E5, 0x7470}, //{0xE7, 0x91, 0xB0}, // ��
+ {0xC1A7, 0x7483}, //{0xE7, 0x92, 0x83}, // ��
+ {0xE8B5, 0x74A7}, //{0xE7, 0x92, 0xA7}, // �
+ {0xB9CF, 0x74DC}, //{0xE7, 0x93, 0x9C}, // ��
{0xC6B0, 0x74E2}, //{0xE7, 0x93, 0xA2}, // ư
- {0xB0EA, 0x74E3}, //{0xE7, 0x93, 0xA3}, //
+ {0xB0EA, 0x74E3}, //{0xE7, 0x93, 0xA3}, // ��
{0xC8BF, 0x74E4}, //{0xE7, 0x93, 0xA4}, // ȿ
- {0xCDDF, 0x74E6}, //{0xE7, 0x93, 0xA6}, //
- {0xCECD, 0x74EE}, //{0xE7, 0x93, 0xAE}, //
+ {0xCDDF, 0x74E6}, //{0xE7, 0x93, 0xA6}, // ��
+ {0xCECD, 0x74EE}, //{0xE7, 0x93, 0xAE}, // ��
{0xC6BF, 0x74F6}, //{0xE7, 0x93, 0xB6}, // ƿ
- {0xB4C9, 0x74F7}, //{0xE7, 0x93, 0xB7}, //
- {0xB8CA, 0x7518}, //{0xE7, 0x94, 0x98}, //
- {0xC9F5, 0x751A}, //{0xE7, 0x94, 0x9A}, //
- {0xCCF0, 0x751C}, //{0xE7, 0x94, 0x9C}, //
- {0xC9FA, 0x751F}, //{0xE7, 0x94, 0x9F}, //
- {0xC9FB, 0x7525}, //{0xE7, 0x94, 0xA5}, //
- {0xD3C3, 0x7528}, //{0xE7, 0x94, 0xA8}, //
+ {0xB4C9, 0x74F7}, //{0xE7, 0x93, 0xB7}, // ��
+ {0xB8CA, 0x7518}, //{0xE7, 0x94, 0x98}, // ��
+ {0xC9F5, 0x751A}, //{0xE7, 0x94, 0x9A}, // ��
+ {0xCCF0, 0x751C}, //{0xE7, 0x94, 0x9C}, // ��
+ {0xC9FA, 0x751F}, //{0xE7, 0x94, 0x9F}, // ��
+ {0xC9FB, 0x7525}, //{0xE7, 0x94, 0xA5}, // ��
+ {0xD3C3, 0x7528}, //{0xE7, 0x94, 0xA8}, // ��
{0xCBA6, 0x7529}, //{0xE7, 0x94, 0xA9}, // ˦
- {0xB8A6, 0x752B}, //{0xE7, 0x94, 0xAB}, //
- {0xCCEF, 0x7530}, //{0xE7, 0x94, 0xB0}, //
- {0xD3C9, 0x7531}, //{0xE7, 0x94, 0xB1}, //
- {0xBCD7, 0x7532}, //{0xE7, 0x94, 0xB2}, //
- {0xC9EA, 0x7533}, //{0xE7, 0x94, 0xB3}, //
- {0xB5E7, 0x7535}, //{0xE7, 0x94, 0xB5}, //
- {0xC4D0, 0x7537}, //{0xE7, 0x94, 0xB7}, //
- {0xB5E9, 0x7538}, //{0xE7, 0x94, 0xB8}, //
- {0xBBAD, 0x753B}, //{0xE7, 0x94, 0xBB}, //
- {0xB3A9, 0x7545}, //{0xE7, 0x95, 0x85}, //
- {0xBDE7, 0x754C}, //{0xE7, 0x95, 0x8C}, //
+ {0xB8A6, 0x752B}, //{0xE7, 0x94, 0xAB}, // ��
+ {0xCCEF, 0x7530}, //{0xE7, 0x94, 0xB0}, // ��
+ {0xD3C9, 0x7531}, //{0xE7, 0x94, 0xB1}, // ��
+ {0xBCD7, 0x7532}, //{0xE7, 0x94, 0xB2}, // ��
+ {0xC9EA, 0x7533}, //{0xE7, 0x94, 0xB3}, // ��
+ {0xB5E7, 0x7535}, //{0xE7, 0x94, 0xB5}, // ��
+ {0xC4D0, 0x7537}, //{0xE7, 0x94, 0xB7}, // ��
+ {0xB5E9, 0x7538}, //{0xE7, 0x94, 0xB8}, // ��
+ {0xBBAD, 0x753B}, //{0xE7, 0x94, 0xBB}, // ��
+ {0xB3A9, 0x7545}, //{0xE7, 0x95, 0x85}, // ��
+ {0xBDE7, 0x754C}, //{0xE7, 0x95, 0x8C}, // ��
{0xCEB7, 0x754F}, //{0xE7, 0x95, 0x8F}, // η
- {0xC5CF, 0x7554}, //{0xE7, 0x95, 0x94}, //
- {0xC1F4, 0x7559}, //{0xE7, 0x95, 0x99}, //
- {0xD0F3, 0x755C}, //{0xE7, 0x95, 0x9C}, //
- {0xC2D4, 0x7565}, //{0xE7, 0x95, 0xA5}, //
- {0xC6E8, 0x7566}, //{0xE7, 0x95, 0xA6}, //
- {0xB7AC, 0x756A}, //{0xE7, 0x95, 0xAA}, //
- {0xB3EB, 0x7574}, //{0xE7, 0x95, 0xB4}, //
- {0xBBFB, 0x7578}, //{0xE7, 0x95, 0xB8}, //
- {0xBDAE, 0x7586}, //{0xE7, 0x96, 0x86}, //
- {0xCAE8, 0x758F}, //{0xE7, 0x96, 0x8F}, //
- {0xD2C9, 0x7591}, //{0xE7, 0x96, 0x91}, //
- {0xC1C6, 0x7597}, //{0xE7, 0x96, 0x97}, //
- {0xB8ED, 0x7599}, //{0xE7, 0x96, 0x99}, //
- {0xBECE, 0x759A}, //{0xE7, 0x96, 0x9A}, //
+ {0xC5CF, 0x7554}, //{0xE7, 0x95, 0x94}, // ��
+ {0xC1F4, 0x7559}, //{0xE7, 0x95, 0x99}, // ��
+ {0xD0F3, 0x755C}, //{0xE7, 0x95, 0x9C}, // ��
+ {0xC2D4, 0x7565}, //{0xE7, 0x95, 0xA5}, // ��
+ {0xC6E8, 0x7566}, //{0xE7, 0x95, 0xA6}, // ��
+ {0xB7AC, 0x756A}, //{0xE7, 0x95, 0xAA}, // ��
+ {0xB3EB, 0x7574}, //{0xE7, 0x95, 0xB4}, // ��
+ {0xBBFB, 0x7578}, //{0xE7, 0x95, 0xB8}, // ��
+ {0xBDAE, 0x7586}, //{0xE7, 0x96, 0x86}, // ��
+ {0xCAE8, 0x758F}, //{0xE7, 0x96, 0x8F}, // ��
+ {0xD2C9, 0x7591}, //{0xE7, 0x96, 0x91}, // ��
+ {0xC1C6, 0x7597}, //{0xE7, 0x96, 0x97}, // ��
+ {0xB8ED, 0x7599}, //{0xE7, 0x96, 0x99}, // ��
+ {0xBECE, 0x759A}, //{0xE7, 0x96, 0x9A}, // ��
{0xC5B1, 0x759F}, //{0xE7, 0x96, 0x9F}, // ű
- {0xB0CC, 0x75A4}, //{0xE7, 0x96, 0xA4}, //
- {0xD2DF, 0x75AB}, //{0xE7, 0x96, 0xAB}, //
- {0xB4AF, 0x75AE}, //{0xE7, 0x96, 0xAE}, //
- {0xB7E8, 0x75AF}, //{0xE7, 0x96, 0xAF}, //
+ {0xB0CC, 0x75A4}, //{0xE7, 0x96, 0xA4}, // ��
+ {0xD2DF, 0x75AB}, //{0xE7, 0x96, 0xAB}, // ��
+ {0xB4AF, 0x75AE}, //{0xE7, 0x96, 0xAE}, // ��
+ {0xB7E8, 0x75AF}, //{0xE7, 0x96, 0xAF}, // ��
{0xC6A3, 0x75B2}, //{0xE7, 0x96, 0xB2}, // ƣ
- {0xD5EE, 0x75B9}, //{0xE7, 0x96, 0xB9}, //
- {0xCCDB, 0x75BC}, //{0xE7, 0x96, 0xBC}, //
- {0xBCB2, 0x75BE}, //{0xE7, 0x96, 0xBE}, //
- {0xB2A1, 0x75C5}, //{0xE7, 0x97, 0x85}, //
+ {0xD5EE, 0x75B9}, //{0xE7, 0x96, 0xB9}, // ��
+ {0xCCDB, 0x75BC}, //{0xE7, 0x96, 0xBC}, // ��
+ {0xBCB2, 0x75BE}, //{0xE7, 0x96, 0xBE}, // ��
+ {0xB2A1, 0x75C5}, //{0xE7, 0x97, 0x85}, // ��
{0xD6A2, 0x75C7}, //{0xE7, 0x97, 0x87}, // ֢
{0xC8AC, 0x75CA}, //{0xE7, 0x97, 0x8A}, // Ȭ
- {0xD1F7, 0x75D2}, //{0xE7, 0x97, 0x92}, //
- {0xBADB, 0x75D5}, //{0xE7, 0x97, 0x95}, //
- {0xB6BB, 0x75D8}, //{0xE7, 0x97, 0x98}, //
+ {0xD1F7, 0x75D2}, //{0xE7, 0x97, 0x92}, // ��
+ {0xBADB, 0x75D5}, //{0xE7, 0x97, 0x95}, // ��
+ {0xB6BB, 0x75D8}, //{0xE7, 0x97, 0x98}, // ��
{0xCDB4, 0x75DB}, //{0xE7, 0x97, 0x9B}, // ʹ
- {0xC1A1, 0x75E2}, //{0xE7, 0x97, 0xA2}, //
- {0xBBBE, 0x75EA}, //{0xE7, 0x97, 0xAA}, //
+ {0xC1A1, 0x75E2}, //{0xE7, 0x97, 0xA2}, // a
+ {0xBBBE, 0x75EA}, //{0xE7, 0x97, 0xAA}, // ��
{0xCCB5, 0x75F0}, //{0xE7, 0x97, 0xB0}, // ̵
- {0xB3D5, 0x75F4}, //{0xE7, 0x97, 0xB4}, //
- {0xB1D4, 0x75F9}, //{0xE7, 0x97, 0xB9}, //
- {0xCEC1, 0x761F}, //{0xE7, 0x98, 0x9F}, //
- {0xC1F6, 0x7624}, //{0xE7, 0x98, 0xA4}, //
- {0xCADD, 0x7626}, //{0xE7, 0x98, 0xA6}, //
- {0xB4F1, 0x7629}, //{0xE7, 0x98, 0xA9}, //
- {0xB1F1, 0x762A}, //{0xE7, 0x98, 0xAA}, //
+ {0xB3D5, 0x75F4}, //{0xE7, 0x97, 0xB4}, // ��
+ {0xB1D4, 0x75F9}, //{0xE7, 0x97, 0xB9}, // ��
+ {0xCEC1, 0x761F}, //{0xE7, 0x98, 0x9F}, // ��
+ {0xC1F6, 0x7624}, //{0xE7, 0x98, 0xA4}, // ��
+ {0xCADD, 0x7626}, //{0xE7, 0x98, 0xA6}, // ��
+ {0xB4F1, 0x7629}, //{0xE7, 0x98, 0xA9}, // ��
+ {0xB1F1, 0x762A}, //{0xE7, 0x98, 0xAA}, // ��
{0xCCB1, 0x762B}, //{0xE7, 0x98, 0xAB}, // ̱
{0xC8B3, 0x7638}, //{0xE7, 0x98, 0xB8}, // ȳ
- {0xF1AB, 0x763E}, //{0xE7, 0x98, 0xBE}, //
- {0xB0A9, 0x764C}, //{0xE7, 0x99, 0x8C}, //
- {0xF1AE, 0x765E}, //{0xE7, 0x99, 0x9E}, //
+ {0xF1AB, 0x763E}, //{0xE7, 0x98, 0xBE}, // �
+ {0xB0A9, 0x764C}, //{0xE7, 0x99, 0x8C}, // ��
+ {0xF1AE, 0x765E}, //{0xE7, 0x99, 0x9E}, // �
{0xD1A2, 0x7663}, //{0xE7, 0x99, 0xA3}, // Ѣ
- {0xB5C7, 0x767B}, //{0xE7, 0x99, 0xBB}, //
- {0xB0D7, 0x767D}, //{0xE7, 0x99, 0xBD}, //
- {0xB0D9, 0x767E}, //{0xE7, 0x99, 0xBE}, //
- {0xD4ED, 0x7682}, //{0xE7, 0x9A, 0x82}, //
- {0xB5C4, 0x7684}, //{0xE7, 0x9A, 0x84}, //
- {0xBDD4, 0x7686}, //{0xE7, 0x9A, 0x86}, //
- {0xBBCA, 0x7687}, //{0xE7, 0x9A, 0x87}, //
+ {0xB5C7, 0x767B}, //{0xE7, 0x99, 0xBB}, // ��
+ {0xB0D7, 0x767D}, //{0xE7, 0x99, 0xBD}, // ��
+ {0xB0D9, 0x767E}, //{0xE7, 0x99, 0xBE}, // ��
+ {0xD4ED, 0x7682}, //{0xE7, 0x9A, 0x82}, // ��
+ {0xB5C4, 0x7684}, //{0xE7, 0x9A, 0x84}, // ��
+ {0xBDD4, 0x7686}, //{0xE7, 0x9A, 0x86}, // ��
+ {0xBBCA, 0x7687}, //{0xE7, 0x9A, 0x87}, // ��
{0xC6A4, 0x76AE}, //{0xE7, 0x9A, 0xAE}, // Ƥ
- {0xD6E5, 0x76B1}, //{0xE7, 0x9A, 0xB1}, //
- {0xC3F3, 0x76BF}, //{0xE7, 0x9A, 0xBF}, //
- {0xD6D1, 0x76C5}, //{0xE7, 0x9B, 0x85}, //
- {0xC5E8, 0x76C6}, //{0xE7, 0x9B, 0x86}, //
+ {0xD6E5, 0x76B1}, //{0xE7, 0x9A, 0xB1}, // ��
+ {0xC3F3, 0x76BF}, //{0xE7, 0x9A, 0xBF}, // ��
+ {0xD6D1, 0x76C5}, //{0xE7, 0x9B, 0x85}, // ��
+ {0xC5E8, 0x76C6}, //{0xE7, 0x9B, 0x86}, // ��
{0xD3AF, 0x76C8}, //{0xE7, 0x9B, 0x88}, // ӯ
- {0xD2E6, 0x76CA}, //{0xE7, 0x9B, 0x8A}, //
+ {0xD2E6, 0x76CA}, //{0xE7, 0x9B, 0x8A}, // ��
{0xD5B5, 0x76CF}, //{0xE7, 0x9B, 0x8F}, // յ
- {0xD1CE, 0x76D0}, //{0xE7, 0x9B, 0x90}, //
- {0xBCE0, 0x76D1}, //{0xE7, 0x9B, 0x91}, //
- {0xBAD0, 0x76D2}, //{0xE7, 0x9B, 0x92}, //
- {0xBFF8, 0x76D4}, //{0xE7, 0x9B, 0x94}, //
- {0xB8C7, 0x76D6}, //{0xE7, 0x9B, 0x96}, //
- {0xB5C1, 0x76D7}, //{0xE7, 0x9B, 0x97}, //
- {0xC5CC, 0x76D8}, //{0xE7, 0x9B, 0x98}, //
+ {0xD1CE, 0x76D0}, //{0xE7, 0x9B, 0x90}, // ��
+ {0xBCE0, 0x76D1}, //{0xE7, 0x9B, 0x91}, // ��
+ {0xBAD0, 0x76D2}, //{0xE7, 0x9B, 0x92}, // ��
+ {0xBFF8, 0x76D4}, //{0xE7, 0x9B, 0x94}, // ��
+ {0xB8C7, 0x76D6}, //{0xE7, 0x9B, 0x96}, // ��
+ {0xB5C1, 0x76D7}, //{0xE7, 0x9B, 0x97}, // ��
+ {0xC5CC, 0x76D8}, //{0xE7, 0x9B, 0x98}, // ��
{0xCAA2, 0x76DB}, //{0xE7, 0x9B, 0x9B}, // ʢ
- {0xC3CB, 0x76DF}, //{0xE7, 0x9B, 0x9F}, //
+ {0xC3CB, 0x76DF}, //{0xE7, 0x9B, 0x9F}, // ��
{0xC4BF, 0x76EE}, //{0xE7, 0x9B, 0xAE}, // Ŀ
- {0xB6A2, 0x76EF}, //{0xE7, 0x9B, 0xAF}, //
+ {0xB6A2, 0x76EF}, //{0xE7, 0x9B, 0xAF}, // ��
{0xC3A4, 0x76F2}, //{0xE7, 0x9B, 0xB2}, // ä
{0xD6B1, 0x76F4}, //{0xE7, 0x9B, 0xB4}, // ֱ
- {0xCFE0, 0x76F8}, //{0xE7, 0x9B, 0xB8}, //
- {0xEDEF, 0x76F9}, //{0xE7, 0x9B, 0xB9}, //
- {0xC5CE, 0x76FC}, //{0xE7, 0x9B, 0xBC}, //
- {0xB6DC, 0x76FE}, //{0xE7, 0x9B, 0xBE}, //
+ {0xCFE0, 0x76F8}, //{0xE7, 0x9B, 0xB8}, // ��
+ {0xEDEF, 0x76F9}, //{0xE7, 0x9B, 0xB9}, // ��
+ {0xC5CE, 0x76FC}, //{0xE7, 0x9B, 0xBC}, // ��
+ {0xB6DC, 0x76FE}, //{0xE7, 0x9B, 0xBE}, // ��
{0xCAA1, 0x7701}, //{0xE7, 0x9C, 0x81}, // ʡ
{0xC3BC, 0x7709}, //{0xE7, 0x9C, 0x89}, // ü
- {0xBFB4, 0x770B}, //{0xE7, 0x9C, 0x8B}, //
- {0xD5E6, 0x771F}, //{0xE7, 0x9C, 0x9F}, //
- {0xC3DF, 0x7720}, //{0xE7, 0x9C, 0xA0}, //
+ {0xBFB4, 0x770B}, //{0xE7, 0x9C, 0x8B}, // ��
+ {0xD5E6, 0x771F}, //{0xE7, 0x9C, 0x9F}, // ��
+ {0xC3DF, 0x7720}, //{0xE7, 0x9C, 0xA0}, // ��
{0xD5A3, 0x7728}, //{0xE7, 0x9C, 0xA8}, // գ
- {0xC3D0, 0x772F}, //{0xE7, 0x9C, 0xAF}, //
- {0xBFF4, 0x7736}, //{0xE7, 0x9C, 0xB6}, //
- {0xBEEC, 0x7737}, //{0xE7, 0x9C, 0xB7}, //
- {0xD1DB, 0x773C}, //{0xE7, 0x9C, 0xBC}, //
- {0xD7C5, 0x7740}, //{0xE7, 0x9D, 0x80}, //
- {0xD5F6, 0x7741}, //{0xE7, 0x9D, 0x81}, //
- {0xBEA6, 0x775B}, //{0xE7, 0x9D, 0x9B}, //
+ {0xC3D0, 0x772F}, //{0xE7, 0x9C, 0xAF}, // ��
+ {0xBFF4, 0x7736}, //{0xE7, 0x9C, 0xB6}, // ��
+ {0xBEEC, 0x7737}, //{0xE7, 0x9C, 0xB7}, // ��
+ {0xD1DB, 0x773C}, //{0xE7, 0x9C, 0xBC}, // ��
+ {0xD7C5, 0x7740}, //{0xE7, 0x9D, 0x80}, // ��
+ {0xD5F6, 0x7741}, //{0xE7, 0x9D, 0x81}, // ��
+ {0xBEA6, 0x775B}, //{0xE7, 0x9D, 0x9B}, // ��
{0xCBAF, 0x7761}, //{0xE7, 0x9D, 0xA1}, // ˯
- {0xB6BD, 0x7763}, //{0xE7, 0x9D, 0xA3}, //
- {0xC4C0, 0x7766}, //{0xE7, 0x9D, 0xA6}, //
- {0xB2C7, 0x776C}, //{0xE7, 0x9D, 0xAC}, //
- {0xB6C3, 0x7779}, //{0xE7, 0x9D, 0xB9}, //
- {0xC3E9, 0x7784}, //{0xE7, 0x9E, 0x84}, //
+ {0xB6BD, 0x7763}, //{0xE7, 0x9D, 0xA3}, // ��
+ {0xC4C0, 0x7766}, //{0xE7, 0x9D, 0xA6}, // ��
+ {0xB2C7, 0x776C}, //{0xE7, 0x9D, 0xAC}, // ��
+ {0xB6C3, 0x7779}, //{0xE7, 0x9D, 0xB9}, // ��
+ {0xC3E9, 0x7784}, //{0xE7, 0x9E, 0x84}, // ��
{0xCFB9, 0x778E}, //{0xE7, 0x9E, 0x8E}, // Ϲ
- {0xC2F7, 0x7792}, //{0xE7, 0x9E, 0x92}, //
- {0xC7C6, 0x77A7}, //{0xE7, 0x9E, 0xA7}, //
- {0xB5C9, 0x77AA}, //{0xE7, 0x9E, 0xAA}, //
+ {0xC2F7, 0x7792}, //{0xE7, 0x9E, 0x92}, // ��
+ {0xC7C6, 0x77A7}, //{0xE7, 0x9E, 0xA7}, // ��
+ {0xB5C9, 0x77AA}, //{0xE7, 0x9E, 0xAA}, // ��
{0xCBB2, 0x77AC}, //{0xE7, 0x9E, 0xAC}, // ˲
{0xCDAB, 0x77B3}, //{0xE7, 0x9E, 0xB3}, // ͫ
{0xD5B0, 0x77BB}, //{0xE7, 0x9E, 0xBB}, // հ
- {0xB4A3, 0x77D7}, //{0xE7, 0x9F, 0x97}, //
+ {0xB4A3, 0x77D7}, //{0xE7, 0x9F, 0x97}, // ��
{0xC3AC, 0x77DB}, //{0xE7, 0x9F, 0x9B}, // ì
{0xCAB8, 0x77E2}, //{0xE7, 0x9F, 0xA2}, // ʸ
{0xD6AA, 0x77E5}, //{0xE7, 0x9F, 0xA5}, // ֪
- {0xBED8, 0x77E9}, //{0xE7, 0x9F, 0xA9}, //
- {0xBDC3, 0x77EB}, //{0xE7, 0x9F, 0xAB}, //
- {0xB6CC, 0x77ED}, //{0xE7, 0x9F, 0xAD}, //
- {0xB0AB, 0x77EE}, //{0xE7, 0x9F, 0xAE}, //
+ {0xBED8, 0x77E9}, //{0xE7, 0x9F, 0xA9}, // ��
+ {0xBDC3, 0x77EB}, //{0xE7, 0x9F, 0xAB}, // ��
+ {0xB6CC, 0x77ED}, //{0xE7, 0x9F, 0xAD}, // ��
+ {0xB0AB, 0x77EE}, //{0xE7, 0x9F, 0xAE}, // ��
{0xCAAF, 0x77F3}, //{0xE7, 0x9F, 0xB3}, // ʯ
- {0xB7AF, 0x77FE}, //{0xE7, 0x9F, 0xBE}, //
- {0xBFF3, 0x77FF}, //{0xE7, 0x9F, 0xBF}, //
- {0xC2EB, 0x7801}, //{0xE7, 0xA0, 0x81}, //
+ {0xB7AF, 0x77FE}, //{0xE7, 0x9F, 0xBE}, // ��
+ {0xBFF3, 0x77FF}, //{0xE7, 0x9F, 0xBF}, // ��
+ {0xC2EB, 0x7801}, //{0xE7, 0xA0, 0x81}, // ��
{0xC9B0, 0x7802}, //{0xE7, 0xA0, 0x82}, // ɰ
- {0xC6F6, 0x780C}, //{0xE7, 0xA0, 0x8C}, //
- {0xBFB3, 0x780D}, //{0xE7, 0xA0, 0x8D}, //
- {0xD1D0, 0x7814}, //{0xE7, 0xA0, 0x94}, //
+ {0xC6F6, 0x780C}, //{0xE7, 0xA0, 0x8C}, // ��
+ {0xBFB3, 0x780D}, //{0xE7, 0xA0, 0x8D}, // ��
+ {0xD1D0, 0x7814}, //{0xE7, 0xA0, 0x94}, // ��
{0xD7A9, 0x7816}, //{0xE7, 0xA0, 0x96}, // ש
- {0xD1E2, 0x781A}, //{0xE7, 0xA0, 0x9A}, //
- {0xC5E9, 0x7830}, //{0xE7, 0xA0, 0xB0}, //
- {0xC6C6, 0x7834}, //{0xE7, 0xA0, 0xB4}, //
- {0xD4D2, 0x7838}, //{0xE7, 0xA0, 0xB8}, //
- {0xC0F9, 0x783E}, //{0xE7, 0xA0, 0xBE}, //
- {0xB4A1, 0x7840}, //{0xE7, 0xA1, 0x80}, //
- {0xB9E8, 0x7845}, //{0xE7, 0xA1, 0x85}, //
+ {0xD1E2, 0x781A}, //{0xE7, 0xA0, 0x9A}, // ��
+ {0xC5E9, 0x7830}, //{0xE7, 0xA0, 0xB0}, // ��
+ {0xC6C6, 0x7834}, //{0xE7, 0xA0, 0xB4}, // ��
+ {0xD4D2, 0x7838}, //{0xE7, 0xA0, 0xB8}, // ��
+ {0xC0F9, 0x783E}, //{0xE7, 0xA0, 0xBE}, // ��
+ {0xB4A1, 0x7840}, //{0xE7, 0xA1, 0x80}, // ��
+ {0xB9E8, 0x7845}, //{0xE7, 0xA1, 0x85}, // ��
{0xCBB6, 0x7855}, //{0xE7, 0xA1, 0x95}, // ˶
- {0xCFF5, 0x785D}, //{0xE7, 0xA1, 0x9D}, //
- {0xC1F2, 0x786B}, //{0xE7, 0xA1, 0xAB}, //
+ {0xCFF5, 0x785D}, //{0xE7, 0xA1, 0x9D}, // ��
+ {0xC1F2, 0x786B}, //{0xE7, 0xA1, 0xAB}, // ��
{0xD3B2, 0x786C}, //{0xE7, 0xA1, 0xAC}, // Ӳ
{0xC8B7, 0x786E}, //{0xE7, 0xA1, 0xAE}, // ȷ
- {0xC5F0, 0x787C}, //{0xE7, 0xA1, 0xBC}, //
- {0xB5EF, 0x7889}, //{0xE7, 0xA2, 0x89}, //
+ {0xC5F0, 0x787C}, //{0xE7, 0xA1, 0xBC}, // ��
+ {0xB5EF, 0x7889}, //{0xE7, 0xA2, 0x89}, // ��
{0xC2B5, 0x788C}, //{0xE7, 0xA2, 0x8C}, // µ
- {0xB0AD, 0x788D}, //{0xE7, 0xA2, 0x8D}, //
- {0xCBE9, 0x788E}, //{0xE7, 0xA2, 0x8E}, //
- {0xB1AE, 0x7891}, //{0xE7, 0xA2, 0x91}, //
- {0xCDEB, 0x7897}, //{0xE7, 0xA2, 0x97}, //
- {0xB5E2, 0x7898}, //{0xE7, 0xA2, 0x98}, //
- {0xB5FA, 0x789F}, //{0xE7, 0xA2, 0x9F}, //
- {0xB1CC, 0x78A7}, //{0xE7, 0xA2, 0xA7}, //
- {0xC5F6, 0x78B0}, //{0xE7, 0xA2, 0xB0}, //
- {0xBCEE, 0x78B1}, //{0xE7, 0xA2, 0xB1}, //
+ {0xB0AD, 0x788D}, //{0xE7, 0xA2, 0x8D}, // ��
+ {0xCBE9, 0x788E}, //{0xE7, 0xA2, 0x8E}, // ��
+ {0xB1AE, 0x7891}, //{0xE7, 0xA2, 0x91}, // ��
+ {0xCDEB, 0x7897}, //{0xE7, 0xA2, 0x97}, // ��
+ {0xB5E2, 0x7898}, //{0xE7, 0xA2, 0x98}, // ��
+ {0xB5FA, 0x789F}, //{0xE7, 0xA2, 0x9F}, // ��
+ {0xB1CC, 0x78A7}, //{0xE7, 0xA2, 0xA7}, // ��
+ {0xC5F6, 0x78B0}, //{0xE7, 0xA2, 0xB0}, // ��
+ {0xBCEE, 0x78B1}, //{0xE7, 0xA2, 0xB1}, // ��
{0xCCBC, 0x78B3}, //{0xE7, 0xA2, 0xB3}, // ̼
- {0xB2EA, 0x78B4}, //{0xE7, 0xA2, 0xB4}, //
- {0xC4EB, 0x78BE}, //{0xE7, 0xA2, 0xBE}, //
- {0xB4C5, 0x78C1}, //{0xE7, 0xA3, 0x81}, //
- {0xB0F5, 0x78C5}, //{0xE7, 0xA3, 0x85}, //
- {0xBFC4, 0x78D5}, //{0xE7, 0xA3, 0x95}, //
+ {0xB2EA, 0x78B4}, //{0xE7, 0xA2, 0xB4}, // ��
+ {0xC4EB, 0x78BE}, //{0xE7, 0xA2, 0xBE}, // ��
+ {0xB4C5, 0x78C1}, //{0xE7, 0xA3, 0x81}, // ��
+ {0xB0F5, 0x78C5}, //{0xE7, 0xA3, 0x85}, // ��
+ {0xBFC4, 0x78D5}, //{0xE7, 0xA3, 0x95}, // ��
{0xC4A5, 0x78E8}, //{0xE7, 0xA3, 0xA8}, // ĥ
- {0xC1D7, 0x78F7}, //{0xE7, 0xA3, 0xB7}, //
- {0xBBC7, 0x78FA}, //{0xE7, 0xA3, 0xBA}, //
- {0xBDB8, 0x7901}, //{0xE7, 0xA4, 0x81}, //
+ {0xC1D7, 0x78F7}, //{0xE7, 0xA3, 0xB7}, // ��
+ {0xBBC7, 0x78FA}, //{0xE7, 0xA3, 0xBA}, // ��
+ {0xBDB8, 0x7901}, //{0xE7, 0xA4, 0x81}, // ��
{0xCABE, 0x793A}, //{0xE7, 0xA4, 0xBA}, // ʾ
- {0xC0F1, 0x793C}, //{0xE7, 0xA4, 0xBC}, //
- {0xC9E7, 0x793E}, //{0xE7, 0xA4, 0xBE}, //
- {0xC6ED, 0x7948}, //{0xE7, 0xA5, 0x88}, //
- {0xD7E6, 0x7956}, //{0xE7, 0xA5, 0x96}, //
+ {0xC0F1, 0x793C}, //{0xE7, 0xA4, 0xBC}, // ��
+ {0xC9E7, 0x793E}, //{0xE7, 0xA4, 0xBE}, // ��
+ {0xC6ED, 0x7948}, //{0xE7, 0xA5, 0x88}, // ��
+ {0xD7E6, 0x7956}, //{0xE7, 0xA5, 0x96}, // ��
{0xD7A3, 0x795D}, //{0xE7, 0xA5, 0x9D}, // ף
- {0xC9F1, 0x795E}, //{0xE7, 0xA5, 0x9E}, //
- {0xCBEE, 0x795F}, //{0xE7, 0xA5, 0x9F}, //
- {0xECF4, 0x7960}, //{0xE7, 0xA5, 0xA0}, //
- {0xCFE9, 0x7965}, //{0xE7, 0xA5, 0xA5}, //
+ {0xC9F1, 0x795E}, //{0xE7, 0xA5, 0x9E}, // ��
+ {0xCBEE, 0x795F}, //{0xE7, 0xA5, 0x9F}, // ��
+ {0xECF4, 0x7960}, //{0xE7, 0xA5, 0xA0}, // ��
+ {0xCFE9, 0x7965}, //{0xE7, 0xA5, 0xA5}, // ��
{0xC6B1, 0x7968}, //{0xE7, 0xA5, 0xA8}, // Ʊ
- {0xBCC0, 0x796D}, //{0xE7, 0xA5, 0xAD}, //
- {0xB5BB, 0x7977}, //{0xE7, 0xA5, 0xB7}, //
- {0xBBF6, 0x7978}, //{0xE7, 0xA5, 0xB8}, //
- {0xD9F7, 0x7980}, //{0xE7, 0xA6, 0x80}, //
- {0xBDFB, 0x7981}, //{0xE7, 0xA6, 0x81}, //
- {0xB8A3, 0x798F}, //{0xE7, 0xA6, 0x8F}, //
- {0xC0EB, 0x79BB}, //{0xE7, 0xA6, 0xBB}, //
- {0xC7DD, 0x79BD}, //{0xE7, 0xA6, 0xBD}, //
- {0xBACC, 0x79BE}, //{0xE7, 0xA6, 0xBE}, //
- {0xD0E3, 0x79C0}, //{0xE7, 0xA7, 0x80}, //
+ {0xBCC0, 0x796D}, //{0xE7, 0xA5, 0xAD}, // ��
+ {0xB5BB, 0x7977}, //{0xE7, 0xA5, 0xB7}, // ��
+ {0xBBF6, 0x7978}, //{0xE7, 0xA5, 0xB8}, // ��
+ {0xD9F7, 0x7980}, //{0xE7, 0xA6, 0x80}, // ��
+ {0xBDFB, 0x7981}, //{0xE7, 0xA6, 0x81}, // ��
+ {0xB8A3, 0x798F}, //{0xE7, 0xA6, 0x8F}, // ��
+ {0xC0EB, 0x79BB}, //{0xE7, 0xA6, 0xBB}, // ��
+ {0xC7DD, 0x79BD}, //{0xE7, 0xA6, 0xBD}, // ��
+ {0xBACC, 0x79BE}, //{0xE7, 0xA6, 0xBE}, // ��
+ {0xD0E3, 0x79C0}, //{0xE7, 0xA7, 0x80}, // ��
{0xCBBD, 0x79C1}, //{0xE7, 0xA7, 0x81}, // ˽
{0xCDBA, 0x79C3}, //{0xE7, 0xA7, 0x83}, // ͺ
- {0xB8D1, 0x79C6}, //{0xE7, 0xA7, 0x86}, //
- {0xB1FC, 0x79C9}, //{0xE7, 0xA7, 0x89}, //
- {0xC7EF, 0x79CB}, //{0xE7, 0xA7, 0x8B}, //
- {0xD6D6, 0x79CD}, //{0xE7, 0xA7, 0x8D}, //
- {0xBFC6, 0x79D1}, //{0xE7, 0xA7, 0x91}, //
- {0xC3EB, 0x79D2}, //{0xE7, 0xA7, 0x92}, //
- {0xEFF5, 0x79D5}, //{0xE7, 0xA7, 0x95}, //
- {0xC3D8, 0x79D8}, //{0xE7, 0xA7, 0x98}, //
- {0xD7E2, 0x79DF}, //{0xE7, 0xA7, 0x9F}, //
- {0xB3D3, 0x79E4}, //{0xE7, 0xA7, 0xA4}, //
- {0xC7D8, 0x79E6}, //{0xE7, 0xA7, 0xA6}, //
- {0xD1ED, 0x79E7}, //{0xE7, 0xA7, 0xA7}, //
- {0xD6C8, 0x79E9}, //{0xE7, 0xA7, 0xA9}, //
- {0xEFF8, 0x79EB}, //{0xE7, 0xA7, 0xAB}, //
- {0xBBFD, 0x79EF}, //{0xE7, 0xA7, 0xAF}, //
- {0xB3C6, 0x79F0}, //{0xE7, 0xA7, 0xB0}, //
- {0xBDD5, 0x79F8}, //{0xE7, 0xA7, 0xB8}, //
- {0xD2C6, 0x79FB}, //{0xE7, 0xA7, 0xBB}, //
- {0xBBE0, 0x79FD}, //{0xE7, 0xA7, 0xBD}, //
+ {0xB8D1, 0x79C6}, //{0xE7, 0xA7, 0x86}, // ��
+ {0xB1FC, 0x79C9}, //{0xE7, 0xA7, 0x89}, // ��
+ {0xC7EF, 0x79CB}, //{0xE7, 0xA7, 0x8B}, // ��
+ {0xD6D6, 0x79CD}, //{0xE7, 0xA7, 0x8D}, // ��
+ {0xBFC6, 0x79D1}, //{0xE7, 0xA7, 0x91}, // ��
+ {0xC3EB, 0x79D2}, //{0xE7, 0xA7, 0x92}, // ��
+ {0xEFF5, 0x79D5}, //{0xE7, 0xA7, 0x95}, // ��
+ {0xC3D8, 0x79D8}, //{0xE7, 0xA7, 0x98}, // ��
+ {0xD7E2, 0x79DF}, //{0xE7, 0xA7, 0x9F}, // ��
+ {0xB3D3, 0x79E4}, //{0xE7, 0xA7, 0xA4}, // ��
+ {0xC7D8, 0x79E6}, //{0xE7, 0xA7, 0xA6}, // ��
+ {0xD1ED, 0x79E7}, //{0xE7, 0xA7, 0xA7}, // ��
+ {0xD6C8, 0x79E9}, //{0xE7, 0xA7, 0xA9}, // ��
+ {0xEFF8, 0x79EB}, //{0xE7, 0xA7, 0xAB}, // ��
+ {0xBBFD, 0x79EF}, //{0xE7, 0xA7, 0xAF}, // ��
+ {0xB3C6, 0x79F0}, //{0xE7, 0xA7, 0xB0}, // ��
+ {0xBDD5, 0x79F8}, //{0xE7, 0xA7, 0xB8}, // ��
+ {0xD2C6, 0x79FB}, //{0xE7, 0xA7, 0xBB}, // ��
+ {0xBBE0, 0x79FD}, //{0xE7, 0xA7, 0xBD}, // ��
{0xCFA1, 0x7A00}, //{0xE7, 0xA8, 0x80}, // ϡ
- {0xB3CC, 0x7A0B}, //{0xE7, 0xA8, 0x8B}, //
- {0xC9D4, 0x7A0D}, //{0xE7, 0xA8, 0x8D}, //
+ {0xB3CC, 0x7A0B}, //{0xE7, 0xA8, 0x8B}, // ��
+ {0xC9D4, 0x7A0D}, //{0xE7, 0xA8, 0x8D}, // ��
{0xCBB0, 0x7A0E}, //{0xE7, 0xA8, 0x8E}, // ˰
- {0xD6C9, 0x7A1A}, //{0xE7, 0xA8, 0x9A}, //
- {0xB3ED, 0x7A20}, //{0xE7, 0xA8, 0xA0}, //
- {0xCEC8, 0x7A33}, //{0xE7, 0xA8, 0xB3}, //
- {0xB5BE, 0x7A3B}, //{0xE7, 0xA8, 0xBB}, //
- {0xBCDA, 0x7A3C}, //{0xE7, 0xA8, 0xBC}, //
- {0xBBFC, 0x7A3D}, //{0xE7, 0xA8, 0xBD}, //
- {0xB8E5, 0x7A3F}, //{0xE7, 0xA8, 0xBF}, //
- {0xC4C2, 0x7A46}, //{0xE7, 0xA9, 0x86}, //
- {0xCBEB, 0x7A57}, //{0xE7, 0xA9, 0x97}, //
+ {0xD6C9, 0x7A1A}, //{0xE7, 0xA8, 0x9A}, // ��
+ {0xB3ED, 0x7A20}, //{0xE7, 0xA8, 0xA0}, // ��
+ {0xCEC8, 0x7A33}, //{0xE7, 0xA8, 0xB3}, // ��
+ {0xB5BE, 0x7A3B}, //{0xE7, 0xA8, 0xBB}, // ��
+ {0xBCDA, 0x7A3C}, //{0xE7, 0xA8, 0xBC}, // ��
+ {0xBBFC, 0x7A3D}, //{0xE7, 0xA8, 0xBD}, // ��
+ {0xB8E5, 0x7A3F}, //{0xE7, 0xA8, 0xBF}, // ��
+ {0xC4C2, 0x7A46}, //{0xE7, 0xA9, 0x86}, // ��
+ {0xCBEB, 0x7A57}, //{0xE7, 0xA9, 0x97}, // ��
{0xD1A8, 0x7A74}, //{0xE7, 0xA9, 0xB4}, // Ѩ
- {0xBEBF, 0x7A76}, //{0xE7, 0xA9, 0xB6}, //
- {0xC7EE, 0x7A77}, //{0xE7, 0xA9, 0xB7}, //
- {0xBFD5, 0x7A7A}, //{0xE7, 0xA9, 0xBA}, //
- {0xB4A9, 0x7A7F}, //{0xE7, 0xA9, 0xBF}, //
+ {0xBEBF, 0x7A76}, //{0xE7, 0xA9, 0xB6}, // ��
+ {0xC7EE, 0x7A77}, //{0xE7, 0xA9, 0xB7}, // ��
+ {0xBFD5, 0x7A7A}, //{0xE7, 0xA9, 0xBA}, // ��
+ {0xB4A9, 0x7A7F}, //{0xE7, 0xA9, 0xBF}, // ��
{0xCDBB, 0x7A81}, //{0xE7, 0xAA, 0x81}, // ͻ
- {0xC7D4, 0x7A83}, //{0xE7, 0xAA, 0x83}, //
+ {0xC7D4, 0x7A83}, //{0xE7, 0xAA, 0x83}, // ��
{0xD5AD, 0x7A84}, //{0xE7, 0xAA, 0x84}, // խ
- {0xC7CF, 0x7A8D}, //{0xE7, 0xAA, 0x8D}, //
+ {0xC7CF, 0x7A8D}, //{0xE7, 0xAA, 0x8D}, // ��
{0xD2A4, 0x7A91}, //{0xE7, 0xAA, 0x91}, // Ҥ
- {0xD6CF, 0x7A92}, //{0xE7, 0xAA, 0x92}, //
- {0xBDD1, 0x7A96}, //{0xE7, 0xAA, 0x96}, //
- {0xB4B0, 0x7A97}, //{0xE7, 0xAA, 0x97}, //
- {0xBEBD, 0x7A98}, //{0xE7, 0xAA, 0x98}, //
- {0xB4DC, 0x7A9C}, //{0xE7, 0xAA, 0x9C}, //
- {0xCED1, 0x7A9D}, //{0xE7, 0xAA, 0x9D}, //
- {0xBFDF, 0x7A9F}, //{0xE7, 0xAA, 0x9F}, //
- {0xBFFA, 0x7AA5}, //{0xE7, 0xAA, 0xA5}, //
- {0xC1FE, 0x7ABF}, //{0xE7, 0xAA, 0xBF}, //
- {0xC1A2, 0x7ACB}, //{0xE7, 0xAB, 0x8B}, //
- {0xCAFA, 0x7AD6}, //{0xE7, 0xAB, 0x96}, //
+ {0xD6CF, 0x7A92}, //{0xE7, 0xAA, 0x92}, // ��
+ {0xBDD1, 0x7A96}, //{0xE7, 0xAA, 0x96}, // ��
+ {0xB4B0, 0x7A97}, //{0xE7, 0xAA, 0x97}, // ��
+ {0xBEBD, 0x7A98}, //{0xE7, 0xAA, 0x98}, // ��
+ {0xB4DC, 0x7A9C}, //{0xE7, 0xAA, 0x9C}, // ��
+ {0xCED1, 0x7A9D}, //{0xE7, 0xAA, 0x9D}, // ��
+ {0xBFDF, 0x7A9F}, //{0xE7, 0xAA, 0x9F}, // ��
+ {0xBFFA, 0x7AA5}, //{0xE7, 0xAA, 0xA5}, // ��
+ {0xC1FE, 0x7ABF}, //{0xE7, 0xAA, 0xBF}, // ��
+ {0xC1A2, 0x7ACB}, //{0xE7, 0xAB, 0x8B}, // b
+ {0xCAFA, 0x7AD6}, //{0xE7, 0xAB, 0x96}, // ��
{0xD5BE, 0x7AD9}, //{0xE7, 0xAB, 0x99}, // վ
- {0xBEBA, 0x7ADE}, //{0xE7, 0xAB, 0x9E}, //
- {0xBEB9, 0x7ADF}, //{0xE7, 0xAB, 0x9F}, //
- {0xD5C2, 0x7AE0}, //{0xE7, 0xAB, 0xA0}, //
- {0xBFA2, 0x7AE3}, //{0xE7, 0xAB, 0xA3}, //
+ {0xBEBA, 0x7ADE}, //{0xE7, 0xAB, 0x9E}, // ��
+ {0xBEB9, 0x7ADF}, //{0xE7, 0xAB, 0x9F}, // ��
+ {0xD5C2, 0x7AE0}, //{0xE7, 0xAB, 0xA0}, // ��
+ {0xBFA2, 0x7AE3}, //{0xE7, 0xAB, 0xA3}, // ��
{0xCDAF, 0x7AE5}, //{0xE7, 0xAB, 0xA5}, // ͯ
- {0xBDDF, 0x7AED}, //{0xE7, 0xAB, 0xAD}, //
- {0xB6CB, 0x7AEF}, //{0xE7, 0xAB, 0xAF}, //
- {0xD6F1, 0x7AF9}, //{0xE7, 0xAB, 0xB9}, //
- {0xB8CD, 0x7AFF}, //{0xE7, 0xAB, 0xBF}, //
- {0xB0CA, 0x7B06}, //{0xE7, 0xAC, 0x86}, //
- {0xCBF1, 0x7B0B}, //{0xE7, 0xAC, 0x8B}, //
+ {0xBDDF, 0x7AED}, //{0xE7, 0xAB, 0xAD}, // ��
+ {0xB6CB, 0x7AEF}, //{0xE7, 0xAB, 0xAF}, // ��
+ {0xD6F1, 0x7AF9}, //{0xE7, 0xAB, 0xB9}, // ��
+ {0xB8CD, 0x7AFF}, //{0xE7, 0xAB, 0xBF}, // ��
+ {0xB0CA, 0x7B06}, //{0xE7, 0xAC, 0x86}, // ��
+ {0xCBF1, 0x7B0B}, //{0xE7, 0xAC, 0x8B}, // ��
{0xD0A6, 0x7B11}, //{0xE7, 0xAC, 0x91}, // Ц
- {0xB1CA, 0x7B14}, //{0xE7, 0xAC, 0x94}, //
- {0xF3CF, 0x7B19}, //{0xE7, 0xAC, 0x99}, //
- {0xB5D1, 0x7B1B}, //{0xE7, 0xAC, 0x9B}, //
- {0xF3D4, 0x7B24}, //{0xE7, 0xAC, 0xA4}, //
- {0xB7FB, 0x7B26}, //{0xE7, 0xAC, 0xA6}, //
- {0xB1BF, 0x7B28}, //{0xE7, 0xAC, 0xA8}, //
- {0xB5DA, 0x7B2C}, //{0xE7, 0xAC, 0xAC}, //
- {0xC1FD, 0x7B3C}, //{0xE7, 0xAC, 0xBC}, //
- {0xB5C8, 0x7B49}, //{0xE7, 0xAD, 0x89}, //
- {0xBDEE, 0x7B4B}, //{0xE7, 0xAD, 0x8B}, //
- {0xB7A4, 0x7B4F}, //{0xE7, 0xAD, 0x8F}, //
- {0xBFF0, 0x7B50}, //{0xE7, 0xAD, 0x90}, //
- {0xD6FE, 0x7B51}, //{0xE7, 0xAD, 0x91}, //
+ {0xB1CA, 0x7B14}, //{0xE7, 0xAC, 0x94}, // ��
+ {0xF3CF, 0x7B19}, //{0xE7, 0xAC, 0x99}, // ��
+ {0xB5D1, 0x7B1B}, //{0xE7, 0xAC, 0x9B}, // ��
+ {0xF3D4, 0x7B24}, //{0xE7, 0xAC, 0xA4}, // ��
+ {0xB7FB, 0x7B26}, //{0xE7, 0xAC, 0xA6}, // ��
+ {0xB1BF, 0x7B28}, //{0xE7, 0xAC, 0xA8}, // ��
+ {0xB5DA, 0x7B2C}, //{0xE7, 0xAC, 0xAC}, // ��
+ {0xC1FD, 0x7B3C}, //{0xE7, 0xAC, 0xBC}, // ��
+ {0xB5C8, 0x7B49}, //{0xE7, 0xAD, 0x89}, // ��
+ {0xBDEE, 0x7B4B}, //{0xE7, 0xAD, 0x8B}, // ��
+ {0xB7A4, 0x7B4F}, //{0xE7, 0xAD, 0x8F}, // ��
+ {0xBFF0, 0x7B50}, //{0xE7, 0xAD, 0x90}, // ��
+ {0xD6FE, 0x7B51}, //{0xE7, 0xAD, 0x91}, // ��
{0xCDB2, 0x7B52}, //{0xE7, 0xAD, 0x92}, // Ͳ
- {0xB4F0, 0x7B54}, //{0xE7, 0xAD, 0x94}, //
- {0xB2DF, 0x7B56}, //{0xE7, 0xAD, 0x96}, //
+ {0xB4F0, 0x7B54}, //{0xE7, 0xAD, 0x94}, // ��
+ {0xB2DF, 0x7B56}, //{0xE7, 0xAD, 0x96}, // ��
{0xC9B8, 0x7B5B}, //{0xE7, 0xAD, 0x9B}, // ɸ
- {0xF3DD, 0x7B5D}, //{0xE7, 0xAD, 0x9D}, //
- {0xBFEA, 0x7B77}, //{0xE7, 0xAD, 0xB7}, //
- {0xB3EF, 0x7B79}, //{0xE7, 0xAD, 0xB9}, //
+ {0xF3DD, 0x7B5D}, //{0xE7, 0xAD, 0x9D}, // ��
+ {0xBFEA, 0x7B77}, //{0xE7, 0xAD, 0xB7}, // ��
+ {0xB3EF, 0x7B79}, //{0xE7, 0xAD, 0xB9}, // ��
{0xC7A9, 0x7B7E}, //{0xE7, 0xAD, 0xBE}, // ǩ
- {0xBCF2, 0x7B80}, //{0xE7, 0xAE, 0x80}, //
- {0xB9BF, 0x7B8D}, //{0xE7, 0xAE, 0x8D}, //
- {0xBBFE, 0x7B95}, //{0xE7, 0xAE, 0x95}, //
- {0xCBE3, 0x7B97}, //{0xE7, 0xAE, 0x97}, //
- {0xB9DC, 0x7BA1}, //{0xE7, 0xAE, 0xA1}, //
- {0xC2E1, 0x7BA9}, //{0xE7, 0xAE, 0xA9}, //
- {0xF3EF, 0x7BAB}, //{0xE7, 0xAE, 0xAB}, //
- {0xBCFD, 0x7BAD}, //{0xE7, 0xAE, 0xAD}, //
- {0xCFE4, 0x7BB1}, //{0xE7, 0xAE, 0xB1}, //
+ {0xBCF2, 0x7B80}, //{0xE7, 0xAE, 0x80}, // ��
+ {0xB9BF, 0x7B8D}, //{0xE7, 0xAE, 0x8D}, // ��
+ {0xBBFE, 0x7B95}, //{0xE7, 0xAE, 0x95}, // ��
+ {0xCBE3, 0x7B97}, //{0xE7, 0xAE, 0x97}, // ��
+ {0xB9DC, 0x7BA1}, //{0xE7, 0xAE, 0xA1}, // ��
+ {0xC2E1, 0x7BA9}, //{0xE7, 0xAE, 0xA9}, // ��
+ {0xF3EF, 0x7BAB}, //{0xE7, 0xAE, 0xAB}, // ��
+ {0xBCFD, 0x7BAD}, //{0xE7, 0xAE, 0xAD}, // ��
+ {0xCFE4, 0x7BB1}, //{0xE7, 0xAE, 0xB1}, // ��
{0xC6AA, 0x7BC7}, //{0xE7, 0xAF, 0x87}, // ƪ
{0xC2A8, 0x7BD3}, //{0xE7, 0xAF, 0x93}, // ¨
- {0xB8DD, 0x7BD9}, //{0xE7, 0xAF, 0x99}, //
- {0xB4DB, 0x7BE1}, //{0xE7, 0xAF, 0xA1}, //
- {0xC0BA, 0x7BEE}, //{0xE7, 0xAF, 0xAE}, //
- {0xC0E9, 0x7BF1}, //{0xE7, 0xAF, 0xB1}, //
- {0xC5F1, 0x7BF7}, //{0xE7, 0xAF, 0xB7}, //
- {0xB4D8, 0x7C07}, //{0xE7, 0xB0, 0x87}, //
- {0xF4A4, 0x7C38}, //{0xE7, 0xB0, 0xB8}, //
- {0xB2BE, 0x7C3F}, //{0xE7, 0xB0, 0xBF}, //
- {0xBCAE, 0x7C4D}, //{0xE7, 0xB1, 0x8D}, //
- {0xC3D7, 0x7C73}, //{0xE7, 0xB1, 0xB3}, //
- {0xC0E0, 0x7C7B}, //{0xE7, 0xB1, 0xBB}, //
- {0xD7D1, 0x7C7D}, //{0xE7, 0xB1, 0xBD}, //
- {0xB7DB, 0x7C89}, //{0xE7, 0xB2, 0x89}, //
- {0xC1A3, 0x7C92}, //{0xE7, 0xB2, 0x92}, //
- {0xB4D6, 0x7C97}, //{0xE7, 0xB2, 0x97}, //
+ {0xB8DD, 0x7BD9}, //{0xE7, 0xAF, 0x99}, // ��
+ {0xB4DB, 0x7BE1}, //{0xE7, 0xAF, 0xA1}, // ��
+ {0xC0BA, 0x7BEE}, //{0xE7, 0xAF, 0xAE}, // :
+ {0xC0E9, 0x7BF1}, //{0xE7, 0xAF, 0xB1}, // ��
+ {0xC5F1, 0x7BF7}, //{0xE7, 0xAF, 0xB7}, // ��
+ {0xB4D8, 0x7C07}, //{0xE7, 0xB0, 0x87}, // ��
+ {0xF4A4, 0x7C38}, //{0xE7, 0xB0, 0xB8}, // �
+ {0xB2BE, 0x7C3F}, //{0xE7, 0xB0, 0xBF}, // ��
+ {0xBCAE, 0x7C4D}, //{0xE7, 0xB1, 0x8D}, // ��
+ {0xC3D7, 0x7C73}, //{0xE7, 0xB1, 0xB3}, // ��
+ {0xC0E0, 0x7C7B}, //{0xE7, 0xB1, 0xBB}, // ��
+ {0xD7D1, 0x7C7D}, //{0xE7, 0xB1, 0xBD}, // ��
+ {0xB7DB, 0x7C89}, //{0xE7, 0xB2, 0x89}, // ��
+ {0xC1A3, 0x7C92}, //{0xE7, 0xB2, 0x92}, // c
+ {0xB4D6, 0x7C97}, //{0xE7, 0xB2, 0x97}, // ��
{0xD5B3, 0x7C98}, //{0xE7, 0xB2, 0x98}, // ճ
- {0xCBDA, 0x7C9F}, //{0xE7, 0xB2, 0x9F}, //
- {0xD4C1, 0x7CA4}, //{0xE7, 0xB2, 0xA4}, //
- {0xD6E0, 0x7CA5}, //{0xE7, 0xB2, 0xA5}, //
- {0xB7E0, 0x7CAA}, //{0xE7, 0xB2, 0xAA}, //
- {0xC1B8, 0x7CAE}, //{0xE7, 0xB2, 0xAE}, //
- {0xC1BB, 0x7CB1}, //{0xE7, 0xB2, 0xB1}, //
- {0xB4E2, 0x7CB9}, //{0xE7, 0xB2, 0xB9}, //
- {0xBEAB, 0x7CBE}, //{0xE7, 0xB2, 0xBE}, //
- {0xBAFD, 0x7CCA}, //{0xE7, 0xB3, 0x8A}, //
- {0xB8E2, 0x7CD5}, //{0xE7, 0xB3, 0x95}, //
- {0xCCC7, 0x7CD6}, //{0xE7, 0xB3, 0x96}, //
- {0xB2DA, 0x7CD9}, //{0xE7, 0xB3, 0x99}, //
- {0xC3D3, 0x7CDC}, //{0xE7, 0xB3, 0x9C}, //
- {0xD4E3, 0x7CDF}, //{0xE7, 0xB3, 0x9F}, //
- {0xBFB7, 0x7CE0}, //{0xE7, 0xB3, 0xA0}, //
+ {0xCBDA, 0x7C9F}, //{0xE7, 0xB2, 0x9F}, // ��
+ {0xD4C1, 0x7CA4}, //{0xE7, 0xB2, 0xA4}, // ��
+ {0xD6E0, 0x7CA5}, //{0xE7, 0xB2, 0xA5}, // ��
+ {0xB7E0, 0x7CAA}, //{0xE7, 0xB2, 0xAA}, // ��
+ {0xC1B8, 0x7CAE}, //{0xE7, 0xB2, 0xAE}, // ��
+ {0xC1BB, 0x7CB1}, //{0xE7, 0xB2, 0xB1}, // {
+ {0xB4E2, 0x7CB9}, //{0xE7, 0xB2, 0xB9}, // ��
+ {0xBEAB, 0x7CBE}, //{0xE7, 0xB2, 0xBE}, // ��
+ {0xBAFD, 0x7CCA}, //{0xE7, 0xB3, 0x8A}, // ��
+ {0xB8E2, 0x7CD5}, //{0xE7, 0xB3, 0x95}, // ��
+ {0xCCC7, 0x7CD6}, //{0xE7, 0xB3, 0x96}, // ��
+ {0xB2DA, 0x7CD9}, //{0xE7, 0xB3, 0x99}, // ��
+ {0xC3D3, 0x7CDC}, //{0xE7, 0xB3, 0x9C}, // ��
+ {0xD4E3, 0x7CDF}, //{0xE7, 0xB3, 0x9F}, // ��
+ {0xBFB7, 0x7CE0}, //{0xE7, 0xB3, 0xA0}, // ��
{0xC5B4, 0x7CEF}, //{0xE7, 0xB3, 0xAF}, // Ŵ
{0xCFB5, 0x7CFB}, //{0xE7, 0xB3, 0xBB}, // ϵ
- {0xCEC9, 0x7D0A}, //{0xE7, 0xB4, 0x8A}, //
- {0xCBD8, 0x7D20}, //{0xE7, 0xB4, 0xA0}, //
- {0xCBF7, 0x7D22}, //{0xE7, 0xB4, 0xA2}, //
- {0xBDF4, 0x7D27}, //{0xE7, 0xB4, 0xA7}, //
- {0xD7CF, 0x7D2B}, //{0xE7, 0xB4, 0xAB}, //
- {0xC0DB, 0x7D2F}, //{0xE7, 0xB4, 0xAF}, //
- {0xD0F5, 0x7D6E}, //{0xE7, 0xB5, 0xAE}, //
- {0xB7B1, 0x7E41}, //{0xE7, 0xB9, 0x81}, //
- {0xBEC0, 0x7EA0}, //{0xE7, 0xBA, 0xA0}, //
- {0xBAEC, 0x7EA2}, //{0xE7, 0xBA, 0xA2}, //
- {0xCFCB, 0x7EA4}, //{0xE7, 0xBA, 0xA4}, //
+ {0xCEC9, 0x7D0A}, //{0xE7, 0xB4, 0x8A}, // ��
+ {0xCBD8, 0x7D20}, //{0xE7, 0xB4, 0xA0}, // ��
+ {0xCBF7, 0x7D22}, //{0xE7, 0xB4, 0xA2}, // ��
+ {0xBDF4, 0x7D27}, //{0xE7, 0xB4, 0xA7}, // ��
+ {0xD7CF, 0x7D2B}, //{0xE7, 0xB4, 0xAB}, // ��
+ {0xC0DB, 0x7D2F}, //{0xE7, 0xB4, 0xAF}, // ��
+ {0xD0F5, 0x7D6E}, //{0xE7, 0xB5, 0xAE}, // ��
+ {0xB7B1, 0x7E41}, //{0xE7, 0xB9, 0x81}, // ��
+ {0xBEC0, 0x7EA0}, //{0xE7, 0xBA, 0xA0}, // ��
+ {0xBAEC, 0x7EA2}, //{0xE7, 0xBA, 0xA2}, // ��
+ {0xCFCB, 0x7EA4}, //{0xE7, 0xBA, 0xA4}, // ��
{0xD4BC, 0x7EA6}, //{0xE7, 0xBA, 0xA6}, // Լ
- {0xBCB6, 0x7EA7}, //{0xE7, 0xBA, 0xA7}, //
- {0xBCCD, 0x7EAA}, //{0xE7, 0xBA, 0xAA}, //
- {0xC8D2, 0x7EAB}, //{0xE7, 0xBA, 0xAB}, //
+ {0xBCB6, 0x7EA7}, //{0xE7, 0xBA, 0xA7}, // ��
+ {0xBCCD, 0x7EAA}, //{0xE7, 0xBA, 0xAA}, // ��
+ {0xC8D2, 0x7EAB}, //{0xE7, 0xBA, 0xAB}, // ��
{0xCEB3, 0x7EAC}, //{0xE7, 0xBA, 0xAC}, // γ
- {0xB4BF, 0x7EAF}, //{0xE7, 0xBA, 0xAF}, //
+ {0xB4BF, 0x7EAF}, //{0xE7, 0xBA, 0xAF}, // ��
{0xC9B4, 0x7EB1}, //{0xE7, 0xBA, 0xB1}, // ɴ
- {0xB8D9, 0x7EB2}, //{0xE7, 0xBA, 0xB2}, //
- {0xC4C9, 0x7EB3}, //{0xE7, 0xBA, 0xB3}, //
- {0xD7DD, 0x7EB5}, //{0xE7, 0xBA, 0xB5}, //
- {0xB7D7, 0x7EB7}, //{0xE7, 0xBA, 0xB7}, //
+ {0xB8D9, 0x7EB2}, //{0xE7, 0xBA, 0xB2}, // ��
+ {0xC4C9, 0x7EB3}, //{0xE7, 0xBA, 0xB3}, // ��
+ {0xD7DD, 0x7EB5}, //{0xE7, 0xBA, 0xB5}, // ��
+ {0xB7D7, 0x7EB7}, //{0xE7, 0xBA, 0xB7}, // ��
{0xD6BD, 0x7EB8}, //{0xE7, 0xBA, 0xB8}, // ֽ
- {0xCEC6, 0x7EB9}, //{0xE7, 0xBA, 0xB9}, //
- {0xB7C4, 0x7EBA}, //{0xE7, 0xBA, 0xBA}, //
+ {0xCEC6, 0x7EB9}, //{0xE7, 0xBA, 0xB9}, // ��
+ {0xB7C4, 0x7EBA}, //{0xE7, 0xBA, 0xBA}, // ��
{0xC5A6, 0x7EBD}, //{0xE7, 0xBA, 0xBD}, // Ŧ
- {0xCFDF, 0x7EBF}, //{0xE7, 0xBA, 0xBF}, //
- {0xC1B7, 0x7EC3}, //{0xE7, 0xBB, 0x83}, //
- {0xD7E9, 0x7EC4}, //{0xE7, 0xBB, 0x84}, //
- {0xC9F0, 0x7EC5}, //{0xE7, 0xBB, 0x85}, //
+ {0xCFDF, 0x7EBF}, //{0xE7, 0xBA, 0xBF}, // ��
+ {0xC1B7, 0x7EC3}, //{0xE7, 0xBB, 0x83}, // w
+ {0xD7E9, 0x7EC4}, //{0xE7, 0xBB, 0x84}, // ��
+ {0xC9F0, 0x7EC5}, //{0xE7, 0xBB, 0x85}, // ��
{0xCFB8, 0x7EC6}, //{0xE7, 0xBB, 0x86}, // ϸ
{0xD6AF, 0x7EC7}, //{0xE7, 0xBB, 0x87}, // ֯
- {0xD6D5, 0x7EC8}, //{0xE7, 0xBB, 0x88}, //
- {0xB0ED, 0x7ECA}, //{0xE7, 0xBB, 0x8A}, //
- {0xC9DC, 0x7ECD}, //{0xE7, 0xBB, 0x8D}, //
- {0xD2EF, 0x7ECE}, //{0xE7, 0xBB, 0x8E}, //
- {0xBEAD, 0x7ECF}, //{0xE7, 0xBB, 0x8F}, //
- {0xB0F3, 0x7ED1}, //{0xE7, 0xBB, 0x91}, //
- {0xC8DE, 0x7ED2}, //{0xE7, 0xBB, 0x92}, //
- {0xBDE1, 0x7ED3}, //{0xE7, 0xBB, 0x93}, //
- {0xC8C6, 0x7ED5}, //{0xE7, 0xBB, 0x95}, //
- {0xBBE6, 0x7ED8}, //{0xE7, 0xBB, 0x98}, //
- {0xB8F8, 0x7ED9}, //{0xE7, 0xBB, 0x99}, //
- {0xC2E7, 0x7EDC}, //{0xE7, 0xBB, 0x9C}, //
- {0xBEF8, 0x7EDD}, //{0xE7, 0xBB, 0x9D}, //
- {0xBDCA, 0x7EDE}, //{0xE7, 0xBB, 0x9E}, //
+ {0xD6D5, 0x7EC8}, //{0xE7, 0xBB, 0x88}, // ��
+ {0xB0ED, 0x7ECA}, //{0xE7, 0xBB, 0x8A}, // ��
+ {0xC9DC, 0x7ECD}, //{0xE7, 0xBB, 0x8D}, // ��
+ {0xD2EF, 0x7ECE}, //{0xE7, 0xBB, 0x8E}, // ��
+ {0xBEAD, 0x7ECF}, //{0xE7, 0xBB, 0x8F}, // ��
+ {0xB0F3, 0x7ED1}, //{0xE7, 0xBB, 0x91}, // ��
+ {0xC8DE, 0x7ED2}, //{0xE7, 0xBB, 0x92}, // ��
+ {0xBDE1, 0x7ED3}, //{0xE7, 0xBB, 0x93}, // ��
+ {0xC8C6, 0x7ED5}, //{0xE7, 0xBB, 0x95}, // ��
+ {0xBBE6, 0x7ED8}, //{0xE7, 0xBB, 0x98}, // ��
+ {0xB8F8, 0x7ED9}, //{0xE7, 0xBB, 0x99}, // ��
+ {0xC2E7, 0x7EDC}, //{0xE7, 0xBB, 0x9C}, // ��
+ {0xBEF8, 0x7EDD}, //{0xE7, 0xBB, 0x9D}, // ��
+ {0xBDCA, 0x7EDE}, //{0xE7, 0xBB, 0x9E}, // ��
{0xCDB3, 0x7EDF}, //{0xE7, 0xBB, 0x9F}, // ͳ
- {0xBEEE, 0x7EE2}, //{0xE7, 0xBB, 0xA2}, //
- {0xD0E5, 0x7EE3}, //{0xE7, 0xBB, 0xA3}, //
- {0xBCCC, 0x7EE7}, //{0xE7, 0xBB, 0xA7}, //
- {0xBCA8, 0x7EE9}, //{0xE7, 0xBB, 0xA9}, //
- {0xD0F7, 0x7EEA}, //{0xE7, 0xBB, 0xAA}, //
- {0xD0F8, 0x7EED}, //{0xE7, 0xBB, 0xAD}, //
- {0xB4C2, 0x7EF0}, //{0xE7, 0xBB, 0xB0}, //
- {0xC9FE, 0x7EF3}, //{0xE7, 0xBB, 0xB3}, //
+ {0xBEEE, 0x7EE2}, //{0xE7, 0xBB, 0xA2}, // ��
+ {0xD0E5, 0x7EE3}, //{0xE7, 0xBB, 0xA3}, // ��
+ {0xBCCC, 0x7EE7}, //{0xE7, 0xBB, 0xA7}, // ��
+ {0xBCA8, 0x7EE9}, //{0xE7, 0xBB, 0xA9}, // ��
+ {0xD0F7, 0x7EEA}, //{0xE7, 0xBB, 0xAA}, // ��
+ {0xD0F8, 0x7EED}, //{0xE7, 0xBB, 0xAD}, // ��
+ {0xB4C2, 0x7EF0}, //{0xE7, 0xBB, 0xB0}, // ��
+ {0xC9FE, 0x7EF3}, //{0xE7, 0xBB, 0xB3}, // ��
{0xCEAC, 0x7EF4}, //{0xE7, 0xBB, 0xB4}, // ά
- {0xC3E0, 0x7EF5}, //{0xE7, 0xBB, 0xB5}, //
- {0xB1C1, 0x7EF7}, //{0xE7, 0xBB, 0xB7}, //
- {0xB3F1, 0x7EF8}, //{0xE7, 0xBB, 0xB8}, //
- {0xD7DB, 0x7EFC}, //{0xE7, 0xBB, 0xBC}, //
- {0xD5C0, 0x7EFD}, //{0xE7, 0xBB, 0xBD}, //
- {0xC2CC, 0x7EFF}, //{0xE7, 0xBB, 0xBF}, //
+ {0xC3E0, 0x7EF5}, //{0xE7, 0xBB, 0xB5}, // ��
+ {0xB1C1, 0x7EF7}, //{0xE7, 0xBB, 0xB7}, // ��
+ {0xB3F1, 0x7EF8}, //{0xE7, 0xBB, 0xB8}, // ��
+ {0xD7DB, 0x7EFC}, //{0xE7, 0xBB, 0xBC}, // ��
+ {0xD5C0, 0x7EFD}, //{0xE7, 0xBB, 0xBD}, // ��
+ {0xC2CC, 0x7EFF}, //{0xE7, 0xBB, 0xBF}, // ��
{0xD7BA, 0x7F00}, //{0xE7, 0xBC, 0x80}, //
- {0xC3E5, 0x7F05}, //{0xE7, 0xBC, 0x85}, //
- {0xC0C2, 0x7F06}, //{0xE7, 0xBC, 0x86}, //
- {0xB6D0, 0x7F0E}, //{0xE7, 0xBC, 0x8E}, //
- {0xBBBA, 0x7F13}, //{0xE7, 0xBC, 0x93}, //
- {0xB5DE, 0x7F14}, //{0xE7, 0xBC, 0x94}, //
- {0xC2C6, 0x7F15}, //{0xE7, 0xBC, 0x95}, //
- {0xB1E0, 0x7F16}, //{0xE7, 0xBC, 0x96}, //
+ {0xC3E5, 0x7F05}, //{0xE7, 0xBC, 0x85}, // ��
+ {0xC0C2, 0x7F06}, //{0xE7, 0xBC, 0x86}, // ��
+ {0xB6D0, 0x7F0E}, //{0xE7, 0xBC, 0x8E}, // ��
+ {0xBBBA, 0x7F13}, //{0xE7, 0xBC, 0x93}, // ��
+ {0xB5DE, 0x7F14}, //{0xE7, 0xBC, 0x94}, // ��
+ {0xC2C6, 0x7F15}, //{0xE7, 0xBC, 0x95}, // ��
+ {0xB1E0, 0x7F16}, //{0xE7, 0xBC, 0x96}, // ��
{0xD4B5, 0x7F18}, //{0xE7, 0xBC, 0x98}, // Ե
- {0xB8BF, 0x7F1A}, //{0xE7, 0xBC, 0x9A}, //
- {0xB7EC, 0x7F1D}, //{0xE7, 0xBC, 0x9D}, //
- {0xB2F8, 0x7F20}, //{0xE7, 0xBC, 0xA0}, //
- {0xE7CD, 0x7F24}, //{0xE7, 0xBC, 0xA4}, //
+ {0xB8BF, 0x7F1A}, //{0xE7, 0xBC, 0x9A}, // ��
+ {0xB7EC, 0x7F1D}, //{0xE7, 0xBC, 0x9D}, // ��
+ {0xB2F8, 0x7F20}, //{0xE7, 0xBC, 0xA0}, // ��
+ {0xE7CD, 0x7F24}, //{0xE7, 0xBC, 0xA4}, // ��
{0xD3A7, 0x7F28}, //{0xE7, 0xBC, 0xA8}, // ӧ
- {0xCBF5, 0x7F29}, //{0xE7, 0xBC, 0xA9}, //
- {0xE7D4, 0x7F2D}, //{0xE7, 0xBC, 0xAD}, //
- {0xE7D6, 0x7F30}, //{0xE7, 0xBC, 0xB0}, //
- {0xBDC9, 0x7F34}, //{0xE7, 0xBC, 0xB4}, //
- {0xB8D7, 0x7F38}, //{0xE7, 0xBC, 0xB8}, //
+ {0xCBF5, 0x7F29}, //{0xE7, 0xBC, 0xA9}, // ��
+ {0xE7D4, 0x7F2D}, //{0xE7, 0xBC, 0xAD}, // ��
+ {0xE7D6, 0x7F30}, //{0xE7, 0xBC, 0xB0}, // ��
+ {0xBDC9, 0x7F34}, //{0xE7, 0xBC, 0xB4}, // ��
+ {0xB8D7, 0x7F38}, //{0xE7, 0xBC, 0xB8}, // ��
{0xC8B1, 0x7F3A}, //{0xE7, 0xBC, 0xBA}, // ȱ
- {0xB9DE, 0x7F50}, //{0xE7, 0xBD, 0x90}, //
- {0xCDF8, 0x7F51}, //{0xE7, 0xBD, 0x91}, //
- {0xBAB1, 0x7F55}, //{0xE7, 0xBD, 0x95}, //
- {0xC2DE, 0x7F57}, //{0xE7, 0xBD, 0x97}, //
- {0xB7A3, 0x7F5A}, //{0xE7, 0xBD, 0x9A}, //
- {0xB0D5, 0x7F62}, //{0xE7, 0xBD, 0xA2}, //
- {0xD5D6, 0x7F69}, //{0xE7, 0xBD, 0xA9}, //
- {0xD7EF, 0x7F6A}, //{0xE7, 0xBD, 0xAA}, //
- {0xD6C3, 0x7F6E}, //{0xE7, 0xBD, 0xAE}, //
- {0xCAF0, 0x7F72}, //{0xE7, 0xBD, 0xB2}, //
- {0xD1F2, 0x7F8A}, //{0xE7, 0xBE, 0x8A}, //
- {0xC3C0, 0x7F8E}, //{0xE7, 0xBE, 0x8E}, //
- {0xB8E1, 0x7F94}, //{0xE7, 0xBE, 0x94}, //
- {0xD0DF, 0x7F9E}, //{0xE7, 0xBE, 0x9E}, //
- {0xCFDB, 0x7FA1}, //{0xE7, 0xBE, 0xA1}, //
+ {0xB9DE, 0x7F50}, //{0xE7, 0xBD, 0x90}, // ��
+ {0xCDF8, 0x7F51}, //{0xE7, 0xBD, 0x91}, // ��
+ {0xBAB1, 0x7F55}, //{0xE7, 0xBD, 0x95}, // ��
+ {0xC2DE, 0x7F57}, //{0xE7, 0xBD, 0x97}, // ��
+ {0xB7A3, 0x7F5A}, //{0xE7, 0xBD, 0x9A}, // ��
+ {0xB0D5, 0x7F62}, //{0xE7, 0xBD, 0xA2}, // ��
+ {0xD5D6, 0x7F69}, //{0xE7, 0xBD, 0xA9}, // ��
+ {0xD7EF, 0x7F6A}, //{0xE7, 0xBD, 0xAA}, // ��
+ {0xD6C3, 0x7F6E}, //{0xE7, 0xBD, 0xAE}, // ��
+ {0xCAF0, 0x7F72}, //{0xE7, 0xBD, 0xB2}, // ��
+ {0xD1F2, 0x7F8A}, //{0xE7, 0xBE, 0x8A}, // ��
+ {0xC3C0, 0x7F8E}, //{0xE7, 0xBE, 0x8E}, // ��
+ {0xB8E1, 0x7F94}, //{0xE7, 0xBE, 0x94}, // ��
+ {0xD0DF, 0x7F9E}, //{0xE7, 0xBE, 0x9E}, // ��
+ {0xCFDB, 0x7FA1}, //{0xE7, 0xBE, 0xA1}, // ��
{0xC8BA, 0x7FA4}, //{0xE7, 0xBE, 0xA4}, // Ⱥ
- {0xB8FE, 0x7FB9}, //{0xE7, 0xBE, 0xB9}, //
- {0xD3F0, 0x7FBD}, //{0xE7, 0xBE, 0xBD}, //
- {0xCECC, 0x7FC1}, //{0xE7, 0xBF, 0x81}, //
- {0xB3E1, 0x7FC5}, //{0xE7, 0xBF, 0x85}, //
- {0xF4E1, 0x7FCE}, //{0xE7, 0xBF, 0x8E}, //
- {0xCFE8, 0x7FD4}, //{0xE7, 0xBF, 0x94}, //
- {0xC7CC, 0x7FD8}, //{0xE7, 0xBF, 0x98}, //
- {0xB4E4, 0x7FE0}, //{0xE7, 0xBF, 0xA0}, //
- {0xF4E6, 0x7FE9}, //{0xE7, 0xBF, 0xA9}, //
- {0xBAB2, 0x7FF0}, //{0xE7, 0xBF, 0xB0}, //
- {0xB7AD, 0x7FFB}, //{0xE7, 0xBF, 0xBB}, //
- {0xD2ED, 0x7FFC}, //{0xE7, 0xBF, 0xBC}, //
+ {0xB8FE, 0x7FB9}, //{0xE7, 0xBE, 0xB9}, // ��
+ {0xD3F0, 0x7FBD}, //{0xE7, 0xBE, 0xBD}, // ��
+ {0xCECC, 0x7FC1}, //{0xE7, 0xBF, 0x81}, // ��
+ {0xB3E1, 0x7FC5}, //{0xE7, 0xBF, 0x85}, // ��
+ {0xF4E1, 0x7FCE}, //{0xE7, 0xBF, 0x8E}, // ��
+ {0xCFE8, 0x7FD4}, //{0xE7, 0xBF, 0x94}, // ��
+ {0xC7CC, 0x7FD8}, //{0xE7, 0xBF, 0x98}, // ��
+ {0xB4E4, 0x7FE0}, //{0xE7, 0xBF, 0xA0}, // ��
+ {0xF4E6, 0x7FE9}, //{0xE7, 0xBF, 0xA9}, // ��
+ {0xBAB2, 0x7FF0}, //{0xE7, 0xBF, 0xB0}, // ��
+ {0xB7AD, 0x7FFB}, //{0xE7, 0xBF, 0xBB}, // ��
+ {0xD2ED, 0x7FFC}, //{0xE7, 0xBF, 0xBC}, // ��
{0xD2AB, 0x8000}, //{0xE8, 0x80, 0x80}, // ҫ
- {0xC0CF, 0x8001}, //{0xE8, 0x80, 0x81}, //
- {0xBFBC, 0x8003}, //{0xE8, 0x80, 0x83}, //
- {0xD5DF, 0x8005}, //{0xE8, 0x80, 0x85}, //
- {0xB6F8, 0x800C}, //{0xE8, 0x80, 0x8C}, //
+ {0xC0CF, 0x8001}, //{0xE8, 0x80, 0x81}, // ��
+ {0xBFBC, 0x8003}, //{0xE8, 0x80, 0x83}, // ��
+ {0xD5DF, 0x8005}, //{0xE8, 0x80, 0x85}, // ��
+ {0xB6F8, 0x800C}, //{0xE8, 0x80, 0x8C}, // ��
{0xCBA3, 0x800D}, //{0xE8, 0x80, 0x8D}, // ˣ
- {0xC4CD, 0x8010}, //{0xE8, 0x80, 0x90}, //
- {0xB8FB, 0x8015}, //{0xE8, 0x80, 0x95}, //
- {0xBAC4, 0x8017}, //{0xE8, 0x80, 0x97}, //
- {0xB0D2, 0x8019}, //{0xE8, 0x80, 0x99}, //
- {0xB6FA, 0x8033}, //{0xE8, 0x80, 0xB3}, //
- {0xCBCA, 0x8038}, //{0xE8, 0x80, 0xB8}, //
- {0xB3DC, 0x803B}, //{0xE8, 0x80, 0xBB}, //
- {0xB5A2, 0x803D}, //{0xE8, 0x80, 0xBD}, //
- {0xB9A2, 0x803F}, //{0xE8, 0x80, 0xBF}, //
- {0xC4F4, 0x8042}, //{0xE8, 0x81, 0x82}, //
- {0xC1C4, 0x804A}, //{0xE8, 0x81, 0x8A}, //
- {0xC1FB, 0x804B}, //{0xE8, 0x81, 0x8B}, //
+ {0xC4CD, 0x8010}, //{0xE8, 0x80, 0x90}, // ��
+ {0xB8FB, 0x8015}, //{0xE8, 0x80, 0x95}, // ��
+ {0xBAC4, 0x8017}, //{0xE8, 0x80, 0x97}, // ��
+ {0xB0D2, 0x8019}, //{0xE8, 0x80, 0x99}, // ��
+ {0xB6FA, 0x8033}, //{0xE8, 0x80, 0xB3}, // ��
+ {0xCBCA, 0x8038}, //{0xE8, 0x80, 0xB8}, // ��
+ {0xB3DC, 0x803B}, //{0xE8, 0x80, 0xBB}, // ��
+ {0xB5A2, 0x803D}, //{0xE8, 0x80, 0xBD}, // ��
+ {0xB9A2, 0x803F}, //{0xE8, 0x80, 0xBF}, // ��
+ {0xC4F4, 0x8042}, //{0xE8, 0x81, 0x82}, // ��
+ {0xC1C4, 0x804A}, //{0xE8, 0x81, 0x8A}, // ��
+ {0xC1FB, 0x804B}, //{0xE8, 0x81, 0x8B}, // ��
{0xD6B0, 0x804C}, //{0xE8, 0x81, 0x8C}, // ְ
- {0xC1AA, 0x8054}, //{0xE8, 0x81, 0x94}, //
+ {0xC1AA, 0x8054}, //{0xE8, 0x81, 0x94}, // j
{0xC6B8, 0x8058}, //{0xE8, 0x81, 0x98}, // Ƹ
- {0xBEDB, 0x805A}, //{0xE8, 0x81, 0x9A}, //
- {0xB4CF, 0x806A}, //{0xE8, 0x81, 0xAA}, //
- {0xCBE0, 0x8083}, //{0xE8, 0x82, 0x83}, //
- {0xD2DE, 0x8084}, //{0xE8, 0x82, 0x84}, //
- {0xCBC1, 0x8086}, //{0xE8, 0x82, 0x86}, //
- {0xC8E2, 0x8089}, //{0xE8, 0x82, 0x89}, //
- {0xC0DF, 0x808B}, //{0xE8, 0x82, 0x8B}, //
- {0xBCA1, 0x808C}, //{0xE8, 0x82, 0x8C}, //
+ {0xBEDB, 0x805A}, //{0xE8, 0x81, 0x9A}, // ��
+ {0xB4CF, 0x806A}, //{0xE8, 0x81, 0xAA}, // ��
+ {0xCBE0, 0x8083}, //{0xE8, 0x82, 0x83}, // ��
+ {0xD2DE, 0x8084}, //{0xE8, 0x82, 0x84}, // ��
+ {0xCBC1, 0x8086}, //{0xE8, 0x82, 0x86}, // ��
+ {0xC8E2, 0x8089}, //{0xE8, 0x82, 0x89}, // ��
+ {0xC0DF, 0x808B}, //{0xE8, 0x82, 0x8B}, // ��
+ {0xBCA1, 0x808C}, //{0xE8, 0x82, 0x8C}, // ��
{0xD0A4, 0x8096}, //{0xE8, 0x82, 0x96}, // Ф
- {0xD6E2, 0x8098}, //{0xE8, 0x82, 0x98}, //
- {0xB6C7, 0x809A}, //{0xE8, 0x82, 0x9A}, //
- {0xB8D8, 0x809B}, //{0xE8, 0x82, 0x9B}, //
- {0xB8CE, 0x809D}, //{0xE8, 0x82, 0x9D}, //
- {0xB3A6, 0x80A0}, //{0xE8, 0x82, 0xA0}, //
- {0xB9C9, 0x80A1}, //{0xE8, 0x82, 0xA1}, //
+ {0xD6E2, 0x8098}, //{0xE8, 0x82, 0x98}, // ��
+ {0xB6C7, 0x809A}, //{0xE8, 0x82, 0x9A}, // ��
+ {0xB8D8, 0x809B}, //{0xE8, 0x82, 0x9B}, // ��
+ {0xB8CE, 0x809D}, //{0xE8, 0x82, 0x9D}, // ��
+ {0xB3A6, 0x80A0}, //{0xE8, 0x82, 0xA0}, // ��
+ {0xB9C9, 0x80A1}, //{0xE8, 0x82, 0xA1}, // ��
{0xD6AB, 0x80A2}, //{0xE8, 0x82, 0xA2}, // ֫
- {0xB7F4, 0x80A4}, //{0xE8, 0x82, 0xA4}, //
- {0xB7CA, 0x80A5}, //{0xE8, 0x82, 0xA5}, //
- {0xBCE7, 0x80A9}, //{0xE8, 0x82, 0xA9}, //
- {0xB7BE, 0x80AA}, //{0xE8, 0x82, 0xAA}, //
- {0xB0B9, 0x80AE}, //{0xE8, 0x82, 0xAE}, //
- {0xBFCF, 0x80AF}, //{0xE8, 0x82, 0xAF}, //
- {0xD3FD, 0x80B2}, //{0xE8, 0x82, 0xB2}, //
- {0xEBC8, 0x80B4}, //{0xE8, 0x82, 0xB4}, //
- {0xB7CE, 0x80BA}, //{0xE8, 0x82, 0xBA}, //
- {0xC9F6, 0x80BE}, //{0xE8, 0x82, 0xBE}, //
- {0xD6D7, 0x80BF}, //{0xE8, 0x82, 0xBF}, //
- {0xD5CD, 0x80C0}, //{0xE8, 0x83, 0x80}, //
+ {0xB7F4, 0x80A4}, //{0xE8, 0x82, 0xA4}, // ��
+ {0xB7CA, 0x80A5}, //{0xE8, 0x82, 0xA5}, // ��
+ {0xBCE7, 0x80A9}, //{0xE8, 0x82, 0xA9}, // ��
+ {0xB7BE, 0x80AA}, //{0xE8, 0x82, 0xAA}, // ��
+ {0xB0B9, 0x80AE}, //{0xE8, 0x82, 0xAE}, // ��
+ {0xBFCF, 0x80AF}, //{0xE8, 0x82, 0xAF}, // ��
+ {0xD3FD, 0x80B2}, //{0xE8, 0x82, 0xB2}, // ��
+ {0xEBC8, 0x80B4}, //{0xE8, 0x82, 0xB4}, // ��
+ {0xB7CE, 0x80BA}, //{0xE8, 0x82, 0xBA}, // ��
+ {0xC9F6, 0x80BE}, //{0xE8, 0x82, 0xBE}, // ��
+ {0xD6D7, 0x80BF}, //{0xE8, 0x82, 0xBF}, // ��
+ {0xD5CD, 0x80C0}, //{0xE8, 0x83, 0x80}, // ��
{0xD0B2, 0x80C1}, //{0xE8, 0x83, 0x81}, // в
{0xCEB8, 0x80C3}, //{0xE8, 0x83, 0x83}, // θ
- {0xB5A8, 0x80C6}, //{0xE8, 0x83, 0x86}, //
- {0xB1B3, 0x80CC}, //{0xE8, 0x83, 0x8C}, //
+ {0xB5A8, 0x80C6}, //{0xE8, 0x83, 0x86}, // ��
+ {0xB1B3, 0x80CC}, //{0xE8, 0x83, 0x8C}, // ��
{0xCCA5, 0x80CE}, //{0xE8, 0x83, 0x8E}, // ̥
- {0xC5D6, 0x80D6}, //{0xE8, 0x83, 0x96}, //
- {0xC5DF, 0x80DA}, //{0xE8, 0x83, 0x9A}, //
+ {0xC5D6, 0x80D6}, //{0xE8, 0x83, 0x96}, // ��
+ {0xC5DF, 0x80DA}, //{0xE8, 0x83, 0x9A}, // ��
{0xCAA4, 0x80DC}, //{0xE8, 0x83, 0x9C}, // ʤ
- {0xB0FB, 0x80DE}, //{0xE8, 0x83, 0x9E}, //
- {0xBAFA, 0x80E1}, //{0xE8, 0x83, 0xA1}, //
- {0xEBCA, 0x80E7}, //{0xE8, 0x83, 0xA7}, //
- {0xBFE8, 0x80EF}, //{0xE8, 0x83, 0xAF}, //
- {0xD2C8, 0x80F0}, //{0xE8, 0x83, 0xB0}, //
- {0xB8EC, 0x80F3}, //{0xE8, 0x83, 0xB3}, //
- {0xBDBA, 0x80F6}, //{0xE8, 0x83, 0xB6}, //
- {0xD0D8, 0x80F8}, //{0xE8, 0x83, 0xB8}, //
- {0xC4DC, 0x80FD}, //{0xE8, 0x83, 0xBD}, //
+ {0xB0FB, 0x80DE}, //{0xE8, 0x83, 0x9E}, // ��
+ {0xBAFA, 0x80E1}, //{0xE8, 0x83, 0xA1}, // ��
+ {0xEBCA, 0x80E7}, //{0xE8, 0x83, 0xA7}, // ��
+ {0xBFE8, 0x80EF}, //{0xE8, 0x83, 0xAF}, // ��
+ {0xD2C8, 0x80F0}, //{0xE8, 0x83, 0xB0}, // ��
+ {0xB8EC, 0x80F3}, //{0xE8, 0x83, 0xB3}, // ��
+ {0xBDBA, 0x80F6}, //{0xE8, 0x83, 0xB6}, // ��
+ {0xD0D8, 0x80F8}, //{0xE8, 0x83, 0xB8}, // ��
+ {0xC4DC, 0x80FD}, //{0xE8, 0x83, 0xBD}, // ��
{0xD6AC, 0x8102}, //{0xE8, 0x84, 0x82}, // ֬
- {0xB4E0, 0x8106}, //{0xE8, 0x84, 0x86}, //
- {0xC2F6, 0x8109}, //{0xE8, 0x84, 0x89}, //
- {0xBCB9, 0x810A}, //{0xE8, 0x84, 0x8A}, //
- {0xD4E0, 0x810F}, //{0xE8, 0x84, 0x8F}, //
- {0xC6EA, 0x8110}, //{0xE8, 0x84, 0x90}, //
- {0xC4D4, 0x8111}, //{0xE8, 0x84, 0x91}, //
+ {0xB4E0, 0x8106}, //{0xE8, 0x84, 0x86}, // ��
+ {0xC2F6, 0x8109}, //{0xE8, 0x84, 0x89}, // ��
+ {0xBCB9, 0x810A}, //{0xE8, 0x84, 0x8A}, // ��
+ {0xD4E0, 0x810F}, //{0xE8, 0x84, 0x8F}, // ��
+ {0xC6EA, 0x8110}, //{0xE8, 0x84, 0x90}, // ��
+ {0xC4D4, 0x8111}, //{0xE8, 0x84, 0x91}, // ��
{0xC5A7, 0x8113}, //{0xE8, 0x84, 0x93}, // ŧ
- {0xB2B1, 0x8116}, //{0xE8, 0x84, 0x96}, //
- {0xBDC5, 0x811A}, //{0xE8, 0x84, 0x9A}, //
- {0xB8AC, 0x812F}, //{0xE8, 0x84, 0xAF}, //
- {0xCDD1, 0x8131}, //{0xE8, 0x84, 0xB1}, //
- {0xC1B3, 0x8138}, //{0xE8, 0x84, 0xB8}, //
+ {0xB2B1, 0x8116}, //{0xE8, 0x84, 0x96}, // ��
+ {0xBDC5, 0x811A}, //{0xE8, 0x84, 0x9A}, // ��
+ {0xB8AC, 0x812F}, //{0xE8, 0x84, 0xAF}, // ��
+ {0xCDD1, 0x8131}, //{0xE8, 0x84, 0xB1}, // ��
+ {0xC1B3, 0x8138}, //{0xE8, 0x84, 0xB8}, // s
{0xC6A2, 0x813E}, //{0xE8, 0x84, 0xBE}, // Ƣ
- {0xC0B0, 0x814A}, //{0xE8, 0x85, 0x8A}, //
+ {0xC0B0, 0x814A}, //{0xE8, 0x85, 0x8A}, // 0
{0xD2B8, 0x814B}, //{0xE8, 0x85, 0x8B}, // Ҹ
- {0xEBE7, 0x814C}, //{0xE8, 0x85, 0x8C}, //
- {0xB8AF, 0x8150}, //{0xE8, 0x85, 0x90}, //
+ {0xEBE7, 0x814C}, //{0xE8, 0x85, 0x8C}, // ��
+ {0xB8AF, 0x8150}, //{0xE8, 0x85, 0x90}, // ��
{0xC7BB, 0x8154}, //{0xE8, 0x85, 0x94}, // ǻ
- {0xCDF3, 0x8155}, //{0xE8, 0x85, 0x95}, //
- {0xD0C8, 0x8165}, //{0xE8, 0x85, 0xA5}, //
- {0xC8F9, 0x816E}, //{0xE8, 0x85, 0xAE}, //
- {0xD1FC, 0x8170}, //{0xE8, 0x85, 0xB0}, //
- {0xB8B9, 0x8179}, //{0xE8, 0x85, 0xB9}, //
- {0xCFD9, 0x817A}, //{0xE8, 0x85, 0xBA}, //
- {0xC4E5, 0x817B}, //{0xE8, 0x85, 0xBB}, //
- {0xCCDA, 0x817E}, //{0xE8, 0x85, 0xBE}, //
- {0xCDC8, 0x817F}, //{0xE8, 0x85, 0xBF}, //
- {0xB0F2, 0x8180}, //{0xE8, 0x86, 0x80}, //
- {0xB2B2, 0x818A}, //{0xE8, 0x86, 0x8A}, //
- {0xB8E0, 0x818F}, //{0xE8, 0x86, 0x8F}, //
- {0xB1EC, 0x8198}, //{0xE8, 0x86, 0x98}, //
- {0xCCC5, 0x819B}, //{0xE8, 0x86, 0x9B}, //
+ {0xCDF3, 0x8155}, //{0xE8, 0x85, 0x95}, // ��
+ {0xD0C8, 0x8165}, //{0xE8, 0x85, 0xA5}, // ��
+ {0xC8F9, 0x816E}, //{0xE8, 0x85, 0xAE}, // ��
+ {0xD1FC, 0x8170}, //{0xE8, 0x85, 0xB0}, // ��
+ {0xB8B9, 0x8179}, //{0xE8, 0x85, 0xB9}, // ��
+ {0xCFD9, 0x817A}, //{0xE8, 0x85, 0xBA}, // ��
+ {0xC4E5, 0x817B}, //{0xE8, 0x85, 0xBB}, // ��
+ {0xCCDA, 0x817E}, //{0xE8, 0x85, 0xBE}, // ��
+ {0xCDC8, 0x817F}, //{0xE8, 0x85, 0xBF}, // ��
+ {0xB0F2, 0x8180}, //{0xE8, 0x86, 0x80}, // ��
+ {0xB2B2, 0x818A}, //{0xE8, 0x86, 0x8A}, // ��
+ {0xB8E0, 0x818F}, //{0xE8, 0x86, 0x8F}, // ��
+ {0xB1EC, 0x8198}, //{0xE8, 0x86, 0x98}, // ��
+ {0xCCC5, 0x819B}, //{0xE8, 0x86, 0x9B}, // ��
{0xC4A4, 0x819C}, //{0xE8, 0x86, 0x9C}, // Ĥ
{0xCFA5, 0x819D}, //{0xE8, 0x86, 0x9D}, // ϥ
- {0xC5F2, 0x81A8}, //{0xE8, 0x86, 0xA8}, //
- {0xC9C5, 0x81B3}, //{0xE8, 0x86, 0xB3}, //
- {0xCDCE, 0x81C0}, //{0xE8, 0x87, 0x80}, //
- {0xB1DB, 0x81C2}, //{0xE8, 0x87, 0x82}, //
- {0xEBFD, 0x81CA}, //{0xE8, 0x87, 0x8A}, //
- {0xB3BC, 0x81E3}, //{0xE8, 0x87, 0xA3}, //
- {0xD7D4, 0x81EA}, //{0xE8, 0x87, 0xAA}, //
- {0xB3F4, 0x81ED}, //{0xE8, 0x87, 0xAD}, //
- {0xD6C1, 0x81F3}, //{0xE8, 0x87, 0xB3}, //
- {0xD6C2, 0x81F4}, //{0xE8, 0x87, 0xB4}, //
- {0xBECA, 0x81FC}, //{0xE8, 0x87, 0xBC}, //
+ {0xC5F2, 0x81A8}, //{0xE8, 0x86, 0xA8}, // ��
+ {0xC9C5, 0x81B3}, //{0xE8, 0x86, 0xB3}, // ��
+ {0xCDCE, 0x81C0}, //{0xE8, 0x87, 0x80}, // ��
+ {0xB1DB, 0x81C2}, //{0xE8, 0x87, 0x82}, // ��
+ {0xEBFD, 0x81CA}, //{0xE8, 0x87, 0x8A}, // ��
+ {0xB3BC, 0x81E3}, //{0xE8, 0x87, 0xA3}, // ��
+ {0xD7D4, 0x81EA}, //{0xE8, 0x87, 0xAA}, // ��
+ {0xB3F4, 0x81ED}, //{0xE8, 0x87, 0xAD}, // ��
+ {0xD6C1, 0x81F3}, //{0xE8, 0x87, 0xB3}, // ��
+ {0xD6C2, 0x81F4}, //{0xE8, 0x87, 0xB4}, // ��
+ {0xBECA, 0x81FC}, //{0xE8, 0x87, 0xBC}, // ��
{0xD2A8, 0x8200}, //{0xE8, 0x88, 0x80}, // Ҩ
- {0xBECB, 0x8205}, //{0xE8, 0x88, 0x85}, //
- {0xD3DF, 0x8206}, //{0xE8, 0x88, 0x86}, //
- {0xC9E0, 0x820C}, //{0xE8, 0x88, 0x8C}, //
- {0xC9E1, 0x820D}, //{0xE8, 0x88, 0x8D}, //
- {0xCAE6, 0x8212}, //{0xE8, 0x88, 0x92}, //
- {0xCCF2, 0x8214}, //{0xE8, 0x88, 0x94}, //
- {0xCEE8, 0x821E}, //{0xE8, 0x88, 0x9E}, //
- {0xD6DB, 0x821F}, //{0xE8, 0x88, 0x9F}, //
- {0xBABD, 0x822A}, //{0xE8, 0x88, 0xAA}, //
- {0xB0E3, 0x822C}, //{0xE8, 0x88, 0xAC}, //
- {0xBDA2, 0x8230}, //{0xE8, 0x88, 0xB0}, //
- {0xB2D5, 0x8231}, //{0xE8, 0x88, 0xB1}, //
- {0xB6E6, 0x8235}, //{0xE8, 0x88, 0xB5}, //
- {0xB2B0, 0x8236}, //{0xE8, 0x88, 0xB6}, //
- {0xCFCF, 0x8237}, //{0xE8, 0x88, 0xB7}, //
- {0xB4AC, 0x8239}, //{0xE8, 0x88, 0xB9}, //
+ {0xBECB, 0x8205}, //{0xE8, 0x88, 0x85}, // ��
+ {0xD3DF, 0x8206}, //{0xE8, 0x88, 0x86}, // ��
+ {0xC9E0, 0x820C}, //{0xE8, 0x88, 0x8C}, // ��
+ {0xC9E1, 0x820D}, //{0xE8, 0x88, 0x8D}, // ��
+ {0xCAE6, 0x8212}, //{0xE8, 0x88, 0x92}, // ��
+ {0xCCF2, 0x8214}, //{0xE8, 0x88, 0x94}, // ��
+ {0xCEE8, 0x821E}, //{0xE8, 0x88, 0x9E}, // ��
+ {0xD6DB, 0x821F}, //{0xE8, 0x88, 0x9F}, // ��
+ {0xBABD, 0x822A}, //{0xE8, 0x88, 0xAA}, // ��
+ {0xB0E3, 0x822C}, //{0xE8, 0x88, 0xAC}, // ��
+ {0xBDA2, 0x8230}, //{0xE8, 0x88, 0xB0}, // ��
+ {0xB2D5, 0x8231}, //{0xE8, 0x88, 0xB1}, // ��
+ {0xB6E6, 0x8235}, //{0xE8, 0x88, 0xB5}, // ��
+ {0xB2B0, 0x8236}, //{0xE8, 0x88, 0xB6}, // ��
+ {0xCFCF, 0x8237}, //{0xE8, 0x88, 0xB7}, // ��
+ {0xB4AC, 0x8239}, //{0xE8, 0x88, 0xB9}, // ��
{0xCDA7, 0x8247}, //{0xE8, 0x89, 0x87}, // ͧ
- {0xCBD2, 0x8258}, //{0xE8, 0x89, 0x98}, //
- {0xC1BC, 0x826F}, //{0xE8, 0x89, 0xAF}, //
- {0xBCE8, 0x8270}, //{0xE8, 0x89, 0xB0}, //
+ {0xCBD2, 0x8258}, //{0xE8, 0x89, 0x98}, // ��
+ {0xC1BC, 0x826F}, //{0xE8, 0x89, 0xAF}, // |
+ {0xBCE8, 0x8270}, //{0xE8, 0x89, 0xB0}, // ��
{0xC9AB, 0x8272}, //{0xE8, 0x89, 0xB2}, // ɫ
- {0xD1DE, 0x8273}, //{0xE8, 0x89, 0xB3}, //
- {0xD2D5, 0x827A}, //{0xE8, 0x89, 0xBA}, //
- {0xB0AC, 0x827E}, //{0xE8, 0x89, 0xBE}, //
- {0xBDDA, 0x8282}, //{0xE8, 0x8A, 0x82}, //
- {0xD3F3, 0x828B}, //{0xE8, 0x8A, 0x8B}, //
- {0xC9D6, 0x828D}, //{0xE8, 0x8A, 0x8D}, //
+ {0xD1DE, 0x8273}, //{0xE8, 0x89, 0xB3}, // ��
+ {0xD2D5, 0x827A}, //{0xE8, 0x89, 0xBA}, // ��
+ {0xB0AC, 0x827E}, //{0xE8, 0x89, 0xBE}, // ��
+ {0xBDDA, 0x8282}, //{0xE8, 0x8A, 0x82}, // ��
+ {0xD3F3, 0x828B}, //{0xE8, 0x8A, 0x8B}, // ��
+ {0xC9D6, 0x828D}, //{0xE8, 0x8A, 0x8D}, // ��
{0xC3A2, 0x8292}, //{0xE8, 0x8A, 0x92}, // â
{0xDCBD, 0x8299}, //{0xE8, 0x8A, 0x99}, // ܽ
- {0xCEDF, 0x829C}, //{0xE8, 0x8A, 0x9C}, //
+ {0xCEDF, 0x829C}, //{0xE8, 0x8A, 0x9C}, // ��
{0xD6A5, 0x829D}, //{0xE8, 0x8A, 0x9D}, // ֥
- {0xBDE6, 0x82A5}, //{0xE8, 0x8A, 0xA5}, //
+ {0xBDE6, 0x82A5}, //{0xE8, 0x8A, 0xA5}, // ��
{0xC2AB, 0x82A6}, //{0xE8, 0x8A, 0xA6}, // «
- {0xB7D2, 0x82AC}, //{0xE8, 0x8A, 0xAC}, //
- {0xB0C5, 0x82AD}, //{0xE8, 0x8A, 0xAD}, //
+ {0xB7D2, 0x82AC}, //{0xE8, 0x8A, 0xAC}, // ��
+ {0xB0C5, 0x82AD}, //{0xE8, 0x8A, 0xAD}, // ��
{0xD0BE, 0x82AF}, //{0xE8, 0x8A, 0xAF}, // о
- {0xBBA8, 0x82B1}, //{0xE8, 0x8A, 0xB1}, //
- {0xB7BC, 0x82B3}, //{0xE8, 0x8A, 0xB3}, //
- {0xC7DB, 0x82B9}, //{0xE8, 0x8A, 0xB9}, //
+ {0xBBA8, 0x82B1}, //{0xE8, 0x8A, 0xB1}, // ��
+ {0xB7BC, 0x82B3}, //{0xE8, 0x8A, 0xB3}, // ��
+ {0xC7DB, 0x82B9}, //{0xE8, 0x8A, 0xB9}, // ��
{0xD1BF, 0x82BD}, //{0xE8, 0x8A, 0xBD}, // ѿ
{0xCEAD, 0x82C7}, //{0xE8, 0x8B, 0x87}, // έ
- {0xB2D4, 0x82CD}, //{0xE8, 0x8B, 0x8D}, //
- {0xCBD5, 0x82CF}, //{0xE8, 0x8B, 0x8F}, //
+ {0xB2D4, 0x82CD}, //{0xE8, 0x8B, 0x8D}, // ��
+ {0xCBD5, 0x82CF}, //{0xE8, 0x8B, 0x8F}, // ��
{0xCCA6, 0x82D4}, //{0xE8, 0x8B, 0x94}, // ̦
- {0xC3E7, 0x82D7}, //{0xE8, 0x8B, 0x97}, //
- {0xBFC1, 0x82DB}, //{0xE8, 0x8B, 0x9B}, //
- {0xB0FA, 0x82DE}, //{0xE8, 0x8B, 0x9E}, //
- {0xB9B6, 0x82DF}, //{0xE8, 0x8B, 0x9F}, //
- {0xC8F4, 0x82E5}, //{0xE8, 0x8B, 0xA5}, //
- {0xBFE0, 0x82E6}, //{0xE8, 0x8B, 0xA6}, //
+ {0xC3E7, 0x82D7}, //{0xE8, 0x8B, 0x97}, // ��
+ {0xBFC1, 0x82DB}, //{0xE8, 0x8B, 0x9B}, // ��
+ {0xB0FA, 0x82DE}, //{0xE8, 0x8B, 0x9E}, // ��
+ {0xB9B6, 0x82DF}, //{0xE8, 0x8B, 0x9F}, // ��
+ {0xC8F4, 0x82E5}, //{0xE8, 0x8B, 0xA5}, // ��
+ {0xBFE0, 0x82E6}, //{0xE8, 0x8B, 0xA6}, // ��
{0xC9BB, 0x82EB}, //{0xE8, 0x8B, 0xAB}, // ɻ
{0xD3A2, 0x82F1}, //{0xE8, 0x8B, 0xB1}, // Ӣ
{0xC6BB, 0x82F9}, //{0xE8, 0x8B, 0xB9}, // ƻ
- {0xD7C2, 0x8301}, //{0xE8, 0x8C, 0x81}, //
+ {0xD7C2, 0x8301}, //{0xE8, 0x8C, 0x81}, // ��
{0xC3AF, 0x8302}, //{0xE8, 0x8C, 0x82}, // ï
- {0xB7B6, 0x8303}, //{0xE8, 0x8C, 0x83}, //
- {0xC7D1, 0x8304}, //{0xE8, 0x8C, 0x84}, //
+ {0xB7B6, 0x8303}, //{0xE8, 0x8C, 0x83}, // ��
+ {0xC7D1, 0x8304}, //{0xE8, 0x8C, 0x84}, // ��
{0xC3A9, 0x8305}, //{0xE8, 0x8C, 0x85}, // é
- {0xDCD4, 0x8309}, //{0xE8, 0x8C, 0x89}, //
- {0xBEA5, 0x830E}, //{0xE8, 0x8C, 0x8E}, //
- {0xBCEB, 0x8327}, //{0xE8, 0x8C, 0xA7}, //
+ {0xDCD4, 0x8309}, //{0xE8, 0x8C, 0x89}, // ��
+ {0xBEA5, 0x830E}, //{0xE8, 0x8C, 0x8E}, // ��
+ {0xBCEB, 0x8327}, //{0xE8, 0x8C, 0xA7}, // ��
{0xC3A3, 0x832B}, //{0xE8, 0x8C, 0xAB}, // ã
- {0xB2E7, 0x832C}, //{0xE8, 0x8C, 0xAC}, //
- {0xDCEE, 0x8334}, //{0xE8, 0x8C, 0xB4}, //
- {0xD2F0, 0x8335}, //{0xE8, 0x8C, 0xB5}, //
- {0xB2E8, 0x8336}, //{0xE8, 0x8C, 0xB6}, //
- {0xC8D7, 0x8338}, //{0xE8, 0x8C, 0xB8}, //
- {0xBEA3, 0x8346}, //{0xE8, 0x8D, 0x86}, //
- {0xB2DD, 0x8349}, //{0xE8, 0x8D, 0x89}, //
- {0xBCF6, 0x8350}, //{0xE8, 0x8D, 0x90}, //
- {0xBBC4, 0x8352}, //{0xE8, 0x8D, 0x92}, //
- {0xC0F3, 0x8354}, //{0xE8, 0x8D, 0x94}, //
- {0xBCD4, 0x835A}, //{0xE8, 0x8D, 0x9A}, //
- {0xDCF1, 0x835E}, //{0xE8, 0x8D, 0x9E}, //
- {0xDCF9, 0x8360}, //{0xE8, 0x8D, 0xA0}, //
- {0xB5B4, 0x8361}, //{0xE8, 0x8D, 0xA1}, //
- {0xC8D9, 0x8363}, //{0xE8, 0x8D, 0xA3}, //
- {0xBBE7, 0x8364}, //{0xE8, 0x8D, 0xA4}, //
+ {0xB2E7, 0x832C}, //{0xE8, 0x8C, 0xAC}, // ��
+ {0xDCEE, 0x8334}, //{0xE8, 0x8C, 0xB4}, // ��
+ {0xD2F0, 0x8335}, //{0xE8, 0x8C, 0xB5}, // ��
+ {0xB2E8, 0x8336}, //{0xE8, 0x8C, 0xB6}, // ��
+ {0xC8D7, 0x8338}, //{0xE8, 0x8C, 0xB8}, // ��
+ {0xBEA3, 0x8346}, //{0xE8, 0x8D, 0x86}, // ��
+ {0xB2DD, 0x8349}, //{0xE8, 0x8D, 0x89}, // ��
+ {0xBCF6, 0x8350}, //{0xE8, 0x8D, 0x90}, // ��
+ {0xBBC4, 0x8352}, //{0xE8, 0x8D, 0x92}, // ��
+ {0xC0F3, 0x8354}, //{0xE8, 0x8D, 0x94}, // ��
+ {0xBCD4, 0x835A}, //{0xE8, 0x8D, 0x9A}, // ��
+ {0xDCF1, 0x835E}, //{0xE8, 0x8D, 0x9E}, // ��
+ {0xDCF9, 0x8360}, //{0xE8, 0x8D, 0xA0}, // ��
+ {0xB5B4, 0x8361}, //{0xE8, 0x8D, 0xA1}, // ��
+ {0xC8D9, 0x8363}, //{0xE8, 0x8D, 0xA3}, // ��
+ {0xBBE7, 0x8364}, //{0xE8, 0x8D, 0xA4}, // ��
{0xD3AB, 0x8367}, //{0xE8, 0x8D, 0xA7}, // ӫ
{0xD2A9, 0x836F}, //{0xE8, 0x8D, 0xAF}, // ҩ
- {0xBAC9, 0x8377}, //{0xE8, 0x8D, 0xB7}, //
+ {0xBAC9, 0x8377}, //{0xE8, 0x8D, 0xB7}, // ��
{0xDDA9, 0x8378}, //{0xE8, 0x8D, 0xB8}, // ݩ
- {0xC0F2, 0x8389}, //{0xE8, 0x8E, 0x89}, //
+ {0xC0F2, 0x8389}, //{0xE8, 0x8E, 0x89}, // ��
{0xC4AA, 0x83AB}, //{0xE8, 0x8E, 0xAB}, // Ī
- {0xC0B3, 0x83B1}, //{0xE8, 0x8E, 0xB1}, //
- {0xC1AB, 0x83B2}, //{0xE8, 0x8E, 0xB2}, //
- {0xBBF1, 0x83B7}, //{0xE8, 0x8E, 0xB7}, //
+ {0xC0B3, 0x83B1}, //{0xE8, 0x8E, 0xB1}, // 3
+ {0xC1AB, 0x83B2}, //{0xE8, 0x8E, 0xB2}, // k
+ {0xBBF1, 0x83B7}, //{0xE8, 0x8E, 0xB7}, // ��
{0xD3A8, 0x83B9}, //{0xE8, 0x8E, 0xB9}, // Ө
{0xDDBA, 0x83BA}, //{0xE8, 0x8E, 0xBA}, // ݺ
{0xC3A7, 0x83BD}, //{0xE8, 0x8E, 0xBD}, // ç
- {0xB9BD, 0x83C7}, //{0xE8, 0x8F, 0x87}, //
- {0xBED5, 0x83CA}, //{0xE8, 0x8F, 0x8A}, //
- {0xBEFA, 0x83CC}, //{0xE8, 0x8F, 0x8C}, //
- {0xB2CB, 0x83DC}, //{0xE8, 0x8F, 0x9C}, //
- {0xB2A4, 0x83E0}, //{0xE8, 0x8F, 0xA0}, //
- {0xC6D0, 0x83E9}, //{0xE8, 0x8F, 0xA9}, //
- {0xC1E2, 0x83F1}, //{0xE8, 0x8F, 0xB1}, //
- {0xB7C6, 0x83F2}, //{0xE8, 0x8F, 0xB2}, //
- {0xCCD1, 0x8404}, //{0xE8, 0x90, 0x84}, //
- {0xC3C8, 0x840C}, //{0xE8, 0x90, 0x8C}, //
+ {0xB9BD, 0x83C7}, //{0xE8, 0x8F, 0x87}, // ��
+ {0xBED5, 0x83CA}, //{0xE8, 0x8F, 0x8A}, // ��
+ {0xBEFA, 0x83CC}, //{0xE8, 0x8F, 0x8C}, // ��
+ {0xB2CB, 0x83DC}, //{0xE8, 0x8F, 0x9C}, // ��
+ {0xB2A4, 0x83E0}, //{0xE8, 0x8F, 0xA0}, // ��
+ {0xC6D0, 0x83E9}, //{0xE8, 0x8F, 0xA9}, // ��
+ {0xC1E2, 0x83F1}, //{0xE8, 0x8F, 0xB1}, // ��
+ {0xB7C6, 0x83F2}, //{0xE8, 0x8F, 0xB2}, // ��
+ {0xCCD1, 0x8404}, //{0xE8, 0x90, 0x84}, // ��
+ {0xC3C8, 0x840C}, //{0xE8, 0x90, 0x8C}, // ��
{0xC6BC, 0x840D}, //{0xE8, 0x90, 0x8D}, // Ƽ
{0xCEAE, 0x840E}, //{0xE8, 0x90, 0x8E}, // ή
- {0xC2DC, 0x841D}, //{0xE8, 0x90, 0x9D}, //
+ {0xC2DC, 0x841D}, //{0xE8, 0x90, 0x9D}, // ��
{0xD3A9, 0x8424}, //{0xE8, 0x90, 0xA4}, // ө
{0xD3AA, 0x8425}, //{0xE8, 0x90, 0xA5}, // Ӫ
- {0xCFF4, 0x8427}, //{0xE8, 0x90, 0xA7}, //
- {0xC8F8, 0x8428}, //{0xE8, 0x90, 0xA8}, //
- {0xC2E4, 0x843D}, //{0xE8, 0x90, 0xBD}, //
- {0xD6F8, 0x8457}, //{0xE8, 0x91, 0x97}, //
- {0xB8F0, 0x845B}, //{0xE8, 0x91, 0x9B}, //
- {0xC6CF, 0x8461}, //{0xE8, 0x91, 0xA1}, //
- {0xB6AD, 0x8463}, //{0xE8, 0x91, 0xA3}, //
- {0xBAF9, 0x846B}, //{0xE8, 0x91, 0xAB}, //
- {0xD4E1, 0x846C}, //{0xE8, 0x91, 0xAC}, //
- {0xB4D0, 0x8471}, //{0xE8, 0x91, 0xB1}, //
- {0xBFFB, 0x8475}, //{0xE8, 0x91, 0xB5}, //
- {0xB5D9, 0x8482}, //{0xE8, 0x92, 0x82}, //
- {0xBDAF, 0x848B}, //{0xE8, 0x92, 0x8B}, //
- {0xC3C9, 0x8499}, //{0xE8, 0x92, 0x99}, //
- {0xCBE2, 0x849C}, //{0xE8, 0x92, 0x9C}, //
- {0xC6D1, 0x84B2}, //{0xE8, 0x92, 0xB2}, //
- {0xD5F4, 0x84B8}, //{0xE8, 0x92, 0xB8}, //
- {0xDDEF, 0x84BF}, //{0xE8, 0x92, 0xBF}, //
- {0xD0EE, 0x84C4}, //{0xE8, 0x93, 0x84}, //
- {0xC8D8, 0x84C9}, //{0xE8, 0x93, 0x89}, //
- {0xB1CD, 0x84D6}, //{0xE8, 0x93, 0x96}, //
- {0xC0B6, 0x84DD}, //{0xE8, 0x93, 0x9D}, //
- {0xC5EE, 0x84EC}, //{0xE8, 0x93, 0xAC}, //
- {0xC3EF, 0x8511}, //{0xE8, 0x94, 0x91}, //
- {0xC2FB, 0x8513}, //{0xE8, 0x94, 0x93}, //
- {0xD5E1, 0x8517}, //{0xE8, 0x94, 0x97}, //
+ {0xCFF4, 0x8427}, //{0xE8, 0x90, 0xA7}, // ��
+ {0xC8F8, 0x8428}, //{0xE8, 0x90, 0xA8}, // ��
+ {0xC2E4, 0x843D}, //{0xE8, 0x90, 0xBD}, // ��
+ {0xD6F8, 0x8457}, //{0xE8, 0x91, 0x97}, // ��
+ {0xB8F0, 0x845B}, //{0xE8, 0x91, 0x9B}, // ��
+ {0xC6CF, 0x8461}, //{0xE8, 0x91, 0xA1}, // ��
+ {0xB6AD, 0x8463}, //{0xE8, 0x91, 0xA3}, // ��
+ {0xBAF9, 0x846B}, //{0xE8, 0x91, 0xAB}, // ��
+ {0xD4E1, 0x846C}, //{0xE8, 0x91, 0xAC}, // ��
+ {0xB4D0, 0x8471}, //{0xE8, 0x91, 0xB1}, // ��
+ {0xBFFB, 0x8475}, //{0xE8, 0x91, 0xB5}, // ��
+ {0xB5D9, 0x8482}, //{0xE8, 0x92, 0x82}, // ��
+ {0xBDAF, 0x848B}, //{0xE8, 0x92, 0x8B}, // ��
+ {0xC3C9, 0x8499}, //{0xE8, 0x92, 0x99}, // ��
+ {0xCBE2, 0x849C}, //{0xE8, 0x92, 0x9C}, // ��
+ {0xC6D1, 0x84B2}, //{0xE8, 0x92, 0xB2}, // ��
+ {0xD5F4, 0x84B8}, //{0xE8, 0x92, 0xB8}, // ��
+ {0xDDEF, 0x84BF}, //{0xE8, 0x92, 0xBF}, // ��
+ {0xD0EE, 0x84C4}, //{0xE8, 0x93, 0x84}, // ��
+ {0xC8D8, 0x84C9}, //{0xE8, 0x93, 0x89}, // ��
+ {0xB1CD, 0x84D6}, //{0xE8, 0x93, 0x96}, // ��
+ {0xC0B6, 0x84DD}, //{0xE8, 0x93, 0x9D}, // 6
+ {0xC5EE, 0x84EC}, //{0xE8, 0x93, 0xAC}, // ��
+ {0xC3EF, 0x8511}, //{0xE8, 0x94, 0x91}, // ��
+ {0xC2FB, 0x8513}, //{0xE8, 0x94, 0x93}, // ��
+ {0xD5E1, 0x8517}, //{0xE8, 0x94, 0x97}, // ��
{0xCEB5, 0x851A}, //{0xE8, 0x94, 0x9A}, // ε
- {0xC4E8, 0x852B}, //{0xE8, 0x94, 0xAB}, //
- {0xCADF, 0x852C}, //{0xE8, 0x94, 0xAC}, //
- {0xB0AA, 0x853C}, //{0xE8, 0x94, 0xBC}, //
- {0xB1CE, 0x853D}, //{0xE8, 0x94, 0xBD}, //
- {0xBDB6, 0x8549}, //{0xE8, 0x95, 0x89}, //
- {0xC8EF, 0x854A}, //{0xE8, 0x95, 0x8A}, //
- {0xD4CC, 0x8574}, //{0xE8, 0x95, 0xB4}, //
- {0xC0D9, 0x857E}, //{0xE8, 0x95, 0xBE}, //
- {0xB1A1, 0x8584}, //{0xE8, 0x96, 0x84}, //
+ {0xC4E8, 0x852B}, //{0xE8, 0x94, 0xAB}, // ��
+ {0xCADF, 0x852C}, //{0xE8, 0x94, 0xAC}, // ��
+ {0xB0AA, 0x853C}, //{0xE8, 0x94, 0xBC}, // ��
+ {0xB1CE, 0x853D}, //{0xE8, 0x94, 0xBD}, // ��
+ {0xBDB6, 0x8549}, //{0xE8, 0x95, 0x89}, // ��
+ {0xC8EF, 0x854A}, //{0xE8, 0x95, 0x8A}, // ��
+ {0xD4CC, 0x8574}, //{0xE8, 0x95, 0xB4}, // ��
+ {0xC0D9, 0x857E}, //{0xE8, 0x95, 0xBE}, // ��
+ {0xB1A1, 0x8584}, //{0xE8, 0x96, 0x84}, // ��
{0xDEB1, 0x8587}, //{0xE8, 0x96, 0x87}, // ޱ
{0xD1A6, 0x859B}, //{0xE8, 0x96, 0x9B}, // Ѧ
{0xD0BD, 0x85AA}, //{0xE8, 0x96, 0xAA}, // н
- {0xCAED, 0x85AF}, //{0xE8, 0x96, 0xAF}, //
- {0xB2D8, 0x85CF}, //{0xE8, 0x97, 0x8F}, //
- {0xC3EA, 0x85D0}, //{0xE8, 0x97, 0x90}, //
+ {0xCAED, 0x85AF}, //{0xE8, 0x96, 0xAF}, // ��
+ {0xB2D8, 0x85CF}, //{0xE8, 0x97, 0x8F}, // ��
+ {0xC3EA, 0x85D0}, //{0xE8, 0x97, 0x90}, // ��
{0xC5BA, 0x85D5}, //{0xE8, 0x97, 0x95}, // ź
- {0xCCD9, 0x85E4}, //{0xE8, 0x97, 0xA4}, //
- {0xD4E5, 0x85FB}, //{0xE8, 0x97, 0xBB}, //
+ {0xCCD9, 0x85E4}, //{0xE8, 0x97, 0xA4}, // ��
+ {0xD4E5, 0x85FB}, //{0xE8, 0x97, 0xBB}, // ��
{0xC4A2, 0x8611}, //{0xE8, 0x98, 0x91}, // Ģ
{0xD5BA, 0x8638}, //{0xE8, 0x98, 0xB8}, // պ
- {0xBBA2, 0x864E}, //{0xE8, 0x99, 0x8E}, //
+ {0xBBA2, 0x864E}, //{0xE8, 0x99, 0x8E}, // ��
{0xC2B2, 0x864F}, //{0xE8, 0x99, 0x8F}, // ²
{0xC5B0, 0x8650}, //{0xE8, 0x99, 0x90}, // Ű
- {0xC2C7, 0x8651}, //{0xE8, 0x99, 0x91}, //
- {0xD0E9, 0x865A}, //{0xE8, 0x99, 0x9A}, //
- {0xB3E6, 0x866B}, //{0xE8, 0x99, 0xAB}, //
+ {0xC2C7, 0x8651}, //{0xE8, 0x99, 0x91}, // ��
+ {0xD0E9, 0x865A}, //{0xE8, 0x99, 0x9A}, // ��
+ {0xB3E6, 0x866B}, //{0xE8, 0x99, 0xAB}, // ��
{0xCAAD, 0x8671}, //{0xE8, 0x99, 0xB1}, // ʭ
- {0xBAE7, 0x8679}, //{0xE8, 0x99, 0xB9}, //
- {0xCBE4, 0x867D}, //{0xE8, 0x99, 0xBD}, //
+ {0xBAE7, 0x8679}, //{0xE8, 0x99, 0xB9}, // ��
+ {0xCBE4, 0x867D}, //{0xE8, 0x99, 0xBD}, // ��
{0xCFBA, 0x867E}, //{0xE8, 0x99, 0xBE}, // Ϻ
{0xCAB4, 0x8680}, //{0xE8, 0x9A, 0x80}, // ʴ
- {0xD2CF, 0x8681}, //{0xE8, 0x9A, 0x81}, //
- {0xC2EC, 0x8682}, //{0xE8, 0x9A, 0x82}, //
- {0xCEC3, 0x868A}, //{0xE8, 0x9A, 0x8A}, //
- {0xB0F6, 0x868C}, //{0xE8, 0x9A, 0x8C}, //
- {0xF2BE, 0x8693}, //{0xE8, 0x9A, 0x93}, //
- {0xB2CF, 0x8695}, //{0xE8, 0x9A, 0x95}, //
- {0xD1C1, 0x869C}, //{0xE8, 0x9A, 0x9C}, //
- {0xF2BC, 0x86A3}, //{0xE8, 0x9A, 0xA3}, //
- {0xD4E9, 0x86A4}, //{0xE8, 0x9A, 0xA4}, //
- {0xF2BD, 0x86AA}, //{0xE8, 0x9A, 0xAA}, //
- {0xF2C7, 0x86AF}, //{0xE8, 0x9A, 0xAF}, //
- {0xD6FB, 0x86C0}, //{0xE8, 0x9B, 0x80}, //
- {0xC7F9, 0x86C6}, //{0xE8, 0x9B, 0x86}, //
- {0xC9DF, 0x86C7}, //{0xE8, 0x9B, 0x87}, //
- {0xF2C8, 0x86C9}, //{0xE8, 0x9B, 0x89}, //
- {0xB5B0, 0x86CB}, //{0xE8, 0x9B, 0x8B}, //
- {0xBBD7, 0x86D4}, //{0xE8, 0x9B, 0x94}, //
- {0xCDDC, 0x86D9}, //{0xE8, 0x9B, 0x99}, //
- {0xD6EB, 0x86DB}, //{0xE8, 0x9B, 0x9B}, //
- {0xB8F2, 0x86E4}, //{0xE8, 0x9B, 0xA4}, //
- {0xC2F9, 0x86EE}, //{0xE8, 0x9B, 0xAE}, //
+ {0xD2CF, 0x8681}, //{0xE8, 0x9A, 0x81}, // ��
+ {0xC2EC, 0x8682}, //{0xE8, 0x9A, 0x82}, // ��
+ {0xCEC3, 0x868A}, //{0xE8, 0x9A, 0x8A}, // ��
+ {0xB0F6, 0x868C}, //{0xE8, 0x9A, 0x8C}, // ��
+ {0xF2BE, 0x8693}, //{0xE8, 0x9A, 0x93}, // �
+ {0xB2CF, 0x8695}, //{0xE8, 0x9A, 0x95}, // ��
+ {0xD1C1, 0x869C}, //{0xE8, 0x9A, 0x9C}, // ��
+ {0xF2BC, 0x86A3}, //{0xE8, 0x9A, 0xA3}, // �
+ {0xD4E9, 0x86A4}, //{0xE8, 0x9A, 0xA4}, // ��
+ {0xF2BD, 0x86AA}, //{0xE8, 0x9A, 0xAA}, // �
+ {0xF2C7, 0x86AF}, //{0xE8, 0x9A, 0xAF}, // ��
+ {0xD6FB, 0x86C0}, //{0xE8, 0x9B, 0x80}, // ��
+ {0xC7F9, 0x86C6}, //{0xE8, 0x9B, 0x86}, // ��
+ {0xC9DF, 0x86C7}, //{0xE8, 0x9B, 0x87}, // ��
+ {0xF2C8, 0x86C9}, //{0xE8, 0x9B, 0x89}, // ��
+ {0xB5B0, 0x86CB}, //{0xE8, 0x9B, 0x8B}, // ��
+ {0xBBD7, 0x86D4}, //{0xE8, 0x9B, 0x94}, // ��
+ {0xCDDC, 0x86D9}, //{0xE8, 0x9B, 0x99}, // ��
+ {0xD6EB, 0x86DB}, //{0xE8, 0x9B, 0x9B}, // ��
+ {0xB8F2, 0x86E4}, //{0xE8, 0x9B, 0xA4}, // ��
+ {0xC2F9, 0x86EE}, //{0xE8, 0x9B, 0xAE}, // ��
{0xD3BC, 0x86F9}, //{0xE8, 0x9B, 0xB9}, // Ӽ
- {0xB6EA, 0x86FE}, //{0xE8, 0x9B, 0xBE}, //
- {0xCAF1, 0x8700}, //{0xE8, 0x9C, 0x80}, //
- {0xB7E4, 0x8702}, //{0xE8, 0x9C, 0x82}, //
- {0xF2DA, 0x8708}, //{0xE8, 0x9C, 0x88}, //
- {0xD1D1, 0x8712}, //{0xE8, 0x9C, 0x92}, //
- {0xF2D1, 0x8713}, //{0xE8, 0x9C, 0x93}, //
- {0xCDC9, 0x8715}, //{0xE8, 0x9C, 0x95}, //
- {0xCECF, 0x8717}, //{0xE8, 0x9C, 0x97}, //
+ {0xB6EA, 0x86FE}, //{0xE8, 0x9B, 0xBE}, // ��
+ {0xCAF1, 0x8700}, //{0xE8, 0x9C, 0x80}, // ��
+ {0xB7E4, 0x8702}, //{0xE8, 0x9C, 0x82}, // ��
+ {0xF2DA, 0x8708}, //{0xE8, 0x9C, 0x88}, // ��
+ {0xD1D1, 0x8712}, //{0xE8, 0x9C, 0x92}, // ��
+ {0xF2D1, 0x8713}, //{0xE8, 0x9C, 0x93}, // ��
+ {0xCDC9, 0x8715}, //{0xE8, 0x9C, 0x95}, // ��
+ {0xCECF, 0x8717}, //{0xE8, 0x9C, 0x97}, // ��
{0xD6A9, 0x8718}, //{0xE8, 0x9C, 0x98}, // ֩
- {0xC3DB, 0x871C}, //{0xE8, 0x9C, 0x9C}, //
- {0xC0AF, 0x8721}, //{0xE8, 0x9C, 0xA1}, //
- {0xF2DF, 0x873B}, //{0xE8, 0x9C, 0xBB}, //
+ {0xC3DB, 0x871C}, //{0xE8, 0x9C, 0x9C}, // ��
+ {0xC0AF, 0x8721}, //{0xE8, 0x9C, 0xA1}, // /
+ {0xF2DF, 0x873B}, //{0xE8, 0x9C, 0xBB}, // ��
{0xD3AC, 0x8747}, //{0xE8, 0x9D, 0x87}, // Ӭ
- {0xB2F5, 0x8749}, //{0xE8, 0x9D, 0x89}, //
- {0xF2F2, 0x874C}, //{0xE8, 0x9D, 0x8C}, //
+ {0xB2F5, 0x8749}, //{0xE8, 0x9D, 0x89}, // ��
+ {0xF2F2, 0x874C}, //{0xE8, 0x9D, 0x8C}, // ��
{0xD0AB, 0x874E}, //{0xE8, 0x9D, 0x8E}, // Ы
- {0xBBC8, 0x8757}, //{0xE8, 0x9D, 0x97}, //
- {0xF2F9, 0x8759}, //{0xE8, 0x9D, 0x99}, //
- {0xF2F0, 0x8760}, //{0xE8, 0x9D, 0xA0}, //
- {0xBAFB, 0x8774}, //{0xE8, 0x9D, 0xB4}, //
- {0xB5FB, 0x8776}, //{0xE8, 0x9D, 0xB6}, //
- {0xF3A6, 0x8783}, //{0xE8, 0x9E, 0x83}, //
- {0xC8DA, 0x878D}, //{0xE8, 0x9E, 0x8D}, //
- {0xC3F8, 0x879F}, //{0xE8, 0x9E, 0x9F}, //
- {0xC2DD, 0x87BA}, //{0xE8, 0x9E, 0xBA}, //
- {0xF3B0, 0x87C0}, //{0xE8, 0x9F, 0x80}, //
- {0xF3A1, 0x87C6}, //{0xE8, 0x9F, 0x86}, //
- {0xF3AC, 0x87CB}, //{0xE8, 0x9F, 0x8B}, //
+ {0xBBC8, 0x8757}, //{0xE8, 0x9D, 0x97}, // ��
+ {0xF2F9, 0x8759}, //{0xE8, 0x9D, 0x99}, // ��
+ {0xF2F0, 0x8760}, //{0xE8, 0x9D, 0xA0}, // ��
+ {0xBAFB, 0x8774}, //{0xE8, 0x9D, 0xB4}, // ��
+ {0xB5FB, 0x8776}, //{0xE8, 0x9D, 0xB6}, // ��
+ {0xF3A6, 0x8783}, //{0xE8, 0x9E, 0x83}, // �
+ {0xC8DA, 0x878D}, //{0xE8, 0x9E, 0x8D}, // ��
+ {0xC3F8, 0x879F}, //{0xE8, 0x9E, 0x9F}, // ��
+ {0xC2DD, 0x87BA}, //{0xE8, 0x9E, 0xBA}, // ��
+ {0xF3B0, 0x87C0}, //{0xE8, 0x9F, 0x80}, // �
+ {0xF3A1, 0x87C6}, //{0xE8, 0x9F, 0x86}, // �
+ {0xF3AC, 0x87CB}, //{0xE8, 0x9F, 0x8B}, // �
{0xD0B7, 0x87F9}, //{0xE8, 0x9F, 0xB9}, // з
- {0xC8E4, 0x8815}, //{0xE8, 0xA0, 0x95}, //
- {0xB4C0, 0x8822}, //{0xE8, 0xA0, 0xA2}, //
+ {0xC8E4, 0x8815}, //{0xE8, 0xA0, 0x95}, // ��
+ {0xB4C0, 0x8822}, //{0xE8, 0xA0, 0xA2}, // ��
{0xD1AA, 0x8840}, //{0xE8, 0xA1, 0x80}, // Ѫ
- {0xD0C6, 0x8845}, //{0xE8, 0xA1, 0x85}, //
- {0xD0D0, 0x884C}, //{0xE8, 0xA1, 0x8C}, //
- {0xD1DC, 0x884D}, //{0xE8, 0xA1, 0x8D}, //
- {0xCFCE, 0x8854}, //{0xE8, 0xA1, 0x94}, //
- {0xBDD6, 0x8857}, //{0xE8, 0xA1, 0x97}, //
- {0xD1C3, 0x8859}, //{0xE8, 0xA1, 0x99}, //
- {0xBAE2, 0x8861}, //{0xE8, 0xA1, 0xA1}, //
- {0xD2C2, 0x8863}, //{0xE8, 0xA1, 0xA3}, //
- {0xB2B9, 0x8865}, //{0xE8, 0xA1, 0xA5}, //
- {0xB1ED, 0x8868}, //{0xE8, 0xA1, 0xA8}, //
- {0xF1C3, 0x8869}, //{0xE8, 0xA1, 0xA9}, //
- {0xC9C0, 0x886B}, //{0xE8, 0xA1, 0xAB}, //
- {0xB3C4, 0x886C}, //{0xE8, 0xA1, 0xAC}, //
+ {0xD0C6, 0x8845}, //{0xE8, 0xA1, 0x85}, // ��
+ {0xD0D0, 0x884C}, //{0xE8, 0xA1, 0x8C}, // ��
+ {0xD1DC, 0x884D}, //{0xE8, 0xA1, 0x8D}, // ��
+ {0xCFCE, 0x8854}, //{0xE8, 0xA1, 0x94}, // ��
+ {0xBDD6, 0x8857}, //{0xE8, 0xA1, 0x97}, // ��
+ {0xD1C3, 0x8859}, //{0xE8, 0xA1, 0x99}, // ��
+ {0xBAE2, 0x8861}, //{0xE8, 0xA1, 0xA1}, // ��
+ {0xD2C2, 0x8863}, //{0xE8, 0xA1, 0xA3}, // ��
+ {0xB2B9, 0x8865}, //{0xE8, 0xA1, 0xA5}, // ��
+ {0xB1ED, 0x8868}, //{0xE8, 0xA1, 0xA8}, // ��
+ {0xF1C3, 0x8869}, //{0xE8, 0xA1, 0xA9}, // ��
+ {0xC9C0, 0x886B}, //{0xE8, 0xA1, 0xAB}, // ��
+ {0xB3C4, 0x886C}, //{0xE8, 0xA1, 0xAC}, // ��
{0xCBA5, 0x8870}, //{0xE8, 0xA1, 0xB0}, // ˥
- {0xD6D4, 0x8877}, //{0xE8, 0xA1, 0xB7}, //
+ {0xD6D4, 0x8877}, //{0xE8, 0xA1, 0xB7}, // ��
{0xD4AC, 0x8881}, //{0xE8, 0xA2, 0x81}, // Ԭ
- {0xB0C0, 0x8884}, //{0xE8, 0xA2, 0x84}, //
- {0xB4FC, 0x888B}, //{0xE8, 0xA2, 0x8B}, //
- {0xC5DB, 0x888D}, //{0xE8, 0xA2, 0x8D}, //
+ {0xB0C0, 0x8884}, //{0xE8, 0xA2, 0x84}, // ��
+ {0xB4FC, 0x888B}, //{0xE8, 0xA2, 0x8B}, // ��
+ {0xC5DB, 0x888D}, //{0xE8, 0xA2, 0x8D}, // ��
{0xCCBB, 0x8892}, //{0xE8, 0xA2, 0x92}, // ̻
- {0xD0E4, 0x8896}, //{0xE8, 0xA2, 0x96}, //
- {0xCDE0, 0x889C}, //{0xE8, 0xA2, 0x9C}, //
- {0xB1BB, 0x88AB}, //{0xE8, 0xA2, 0xAB}, //
+ {0xD0E4, 0x8896}, //{0xE8, 0xA2, 0x96}, // ��
+ {0xCDE0, 0x889C}, //{0xE8, 0xA2, 0x9C}, // ��
+ {0xB1BB, 0x88AB}, //{0xE8, 0xA2, 0xAB}, // ��
{0xCFAE, 0x88AD}, //{0xE8, 0xA2, 0xAD}, // Ϯ
- {0xB8A4, 0x88B1}, //{0xE8, 0xA2, 0xB1}, //
- {0xB2C3, 0x88C1}, //{0xE8, 0xA3, 0x81}, //
- {0xC1D1, 0x88C2}, //{0xE8, 0xA3, 0x82}, //
+ {0xB8A4, 0x88B1}, //{0xE8, 0xA2, 0xB1}, // ��
+ {0xB2C3, 0x88C1}, //{0xE8, 0xA3, 0x81}, // ��
+ {0xC1D1, 0x88C2}, //{0xE8, 0xA3, 0x82}, // ��
{0xD7B0, 0x88C5}, //{0xE8, 0xA3, 0x85}, // װ
- {0xF1C9, 0x88C6}, //{0xE8, 0xA3, 0x86}, //
- {0xF1CC, 0x88C9}, //{0xE8, 0xA3, 0x89}, //
+ {0xF1C9, 0x88C6}, //{0xE8, 0xA3, 0x86}, // ��
+ {0xF1CC, 0x88C9}, //{0xE8, 0xA3, 0x89}, // ��
{0xD4A3, 0x88D5}, //{0xE8, 0xA3, 0x95}, // ԣ
{0xC8B9, 0x88D9}, //{0xE8, 0xA3, 0x99}, // ȹ
- {0xBFE3, 0x88E4}, //{0xE8, 0xA3, 0xA4}, //
- {0xC9D1, 0x88F3}, //{0xE8, 0xA3, 0xB3}, //
- {0xC2E3, 0x88F8}, //{0xE8, 0xA3, 0xB8}, //
- {0xB9FC, 0x88F9}, //{0xE8, 0xA3, 0xB9}, //
- {0xB9D3, 0x8902}, //{0xE8, 0xA4, 0x82}, //
- {0xBAD6, 0x8910}, //{0xE8, 0xA4, 0x90}, //
- {0xB0FD, 0x8912}, //{0xE8, 0xA4, 0x92}, //
- {0xC8EC, 0x8925}, //{0xE8, 0xA4, 0xA5}, //
- {0xBDF3, 0x895F}, //{0xE8, 0xA5, 0x9F}, //
- {0xCEF7, 0x897F}, //{0xE8, 0xA5, 0xBF}, //
+ {0xBFE3, 0x88E4}, //{0xE8, 0xA3, 0xA4}, // ��
+ {0xC9D1, 0x88F3}, //{0xE8, 0xA3, 0xB3}, // ��
+ {0xC2E3, 0x88F8}, //{0xE8, 0xA3, 0xB8}, // ��
+ {0xB9FC, 0x88F9}, //{0xE8, 0xA3, 0xB9}, // ��
+ {0xB9D3, 0x8902}, //{0xE8, 0xA4, 0x82}, // ��
+ {0xBAD6, 0x8910}, //{0xE8, 0xA4, 0x90}, // ��
+ {0xB0FD, 0x8912}, //{0xE8, 0xA4, 0x92}, // ��
+ {0xC8EC, 0x8925}, //{0xE8, 0xA4, 0xA5}, // ��
+ {0xBDF3, 0x895F}, //{0xE8, 0xA5, 0x9F}, // ��
+ {0xCEF7, 0x897F}, //{0xE8, 0xA5, 0xBF}, // ��
{0xD2AA, 0x8981}, //{0xE8, 0xA6, 0x81}, // Ҫ
- {0xB8B2, 0x8986}, //{0xE8, 0xA6, 0x86}, //
- {0xBCFB, 0x89C1}, //{0xE8, 0xA7, 0x81}, //
- {0xB9DB, 0x89C2}, //{0xE8, 0xA7, 0x82}, //
- {0xB9E6, 0x89C4}, //{0xE8, 0xA7, 0x84}, //
- {0xC3D9, 0x89C5}, //{0xE8, 0xA7, 0x85}, //
- {0xCAD3, 0x89C6}, //{0xE8, 0xA7, 0x86}, //
- {0xC0C0, 0x89C8}, //{0xE8, 0xA7, 0x88}, //
- {0xBEF5, 0x89C9}, //{0xE8, 0xA7, 0x89}, //
- {0xBDC7, 0x89D2}, //{0xE8, 0xA7, 0x92}, //
- {0xBDE2, 0x89E3}, //{0xE8, 0xA7, 0xA3}, //
- {0xB4A5, 0x89E6}, //{0xE8, 0xA7, 0xA6}, //
- {0xD1D4, 0x8A00}, //{0xE8, 0xA8, 0x80}, //
- {0xD3FE, 0x8A89}, //{0xE8, 0xAA, 0x89}, //
- {0xCCDC, 0x8A8A}, //{0xE8, 0xAA, 0x8A}, //
- {0xCAC4, 0x8A93}, //{0xE8, 0xAA, 0x93}, //
- {0xBEAF, 0x8B66}, //{0xE8, 0xAD, 0xA6}, //
+ {0xB8B2, 0x8986}, //{0xE8, 0xA6, 0x86}, // ��
+ {0xBCFB, 0x89C1}, //{0xE8, 0xA7, 0x81}, // ��
+ {0xB9DB, 0x89C2}, //{0xE8, 0xA7, 0x82}, // ��
+ {0xB9E6, 0x89C4}, //{0xE8, 0xA7, 0x84}, // ��
+ {0xC3D9, 0x89C5}, //{0xE8, 0xA7, 0x85}, // ��
+ {0xCAD3, 0x89C6}, //{0xE8, 0xA7, 0x86}, // ��
+ {0xC0C0, 0x89C8}, //{0xE8, 0xA7, 0x88}, // ��
+ {0xBEF5, 0x89C9}, //{0xE8, 0xA7, 0x89}, // ��
+ {0xBDC7, 0x89D2}, //{0xE8, 0xA7, 0x92}, // ��
+ {0xBDE2, 0x89E3}, //{0xE8, 0xA7, 0xA3}, // ��
+ {0xB4A5, 0x89E6}, //{0xE8, 0xA7, 0xA6}, // ��
+ {0xD1D4, 0x8A00}, //{0xE8, 0xA8, 0x80}, // ��
+ {0xD3FE, 0x8A89}, //{0xE8, 0xAA, 0x89}, // ��
+ {0xCCDC, 0x8A8A}, //{0xE8, 0xAA, 0x8A}, // ��
+ {0xCAC4, 0x8A93}, //{0xE8, 0xAA, 0x93}, // ��
+ {0xBEAF, 0x8B66}, //{0xE8, 0xAD, 0xA6}, // ��
{0xC6A9, 0x8B6C}, //{0xE8, 0xAD, 0xAC}, // Ʃ
- {0xBCC6, 0x8BA1}, //{0xE8, 0xAE, 0xA1}, //
- {0xB6A9, 0x8BA2}, //{0xE8, 0xAE, 0xA2}, //
- {0xC8CF, 0x8BA4}, //{0xE8, 0xAE, 0xA4}, //
- {0xBCA5, 0x8BA5}, //{0xE8, 0xAE, 0xA5}, //
- {0xCCD6, 0x8BA8}, //{0xE8, 0xAE, 0xA8}, //
- {0xC8C3, 0x8BA9}, //{0xE8, 0xAE, 0xA9}, //
+ {0xBCC6, 0x8BA1}, //{0xE8, 0xAE, 0xA1}, // ��
+ {0xB6A9, 0x8BA2}, //{0xE8, 0xAE, 0xA2}, // ��
+ {0xC8CF, 0x8BA4}, //{0xE8, 0xAE, 0xA4}, // ��
+ {0xBCA5, 0x8BA5}, //{0xE8, 0xAE, 0xA5}, // ��
+ {0xCCD6, 0x8BA8}, //{0xE8, 0xAE, 0xA8}, // ��
+ {0xC8C3, 0x8BA9}, //{0xE8, 0xAE, 0xA9}, // ��
{0xD1B5, 0x8BAD}, //{0xE8, 0xAE, 0xAD}, // ѵ
- {0xD2E9, 0x8BAE}, //{0xE8, 0xAE, 0xAE}, //
+ {0xD2E9, 0x8BAE}, //{0xE8, 0xAE, 0xAE}, // ��
{0xD1B6, 0x8BAF}, //{0xE8, 0xAE, 0xAF}, // Ѷ
- {0xBCC7, 0x8BB0}, //{0xE8, 0xAE, 0xB0}, //
- {0xBDB2, 0x8BB2}, //{0xE8, 0xAE, 0xB2}, //
- {0xBBE4, 0x8BB3}, //{0xE8, 0xAE, 0xB3}, //
- {0xD1C8, 0x8BB6}, //{0xE8, 0xAE, 0xB6}, //
- {0xD0ED, 0x8BB8}, //{0xE8, 0xAE, 0xB8}, //
- {0xB6EF, 0x8BB9}, //{0xE8, 0xAE, 0xB9}, //
- {0xC2DB, 0x8BBA}, //{0xE8, 0xAE, 0xBA}, //
- {0xCBCF, 0x8BBC}, //{0xE8, 0xAE, 0xBC}, //
- {0xB7ED, 0x8BBD}, //{0xE8, 0xAE, 0xBD}, //
- {0xC9E8, 0x8BBE}, //{0xE8, 0xAE, 0xBE}, //
- {0xB7C3, 0x8BBF}, //{0xE8, 0xAE, 0xBF}, //
- {0xBEF7, 0x8BC0}, //{0xE8, 0xAF, 0x80}, //
+ {0xBCC7, 0x8BB0}, //{0xE8, 0xAE, 0xB0}, // ��
+ {0xBDB2, 0x8BB2}, //{0xE8, 0xAE, 0xB2}, // ��
+ {0xBBE4, 0x8BB3}, //{0xE8, 0xAE, 0xB3}, // ��
+ {0xD1C8, 0x8BB6}, //{0xE8, 0xAE, 0xB6}, // ��
+ {0xD0ED, 0x8BB8}, //{0xE8, 0xAE, 0xB8}, // ��
+ {0xB6EF, 0x8BB9}, //{0xE8, 0xAE, 0xB9}, // ��
+ {0xC2DB, 0x8BBA}, //{0xE8, 0xAE, 0xBA}, // ��
+ {0xCBCF, 0x8BBC}, //{0xE8, 0xAE, 0xBC}, // ��
+ {0xB7ED, 0x8BBD}, //{0xE8, 0xAE, 0xBD}, // ��
+ {0xC9E8, 0x8BBE}, //{0xE8, 0xAE, 0xBE}, // ��
+ {0xB7C3, 0x8BBF}, //{0xE8, 0xAE, 0xBF}, // ��
+ {0xBEF7, 0x8BC0}, //{0xE8, 0xAF, 0x80}, // ��
{0xD6A4, 0x8BC1}, //{0xE8, 0xAF, 0x81}, // ֤
- {0xC6C0, 0x8BC4}, //{0xE8, 0xAF, 0x84}, //
- {0xD7E7, 0x8BC5}, //{0xE8, 0xAF, 0x85}, //
+ {0xC6C0, 0x8BC4}, //{0xE8, 0xAF, 0x84}, // ��
+ {0xD7E7, 0x8BC5}, //{0xE8, 0xAF, 0x85}, // ��
{0xCAB6, 0x8BC6}, //{0xE8, 0xAF, 0x86}, // ʶ
{0xD5A9, 0x8BC8}, //{0xE8, 0xAF, 0x88}, // թ
- {0xCBDF, 0x8BC9}, //{0xE8, 0xAF, 0x89}, //
- {0xD5EF, 0x8BCA}, //{0xE8, 0xAF, 0x8A}, //
- {0xB4CA, 0x8BCD}, //{0xE8, 0xAF, 0x8D}, //
- {0xD2EB, 0x8BD1}, //{0xE8, 0xAF, 0x91}, //
- {0xCAD4, 0x8BD5}, //{0xE8, 0xAF, 0x95}, //
+ {0xCBDF, 0x8BC9}, //{0xE8, 0xAF, 0x89}, // ��
+ {0xD5EF, 0x8BCA}, //{0xE8, 0xAF, 0x8A}, // ��
+ {0xB4CA, 0x8BCD}, //{0xE8, 0xAF, 0x8D}, // ��
+ {0xD2EB, 0x8BD1}, //{0xE8, 0xAF, 0x91}, // ��
+ {0xCAD4, 0x8BD5}, //{0xE8, 0xAF, 0x95}, // ��
{0xCAAB, 0x8BD7}, //{0xE8, 0xAF, 0x97}, // ʫ
- {0xB3CF, 0x8BDA}, //{0xE8, 0xAF, 0x9A}, //
- {0xBBB0, 0x8BDD}, //{0xE8, 0xAF, 0x9D}, //
- {0xB5AE, 0x8BDE}, //{0xE8, 0xAF, 0x9E}, //
- {0xB9EE, 0x8BE1}, //{0xE8, 0xAF, 0xA1}, //
+ {0xB3CF, 0x8BDA}, //{0xE8, 0xAF, 0x9A}, // ��
+ {0xBBB0, 0x8BDD}, //{0xE8, 0xAF, 0x9D}, // ��
+ {0xB5AE, 0x8BDE}, //{0xE8, 0xAF, 0x9E}, // ��
+ {0xB9EE, 0x8BE1}, //{0xE8, 0xAF, 0xA1}, // ��
{0xD1AF, 0x8BE2}, //{0xE8, 0xAF, 0xA2}, // ѯ
- {0xB8C3, 0x8BE5}, //{0xE8, 0xAF, 0xA5}, //
- {0xCFEA, 0x8BE6}, //{0xE8, 0xAF, 0xA6}, //
- {0xBDEB, 0x8BEB}, //{0xE8, 0xAF, 0xAB}, //
- {0xCEDC, 0x8BEC}, //{0xE8, 0xAF, 0xAC}, //
- {0xD3EF, 0x8BED}, //{0xE8, 0xAF, 0xAD}, //
- {0xCEF3, 0x8BEF}, //{0xE8, 0xAF, 0xAF}, //
- {0xD3D5, 0x8BF1}, //{0xE8, 0xAF, 0xB1}, //
- {0xBBE5, 0x8BF2}, //{0xE8, 0xAF, 0xB2}, //
+ {0xB8C3, 0x8BE5}, //{0xE8, 0xAF, 0xA5}, // ��
+ {0xCFEA, 0x8BE6}, //{0xE8, 0xAF, 0xA6}, // ��
+ {0xBDEB, 0x8BEB}, //{0xE8, 0xAF, 0xAB}, // ��
+ {0xCEDC, 0x8BEC}, //{0xE8, 0xAF, 0xAC}, // ��
+ {0xD3EF, 0x8BED}, //{0xE8, 0xAF, 0xAD}, // ��
+ {0xCEF3, 0x8BEF}, //{0xE8, 0xAF, 0xAF}, // ��
+ {0xD3D5, 0x8BF1}, //{0xE8, 0xAF, 0xB1}, // ��
+ {0xBBE5, 0x8BF2}, //{0xE8, 0xAF, 0xB2}, // ��
{0xCBB5, 0x8BF4}, //{0xE8, 0xAF, 0xB4}, // ˵
- {0xCBD0, 0x8BF5}, //{0xE8, 0xAF, 0xB5}, //
- {0xC7EB, 0x8BF7}, //{0xE8, 0xAF, 0xB7}, //
- {0xD6EE, 0x8BF8}, //{0xE8, 0xAF, 0xB8}, //
+ {0xCBD0, 0x8BF5}, //{0xE8, 0xAF, 0xB5}, // ��
+ {0xC7EB, 0x8BF7}, //{0xE8, 0xAF, 0xB7}, // ��
+ {0xD6EE, 0x8BF8}, //{0xE8, 0xAF, 0xB8}, // ��
{0xC5B5, 0x8BFA}, //{0xE8, 0xAF, 0xBA}, // ŵ
- {0xB6C1, 0x8BFB}, //{0xE8, 0xAF, 0xBB}, //
- {0xB7CC, 0x8BFD}, //{0xE8, 0xAF, 0xBD}, //
- {0xBFCE, 0x8BFE}, //{0xE8, 0xAF, 0xBE}, //
+ {0xB6C1, 0x8BFB}, //{0xE8, 0xAF, 0xBB}, // ��
+ {0xB7CC, 0x8BFD}, //{0xE8, 0xAF, 0xBD}, // ��
+ {0xBFCE, 0x8BFE}, //{0xE8, 0xAF, 0xBE}, // ��
{0xCBAD, 0x8C01}, //{0xE8, 0xB0, 0x81}, // ˭
- {0xB5F7, 0x8C03}, //{0xE8, 0xB0, 0x83}, //
- {0xC1C2, 0x8C05}, //{0xE8, 0xB0, 0x85}, //
+ {0xB5F7, 0x8C03}, //{0xE8, 0xB0, 0x83}, // ��
+ {0xC1C2, 0x8C05}, //{0xE8, 0xB0, 0x85}, // ��
{0xD7BB, 0x8C06}, //{0xE8, 0xB0, 0x86}, //
{0xCCB8, 0x8C08}, //{0xE8, 0xB0, 0x88}, // ̸
- {0xD2EA, 0x8C0A}, //{0xE8, 0xB0, 0x8A}, //
+ {0xD2EA, 0x8C0A}, //{0xE8, 0xB0, 0x8A}, // ��
{0xC4B1, 0x8C0B}, //{0xE8, 0xB0, 0x8B}, // ı
- {0xB5FD, 0x8C0D}, //{0xE8, 0xB0, 0x8D}, //
- {0xBBD1, 0x8C0E}, //{0xE8, 0xB0, 0x8E}, //
+ {0xB5FD, 0x8C0D}, //{0xE8, 0xB0, 0x8D}, // ��
+ {0xBBD1, 0x8C0E}, //{0xE8, 0xB0, 0x8E}, // ��
{0xD0B3, 0x8C10}, //{0xE8, 0xB0, 0x90}, // г
- {0xDACB, 0x8C12}, //{0xE8, 0xB0, 0x92}, //
+ {0xDACB, 0x8C12}, //{0xE8, 0xB0, 0x92}, // ��
{0xCEBD, 0x8C13}, //{0xE8, 0xB0, 0x93}, // ν
- {0xD1E8, 0x8C1A}, //{0xE8, 0xB0, 0x9A}, //
- {0xC3D5, 0x8C1C}, //{0xE8, 0xB0, 0x9C}, //
+ {0xD1E8, 0x8C1A}, //{0xE8, 0xB0, 0x9A}, // ��
+ {0xC3D5, 0x8C1C}, //{0xE8, 0xB0, 0x9C}, // ��
{0xD0BB, 0x8C22}, //{0xE8, 0xB0, 0xA2}, // л
{0xD2A5, 0x8C23}, //{0xE8, 0xB0, 0xA3}, // ҥ
- {0xB0F9, 0x8C24}, //{0xE8, 0xB0, 0xA4}, //
+ {0xB0F9, 0x8C24}, //{0xE8, 0xB0, 0xA4}, // ��
{0xC7AB, 0x8C26}, //{0xE8, 0xB0, 0xA6}, // ǫ
- {0xBDF7, 0x8C28}, //{0xE8, 0xB0, 0xA8}, //
- {0xC3FD, 0x8C2C}, //{0xE8, 0xB0, 0xAC}, //
+ {0xBDF7, 0x8C28}, //{0xE8, 0xB0, 0xA8}, // ��
+ {0xC3FD, 0x8C2C}, //{0xE8, 0xB0, 0xAC}, // ��
{0xCCB7, 0x8C2D}, //{0xE8, 0xB0, 0xAD}, // ̷
- {0xC6D7, 0x8C31}, //{0xE8, 0xB0, 0xB1}, //
+ {0xC6D7, 0x8C31}, //{0xE8, 0xB0, 0xB1}, // ��
{0xC7B4, 0x8C34}, //{0xE8, 0xB0, 0xB4}, // Ǵ
- {0xB9C8, 0x8C37}, //{0xE8, 0xB0, 0xB7}, //
- {0xBBED, 0x8C41}, //{0xE8, 0xB1, 0x81}, //
- {0xB6B9, 0x8C46}, //{0xE8, 0xB1, 0x86}, //
- {0xCDE3, 0x8C4C}, //{0xE8, 0xB1, 0x8C}, //
- {0xCFF3, 0x8C61}, //{0xE8, 0xB1, 0xA1}, //
- {0xBAC0, 0x8C6A}, //{0xE8, 0xB1, 0xAA}, //
+ {0xB9C8, 0x8C37}, //{0xE8, 0xB0, 0xB7}, // ��
+ {0xBBED, 0x8C41}, //{0xE8, 0xB1, 0x81}, // ��
+ {0xB6B9, 0x8C46}, //{0xE8, 0xB1, 0x86}, // ��
+ {0xCDE3, 0x8C4C}, //{0xE8, 0xB1, 0x8C}, // ��
+ {0xCFF3, 0x8C61}, //{0xE8, 0xB1, 0xA1}, // ��
+ {0xBAC0, 0x8C6A}, //{0xE8, 0xB1, 0xAA}, // ��
{0xD4A5, 0x8C6B}, //{0xE8, 0xB1, 0xAB}, // ԥ
- {0xB1AA, 0x8C79}, //{0xE8, 0xB1, 0xB9}, //
- {0xB2F2, 0x8C7A}, //{0xE8, 0xB1, 0xBA}, //
+ {0xB1AA, 0x8C79}, //{0xE8, 0xB1, 0xB9}, // ��
+ {0xB2F2, 0x8C7A}, //{0xE8, 0xB1, 0xBA}, // ��
{0xC3B2, 0x8C8C}, //{0xE8, 0xB2, 0x8C}, // ò
- {0xB1B4, 0x8D1D}, //{0xE8, 0xB4, 0x9D}, //
- {0xD5EA, 0x8D1E}, //{0xE8, 0xB4, 0x9E}, //
- {0xB8BA, 0x8D1F}, //{0xE8, 0xB4, 0x9F}, //
- {0xB9B1, 0x8D21}, //{0xE8, 0xB4, 0xA1}, //
- {0xB2C6, 0x8D22}, //{0xE8, 0xB4, 0xA2}, //
- {0xD4F0, 0x8D23}, //{0xE8, 0xB4, 0xA3}, //
- {0xCFCD, 0x8D24}, //{0xE8, 0xB4, 0xA4}, //
- {0xB0DC, 0x8D25}, //{0xE8, 0xB4, 0xA5}, //
- {0xD5CB, 0x8D26}, //{0xE8, 0xB4, 0xA6}, //
- {0xBBF5, 0x8D27}, //{0xE8, 0xB4, 0xA7}, //
- {0xD6CA, 0x8D28}, //{0xE8, 0xB4, 0xA8}, //
- {0xB7B7, 0x8D29}, //{0xE8, 0xB4, 0xA9}, //
+ {0xB1B4, 0x8D1D}, //{0xE8, 0xB4, 0x9D}, // ��
+ {0xD5EA, 0x8D1E}, //{0xE8, 0xB4, 0x9E}, // ��
+ {0xB8BA, 0x8D1F}, //{0xE8, 0xB4, 0x9F}, // ��
+ {0xB9B1, 0x8D21}, //{0xE8, 0xB4, 0xA1}, // ��
+ {0xB2C6, 0x8D22}, //{0xE8, 0xB4, 0xA2}, // ��
+ {0xD4F0, 0x8D23}, //{0xE8, 0xB4, 0xA3}, // ��
+ {0xCFCD, 0x8D24}, //{0xE8, 0xB4, 0xA4}, // ��
+ {0xB0DC, 0x8D25}, //{0xE8, 0xB4, 0xA5}, // ��
+ {0xD5CB, 0x8D26}, //{0xE8, 0xB4, 0xA6}, // ��
+ {0xBBF5, 0x8D27}, //{0xE8, 0xB4, 0xA7}, // ��
+ {0xD6CA, 0x8D28}, //{0xE8, 0xB4, 0xA8}, // ��
+ {0xB7B7, 0x8D29}, //{0xE8, 0xB4, 0xA9}, // ��
{0xCCB0, 0x8D2A}, //{0xE8, 0xB4, 0xAA}, // ̰
{0xC6B6, 0x8D2B}, //{0xE8, 0xB4, 0xAB}, // ƶ
- {0xB1E1, 0x8D2C}, //{0xE8, 0xB4, 0xAC}, //
- {0xB9BA, 0x8D2D}, //{0xE8, 0xB4, 0xAD}, //
- {0xD6FC, 0x8D2E}, //{0xE8, 0xB4, 0xAE}, //
- {0xB9E1, 0x8D2F}, //{0xE8, 0xB4, 0xAF}, //
- {0xB7A1, 0x8D30}, //{0xE8, 0xB4, 0xB0}, //
- {0xBCFA, 0x8D31}, //{0xE8, 0xB4, 0xB1}, //
- {0xCCF9, 0x8D34}, //{0xE8, 0xB4, 0xB4}, //
- {0xB9F3, 0x8D35}, //{0xE8, 0xB4, 0xB5}, //
+ {0xB1E1, 0x8D2C}, //{0xE8, 0xB4, 0xAC}, // ��
+ {0xB9BA, 0x8D2D}, //{0xE8, 0xB4, 0xAD}, // ��
+ {0xD6FC, 0x8D2E}, //{0xE8, 0xB4, 0xAE}, // ��
+ {0xB9E1, 0x8D2F}, //{0xE8, 0xB4, 0xAF}, // ��
+ {0xB7A1, 0x8D30}, //{0xE8, 0xB4, 0xB0}, // ��
+ {0xBCFA, 0x8D31}, //{0xE8, 0xB4, 0xB1}, // ��
+ {0xCCF9, 0x8D34}, //{0xE8, 0xB4, 0xB4}, // ��
+ {0xB9F3, 0x8D35}, //{0xE8, 0xB4, 0xB5}, // ��
{0xC3B3, 0x8D38}, //{0xE8, 0xB4, 0xB8}, // ó
- {0xB7D1, 0x8D39}, //{0xE8, 0xB4, 0xB9}, //
- {0xBAD8, 0x8D3A}, //{0xE8, 0xB4, 0xBA}, //
- {0xD4F4, 0x8D3C}, //{0xE8, 0xB4, 0xBC}, //
- {0xBCD6, 0x8D3E}, //{0xE8, 0xB4, 0xBE}, //
- {0xBBDF, 0x8D3F}, //{0xE8, 0xB4, 0xBF}, //
- {0xC1DE, 0x8D41}, //{0xE8, 0xB5, 0x81}, //
+ {0xB7D1, 0x8D39}, //{0xE8, 0xB4, 0xB9}, // ��
+ {0xBAD8, 0x8D3A}, //{0xE8, 0xB4, 0xBA}, // ��
+ {0xD4F4, 0x8D3C}, //{0xE8, 0xB4, 0xBC}, // ��
+ {0xBCD6, 0x8D3E}, //{0xE8, 0xB4, 0xBE}, // ��
+ {0xBBDF, 0x8D3F}, //{0xE8, 0xB4, 0xBF}, // ��
+ {0xC1DE, 0x8D41}, //{0xE8, 0xB5, 0x81}, // ��
{0xC2B8, 0x8D42}, //{0xE8, 0xB5, 0x82}, // ¸
- {0xD4DF, 0x8D43}, //{0xE8, 0xB5, 0x83}, //
- {0xD7CA, 0x8D44}, //{0xE8, 0xB5, 0x84}, //
- {0xC9DE, 0x8D4A}, //{0xE8, 0xB5, 0x8A}, //
- {0xB8B3, 0x8D4B}, //{0xE8, 0xB5, 0x8B}, //
- {0xB6C4, 0x8D4C}, //{0xE8, 0xB5, 0x8C}, //
- {0xCAEA, 0x8D4E}, //{0xE8, 0xB5, 0x8E}, //
- {0xC9CD, 0x8D4F}, //{0xE8, 0xB5, 0x8F}, //
- {0xB4CD, 0x8D50}, //{0xE8, 0xB5, 0x90}, //
- {0xC5E2, 0x8D54}, //{0xE8, 0xB5, 0x94}, //
- {0xC0B5, 0x8D56}, //{0xE8, 0xB5, 0x96}, //
+ {0xD4DF, 0x8D43}, //{0xE8, 0xB5, 0x83}, // ��
+ {0xD7CA, 0x8D44}, //{0xE8, 0xB5, 0x84}, // ��
+ {0xC9DE, 0x8D4A}, //{0xE8, 0xB5, 0x8A}, // ��
+ {0xB8B3, 0x8D4B}, //{0xE8, 0xB5, 0x8B}, // ��
+ {0xB6C4, 0x8D4C}, //{0xE8, 0xB5, 0x8C}, // ��
+ {0xCAEA, 0x8D4E}, //{0xE8, 0xB5, 0x8E}, // ��
+ {0xC9CD, 0x8D4F}, //{0xE8, 0xB5, 0x8F}, // ��
+ {0xB4CD, 0x8D50}, //{0xE8, 0xB5, 0x90}, // ��
+ {0xC5E2, 0x8D54}, //{0xE8, 0xB5, 0x94}, // ��
+ {0xC0B5, 0x8D56}, //{0xE8, 0xB5, 0x96}, // 5
{0xD7B8, 0x8D58}, //{0xE8, 0xB5, 0x98}, //
{0xD7AC, 0x8D5A}, //{0xE8, 0xB5, 0x9A}, //
- {0xC8FC, 0x8D5B}, //{0xE8, 0xB5, 0x9B}, //
- {0xD4DE, 0x8D5E}, //{0xE8, 0xB5, 0x9E}, //
- {0xD4F9, 0x8D60}, //{0xE8, 0xB5, 0xA0}, //
- {0xC9C4, 0x8D61}, //{0xE8, 0xB5, 0xA1}, //
+ {0xC8FC, 0x8D5B}, //{0xE8, 0xB5, 0x9B}, // ��
+ {0xD4DE, 0x8D5E}, //{0xE8, 0xB5, 0x9E}, // ��
+ {0xD4F9, 0x8D60}, //{0xE8, 0xB5, 0xA0}, // ��
+ {0xC9C4, 0x8D61}, //{0xE8, 0xB5, 0xA1}, // ��
{0xD3AE, 0x8D62}, //{0xE8, 0xB5, 0xA2}, // Ӯ
- {0xB3E0, 0x8D64}, //{0xE8, 0xB5, 0xA4}, //
- {0xC9E2, 0x8D66}, //{0xE8, 0xB5, 0xA6}, //
- {0xBAD5, 0x8D6B}, //{0xE8, 0xB5, 0xAB}, //
- {0xD7DF, 0x8D70}, //{0xE8, 0xB5, 0xB0}, //
- {0xB8B0, 0x8D74}, //{0xE8, 0xB5, 0xB4}, //
- {0xD5D4, 0x8D75}, //{0xE8, 0xB5, 0xB5}, //
- {0xB8CF, 0x8D76}, //{0xE8, 0xB5, 0xB6}, //
- {0xC6F0, 0x8D77}, //{0xE8, 0xB5, 0xB7}, //
- {0xB3C3, 0x8D81}, //{0xE8, 0xB6, 0x81}, //
- {0xB3AC, 0x8D85}, //{0xE8, 0xB6, 0x85}, //
+ {0xB3E0, 0x8D64}, //{0xE8, 0xB5, 0xA4}, // ��
+ {0xC9E2, 0x8D66}, //{0xE8, 0xB5, 0xA6}, // ��
+ {0xBAD5, 0x8D6B}, //{0xE8, 0xB5, 0xAB}, // ��
+ {0xD7DF, 0x8D70}, //{0xE8, 0xB5, 0xB0}, // ��
+ {0xB8B0, 0x8D74}, //{0xE8, 0xB5, 0xB4}, // ��
+ {0xD5D4, 0x8D75}, //{0xE8, 0xB5, 0xB5}, // ��
+ {0xB8CF, 0x8D76}, //{0xE8, 0xB5, 0xB6}, // ��
+ {0xC6F0, 0x8D77}, //{0xE8, 0xB5, 0xB7}, // ��
+ {0xB3C3, 0x8D81}, //{0xE8, 0xB6, 0x81}, // ��
+ {0xB3AC, 0x8D85}, //{0xE8, 0xB6, 0x85}, // ��
{0xD4BD, 0x8D8A}, //{0xE8, 0xB6, 0x8A}, // Խ
- {0xC7F7, 0x8D8B}, //{0xE8, 0xB6, 0x8B}, //
- {0xCCCB, 0x8D9F}, //{0xE8, 0xB6, 0x9F}, //
+ {0xC7F7, 0x8D8B}, //{0xE8, 0xB6, 0x8B}, // ��
+ {0xCCCB, 0x8D9F}, //{0xE8, 0xB6, 0x9F}, // ��
{0xC8A4, 0x8DA3}, //{0xE8, 0xB6, 0xA3}, // Ȥ
- {0xD7E3, 0x8DB3}, //{0xE8, 0xB6, 0xB3}, //
+ {0xD7E3, 0x8DB3}, //{0xE8, 0xB6, 0xB3}, // ��
{0xC5BF, 0x8DB4}, //{0xE8, 0xB6, 0xB4}, // ſ
{0xD6BA, 0x8DBE}, //{0xE8, 0xB6, 0xBE}, // ֺ
{0xD4BE, 0x8DC3}, //{0xE8, 0xB7, 0x83}, // Ծ
- {0xB0CF, 0x8DCB}, //{0xE8, 0xB7, 0x8B}, //
- {0xB5F8, 0x8DCC}, //{0xE8, 0xB7, 0x8C}, //
- {0xC5DC, 0x8DD1}, //{0xE8, 0xB7, 0x91}, //
- {0xF5CB, 0x8DDB}, //{0xE8, 0xB7, 0x9B}, //
- {0xBEE0, 0x8DDD}, //{0xE8, 0xB7, 0x9D}, //
- {0xB8FA, 0x8DDF}, //{0xE8, 0xB7, 0x9F}, //
- {0xBFE7, 0x8DE8}, //{0xE8, 0xB7, 0xA8}, //
- {0xB9F2, 0x8DEA}, //{0xE8, 0xB7, 0xAA}, //
+ {0xB0CF, 0x8DCB}, //{0xE8, 0xB7, 0x8B}, // ��
+ {0xB5F8, 0x8DCC}, //{0xE8, 0xB7, 0x8C}, // ��
+ {0xC5DC, 0x8DD1}, //{0xE8, 0xB7, 0x91}, // ��
+ {0xF5CB, 0x8DDB}, //{0xE8, 0xB7, 0x9B}, // ��
+ {0xBEE0, 0x8DDD}, //{0xE8, 0xB7, 0x9D}, // ��
+ {0xB8FA, 0x8DDF}, //{0xE8, 0xB7, 0x9F}, // ��
+ {0xBFE7, 0x8DE8}, //{0xE8, 0xB7, 0xA8}, // ��
+ {0xB9F2, 0x8DEA}, //{0xE8, 0xB7, 0xAA}, // ��
{0xC2B7, 0x8DEF}, //{0xE8, 0xB7, 0xAF}, // ·
- {0xCCF8, 0x8DF3}, //{0xE8, 0xB7, 0xB3}, //
- {0xBCF9, 0x8DF5}, //{0xE8, 0xB7, 0xB5}, //
- {0xF5CE, 0x8DF7}, //{0xE8, 0xB7, 0xB7}, //
- {0xB6E5, 0x8DFA}, //{0xE8, 0xB7, 0xBA}, //
+ {0xCCF8, 0x8DF3}, //{0xE8, 0xB7, 0xB3}, // ��
+ {0xBCF9, 0x8DF5}, //{0xE8, 0xB7, 0xB5}, // ��
+ {0xF5CE, 0x8DF7}, //{0xE8, 0xB7, 0xB7}, // ��
+ {0xB6E5, 0x8DFA}, //{0xE8, 0xB7, 0xBA}, // ��
{0xD3BB, 0x8E0A}, //{0xE8, 0xB8, 0x8A}, // ӻ
{0xCCA4, 0x8E0F}, //{0xE8, 0xB8, 0x8F}, // ̤
- {0xCCDF, 0x8E22}, //{0xE8, 0xB8, 0xA2}, //
- {0xB2C8, 0x8E29}, //{0xE8, 0xB8, 0xA9}, //
- {0xD7D9, 0x8E2A}, //{0xE8, 0xB8, 0xAA}, //
- {0xF5E2, 0x8E31}, //{0xE8, 0xB8, 0xB1}, //
- {0xF5E5, 0x8E42}, //{0xE8, 0xB9, 0x82}, //
- {0xCCE3, 0x8E44}, //{0xE8, 0xB9, 0x84}, //
- {0xB5B8, 0x8E48}, //{0xE8, 0xB9, 0x88}, //
+ {0xCCDF, 0x8E22}, //{0xE8, 0xB8, 0xA2}, // ��
+ {0xB2C8, 0x8E29}, //{0xE8, 0xB8, 0xA9}, // ��
+ {0xD7D9, 0x8E2A}, //{0xE8, 0xB8, 0xAA}, // ��
+ {0xF5E2, 0x8E31}, //{0xE8, 0xB8, 0xB1}, // ��
+ {0xF5E5, 0x8E42}, //{0xE8, 0xB9, 0x82}, // ��
+ {0xCCE3, 0x8E44}, //{0xE8, 0xB9, 0x84}, // ��
+ {0xB5B8, 0x8E48}, //{0xE8, 0xB9, 0x88}, // ��
{0xCCA3, 0x8E4B}, //{0xE8, 0xB9, 0x8B}, // ̣
- {0xB1C4, 0x8E66}, //{0xE8, 0xB9, 0xA6}, //
- {0xB5C5, 0x8E6C}, //{0xE8, 0xB9, 0xAC}, //
- {0xB2E4, 0x8E6D}, //{0xE8, 0xB9, 0xAD}, //
- {0xB6D7, 0x8E72}, //{0xE8, 0xB9, 0xB2}, //
- {0xD4EA, 0x8E81}, //{0xE8, 0xBA, 0x81}, //
- {0xF5EF, 0x8E8F}, //{0xE8, 0xBA, 0x8F}, //
- {0xC9ED, 0x8EAB}, //{0xE8, 0xBA, 0xAB}, //
- {0xB9AA, 0x8EAC}, //{0xE8, 0xBA, 0xAC}, //
- {0xC7FB, 0x8EAF}, //{0xE8, 0xBA, 0xAF}, //
- {0xB6E3, 0x8EB2}, //{0xE8, 0xBA, 0xB2}, //
- {0xCCC9, 0x8EBA}, //{0xE8, 0xBA, 0xBA}, //
- {0xB3B5, 0x8F66}, //{0xE8, 0xBD, 0xA6}, //
- {0xD4FE, 0x8F67}, //{0xE8, 0xBD, 0xA7}, //
- {0xB9EC, 0x8F68}, //{0xE8, 0xBD, 0xA8}, //
- {0xD0F9, 0x8F69}, //{0xE8, 0xBD, 0xA9}, //
+ {0xB1C4, 0x8E66}, //{0xE8, 0xB9, 0xA6}, // ��
+ {0xB5C5, 0x8E6C}, //{0xE8, 0xB9, 0xAC}, // ��
+ {0xB2E4, 0x8E6D}, //{0xE8, 0xB9, 0xAD}, // ��
+ {0xB6D7, 0x8E72}, //{0xE8, 0xB9, 0xB2}, // ��
+ {0xD4EA, 0x8E81}, //{0xE8, 0xBA, 0x81}, // ��
+ {0xF5EF, 0x8E8F}, //{0xE8, 0xBA, 0x8F}, // ��
+ {0xC9ED, 0x8EAB}, //{0xE8, 0xBA, 0xAB}, // ��
+ {0xB9AA, 0x8EAC}, //{0xE8, 0xBA, 0xAC}, // ��
+ {0xC7FB, 0x8EAF}, //{0xE8, 0xBA, 0xAF}, // ��
+ {0xB6E3, 0x8EB2}, //{0xE8, 0xBA, 0xB2}, // ��
+ {0xCCC9, 0x8EBA}, //{0xE8, 0xBA, 0xBA}, // ��
+ {0xB3B5, 0x8F66}, //{0xE8, 0xBD, 0xA6}, // ��
+ {0xD4FE, 0x8F67}, //{0xE8, 0xBD, 0xA7}, // ��
+ {0xB9EC, 0x8F68}, //{0xE8, 0xBD, 0xA8}, // ��
+ {0xD0F9, 0x8F69}, //{0xE8, 0xBD, 0xA9}, // ��
{0xD7AA, 0x8F6C}, //{0xE8, 0xBD, 0xAC}, // ת
- {0xC2D6, 0x8F6E}, //{0xE8, 0xBD, 0xAE}, //
- {0xC8ED, 0x8F6F}, //{0xE8, 0xBD, 0xAF}, //
- {0xBAE4, 0x8F70}, //{0xE8, 0xBD, 0xB0}, //
- {0xD6E1, 0x8F74}, //{0xE8, 0xBD, 0xB4}, //
- {0xC7E1, 0x8F7B}, //{0xE8, 0xBD, 0xBB}, //
- {0xD4D8, 0x8F7D}, //{0xE8, 0xBD, 0xBD}, //
- {0xBDCE, 0x8F7F}, //{0xE8, 0xBD, 0xBF}, //
- {0xBDCF, 0x8F83}, //{0xE8, 0xBE, 0x83}, //
- {0xB8A8, 0x8F85}, //{0xE8, 0xBE, 0x85}, //
- {0xC1BE, 0x8F86}, //{0xE8, 0xBE, 0x86}, //
- {0xB1B2, 0x8F88}, //{0xE8, 0xBE, 0x88}, //
- {0xBBD4, 0x8F89}, //{0xE8, 0xBE, 0x89}, //
- {0xB7F8, 0x8F90}, //{0xE8, 0xBE, 0x90}, //
- {0xBCAD, 0x8F91}, //{0xE8, 0xBE, 0x91}, //
- {0xCAE4, 0x8F93}, //{0xE8, 0xBE, 0x93}, //
+ {0xC2D6, 0x8F6E}, //{0xE8, 0xBD, 0xAE}, // ��
+ {0xC8ED, 0x8F6F}, //{0xE8, 0xBD, 0xAF}, // ��
+ {0xBAE4, 0x8F70}, //{0xE8, 0xBD, 0xB0}, // ��
+ {0xD6E1, 0x8F74}, //{0xE8, 0xBD, 0xB4}, // ��
+ {0xC7E1, 0x8F7B}, //{0xE8, 0xBD, 0xBB}, // ��
+ {0xD4D8, 0x8F7D}, //{0xE8, 0xBD, 0xBD}, // ��
+ {0xBDCE, 0x8F7F}, //{0xE8, 0xBD, 0xBF}, // ��
+ {0xBDCF, 0x8F83}, //{0xE8, 0xBE, 0x83}, // ��
+ {0xB8A8, 0x8F85}, //{0xE8, 0xBE, 0x85}, // ��
+ {0xC1BE, 0x8F86}, //{0xE8, 0xBE, 0x86}, // ~
+ {0xB1B2, 0x8F88}, //{0xE8, 0xBE, 0x88}, // ��
+ {0xBBD4, 0x8F89}, //{0xE8, 0xBE, 0x89}, // ��
+ {0xB7F8, 0x8F90}, //{0xE8, 0xBE, 0x90}, // ��
+ {0xBCAD, 0x8F91}, //{0xE8, 0xBE, 0x91}, // ��
+ {0xCAE4, 0x8F93}, //{0xE8, 0xBE, 0x93}, // ��
{0xD4AF, 0x8F95}, //{0xE8, 0xBE, 0x95}, // ԯ
{0xCFBD, 0x8F96}, //{0xE8, 0xBE, 0x96}, // Ͻ
- {0xD5DE, 0x8F99}, //{0xE8, 0xBE, 0x99}, //
- {0xD0C1, 0x8F9B}, //{0xE8, 0xBE, 0x9B}, //
- {0xB9BC, 0x8F9C}, //{0xE8, 0xBE, 0x9C}, //
- {0xB4C7, 0x8F9E}, //{0xE8, 0xBE, 0x9E}, //
- {0xB1D9, 0x8F9F}, //{0xE8, 0xBE, 0x9F}, //
- {0xC0B1, 0x8FA3}, //{0xE8, 0xBE, 0xA3}, //
- {0xB1E6, 0x8FA8}, //{0xE8, 0xBE, 0xA8}, //
- {0xB1E7, 0x8FA9}, //{0xE8, 0xBE, 0xA9}, //
- {0xB1E8, 0x8FAB}, //{0xE8, 0xBE, 0xAB}, //
- {0xB3BD, 0x8FB0}, //{0xE8, 0xBE, 0xB0}, //
- {0xC8E8, 0x8FB1}, //{0xE8, 0xBE, 0xB1}, //
- {0xB1DF, 0x8FB9}, //{0xE8, 0xBE, 0xB9}, //
- {0xC1C9, 0x8FBD}, //{0xE8, 0xBE, 0xBD}, //
- {0xB4EF, 0x8FBE}, //{0xE8, 0xBE, 0xBE}, //
+ {0xD5DE, 0x8F99}, //{0xE8, 0xBE, 0x99}, // ��
+ {0xD0C1, 0x8F9B}, //{0xE8, 0xBE, 0x9B}, // ��
+ {0xB9BC, 0x8F9C}, //{0xE8, 0xBE, 0x9C}, // ��
+ {0xB4C7, 0x8F9E}, //{0xE8, 0xBE, 0x9E}, // ��
+ {0xB1D9, 0x8F9F}, //{0xE8, 0xBE, 0x9F}, // ��
+ {0xC0B1, 0x8FA3}, //{0xE8, 0xBE, 0xA3}, // 1
+ {0xB1E6, 0x8FA8}, //{0xE8, 0xBE, 0xA8}, // ��
+ {0xB1E7, 0x8FA9}, //{0xE8, 0xBE, 0xA9}, // ��
+ {0xB1E8, 0x8FAB}, //{0xE8, 0xBE, 0xAB}, // ��
+ {0xB3BD, 0x8FB0}, //{0xE8, 0xBE, 0xB0}, // ��
+ {0xC8E8, 0x8FB1}, //{0xE8, 0xBE, 0xB1}, // ��
+ {0xB1DF, 0x8FB9}, //{0xE8, 0xBE, 0xB9}, // ��
+ {0xC1C9, 0x8FBD}, //{0xE8, 0xBE, 0xBD}, // ��
+ {0xB4EF, 0x8FBE}, //{0xE8, 0xBE, 0xBE}, // ��
{0xC7A8, 0x8FC1}, //{0xE8, 0xBF, 0x81}, // Ǩ
- {0xD3D8, 0x8FC2}, //{0xE8, 0xBF, 0x82}, //
- {0xC6F9, 0x8FC4}, //{0xE8, 0xBF, 0x84}, //
+ {0xD3D8, 0x8FC2}, //{0xE8, 0xBF, 0x82}, // ��
+ {0xC6F9, 0x8FC4}, //{0xE8, 0xBF, 0x84}, // ��
{0xD1B8, 0x8FC5}, //{0xE8, 0xBF, 0x85}, // Ѹ
- {0xB9FD, 0x8FC7}, //{0xE8, 0xBF, 0x87}, //
- {0xC2F5, 0x8FC8}, //{0xE8, 0xBF, 0x88}, //
+ {0xB9FD, 0x8FC7}, //{0xE8, 0xBF, 0x87}, // ��
+ {0xC2F5, 0x8FC8}, //{0xE8, 0xBF, 0x88}, // ��
{0xD3AD, 0x8FCE}, //{0xE8, 0xBF, 0x8E}, // ӭ
- {0xD4CB, 0x8FD0}, //{0xE8, 0xBF, 0x90}, //
- {0xBDFC, 0x8FD1}, //{0xE8, 0xBF, 0x91}, //
- {0xB7B5, 0x8FD4}, //{0xE8, 0xBF, 0x94}, //
- {0xBBB9, 0x8FD8}, //{0xE8, 0xBF, 0x98}, //
- {0xD5E2, 0x8FD9}, //{0xE8, 0xBF, 0x99}, //
- {0xBDF8, 0x8FDB}, //{0xE8, 0xBF, 0x9B}, //
+ {0xD4CB, 0x8FD0}, //{0xE8, 0xBF, 0x90}, // ��
+ {0xBDFC, 0x8FD1}, //{0xE8, 0xBF, 0x91}, // ��
+ {0xB7B5, 0x8FD4}, //{0xE8, 0xBF, 0x94}, // ��
+ {0xBBB9, 0x8FD8}, //{0xE8, 0xBF, 0x98}, // ��
+ {0xD5E2, 0x8FD9}, //{0xE8, 0xBF, 0x99}, // ��
+ {0xBDF8, 0x8FDB}, //{0xE8, 0xBF, 0x9B}, // ��
{0xD4B6, 0x8FDC}, //{0xE8, 0xBF, 0x9C}, // Զ
{0xCEA5, 0x8FDD}, //{0xE8, 0xBF, 0x9D}, // Υ
- {0xC1AC, 0x8FDE}, //{0xE8, 0xBF, 0x9E}, //
- {0xB3D9, 0x8FDF}, //{0xE8, 0xBF, 0x9F}, //
- {0xC6C8, 0x8FEB}, //{0xE8, 0xBF, 0xAB}, //
- {0xCAF6, 0x8FF0}, //{0xE8, 0xBF, 0xB0}, //
- {0xC3D4, 0x8FF7}, //{0xE8, 0xBF, 0xB7}, //
- {0xBCA3, 0x8FF9}, //{0xE8, 0xBF, 0xB9}, //
+ {0xC1AC, 0x8FDE}, //{0xE8, 0xBF, 0x9E}, // l
+ {0xB3D9, 0x8FDF}, //{0xE8, 0xBF, 0x9F}, // ��
+ {0xC6C8, 0x8FEB}, //{0xE8, 0xBF, 0xAB}, // ��
+ {0xCAF6, 0x8FF0}, //{0xE8, 0xBF, 0xB0}, // ��
+ {0xC3D4, 0x8FF7}, //{0xE8, 0xBF, 0xB7}, // ��
+ {0xBCA3, 0x8FF9}, //{0xE8, 0xBF, 0xB9}, // ��
{0xD7B7, 0x8FFD}, //{0xE8, 0xBF, 0xBD}, //
- {0xCDCB, 0x9000}, //{0xE9, 0x80, 0x80}, //
- {0xCBCD, 0x9001}, //{0xE9, 0x80, 0x81}, //
- {0xCACA, 0x9002}, //{0xE9, 0x80, 0x82}, //
- {0xCCD3, 0x9003}, //{0xE9, 0x80, 0x83}, //
- {0xC4E6, 0x9006}, //{0xE9, 0x80, 0x86}, //
+ {0xCDCB, 0x9000}, //{0xE9, 0x80, 0x80}, // ��
+ {0xCBCD, 0x9001}, //{0xE9, 0x80, 0x81}, // ��
+ {0xCACA, 0x9002}, //{0xE9, 0x80, 0x82}, // ��
+ {0xCCD3, 0x9003}, //{0xE9, 0x80, 0x83}, // ��
+ {0xC4E6, 0x9006}, //{0xE9, 0x80, 0x86}, // ��
{0xD1A1, 0x9009}, //{0xE9, 0x80, 0x89}, // ѡ
{0xD1B7, 0x900A}, //{0xE9, 0x80, 0x8A}, // ѷ
{0xCDB8, 0x900F}, //{0xE9, 0x80, 0x8F}, //
- {0xD6F0, 0x9010}, //{0xE9, 0x80, 0x90}, //
- {0xB5DD, 0x9012}, //{0xE9, 0x80, 0x92}, //
+ {0xD6F0, 0x9010}, //{0xE9, 0x80, 0x90}, // ��
+ {0xB5DD, 0x9012}, //{0xE9, 0x80, 0x92}, // ��
{0xCDBE, 0x9014}, //{0xE9, 0x80, 0x94}, // ;
- {0xB6BA, 0x9017}, //{0xE9, 0x80, 0x97}, //
+ {0xB6BA, 0x9017}, //{0xE9, 0x80, 0x97}, // ��
{0xCDA8, 0x901A}, //{0xE9, 0x80, 0x9A}, // ͨ
- {0xB9E4, 0x901B}, //{0xE9, 0x80, 0x9B}, //
- {0xCAC5, 0x901D}, //{0xE9, 0x80, 0x9D}, //
- {0xB3D1, 0x901E}, //{0xE9, 0x80, 0x9E}, //
- {0xCBD9, 0x901F}, //{0xE9, 0x80, 0x9F}, //
- {0xD4EC, 0x9020}, //{0xE9, 0x80, 0xA0}, //
- {0xB7EA, 0x9022}, //{0xE9, 0x80, 0xA2}, //
- {0xB4FE, 0x902E}, //{0xE9, 0x80, 0xAE}, //
- {0xD2DD, 0x9038}, //{0xE9, 0x80, 0xB8}, //
- {0xC2DF, 0x903B}, //{0xE9, 0x80, 0xBB}, //
- {0xB1C6, 0x903C}, //{0xE9, 0x80, 0xBC}, //
- {0xD3E2, 0x903E}, //{0xE9, 0x80, 0xBE}, //
- {0xCBEC, 0x9042}, //{0xE9, 0x81, 0x82}, //
- {0xD3F6, 0x9047}, //{0xE9, 0x81, 0x87}, //
- {0xB1E9, 0x904D}, //{0xE9, 0x81, 0x8D}, //
- {0xB6F4, 0x904F}, //{0xE9, 0x81, 0x8F}, //
- {0xB5C0, 0x9053}, //{0xE9, 0x81, 0x93}, //
- {0xD2C5, 0x9057}, //{0xE9, 0x81, 0x97}, //
+ {0xB9E4, 0x901B}, //{0xE9, 0x80, 0x9B}, // ��
+ {0xCAC5, 0x901D}, //{0xE9, 0x80, 0x9D}, // ��
+ {0xB3D1, 0x901E}, //{0xE9, 0x80, 0x9E}, // ��
+ {0xCBD9, 0x901F}, //{0xE9, 0x80, 0x9F}, // ��
+ {0xD4EC, 0x9020}, //{0xE9, 0x80, 0xA0}, // ��
+ {0xB7EA, 0x9022}, //{0xE9, 0x80, 0xA2}, // ��
+ {0xB4FE, 0x902E}, //{0xE9, 0x80, 0xAE}, // ��
+ {0xD2DD, 0x9038}, //{0xE9, 0x80, 0xB8}, // ��
+ {0xC2DF, 0x903B}, //{0xE9, 0x80, 0xBB}, // ��
+ {0xB1C6, 0x903C}, //{0xE9, 0x80, 0xBC}, // ��
+ {0xD3E2, 0x903E}, //{0xE9, 0x80, 0xBE}, // ��
+ {0xCBEC, 0x9042}, //{0xE9, 0x81, 0x82}, // ��
+ {0xD3F6, 0x9047}, //{0xE9, 0x81, 0x87}, // ��
+ {0xB1E9, 0x904D}, //{0xE9, 0x81, 0x8D}, // ��
+ {0xB6F4, 0x904F}, //{0xE9, 0x81, 0x8F}, // ��
+ {0xB5C0, 0x9053}, //{0xE9, 0x81, 0x93}, // ��
+ {0xD2C5, 0x9057}, //{0xE9, 0x81, 0x97}, // ��
{0xC7B2, 0x9063}, //{0xE9, 0x81, 0xA3}, // Dz
{0xD2A3, 0x9065}, //{0xE9, 0x81, 0xA5}, // ң
- {0xD4E2, 0x906D}, //{0xE9, 0x81, 0xAD}, //
- {0xD5DA, 0x906E}, //{0xE9, 0x81, 0xAE}, //
- {0xD7F1, 0x9075}, //{0xE9, 0x81, 0xB5}, //
- {0xB1DC, 0x907F}, //{0xE9, 0x81, 0xBF}, //
- {0xD1FB, 0x9080}, //{0xE9, 0x82, 0x80}, //
- {0xD2D8, 0x9091}, //{0xE9, 0x82, 0x91}, //
- {0xB5CB, 0x9093}, //{0xE9, 0x82, 0x93}, //
- {0xD0CF, 0x90A2}, //{0xE9, 0x82, 0xA2}, //
- {0xC4C7, 0x90A3}, //{0xE9, 0x82, 0xA3}, //
- {0xB0EE, 0x90A6}, //{0xE9, 0x82, 0xA6}, //
+ {0xD4E2, 0x906D}, //{0xE9, 0x81, 0xAD}, // ��
+ {0xD5DA, 0x906E}, //{0xE9, 0x81, 0xAE}, // ��
+ {0xD7F1, 0x9075}, //{0xE9, 0x81, 0xB5}, // ��
+ {0xB1DC, 0x907F}, //{0xE9, 0x81, 0xBF}, // ��
+ {0xD1FB, 0x9080}, //{0xE9, 0x82, 0x80}, // ��
+ {0xD2D8, 0x9091}, //{0xE9, 0x82, 0x91}, // ��
+ {0xB5CB, 0x9093}, //{0xE9, 0x82, 0x93}, // ��
+ {0xD0CF, 0x90A2}, //{0xE9, 0x82, 0xA2}, // ��
+ {0xC4C7, 0x90A3}, //{0xE9, 0x82, 0xA3}, // ��
+ {0xB0EE, 0x90A6}, //{0xE9, 0x82, 0xA6}, // ��
{0xD0B0, 0x90AA}, //{0xE9, 0x82, 0xAA}, // а
- {0xD3CA, 0x90AE}, //{0xE9, 0x82, 0xAE}, //
- {0xC1DA, 0x90BB}, //{0xE9, 0x82, 0xBB}, //
- {0xD3F4, 0x90C1}, //{0xE9, 0x83, 0x81}, //
- {0xBDBC, 0x90CA}, //{0xE9, 0x83, 0x8A}, //
- {0xC0C9, 0x90CE}, //{0xE9, 0x83, 0x8E}, //
+ {0xD3CA, 0x90AE}, //{0xE9, 0x82, 0xAE}, // ��
+ {0xC1DA, 0x90BB}, //{0xE9, 0x82, 0xBB}, // ��
+ {0xD3F4, 0x90C1}, //{0xE9, 0x83, 0x81}, // ��
+ {0xBDBC, 0x90CA}, //{0xE9, 0x83, 0x8A}, // ��
+ {0xC0C9, 0x90CE}, //{0xE9, 0x83, 0x8E}, // ��
{0xD6A3, 0x90D1}, //{0xE9, 0x83, 0x91}, // ֣
- {0xB2BF, 0x90E8}, //{0xE9, 0x83, 0xA8}, //
- {0xB9F9, 0x90ED}, //{0xE9, 0x83, 0xAD}, //
- {0xB6BC, 0x90FD}, //{0xE9, 0x83, 0xBD}, //
- {0xB1C9, 0x9119}, //{0xE9, 0x84, 0x99}, //
- {0xD7C3, 0x914C}, //{0xE9, 0x85, 0x8C}, //
- {0xC5E4, 0x914D}, //{0xE9, 0x85, 0x8D}, //
- {0xBEC6, 0x9152}, //{0xE9, 0x85, 0x92}, //
- {0xD0EF, 0x9157}, //{0xE9, 0x85, 0x97}, //
- {0xD4CD, 0x915D}, //{0xE9, 0x85, 0x9D}, //
- {0xBAA8, 0x9163}, //{0xE9, 0x85, 0xA3}, //
- {0xCBD6, 0x9165}, //{0xE9, 0x85, 0xA5}, //
- {0xC0D2, 0x916A}, //{0xE9, 0x85, 0xAA}, //
- {0xB3EA, 0x916C}, //{0xE9, 0x85, 0xAC}, //
- {0xBDB4, 0x9171}, //{0xE9, 0x85, 0xB1}, //
- {0xBDCD, 0x9175}, //{0xE9, 0x85, 0xB5}, //
- {0xBFE1, 0x9177}, //{0xE9, 0x85, 0xB7}, //
- {0xCBE1, 0x9178}, //{0xE9, 0x85, 0xB8}, //
- {0xC4F0, 0x917F}, //{0xE9, 0x85, 0xBF}, //
- {0xB4BC, 0x9187}, //{0xE9, 0x86, 0x87}, //
- {0xD7ED, 0x9189}, //{0xE9, 0x86, 0x89}, //
- {0xB4D7, 0x918B}, //{0xE9, 0x86, 0x8B}, //
- {0xD0D1, 0x9192}, //{0xE9, 0x86, 0x92}, //
- {0xB2C9, 0x91C7}, //{0xE9, 0x87, 0x87}, //
- {0xCACD, 0x91CA}, //{0xE9, 0x87, 0x8A}, //
- {0xC0EF, 0x91CC}, //{0xE9, 0x87, 0x8C}, //
- {0xD6D8, 0x91CD}, //{0xE9, 0x87, 0x8D}, //
+ {0xB2BF, 0x90E8}, //{0xE9, 0x83, 0xA8}, // ��
+ {0xB9F9, 0x90ED}, //{0xE9, 0x83, 0xAD}, // ��
+ {0xB6BC, 0x90FD}, //{0xE9, 0x83, 0xBD}, // ��
+ {0xB1C9, 0x9119}, //{0xE9, 0x84, 0x99}, // ��
+ {0xD7C3, 0x914C}, //{0xE9, 0x85, 0x8C}, // ��
+ {0xC5E4, 0x914D}, //{0xE9, 0x85, 0x8D}, // ��
+ {0xBEC6, 0x9152}, //{0xE9, 0x85, 0x92}, // ��
+ {0xD0EF, 0x9157}, //{0xE9, 0x85, 0x97}, // ��
+ {0xD4CD, 0x915D}, //{0xE9, 0x85, 0x9D}, // ��
+ {0xBAA8, 0x9163}, //{0xE9, 0x85, 0xA3}, // ��
+ {0xCBD6, 0x9165}, //{0xE9, 0x85, 0xA5}, // ��
+ {0xC0D2, 0x916A}, //{0xE9, 0x85, 0xAA}, // ��
+ {0xB3EA, 0x916C}, //{0xE9, 0x85, 0xAC}, // ��
+ {0xBDB4, 0x9171}, //{0xE9, 0x85, 0xB1}, // ��
+ {0xBDCD, 0x9175}, //{0xE9, 0x85, 0xB5}, // ��
+ {0xBFE1, 0x9177}, //{0xE9, 0x85, 0xB7}, // ��
+ {0xCBE1, 0x9178}, //{0xE9, 0x85, 0xB8}, // ��
+ {0xC4F0, 0x917F}, //{0xE9, 0x85, 0xBF}, // ��
+ {0xB4BC, 0x9187}, //{0xE9, 0x86, 0x87}, // ��
+ {0xD7ED, 0x9189}, //{0xE9, 0x86, 0x89}, // ��
+ {0xB4D7, 0x918B}, //{0xE9, 0x86, 0x8B}, // ��
+ {0xD0D1, 0x9192}, //{0xE9, 0x86, 0x92}, // ��
+ {0xB2C9, 0x91C7}, //{0xE9, 0x87, 0x87}, // ��
+ {0xCACD, 0x91CA}, //{0xE9, 0x87, 0x8A}, // ��
+ {0xC0EF, 0x91CC}, //{0xE9, 0x87, 0x8C}, // ��
+ {0xD6D8, 0x91CD}, //{0xE9, 0x87, 0x8D}, // ��
{0xD2B0, 0x91CE}, //{0xE9, 0x87, 0x8E}, // Ұ
- {0xC1BF, 0x91CF}, //{0xE9, 0x87, 0x8F}, //
- {0xBDF0, 0x91D1}, //{0xE9, 0x87, 0x91}, //
- {0xBCF8, 0x9274}, //{0xE9, 0x89, 0xB4}, //
- {0xD5EB, 0x9488}, //{0xE9, 0x92, 0x88}, //
- {0xB6A4, 0x9489}, //{0xE9, 0x92, 0x89}, //
- {0xB5F6, 0x9493}, //{0xE9, 0x92, 0x93}, //
- {0xB8C6, 0x9499}, //{0xE9, 0x92, 0x99}, //
- {0xB6DB, 0x949D}, //{0xE9, 0x92, 0x9D}, //
- {0xB3AE, 0x949E}, //{0xE9, 0x92, 0x9E}, //
- {0xD6D3, 0x949F}, //{0xE9, 0x92, 0x9F}, //
- {0xC4C6, 0x94A0}, //{0xE9, 0x92, 0xA0}, //
- {0xB8D6, 0x94A2}, //{0xE9, 0x92, 0xA2}, //
+ {0xC1BF, 0x91CF}, //{0xE9, 0x87, 0x8F}, //
+ {0xBDF0, 0x91D1}, //{0xE9, 0x87, 0x91}, // ��
+ {0xBCF8, 0x9274}, //{0xE9, 0x89, 0xB4}, // ��
+ {0xD5EB, 0x9488}, //{0xE9, 0x92, 0x88}, // ��
+ {0xB6A4, 0x9489}, //{0xE9, 0x92, 0x89}, // ��
+ {0xB5F6, 0x9493}, //{0xE9, 0x92, 0x93}, // ��
+ {0xB8C6, 0x9499}, //{0xE9, 0x92, 0x99}, // ��
+ {0xB6DB, 0x949D}, //{0xE9, 0x92, 0x9D}, // ��
+ {0xB3AE, 0x949E}, //{0xE9, 0x92, 0x9E}, // ��
+ {0xD6D3, 0x949F}, //{0xE9, 0x92, 0x9F}, // ��
+ {0xC4C6, 0x94A0}, //{0xE9, 0x92, 0xA0}, // ��
+ {0xB8D6, 0x94A2}, //{0xE9, 0x92, 0xA2}, // ��
{0xD4BF, 0x94A5}, //{0xE9, 0x92, 0xA5}, // Կ
- {0xC7D5, 0x94A6}, //{0xE9, 0x92, 0xA6}, //
- {0xBEFB, 0x94A7}, //{0xE9, 0x92, 0xA7}, //
- {0xB9B3, 0x94A9}, //{0xE9, 0x92, 0xA9}, //
+ {0xC7D5, 0x94A6}, //{0xE9, 0x92, 0xA6}, // ��
+ {0xBEFB, 0x94A7}, //{0xE9, 0x92, 0xA7}, // ��
+ {0xB9B3, 0x94A9}, //{0xE9, 0x92, 0xA9}, // ��
{0xC5A5, 0x94AE}, //{0xE9, 0x92, 0xAE}, // ť
{0xC7AE, 0x94B1}, //{0xE9, 0x92, 0xB1}, // Ǯ
{0xC7AF, 0x94B3}, //{0xE9, 0x92, 0xB3}, // ǯ
- {0xD7EA, 0x94BB}, //{0xE9, 0x92, 0xBB}, //
- {0xBCD8, 0x94BE}, //{0xE9, 0x92, 0xBE}, //
- {0xCCFA, 0x94C1}, //{0xE9, 0x93, 0x81}, //
- {0xC1E5, 0x94C3}, //{0xE9, 0x93, 0x83}, //
+ {0xD7EA, 0x94BB}, //{0xE9, 0x92, 0xBB}, // ��
+ {0xBCD8, 0x94BE}, //{0xE9, 0x92, 0xBE}, // ��
+ {0xCCFA, 0x94C1}, //{0xE9, 0x93, 0x81}, // ��
+ {0xC1E5, 0x94C3}, //{0xE9, 0x93, 0x83}, // ��
{0xC7A6, 0x94C5}, //{0xE9, 0x93, 0x85}, // Ǧ
{0xC3AD, 0x94C6}, //{0xE9, 0x93, 0x86}, // í
- {0xEEED, 0x94D0}, //{0xE9, 0x93, 0x90}, //
- {0xEEF5, 0x94DB}, //{0xE9, 0x93, 0x9B}, //
+ {0xEEED, 0x94D0}, //{0xE9, 0x93, 0x90}, // ��
+ {0xEEF5, 0x94DB}, //{0xE9, 0x93, 0x9B}, // ��
{0xCDAD, 0x94DC}, //{0xE9, 0x93, 0x9C}, // ͭ
- {0xC2C1, 0x94DD}, //{0xE9, 0x93, 0x9D}, //
+ {0xC2C1, 0x94DD}, //{0xE9, 0x93, 0x9D}, // ��
{0xD5A1, 0x94E1}, //{0xE9, 0x93, 0xA1}, // ա
{0xCFB3, 0x94E3}, //{0xE9, 0x93, 0xA3}, // ϳ
- {0xC3FA, 0x94ED}, //{0xE9, 0x93, 0xAD}, //
- {0xB2F9, 0x94F2}, //{0xE9, 0x93, 0xB2}, //
- {0xD2F8, 0x94F6}, //{0xE9, 0x93, 0xB6}, //
- {0xD6FD, 0x94F8}, //{0xE9, 0x93, 0xB8}, //
- {0xC6CC, 0x94FA}, //{0xE9, 0x93, 0xBA}, //
- {0xC1B4, 0x94FE}, //{0xE9, 0x93, 0xBE}, //
- {0xCFFA, 0x9500}, //{0xE9, 0x94, 0x80}, //
- {0xCBF8, 0x9501}, //{0xE9, 0x94, 0x81}, //
- {0xB3FA, 0x9504}, //{0xE9, 0x94, 0x84}, //
- {0xB9F8, 0x9505}, //{0xE9, 0x94, 0x85}, //
- {0xD0E2, 0x9508}, //{0xE9, 0x94, 0x88}, //
- {0xEFB1, 0x9509}, //{0xE9, 0x94, 0x89}, //
- {0xB7E6, 0x950B}, //{0xE9, 0x94, 0x8B}, //
+ {0xC3FA, 0x94ED}, //{0xE9, 0x93, 0xAD}, // ��
+ {0xB2F9, 0x94F2}, //{0xE9, 0x93, 0xB2}, // ��
+ {0xD2F8, 0x94F6}, //{0xE9, 0x93, 0xB6}, // ��
+ {0xD6FD, 0x94F8}, //{0xE9, 0x93, 0xB8}, // ��
+ {0xC6CC, 0x94FA}, //{0xE9, 0x93, 0xBA}, // ��
+ {0xC1B4, 0x94FE}, //{0xE9, 0x93, 0xBE}, // t
+ {0xCFFA, 0x9500}, //{0xE9, 0x94, 0x80}, // ��
+ {0xCBF8, 0x9501}, //{0xE9, 0x94, 0x81}, // ��
+ {0xB3FA, 0x9504}, //{0xE9, 0x94, 0x84}, // ��
+ {0xB9F8, 0x9505}, //{0xE9, 0x94, 0x85}, // ��
+ {0xD0E2, 0x9508}, //{0xE9, 0x94, 0x88}, // ��
+ {0xEFB1, 0x9509}, //{0xE9, 0x94, 0x89}, // �
+ {0xB7E6, 0x950B}, //{0xE9, 0x94, 0x8B}, // ��
{0xD0BF, 0x950C}, //{0xE9, 0x94, 0x8C}, // п
- {0xC8F1, 0x9510}, //{0xE9, 0x94, 0x90}, //
- {0xB4ED, 0x9519}, //{0xE9, 0x94, 0x99}, //
+ {0xC8F1, 0x9510}, //{0xE9, 0x94, 0x90}, // ��
+ {0xB4ED, 0x9519}, //{0xE9, 0x94, 0x99}, // ��
{0xC3AA, 0x951A}, //{0xE9, 0x94, 0x9A}, // ê
- {0xCEFD, 0x9521}, //{0xE9, 0x94, 0xA1}, //
- {0xC2E0, 0x9523}, //{0xE9, 0x94, 0xA3}, //
- {0xB4B8, 0x9524}, //{0xE9, 0x94, 0xA4}, //
+ {0xCEFD, 0x9521}, //{0xE9, 0x94, 0xA1}, // ��
+ {0xC2E0, 0x9523}, //{0xE9, 0x94, 0xA3}, // ��
+ {0xB4B8, 0x9524}, //{0xE9, 0x94, 0xA4}, // ��
{0xD7B6, 0x9525}, //{0xE9, 0x94, 0xA5}, //
- {0xBDF5, 0x9526}, //{0xE9, 0x94, 0xA6}, //
- {0xCFC7, 0x9528}, //{0xE9, 0x94, 0xA8}, //
- {0xB6A7, 0x952D}, //{0xE9, 0x94, 0xAD}, //
- {0xBCFC, 0x952E}, //{0xE9, 0x94, 0xAE}, //
- {0xBEE2, 0x952F}, //{0xE9, 0x94, 0xAF}, //
- {0xC3CC, 0x9530}, //{0xE9, 0x94, 0xB0}, //
- {0xC7C2, 0x9539}, //{0xE9, 0x94, 0xB9}, //
- {0xB6CD, 0x953B}, //{0xE9, 0x94, 0xBB}, //
- {0xB6C6, 0x9540}, //{0xE9, 0x95, 0x80}, //
- {0xD5F2, 0x9547}, //{0xE9, 0x95, 0x87}, //
- {0xC4F7, 0x954A}, //{0xE9, 0x95, 0x8A}, //
- {0xB8E4, 0x9550}, //{0xE9, 0x95, 0x90}, //
- {0xBEB5, 0x955C}, //{0xE9, 0x95, 0x9C}, //
- {0xC1CD, 0x9563}, //{0xE9, 0x95, 0xA3}, //
- {0xC1AD, 0x9570}, //{0xE9, 0x95, 0xB0}, //
- {0xCFE2, 0x9576}, //{0xE9, 0x95, 0xB6}, //
- {0xB3A4, 0x957F}, //{0xE9, 0x95, 0xBF}, //
- {0xC3C5, 0x95E8}, //{0xE9, 0x97, 0xA8}, //
- {0xC9C1, 0x95EA}, //{0xE9, 0x97, 0xAA}, //
- {0xB1D5, 0x95ED}, //{0xE9, 0x97, 0xAD}, //
- {0xCECA, 0x95EE}, //{0xE9, 0x97, 0xAE}, //
- {0xB4B3, 0x95EF}, //{0xE9, 0x97, 0xAF}, //
- {0xC8F2, 0x95F0}, //{0xE9, 0x97, 0xB0}, //
- {0xCFD0, 0x95F2}, //{0xE9, 0x97, 0xB2}, //
- {0xBCE4, 0x95F4}, //{0xE9, 0x97, 0xB4}, //
- {0xC3C6, 0x95F7}, //{0xE9, 0x97, 0xB7}, //
+ {0xBDF5, 0x9526}, //{0xE9, 0x94, 0xA6}, // ��
+ {0xCFC7, 0x9528}, //{0xE9, 0x94, 0xA8}, // ��
+ {0xB6A7, 0x952D}, //{0xE9, 0x94, 0xAD}, // ��
+ {0xBCFC, 0x952E}, //{0xE9, 0x94, 0xAE}, // ��
+ {0xBEE2, 0x952F}, //{0xE9, 0x94, 0xAF}, // ��
+ {0xC3CC, 0x9530}, //{0xE9, 0x94, 0xB0}, // ��
+ {0xC7C2, 0x9539}, //{0xE9, 0x94, 0xB9}, // ��
+ {0xB6CD, 0x953B}, //{0xE9, 0x94, 0xBB}, // ��
+ {0xB6C6, 0x9540}, //{0xE9, 0x95, 0x80}, // ��
+ {0xD5F2, 0x9547}, //{0xE9, 0x95, 0x87}, // ��
+ {0xC4F7, 0x954A}, //{0xE9, 0x95, 0x8A}, // ��
+ {0xB8E4, 0x9550}, //{0xE9, 0x95, 0x90}, // ��
+ {0xBEB5, 0x955C}, //{0xE9, 0x95, 0x9C}, // ��
+ {0xC1CD, 0x9563}, //{0xE9, 0x95, 0xA3}, // ��
+ {0xC1AD, 0x9570}, //{0xE9, 0x95, 0xB0}, // m
+ {0xCFE2, 0x9576}, //{0xE9, 0x95, 0xB6}, // ��
+ {0xB3A4, 0x957F}, //{0xE9, 0x95, 0xBF}, // ��
+ {0xC3C5, 0x95E8}, //{0xE9, 0x97, 0xA8}, // ��
+ {0xC9C1, 0x95EA}, //{0xE9, 0x97, 0xAA}, // ��
+ {0xB1D5, 0x95ED}, //{0xE9, 0x97, 0xAD}, // ��
+ {0xCECA, 0x95EE}, //{0xE9, 0x97, 0xAE}, // ��
+ {0xB4B3, 0x95EF}, //{0xE9, 0x97, 0xAF}, // ��
+ {0xC8F2, 0x95F0}, //{0xE9, 0x97, 0xB0}, // ��
+ {0xCFD0, 0x95F2}, //{0xE9, 0x97, 0xB2}, // ��
+ {0xBCE4, 0x95F4}, //{0xE9, 0x97, 0xB4}, // ��
+ {0xC3C6, 0x95F7}, //{0xE9, 0x97, 0xB7}, // ��
{0xD5A2, 0x95F8}, //{0xE9, 0x97, 0xB8}, // բ
- {0xC4D6, 0x95F9}, //{0xE9, 0x97, 0xB9}, //
- {0xB9EB, 0x95FA}, //{0xE9, 0x97, 0xBA}, //
- {0xCEC5, 0x95FB}, //{0xE9, 0x97, 0xBB}, //
- {0xC3F6, 0x95FD}, //{0xE9, 0x97, 0xBD}, //
- {0xB7A7, 0x9600}, //{0xE9, 0x98, 0x80}, //
- {0xB8F3, 0x9601}, //{0xE9, 0x98, 0x81}, //
- {0xD4C4, 0x9605}, //{0xE9, 0x98, 0x85}, //
- {0xD1D6, 0x960E}, //{0xE9, 0x98, 0x8E}, //
- {0xB2FB, 0x9610}, //{0xE9, 0x98, 0x90}, //
- {0xC0AB, 0x9614}, //{0xE9, 0x98, 0x94}, //
- {0xB6D3, 0x961F}, //{0xE9, 0x98, 0x9F}, //
- {0xDAE5, 0x9631}, //{0xE9, 0x98, 0xB1}, //
- {0xB7C0, 0x9632}, //{0xE9, 0x98, 0xB2}, //
- {0xD1F4, 0x9633}, //{0xE9, 0x98, 0xB3}, //
- {0xD2F5, 0x9634}, //{0xE9, 0x98, 0xB4}, //
- {0xD5F3, 0x9635}, //{0xE9, 0x98, 0xB5}, //
- {0xBDD7, 0x9636}, //{0xE9, 0x98, 0xB6}, //
- {0xD7E8, 0x963B}, //{0xE9, 0x98, 0xBB}, //
- {0xB0A2, 0x963F}, //{0xE9, 0x98, 0xBF}, //
- {0xB8BD, 0x9644}, //{0xE9, 0x99, 0x84}, //
- {0xBCCA, 0x9645}, //{0xE9, 0x99, 0x85}, //
+ {0xC4D6, 0x95F9}, //{0xE9, 0x97, 0xB9}, // ��
+ {0xB9EB, 0x95FA}, //{0xE9, 0x97, 0xBA}, // ��
+ {0xCEC5, 0x95FB}, //{0xE9, 0x97, 0xBB}, // ��
+ {0xC3F6, 0x95FD}, //{0xE9, 0x97, 0xBD}, // ��
+ {0xB7A7, 0x9600}, //{0xE9, 0x98, 0x80}, // ��
+ {0xB8F3, 0x9601}, //{0xE9, 0x98, 0x81}, // ��
+ {0xD4C4, 0x9605}, //{0xE9, 0x98, 0x85}, // ��
+ {0xD1D6, 0x960E}, //{0xE9, 0x98, 0x8E}, // ��
+ {0xB2FB, 0x9610}, //{0xE9, 0x98, 0x90}, // ��
+ {0xC0AB, 0x9614}, //{0xE9, 0x98, 0x94}, // ��
+ {0xB6D3, 0x961F}, //{0xE9, 0x98, 0x9F}, // ��
+ {0xDAE5, 0x9631}, //{0xE9, 0x98, 0xB1}, // ��
+ {0xB7C0, 0x9632}, //{0xE9, 0x98, 0xB2}, // ��
+ {0xD1F4, 0x9633}, //{0xE9, 0x98, 0xB3}, // ��
+ {0xD2F5, 0x9634}, //{0xE9, 0x98, 0xB4}, // ��
+ {0xD5F3, 0x9635}, //{0xE9, 0x98, 0xB5}, // ��
+ {0xBDD7, 0x9636}, //{0xE9, 0x98, 0xB6}, // ��
+ {0xD7E8, 0x963B}, //{0xE9, 0x98, 0xBB}, // ��
+ {0xB0A2, 0x963F}, //{0xE9, 0x98, 0xBF}, // ��
+ {0xB8BD, 0x9644}, //{0xE9, 0x99, 0x84}, // ��
+ {0xBCCA, 0x9645}, //{0xE9, 0x99, 0x85}, // ��
{0xC2BD, 0x9646}, //{0xE9, 0x99, 0x86}, // ½
- {0xB3C2, 0x9648}, //{0xE9, 0x99, 0x88}, //
+ {0xB3C2, 0x9648}, //{0xE9, 0x99, 0x88}, // ��
{0xC2AA, 0x964B}, //{0xE9, 0x99, 0x8B}, // ª
{0xC4B0, 0x964C}, //{0xE9, 0x99, 0x8C}, // İ
- {0xBDB5, 0x964D}, //{0xE9, 0x99, 0x8D}, //
- {0xCFDE, 0x9650}, //{0xE9, 0x99, 0x90}, //
- {0xC9C2, 0x9655}, //{0xE9, 0x99, 0x95}, //
- {0xB6B8, 0x9661}, //{0xE9, 0x99, 0xA1}, //
+ {0xBDB5, 0x964D}, //{0xE9, 0x99, 0x8D}, // ��
+ {0xCFDE, 0x9650}, //{0xE9, 0x99, 0x90}, // ��
+ {0xC9C2, 0x9655}, //{0xE9, 0x99, 0x95}, // ��
+ {0xB6B8, 0x9661}, //{0xE9, 0x99, 0xA1}, // ��
{0xD4BA, 0x9662}, //{0xE9, 0x99, 0xA2}, // Ժ
- {0xB3FD, 0x9664}, //{0xE9, 0x99, 0xA4}, //
- {0xD4C9, 0x9668}, //{0xE9, 0x99, 0xA8}, //
- {0xCFD5, 0x9669}, //{0xE9, 0x99, 0xA9}, //
- {0xC5E3, 0x966A}, //{0xE9, 0x99, 0xAA}, //
- {0xC1EA, 0x9675}, //{0xE9, 0x99, 0xB5}, //
- {0xCCD5, 0x9676}, //{0xE9, 0x99, 0xB6}, //
- {0xCFDD, 0x9677}, //{0xE9, 0x99, 0xB7}, //
- {0xD3E7, 0x9685}, //{0xE9, 0x9A, 0x85}, //
+ {0xB3FD, 0x9664}, //{0xE9, 0x99, 0xA4}, // ��
+ {0xD4C9, 0x9668}, //{0xE9, 0x99, 0xA8}, // ��
+ {0xCFD5, 0x9669}, //{0xE9, 0x99, 0xA9}, // ��
+ {0xC5E3, 0x966A}, //{0xE9, 0x99, 0xAA}, // ��
+ {0xC1EA, 0x9675}, //{0xE9, 0x99, 0xB5}, // ��
+ {0xCCD5, 0x9676}, //{0xE9, 0x99, 0xB6}, // ��
+ {0xCFDD, 0x9677}, //{0xE9, 0x99, 0xB7}, // ��
+ {0xD3E7, 0x9685}, //{0xE9, 0x9A, 0x85}, // ��
{0xC2A1, 0x9686}, //{0xE9, 0x9A, 0x86}, // ¡
- {0xCBE6, 0x968F}, //{0xE9, 0x9A, 0x8F}, //
- {0xD2FE, 0x9690}, //{0xE9, 0x9A, 0x90}, //
- {0xB8F4, 0x9694}, //{0xE9, 0x9A, 0x94}, //
- {0xB0AF, 0x9698}, //{0xE9, 0x9A, 0x98}, //
+ {0xCBE6, 0x968F}, //{0xE9, 0x9A, 0x8F}, // ��
+ {0xD2FE, 0x9690}, //{0xE9, 0x9A, 0x90}, // ��
+ {0xB8F4, 0x9694}, //{0xE9, 0x9A, 0x94}, // ��
+ {0xB0AF, 0x9698}, //{0xE9, 0x9A, 0x98}, // ��
{0xCFB6, 0x9699}, //{0xE9, 0x9A, 0x99}, // ϶
- {0xD5CF, 0x969C}, //{0xE9, 0x9A, 0x9C}, //
- {0xCBED, 0x96A7}, //{0xE9, 0x9A, 0xA7}, //
- {0xC1A5, 0x96B6}, //{0xE9, 0x9A, 0xB6}, //
- {0xC4D1, 0x96BE}, //{0xE9, 0x9A, 0xBE}, //
+ {0xD5CF, 0x969C}, //{0xE9, 0x9A, 0x9C}, // ��
+ {0xCBED, 0x96A7}, //{0xE9, 0x9A, 0xA7}, // ��
+ {0xC1A5, 0x96B6}, //{0xE9, 0x9A, 0xB6}, // e
+ {0xC4D1, 0x96BE}, //{0xE9, 0x9A, 0xBE}, // ��
{0xC8B8, 0x96C0}, //{0xE9, 0x9B, 0x80}, // ȸ
- {0xD1E3, 0x96C1}, //{0xE9, 0x9B, 0x81}, //
- {0xD0DB, 0x96C4}, //{0xE9, 0x9B, 0x84}, //
- {0xD1C5, 0x96C5}, //{0xE9, 0x9B, 0x85}, //
- {0xBCAF, 0x96C6}, //{0xE9, 0x9B, 0x86}, //
- {0xB9CD, 0x96C7}, //{0xE9, 0x9B, 0x87}, //
- {0xB4C6, 0x96CC}, //{0xE9, 0x9B, 0x8C}, //
- {0xB3FB, 0x96CF}, //{0xE9, 0x9B, 0x8F}, //
- {0xB5F1, 0x96D5}, //{0xE9, 0x9B, 0x95}, //
- {0xD3EA, 0x96E8}, //{0xE9, 0x9B, 0xA8}, //
+ {0xD1E3, 0x96C1}, //{0xE9, 0x9B, 0x81}, // ��
+ {0xD0DB, 0x96C4}, //{0xE9, 0x9B, 0x84}, // ��
+ {0xD1C5, 0x96C5}, //{0xE9, 0x9B, 0x85}, // ��
+ {0xBCAF, 0x96C6}, //{0xE9, 0x9B, 0x86}, // ��
+ {0xB9CD, 0x96C7}, //{0xE9, 0x9B, 0x87}, // ��
+ {0xB4C6, 0x96CC}, //{0xE9, 0x9B, 0x8C}, // ��
+ {0xB3FB, 0x96CF}, //{0xE9, 0x9B, 0x8F}, // ��
+ {0xB5F1, 0x96D5}, //{0xE9, 0x9B, 0x95}, // ��
+ {0xD3EA, 0x96E8}, //{0xE9, 0x9B, 0xA8}, // ��
{0xD1A9, 0x96EA}, //{0xE9, 0x9B, 0xAA}, // ѩ
- {0xF6A8, 0x96F3}, //{0xE9, 0x9B, 0xB3}, //
- {0xC1E3, 0x96F6}, //{0xE9, 0x9B, 0xB6}, //
- {0xC0D7, 0x96F7}, //{0xE9, 0x9B, 0xB7}, //
- {0xB1A2, 0x96F9}, //{0xE9, 0x9B, 0xB9}, //
- {0xCEED, 0x96FE}, //{0xE9, 0x9B, 0xBE}, //
- {0xD0E8, 0x9700}, //{0xE9, 0x9C, 0x80}, //
- {0xD5F0, 0x9707}, //{0xE9, 0x9C, 0x87}, //
+ {0xF6A8, 0x96F3}, //{0xE9, 0x9B, 0xB3}, // ��
+ {0xC1E3, 0x96F6}, //{0xE9, 0x9B, 0xB6}, // ��
+ {0xC0D7, 0x96F7}, //{0xE9, 0x9B, 0xB7}, // ��
+ {0xB1A2, 0x96F9}, //{0xE9, 0x9B, 0xB9}, // ��
+ {0xCEED, 0x96FE}, //{0xE9, 0x9B, 0xBE}, // ��
+ {0xD0E8, 0x9700}, //{0xE9, 0x9C, 0x80}, // ��
+ {0xD5F0, 0x9707}, //{0xE9, 0x9C, 0x87}, // ��
{0xC3B9, 0x9709}, //{0xE9, 0x9C, 0x89}, // ù
- {0xBBF4, 0x970D}, //{0xE9, 0x9C, 0x8D}, //
- {0xF6AE, 0x970E}, //{0xE9, 0x9C, 0x8E}, //
+ {0xBBF4, 0x970D}, //{0xE9, 0x9C, 0x8D}, // ��
+ {0xF6AE, 0x970E}, //{0xE9, 0x9C, 0x8E}, // ��
{0xCBAA, 0x971C}, //{0xE9, 0x9C, 0x9C}, // ˪
{0xCFBC, 0x971E}, //{0xE9, 0x9C, 0x9E}, // ϼ
{0xC2B6, 0x9732}, //{0xE9, 0x9C, 0xB2}, // ¶
- {0xB0D4, 0x9738}, //{0xE9, 0x9C, 0xB8}, //
- {0xC5F9, 0x9739}, //{0xE9, 0x9C, 0xB9}, //
- {0xC7E0, 0x9752}, //{0xE9, 0x9D, 0x92}, //
- {0xBEB8, 0x9756}, //{0xE9, 0x9D, 0x96}, //
- {0xBEB2, 0x9759}, //{0xE9, 0x9D, 0x99}, //
- {0xB7C7, 0x975E}, //{0xE9, 0x9D, 0x9E}, //
- {0xBFBF, 0x9760}, //{0xE9, 0x9D, 0xA0}, //
- {0xC3D2, 0x9761}, //{0xE9, 0x9D, 0xA1}, //
- {0xC3E6, 0x9762}, //{0xE9, 0x9D, 0xA2}, //
- {0xB8EF, 0x9769}, //{0xE9, 0x9D, 0xA9}, //
+ {0xB0D4, 0x9738}, //{0xE9, 0x9C, 0xB8}, // ��
+ {0xC5F9, 0x9739}, //{0xE9, 0x9C, 0xB9}, // ��
+ {0xC7E0, 0x9752}, //{0xE9, 0x9D, 0x92}, // ��
+ {0xBEB8, 0x9756}, //{0xE9, 0x9D, 0x96}, // ��
+ {0xBEB2, 0x9759}, //{0xE9, 0x9D, 0x99}, // ��
+ {0xB7C7, 0x975E}, //{0xE9, 0x9D, 0x9E}, // ��
+ {0xBFBF, 0x9760}, //{0xE9, 0x9D, 0xA0}, // ��
+ {0xC3D2, 0x9761}, //{0xE9, 0x9D, 0xA1}, // ��
+ {0xC3E6, 0x9762}, //{0xE9, 0x9D, 0xA2}, // ��
+ {0xB8EF, 0x9769}, //{0xE9, 0x9D, 0xA9}, // ��
{0xD1A5, 0x9774}, //{0xE9, 0x9D, 0xB4}, // ѥ
- {0xB0D0, 0x9776}, //{0xE9, 0x9D, 0xB6}, //
+ {0xB0D0, 0x9776}, //{0xE9, 0x9D, 0xB6}, // ��
{0xD0AC, 0x978B}, //{0xE9, 0x9E, 0x8B}, // Ь
- {0xB0B0, 0x978D}, //{0xE9, 0x9E, 0x8D}, //
- {0xBECF, 0x97A0}, //{0xE9, 0x9E, 0xA0}, //
- {0xB1DE, 0x97AD}, //{0xE9, 0x9E, 0xAD}, //
- {0xC8CD, 0x97E7}, //{0xE9, 0x9F, 0xA7}, //
- {0xBAAB, 0x97E9}, //{0xE9, 0x9F, 0xA9}, //
- {0xBEC2, 0x97ED}, //{0xE9, 0x9F, 0xAD}, //
- {0xD2F4, 0x97F3}, //{0xE9, 0x9F, 0xB3}, //
- {0xD4CF, 0x97F5}, //{0xE9, 0x9F, 0xB5}, //
+ {0xB0B0, 0x978D}, //{0xE9, 0x9E, 0x8D}, // ��
+ {0xBECF, 0x97A0}, //{0xE9, 0x9E, 0xA0}, // ��
+ {0xB1DE, 0x97AD}, //{0xE9, 0x9E, 0xAD}, // ��
+ {0xC8CD, 0x97E7}, //{0xE9, 0x9F, 0xA7}, // ��
+ {0xBAAB, 0x97E9}, //{0xE9, 0x9F, 0xA9}, // ��
+ {0xBEC2, 0x97ED}, //{0xE9, 0x9F, 0xAD}, // ��
+ {0xD2F4, 0x97F3}, //{0xE9, 0x9F, 0xB3}, // ��
+ {0xD4CF, 0x97F5}, //{0xE9, 0x9F, 0xB5}, // ��
{0xD2B3, 0x9875}, //{0xE9, 0xA1, 0xB5}, // ҳ
- {0xB6A5, 0x9876}, //{0xE9, 0xA1, 0xB6}, //
- {0xC7EA, 0x9877}, //{0xE9, 0xA1, 0xB7}, //
- {0xCFEE, 0x9879}, //{0xE9, 0xA1, 0xB9}, //
+ {0xB6A5, 0x9876}, //{0xE9, 0xA1, 0xB6}, // ��
+ {0xC7EA, 0x9877}, //{0xE9, 0xA1, 0xB7}, // ��
+ {0xCFEE, 0x9879}, //{0xE9, 0xA1, 0xB9}, // ��
{0xCBB3, 0x987A}, //{0xE9, 0xA1, 0xBA}, // ˳
- {0xD0EB, 0x987B}, //{0xE9, 0xA1, 0xBB}, //
- {0xCDE7, 0x987D}, //{0xE9, 0xA1, 0xBD}, //
- {0xB9CB, 0x987E}, //{0xE9, 0xA1, 0xBE}, //
- {0xB6D9, 0x987F}, //{0xE9, 0xA1, 0xBF}, //
- {0xB0E4, 0x9881}, //{0xE9, 0xA2, 0x81}, //
- {0xCBCC, 0x9882}, //{0xE9, 0xA2, 0x82}, //
+ {0xD0EB, 0x987B}, //{0xE9, 0xA1, 0xBB}, // ��
+ {0xCDE7, 0x987D}, //{0xE9, 0xA1, 0xBD}, // ��
+ {0xB9CB, 0x987E}, //{0xE9, 0xA1, 0xBE}, // ��
+ {0xB6D9, 0x987F}, //{0xE9, 0xA1, 0xBF}, // ��
+ {0xB0E4, 0x9881}, //{0xE9, 0xA2, 0x81}, // ��
+ {0xCBCC, 0x9882}, //{0xE9, 0xA2, 0x82}, // ��
{0xD4A4, 0x9884}, //{0xE9, 0xA2, 0x84}, // Ԥ
{0xC2AD, 0x9885}, //{0xE9, 0xA2, 0x85}, //
- {0xC1EC, 0x9886}, //{0xE9, 0xA2, 0x86}, //
- {0xC6C4, 0x9887}, //{0xE9, 0xA2, 0x87}, //
- {0xBEB1, 0x9888}, //{0xE9, 0xA2, 0x88}, //
- {0xBCD5, 0x988A}, //{0xE9, 0xA2, 0x8A}, //
+ {0xC1EC, 0x9886}, //{0xE9, 0xA2, 0x86}, // ��
+ {0xC6C4, 0x9887}, //{0xE9, 0xA2, 0x87}, // ��
+ {0xBEB1, 0x9888}, //{0xE9, 0xA2, 0x88}, // ��
+ {0xBCD5, 0x988A}, //{0xE9, 0xA2, 0x8A}, // ��
{0xC6B5, 0x9891}, //{0xE9, 0xA2, 0x91}, // Ƶ
- {0xCDC7, 0x9893}, //{0xE9, 0xA2, 0x93}, //
+ {0xCDC7, 0x9893}, //{0xE9, 0xA2, 0x93}, // ��
{0xD3B1, 0x9896}, //{0xE9, 0xA2, 0x96}, // ӱ
- {0xBFC5, 0x9897}, //{0xE9, 0xA2, 0x97}, //
- {0xCCE2, 0x9898}, //{0xE9, 0xA2, 0x98}, //
- {0xD1D5, 0x989C}, //{0xE9, 0xA2, 0x9C}, //
- {0xB6EE, 0x989D}, //{0xE9, 0xA2, 0x9D}, //
- {0xB5DF, 0x98A0}, //{0xE9, 0xA2, 0xA0}, //
- {0xB2FC, 0x98A4}, //{0xE9, 0xA2, 0xA4}, //
- {0xB7E7, 0x98CE}, //{0xE9, 0xA3, 0x8E}, //
- {0xECAA, 0x98D2}, //{0xE9, 0xA3, 0x92}, //
+ {0xBFC5, 0x9897}, //{0xE9, 0xA2, 0x97}, // ��
+ {0xCCE2, 0x9898}, //{0xE9, 0xA2, 0x98}, // ��
+ {0xD1D5, 0x989C}, //{0xE9, 0xA2, 0x9C}, // ��
+ {0xB6EE, 0x989D}, //{0xE9, 0xA2, 0x9D}, // ��
+ {0xB5DF, 0x98A0}, //{0xE9, 0xA2, 0xA0}, // ��
+ {0xB2FC, 0x98A4}, //{0xE9, 0xA2, 0xA4}, // ��
+ {0xB7E7, 0x98CE}, //{0xE9, 0xA3, 0x8E}, // ��
+ {0xECAA, 0x98D2}, //{0xE9, 0xA3, 0x92}, // �
{0xC6AE, 0x98D8}, //{0xE9, 0xA3, 0x98}, // Ʈ
- {0xB7C9, 0x98DE}, //{0xE9, 0xA3, 0x9E}, //
+ {0xB7C9, 0x98DE}, //{0xE9, 0xA3, 0x9E}, // ��
{0xCAB3, 0x98DF}, //{0xE9, 0xA3, 0x9F}, // ʳ
- {0xB2CD, 0x9910}, //{0xE9, 0xA4, 0x90}, //
- {0xBCA2, 0x9965}, //{0xE9, 0xA5, 0xA5}, //
- {0xB7B9, 0x996D}, //{0xE9, 0xA5, 0xAD}, //
- {0xD2FB, 0x996E}, //{0xE9, 0xA5, 0xAE}, //
- {0xCACE, 0x9970}, //{0xE9, 0xA5, 0xB0}, //
- {0xB1A5, 0x9971}, //{0xE9, 0xA5, 0xB1}, //
- {0xCBC7, 0x9972}, //{0xE9, 0xA5, 0xB2}, //
- {0xB6FC, 0x9975}, //{0xE9, 0xA5, 0xB5}, //
- {0xC8C4, 0x9976}, //{0xE9, 0xA5, 0xB6}, //
- {0xBDC8, 0x997A}, //{0xE9, 0xA5, 0xBA}, //
- {0xB1FD, 0x997C}, //{0xE9, 0xA5, 0xBC}, //
- {0xB6F6, 0x997F}, //{0xE9, 0xA5, 0xBF}, //
- {0xC4D9, 0x9981}, //{0xE9, 0xA6, 0x81}, //
- {0xCFDA, 0x9985}, //{0xE9, 0xA6, 0x85}, //
- {0xB9DD, 0x9986}, //{0xE9, 0xA6, 0x86}, //
- {0xB2F6, 0x998B}, //{0xE9, 0xA6, 0x8B}, //
- {0xE2C9, 0x998D}, //{0xE9, 0xA6, 0x8D}, //
- {0xC1F3, 0x998F}, //{0xE9, 0xA6, 0x8F}, //
- {0xC2F8, 0x9992}, //{0xE9, 0xA6, 0x92}, //
- {0xCAD7, 0x9996}, //{0xE9, 0xA6, 0x96}, //
- {0xCFE3, 0x9999}, //{0xE9, 0xA6, 0x99}, //
- {0xC2ED, 0x9A6C}, //{0xE9, 0xA9, 0xAC}, //
- {0xCDD4, 0x9A6E}, //{0xE9, 0xA9, 0xAE}, //
+ {0xB2CD, 0x9910}, //{0xE9, 0xA4, 0x90}, // ��
+ {0xBCA2, 0x9965}, //{0xE9, 0xA5, 0xA5}, // ��
+ {0xB7B9, 0x996D}, //{0xE9, 0xA5, 0xAD}, // ��
+ {0xD2FB, 0x996E}, //{0xE9, 0xA5, 0xAE}, // ��
+ {0xCACE, 0x9970}, //{0xE9, 0xA5, 0xB0}, // ��
+ {0xB1A5, 0x9971}, //{0xE9, 0xA5, 0xB1}, // ��
+ {0xCBC7, 0x9972}, //{0xE9, 0xA5, 0xB2}, // ��
+ {0xB6FC, 0x9975}, //{0xE9, 0xA5, 0xB5}, // ��
+ {0xC8C4, 0x9976}, //{0xE9, 0xA5, 0xB6}, // ��
+ {0xBDC8, 0x997A}, //{0xE9, 0xA5, 0xBA}, // ��
+ {0xB1FD, 0x997C}, //{0xE9, 0xA5, 0xBC}, // ��
+ {0xB6F6, 0x997F}, //{0xE9, 0xA5, 0xBF}, // ��
+ {0xC4D9, 0x9981}, //{0xE9, 0xA6, 0x81}, // ��
+ {0xCFDA, 0x9985}, //{0xE9, 0xA6, 0x85}, // ��
+ {0xB9DD, 0x9986}, //{0xE9, 0xA6, 0x86}, // ��
+ {0xB2F6, 0x998B}, //{0xE9, 0xA6, 0x8B}, // ��
+ {0xE2C9, 0x998D}, //{0xE9, 0xA6, 0x8D}, // ��
+ {0xC1F3, 0x998F}, //{0xE9, 0xA6, 0x8F}, // ��
+ {0xC2F8, 0x9992}, //{0xE9, 0xA6, 0x92}, // ��
+ {0xCAD7, 0x9996}, //{0xE9, 0xA6, 0x96}, // ��
+ {0xCFE3, 0x9999}, //{0xE9, 0xA6, 0x99}, // ��
+ {0xC2ED, 0x9A6C}, //{0xE9, 0xA9, 0xAC}, // ��
+ {0xCDD4, 0x9A6E}, //{0xE9, 0xA9, 0xAE}, // ��
{0xD1B1, 0x9A6F}, //{0xE9, 0xA9, 0xAF}, // ѱ
- {0xB3DB, 0x9A70}, //{0xE9, 0xA9, 0xB0}, //
- {0xC7FD, 0x9A71}, //{0xE9, 0xA9, 0xB1}, //
- {0xB2B5, 0x9A73}, //{0xE9, 0xA9, 0xB3}, //
+ {0xB3DB, 0x9A70}, //{0xE9, 0xA9, 0xB0}, // ��
+ {0xC7FD, 0x9A71}, //{0xE9, 0xA9, 0xB1}, // ��
+ {0xB2B5, 0x9A73}, //{0xE9, 0xA9, 0xB3}, // ��
{0xC2BF, 0x9A74}, //{0xE9, 0xA9, 0xB4}, // ¿
{0xCABB, 0x9A76}, //{0xE9, 0xA9, 0xB6}, // ʻ
- {0xBED4, 0x9A79}, //{0xE9, 0xA9, 0xB9}, //
+ {0xBED4, 0x9A79}, //{0xE9, 0xA9, 0xB9}, // ��
{0xD7A4, 0x9A7B}, //{0xE9, 0xA9, 0xBB}, // פ
- {0xCDD5, 0x9A7C}, //{0xE9, 0xA9, 0xBC}, //
- {0xBCDD, 0x9A7E}, //{0xE9, 0xA9, 0xBE}, //
- {0xC2EE, 0x9A82}, //{0xE9, 0xAA, 0x82}, //
- {0xBDBE, 0x9A84}, //{0xE9, 0xAA, 0x84}, //
- {0xC2E6, 0x9A86}, //{0xE9, 0xAA, 0x86}, //
- {0xBAA7, 0x9A87}, //{0xE9, 0xAA, 0x87}, //
- {0xD1E9, 0x9A8C}, //{0xE9, 0xAA, 0x8C}, //
- {0xBFA5, 0x9A8F}, //{0xE9, 0xAA, 0x8F}, //
- {0xC6EF, 0x9A91}, //{0xE9, 0xAA, 0x91}, //
+ {0xCDD5, 0x9A7C}, //{0xE9, 0xA9, 0xBC}, // ��
+ {0xBCDD, 0x9A7E}, //{0xE9, 0xA9, 0xBE}, // ��
+ {0xC2EE, 0x9A82}, //{0xE9, 0xAA, 0x82}, // ��
+ {0xBDBE, 0x9A84}, //{0xE9, 0xAA, 0x84}, // ��
+ {0xC2E6, 0x9A86}, //{0xE9, 0xAA, 0x86}, // ��
+ {0xBAA7, 0x9A87}, //{0xE9, 0xAA, 0x87}, // ��
+ {0xD1E9, 0x9A8C}, //{0xE9, 0xAA, 0x8C}, // ��
+ {0xBFA5, 0x9A8F}, //{0xE9, 0xAA, 0x8F}, // ��
+ {0xC6EF, 0x9A91}, //{0xE9, 0xAA, 0x91}, // ��
{0xC6AD, 0x9A97}, //{0xE9, 0xAA, 0x97}, // ƭ
{0xC9A7, 0x9A9A}, //{0xE9, 0xAA, 0x9A}, // ɧ
- {0xC2E2, 0x9AA1}, //{0xE9, 0xAA, 0xA1}, //
- {0xD6E8, 0x9AA4}, //{0xE9, 0xAA, 0xA4}, //
- {0xB9C7, 0x9AA8}, //{0xE9, 0xAA, 0xA8}, //
- {0xCBE8, 0x9AD3}, //{0xE9, 0xAB, 0x93}, //
- {0xB8DF, 0x9AD8}, //{0xE9, 0xAB, 0x98}, //
- {0xF7DE, 0x9B13}, //{0xE9, 0xAC, 0x93}, //
- {0xB9ED, 0x9B3C}, //{0xE9, 0xAC, 0xBC}, //
- {0xBFFD, 0x9B41}, //{0xE9, 0xAD, 0x81}, //
- {0xBBEA, 0x9B42}, //{0xE9, 0xAD, 0x82}, //
- {0xC6C7, 0x9B44}, //{0xE9, 0xAD, 0x84}, //
+ {0xC2E2, 0x9AA1}, //{0xE9, 0xAA, 0xA1}, // ��
+ {0xD6E8, 0x9AA4}, //{0xE9, 0xAA, 0xA4}, // ��
+ {0xB9C7, 0x9AA8}, //{0xE9, 0xAA, 0xA8}, // ��
+ {0xCBE8, 0x9AD3}, //{0xE9, 0xAB, 0x93}, // ��
+ {0xB8DF, 0x9AD8}, //{0xE9, 0xAB, 0x98}, // ��
+ {0xF7DE, 0x9B13}, //{0xE9, 0xAC, 0x93}, // ��
+ {0xB9ED, 0x9B3C}, //{0xE9, 0xAC, 0xBC}, // ��
+ {0xBFFD, 0x9B41}, //{0xE9, 0xAD, 0x81}, // ��
+ {0xBBEA, 0x9B42}, //{0xE9, 0xAD, 0x82}, // ��
+ {0xC6C7, 0x9B44}, //{0xE9, 0xAD, 0x84}, // ��
{0xCEBA, 0x9B4F}, //{0xE9, 0xAD, 0x8F}, // κ
{0xC4A7, 0x9B54}, //{0xE9, 0xAD, 0x94}, // ħ
- {0xD3E3, 0x9C7C}, //{0xE9, 0xB1, 0xBC}, //
+ {0xD3E3, 0x9C7C}, //{0xE9, 0xB1, 0xBC}, // ��
{0xC2B3, 0x9C81}, //{0xE9, 0xB2, 0x81}, // ³
- {0xCFCA, 0x9C9C}, //{0xE9, 0xB2, 0x9C}, //
- {0xC0F0, 0x9CA4}, //{0xE9, 0xB2, 0xA4}, //
- {0xF6EA, 0x9CAB}, //{0xE9, 0xB2, 0xAB}, //
- {0xBEA8, 0x9CB8}, //{0xE9, 0xB2, 0xB8}, //
- {0xF6F9, 0x9CC4}, //{0xE9, 0xB3, 0x84}, //
- {0xF7A2, 0x9CCD}, //{0xE9, 0xB3, 0x8D}, //
- {0xB1EE, 0x9CD6}, //{0xE9, 0xB3, 0x96}, //
- {0xC1DB, 0x9CDE}, //{0xE9, 0xB3, 0x9E}, //
- {0xC4F1, 0x9E1F}, //{0xE9, 0xB8, 0x9F}, //
- {0xF0AF, 0x9E20}, //{0xE9, 0xB8, 0xA0}, //
- {0xBCA6, 0x9E21}, //{0xE9, 0xB8, 0xA1}, //
- {0xC3F9, 0x9E23}, //{0xE9, 0xB8, 0xA3}, //
+ {0xCFCA, 0x9C9C}, //{0xE9, 0xB2, 0x9C}, // ��
+ {0xC0F0, 0x9CA4}, //{0xE9, 0xB2, 0xA4}, // ��
+ {0xF6EA, 0x9CAB}, //{0xE9, 0xB2, 0xAB}, // ��
+ {0xBEA8, 0x9CB8}, //{0xE9, 0xB2, 0xB8}, // ��
+ {0xF6F9, 0x9CC4}, //{0xE9, 0xB3, 0x84}, // ��
+ {0xF7A2, 0x9CCD}, //{0xE9, 0xB3, 0x8D}, // ��
+ {0xB1EE, 0x9CD6}, //{0xE9, 0xB3, 0x96}, // ��
+ {0xC1DB, 0x9CDE}, //{0xE9, 0xB3, 0x9E}, // ��
+ {0xC4F1, 0x9E1F}, //{0xE9, 0xB8, 0x9F}, // ��
+ {0xF0AF, 0x9E20}, //{0xE9, 0xB8, 0xA0}, // �
+ {0xBCA6, 0x9E21}, //{0xE9, 0xB8, 0xA1}, // ��
+ {0xC3F9, 0x9E23}, //{0xE9, 0xB8, 0xA3}, // ��
{0xC5B8, 0x9E25}, //{0xE9, 0xB8, 0xA5}, // Ÿ
{0xD1BB, 0x9E26}, //{0xE9, 0xB8, 0xA6}, // ѻ
{0xD1BC, 0x9E2D}, //{0xE9, 0xB8, 0xAD}, // Ѽ
- {0xD1EC, 0x9E2F}, //{0xE9, 0xB8, 0xAF}, //
+ {0xD1EC, 0x9E2F}, //{0xE9, 0xB8, 0xAF}, // ��
{0xD4A7, 0x9E33}, //{0xE9, 0xB8, 0xB3}, // ԧ
- {0xCDD2, 0x9E35}, //{0xE9, 0xB8, 0xB5}, //
- {0xB8EB, 0x9E3D}, //{0xE9, 0xB8, 0xBD}, //
- {0xBAE8, 0x9E3F}, //{0xE9, 0xB8, 0xBF}, //
- {0xBEE9, 0x9E43}, //{0xE9, 0xB9, 0x83}, //
- {0xB6EC, 0x9E45}, //{0xE9, 0xB9, 0x85}, //
- {0xF0C4, 0x9E49}, //{0xE9, 0xB9, 0x89}, //
+ {0xCDD2, 0x9E35}, //{0xE9, 0xB8, 0xB5}, // ��
+ {0xB8EB, 0x9E3D}, //{0xE9, 0xB8, 0xBD}, // ��
+ {0xBAE8, 0x9E3F}, //{0xE9, 0xB8, 0xBF}, // ��
+ {0xBEE9, 0x9E43}, //{0xE9, 0xB9, 0x83}, // ��
+ {0xB6EC, 0x9E45}, //{0xE9, 0xB9, 0x85}, // ��
+ {0xF0C4, 0x9E49}, //{0xE9, 0xB9, 0x89}, // ��
{0xC8B5, 0x9E4A}, //{0xE9, 0xB9, 0x8A}, // ȵ
- {0xC5F4, 0x9E4F}, //{0xE9, 0xB9, 0x8F}, //
- {0xBAD7, 0x9E64}, //{0xE9, 0xB9, 0xA4}, //
- {0xF0D0, 0x9E66}, //{0xE9, 0xB9, 0xA6}, //
+ {0xC5F4, 0x9E4F}, //{0xE9, 0xB9, 0x8F}, // ��
+ {0xBAD7, 0x9E64}, //{0xE9, 0xB9, 0xA4}, // ��
+ {0xF0D0, 0x9E66}, //{0xE9, 0xB9, 0xA6}, // ��
{0xD3A5, 0x9E70}, //{0xE9, 0xB9, 0xB0}, // ӥ
{0xC2B9, 0x9E7F}, //{0xE9, 0xB9, 0xBF}, // ¹
- {0xC2F3, 0x9EA6}, //{0xE9, 0xBA, 0xA6}, //
- {0xF4EF, 0x9EB8}, //{0xE9, 0xBA, 0xB8}, //
- {0xC2E9, 0x9EBB}, //{0xE9, 0xBA, 0xBB}, //
- {0xBBC6, 0x9EC4}, //{0xE9, 0xBB, 0x84}, //
- {0xCAF2, 0x9ECD}, //{0xE9, 0xBB, 0x8D}, //
- {0xC0E8, 0x9ECE}, //{0xE9, 0xBB, 0x8E}, //
- {0xBADA, 0x9ED1}, //{0xE9, 0xBB, 0x91}, //
+ {0xC2F3, 0x9EA6}, //{0xE9, 0xBA, 0xA6}, // ��
+ {0xF4EF, 0x9EB8}, //{0xE9, 0xBA, 0xB8}, // ��
+ {0xC2E9, 0x9EBB}, //{0xE9, 0xBA, 0xBB}, // ��
+ {0xBBC6, 0x9EC4}, //{0xE9, 0xBB, 0x84}, // ��
+ {0xCAF2, 0x9ECD}, //{0xE9, 0xBB, 0x8D}, // ��
+ {0xC0E8, 0x9ECE}, //{0xE9, 0xBB, 0x8E}, // ��
+ {0xBADA, 0x9ED1}, //{0xE9, 0xBB, 0x91}, // ��
{0xC7AD, 0x9ED4}, //{0xE9, 0xBB, 0x94}, // ǭ
{0xC4AC, 0x9ED8}, //{0xE9, 0xBB, 0x98}, // Ĭ
- {0xB6A6, 0x9F0E}, //{0xE9, 0xBC, 0x8E}, //
- {0xB9C4, 0x9F13}, //{0xE9, 0xBC, 0x93}, //
- {0xCAF3, 0x9F20}, //{0xE9, 0xBC, 0xA0}, //
- {0xB1C7, 0x9F3B}, //{0xE9, 0xBC, 0xBB}, //
- {0xC6EB, 0x9F50}, //{0xE9, 0xBD, 0x90}, //
- {0xB3DD, 0x9F7F}, //{0xE9, 0xBD, 0xBF}, //
- {0xC1E4, 0x9F84}, //{0xE9, 0xBE, 0x84}, //
- {0xC1FA, 0x9F99}, //{0xE9, 0xBE, 0x99}, //
- {0xB9EA, 0x9F9F}, //{0xE9, 0xBE, 0x9F}, //
+ {0xB6A6, 0x9F0E}, //{0xE9, 0xBC, 0x8E}, // ��
+ {0xB9C4, 0x9F13}, //{0xE9, 0xBC, 0x93}, // ��
+ {0xCAF3, 0x9F20}, //{0xE9, 0xBC, 0xA0}, // ��
+ {0xB1C7, 0x9F3B}, //{0xE9, 0xBC, 0xBB}, // ��
+ {0xC6EB, 0x9F50}, //{0xE9, 0xBD, 0x90}, // ��
+ {0xB3DD, 0x9F7F}, //{0xE9, 0xBD, 0xBF}, // ��
+ {0xC1E4, 0x9F84}, //{0xE9, 0xBE, 0x84}, // ��
+ {0xC1FA, 0x9F99}, //{0xE9, 0xBE, 0x99}, // ��
+ {0xB9EA, 0x9F9F}, //{0xE9, 0xBE, 0x9F}, // ��
#endif
};
static const unsigned short table_BIG5_to_UCS2[][2] = {
@@ -24826,7 +24833,7 @@ static const unsigned short table_BIG5_to_UCS2[][2] = {
0xFEFD,0xE30F,
0xFEFE,0xE310,
};
-
+#endif
#define NUMOF_TAB_GBK_TO_UCS2 sizeof(table_GBK_to_UCS2)/sizeof(table_GBK_to_UCS2[0])
#define NUMOF_TAB_BIG5_TO_UCS2 sizeof(table_BIG5_to_UCS2)/sizeof(table_BIG5_to_UCS2[0])
@@ -25205,7 +25212,7 @@ bool is_str_utf8(const char* str)
if ((chr & 0xC0) != 0x80) {
return false;
}
- //ΪΪֹ
+ //����Ϊ��Ϊֹ
nBytes--;
}
}
diff --git a/platform/vendor_bsp/LN/ln882x/src/utils/system_parameter.c b/platform/vendor_bsp/LN/ln882x/src/utils/system_parameter.c
index bffe8fb6aad225f178061f9216fdc8112f713d77..c5da34d5039b3309a652d843613da0c26c184d9a 100644
--- a/platform/vendor_bsp/LN/ln882x/src/utils/system_parameter.c
+++ b/platform/vendor_bsp/LN/ln882x/src/utils/system_parameter.c
@@ -17,10 +17,6 @@ typedef struct {
uint8_t ap_hostname[NETIF_HOSTNAME_LEN_MAX+1];
} hostname_t;
-typedef struct {
- wifi_psk_info_t psk_info_list[WIFI_PSK_INFO_LIST_SIZE];
-} wifi_psk_info_list_t;
-
typedef enum {
WIFI_COMMON_CONFIG = 0,
WIFI_STA_CONFIG,
@@ -42,7 +38,6 @@ typedef struct system_parameter{
uint8_t dhcp_sw_config;
hostname_t hostname_cfg;
server_config_t dhcpd_config;
- wifi_psk_info_list_t psk_info_list;
OS_Mutex_t lock;
}system_parameter_t;
@@ -58,7 +53,6 @@ typedef struct {
uint8_t dhcp_sw_config;
hostname_t hostname_cfg;
server_config_t dhcpd_config;
- wifi_psk_info_list_t psk_info_list;
}item;
} system_param_item_t;
@@ -221,13 +215,6 @@ void system_parameter_sync_to_flash(system_param_item_t *param_item)
}
break;
- case WIFI_PSK_INFO: {
- cache_content = (uint8_t *)&(param_item->item.psk_info_list);
- len = sizeof(wifi_psk_info_list_t);
- start = (uint8_t *)&(system_parameter->psk_info_list) - system_parameter_base;
- }
- break;
-
default:
break;
}
@@ -325,111 +312,6 @@ int system_parameter_get_config(wifi_interface_enum_t if_index, wifi_config_t *c
return 0;
}
-static int system_parameter_set_psk_info_list(wifi_psk_info_list_t *psk_info_list)
-{
- system_parameter_t *system_parameter = get_system_parameter_handle();
- system_param_item_t *param_item = get_param_item_cache();
-
- ART_ASSERT(system_parameter && psk_info_list);
- OS_MutexLock(&system_parameter->lock, OS_WAIT_FOREVER);
- param_item->item_id = (uint32_t)WIFI_PSK_INFO;
- memcpy(¶m_item->item.psk_info_list, psk_info_list, sizeof(wifi_psk_info_list_t));
- system_parameter_sync_to_flash(param_item);
- OS_MutexUnlock(&system_parameter->lock);
- return 0;
-}
-static int system_parameter_get_psk_info_list( wifi_psk_info_list_t *psk_info_list)
-{
- system_parameter_t *system_parameter = get_system_parameter_handle();
-
- ART_ASSERT(system_parameter && psk_info_list);
- OS_MutexLock(&system_parameter->lock, OS_WAIT_FOREVER);
- memcpy(psk_info_list, &(system_parameter->psk_info_list), sizeof(wifi_psk_info_list_t));
- OS_MutexUnlock(&system_parameter->lock);
- return 0;
-}
-
-//PSK info
-int system_parameter_set_psk_info(wifi_psk_info_t *psk_info)
-{
- int i, idx_idle = -1;
- wifi_psk_info_t *wifi_psk_info = NULL;
- wifi_psk_info_list_t wifi_psk_info_list = {0,};
- bool need_flush = false;
-
- ART_ASSERT(psk_info);
-
- if(0 == system_parameter_get_psk_info_list(&wifi_psk_info_list))
- {
- for(i = 0; i < (sizeof(wifi_psk_info_list_t)/sizeof(wifi_psk_info_t)); i++){
- wifi_psk_info = &(wifi_psk_info_list.psk_info_list[i]);
- //Got it
- if((psk_info->ssid_len == wifi_psk_info->ssid_len)
- && (psk_info->password_len == wifi_psk_info->password_len)
- && ((psk_info->password_len > 0) && !memcmp(psk_info->password, wifi_psk_info->password, psk_info->password_len))
- && ((psk_info->ssid_len > 0) && !memcmp(psk_info->ssid, wifi_psk_info->ssid, psk_info->ssid_len))){
- break;
- }
-
- //First idle
- if((idx_idle < 0)
- && (psk_info->password_len == 0)
- && (psk_info->ssid_len == 0)){
- idx_idle = i;
- }
- }
- if(i < (sizeof(wifi_psk_info_list_t)/sizeof(wifi_psk_info_t))){//already in list
- wifi_psk_info = &(wifi_psk_info_list.psk_info_list[i]);
- if(memcmp(psk_info->psk, wifi_psk_info->psk, 40) != 0){//update
- memcpy(wifi_psk_info->psk, psk_info->psk, 40);
- need_flush = true;
- }
- }else if(idx_idle >= 0 && idx_idle < (sizeof(wifi_psk_info_list_t)/sizeof(wifi_psk_info_t))){
- wifi_psk_info = &(wifi_psk_info_list.psk_info_list[i]);
- memcpy(wifi_psk_info, psk_info, sizeof(wifi_psk_info_t));
- need_flush = true;
- }else{
- wifi_psk_info = &(wifi_psk_info_list.psk_info_list[0]);
- memcpy(wifi_psk_info, psk_info, sizeof(wifi_psk_info_t));
- need_flush = true;
- }
-
- if(need_flush){
- system_parameter_set_psk_info_list(&wifi_psk_info_list);
- }
- return 0;
- }
- return -1;
-}
-int system_parameter_get_psk_info(wifi_psk_info_t *psk_info)
-{
- int i;
- wifi_psk_info_t *wifi_psk_info = NULL;
- wifi_psk_info_list_t wifi_psk_info_list = {0,};
-
- ART_ASSERT(psk_info);
-
- if(0 == system_parameter_get_psk_info_list(&wifi_psk_info_list))
- {
- for(i = 0; i < (sizeof(wifi_psk_info_list_t)/sizeof(wifi_psk_info_t)); i++){
- wifi_psk_info = &(wifi_psk_info_list.psk_info_list[i]);
- //Got it
- if((psk_info->ssid_len == wifi_psk_info->ssid_len)
- && (psk_info->password_len == wifi_psk_info->password_len)
- && ((psk_info->password_len > 0) && !memcmp(psk_info->password, wifi_psk_info->password, psk_info->password_len))
- && ((psk_info->ssid_len > 0) && !memcmp(psk_info->ssid, wifi_psk_info->ssid, psk_info->ssid_len))){
- break;
- }
- }
- if(i < (sizeof(wifi_psk_info_list_t)/sizeof(wifi_psk_info_t))){//already in list
- wifi_psk_info = &(wifi_psk_info_list.psk_info_list[i]);
- memcpy(psk_info, wifi_psk_info, sizeof(wifi_psk_info_t));
- return 0;
- }
- }
- return -1;
-}
-
//ip config
int system_parameter_set_ip_config(wifi_interface_enum_t if_index, tcpip_ip_info_t *ip_config)
{
@@ -594,8 +476,12 @@ int system_parameter_get_wifi_config_default (wifi_interface_enum_t if_index, wi
memcpy(ap->ssid, WIFI_AP_SSID_DEFAULT, ap->ssid_len);
len = (strlen(WIFI_AP_PASSWORD_DEFAULT) < PASSWORD_MAX_LEN) ? strlen(WIFI_AP_PASSWORD_DEFAULT) : PASSWORD_MAX_LEN;
memcpy(ap->password, WIFI_AP_PASSWORD_DEFAULT, len);
+ if(strlen((const char *)ap->password) > 0){
+ ap->authmode = WIFI_AUTH_WPA2_PSK;
+ }else{
+ ap->authmode = WIFI_AP_AUTH_MODE_DEFAULT;
+ }
ap->channel = WIFI_AP_CHANNEL_DEFAULT;
- ap->authmode = WIFI_AP_AUTH_MODE_DEFAULT;
ap->ssid_hidden = WIFI_AP_SSID_HIDDEN_DEFAULT;
ap->max_connection = WIFI_AP_MAX_CONNECTION_DEFAULT;
ap->beacon_interval = WIFI_AP_BEACON_INTERVAL_DEFAULT;
diff --git a/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_manager/wifi_manager.c b/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_manager/wifi_manager.c
index 3e5969cd3312f4df17b23d4e03f643740064b68d..c617b68d75ea570995677a2123eb1c3741647cd1 100644
--- a/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_manager/wifi_manager.c
+++ b/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_manager/wifi_manager.c
@@ -7,7 +7,7 @@
#include "dhcpd/dhcpd.h"
#define WIFI_MANAGER_TASK_STACK_SIZE 5*256 //Byte
-#define WIFI_MSG_QUEUE_DEPTH 5
+#define WIFI_MSG_QUEUE_DEPTH 10
struct wifi_manager_ctrl{
@@ -17,8 +17,14 @@ struct wifi_manager_ctrl{
};
static wifi_manager_ctrl_t gwifi_manager_ctrl= {0,};
-bool reg_wifi_msg_callbcak(wifi_manager_ctrl_t *manager_ctrl, wifi_msg_id_enum_t msg_id, wifi_msg_callback_fun callback_fun)
+static wifi_manager_ctrl_t *wifi_manager_get_handle(void)
{
+ return &gwifi_manager_ctrl;
+}
+
+bool reg_wifi_msg_callbcak(wifi_msg_id_enum_t msg_id, wifi_msg_callback_fun callback_fun)
+{
+ wifi_manager_ctrl_t *manager_ctrl = wifi_manager_get_handle();
wifi_msg_handle_table_t *msg_handler_table = NULL;
ART_ASSERT(manager_ctrl);
@@ -57,15 +63,11 @@ static void wifi_manager_task_entry(void *params)
case WIFI_MSG_ID_STA_READY:
//turn on WIFI LED
- #if (WIFI_TRACK==0)
- LOG(LOG_LVL_INFO, "[%s, %d]WIFI_MSG_ID_WIFI_READY\r\n", __func__, __LINE__);
- #endif
+ LOG(LOG_LVL_TRACE, "[%s, %d]WIFI_MSG_ID_WIFI_READY\r\n", __func__, __LINE__);
break;
case WIFI_MSG_ID_STA_SCAN_DONE:
- #if (WIFI_TRACK==0)
- LOG(LOG_LVL_INFO, "[%s, %d]WIFI_MSG_ID_STA_SCAN_DONE\r\n", __func__, __LINE__);
- #endif
+ LOG(LOG_LVL_TRACE, "[%s, %d]WIFI_MSG_ID_STA_SCAN_DONE\r\n", __func__, __LINE__);
//update ap list
break;
@@ -151,9 +153,10 @@ static void wifi_manager_task_entry(void *params)
}
}
-bool wifi_manager_init(wifi_manager_ctrl_t *manager_ctrl)
+bool wifi_manager_init(void)
{
OS_Status ret = OS_OK;
+ wifi_manager_ctrl_t *manager_ctrl = wifi_manager_get_handle();
ART_ASSERT(manager_ctrl);
ret = OS_QueueCreate(&manager_ctrl->wifi_manager_msgq, WIFI_MSG_QUEUE_DEPTH, sizeof(wifi_msg_t));
@@ -169,11 +172,12 @@ bool wifi_manager_init(wifi_manager_ctrl_t *manager_ctrl)
return true;
}
-bool wifi_manager_deinit(wifi_manager_ctrl_t *manager_ctrl)
+bool wifi_manager_deinit(void)
{
OS_Status ret = OS_OK;
- ART_ASSERT(manager_ctrl);
+ wifi_manager_ctrl_t *manager_ctrl = wifi_manager_get_handle();
+ ART_ASSERT(manager_ctrl);
ret = OS_ThreadDelete(&manager_ctrl->wifi_manager_thread);
if (ret != OS_OK){
LOG(LOG_LVL_ERROR, "[%s, %d]OS_ThreadDelete manager_ctrl->wifi_manager_thread fail.\r\n", __func__, __LINE__);
@@ -188,9 +192,4 @@ bool wifi_manager_deinit(wifi_manager_ctrl_t *manager_ctrl)
return true;
}
-wifi_manager_ctrl_t *wifi_manager_get_handle(void)
-{
- return &gwifi_manager_ctrl;
-}
-
diff --git a/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_port/itypes.h b/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_port/itypes.h
new file mode 100644
index 0000000000000000000000000000000000000000..a8a9b6d832462bc93ee057dd5f011dc2eb8b8cf5
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_port/itypes.h
@@ -0,0 +1,52 @@
+/*---------------------------------------------------------------------------*
+ | @author : LightningSemi WLAN Software Team |
+ | @version : V2.0.0 |
+ | @date : 1-May-2018 |
+ | @brief : IEEE 802.11 a/b/g/e/i/n MAC Software |
+ |---------------------------------------------------------------------------|
+ | COPYRIGHT(c) 2018 LightningSemi |
+ *---------------------------------------------------------------------------*/
+
+
+/*****************************************************************************/
+/* */
+/* File Name : itypes.h */
+/* */
+/* Description : This file contains all the data type definitions for */
+/* MAC implementation. */
+/* */
+/* List of Functions : None */
+/* Issues / Problems : None */
+/* */
+/*****************************************************************************/
+
+#ifndef ITYPES_H
+#define ITYPES_H
+
+/*****************************************************************************/
+/* Constants */
+/*****************************************************************************/
+
+#define INLINE static __inline
+
+/*****************************************************************************/
+/* Data Types */
+/*****************************************************************************/
+
+typedef int WORD32;
+typedef short WORD16;
+typedef char WORD8;
+typedef unsigned int UWORD32;
+typedef unsigned short UWORD16;
+typedef unsigned char UWORD8;
+typedef signed char SWORD8;
+
+/*****************************************************************************/
+/* Enums */
+/*****************************************************************************/
+
+typedef enum {BFALSE = 0,
+ BTRUE = 1
+} BOOL_T;
+
+#endif /* ITYPES_H */
diff --git a/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_port/wifi_port.c b/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_port/wifi_port.c
new file mode 100644
index 0000000000000000000000000000000000000000..8ede4e457c6619fee973837af4be73e8d5809d53
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_port/wifi_port.c
@@ -0,0 +1,62 @@
+#include "wifi_port.h"
+#include "ln_kv_err.h"
+#include "ln_kv_api.h"
+#include "itypes.h"
+#include "osal/osal.h"
+
+#define KV_PSK_INFO ("kv_psk_info")
+
+/* restore/store psk info */
+int kv_set_psk_info_list(uint8_t *v_buf, uint32_t buf_len)
+{
+ if (KV_ERR_NONE != ln_kv_set((const char *)KV_PSK_INFO, v_buf, (size_t)buf_len)) {
+ return BFALSE;
+ }
+ return BTRUE;
+}
+
+int kv_get_psk_info_list(uint8_t *v_buf, uint32_t buf_len)
+{
+ size_t len;
+ if (KV_ERR_NONE != ln_kv_get((const char *)KV_PSK_INFO, v_buf, (size_t)buf_len, &len)) {
+ return BFALSE;
+ }
+ return BTRUE;
+}
+
+int kv_has_psk_info_list(void)
+{
+ size_t len;
+ if (LN_TRUE == ln_kv_has_key((const char *)KV_PSK_INFO)) {
+ return BTRUE;
+ }
+ return BFALSE;
+}
+
+/* heap memory manager */
+void *mac_malloc(uint32_t size)
+{
+ return OS_Malloc(size);
+}
+
+void mac_free(void *ptr)
+{
+ OS_Free(ptr);
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_port/wifi_port.h b/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_port/wifi_port.h
new file mode 100644
index 0000000000000000000000000000000000000000..fccaa1c88628b3324b9946d801977057e736bea8
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/src/wifi/wifi_port/wifi_port.h
@@ -0,0 +1,15 @@
+#ifndef __WIFI_PORT_H__
+#define __WIFI_PORT_H__
+
+#include "ln_types.h"
+
+int kv_has_psk_info_list(void);
+int kv_set_psk_info_list(uint8_t *v_buf, uint32_t buf_len);
+int kv_get_psk_info_list(uint8_t *v_buf, uint32_t buf_len);
+
+void *mac_malloc(uint32_t size);
+void mac_free(void *ptr);
+
+
+#endif /* __WIFI_PORT_H__ */
+
diff --git a/platform/vendor_bsp/LN/ln882x/tools/bin/fpu_patch.exe b/platform/vendor_bsp/LN/ln882x/tools/bin/fpu_patch.exe
deleted file mode 100644
index 81e2a53754afdf2b9cc002e59ead3fe64a7dbfd0..0000000000000000000000000000000000000000
Binary files a/platform/vendor_bsp/LN/ln882x/tools/bin/fpu_patch.exe and /dev/null differ
diff --git a/platform/vendor_bsp/LN/ln882x/tools/bin/mkimage.exe b/platform/vendor_bsp/LN/ln882x/tools/bin/mkimage.exe
index 52c00aad98a20a8967fca79c72e7c74842817e64..f9cbb2db0aeecd0c3694b71d832df58d13c81723 100644
Binary files a/platform/vendor_bsp/LN/ln882x/tools/bin/mkimage.exe and b/platform/vendor_bsp/LN/ln882x/tools/bin/mkimage.exe differ
diff --git a/platform/vendor_bsp/LN/ln882x/tools/user_cmd/before_build.py b/platform/vendor_bsp/LN/ln882x/tools/user_cmd/before_build.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c8d701b244cbf0abad8ec77c7e6f5b9f8446040
--- /dev/null
+++ b/platform/vendor_bsp/LN/ln882x/tools/user_cmd/before_build.py
@@ -0,0 +1,86 @@
+#!env python3
+# -*- coding: utf-8 -*-
+# @Time : 2020/5/10 11:53
+# @Author : WuLiang
+# @FileName: before_build.py
+# @Software: PyCharm
+
+import json
+import sys
+
+ALIGN = "32"
+image_header_size = "0x100"
+
+def json2macro(rfile_path,wfile_path):
+ result = dict()
+ try:
+ with open(rfile_path,'r',encoding='utf-8') as f:
+ result = json.loads(f.read())
+ except Exception as e:
+ pass
+
+ with open(wfile_path, "w+") as f:
+ file_v = wfile_path.split("\\")[-1].replace(".h","").upper()
+ startcomment = "#ifndef __" + file_v + "__\n#define __" + file_v + "__\n\n\n//flash partition map,it's generated by the script based on the json file \n"
+ f.writelines(startcomment)
+
+ count = 0
+ last_name1 = ""
+ last_name2 = ""
+ for key,value in result.items():
+ try:
+ if key not in ["Warning1","Warning2"]:
+ for i in value:
+ name1 = i['partition_type'] + "_SPACE_OFFSET"
+ name2 = i['partition_type'] + "_SPACE_SIZE"
+
+ temp1 = "".join(["#define ", format(name1," <"+ALIGN), " (", i['start_addr'], ")"])
+ temp2 = "".join(["#define ", format(name2," <"+ALIGN), " (1024*", str(i['size_KB']), ')'])
+
+ f.writelines("\n"+temp1+"\n")
+ f.writelines(temp2+"\n")
+
+ if (count > 0):
+ temp3 = "".join(["#if (", name1, " < (", last_name1, " + ", last_name2, "))"])
+ f.writelines(temp3 + "\n")
+ f.writelines(" #error \"flash partition overlap,please check !!!\"\n")
+ f.writelines("#endif\n")
+
+ count = count + 1
+ last_name1 = name1
+ last_name2 = name2
+ except Exception as e:
+ print(e)
+
+
+ temp = "".join(["\n\n#define ", format("IMAGE_HEADER_SIZE"," <"+ALIGN), " ", "("+image_header_size+")"])
+ f.writelines(temp)
+ endcommont = "\n\n#endif /* __" + file_v + "__ */\n\n"
+ f.writelines(endcommont)
+
+
+def main(argv):
+ arg_count = len(sys.argv)
+ # print("arg count = ", arg_count)
+ # print(sys.argv[1])
+ # print(sys.argv[2])
+
+ if arg_count == 3:
+ rfile_path = sys.argv[1]
+ wfile_path = sys.argv[2]
+ json2macro(rfile_path, wfile_path)
+ else:
+ assert arg_count == 3
+
+
+if __name__ == "__main__":
+ version = sys.version.split(' ')[0]
+ if version < str(3):
+ print("pyhton version is too low,please install python3 !\n")
+ assert version < str(3)
+ else:
+ main(sys.argv)
+
+
+
+
diff --git a/platform/vendor_bsp/LN/ln882x/tools/user_cmd/gen_flash.exe b/platform/vendor_bsp/LN/ln882x/tools/user_cmd/gen_flash.exe
deleted file mode 100644
index af0e394b37f2e668143451fce23be72357c465f9..0000000000000000000000000000000000000000
Binary files a/platform/vendor_bsp/LN/ln882x/tools/user_cmd/gen_flash.exe and /dev/null differ