rk30_phonepad: update some driver from c8003
authorluowei <lw@rock-chips.com>
Sun, 18 Nov 2012 04:57:23 +0000 (12:57 +0800)
committerluowei <lw@rock-chips.com>
Sun, 18 Nov 2012 05:01:01 +0000 (13:01 +0800)
modified:   drivers/input/misc/rk_board_id.c
modified:   drivers/input/ts/chips/Kconfig
modified:   drivers/input/ts/chips/Makefile
new file:   drivers/input/ts/chips/ct360.c
new file:   drivers/input/ts/chips/ct360_firmware.h
modified:   drivers/input/ts/chips/gt828.c
modified:   drivers/input/ts/ts-auto.c
modified:   drivers/input/ts/ts-i2c.c
new file:   drivers/input/ts/ts-serial.c
new file:   drivers/input/ts/ts-spi.c
modified:   drivers/misc/bp/bp-auto.c
modified:   drivers/misc/bp/chips/mt6229.c
modified:   drivers/usb/serial/usb-serial.c
modified:   drivers/video/display/screen/lcd_auto.c
modified:   include/linux/rk_board_id.h
modified:   include/linux/ts-auto.h

16 files changed:
drivers/input/misc/rk_board_id.c
drivers/input/ts/chips/Kconfig
drivers/input/ts/chips/Makefile
drivers/input/ts/chips/ct360.c [new file with mode: 0755]
drivers/input/ts/chips/ct360_firmware.h [new file with mode: 0755]
drivers/input/ts/chips/gt828.c
drivers/input/ts/ts-auto.c
drivers/input/ts/ts-i2c.c
drivers/input/ts/ts-serial.c [new file with mode: 0755]
drivers/input/ts/ts-spi.c [new file with mode: 0755]
drivers/misc/bp/bp-auto.c
drivers/misc/bp/chips/mt6229.c
drivers/usb/serial/usb-serial.c
drivers/video/display/screen/lcd_auto.c
include/linux/rk_board_id.h [changed mode: 0644->0755]
include/linux/ts-auto.h

index cda48030a18babc5300ef3b6c8451ec1e62a5fbf..f23cf4ac81a8129c528d0357321683547d3b2396 100755 (executable)
 #include <mach/gpio.h>\r
 #include <mach/iomux.h>\r
 \r
-\r
+#include <linux/rk_board_id.h>\r
 #if 0\r
 #define DBG(x...)  printk(x)\r
 #else\r
 #define DBG(x...)\r
 #endif\r
 \r
+extern void kernel_restart(char *cmd);\r
+\r
 struct board_id_private_data {\r
        struct mutex id_mutex;\r
+       int last_value[16];\r
        int board_id;\r
        struct board_id_platform_data *pdata;\r
 };\r
@@ -28,7 +31,7 @@ struct board_id_private_data {
 static struct board_id_private_data *g_id;\r
 \r
 \r
-int rk_get_board_id(void)\r
+enum rk_board_id rk_get_board_id(void)\r
 {\r
        struct board_id_private_data *id = g_id;\r
        DBG("%s:id:0x%x\n",__func__,id->board_id);\r
@@ -39,8 +42,8 @@ EXPORT_SYMBOL(rk_get_board_id);
 static int _rk_get_board_id(struct board_id_private_data *id)\r
 {\r
        int result = 0;\r
-       int value = 0;\r
-       int i = 0;\r
+       int value1 = 0, value2 = 0, value3 = 0;\r
+       int i = 0, j = 0;\r
        \r
        id->board_id = -1;\r
                        \r
@@ -49,14 +52,33 @@ static int _rk_get_board_id(struct board_id_private_data *id)
                gpio_request(id->pdata->gpio_pin[i],"gpio_board_id");\r
                gpio_direction_input(id->pdata->gpio_pin[i]);\r
                gpio_pull_updown(id->pdata->gpio_pin[i], PullDisable);\r
-               value = gpio_get_value(id->pdata->gpio_pin[i]);\r
-               if(value < 0)\r
-                       return value;\r
-               result = (value << i) | result;\r
+               for(j=0; j<1000; j++)\r
+               {\r
+                       value1 = gpio_get_value(id->pdata->gpio_pin[i]);\r
+                       if(value1 < 0)\r
+                               continue;\r
+                       mdelay(1);\r
+                       value2 = gpio_get_value(id->pdata->gpio_pin[i]);\r
+                       if(value2 < 0)\r
+                               continue;\r
+                       mdelay(1);\r
+                       value3 = gpio_get_value(id->pdata->gpio_pin[i]);\r
+                       if(value3 < 0)\r
+                               continue;\r
+                       if((value1 == value2) && (value2 == value3))\r
+                               break;\r
+               }\r
+               if(j >= 1000)\r
+               {\r
+                       printk("%s:hareware error,gpio level changed always!\n");                       \r
+                       kernel_restart(NULL);\r
+               }\r
+               \r
+               result = (value1 << i) | result;\r
                \r
-               DBG("%s:gpio:%d,value:%d\n",__func__,id->pdata->gpio_pin[i],value);\r
+               DBG("%s:gpio:%d,value:%d\n",__func__,id->pdata->gpio_pin[i],value1);\r
        }\r
-       \r
+\r
        id->board_id = result;\r
 \r
        \r
@@ -130,7 +152,7 @@ static void __exit rk_get_board_exit(void)
        platform_driver_unregister(&rk_board_id_driver);\r
 }\r
 \r
-subsys_initcall_sync(rk_get_board_init);\r
+arch_initcall_sync(rk_get_board_init);\r
 module_exit(rk_get_board_exit);\r
 \r
 MODULE_AUTHOR("ROCKCHIP Corporation:lw@rock-chips.com");\r
index 2854c91c437a3816f8b9d13c4d0997726f1102c8..acdaa0aebc7782cb3ba51469ddbfc4e806e71f8e 100755 (executable)
@@ -15,6 +15,10 @@ config TS_GT8110
 config TS_GT828\r
        bool "touch screen gt828"\r
        default n\r
+\r
+config TS_CT360\r
+       bool "touch screen ct360"\r
+       default n\r
        \r
 endif\r
 \r
index 7f758978d77383a826c0ab3397bcac7b619cea12..8dda843c195e91207222c19b3132c2fadcbe9b03 100755 (executable)
@@ -1,3 +1,4 @@
 obj-$(CONFIG_TS_FT5306)                        += ft5306.o\r
 obj-$(CONFIG_TS_GT8110)                        += gt8110.o\r
+obj-$(CONFIG_TS_CT360)                 += ct360.o\r
 obj-$(CONFIG_TS_GT828)                 += gt828.o
\ No newline at end of file
diff --git a/drivers/input/ts/chips/ct360.c b/drivers/input/ts/chips/ct360.c
new file mode 100755 (executable)
index 0000000..7dee729
--- /dev/null
@@ -0,0 +1,497 @@
+/* drivers/input/ts/chips/ct360.c\r
+ *\r
+ * Copyright (C) 2012-2015 ROCKCHIP.\r
+ * Author: luowei <lw@rock-chips.com>\r
+ *\r
+ * This software is licensed under the terms of the GNU General Public\r
+ * License version 2, as published by the Free Software Foundation, and\r
+ * may be copied, distributed, and modified under those terms.\r
+ *\r
+ * This program is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ */\r
+#include <linux/interrupt.h>\r
+#include <linux/i2c.h>\r
+#include <linux/slab.h>\r
+#include <linux/irq.h>\r
+#include <linux/miscdevice.h>\r
+#include <linux/gpio.h>\r
+#include <asm/uaccess.h>\r
+#include <asm/atomic.h>\r
+#include <linux/delay.h>\r
+#include <linux/input.h>\r
+#include <linux/workqueue.h>\r
+#include <linux/freezer.h>\r
+#include <linux/input/mt.h>\r
+#include <mach/gpio.h>\r
+#include <mach/board.h> \r
+#ifdef CONFIG_HAS_EARLYSUSPEND\r
+#include <linux/earlysuspend.h>\r
+#endif  \r
+#include <linux/ts-auto.h>\r
+#include "ct360_firmware.h"\r
+        \r
+static struct i2c_client *this_client;  \r
+        \r
+#if 0\r
+#define DBG(x...)  printk(x)\r
+#else\r
+#define DBG(x...)\r
+#endif\r
+\r
+\r
+#define CT360_ID_REG           0x00\r
+#define CT360_DEVID            0x00\r
+#define CT360_DATA_REG         0x00\r
+\r
+\r
+/****************operate according to ts chip:start************/\r
+\r
+static int ts_active(struct ts_private_data *ts, int enable)\r
+{      \r
+       int result = 0;\r
+\r
+       if(enable)\r
+       {\r
+               gpio_direction_output(ts->pdata->reset_pin, GPIO_LOW);\r
+               msleep(10);\r
+               gpio_direction_output(ts->pdata->reset_pin, GPIO_HIGH);\r
+               msleep(100);\r
+       }\r
+       else\r
+       {\r
+               gpio_direction_output(ts->pdata->reset_pin, GPIO_LOW);  \r
+       }\r
+               \r
+       \r
+       return result;\r
+}\r
+\r
+\r
+static int ts_firmware(struct ts_private_data *ts)\r
+{\r
+       int i = 0, j = 0;\r
+       unsigned int ver_chk_cnt = 0;\r
+       unsigned int flash_addr = 0;\r
+       unsigned char CheckSum[16];\r
+       unsigned char buf[32];\r
+       char slave_addr = ts->ops->slave_addr;\r
+       int ret = 0;\r
+\r
+       ret = ts_bulk_read_normal(ts, 1, buf, 200*1000);\r
+       if (Binary_Data_Ct360[16372] <= buf[0] )\r
+       {\r
+               printk("%s:%s,firmware is new\n",__func__,ts->ops->name);\r
+               return 0;\r
+       }\r
+\r
+       ts->ops->slave_addr = 0x7F;\r
+       \r
+       //------------------------------\r
+       // Step1 --> initial BootLoader\r
+       // Note. 0x7F -> 0x00 -> 0xA5 ;\r
+       // MCU goto idle\r
+       //------------------------------\r
+       printk("%s() Set mcu to idle \n", __FUNCTION__);\r
+       buf[0] = 0x00;\r
+       buf[1] = 0xA5;\r
+       ts_bulk_write_normal(ts, 2, buf, 200*1000);\r
+       mdelay(10);\r
+       \r
+       //------------------------------\r
+       // Reset I2C Offset address\r
+       // Note. 0x7F -> 0x00   \r
+       //------------------------------\r
+       printk("%s() Reset i2c offset address \n", __FUNCTION__);\r
+       buf[0] = 0x00;\r
+       ts_bulk_write_normal(ts, 1, buf, 200*1000);\r
+       mdelay(10);\r
+       \r
+       //------------------------------\r
+       // Read I2C Bus status\r
+       //------------------------------\r
+       printk("%s() Read i2c bus status \n", __FUNCTION__);\r
+       ts_bulk_read_normal(ts, 1, buf, 200*1000);\r
+       mdelay(10);                                                                     // Delay 1 ms\r
+\r
+       // if return "AAH" then going next step\r
+       if (buf[0] != 0xAA)\r
+       {\r
+               printk("%s() i2c bus status: 0x%x \n", __FUNCTION__, buf[0]);\r
+               goto exit;\r
+       }\r
+\r
+       //------------------------------\r
+       // Check incomplete flash erase\r
+       //------------------------------\r
+       printk("%s() Flash erase verify \n", __FUNCTION__);\r
+       buf[0] = 0x00;\r
+       buf[1] = 0x99;          // Generate check sum command  -->read flash, set addr\r
+       buf[2] = 0x00;          // define a flash address for CT36x to generate check sum\r
+       buf[3] = 0x00;          //\r
+       buf[4] = 0x08;          // Define a data length for CT36x to generate check sum\r
+\r
+       // Write Genertate check sum command to CT36x\r
+       ts_bulk_write_normal(ts, 5, buf, 200*1000);\r
+       mdelay(10);                                                             // Delay 10 ms\r
+\r
+       ts_bulk_read_normal(ts, 13, buf, 200*1000);\r
+       mdelay(10);                                                             // Delay 10 ms \r
+\r
+       CheckSum[0] = buf[5];\r
+       CheckSum[1] = buf[6];\r
+\r
+       buf[0] = 0x00;\r
+       buf[1] = 0x99;          // Generate check sum command  -->read flash, set addr\r
+       buf[2] = 0x3F;          // define a flash address for CT36x to generate check sum\r
+       buf[3] = 0xE0;          //\r
+       buf[4] = 0x08;          // Define a data length for CT36x to generate check sum\r
+       // Write Genertate check sum command to CT36x\r
+       ts_bulk_write_normal(ts, 5, buf, 200*1000);\r
+       mdelay(10);                                                             // Delay 10 ms\r
+\r
+       ts_bulk_read_normal(ts, 13, buf, 200*1000);\r
+       mdelay(10);\r
+\r
+       CheckSum[2] = buf[5];\r
+       CheckSum[3] = buf[6];\r
+\r
+       if ( (CheckSum[0] ^ CheckSum[2]) == 0xFF && (CheckSum[1] ^ CheckSum[3]) == 0xFF )\r
+               goto FLASH_ERASE;\r
+       \r
+       //------------------------------\r
+       // check valid Vendor ID\r
+       //------------------------------\r
+       printk("%s() Vendor ID Check \n", __FUNCTION__);\r
+       buf[0] = 0x00;\r
+       buf[1] = 0x99;          // Generate check sum command  -->read flash, set addr\r
+       buf[2] = 0x00;          // define a flash address for CT365 to generate check sum\r
+       buf[3] = 0x44;          //\r
+       buf[4] = 0x08;          // Define a data length for CT365 to generate check sum\r
+\r
+       // Write Genertate check sum command to CT36x\r
+       ts_bulk_write_normal(ts, 5, buf, 200*1000);\r
+       mdelay(10);                                                             // Delay 10 ms\r
+\r
+       ts_bulk_read_normal(ts, 13, buf, 200*1000);\r
+       mdelay(10);                                                             // Delay 10 ms \r
+       \r
+       // Read check sum and flash data from CT36x\r
+       if ( (buf[5] != 'V') || (buf[9] != 'T') )\r
+               ver_chk_cnt++;\r
+\r
+       buf[0] = 0x00;\r
+       buf[1] = 0x99;          // Generate check sum command  -->read flash,set addr\r
+       buf[2] = 0x00;          // define a flash address for CT365 to generate check sum       \r
+       buf[3] = 0xA4;          //\r
+       buf[4] = 0x08;          // Define a data length for CT365 to generate check sum \r
+\r
+       // Write Genertate check sum command to CT365\r
+       ts_bulk_write_normal(ts, 5, buf, 200*1000);\r
+       mdelay(10);                                                             // Delay 10 ms\r
+\r
+       ts_bulk_read_normal(ts, 13, buf, 200*1000);\r
+       mdelay(10);                                                             // Delay 10 ms \r
+       \r
+       if ((buf[5] != 'V') || (buf[9] != 'T'))\r
+               ver_chk_cnt++;\r
+\r
+       if ( ver_chk_cnt >= 2 ) {\r
+               printk("%s() Invalid FW Version \n", __FUNCTION__);\r
+               goto exit;\r
+       }\r
+\r
+FLASH_ERASE:\r
+       //-----------------------------------------------------\r
+       // Step 2 : Erase 32K flash memory via Mass Erase (33H)  \r
+       // 0x7F --> 0x00 --> 0x33 --> 0x00;\r
+       //-----------------------------------------------------\r
+       printk("%s() Erase flash \n", __FUNCTION__);\r
+       for(i = 0; i < 8; i++ ) {\r
+               buf[0] = 0x00;          // Offset address\r
+               buf[1] = 0x33;          // Mass Erase command\r
+               buf[2] = 0x00 + (i * 8);  \r
+               ts_bulk_write_normal(ts, 3, buf, 200*1000);\r
+               mdelay(120);                            // Delay 10 mS\r
+\r
+               //------------------------------\r
+               // Reset I2C Offset address\r
+               // Note. 0x7F -> 0x00   \r
+               //------------------------------\r
+               buf[0] = 0x00;\r
+               ts_bulk_write_normal(ts, 1, buf, 200*1000);\r
+               mdelay(120);                            // Delay 10 mS\r
+\r
+               //------------------------------\r
+               // Read I2C Bus status\r
+               //------------------------------\r
+               ts_bulk_read_normal(ts, 1, buf, 200*1000);\r
+               mdelay(10);                                                     // Delay 1 ms \r
+\r
+               // if return "AAH" then going next step\r
+               if( buf[0] != 0xAA )\r
+               {\r
+                       goto exit;\r
+               }\r
+       }\r
+\r
+       //----------------------------------------\r
+       // Step3. Host write 128 bytes to CT36x\r
+       // Step4. Host read checksum to verify ;\r
+       // Write/Read for 256 times ( 32k Bytes )\r
+       //----------------------------------------\r
+       printk("%s() flash FW start \n", __FUNCTION__);\r
+       for ( flash_addr = 0; flash_addr < 0x3FFF; flash_addr+=8 ) {\r
+               // Step 3 : write binary data to CT36x\r
+               buf[0] = 0x00;                                                  // Offset address \r
+               buf[1] = 0x55;                                                  // Flash write command\r
+               buf[2] = (char)(flash_addr  >> 8);                      // Flash address [15:8]\r
+               buf[3] = (char)(flash_addr & 0xFF);                     // Flash address [7:0]\r
+               buf[4] = 0x08;                                                  // Data Length \r
+\r
+               if( flash_addr == 160 || flash_addr == 168 ) {\r
+                       buf[6] = ~Binary_Data_Ct360[flash_addr + 0]; // Binary data 1\r
+                       buf[7] = ~Binary_Data_Ct360[flash_addr + 1]; // Binary data 2\r
+                       buf[8] = ~Binary_Data_Ct360[flash_addr + 2]; // Binary data 3\r
+                       buf[9] = ~Binary_Data_Ct360[flash_addr + 3]; // Binary data 4\r
+                       buf[10] = ~Binary_Data_Ct360[flash_addr + 4];   // Binary data 5\r
+                       buf[11] = ~Binary_Data_Ct360[flash_addr + 5];   // Binary data 6\r
+                       buf[12] = ~Binary_Data_Ct360[flash_addr + 6];   // Binary data 7\r
+                       buf[13] = ~Binary_Data_Ct360[flash_addr + 7];   // Binary data 8\r
+               } else {\r
+                       buf[6] = Binary_Data_Ct360[flash_addr + 0];                     // Binary data 1\r
+                       buf[7] = Binary_Data_Ct360[flash_addr + 1];                     // Binary data 2\r
+                       buf[8] = Binary_Data_Ct360[flash_addr + 2];                     // Binary data 3\r
+                       buf[9] = Binary_Data_Ct360[flash_addr + 3];                     // Binary data 4\r
+                       buf[10] = Binary_Data_Ct360[flash_addr + 4];            // Binary data 5\r
+                       buf[11] = Binary_Data_Ct360[flash_addr + 5];            // Binary data 6\r
+                       buf[12] = Binary_Data_Ct360[flash_addr + 6];            // Binary data 7\r
+                       buf[13] = Binary_Data_Ct360[flash_addr + 7];            // Binary data 8\r
+               }\r
+               // Calculate a check sum by Host controller. \r
+               // Checksum = / (FLASH_ADRH+FLASH_ADRL+LENGTH+\r
+               // Binary_Data_Ct3601+Binary_Data_Ct3602+Binary_Data_Ct3603+Binary_Data_Ct3604+\r
+               // Binary_Data_Ct3605+Binary_Data_Ct3606+Binary_Data_Ct3607+Binary_Data_Ct3608) + 1 \r
+               CheckSum[0] = ~(buf[2] + buf[3] + buf[4] + buf[6] + buf[7] + \r
+                       buf[8] + buf[9] + buf[10] + buf[11] + buf[12] +\r
+                       buf[13]) + 1; \r
+\r
+               buf[5] = CheckSum[0];                                           // Load check sum to I2C Buffer \r
+\r
+               ts_bulk_write_normal(ts, 14, buf, 200*1000);                                                                    // Host write I2C_Buf[0?K12] to CT365. \r
+               mdelay(1);                                                                                                      // 8 Bytes program --> Need 1 ms delay time \r
+\r
+               // Step4. Verify process \r
+               //printk("%s(flash_addr:0x%04x) Verify FW \n", __FUNCTION__, flash_addr);\r
+               //Step 4 : Force CT365 generate check sum for host to compare data. \r
+               //Prepare get check sum from CT36x\r
+               buf[0] = 0x00;\r
+               buf[1] = 0x99;                                                  // Generate check sum command\r
+               buf[2] = (char)(flash_addr >> 8);                       // define a flash address for NT1100x to generate check sum \r
+               buf[3] = (char)(flash_addr & 0xFF);             //\r
+               buf[4] = 0x08;                                                  // Define a data length for CT36x to generate check sum \r
+\r
+               ts_bulk_write_normal(ts, 5, buf, 200*1000);                                                                     // Write Genertate check sum command to CT365\r
+               mdelay(1);                                                                                                      // Delay 1 ms\r
+\r
+               ts_bulk_read_normal(ts, 13, buf, 200*1000);     // Read check sum and flash data from CT365\r
+\r
+               // Compare host check sum with CT365 check sum(I2C_Buf[4])\r
+               if ( buf[4] != CheckSum[0] ) {          \r
+                       goto exit;\r
+               }\r
+       }\r
+\r
+       \r
+       printk("%s() flash FW complete \n", __FUNCTION__);\r
+\r
+exit:  \r
+       ts->ops->slave_addr = slave_addr;\r
+       if(ts->ops->active)\r
+               ts->ops->active(ts, 0);\r
+       if(ts->ops->active)\r
+               ts->ops->active(ts, 1);\r
+       return  0;\r
+\r
+}\r
+\r
+\r
+static int ts_init(struct ts_private_data *ts)\r
+{\r
+       int irq_pin = irq_to_gpio(ts->pdata->irq);\r
+       int result = 0;\r
+       int uc_reg_value ;\r
+\r
+       \r
+       char loader_buf[3] = {0xfF,0x0f,0x2A};\r
+       \r
+       gpio_direction_output(ts->pdata->reset_pin, GPIO_LOW);\r
+       mdelay(10);\r
+       gpio_direction_output(ts->pdata->reset_pin, GPIO_HIGH);\r
+       msleep(300);\r
+\r
+       //init some register\r
+       //to do \r
+       ts_bulk_write_normal(ts, 3, loader_buf, 200*1000);\r
+       \r
+       return result;\r
+}\r
+\r
+\r
+static int ts_report_value(struct ts_private_data *ts)\r
+{\r
+       struct ts_platform_data *pdata = ts->pdata;\r
+       struct ts_event *event = &ts->event;\r
+       unsigned char buf[20] = {0};\r
+       int result = 0 , i = 0, off = 0, id = 0;\r
+       int syn_flag = 0;\r
+       \r
+       result = ts_bulk_read(ts, (unsigned short)ts->ops->read_reg, ts->ops->read_len, buf);\r
+       if(result < 0)\r
+       {\r
+               printk("%s:fail to init ts\n",__func__);\r
+               return result;\r
+       }\r
+\r
+       //for(i=0; i<ts->ops->read_len; i++)\r
+       //DBG("buf[%d]=0x%x\n",i,buf[i]);\r
+\r
+       for(i = 0; i<ts->ops->max_point; i++)\r
+       {\r
+               off = i*4;      \r
+               id = buf[off] >> 4;\r
+               event->point[id].id = id;\r
+               event->point[id].status = buf[off+0] & 0x0f;\r
+               event->point[id].x = (((s16)buf[i+1] << 4)|((s16)buf[i+3] >> 4));\r
+               event->point[id].y = (((s16)buf[i+2] << 4)|((s16)buf[i+3] & 0x0f));\r
+               \r
+               if(ts->ops->xy_swap)\r
+               {\r
+                       swap(event->point[id].x, event->point[id].y);\r
+               }\r
+\r
+               if(ts->ops->x_revert)\r
+               {\r
+                       event->point[id].x = ts->ops->range[0] - event->point[id].x;    \r
+               }\r
+\r
+               if(ts->ops->y_revert)\r
+               {\r
+                       event->point[id].y = ts->ops->range[1] - event->point[id].y;\r
+               }       \r
+\r
+               if((event->point[id].status == 1) || (event->point[id].status == 2))\r
+               {               \r
+                       input_mt_slot(ts->input_dev, event->point[id].id);\r
+                       input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, event->point[id].id);\r
+                       input_report_abs(ts->input_dev, ABS_MT_TOUCH_MAJOR, 1);\r
+                       input_report_abs(ts->input_dev, ABS_MT_POSITION_X, event->point[id].x);\r
+                       input_report_abs(ts->input_dev, ABS_MT_POSITION_Y, event->point[id].y);\r
+                       input_report_abs(ts->input_dev, ABS_MT_WIDTH_MAJOR, 1);\r
+                       syn_flag = 1;\r
+                       DBG("%s:%s press down,id=%d,x=%d,y=%d\n",__func__,ts->ops->name, event->point[id].id, event->point[id].x,event->point[id].y);\r
+               }\r
+               else if ((event->point[id].status == 3) || (event->point[id].status == 0))\r
+               {                               \r
+                       input_mt_slot(ts->input_dev, event->point[id].id);                              \r
+                       input_report_abs(ts->input_dev, ABS_MT_TRACKING_ID, -1);\r
+                       input_mt_report_slot_state(ts->input_dev, MT_TOOL_FINGER, false);\r
+                       syn_flag = 1;\r
+                       DBG("%s:%s press up,id=%d\n",__func__,ts->ops->name, event->point[id].id);\r
+               }\r
+\r
+               event->point[id].last_status = event->point[id].status;\r
+               \r
+       }\r
+       \r
+       if(syn_flag)\r
+       {\r
+               syn_flag = 0;\r
+               input_sync(ts->input_dev);\r
+       }\r
+\r
+       return 0;\r
+}\r
+\r
+static int ts_suspend(struct ts_private_data *ts)\r
+{\r
+       struct ts_platform_data *pdata = ts->pdata;\r
+\r
+       if(ts->ops->active)\r
+               ts->ops->active(ts, 0);\r
+       \r
+       return 0;\r
+}\r
+\r
+\r
+static int ts_resume(struct ts_private_data *ts)\r
+{\r
+       struct ts_platform_data *pdata = ts->pdata;\r
+       \r
+       if(ts->ops->active)\r
+               ts->ops->active(ts, 1);\r
+       return 0;\r
+}\r
+\r
+\r
+struct ts_operate ts_ct360_ops = {\r
+       .name                           = "ct360",\r
+       .slave_addr                     = 0x01,\r
+       .ts_id                          = TS_ID_CT360,                  //i2c id number\r
+       .bus_type                       = TS_BUS_TYPE_I2C,\r
+       .reg_size                       = 1,\r
+       .id_reg                         = CT360_ID_REG,\r
+       .id_data                        = TS_UNKNOW_DATA,\r
+       .version_reg                    = TS_UNKNOW_DATA,\r
+       .version_len                    = 0,\r
+       .version_data                   = NULL,\r
+       .read_reg                       = CT360_DATA_REG,               //read data\r
+       .read_len                       = 4*5,                          //data length\r
+       .trig                           = IRQF_TRIGGER_FALLING,         \r
+       .max_point                      = 5,\r
+       .xy_swap                        = 0,\r
+       .x_revert                       = 0,\r
+       .y_revert                       = 0,\r
+       .range                          = {800,480},\r
+       .irq_enable                     = 1,\r
+       .poll_delay_ms                  = 0,\r
+       .active                         = ts_active,    \r
+       .init                           = ts_init,\r
+       .check_irq                      = NULL,\r
+       .report                         = ts_report_value,\r
+       .firmware                       = ts_firmware,\r
+       .suspend                        = ts_suspend,\r
+       .resume                         = ts_resume,\r
+};\r
+\r
+/****************operate according to ts chip:end************/\r
+\r
+//function name should not be changed\r
+static struct ts_operate *ts_get_ops(void)\r
+{\r
+       return &ts_ct360_ops;\r
+}\r
+\r
+\r
+static int __init ts_ct360_init(void)\r
+{\r
+       struct ts_operate *ops = ts_get_ops();\r
+       int result = 0;\r
+       result = ts_register_slave(NULL, NULL, ts_get_ops);     \r
+       DBG("%s\n",__func__);\r
+       return result;\r
+}\r
+\r
+static void __exit ts_ct360_exit(void)\r
+{\r
+       struct ts_operate *ops = ts_get_ops();\r
+       ts_unregister_slave(NULL, NULL, ts_get_ops);\r
+}\r
+\r
+\r
+subsys_initcall(ts_ct360_init);\r
+module_exit(ts_ct360_exit);\r
+\r
diff --git a/drivers/input/ts/chips/ct360_firmware.h b/drivers/input/ts/chips/ct360_firmware.h
new file mode 100755 (executable)
index 0000000..43f574a
--- /dev/null
@@ -0,0 +1,1027 @@
+static char  Binary_Data_Ct360 [16384]  =\r
+{\r
+0x00,0x02,0x2E,0x26,0xD2,0x0B,0x32,0x32,0x32,0x32,0x00,0x02,0x00,0x04,0x00,0x00,\r
+0x00,0x00,0x00,0x02,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x08,0x00,0x00,\r
+0x00,0x00,0x00,0x02,0x2E,0xB2,0x00,0x00,0x00,0x00,0x00,0x02,0x2E,0xEA,0x00,0x00,\r
+0x00,0x00,0x00,0x02,0x00,0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x90,0x0C,0x2A,0x74,0x56,0xF0,0xA3,0x74,0x54,0xF0,0xA3,0x74,0x4C,0xF0,0x22,0x90,\r
+0x08,0xD9,0xE4,0xF0,0xA3,0x74,0x04,0xF0,0x78,0xDB,0x7C,0x08,0x7A,0x2E,0x79,0x94,\r
+0x7F,0x0A,0x12,0x11,0x74,0x78,0xE5,0x7C,0x08,0x7A,0x2E,0x79,0x9E,0x7F,0x14,0x12,\r
+0x11,0x74,0xC2,0x11,0xC2,0x12,0xE4,0x90,0x08,0xC5,0x12,0x11,0x18,0xE4,0x90,0x08,\r
+0xCD,0xF0,0x90,0x0B,0x47,0xE0,0x90,0x08,0xCE,0xF0,0x90,0x08,0xC6,0xF0,0x75,0x9E,\r
+0x55,0xE4,0x90,0x08,0xC3,0xF0,0x12,0x0F,0x9F,0x40,0x03,0x02,0x01,0x96,0x12,0x0D,\r
+0x44,0x1F,0x8F,0xFC,0xFD,0xFE,0x77,0x9B,0xFC,0x8F,0xFC,0xFD,0xFE,0x77,0x6F,0xF7,\r
+0xC5,0xE0,0x04,0xF0,0x12,0x11,0x7D,0x12,0x0D,0xBE,0x74,0x04,0xF0,0xE4,0x90,0x08,\r
+0xC4,0xF0,0x12,0x0F,0x3F,0x40,0x03,0x02,0x01,0x90,0x90,0x08,0xC3,0xE0,0xFF,0x12,\r
+0x0E,0x20,0x12,0x0D,0xAA,0xFD,0xEE,0x12,0x0E,0x0B,0x12,0x10,0x01,0x40,0x11,0xEF,\r
+0x12,0x0E,0x20,0x12,0x0E,0x55,0xFF,0x90,0x08,0xC4,0xE0,0x12,0x0E,0x0B,0x80,0x11,\r
+0x90,0x08,0xC4,0xE0,0x12,0x0E,0x0B,0x12,0x0E,0x55,0xFF,0x90,0x08,0xC3,0x12,0x0E,\r
+0x1F,0x12,0x0D,0xAA,0xC3,0x9F,0xFF,0xEC,0x9E,0x90,0x08,0xCF,0xF0,0xA3,0xEF,0xF0,\r
+0x90,0x08,0xC3,0xE0,0xFF,0x12,0x0D,0xFC,0x12,0x0D,0xAA,0xFD,0x90,0x08,0xC4,0xE0,\r
+0xFE,0x12,0x11,0x84,0x12,0x10,0x01,0x40,0x12,0xEF,0x12,0x0D,0xFC,0x12,0x0D,0xAA,\r
+0xFD,0x12,0x0E,0x4B,0xC3,0x9D,0xFF,0xEE,0x9C,0x80,0x16,0x90,0x08,0xC4,0xE0,0x12,\r
+0x0E,0x4C,0xFF,0x90,0x08,0xC3,0x12,0x0D,0xFB,0x12,0x0D,0xAA,0xC3,0x9F,0xFF,0xEC,\r
+0x9E,0x90,0x08,0xD1,0xF0,0xA3,0xEF,0xF0,0x90,0x08,0xD1,0xE0,0xFE,0xA3,0xE0,0xFF,\r
+0x90,0x08,0xD0,0xE0,0x2F,0xFF,0x90,0x08,0xCF,0xE0,0x3E,0xFE,0x12,0x0F,0x59,0xC0,\r
+0x83,0xC0,0x82,0x90,0x08,0xC4,0xE0,0xD0,0x82,0xD0,0x83,0x12,0x11,0x8E,0xEE,0xF0,\r
+0xA3,0xEF,0x12,0x10,0x7A,0x02,0x00,0xC2,0x12,0x11,0x7D,0x12,0x0D,0xBE,0xE4,0xF0,\r
+0x12,0x10,0x31,0x02,0x00,0x96,0xE4,0x90,0x08,0xC4,0xF0,0x12,0x0F,0x3F,0x50,0x0A,\r
+0x12,0x0F,0x87,0x74,0x01,0x12,0x10,0x7A,0x80,0xF1,0x02,0x04,0xB0,0x90,0x08,0xC5,\r
+0xE0,0xD3,0x94,0x00,0x50,0x03,0x02,0x05,0x06,0xA3,0xE0,0xD3,0x94,0x00,0x50,0x03,\r
+0x02,0x05,0x06,0xE4,0x90,0x08,0xC4,0xF0,0x12,0x0F,0x3F,0x50,0x70,0x12,0x0F,0x87,\r
+0xE0,0x64,0x01,0x70,0x62,0x90,0x08,0xC3,0xF0,0x12,0x0F,0x9F,0x50,0x59,0x12,0x0D,\r
+0xBB,0xE0,0x64,0x04,0x70,0x4B,0x12,0x0F,0x59,0xC0,0x83,0xC0,0x82,0x90,0x08,0xC4,\r
+0xE0,0xD0,0x82,0xD0,0x83,0x12,0x11,0x8E,0xE0,0xFE,0xA3,0xE0,0x90,0x08,0xC7,0x12,\r
+0x0E,0x41,0x12,0x10,0x82,0x50,0x2A,0x90,0x08,0xC3,0xE0,0xFF,0x12,0x0F,0x5D,0xC0,\r
+0x83,0xC0,0x82,0x90,0x08,0xC4,0xE0,0xFE,0xD0,0x82,0xD0,0x83,0x12,0x11,0x8E,0xE0,\r
+0xFD,0xA3,0xE0,0x90,0x08,0xC7,0xCD,0xF0,0xA3,0xED,0xF0,0xA3,0xEE,0xF0,0xA3,0xEF,\r
+0xF0,0x12,0x10,0x31,0x02,0x01,0xD9,0x12,0x10,0x7B,0x02,0x01,0xC8,0xC3,0x90,0x08,\r
+0xC8,0xE0,0x94,0x85,0x90,0x08,0xC7,0xE0,0x64,0x80,0x94,0x81,0x40,0x03,0x02,0x04,\r
+0xB6,0x90,0x08,0xC9,0xE0,0x12,0x0E,0x0B,0x12,0x0E,0x55,0xFF,0x90,0x08,0xCA,0x12,\r
+0x0F,0xA8,0x12,0x0D,0xAA,0xC3,0x9F,0xFF,0xEC,0x9E,0xFE,0x12,0x2F,0x22,0x90,0x08,\r
+0xD7,0xEE,0xF0,0xA3,0xEF,0xF0,0x90,0x08,0xC9,0xE0,0x12,0x0E,0x4C,0xFF,0x90,0x08,\r
+0xCA,0xE0,0x12,0x11,0x94,0x12,0x0D,0xAA,0xC3,0x9F,0xFF,0xEC,0x9E,0xFE,0x12,0x2F,\r
+0x22,0x90,0x08,0xD8,0xE0,0x2F,0xFF,0x90,0x08,0xD7,0xE0,0x3E,0xFE,0xC3,0xEF,0x94,\r
+0x03,0xEE,0x64,0x80,0x94,0x80,0x50,0x13,0x90,0x08,0xD9,0x74,0x03,0xF0,0xA3,0x74,\r
+0x39,0xF0,0x90,0xF0,0x3D,0x74,0x03,0xF0,0x02,0x03,0x88,0xC3,0xEF,0x94,0x08,0xEE,\r
+0x64,0x80,0x94,0x80,0x50,0x07,0x12,0x10,0x38,0x74,0xF7,0x80,0x34,0xC3,0xEF,0x94,\r
+0x0A,0xEE,0x64,0x80,0x94,0x80,0x50,0x07,0x12,0x10,0x38,0x74,0xB5,0x80,0x22,0xC3,\r
+0xEF,0x94,0x0F,0xEE,0x64,0x80,0x94,0x80,0x50,0x07,0x12,0x10,0x38,0x74,0x73,0x80,\r
+0x10,0xC3,0xEF,0x94,0x10,0xEE,0x64,0x80,0x94,0x80,0x50,0x0F,0x12,0x10,0x38,0x74,\r
+0x31,0xF0,0x90,0xF0,0x3D,0x74,0x02,0xF0,0x02,0x03,0x88,0xC3,0xEF,0x94,0x14,0xEE,\r
+0x64,0x80,0x94,0x80,0x50,0x11,0x90,0xF0,0x3D,0x74,0x02,0xF0,0x90,0x08,0xD9,0x14,\r
+0xF0,0xA3,0x74,0xEF,0xF0,0x80,0x61,0xC3,0xEF,0x94,0x18,0xEE,0x64,0x80,0x94,0x80,\r
+0x50,0x07,0x12,0x11,0x24,0x74,0xAD,0x80,0x22,0xC3,0xEF,0x94,0x1C,0xEE,0x64,0x80,\r
+0x94,0x80,0x50,0x07,0x12,0x11,0x24,0x74,0x6B,0x80,0x10,0xC3,0xEF,0x94,0x20,0xEE,\r
+0x64,0x80,0x94,0x80,0x50,0x0E,0x12,0x11,0x24,0x74,0x29,0xF0,0x90,0xF0,0x3D,0x74,\r
+0x01,0xF0,0x80,0x24,0xC3,0xEF,0x94,0x24,0xEE,0x64,0x80,0x94,0x80,0x50,0x0C,0x90,\r
+0xF0,0x3D,0x74,0x01,0xF0,0x90,0x08,0xD9,0xE4,0x80,0x08,0xE4,0x90,0xF0,0x3D,0xF0,\r
+0x90,0x08,0xD9,0xF0,0xA3,0x74,0xE7,0xF0,0xD3,0xEF,0x94,0x08,0xEE,0x64,0x80,0x94,\r
+0x80,0x40,0x26,0x12,0x0E,0x5C,0xE0,0xD3,0x94,0x04,0x40,0x0A,0x74,0x57,0x2D,0x12,\r
+0x0E,0x63,0xE0,0x24,0xFC,0xF0,0x12,0x0E,0x5C,0xE0,0xC3,0x94,0x01,0x50,0x27,0x74,\r
+0x57,0x2D,0x12,0x0E,0x63,0xE4,0xF0,0x80,0x1D,0x12,0x0E,0x5C,0xE0,0x24,0x03,0xF0,\r
+0x74,0x57,0x2D,0x12,0x0E,0x63,0xE0,0xD3,0x94,0x16,0x40,0x0A,0x90,0x08,0xCA,0xE0,\r
+0x12,0x0E,0x61,0x74,0x16,0xF0,0x12,0x0E,0x5C,0xE0,0xFB,0xD3,0xEF,0x9B,0x74,0x80,\r
+0xF8,0x6E,0x98,0x40,0x09,0x74,0x4A,0x2D,0x12,0x11,0x2C,0x74,0x01,0xF0,0x90,0x08,\r
+0xCA,0xE0,0x24,0x4A,0x12,0x11,0x2C,0xE0,0xB4,0x01,0x15,0xD3,0xEF,0x94,0x02,0xEE,\r
+0x64,0x80,0x94,0x80,0x40,0x06,0xD2,0x11,0xD2,0x12,0x80,0x04,0xC2,0x11,0xC2,0x12,\r
+0xA2,0x12,0x82,0x11,0x50,0x72,0x30,0x07,0x17,0x12,0x0E,0x06,0x12,0x0D,0xAA,0x90,\r
+0x08,0xCA,0x12,0x0D,0x8D,0xFD,0xEE,0x12,0x0D,0xFC,0x12,0x0E,0x76,0x02,0x04,0x73,\r
+0x12,0x0F,0x6B,0x12,0x0E,0x0B,0x12,0x0D,0xAA,0x12,0x0F,0xB7,0x90,0x08,0xD9,0xE0,\r
+0xFE,0xA3,0xE0,0xFF,0x12,0x0E,0x15,0x12,0x0D,0xAA,0x12,0x11,0x48,0x12,0x0E,0x15,\r
+0x12,0x11,0x34,0x12,0x0F,0x6B,0x12,0x0D,0xA1,0x12,0x0F,0xB7,0x90,0x08,0xD9,0xE0,\r
+0xFE,0xA3,0xE0,0xFF,0x12,0x0D,0xF1,0x12,0x0D,0xAA,0x12,0x11,0x48,0x12,0x0D,0xF1,\r
+0x12,0x11,0x34,0x12,0x0E,0x06,0x12,0x0D,0xAA,0xFD,0x90,0x08,0xCA,0xE0,0xFE,0x12,\r
+0x0F,0xA9,0x12,0x0D,0x99,0x12,0x0E,0x6B,0x90,0x08,0xCA,0xE0,0xFF,0x12,0x0F,0x2D,\r
+0x74,0x03,0xF0,0x12,0x0D,0xBB,0x74,0x02,0xF0,0x90,0x08,0xC9,0xE0,0x24,0xB8,0x12,\r
+0x0F,0x8A,0xE4,0x12,0x11,0x18,0x90,0x08,0xC5,0xE0,0x14,0xF0,0xA3,0x12,0x0E,0x30,\r
+0x75,0x9E,0x55,0x02,0x01,0xAD,0xE4,0x90,0x08,0xC3,0xF0,0x12,0x0F,0x9F,0x50,0x46,\r
+0x12,0x0D,0xBB,0xE0,0x64,0x04,0x70,0x38,0x90,0x08,0xC3,0x12,0x0F,0xA8,0x12,0x0D,\r
+0xAA,0xFD,0xEF,0x12,0x0E,0x20,0x12,0x0E,0x76,0x90,0x08,0xC3,0xE0,0xFF,0x12,0x11,\r
+0x94,0x12,0x0D,0xAA,0xFD,0xEF,0x12,0x0D,0xFC,0x12,0x0E,0x76,0x90,0x08,0xC3,0xE0,\r
+0xFF,0x24,0x20,0x12,0x0D,0xBE,0x12,0x0E,0x2A,0x12,0x0E,0xF6,0xF5,0x83,0xE4,0xF0,\r
+0x12,0x10,0x31,0x02,0x04,0xBB,0x12,0x10,0x40,0x40,0x03,0x02,0x05,0xC4,0x90,0x08,\r
+0xC5,0xE0,0x94,0x00,0x50,0x03,0x02,0x05,0xC4,0xE4,0x90,0x08,0xC3,0xF0,0x12,0x0F,\r
+0x9F,0x40,0x03,0x02,0x05,0xC4,0x12,0x0D,0xBB,0xE0,0x64,0x04,0x60,0x03,0x02,0x05,\r
+0xBE,0x12,0x10,0x40,0x40,0x03,0x02,0x05,0xBE,0x20,0x16,0x14,0x12,0x11,0x7D,0x12,\r
+0x0D,0xBE,0x12,0x0E,0x2A,0x74,0xAE,0x2F,0xF5,0x82,0xE4,0x34,0x0B,0x02,0x05,0xBA,\r
+0x12,0x0F,0x29,0xE0,0xFF,0x70,0x14,0x90,0x08,0xC3,0xE0,0xFE,0x24,0x20,0x12,0x0D,\r
+0xBE,0x74,0x02,0x12,0x0E,0x2C,0x74,0xAE,0x2E,0x80,0x31,0xEF,0xB4,0x01,0x14,0x90,\r
+0x08,0xC3,0xE0,0xFF,0x24,0x20,0x12,0x0D,0xBE,0x74,0x02,0x12,0x0E,0x2C,0x74,0xAE,\r
+0x2F,0x80,0x19,0x12,0x0F,0x29,0xE0,0x90,0x08,0xC3,0xB4,0x02,0x17,0xE0,0xFF,0x24,\r
+0x20,0x12,0x0D,0xBE,0x74,0x02,0x12,0x0E,0x2C,0x74,0xAE,0x2F,0x12,0x0F,0x2F,0xE0,\r
+0x04,0xF0,0x80,0x1A,0xE0,0xFF,0x24,0x20,0x12,0x0D,0xBE,0x12,0x0E,0x2A,0x74,0xAE,\r
+0x2F,0x12,0x0F,0x2F,0x74,0x03,0xF0,0x12,0x0E,0xF6,0xF5,0x83,0xE4,0xF0,0x12,0x10,\r
+0x31,0x02,0x05,0x1E,0x12,0x10,0x40,0x40,0x03,0x02,0x07,0x67,0x90,0x08,0xC6,0xE0,\r
+0x94,0x00,0x50,0x03,0x02,0x07,0x67,0xE4,0x90,0x08,0xC4,0xF0,0x12,0x0F,0x3F,0x40,\r
+0x03,0x02,0x07,0x67,0x12,0x0F,0x87,0xE0,0x64,0x01,0x60,0x03,0x02,0x07,0x61,0x90,\r
+0x08,0xC3,0xF0,0x12,0x0F,0x9F,0x40,0x03,0x02,0x07,0x61,0x12,0x0D,0xBB,0xE0,0x60,\r
+0x03,0x02,0x07,0x5B,0x12,0x10,0x40,0x40,0x03,0x02,0x07,0x5B,0x90,0x08,0xC4,0xE0,\r
+0xFF,0x24,0xDB,0xF5,0x82,0xE4,0x34,0x08,0xF5,0x83,0xE0,0xFE,0x90,0x08,0xC3,0xE0,\r
+0x12,0x0F,0xCF,0xE0,0xFD,0xD3,0x9E,0x40,0x03,0x02,0x06,0xC6,0xED,0x70,0x22,0xEF,\r
+0x12,0x0E,0x0B,0x12,0x0D,0xAA,0xFD,0x12,0x0F,0xC0,0x12,0x0D,0x99,0xFD,0x12,0x10,\r
+0x12,0x12,0x0E,0x76,0x74,0x3B,0x2E,0xF5,0x82,0xE4,0x34,0x0B,0xF5,0x83,0x74,0x01,\r
+0xF0,0x90,0x08,0xC4,0xE0,0x25,0xE0,0x24,0xE5,0xF5,0x82,0xE4,0x34,0x08,0xF5,0x83,\r
+0xE0,0xFE,0xA3,0xE0,0xFF,0x90,0x08,0xC3,0xE0,0x25,0xE0,0x24,0x26,0xF5,0x82,0xE4,\r
+0x34,0x0B,0xF5,0x83,0xE0,0xFC,0xA3,0xE0,0xC3,0x9F,0xEC,0x9E,0x90,0x08,0xC3,0xE0,\r
+0xFF,0x40,0x11,0x12,0x0F,0xCF,0xE0,0x04,0xF0,0x74,0x20,0x2F,0xF5,0x82,0xE4,0x34,\r
+0x0C,0x02,0x07,0x55,0x12,0x0F,0xCF,0xE4,0xF0,0x90,0x08,0xC4,0xE0,0xFE,0x12,0x0E,\r
+0x0B,0x12,0x0D,0xAA,0xFD,0xEF,0x12,0x0F,0xC5,0x12,0x0E,0x76,0x12,0x0E,0x4B,0xFF,\r
+0x90,0x08,0xC3,0xE0,0xFD,0x12,0x10,0x13,0x12,0x11,0x34,0x74,0x3B,0x2D,0xF5,0x82,\r
+0xE4,0x34,0x0B,0x02,0x07,0x55,0x90,0x08,0xC4,0xE0,0xFF,0x24,0x3B,0xF5,0x82,0xE4,\r
+0x34,0x0B,0xF5,0x83,0xE0,0xB4,0x01,0x1C,0x12,0x0F,0xC0,0x12,0x0D,0xAA,0xFD,0xEF,\r
+0x12,0x0E,0x0B,0x12,0x0E,0x76,0x12,0x10,0x12,0x12,0x0D,0xAA,0xFD,0xEF,0x12,0x11,\r
+0x84,0x12,0x0E,0x76,0x90,0x08,0xC4,0x12,0x0E,0x09,0x12,0x0D,0xAA,0x90,0x08,0xC3,\r
+0x12,0x0D,0x8D,0xFD,0xEE,0x12,0x0D,0xFC,0x12,0x0E,0x76,0x90,0x08,0xC4,0x12,0x0E,\r
+0x09,0x12,0x0D,0xAA,0xFD,0xEE,0x12,0x0F,0xA9,0x12,0x0D,0x99,0x12,0x0E,0x6B,0x74,\r
+0x20,0x2E,0x12,0x0D,0xBE,0x74,0x01,0xF0,0x90,0x08,0xC4,0xE0,0x24,0xB8,0x12,0x0F,\r
+0x8A,0xE4,0x12,0x0E,0x32,0x74,0x4A,0x2E,0x12,0x11,0x2C,0xE4,0xF0,0x74,0xAE,0x2E,\r
+0x12,0x0F,0x2F,0xE4,0xF0,0x74,0x2D,0x2E,0x12,0x0F,0xD1,0xE4,0xF0,0x74,0x3B,0x2E,\r
+0xF5,0x82,0xE4,0x34,0x0B,0xF5,0x83,0xE4,0xF0,0x80,0x06,0x12,0x10,0x31,0x02,0x05,\r
+0xF3,0x12,0x10,0x7B,0x02,0x05,0xDC,0x75,0x9E,0x55,0x22,0xC2,0x1B,0xE4,0x90,0x0B,\r
+0x8E,0xF0,0xD2,0x17,0x30,0x14,0x03,0x02,0x09,0xFD,0x90,0x08,0xC3,0xF0,0x12,0x0F,\r
+0xDF,0x40,0x03,0x02,0x09,0xA6,0x12,0x0D,0xBB,0xE0,0xFF,0x70,0x03,0x02,0x09,0xA0,\r
+0x64,0x03,0x60,0x06,0xEF,0xF4,0x60,0x02,0xC2,0x17,0xEF,0xB4,0x03,0x02,0xD2,0x1B,\r
+0x12,0x0C,0x91,0x12,0x0D,0x57,0x12,0x0F,0x4C,0x12,0x10,0x1D,0x50,0x0C,0xE4,0x7B,\r
+0x20,0x0A,0x12,0x0D,0x7D,0x12,0x0E,0xAC,0x80,0x06,0x12,0x0D,0x7E,0x12,0x10,0x27,\r
+0x12,0x0E,0xA6,0x12,0x0D,0x7E,0x12,0x11,0x5E,0x12,0x0C,0xED,0xEE,0xF0,0xA3,0xEF,\r
+0xF0,0xED,0x12,0x0D,0x13,0x12,0x0E,0x8C,0x7B,0xA0,0x7A,0x01,0x12,0x0D,0x7B,0x12,\r
+0x0F,0x4C,0x7B,0xD0,0xFA,0x12,0x10,0x21,0x50,0x0C,0xE4,0x7B,0xA0,0x0A,0x12,0x0D,\r
+0x7D,0x12,0x0E,0xAC,0x80,0x0A,0x12,0x0D,0x7E,0x7B,0xA0,0x7A,0x01,0x12,0x10,0x2B,\r
+0x12,0x0E,0xA6,0x12,0x0C,0xF9,0x12,0x0C,0x83,0x12,0x0C,0xED,0x12,0x10,0xAE,0x50,\r
+0x43,0xEF,0x12,0x0C,0xED,0x12,0x0D,0x1F,0x50,0x05,0x12,0x0F,0x37,0x80,0x0A,0x12,\r
+0x0E,0x7E,0x94,0x7F,0x40,0x03,0x12,0x10,0xBB,0x90,0x08,0xC3,0xE0,0x12,0x0C,0xED,\r
+0xC0,0x83,0xC0,0x82,0x12,0x0E,0x3A,0xFF,0xEE,0x9C,0xD0,0x82,0xD0,0x83,0x12,0x11,\r
+0x9E,0x12,0x0C,0xED,0x12,0x0E,0xE0,0x50,0x43,0xEF,0x12,0x0C,0xED,0xE4,0xF0,0xA3,\r
+0xF0,0x02,0x08,0x8C,0x90,0x08,0xC3,0xE0,0x12,0x0C,0xED,0x12,0x0D,0xC6,0x12,0x0D,\r
+0x45,0x50,0x05,0x12,0x0F,0x37,0x80,0x0D,0x12,0x10,0x48,0x12,0x0E,0x85,0x94,0x80,\r
+0x40,0x03,0x12,0x10,0xC2,0x12,0x0F,0x1B,0x12,0x0C,0xED,0x12,0x0F,0xD9,0x12,0x0C,\r
+0xEC,0x12,0x10,0xC9,0x40,0x06,0x12,0x0C,0xEC,0x12,0x10,0x50,0x12,0x0D,0x0E,0x12,\r
+0x10,0xD6,0x50,0x44,0xEF,0x12,0x0D,0x13,0x12,0x0D,0x1F,0x50,0x05,0x12,0x0F,0x37,\r
+0x80,0x0A,0x12,0x0E,0x7E,0x94,0x7F,0x40,0x03,0x12,0x10,0xBB,0x90,0x08,0xC3,0xE0,\r
+0x12,0x0D,0x13,0xC0,0x83,0xC0,0x82,0x12,0x0E,0x3A,0xFF,0xEE,0x9C,0xD0,0x82,0xD0,\r
+0x83,0xF0,0xA3,0xEF,0xF0,0x12,0x0D,0x0E,0x12,0x0E,0xE0,0x50,0x48,0xEF,0x12,0x0D,\r
+0x13,0xE4,0xF0,0xA3,0xF0,0x02,0x09,0x15,0x90,0x08,0xC3,0xE0,0x12,0x0D,0x13,0x12,\r
+0x10,0x58,0x12,0x0D,0xD5,0x12,0x0D,0x45,0x50,0x05,0x12,0x0F,0x37,0x80,0x0D,0x12,\r
+0x10,0x48,0x12,0x0E,0x85,0x94,0x80,0x40,0x03,0x12,0x10,0xC2,0x12,0x0F,0x1B,0x12,\r
+0x0D,0x13,0x12,0x0F,0xD9,0xED,0x12,0x0D,0x13,0x12,0x10,0xE3,0x40,0x07,0xED,0x12,\r
+0x0D,0x13,0x12,0x10,0x68,0x90,0x08,0xC3,0xE0,0xFF,0x12,0x0C,0xED,0x12,0x10,0xF0,\r
+0x40,0x07,0xEF,0x12,0x0C,0xED,0x12,0x10,0x50,0x12,0x0D,0x0E,0x12,0x10,0xFD,0x40,\r
+0x07,0xEF,0x12,0x0D,0x13,0x12,0x10,0x68,0x12,0x0D,0xB1,0x12,0x0F,0x92,0x24,0x00,\r
+0xF5,0x82,0xE4,0x34,0x0F,0x12,0x10,0x70,0x12,0x0C,0xED,0x12,0x11,0x0A,0x12,0x11,\r
+0x11,0xD8,0xFB,0x12,0x0F,0xEE,0x24,0x01,0xF5,0x82,0xE4,0x34,0x0F,0xF5,0x83,0xEF,\r
+0xF0,0xEC,0x12,0x0D,0x13,0x12,0x11,0x0A,0x12,0x11,0x11,0xD8,0xFB,0xFF,0x12,0x0F,\r
+0x95,0x24,0x02,0xF5,0x82,0xE4,0x34,0x0F,0xF5,0x83,0xEF,0x12,0x10,0x73,0x12,0x0C,\r
+0xED,0x12,0x11,0x3C,0xD5,0x82,0x02,0x15,0x83,0x15,0x82,0xEF,0x54,0xF0,0xFF,0xEC,\r
+0x12,0x0D,0x13,0x12,0x0F,0xE8,0x24,0x03,0xF5,0x82,0xE4,0x34,0x0F,0x12,0x11,0x69,\r
+0x12,0x0F,0xFA,0x02,0x07,0x7E,0x90,0x0B,0x8E,0xE0,0xD3,0x94,0x00,0x40,0x05,0x30,\r
+0x17,0x02,0xD2,0x0F,0x30,0x1B,0x07,0x7F,0x70,0x7E,0x17,0x12,0x2F,0x02,0x90,0x0B,\r
+0x8E,0xE0,0x90,0x08,0xC3,0xF0,0x12,0x0F,0xDF,0x40,0x03,0x02,0x0C,0x82,0xEF,0x25,\r
+0xE0,0x25,0xE0,0x24,0x00,0xF5,0x82,0xE4,0x34,0x0F,0x12,0x0E,0xEB,0x24,0x01,0xF5,\r
+0x82,0xE4,0x34,0x0F,0x12,0x0E,0xEB,0x24,0x02,0xF5,0x82,0xE4,0x34,0x0F,0x12,0x0E,\r
+0xEB,0x24,0x03,0xF5,0x82,0xE4,0x34,0x0F,0x12,0x0F,0xF5,0x80,0xC9,0xE4,0x90,0x08,\r
+0xC3,0xF0,0x12,0x0F,0xDF,0x40,0x03,0x02,0x0C,0x2E,0x12,0x0D,0xBB,0xE0,0xFF,0x70,\r
+0x03,0x02,0x0C,0x28,0x64,0x03,0x60,0x06,0xEF,0xF4,0x60,0x02,0xC2,0x17,0xEF,0xB4,\r
+0x03,0x02,0xD2,0x1B,0x12,0x0C,0x91,0x12,0x0D,0x57,0x12,0x0F,0x4C,0x12,0x10,0x1D,\r
+0x50,0x0C,0xE4,0x7B,0x20,0x0A,0x12,0x0D,0x7D,0x12,0x0E,0xAC,0x80,0x06,0x12,0x0D,\r
+0x7E,0x12,0x10,0x27,0x12,0x0E,0xA6,0x12,0x0D,0x7E,0x12,0x11,0x5E,0x12,0x0C,0xED,\r
+0xEE,0xF0,0xA3,0xEF,0xF0,0xED,0x12,0x0D,0x13,0x12,0x0E,0x8C,0xE4,0x7B,0xA0,0x7A,\r
+0x01,0x12,0x0D,0x7C,0x12,0x0F,0x4C,0x7B,0xD0,0xFA,0x12,0x10,0x21,0x50,0x0C,0xE4,\r
+0x7B,0xA0,0x0A,0x12,0x0D,0x7D,0x12,0x0E,0xAC,0x80,0x0D,0x12,0x0D,0x7E,0xE4,0x7B,\r
+0xA0,0x7A,0x01,0xF9,0xF8,0x12,0x13,0xDC,0x12,0x0E,0xA6,0x12,0x0C,0xF9,0x12,0x0C,\r
+0x83,0x12,0x0C,0xED,0x12,0x10,0xAE,0x50,0x43,0xEF,0x12,0x0C,0xED,0x12,0x0D,0x1F,\r
+0x50,0x05,0x12,0x0F,0x37,0x80,0x0A,0x12,0x0E,0x7E,0x94,0x7F,0x40,0x03,0x12,0x10,\r
+0xBB,0x90,0x08,0xC3,0xE0,0x12,0x0C,0xED,0xC0,0x83,0xC0,0x82,0x12,0x0E,0x3A,0xFF,\r
+0xEE,0x9C,0xD0,0x82,0xD0,0x83,0x12,0x11,0x9E,0x12,0x0C,0xED,0x12,0x0E,0xE0,0x50,\r
+0x43,0xEF,0x12,0x0C,0xED,0xE4,0xF0,0xA3,0xF0,0x02,0x0B,0x14,0x90,0x08,0xC3,0xE0,\r
+0x12,0x0C,0xED,0x12,0x0D,0xC6,0x12,0x0D,0x45,0x50,0x05,0x12,0x0F,0x37,0x80,0x0D,\r
+0x12,0x10,0x48,0x12,0x0E,0x85,0x94,0x80,0x40,0x03,0x12,0x10,0xC2,0x12,0x0F,0x1B,\r
+0x12,0x0C,0xED,0x12,0x0F,0xD9,0x12,0x0C,0xEC,0x12,0x10,0xC9,0x40,0x06,0x12,0x0C,\r
+0xEC,0x12,0x10,0x50,0x12,0x0D,0x0E,0x12,0x10,0xD6,0x50,0x44,0xEF,0x12,0x0D,0x13,\r
+0x12,0x0D,0x1F,0x50,0x05,0x12,0x0F,0x37,0x80,0x0A,0x12,0x0E,0x7E,0x94,0x7F,0x40,\r
+0x03,0x12,0x10,0xBB,0x90,0x08,0xC3,0xE0,0x12,0x0D,0x13,0xC0,0x83,0xC0,0x82,0x12,\r
+0x0E,0x3A,0xFF,0xEE,0x9C,0xD0,0x82,0xD0,0x83,0xF0,0xA3,0xEF,0xF0,0x12,0x0D,0x0E,\r
+0x12,0x0E,0xE0,0x50,0x48,0xEF,0x12,0x0D,0x13,0xE4,0xF0,0xA3,0xF0,0x02,0x0B,0x9D,\r
+0x90,0x08,0xC3,0xE0,0x12,0x0D,0x13,0x12,0x10,0x58,0x12,0x0D,0xD5,0x12,0x0D,0x45,\r
+0x50,0x05,0x12,0x0F,0x37,0x80,0x0D,0x12,0x10,0x48,0x12,0x0E,0x85,0x94,0x80,0x40,\r
+0x03,0x12,0x10,0xC2,0x12,0x0F,0x1B,0x12,0x0D,0x13,0x12,0x0F,0xD9,0xED,0x12,0x0D,\r
+0x13,0x12,0x10,0xE3,0x40,0x07,0xED,0x12,0x0D,0x13,0x12,0x10,0x68,0x90,0x08,0xC3,\r
+0xE0,0xFF,0x12,0x0C,0xED,0x12,0x10,0xF0,0x40,0x07,0xEF,0x12,0x0C,0xED,0x12,0x10,\r
+0x50,0x12,0x0D,0x0E,0x12,0x10,0xFD,0x40,0x07,0xEF,0x12,0x0D,0x13,0x12,0x10,0x68,\r
+0x12,0x0D,0xB1,0x12,0x0F,0x92,0x24,0x3D,0xF5,0x82,0xE4,0x34,0x0F,0x12,0x10,0x70,\r
+0x12,0x0C,0xED,0x12,0x11,0x0A,0x12,0x11,0x11,0xD8,0xFB,0x12,0x0F,0xEE,0x24,0x3E,\r
+0xF5,0x82,0xE4,0x34,0x0F,0xF5,0x83,0xEF,0xF0,0xEC,0x12,0x0D,0x13,0x12,0x11,0x0A,\r
+0x12,0x11,0x11,0xD8,0xFB,0xFF,0x12,0x0F,0x95,0x24,0x3F,0xF5,0x82,0xE4,0x34,0x0F,\r
+0xF5,0x83,0xEF,0x12,0x10,0x73,0x12,0x0C,0xED,0x12,0x11,0x3C,0xD5,0x82,0x02,0x15,\r
+0x83,0x15,0x82,0xEF,0x54,0xF0,0xFF,0xEC,0x12,0x0D,0x13,0x12,0x0F,0xE8,0x24,0x40,\r
+0xF5,0x82,0xE4,0x34,0x0F,0x12,0x11,0x69,0x12,0x0F,0xFA,0x02,0x0A,0x02,0x90,0x0B,\r
+0x8E,0xE0,0xD3,0x94,0x00,0x40,0x05,0x30,0x17,0x02,0xD2,0x0F,0x30,0x1B,0x07,0x7F,\r
+0x70,0x7E,0x17,0x12,0x2F,0x02,0x90,0x0B,0x8E,0xE0,0x90,0x08,0xC3,0xF0,0x12,0x0F,\r
+0xDF,0x50,0x2F,0xEF,0x25,0xE0,0x25,0xE0,0x24,0x3D,0xF5,0x82,0xE4,0x34,0x0F,0x12,\r
+0x0E,0xEB,0x24,0x3E,0xF5,0x82,0xE4,0x34,0x0F,0x12,0x0E,0xEB,0x24,0x3F,0xF5,0x82,\r
+0xE4,0x34,0x0F,0x12,0x0E,0xEB,0x24,0x40,0xF5,0x82,0xE4,0x34,0x0F,0x12,0x0F,0xF5,\r
+0x80,0xCC,0x22,0xEE,0xF0,0xA3,0xED,0xF0,0x12,0x28,0xE6,0x90,0x08,0xC3,0xE0,0xFF,\r
+0x22,0x90,0x08,0xC3,0xE0,0xFF,0x25,0xE0,0x24,0x78,0xF5,0x82,0xE4,0x34,0x0E,0xF5,\r
+0x83,0xE0,0xFD,0xA3,0xE0,0x90,0x08,0xC8,0xCD,0xF0,0xA3,0xED,0xF0,0xEF,0x25,0xE0,\r
+0x24,0x8C,0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0xE0,0xFE,0xA3,0xE0,0xFF,0x90,0x08,\r
+0xC3,0xE0,0xFD,0x25,0xE0,0x24,0x78,0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0xEE,0xF0,\r
+0xA3,0xEF,0xF0,0x90,0x08,0xC8,0xE0,0xFE,0xA3,0xE0,0xFF,0xED,0x25,0xE0,0x24,0x8C,\r
+0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0xEE,0xF0,0xA3,0xEF,0xF0,0xED,0x25,0xE0,0x24,\r
+0x78,0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0x22,0x90,0x08,0xCA,0xE0,0xFC,0xA3,0xE0,\r
+0xFD,0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x78,0x04,0x12,0x14,0x7F,0xAD,0x07,0x90,0x08,\r
+0xC3,0xE0,0xFF,0x25,0xE0,0x24,0x8C,0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0x22,0xE0,\r
+0xFF,0xA3,0xE0,0x90,0x08,0xC8,0xCF,0xF0,0xA3,0xEF,0xF0,0x90,0x08,0xC8,0xE0,0xFE,\r
+0xA3,0xE0,0xFF,0xC3,0x74,0xF8,0x9F,0xFF,0x74,0xFF,0x9E,0xFE,0x7C,0xFF,0x7D,0xFE,\r
+0x12,0x12,0x9E,0x7D,0xF8,0x12,0x13,0x05,0x90,0x08,0xD0,0xEE,0xF0,0xA3,0xEF,0xF0,\r
+0xC3,0xEE,0x64,0x80,0x94,0x80,0x22,0xE0,0xFE,0xA3,0xE0,0xFF,0xEE,0x33,0x95,0xE0,\r
+0xFD,0xFC,0xE4,0x7B,0x20,0x7A,0x03,0xF9,0xF8,0x12,0x13,0x51,0x78,0x04,0x12,0x14,\r
+0x92,0x90,0x08,0xCA,0x12,0x14,0xA5,0x7B,0x20,0x7A,0x02,0xE4,0xF9,0xF8,0x90,0x08,\r
+0xCA,0xE0,0xFC,0xA3,0xE0,0xFD,0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x22,0xFD,0xE0,0xFE,\r
+0x25,0xE0,0x24,0x28,0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0xEC,0xF0,0xA3,0xED,0xF0,\r
+0xEF,0x25,0xE0,0x24,0x14,0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0xE0,0xFC,0xA3,0xE0,\r
+0x22,0x90,0x08,0xC3,0xE0,0xFF,0x04,0xC4,0x54,0xF0,0xFE,0x74,0x20,0x2F,0xF5,0x82,\r
+0xE4,0x34,0x0C,0xF5,0x83,0x22,0xE0,0xFE,0xA3,0xE0,0xFF,0xC3,0x74,0x20,0x9F,0x90,\r
+0x08,0xC9,0xF0,0x74,0x03,0x9E,0x90,0x08,0xC8,0xF0,0xE0,0xFE,0xA3,0xE0,0xFF,0xC3,\r
+0x74,0x11,0x9F,0xFF,0xE4,0x9E,0xFE,0x7C,0x00,0x7D,0x03,0x12,0x12,0x9E,0x7D,0x07,\r
+0x22,0x7C,0x00,0x7D,0x21,0x12,0x12,0xB0,0x90,0x08,0xCA,0xE0,0x25,0xE0,0x24,0x3C,\r
+0xF5,0x82,0xE4,0x34,0x0E,0x22,0x90,0x08,0xC9,0xE0,0xFF,0x25,0xE0,0x24,0x00,0xF5,\r
+0x82,0xE4,0x34,0x0E,0x22,0x7C,0x00,0x7D,0x21,0x12,0x12,0xB0,0x90,0x08,0xCA,0xE0,\r
+0x25,0xE0,0x24,0x28,0xF5,0x82,0xE4,0x34,0x0E,0x22,0x74,0x03,0xF0,0x90,0x08,0xC5,\r
+0xE0,0x14,0xF0,0x90,0x08,0xCD,0xE0,0x04,0xF0,0x22,0xE0,0xFE,0xA3,0xE0,0x90,0x08,\r
+0xD0,0xFF,0xE0,0xFC,0xA3,0xE0,0xFD,0xC3,0xEF,0x9D,0x22,0xEE,0x25,0xE0,0x24,0x14,\r
+0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0xE0,0xFE,0xA3,0xE0,0x22,0x90,0x08,0xCA,0xE0,\r
+0xFD,0x24,0x57,0xF5,0x82,0xE4,0x34,0x0B,0xF5,0x83,0x22,0xFD,0xEE,0x25,0xE0,0x24,\r
+0x64,0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0xEC,0xF0,0xA3,0xED,0xF0,0x22,0xD3,0x90,\r
+0x08,0xD1,0xE0,0x94,0xFE,0x90,0x08,0xD0,0xE0,0x64,0x80,0x22,0xE0,0xFE,0xA3,0xE0,\r
+0xFF,0xEE,0x33,0x95,0xE0,0xFD,0xFC,0xE4,0x7B,0xE0,0x7A,0x01,0xF9,0xF8,0x12,0x13,\r
+0x51,0x78,0x04,0x12,0x14,0x92,0x90,0x08,0xCA,0x02,0x14,0xA5,0x12,0x13,0xDC,0xEF,\r
+0x24,0x01,0xFF,0xE4,0x3E,0xFE,0xE4,0x3D,0xFD,0xE4,0x3C,0xFC,0x22,0x24,0xF0,0xFF,\r
+0xE0,0x34,0xFF,0xFE,0x7C,0x00,0x7D,0x02,0x12,0x13,0x05,0xEB,0x2F,0xFF,0xEA,0x3E,\r
+0xFE,0xE0,0xFA,0xA3,0xE0,0xFB,0x24,0xF0,0xFD,0xEA,0x34,0xFF,0xFC,0x02,0x13,0x05,\r
+0xE0,0xFC,0xA3,0xE0,0xC3,0xEC,0x64,0x80,0x94,0x80,0x22,0xF5,0x83,0x74,0xFF,0xF0,\r
+0xEF,0x25,0xE0,0x25,0xE0,0x22,0x74,0x2D,0x2F,0xF5,0x82,0xE4,0x34,0x0C,0xF5,0x83,\r
+0xE4,0xF0,0xEF,0x25,0xE0,0x24,0x26,0xF5,0x82,0xE4,0x34,0x0B,0xF5,0x83,0xE4,0xF0,\r
+0xA3,0xF0,0x74,0x3B,0x2F,0xF5,0x82,0xE4,0x34,0x0B,0x22,0x90,0x08,0xD0,0xE0,0xFE,\r
+0xA3,0xE0,0xFF,0x90,0x08,0xC3,0xE0,0xFD,0x22,0x90,0x08,0xC3,0xE0,0x24,0xAE,0xF5,\r
+0x82,0xE4,0x34,0x0B,0xF5,0x83,0x22,0xE4,0x90,0x08,0xD0,0xF0,0xA3,0xF0,0x22,0x90,\r
+0x08,0xCE,0xE0,0xFF,0x90,0x08,0xC4,0xE0,0xFE,0xC3,0x9F,0x22,0x12,0x13,0xDC,0xAC,\r
+0x00,0xAD,0x01,0xAE,0x02,0xAF,0x03,0xE4,0x22,0x90,0x08,0xC3,0xE0,0x75,0xF0,0x14,\r
+0xA4,0x24,0x00,0xF5,0x82,0xE4,0x34,0x0D,0xF5,0x83,0x22,0x90,0x08,0xD9,0xE0,0xFE,\r
+0xA3,0xE0,0xFF,0x7C,0x00,0x7D,0x21,0x12,0x12,0xB0,0xC3,0x74,0x21,0x9F,0xFF,0xE4,\r
+0x9E,0xFE,0x90,0x08,0xC9,0xE0,0x22,0x74,0xB8,0x2E,0xF5,0x82,0xE4,0x34,0x0B,0xF5,\r
+0x83,0x22,0xE0,0x4E,0xFF,0x90,0x0B,0x8E,0xE0,0xFD,0x25,0xE0,0x25,0xE0,0x22,0x90,\r
+0x08,0xC3,0xE0,0xFF,0xC3,0x94,0x05,0x22,0xE0,0x25,0xE0,0x24,0x50,0xF5,0x82,0xE4,\r
+0x34,0x0E,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,0x12,0x12,0x9E,0xAA,0x06,0xAB,0x07,0x22,\r
+0x90,0x08,0xC3,0xE0,0xFE,0x25,0xE0,0x24,0x64,0xF5,0x82,0xE4,0x34,0x0B,0x22,0x24,\r
+0x2D,0xF5,0x82,0xE4,0x34,0x0C,0xF5,0x83,0x22,0xEE,0x8F,0xF0,0x02,0x13,0x3B,0x90,\r
+0x08,0xC3,0xE0,0xFF,0xC3,0x94,0x05,0x22,0xE0,0xA3,0xE0,0x54,0x0F,0x4F,0xFF,0xED,\r
+0x25,0xE0,0x25,0xE0,0x22,0xF5,0x83,0x74,0xFF,0xF0,0x90,0x08,0xC3,0xE0,0x04,0xF0,\r
+0x22,0xF5,0x83,0xE0,0xFA,0xA3,0xE0,0xC3,0x9D,0xEC,0x64,0x80,0xF8,0xEA,0x64,0x80,\r
+0x98,0x22,0xEE,0x25,0xE0,0x24,0x78,0xF5,0x82,0xE4,0x34,0x0B,0x22,0x7B,0x10,0x7A,\r
+0x01,0xF9,0xF8,0xD3,0x02,0x14,0x6E,0x7B,0x20,0x7A,0x02,0xE4,0xF9,0xF8,0x02,0x13,\r
+0xDC,0x90,0x08,0xC3,0xE0,0x04,0xF0,0x22,0x90,0x08,0xD9,0x74,0x02,0xF0,0xA3,0x22,\r
+0x90,0x08,0xCD,0xE0,0xC3,0x94,0x05,0x22,0xD3,0x90,0x08,0xD1,0xE0,0x94,0x03,0x22,\r
+0x74,0x03,0xF0,0xA3,0x74,0x1F,0xF0,0x22,0xE0,0xFE,0xA3,0xE0,0xFF,0xC3,0x74,0xE0,\r
+0x9F,0x90,0x08,0xC9,0xF0,0x74,0x01,0x22,0x74,0x01,0xF0,0xA3,0x74,0xDF,0xF0,0x22,\r
+0xF5,0x83,0xEF,0xF0,0x90,0x08,0xC3,0xE0,0xFC,0x22,0xF0,0x90,0x08,0xC4,0xE0,0x04,\r
+0xF0,0x22,0xEC,0x64,0x80,0xF8,0xEE,0x64,0x80,0x98,0x22,0xF5,0x83,0xE0,0xFA,0xA3,\r
+0xE0,0xC3,0x9D,0xFD,0xEA,0x9C,0xFC,0xE9,0x22,0xE0,0xFC,0xA3,0xE0,0xFD,0xC3,0xEF,\r
+0x9D,0xFF,0xEE,0x9C,0xFE,0xE9,0x22,0xE0,0xFE,0xA3,0xE0,0xFF,0xC3,0x22,0xE0,0xFC,\r
+0xA3,0xE0,0xC3,0x94,0x90,0xEC,0x64,0x80,0x94,0x81,0x22,0x74,0xFF,0xF0,0xA3,0x14,\r
+0xF0,0x22,0xE4,0xF0,0xA3,0x74,0x03,0xF0,0x22,0xE0,0xFE,0xA3,0xE0,0xD3,0x94,0x1F,\r
+0xEE,0x64,0x80,0x94,0x83,0x22,0xE0,0xFC,0xA3,0xE0,0xC3,0x94,0xF0,0xEC,0x64,0x80,\r
+0x94,0x80,0x22,0xE0,0xFE,0xA3,0xE0,0xD3,0x94,0xDF,0xEE,0x64,0x80,0x94,0x81,0x22,\r
+0xE0,0xFC,0xA3,0xE0,0xC3,0x94,0x20,0xEC,0x64,0x80,0x94,0x83,0x22,0xE0,0xFC,0xA3,\r
+0xE0,0xC3,0x94,0xE0,0xEC,0x64,0x80,0x94,0x81,0x22,0xE0,0xFE,0xA3,0xE0,0x78,0x04,\r
+0x22,0xCE,0xA2,0xE7,0x13,0xCE,0x13,0x22,0xF0,0x90,0x08,0xC7,0x74,0x75,0xF0,0xA3,\r
+0x74,0x30,0xF0,0x22,0x90,0x08,0xD9,0x74,0x01,0xF0,0xA3,0x22,0xF5,0x82,0xE4,0x34,\r
+0x0B,0xF5,0x83,0x22,0xF5,0x83,0xEE,0xF0,0xA3,0xEF,0xF0,0x22,0xA3,0xE0,0xC4,0xF8,\r
+0x54,0x0F,0xC8,0x68,0xFF,0x05,0x82,0x22,0xFD,0x12,0x12,0x9E,0xEB,0x2F,0xFF,0xEA,\r
+0x3E,0xFE,0x22,0xD3,0x9F,0xEE,0x64,0x80,0xF8,0xEC,0x64,0x80,0x98,0x22,0x78,0x04,\r
+0x12,0x14,0x7F,0x90,0x08,0xC3,0xE0,0xFD,0x22,0xF5,0x83,0xEF,0xF0,0x90,0x0B,0x8E,\r
+0xE0,0x04,0xF0,0x22,0x7D,0x01,0x7B,0xFF,0x7E,0x00,0x02,0x12,0x78,0x90,0x08,0xC3,\r
+0xE0,0x24,0x20,0x22,0x25,0xE0,0x24,0x14,0xF5,0x82,0xE4,0x34,0x0E,0x22,0x75,0xF0,\r
+0x02,0x02,0x14,0xB1,0x25,0xE0,0x24,0x64,0xF5,0x82,0xE4,0x34,0x0E,0x22,0xF0,0xA3,\r
+0xEF,0xF0,0x90,0x08,0xC3,0xE0,0xFF,0x22,0xE7,0x09,0xF6,0x08,0xDF,0xFA,0x80,0x46,\r
+0xE7,0x09,0xF2,0x08,0xDF,0xFA,0x80,0x3E,0x88,0x82,0x8C,0x83,0xE7,0x09,0xF0,0xA3,\r
+0xDF,0xFA,0x80,0x32,0xE3,0x09,0xF6,0x08,0xDF,0xFA,0x80,0x78,0xE3,0x09,0xF2,0x08,\r
+0xDF,0xFA,0x80,0x70,0x88,0x82,0x8C,0x83,0xE3,0x09,0xF0,0xA3,0xDF,0xFA,0x80,0x64,\r
+0x89,0x82,0x8A,0x83,0xE0,0xA3,0xF6,0x08,0xDF,0xFA,0x80,0x58,0x89,0x82,0x8A,0x83,\r
+0xE0,0xA3,0xF2,0x08,0xDF,0xFA,0x80,0x4C,0x80,0xD2,0x80,0xFA,0x80,0xC6,0x80,0xD4,\r
+0x80,0x69,0x80,0xF2,0x80,0x33,0x80,0x10,0x80,0xA6,0x80,0xEA,0x80,0x9A,0x80,0xA8,\r
+0x80,0xDA,0x80,0xE2,0x80,0xCA,0x80,0x33,0x89,0x82,0x8A,0x83,0xEC,0xFA,0xE4,0x93,\r
+0xA3,0xC8,0xC5,0x82,0xC8,0xCC,0xC5,0x83,0xCC,0xF0,0xA3,0xC8,0xC5,0x82,0xC8,0xCC,\r
+0xC5,0x83,0xCC,0xDF,0xE9,0xDE,0xE7,0x80,0x0D,0x89,0x82,0x8A,0x83,0xE4,0x93,0xA3,\r
+0xF6,0x08,0xDF,0xF9,0xEC,0xFA,0xA9,0xF0,0xED,0xFB,0x22,0x89,0x82,0x8A,0x83,0xEC,\r
+0xFA,0xE0,0xA3,0xC8,0xC5,0x82,0xC8,0xCC,0xC5,0x83,0xCC,0xF0,0xA3,0xC8,0xC5,0x82,\r
+0xC8,0xCC,0xC5,0x83,0xCC,0xDF,0xEA,0xDE,0xE8,0x80,0xDB,0x89,0x82,0x8A,0x83,0xE4,\r
+0x93,0xA3,0xF2,0x08,0xDF,0xF9,0x80,0xCC,0x88,0xF0,0xEF,0x60,0x01,0x0E,0x4E,0x60,\r
+0xC3,0x88,0xF0,0xED,0x24,0x02,0xB4,0x04,0x00,0x50,0xB9,0xF5,0x82,0xEB,0x24,0x02,\r
+0xB4,0x04,0x00,0x50,0xAF,0x23,0x23,0x45,0x82,0x23,0x90,0x11,0xF8,0x73,0xEF,0x8D,\r
+0xF0,0xA4,0xA8,0xF0,0xCF,0x8C,0xF0,0xA4,0x28,0xCE,0x8D,0xF0,0xA4,0x2E,0xFE,0x22,\r
+0xBC,0x00,0x0B,0xBE,0x00,0x29,0xEF,0x8D,0xF0,0x84,0xFF,0xAD,0xF0,0x22,0xE4,0xCC,\r
+0xF8,0x75,0xF0,0x08,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xEC,0x33,0xFC,0xEE,0x9D,0xEC,\r
+0x98,0x40,0x05,0xFC,0xEE,0x9D,0xFE,0x0F,0xD5,0xF0,0xE9,0xE4,0xCE,0xFD,0x22,0xED,\r
+0xF8,0xF5,0xF0,0xEE,0x84,0x20,0xD2,0x1C,0xFE,0xAD,0xF0,0x75,0xF0,0x08,0xEF,0x2F,\r
+0xFF,0xED,0x33,0xFD,0x40,0x07,0x98,0x50,0x06,0xD5,0xF0,0xF2,0x22,0xC3,0x98,0xFD,\r
+0x0F,0xD5,0xF0,0xEA,0x22,0xC2,0xD5,0xEC,0x30,0xE7,0x09,0xB2,0xD5,0xE4,0xC3,0x9D,\r
+0xFD,0xE4,0x9C,0xFC,0xEE,0x30,0xE7,0x15,0xB2,0xD5,0xE4,0xC3,0x9F,0xFF,0xE4,0x9E,\r
+0xFE,0x12,0x12,0xB0,0xC3,0xE4,0x9D,0xFD,0xE4,0x9C,0xFC,0x80,0x03,0x12,0x12,0xB0,\r
+0x30,0xD5,0x07,0xC3,0xE4,0x9F,0xFF,0xE4,0x9E,0xFE,0x22,0xC5,0xF0,0xF8,0xA3,0xE0,\r
+0x28,0xF0,0xC5,0xF0,0xF8,0xE5,0x82,0x15,0x82,0x70,0x02,0x15,0x83,0xE0,0x38,0xF0,\r
+0x22,0xE8,0x8F,0xF0,0xA4,0xCC,0x8B,0xF0,0xA4,0x2C,0xFC,0xE9,0x8E,0xF0,0xA4,0x2C,\r
+0xFC,0x8A,0xF0,0xED,0xA4,0x2C,0xFC,0xEA,0x8E,0xF0,0xA4,0xCD,0xA8,0xF0,0x8B,0xF0,\r
+0xA4,0x2D,0xCC,0x38,0x25,0xF0,0xFD,0xE9,0x8F,0xF0,0xA4,0x2C,0xCD,0x35,0xF0,0xFC,\r
+0xEB,0x8E,0xF0,0xA4,0xFE,0xA9,0xF0,0xEB,0x8F,0xF0,0xA4,0xCF,0xC5,0xF0,0x2E,0xCD,\r
+0x39,0xFE,0xE4,0x3C,0xFC,0xEA,0xA4,0x2D,0xCE,0x35,0xF0,0xFD,0xE4,0x3C,0xFC,0x22,\r
+0x75,0xF0,0x08,0x75,0x82,0x00,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xCD,0x33,0xCD,0xCC,\r
+0x33,0xCC,0xC5,0x82,0x33,0xC5,0x82,0x9B,0xED,0x9A,0xEC,0x99,0xE5,0x82,0x98,0x40,\r
+0x0C,0xF5,0x82,0xEE,0x9B,0xFE,0xED,0x9A,0xFD,0xEC,0x99,0xFC,0x0F,0xD5,0xF0,0xD6,\r
+0xE4,0xCE,0xFB,0xE4,0xCD,0xFA,0xE4,0xCC,0xF9,0xA8,0x82,0x22,0xB8,0x00,0xC1,0xB9,\r
+0x00,0x59,0xBA,0x00,0x2D,0xEC,0x8B,0xF0,0x84,0xCF,0xCE,0xCD,0xFC,0xE5,0xF0,0xCB,\r
+0xF9,0x78,0x18,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,0xEB,\r
+0x33,0xFB,0x10,0xD7,0x03,0x99,0x40,0x04,0xEB,0x99,0xFB,0x0F,0xD8,0xE5,0xE4,0xF9,\r
+0xFA,0x22,0x78,0x18,0xEF,0x2F,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,0x33,0xFC,\r
+0xC9,0x33,0xC9,0x10,0xD7,0x05,0x9B,0xE9,0x9A,0x40,0x07,0xEC,0x9B,0xFC,0xE9,0x9A,\r
+0xF9,0x0F,0xD8,0xE0,0xE4,0xC9,0xFA,0xE4,0xCC,0xFB,0x22,0x75,0xF0,0x10,0xEF,0x2F,\r
+0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xCC,0x33,0xCC,0xC8,0x33,0xC8,0x10,0xD7,0x07,\r
+0x9B,0xEC,0x9A,0xE8,0x99,0x40,0x0A,0xED,0x9B,0xFD,0xEC,0x9A,0xFC,0xE8,0x99,0xF8,\r
+0x0F,0xD5,0xF0,0xDA,0xE4,0xCD,0xFB,0xE4,0xCC,0xFA,0xE4,0xC8,0xF9,0x22,0xEB,0x9F,\r
+0xF5,0xF0,0xEA,0x9E,0x42,0xF0,0xE9,0x9D,0x42,0xF0,0xE8,0x9C,0x45,0xF0,0x22,0xE8,\r
+0x60,0x0F,0xEC,0xC3,0x13,0xFC,0xED,0x13,0xFD,0xEE,0x13,0xFE,0xEF,0x13,0xFF,0xD8,\r
+0xF1,0x22,0xE8,0x60,0x0F,0xEF,0xC3,0x33,0xFF,0xEE,0x33,0xFE,0xED,0x33,0xFD,0xEC,\r
+0x33,0xFC,0xD8,0xF1,0x22,0xEC,0xF0,0xA3,0xED,0xF0,0xA3,0xEE,0xF0,0xA3,0xEF,0xF0,\r
+0x22,0xA4,0x25,0x82,0xF5,0x82,0xE5,0xF0,0x35,0x83,0xF5,0x83,0x22,0xD2,0x15,0xE4,\r
+0x90,0x0B,0x63,0xF0,0x90,0x0B,0x47,0xF0,0x90,0x08,0xC4,0xF0,0x30,0x16,0x03,0x02,\r
+0x16,0x67,0x90,0x08,0xC3,0xF0,0x90,0x09,0x00,0xE0,0x75,0xF0,0x02,0xA4,0xFF,0x90,\r
+0x08,0xC3,0xE0,0x12,0x1F,0xBF,0x40,0x03,0x02,0x16,0x54,0x30,0xD9,0x13,0xE0,0xFF,\r
+0x24,0xE4,0x12,0x1F,0x65,0xF5,0xCB,0x74,0xE5,0x2F,0xF5,0x82,0xE4,0x34,0x07,0x80,\r
+0x14,0x90,0x08,0xC3,0xE0,0xFF,0x24,0x08,0x12,0x1F,0x76,0xF5,0xCB,0x74,0x09,0x2F,\r
+0xF5,0x82,0xE4,0x34,0x07,0xF5,0x83,0xE0,0xF5,0xCC,0xD2,0xDA,0x30,0xDA,0x05,0x75,\r
+0x9E,0x55,0x80,0xF8,0xAF,0xCA,0xAD,0xB9,0xED,0xAD,0xC3,0x12,0x1F,0x86,0xAD,0xCB,\r
+0x12,0x20,0xA6,0x12,0x1F,0x7F,0xAD,0xCB,0x12,0x21,0x2C,0xAF,0xBE,0xAD,0xBA,0xED,\r
+0x2F,0xFF,0xEC,0xAD,0xC4,0x12,0x1F,0x8B,0xAD,0xCB,0x12,0x1F,0xEB,0x12,0x1F,0x7F,\r
+0xAD,0xB9,0x12,0x1F,0x8D,0xAD,0xCA,0x12,0x1F,0x8D,0xAD,0xC3,0x12,0x1F,0x8D,0xAD,\r
+0xBA,0x12,0x1F,0x8D,0xAD,0xBE,0x12,0x1F,0x8D,0x12,0x1F,0x9A,0xAF,0xCB,0x12,0x2D,\r
+0xC3,0x90,0x08,0xCC,0xEE,0xF0,0xA3,0xEF,0xF0,0xE0,0x24,0xF0,0xF0,0x90,0x08,0xCC,\r
+0xE0,0x34,0xFF,0xF0,0xAF,0xCA,0xAD,0xBD,0xED,0xAD,0xBE,0x12,0x1F,0xE3,0x12,0x1F,\r
+0x8D,0xAD,0xCC,0x12,0x20,0xA6,0x12,0x1F,0xDC,0x12,0x1F,0x8D,0xAD,0xCC,0x12,0x21,\r
+0x2C,0xAF,0xC3,0xAD,0xC2,0xED,0x2F,0xFF,0xEC,0x33,0xFE,0xAD,0xC4,0x12,0x1F,0x8D,\r
+0xAD,0xCC,0x12,0x1F,0xEB,0x12,0x1F,0xDC,0x12,0x1F,0x8D,0xAD,0xBD,0x12,0x1F,0x8D,\r
+0xAD,0xCA,0x12,0x1F,0x8D,0xAD,0xBE,0x12,0x1F,0x8D,0xAD,0xC2,0x12,0x1F,0x8D,0xAD,\r
+0xC3,0x12,0x1F,0x8D,0x12,0x1F,0x9A,0xAF,0xCC,0x12,0x2D,0xC3,0x74,0xF0,0x2F,0xFF,\r
+0x74,0xFF,0x3E,0xFE,0xAD,0xCA,0xAB,0xB9,0xEB,0x2D,0xFD,0xE4,0x33,0xFC,0xAB,0xC3,\r
+0x7A,0x00,0x12,0x21,0x36,0xAB,0xBD,0x12,0x21,0x36,0xAB,0xBE,0x12,0x21,0x36,0x90,\r
+0x08,0xC4,0xE0,0xFB,0x25,0xE0,0x24,0x26,0xF5,0x82,0xE4,0x34,0x0B,0xF5,0x83,0xEC,\r
+0xF0,0xA3,0xED,0xF0,0x90,0x08,0xCC,0xE0,0xFC,0xA3,0xE0,0xFD,0xEB,0x25,0xE0,0x24,\r
+0x00,0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0xEC,0xF0,0xA3,0xED,0xF0,0xEB,0x25,0xE0,\r
+0x24,0x14,0xF5,0x82,0xE4,0x34,0x0E,0xF5,0x83,0xEE,0xF0,0xA3,0xEF,0xF0,0x90,0x0B,\r
+0x47,0xE0,0x04,0xF0,0x90,0x08,0xC4,0xE0,0x04,0xF0,0x90,0x08,0xC3,0xE0,0x24,0x02,\r
+0xF0,0x02,0x14,0xD6,0x20,0x15,0x03,0x02,0x17,0xA9,0x90,0x0B,0x63,0xE0,0x70,0x03,\r
+0x02,0x17,0xA9,0x74,0x05,0xF0,0x22,0x90,0x0B,0x47,0x74,0x01,0xF0,0x90,0x0B,0x20,\r
+0xE0,0xF5,0xCB,0x90,0x0B,0x21,0xE0,0xF5,0xCC,0xD2,0xDA,0x30,0xDA,0x05,0x75,0x9E,\r
+0x55,0x80,0xF8,0xAF,0xBD,0xAD,0xB7,0xED,0x2F,0xFF,0xE4,0x33,0xFE,0xAD,0xC2,0x7C,\r
+0x00,0xEF,0x2D,0xFF,0xEC,0x3E,0x12,0x1F,0xFA,0xAF,0xCA,0xAD,0xB9,0xED,0xAD,0xC3,\r
+0x12,0x20,0x6E,0xAF,0xBE,0xAD,0xBA,0x12,0x1F,0x94,0x12,0x20,0xB5,0xAF,0xCB,0x12,\r
+0x2D,0xC3,0x90,0x0E,0x00,0xEE,0xF0,0xA3,0xEF,0xF0,0x20,0x05,0x0C,0x90,0x0E,0x00,\r
+0xE0,0xFF,0xA3,0xE0,0x90,0x0B,0x22,0x80,0x4E,0x90,0x0B,0x22,0xE0,0xFE,0xA3,0xE0,\r
+0xFF,0x12,0x1F,0xCA,0x40,0x1F,0x90,0x0B,0x23,0xE0,0x24,0x32,0xFF,0x90,0x0B,0x22,\r
+0xE0,0x34,0x00,0xFE,0x12,0x1F,0xCA,0x50,0x33,0x90,0x0B,0x22,0xE0,0xFF,0xA3,0xE0,\r
+0x90,0x0E,0x00,0x80,0x22,0x90,0x0E,0x01,0xE0,0x24,0x32,0xFF,0x90,0x0E,0x00,0xE0,\r
+0x34,0x00,0xFE,0xC3,0x90,0x0B,0x23,0xE0,0x90,0x0B,0x22,0x12,0x1F,0xD2,0x50,0x0C,\r
+0xE0,0xFF,0xA3,0xE0,0x90,0x0E,0x00,0xCF,0xF0,0xA3,0xEF,0xF0,0x12,0x1F,0xDC,0xEF,\r
+0x2D,0xFF,0xEC,0x3E,0x12,0x1F,0xFA,0xAF,0xCA,0xAD,0xBD,0xED,0xAD,0xBE,0x12,0x20,\r
+0x6E,0xAF,0xC3,0xAD,0xC2,0x12,0x1F,0x94,0x12,0x20,0xB5,0xAF,0xCC,0x12,0x2D,0xC3,\r
+0x90,0x0E,0x14,0xEE,0xF0,0xA3,0xEF,0xF0,0x20,0x05,0x12,0x90,0x0E,0x14,0xE0,0xFF,\r
+0xA3,0xE0,0x90,0x0B,0x24,0xCF,0xF0,0xA3,0xEF,0xF0,0xD2,0x05,0x22,0x90,0x0B,0x24,\r
+0xE0,0xFE,0xA3,0xE0,0xFF,0x12,0x20,0x49,0x40,0x18,0x90,0x0B,0x25,0xE0,0x24,0xC0,\r
+0xFF,0x90,0x0B,0x24,0xE0,0x34,0x00,0xFE,0x12,0x20,0x49,0x50,0x2C,0x90,0x0B,0x24,\r
+0x80,0x1B,0x90,0x0E,0x15,0xE0,0x24,0xC0,0xFF,0x90,0x0E,0x14,0xE0,0x34,0x00,0xFE,\r
+0xC3,0x90,0x0B,0x25,0xE0,0x90,0x0B,0x24,0x12,0x20,0x51,0x50,0x0C,0xE0,0xFF,0xA3,\r
+0xE0,0x90,0x0E,0x14,0xCF,0xF0,0xA3,0xEF,0xF0,0x22,0x90,0x08,0xC4,0xE4,0xF0,0xA3,\r
+0x74,0x20,0xF0,0xE4,0x90,0x08,0xC8,0xF0,0xA3,0xF0,0x90,0x08,0xC6,0xF0,0xA3,0x74,\r
+0x20,0xF0,0xE4,0x90,0x08,0xCA,0xF0,0xA3,0xF0,0x90,0x08,0xC3,0xF0,0x90,0x08,0xC3,\r
+0xE0,0xFF,0xC3,0x94,0x05,0x40,0x03,0x02,0x1A,0x4B,0x12,0x0D,0xBB,0xE0,0x70,0x03,\r
+0x02,0x1A,0x42,0x90,0x08,0xC3,0xE0,0xFB,0x12,0x0E,0x20,0x12,0x0E,0x55,0xFF,0x90,\r
+0x08,0xC4,0x12,0x0E,0x42,0x12,0x10,0x82,0x50,0x77,0x90,0x08,0xC3,0xE0,0xFF,0x12,\r
+0x0E,0x20,0x12,0x0D,0xAA,0x24,0xF0,0xFD,0xEC,0x34,0xFF,0xFC,0xEF,0x12,0x0C,0xED,\r
+0xEC,0xF0,0xA3,0xED,0xF0,0x90,0x08,0xC8,0x12,0x10,0xA7,0x90,0x08,0xC5,0xE0,0x9F,\r
+0xFF,0x90,0x08,0xC4,0xE0,0x9E,0xFE,0xEB,0x12,0x0C,0xED,0xE0,0xFC,0xA3,0xE0,0xFD,\r
+0x12,0x12,0x9E,0x90,0x08,0xC5,0xE0,0x24,0xF0,0xFD,0x90,0x08,0xC4,0xE0,0x12,0x0E,\r
+0xDA,0x90,0x08,0xC9,0xE0,0x2F,0xFF,0x90,0x08,0xC8,0xE0,0x3E,0xFE,0xEB,0x12,0x0C,\r
+0xED,0xEE,0xF0,0xA3,0xEF,0xF0,0x90,0x08,0xC3,0xE0,0xFF,0x12,0x0C,0xED,0x12,0x0E,\r
+0xE0,0x40,0x03,0x02,0x19,0x12,0xEF,0x12,0x0C,0xED,0xE4,0xF0,0xA3,0xF0,0x02,0x19,\r
+0x12,0x90,0x08,0xC4,0x12,0x10,0xA7,0x74,0xA0,0x9F,0xFF,0x74,0x01,0x9E,0xFE,0x90,\r
+0x08,0xC3,0xE0,0xF9,0x12,0x0E,0x20,0x12,0x0D,0xAA,0x12,0x11,0x53,0x40,0x6E,0x90,\r
+0x08,0xC4,0xE0,0xFE,0xA3,0xE0,0xFF,0x74,0xA0,0x9F,0xFD,0x74,0x01,0x9E,0xFC,0xE9,\r
+0x12,0x0E,0x20,0x12,0x10,0x8B,0x12,0x0C,0xED,0xEC,0xF0,0xA3,0xED,0xF0,0x90,0x08,\r
+0xC8,0x12,0x10,0x99,0x12,0x0C,0xED,0x12,0x0F,0xB3,0x90,0x08,0xC5,0xE0,0x90,0x08,\r
+0xC4,0x12,0x0E,0xBD,0x90,0x08,0xC3,0xE0,0xFD,0x12,0x0C,0xED,0xEE,0xF0,0xA3,0xEF,\r
+0xF0,0xC3,0x74,0xA0,0x9B,0xFF,0x74,0x01,0x9A,0xFE,0x12,0x0C,0xEC,0x12,0x0F,0xD9,\r
+0x12,0x0C,0xEC,0xE0,0xFE,0xA3,0xE0,0xD3,0x94,0xA0,0xEE,0x64,0x80,0x94,0x81,0x40,\r
+0x21,0x12,0x0C,0xEC,0x74,0x01,0xF0,0xA3,0x74,0xA0,0xF0,0x80,0x15,0x90,0x08,0xC3,\r
+0xE0,0xFF,0x12,0x0E,0x20,0x12,0x0D,0xAA,0xFD,0xEF,0x12,0x0C,0xED,0xEC,0xF0,0xA3,\r
+0xED,0xF0,0x90,0x08,0xC3,0xE0,0xFB,0x12,0x0D,0xFC,0x12,0x0E,0x55,0xFF,0x90,0x08,\r
+0xC6,0x12,0x0E,0x42,0x12,0x10,0x82,0x50,0x75,0x90,0x08,0xC3,0xE0,0xFF,0x12,0x0D,\r
+0xFC,0x12,0x0D,0xAA,0x24,0xF0,0xFD,0xEC,0x34,0xFF,0xFC,0xEF,0x12,0x0D,0x13,0xEC,\r
+0xF0,0xA3,0xED,0xF0,0x90,0x08,0xCA,0x12,0x10,0xA7,0x90,0x08,0xC7,0xE0,0x9F,0xFF,\r
+0x90,0x08,0xC6,0xE0,0x9E,0xFE,0xEB,0x12,0x0D,0x13,0xE0,0xFC,0xA3,0xE0,0xFD,0x12,\r
+0x12,0x9E,0x90,0x08,0xC7,0xE0,0x24,0xF0,0xFD,0x90,0x08,0xC6,0xE0,0x12,0x0E,0xDA,\r
+0x90,0x08,0xCB,0xE0,0x2F,0xFF,0x90,0x08,0xCA,0xE0,0x3E,0xFE,0xEB,0x12,0x0D,0x13,\r
+0xEE,0xF0,0xA3,0xEF,0xF0,0x90,0x08,0xC3,0x12,0x0D,0x11,0x12,0x0E,0xE0,0x40,0x03,\r
+0x02,0x1A,0x42,0xEF,0x12,0x0D,0x13,0xE4,0xF0,0xA3,0xF0,0x02,0x1A,0x42,0x90,0x08,\r
+0xC6,0x12,0x10,0xA7,0x74,0x20,0x9F,0xFF,0x74,0x02,0x9E,0xFE,0x90,0x08,0xC3,0xE0,\r
+0xF9,0x12,0x0D,0xFC,0x12,0x0D,0xAA,0x12,0x11,0x53,0x40,0x71,0x90,0x08,0xC6,0xE0,\r
+0xFE,0xA3,0xE0,0xFF,0x74,0x20,0x9F,0xFD,0x74,0x02,0x9E,0xFC,0xE9,0x12,0x0D,0xFC,\r
+0x12,0x10,0x8B,0x12,0x0D,0x13,0xEC,0xF0,0xA3,0xED,0xF0,0x90,0x08,0xCA,0x12,0x10,\r
+0x99,0x12,0x0D,0x13,0x12,0x0F,0xB3,0x90,0x08,0xC7,0xE0,0x90,0x08,0xC6,0x12,0x0E,\r
+0xBD,0x90,0x08,0xC3,0xE0,0xFD,0x12,0x0D,0x13,0xEE,0xF0,0xA3,0xEF,0xF0,0xC3,0x74,\r
+0x20,0x9B,0xFF,0x74,0x02,0x9A,0xFE,0xED,0x12,0x0D,0x13,0x12,0x0F,0xD9,0xED,0x12,\r
+0x0D,0x13,0xE0,0xFE,0xA3,0xE0,0xD3,0x94,0x20,0xEE,0x64,0x80,0x94,0x82,0x40,0x22,\r
+0xED,0x12,0x0D,0x13,0x74,0x02,0xF0,0xA3,0x74,0x20,0xF0,0x80,0x15,0x90,0x08,0xC3,\r
+0xE0,0xFF,0x12,0x0D,0xFC,0x12,0x0D,0xAA,0xFD,0xEF,0x12,0x0D,0x13,0xEC,0xF0,0xA3,\r
+0xED,0xF0,0x90,0x08,0xC3,0xE0,0x04,0xF0,0x02,0x17,0xCD,0x22,0x12,0x2F,0x14,0xE4,\r
+0xF5,0x80,0x12,0x27,0x4F,0x90,0x0F,0xF0,0x12,0x26,0xE7,0xD2,0x80,0x12,0x27,0x87,\r
+0xC2,0x85,0xC2,0x86,0xC2,0x87,0x12,0x27,0x4F,0x20,0x80,0x07,0x90,0x0F,0xF0,0xE0,\r
+0x44,0x01,0xF0,0xC2,0x80,0xD2,0x81,0xC2,0x82,0x12,0x27,0x44,0x20,0x81,0x07,0x90,\r
+0x0F,0xF0,0xE0,0x44,0x02,0xF0,0xC2,0x80,0xC2,0x81,0xD2,0x82,0x12,0x27,0x44,0x20,\r
+0x82,0x07,0x90,0x0F,0xF0,0xE0,0x44,0x04,0xF0,0xC2,0x80,0xC2,0x81,0xC2,0x82,0xD2,\r
+0x83,0x12,0x27,0x46,0x20,0x83,0x07,0x90,0x0F,0xF0,0xE0,0x44,0x08,0xF0,0xC2,0x80,\r
+0xC2,0x81,0xC2,0x82,0xC2,0x83,0xD2,0x84,0x12,0x27,0x48,0x20,0x84,0x07,0x90,0x0F,\r
+0xF0,0xE0,0x44,0x10,0xF0,0x12,0x27,0x85,0xD2,0x85,0x12,0x27,0x4A,0x20,0x85,0x07,\r
+0x90,0x0F,0xF0,0xE0,0x44,0x20,0xF0,0x12,0x27,0x85,0xC2,0x85,0xD2,0x86,0x12,0x27,\r
+0x4C,0x20,0x86,0x07,0x90,0x0F,0xF0,0xE0,0x44,0x40,0xF0,0x12,0x27,0x85,0xC2,0x85,\r
+0xC2,0x86,0xD2,0x87,0x12,0x27,0x4E,0x20,0x87,0x07,0x90,0x0F,0xF0,0xE0,0x44,0x80,\r
+0xF0,0xD2,0x90,0xC2,0x91,0x12,0x27,0x1C,0x20,0x90,0x07,0x90,0x0F,0xF1,0xE0,0x44,\r
+0x01,0xF0,0xC2,0x90,0xD2,0x91,0x12,0x27,0x1C,0x20,0x91,0x07,0x90,0x0F,0xF1,0xE0,\r
+0x44,0x02,0xF0,0xC2,0x90,0xC2,0x91,0xD2,0x92,0x12,0x27,0x1E,0x20,0x92,0x07,0x90,\r
+0x0F,0xF1,0xE0,0x44,0x04,0xF0,0xC2,0x90,0xC2,0x91,0xC2,0x92,0xD2,0x93,0x12,0x27,\r
+0x20,0x20,0x93,0x07,0x90,0x0F,0xF1,0xE0,0x44,0x08,0xF0,0x12,0x27,0x90,0xD2,0x94,\r
+0x12,0x27,0x22,0x20,0x94,0x07,0x90,0x0F,0xF1,0xE0,0x44,0x10,0xF0,0x12,0x27,0x90,\r
+0xC2,0x94,0xD2,0x95,0x12,0x27,0x24,0x20,0x95,0x07,0x90,0x0F,0xF1,0xE0,0x44,0x20,\r
+0xF0,0x12,0x27,0x90,0xC2,0x94,0xC2,0x95,0xD2,0x96,0x12,0x27,0x26,0x20,0x96,0x07,\r
+0x90,0x0F,0xF1,0xE0,0x44,0x40,0xF0,0x12,0x27,0x90,0xC2,0x94,0xC2,0x95,0xC2,0x96,\r
+0xD2,0x97,0x12,0x27,0x28,0x20,0x97,0x07,0x90,0x0F,0xF1,0xE0,0x44,0x80,0xF0,0xD2,\r
+0xA0,0xC2,0xA1,0x12,0x27,0x30,0x20,0xA0,0x07,0x90,0x0F,0xF2,0xE0,0x44,0x01,0xF0,\r
+0xC2,0xA0,0xD2,0xA1,0x12,0x27,0x30,0x20,0xA1,0x07,0x90,0x0F,0xF2,0xE0,0x44,0x02,\r
+0xF0,0xC2,0xA0,0xC2,0xA1,0xD2,0xA2,0x12,0x27,0x32,0x20,0xA2,0x07,0x90,0x0F,0xF2,\r
+0xE0,0x44,0x04,0xF0,0xC2,0xA0,0xC2,0xA1,0xC2,0xA2,0xD2,0xA3,0x12,0x27,0x34,0x20,\r
+0xA3,0x07,0x90,0x0F,0xF2,0xE0,0x44,0x08,0xF0,0x12,0x27,0x99,0xD2,0xA4,0x12,0x27,\r
+0x36,0x20,0xA4,0x07,0x90,0x0F,0xF2,0xE0,0x44,0x10,0xF0,0x12,0x27,0x99,0xC2,0xA4,\r
+0xD2,0xA5,0x12,0x27,0x38,0x20,0xA5,0x07,0x90,0x0F,0xF2,0xE0,0x44,0x20,0xF0,0x12,\r
+0x27,0x99,0xC2,0xA4,0xC2,0xA5,0xD2,0xA6,0x12,0x27,0x3A,0x20,0xA6,0x07,0x90,0x0F,\r
+0xF2,0xE0,0x44,0x40,0xF0,0x12,0x27,0x99,0xC2,0xA4,0xC2,0xA5,0xC2,0xA6,0xD2,0xA7,\r
+0x12,0x27,0x3C,0x20,0xA7,0x07,0x90,0x0F,0xF2,0xE0,0x44,0x80,0xF0,0xD2,0xB0,0xC2,\r
+0xB1,0x12,0x27,0x56,0x20,0xB0,0x07,0x90,0x0F,0xF3,0xE0,0x44,0x01,0xF0,0xC2,0xB0,\r
+0xD2,0xB1,0x12,0x27,0x56,0x20,0xB1,0x07,0x90,0x0F,0xF3,0xE0,0x44,0x02,0xF0,0xC2,\r
+0xB0,0xC2,0xB1,0xD2,0xB2,0x12,0x27,0x58,0x20,0xB2,0x07,0x90,0x0F,0xF3,0xE0,0x44,\r
+0x04,0xF0,0x12,0x27,0xD1,0xD2,0xB3,0x12,0x27,0x5A,0x20,0xB3,0x07,0x90,0x0F,0xF3,\r
+0xE0,0x44,0x08,0xF0,0x12,0x27,0xD1,0xC2,0xB3,0xD2,0xB4,0x12,0x27,0x5C,0x20,0xB4,\r
+0x07,0x90,0x0F,0xF3,0xE0,0x44,0x10,0xF0,0x12,0x27,0xD1,0xC2,0xB3,0xC2,0xB4,0xD2,\r
+0xB5,0x12,0x27,0x5E,0x20,0xB5,0x07,0x90,0x0F,0xF3,0xE0,0x44,0x20,0xF0,0x90,0x0F,\r
+0xFD,0x74,0xBB,0xF0,0x22,0x7D,0x0D,0x90,0x09,0x01,0xE4,0xF0,0xA3,0xDD,0xFC,0x7D,\r
+0x0D,0x90,0x09,0x0E,0xE4,0xF0,0xA3,0xDD,0xFC,0x7D,0x64,0x90,0x0B,0xC4,0xE4,0xF0,\r
+0xA3,0xDD,0xFC,0xE4,0xFC,0x90,0x09,0x1E,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0xFD,\r
+0x12,0x1F,0xB5,0x40,0x03,0x02,0x1E,0x38,0x20,0xD9,0x03,0x02,0x1D,0x8F,0x12,0x1F,\r
+0x62,0x12,0x20,0x86,0x12,0x1F,0x5D,0x12,0x20,0x02,0x12,0x20,0x8E,0x20,0xDA,0xFD,\r
+0x12,0x1F,0x19,0x12,0x20,0x96,0xE5,0xCA,0xD3,0x9C,0x40,0x02,0xAC,0xCA,0x12,0x20,\r
+0x18,0x40,0x08,0x90,0x09,0x20,0xEA,0xF0,0xA3,0xEB,0xF0,0x12,0x1F,0x62,0x12,0x20,\r
+0x86,0xF5,0x83,0xE0,0xD3,0x94,0x01,0x50,0x09,0xE5,0xCA,0x94,0x73,0x50,0x03,0x02,\r
+0x1E,0x33,0x90,0x09,0x00,0xE0,0xD3,0x94,0x01,0x50,0x03,0x02,0x1E,0x33,0x12,0x1F,\r
+0x62,0x12,0x20,0x9E,0x12,0x1F,0x5D,0xD3,0x94,0x00,0x40,0x06,0x12,0x1F,0x62,0x12,\r
+0x20,0xD8,0x90,0xF0,0x37,0xE0,0x14,0xFF,0x12,0x1F,0x62,0xC3,0x9F,0x50,0x06,0x12,\r
+0x1F,0x62,0x12,0x20,0xE5,0x12,0x1F,0x62,0xD3,0x94,0x01,0x40,0x06,0x12,0x1F,0x62,\r
+0x12,0x20,0xF2,0x90,0xF0,0x37,0xE0,0x24,0xFE,0xFF,0x12,0x1F,0x62,0xC3,0x9F,0x40,\r
+0x03,0x02,0x1E,0x33,0x74,0xE4,0x2D,0xF5,0x82,0xE4,0x34,0x07,0x02,0x1E,0x24,0x12,\r
+0x1F,0x73,0x12,0x20,0x86,0x12,0x1F,0x6E,0x12,0x20,0x0D,0x12,0x20,0x8E,0x20,0xDA,\r
+0xFD,0x12,0x1F,0x19,0x12,0x20,0x96,0xE5,0xCA,0xD3,0x9C,0x40,0x02,0xAC,0xCA,0x12,\r
+0x20,0x18,0x40,0x08,0x90,0x09,0x20,0xEA,0xF0,0xA3,0xEB,0xF0,0x12,0x1F,0x73,0x12,\r
+0x20,0x86,0xF5,0x83,0xE0,0xD3,0x94,0x01,0x50,0x06,0xE5,0xCA,0x94,0x73,0x40,0x63,\r
+0x90,0x09,0x00,0xE0,0xD3,0x94,0x01,0x40,0x5A,0x12,0x1F,0x73,0x12,0x20,0x9E,0x12,\r
+0x1F,0x6E,0xD3,0x94,0x00,0x40,0x06,0x12,0x1F,0x73,0x12,0x20,0xD8,0x90,0xF0,0x37,\r
+0xE0,0x14,0xFF,0x12,0x1F,0x73,0xC3,0x9F,0x50,0x06,0x12,0x1F,0x73,0x12,0x20,0xE5,\r
+0x12,0x1F,0x73,0xD3,0x94,0x01,0x40,0x06,0x12,0x1F,0x73,0x12,0x20,0xF2,0x90,0xF0,\r
+0x37,0xE0,0x24,0xFE,0xFF,0x12,0x1F,0x73,0xC3,0x9F,0x50,0x17,0x74,0x08,0x2D,0xF5,\r
+0x82,0xE4,0x34,0x07,0xF5,0x83,0xE0,0x24,0x10,0xF5,0x82,0xE4,0x34,0x09,0xF5,0x83,\r
+0xE0,0x04,0xF0,0x0D,0x0D,0x02,0x1C,0xE0,0x90,0x09,0x1B,0xE0,0xD3,0x9C,0x40,0x06,\r
+0xEC,0x24,0xA1,0xF0,0x80,0x06,0x90,0x09,0x1B,0x74,0x1E,0xF0,0xEC,0xC3,0x94,0x1E,\r
+0x40,0x08,0x90,0x09,0x1B,0xE0,0x94,0x1E,0x50,0x06,0x90,0x09,0x1B,0x74,0x1E,0xF0,\r
+0x90,0x09,0x20,0xE0,0xFE,0xA3,0xE0,0xFF,0x7C,0x00,0x7D,0x03,0x12,0x12,0xB0,0x90,\r
+0x09,0x1E,0xEE,0xF0,0xA3,0xEF,0xF0,0xE4,0xFC,0xFD,0x12,0x1F,0xB5,0x40,0x03,0x02,\r
+0x1F,0x0F,0x30,0xD9,0x3B,0x12,0x1F,0x62,0x12,0x20,0x02,0x12,0x20,0x8E,0x20,0xDA,\r
+0xFD,0x12,0x1F,0x19,0x12,0x20,0x96,0x12,0x1F,0x62,0x12,0x20,0x9E,0xF5,0x83,0xE0,\r
+0xD3,0x94,0x00,0x40,0x0F,0x12,0x20,0x5B,0x40,0x60,0x90,0x09,0x1B,0xE0,0xFF,0xE5,\r
+0xCA,0x9F,0x40,0x56,0x12,0x1F,0x62,0x12,0x20,0xC3,0x12,0x20,0x04,0x02,0x1E,0xF8,\r
+0x12,0x1F,0x73,0x12,0x20,0x0D,0x12,0x20,0x8E,0x20,0xDA,0xFD,0x12,0x1F,0x19,0x12,\r
+0x20,0x96,0x12,0x1F,0x73,0x12,0x20,0x9E,0xF5,0x83,0xE0,0xD3,0x94,0x00,0x40,0x0F,\r
+0x12,0x20,0x5B,0x40,0x25,0x90,0x09,0x1B,0xE0,0xFF,0xE5,0xCA,0x9F,0x40,0x1B,0x12,\r
+0x1F,0x73,0x12,0x20,0xC3,0x12,0x20,0x0F,0xF5,0x83,0xE0,0xFF,0x74,0xC5,0x2C,0xF5,\r
+0x82,0xE4,0x34,0x0B,0xF5,0x83,0xEF,0xF0,0x0C,0x0C,0x0D,0x0D,0x02,0x1E,0x7A,0xAF,\r
+0x04,0xEF,0xC3,0x13,0x90,0x09,0x00,0xF0,0x22,0xAF,0xB9,0xAB,0xB7,0xEB,0x2F,0xFF,\r
+0xE4,0x33,0xFE,0xAB,0xBA,0x7A,0x00,0xEF,0x2B,0xFF,0xEA,0x3E,0xFE,0xAB,0xCA,0xEF,\r
+0x2B,0xFF,0xEA,0x3E,0xFE,0xAB,0xBD,0xEF,0x2B,0xFF,0xEA,0x3E,0xFE,0xAB,0xBE,0xEF,\r
+0x2B,0xFF,0xEA,0x3E,0xFE,0xAB,0xC2,0xEF,0x2B,0xFF,0xEA,0x3E,0xFE,0xAB,0xC3,0xEF,\r
+0x2B,0xFF,0xEA,0x3E,0xFE,0xAB,0xC4,0xEF,0x2B,0xFF,0xEA,0x3E,0x22,0xF5,0x83,0xE0,\r
+0x04,0xF0,0x74,0xE4,0x2D,0xF5,0x82,0xE4,0x34,0x07,0xF5,0x83,0xE0,0x22,0xF5,0x83,\r
+0xE0,0x04,0xF0,0x74,0x08,0x2D,0xF5,0x82,0xE4,0x34,0x07,0xF5,0x83,0xE0,0x22,0xAF,\r
+0xBD,0xAD,0xB7,0xED,0xAD,0xC2,0x2F,0xFF,0xE4,0x7C,0x00,0x33,0xFE,0xEF,0x2D,0xFF,\r
+0xEC,0x3E,0xFE,0x22,0xED,0x2F,0xFF,0xEC,0x33,0xFE,0xAD,0xC4,0xEF,0x2D,0xFF,0xEC,\r
+0x3E,0xA3,0xF0,0xA3,0xEF,0xF0,0x90,0x08,0xC6,0xE0,0xFC,0xA3,0xE0,0xFD,0xA3,0xE0,\r
+0xFA,0xA3,0xE0,0xFB,0x22,0x90,0x09,0x00,0xE0,0x75,0xF0,0x02,0xA4,0xFF,0xED,0xC3,\r
+0x9F,0xE5,0xF0,0x64,0x80,0xF8,0x74,0x80,0x98,0x22,0xC3,0x90,0x0E,0x01,0xE0,0x90,\r
+0x0E,0x00,0x9F,0xEE,0x64,0x80,0xF8,0xE0,0x64,0x80,0x98,0x22,0xAF,0xB9,0xAD,0xB7,\r
+0xED,0xAD,0xBA,0x2F,0xFF,0xE4,0x33,0xFE,0x7C,0x00,0x22,0xED,0x24,0x02,0xFD,0xEC,\r
+0x33,0xFC,0x12,0x12,0x9E,0xEF,0x2B,0xFF,0xEE,0x3A,0x90,0x08,0xC6,0xF0,0xA3,0xEF,\r
+0xF0,0x22,0xF5,0xCB,0x74,0xE5,0x2D,0xF5,0x82,0xE4,0x34,0x07,0x22,0xF5,0xCB,0x74,\r
+0x09,0x2D,0xF5,0x82,0xE4,0x34,0x07,0x22,0x90,0x09,0x20,0xE0,0xFE,0xA3,0xE0,0x90,\r
+0x09,0x1C,0xFF,0xE0,0xFA,0xA3,0xE0,0xFB,0xD3,0x9F,0xEA,0x9E,0x22,0xF5,0x82,0x74,\r
+0x03,0x3C,0xF5,0x83,0xE0,0xFE,0x74,0x85,0x2D,0xF5,0x82,0x74,0x03,0x3C,0xF5,0x83,\r
+0xE0,0x7A,0x00,0x24,0x00,0xFF,0xEA,0x3E,0x22,0xC3,0x90,0x0E,0x15,0xE0,0x90,0x0E,\r
+0x14,0x9F,0xEE,0x64,0x80,0xF8,0xE0,0x64,0x80,0x98,0x22,0x90,0x09,0x1E,0xE0,0xFE,\r
+0xA3,0xE0,0xFF,0x90,0x09,0x1D,0xE0,0x9F,0x90,0x09,0x1C,0xE0,0x9E,0x22,0x2F,0xFF,\r
+0xEC,0x33,0xFE,0xEF,0x2D,0xFF,0xEC,0x3E,0xA3,0xF0,0xA3,0xEF,0xF0,0x22,0xF0,0x75,\r
+0xF0,0x02,0xE5,0x0C,0xA4,0x22,0x24,0x01,0xF5,0x82,0xE4,0x34,0x09,0x22,0xF5,0x83,\r
+0xE0,0xF5,0xCC,0xD2,0xDA,0x22,0x90,0x09,0x1C,0xF0,0xA3,0xEF,0xF0,0x22,0x24,0x0E,\r
+0xF5,0x82,0xE4,0x34,0x09,0x22,0xED,0x24,0x01,0xFD,0xEC,0x33,0xFC,0x12,0x12,0x9E,\r
+0xAA,0x06,0xAB,0x07,0x22,0xA3,0xE0,0xFF,0xA3,0xE0,0x90,0x08,0xD3,0xCF,0xF0,0xA3,\r
+0xEF,0xF0,0x22,0xFF,0x74,0xC4,0x2C,0xF5,0x82,0xE4,0x34,0x0B,0xF5,0x83,0xEF,0xF0,\r
+0x22,0xF5,0x83,0xE0,0xD3,0x94,0x01,0x22,0x24,0x0D,0xF5,0x82,0xE4,0x34,0x09,0xF5,\r
+0x83,0xE0,0x04,0xF0,0x22,0x24,0x0F,0xF5,0x82,0xE4,0x34,0x09,0xF5,0x83,0xE0,0x04,\r
+0xF0,0x22,0x24,0x0C,0xF5,0x82,0xE4,0x34,0x09,0xF5,0x83,0xE0,0x04,0xF0,0x22,0x90,\r
+0xF0,0x34,0xF0,0x90,0xF0,0x36,0xE0,0x44,0x01,0xF0,0x22,0x74,0x24,0x2C,0xF5,0x82,\r
+0xE4,0x34,0x09,0xF5,0x83,0x22,0x90,0xF0,0x37,0xE0,0xFE,0xEF,0x8E,0xF0,0xA4,0x2D,\r
+0x22,0x74,0xC3,0x2C,0xF5,0x82,0xE4,0x34,0x08,0xF5,0x83,0x22,0x12,0x12,0x9E,0xEF,\r
+0x2B,0xFB,0xEE,0x3A,0xFA,0x22,0xED,0x2B,0xFD,0xEA,0x3C,0xFC,0x22,0x9E,0xFE,0xD3,\r
+0xEF,0x94,0x28,0xEE,0x94,0x00,0x22,0x75,0x81,0x6C,0xD2,0xAF,0x75,0x96,0x03,0x12,\r
+0x00,0x40,0x12,0x3F,0xF0,0x12,0x2D,0x87,0x75,0x9E,0x55,0x90,0x0F,0x2B,0xE0,0x64,\r
+0x01,0x60,0x23,0x74,0x01,0xF0,0xE4,0x90,0xF0,0x63,0xF0,0x90,0xF0,0x60,0x74,0xD0,\r
+0xF0,0x7F,0xFA,0x7E,0x00,0x12,0x2F,0x02,0x75,0x9E,0x55,0x75,0xC8,0xE0,0x75,0x87,\r
+0x02,0x75,0x97,0x55,0x00,0x00,0x30,0x0B,0x0C,0x7F,0x01,0x7E,0x00,0x12,0x2F,0x02,\r
+0xC2,0x0B,0x02,0x22,0x88,0x20,0x00,0x03,0x02,0x22,0x88,0xC2,0x00,0x12,0x2C,0xEF,\r
+0x30,0x06,0x06,0x12,0x2E,0x4E,0x02,0x22,0x88,0x30,0x10,0x06,0x12,0x2B,0xED,0x02,\r
+0x22,0x88,0x90,0x0B,0x8F,0xE0,0xFF,0x12,0x27,0xE2,0x12,0x2D,0x40,0x12,0x2C,0x73,\r
+0x30,0x13,0x0C,0xC2,0x13,0xC2,0x16,0x12,0x14,0xBD,0x12,0x2E,0xCF,0x80,0x0B,0x12,\r
+0x27,0xA2,0x90,0x0B,0x63,0xF0,0x90,0x0B,0x47,0xF0,0x12,0x00,0x4F,0x12,0x17,0xAA,\r
+0x12,0x07,0x6B,0x30,0x19,0x12,0x90,0x0B,0x8E,0xE0,0xD3,0x94,0x00,0x40,0x4A,0xB2,\r
+0x14,0xC2,0x19,0x30,0x14,0x2C,0x80,0x22,0xD2,0x1A,0xE4,0xFF,0x30,0xC0,0x07,0x0F,\r
+0xEF,0xB4,0x19,0xF8,0x80,0x02,0xC2,0x1A,0x90,0x0B,0x8E,0xE0,0xFF,0xD3,0x94,0x00,\r
+0x40,0x18,0x30,0x1A,0x15,0xB2,0x14,0x30,0x14,0x08,0x75,0x8A,0x0F,0xE4,0xF5,0x8B,\r
+0x80,0x17,0x75,0x8A,0x0F,0x75,0x8B,0x3D,0x80,0x0F,0xEF,0xD3,0x94,0x00,0x40,0x09,\r
+0x30,0x0F,0x04,0xD2,0x0E,0x80,0x02,0xC2,0x0E,0x90,0x0B,0x8E,0xE0,0xD3,0x94,0x00,\r
+0x40,0x02,0x80,0x39,0x30,0x0F,0x41,0x90,0x0B,0x55,0xE4,0xF0,0xA3,0x74,0x03,0xF0,\r
+0x7F,0x19,0x7E,0x00,0x12,0x2F,0x02,0x90,0x0B,0x56,0xE0,0x24,0xFF,0xF0,0x90,0x0B,\r
+0x55,0xE0,0x34,0xFF,0xF0,0x75,0x9E,0x55,0x30,0x0F,0x0F,0xD3,0xA3,0xE0,0x94,0x00,\r
+0x90,0x0B,0x55,0xE0,0x64,0x80,0x94,0x80,0x50,0xD6,0x30,0x0F,0x0B,0xC2,0xC4,0x7F,\r
+0x32,0x7E,0x00,0x12,0x2F,0x02,0xD2,0xC4,0x30,0x9F,0x03,0x02,0x21,0x58,0x30,0x08,\r
+0x69,0xC2,0x08,0xC2,0x06,0x90,0x0F,0xFF,0xE0,0xB4,0xBF,0x07,0xD2,0x06,0xC2,0x10,\r
+0x02,0x21,0x58,0x90,0x0F,0xFF,0xE0,0xB4,0xAF,0x0D,0x90,0x0F,0xFE,0xE0,0xF5,0x0C,\r
+0xD2,0x10,0xC2,0x06,0x02,0x21,0x58,0x90,0x0F,0xFF,0xE0,0xB4,0xC5,0x09,0x12,0x27,\r
+0xBE,0x12,0x1A,0x4C,0x02,0x21,0x58,0x90,0x0F,0xFF,0xE0,0xB4,0xCA,0x09,0x12,0x27,\r
+0xBE,0x12,0x2D,0xF8,0x02,0x21,0x58,0x90,0x0F,0xFF,0xE0,0xB4,0xCC,0x0C,0xE4,0xF0,\r
+0x90,0xF0,0x1F,0xF0,0x12,0x24,0x71,0x02,0x21,0x58,0x90,0x0F,0xFF,0xE0,0x64,0xC3,\r
+0x60,0x03,0x02,0x21,0x58,0xD2,0x07,0x02,0x21,0x58,0x90,0x0F,0xFF,0xE0,0xB4,0xE1,\r
+0x06,0x12,0x2B,0x5C,0x02,0x21,0x58,0x20,0x09,0x03,0x02,0x21,0x58,0xC2,0x09,0x02,\r
+0x21,0x58,0xC2,0x1D,0xC2,0x1E,0x7D,0x0D,0x90,0x0B,0x90,0xE4,0xF0,0xA3,0xDD,0xFC,\r
+0x7D,0x11,0x90,0x0B,0x9D,0xE4,0xF0,0xA3,0xDD,0xFC,0xE4,0x90,0x0B,0x20,0xF0,0x90,\r
+0x0B,0x21,0xF0,0x90,0x09,0x22,0xF0,0xFC,0xA3,0xF0,0xFD,0x12,0x1F,0xB5,0x50,0x3E,\r
+0x30,0xD9,0x08,0x12,0x1F,0x62,0x12,0x20,0x02,0x80,0x06,0x12,0x1F,0x73,0x12,0x20,\r
+0x0D,0xF5,0x83,0xE0,0xF5,0xCC,0xD2,0xDA,0x30,0xDA,0x05,0x75,0x9E,0x55,0x80,0xF8,\r
+0x12,0x21,0x0B,0xE5,0xCA,0xF0,0x12,0x21,0x0B,0xE0,0xFF,0x90,0x09,0x23,0xE0,0xFE,\r
+0xEF,0xD3,0x9E,0x40,0x04,0xEF,0xF0,0xA9,0x04,0x0C,0x0D,0x0D,0x80,0xBD,0xE4,0xFD,\r
+0xE4,0xFF,0x12,0x21,0x16,0x24,0xA3,0xF5,0x82,0xE4,0x34,0x02,0xF5,0x83,0xE0,0xD3,\r
+0x94,0x6E,0x40,0x02,0x80,0x12,0x12,0x21,0x16,0x24,0xC2,0xF5,0x82,0xE4,0x34,0x01,\r
+0xF5,0x83,0xE0,0xD3,0x94,0x6E,0x40,0x20,0x90,0x09,0x22,0xE0,0x04,0xF0,0x74,0x90,\r
+0x2D,0xF5,0x82,0xE4,0x34,0x0B,0xF5,0x83,0xE0,0x04,0xF0,0x74,0x9D,0x2F,0xF5,0x82,\r
+0xE4,0x34,0x0B,0xF5,0x83,0xE0,0x04,0xF0,0x0F,0xEF,0x64,0x11,0x70,0xB4,0x0D,0xED,\r
+0x64,0x0D,0x70,0xAC,0x75,0x9E,0x55,0xE4,0xFD,0xED,0xD3,0x94,0x0B,0x50,0x1F,0x74,\r
+0x90,0x2D,0xF5,0x82,0xE4,0x34,0x0B,0x12,0x20,0xD1,0x40,0x12,0x74,0x91,0x2D,0xF5,\r
+0x82,0xE4,0x34,0x0B,0x12,0x20,0xD1,0x40,0x05,0x20,0x1D,0x02,0xD2,0x1D,0x0D,0xED,\r
+0xB4,0x0D,0xD6,0x75,0x9E,0x55,0xE4,0xFD,0xED,0xD3,0x94,0x0F,0x50,0x1F,0x74,0x9D,\r
+0x2D,0xF5,0x82,0xE4,0x34,0x0B,0x12,0x20,0xD1,0x40,0x12,0x74,0x9E,0x2D,0xF5,0x82,\r
+0xE4,0x34,0x0B,0x12,0x20,0xD1,0x40,0x05,0x20,0x1E,0x02,0xD2,0x1E,0x0D,0xED,0xB4,\r
+0x11,0xD6,0x20,0x1D,0x03,0x30,0x1E,0x37,0xE9,0x25,0xE0,0x30,0xD9,0x15,0x24,0xE4,\r
+0x12,0x1F,0x65,0x90,0x0B,0x20,0xF0,0xE9,0x25,0xE0,0x24,0xE5,0xF5,0x82,0xE4,0x34,\r
+0x07,0x80,0x13,0x24,0x08,0x12,0x1F,0x76,0x90,0x0B,0x20,0xF0,0xE9,0x25,0xE0,0x24,\r
+0x09,0xF5,0x82,0xE4,0x34,0x07,0xF5,0x83,0xE0,0x90,0x0B,0x21,0xF0,0xD3,0x22,0xC3,\r
+0x22,0xC2,0x04,0xC2,0x1B,0xC2,0x1C,0x90,0x08,0xC4,0x74,0x11,0xF0,0xE4,0x90,0x08,\r
+0xC3,0xF0,0x90,0x08,0xC3,0xE0,0xFF,0xC3,0x94,0x0D,0x40,0x03,0x02,0x25,0x80,0xE4,\r
+0xF9,0xEF,0x75,0xF0,0x02,0xA4,0xFD,0xAC,0xF0,0xE4,0x90,0x08,0xC5,0xF0,0xA3,0xF0,\r
+0x12,0x27,0x66,0x90,0x08,0xC5,0xF0,0xA3,0xEF,0xF0,0xE0,0x24,0xD8,0xF0,0x90,0x08,\r
+0xC5,0xE0,0x34,0xFF,0xF0,0x09,0x90,0x08,0xC4,0xE0,0xFF,0xE9,0xC3,0x9F,0x40,0x03,\r
+0x02,0x25,0x77,0xA3,0xE0,0xFE,0xA3,0xE0,0xFF,0x94,0x84,0xEE,0x94,0x03,0x40,0x06,\r
+0xD2,0x1B,0xD2,0x04,0x80,0x0D,0xC3,0xEF,0x94,0xC8,0xEE,0x94,0x00,0x50,0x04,0xD2,\r
+0x1C,0xD2,0x04,0x90,0x08,0xC3,0xE0,0x75,0xF0,0x02,0xA4,0xFB,0xAA,0xF0,0xE9,0x75,\r
+0xF0,0x1A,0xA4,0x2B,0xFD,0xE5,0xF0,0x3A,0xFC,0x12,0x27,0x66,0x90,0x08,0xC7,0xF0,\r
+0xA3,0xEF,0xF0,0x90,0x08,0xC3,0xE0,0xB4,0x02,0x12,0xE9,0xB4,0x03,0x0E,0x90,0x08,\r
+0xC8,0xE0,0x24,0xC9,0xF0,0x90,0x08,0xC7,0xE0,0x34,0xFF,0xF0,0x90,0x08,0xC7,0xE0,\r
+0xFE,0xA3,0xE0,0xFF,0x90,0x08,0xC5,0xE0,0xFA,0xA3,0xE0,0xFB,0xD3,0x9F,0xEA,0x9E,\r
+0x40,0x0B,0xEB,0x9F,0xFF,0xEA,0x12,0x27,0xD8,0x40,0x29,0x80,0x18,0x90,0x08,0xC5,\r
+0xE0,0xFE,0xA3,0xE0,0xFF,0xC3,0x90,0x08,0xC8,0xE0,0x9F,0xFF,0x90,0x08,0xC7,0xE0,\r
+0x12,0x27,0xD8,0x40,0x0F,0xD2,0x04,0x90,0x08,0xC3,0xE0,0x04,0x90,0x0F,0xE1,0xF0,\r
+0xE9,0x04,0xA3,0xF0,0x90,0x08,0xC7,0xE0,0xFF,0xA3,0xE0,0x90,0x08,0xC5,0xCF,0xF0,\r
+0xA3,0xEF,0xF0,0x09,0x02,0x24,0xB6,0x90,0x08,0xC3,0xE0,0x04,0xF0,0x02,0x24,0x82,\r
+0x75,0x9E,0x55,0x30,0x04,0x18,0x30,0x1B,0x07,0x90,0x0F,0xE0,0x74,0xEF,0xF0,0x22,\r
+0x90,0x0F,0xE0,0x30,0x1C,0x04,0x74,0xE0,0xF0,0x22,0x74,0xEE,0xF0,0x22,0x90,0x0F,\r
+0xE0,0x74,0xAA,0xF0,0x22,0x90,0xF0,0x48,0x74,0x41,0xF0,0xA3,0x74,0x04,0xF0,0xA3,\r
+0x74,0x06,0xF0,0xA3,0xF0,0xA3,0x74,0x01,0xF0,0xE4,0x12,0x26,0xE8,0xE0,0x24,0x01,\r
+0xFF,0xE4,0x33,0x90,0xF0,0x4A,0x12,0x27,0xB4,0xFF,0xED,0x3E,0xA3,0x12,0x27,0xB4,\r
+0xFF,0xED,0x3E,0xFE,0x90,0xF0,0x4F,0x12,0x27,0xB5,0xCD,0x3E,0xFC,0x90,0xF0,0x48,\r
+0xE0,0x24,0x01,0xFF,0xE4,0x33,0xFE,0x12,0x12,0x9E,0x90,0xF0,0x4F,0xE0,0xFD,0x90,\r
+0xF0,0x49,0xE0,0x2D,0xFD,0xE4,0x33,0xCD,0x2F,0xFB,0xED,0x3E,0xFA,0x90,0xF0,0x4D,\r
+0xE0,0xFF,0x7E,0x00,0x7C,0x00,0x7D,0x0A,0x12,0x12,0x9E,0xEF,0x2B,0xFF,0xEE,0x3A,\r
+0xCF,0x24,0x20,0xCF,0x34,0x00,0xAD,0x07,0xFC,0x13,0x13,0x54,0x3F,0xFB,0x90,0xF0,\r
+0x66,0xF0,0x7E,0x00,0xEF,0x78,0x02,0xCE,0xC3,0x13,0xCE,0x13,0xD8,0xF9,0x14,0xFF,\r
+0x90,0xF0,0x67,0xF0,0xA3,0xEB,0xF0,0xA3,0xEF,0xF0,0x90,0xF0,0x60,0x74,0xD1,0xF0,\r
+0xE4,0xF5,0x80,0x12,0x27,0x4F,0x90,0xF0,0x01,0x74,0xA0,0xF0,0xA3,0x74,0x82,0x12,\r
+0x27,0x00,0xA3,0x74,0x62,0x12,0x27,0x00,0xA3,0x74,0x42,0x12,0x27,0x00,0xA3,0x74,\r
+0x22,0x12,0x27,0x00,0xA3,0x74,0xF0,0xF0,0x12,0x26,0xEF,0x12,0x26,0xEF,0x90,0xF0,\r
+0x20,0x74,0xCE,0xF0,0xA3,0x74,0x02,0xF0,0xA3,0x74,0x0C,0xF0,0x90,0xF0,0x30,0x74,\r
+0x19,0xF0,0xA3,0xF0,0xA3,0x74,0x1E,0xF0,0x90,0xF0,0x34,0x74,0x20,0xF0,0x74,0x0A,\r
+0x12,0x27,0xC9,0x74,0x0D,0xF0,0xA3,0x74,0x11,0xF0,0x90,0xF0,0x3A,0x74,0xFF,0xF0,\r
+0xE4,0xA3,0xF0,0xA3,0xF0,0xA3,0x74,0x02,0xF0,0x74,0x14,0x12,0x27,0xC9,0x74,0x20,\r
+0xF0,0xA3,0x74,0x03,0x12,0x26,0xE5,0xA3,0x74,0x01,0xF0,0xE4,0xA3,0xF0,0x90,0xF0,\r
+0x54,0x74,0x18,0xF0,0xA3,0x74,0x7F,0xF0,0xE4,0x90,0xF0,0x53,0xF0,0xD2,0xAD,0x90,\r
+0xF0,0x1F,0xF0,0x04,0xF0,0x22,0xE4,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,\r
+0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0x22,0xA3,\r
+0x14,0xF0,0xA3,0x14,0xF0,0xA3,0x14,0xF0,0xA3,0x14,0xF0,0xA3,0x14,0xF0,0xA3,0x14,\r
+0xF0,0xA3,0x14,0xF0,0xA3,0x14,0xF0,0x22,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,\r
+0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0xA3,0xF0,0x22,0xC2,0x92,0xC2,0x93,\r
+0xC2,0x94,0xC2,0x95,0xC2,0x96,0xC2,0x97,0xE4,0xF5,0x80,0xF5,0xA0,0xF5,0xB0,0x22,\r
+0xC2,0xA2,0xC2,0xA3,0xC2,0xA4,0xC2,0xA5,0xC2,0xA6,0xC2,0xA7,0xE4,0xF5,0x80,0xF5,\r
+0x90,0xF5,0xB0,0x22,0xC2,0x83,0xC2,0x84,0xC2,0x85,0xC2,0x86,0xC2,0x87,0xE4,0xF5,\r
+0x90,0xF5,0xA0,0xF5,0xB0,0x22,0xC2,0xB2,0xC2,0xB3,0xC2,0xB4,0xC2,0xB5,0xE4,0xF5,\r
+0x80,0xF5,0x90,0xF5,0xA0,0x22,0x74,0x84,0x2D,0xF5,0x82,0x74,0x03,0x3C,0xF5,0x83,\r
+0xE0,0xFE,0x74,0x85,0x2D,0xF5,0x82,0x74,0x03,0x3C,0xF5,0x83,0xE0,0x7A,0x00,0x24,\r
+0x00,0xFF,0xEA,0x3E,0x22,0xC2,0x80,0xC2,0x81,0xC2,0x82,0xC2,0x83,0xC2,0x84,0x22,\r
+0xC2,0x90,0xC2,0x91,0xC2,0x92,0xC2,0x93,0x22,0xC2,0xA0,0xC2,0xA1,0xC2,0xA2,0xC2,\r
+0xA3,0x22,0xC2,0x16,0xC2,0x05,0xE4,0x90,0x0B,0x22,0xF0,0xA3,0xF0,0x90,0x0B,0x24,\r
+0xF0,0xA3,0xF0,0x22,0xFE,0xE0,0x24,0x01,0xFD,0xE4,0x33,0xCD,0x2F,0x22,0xE4,0xF0,\r
+0x90,0xF0,0x1F,0xF0,0x90,0x0F,0xFD,0xF0,0x22,0xA3,0xF0,0xA3,0x74,0x01,0xF0,0xA3,\r
+0x22,0xC2,0xB0,0xC2,0xB1,0xC2,0xB2,0x22,0x9E,0xFE,0xD3,0xEF,0x94,0x28,0xEE,0x94,\r
+0x00,0x22,0xAB,0x07,0xC2,0x1B,0xEB,0x25,0xE0,0xFE,0xE4,0x33,0x90,0x08,0xC5,0xF0,\r
+0xA3,0xCE,0xF0,0xE4,0xFA,0xEA,0xFF,0x7E,0x00,0x7C,0x00,0x7D,0x22,0x12,0x12,0x9E,\r
+0xAC,0x06,0xAD,0x07,0xEB,0x25,0xE0,0xFF,0xE4,0x33,0xFE,0xED,0x2F,0xFF,0xEC,0x3E,\r
+0x90,0x08,0xC5,0xF0,0xA3,0xEF,0xF0,0x90,0x08,0xC5,0xE0,0xFC,0xA3,0xE0,0xFD,0x24,\r
+0x85,0xF5,0x82,0x74,0x03,0x3C,0xF5,0x83,0xE0,0xFE,0x74,0x84,0x2D,0xF5,0x82,0x74,\r
+0x03,0x3C,0xF5,0x83,0xE0,0xFD,0xED,0xFF,0x90,0x08,0xC3,0xEE,0xF0,0xA3,0xEF,0xF0,\r
+0xA3,0xA3,0xE0,0xFD,0x24,0x01,0xF5,0x82,0x74,0x00,0x3C,0xF5,0x83,0xE0,0xFE,0x74,\r
+0x00,0x2D,0xF5,0x82,0x74,0x00,0x3C,0xF5,0x83,0xE0,0xFD,0xED,0xFF,0x90,0x08,0xC4,\r
+0xE0,0x24,0x50,0xFD,0x90,0x08,0xC3,0xE0,0x34,0x00,0xFC,0xD3,0xEF,0x9D,0xEE,0x9C,\r
+0x40,0x0E,0x90,0x0B,0x46,0xE0,0x04,0xF0,0x70,0x06,0x90,0x0B,0x45,0xE0,0x04,0xF0,\r
+0xEF,0x24,0x50,0xFF,0xE4,0x3E,0xFE,0xD3,0x90,0x08,0xC4,0xE0,0x9F,0x90,0x08,0xC3,\r
+0xE0,0x9E,0x40,0x0E,0x90,0x0B,0x8D,0xE0,0x04,0xF0,0x70,0x06,0x90,0x0B,0x8C,0xE0,\r
+0x04,0xF0,0x0A,0xEA,0x64,0x11,0x60,0x03,0x02,0x27,0xF5,0x90,0x0B,0x8F,0xE0,0x04,\r
+0xF0,0xE0,0x64,0x11,0x70,0x2F,0xF0,0x90,0x0B,0x8C,0xE0,0xFE,0xA3,0xE0,0xFF,0xD3,\r
+0x90,0x0B,0x46,0xE0,0x9F,0x90,0x0B,0x45,0xE0,0x9E,0x40,0x02,0xD2,0x1B,0x30,0x1B,\r
+0x14,0xC2,0x1B,0xE4,0x90,0x0B,0x45,0xF0,0xA3,0xF0,0x90,0x0B,0x8C,0xF0,0xA3,0xF0,\r
+0x74,0x1E,0x12,0x20,0xFF,0x22,0xEF,0x12,0x0C,0xED,0xE0,0xFC,0xA3,0xE0,0xD3,0x94,\r
+0x84,0xEC,0x64,0x80,0x94,0x83,0x50,0x03,0x02,0x29,0xC4,0xEF,0x12,0x0C,0xED,0xE0,\r
+0xFC,0xA3,0xE0,0xC3,0x94,0xFA,0xEC,0x64,0x80,0x94,0x83,0x40,0x03,0x02,0x29,0xC4,\r
+0xEF,0x12,0x0C,0xED,0xE0,0xFC,0xA3,0xE0,0xD3,0x94,0xD4,0xEC,0x64,0x80,0x94,0x83,\r
+0x40,0x0B,0xEF,0x12,0x0C,0xED,0xE4,0x75,0xF0,0x0A,0x02,0x29,0xC1,0xEF,0x12,0x0C,\r
+0xED,0xE0,0xFC,0xA3,0xE0,0xD3,0x94,0xC0,0xEC,0x64,0x80,0x94,0x83,0x40,0x0B,0xEF,\r
+0x12,0x0C,0xED,0xE4,0x75,0xF0,0x08,0x02,0x29,0xC1,0xEF,0x12,0x0C,0xED,0xE0,0xFC,\r
+0xA3,0xE0,0xD3,0x94,0xAC,0xEC,0x64,0x80,0x94,0x83,0x40,0x0B,0xEF,0x12,0x0C,0xED,\r
+0xE4,0x75,0xF0,0x06,0x02,0x29,0xC1,0xEF,0x12,0x0C,0xED,0xE0,0xFC,0xA3,0xE0,0xD3,\r
+0x94,0xA2,0xEC,0x64,0x80,0x94,0x83,0x40,0x0A,0xEF,0x12,0x0C,0xED,0xE4,0x75,0xF0,\r
+0x04,0x80,0x3E,0xEF,0x12,0x0C,0xED,0xE0,0xFC,0xA3,0xE0,0xD3,0x94,0x98,0xEC,0x64,\r
+0x80,0x94,0x83,0x40,0x0A,0xEF,0x12,0x0C,0xED,0xE4,0x75,0xF0,0x02,0x80,0x22,0xEF,\r
+0x12,0x0C,0xED,0xE0,0xFC,0xA3,0xE0,0xD3,0x94,0x8E,0xEC,0x64,0x80,0x94,0x83,0xEF,\r
+0x40,0x09,0x12,0x0C,0xED,0xE4,0x75,0xF0,0x01,0x80,0x06,0x12,0x0C,0xED,0xE4,0xF5,\r
+0xF0,0x12,0x13,0x3B,0x22,0xC2,0x04,0xE4,0x90,0x08,0xF9,0xF0,0x90,0x08,0xF9,0xE0,\r
+0xFF,0xC3,0x94,0x0D,0x40,0x03,0x02,0x2A,0x8E,0xE4,0xF9,0xEF,0x75,0xF0,0x02,0xA4,\r
+0xFD,0xAC,0xF0,0x24,0x84,0x12,0x20,0x2D,0x90,0x08,0xFA,0xF0,0xA3,0xEF,0xF0,0xE0,\r
+0x24,0xD8,0xF0,0x90,0x08,0xFA,0xE0,0x34,0xFF,0xF0,0x09,0x90,0x08,0xF9,0xE0,0x75,\r
+0xF0,0x02,0xA4,0xFB,0xAA,0xF0,0xE9,0x75,0xF0,0x1A,0xA4,0x2B,0xFD,0xE5,0xF0,0x3A,\r
+0xFC,0x74,0x84,0x2D,0x12,0x20,0x2D,0x90,0x08,0xFC,0xF0,0xA3,0xEF,0xF0,0x90,0x08,\r
+0xF9,0xE0,0xB4,0x02,0x12,0xE9,0xB4,0x03,0x0E,0x90,0x08,0xFD,0xE0,0x24,0xC9,0xF0,\r
+0x90,0x08,0xFC,0xE0,0x34,0xFF,0xF0,0x90,0x08,0xFC,0xE0,0xFE,0xA3,0xE0,0x90,0x08,\r
+0xFA,0x12,0x20,0x22,0x40,0x0D,0xEB,0x9F,0xFF,0xEA,0x12,0x21,0x3D,0x40,0x1E,0xD2,\r
+0x04,0x80,0x1A,0x90,0x08,0xFA,0xE0,0xFE,0xA3,0xE0,0xFF,0xC3,0x90,0x08,0xFD,0xE0,\r
+0x9F,0xFF,0x90,0x08,0xFC,0xE0,0x12,0x21,0x3D,0x40,0x02,0xD2,0x04,0x90,0x08,0xFC,\r
+0xE0,0xFF,0xA3,0xE0,0x90,0x08,0xFA,0xCF,0xF0,0xA3,0xEF,0xF0,0x09,0xE9,0x64,0x11,\r
+0x60,0x03,0x02,0x29,0xFB,0x90,0x08,0xF9,0xE0,0x04,0xF0,0x02,0x29,0xCC,0x75,0x9E,\r
+0x55,0x22,0xC2,0x00,0xC2,0x0B,0xC2,0x13,0xC2,0x18,0xC2,0x08,0xC2,0x09,0xC2,0x06,\r
+0xC2,0x10,0xD2,0x01,0xC2,0x03,0xE4,0x90,0x0B,0x8E,0xF0,0x90,0x09,0x00,0xF0,0x90,\r
+0x0C,0x20,0x12,0x27,0x08,0x90,0x0B,0x57,0x74,0x05,0x12,0x27,0x08,0xE4,0x90,0x0B,\r
+0x4A,0x12,0x27,0x08,0xC2,0x0A,0x90,0x0B,0xC2,0xF0,0xA3,0xF0,0x90,0x0F,0xFC,0x74,\r
+0x20,0xF0,0x12,0x27,0xA2,0xF5,0x08,0xF5,0x09,0x90,0x0B,0xF6,0xF0,0xA3,0xF0,0x90,\r
+0x0B,0x3A,0x74,0xFF,0xF0,0x90,0x0F,0x2A,0x74,0x05,0x12,0x27,0xCA,0x74,0x8A,0xF0,\r
+0x90,0x0F,0x2E,0x74,0x02,0xF0,0xE4,0x90,0xF0,0x61,0xF0,0x75,0x8A,0x0F,0xF5,0x8B,\r
+0x90,0x0B,0x63,0xF0,0xC2,0x0F,0x90,0x0F,0xE6,0x74,0x32,0xF0,0xA3,0x74,0x1E,0xF0,\r
+0xE4,0xA3,0xF0,0xA3,0xF0,0xC2,0x14,0xD2,0x19,0xC2,0x0E,0xC2,0x07,0x90,0x0B,0x45,\r
+0xF0,0xA3,0xF0,0x90,0x0B,0x8C,0xF0,0xA3,0xF0,0x90,0x0B,0x8F,0xF0,0xFF,0x74,0x2D,\r
+0x2F,0xF5,0x82,0xE4,0x34,0x0C,0xF5,0x83,0xE4,0xF0,0xEF,0x25,0xE0,0x24,0x26,0xF5,\r
+0x82,0xE4,0x34,0x0B,0xF5,0x83,0xE4,0xF0,0xA3,0xF0,0x74,0x3B,0x2F,0xF5,0x82,0xE4,\r
+0x34,0x0B,0xF5,0x83,0xE4,0xF0,0x0F,0xEF,0xB4,0x0A,0xD3,0x22,0xE4,0x90,0x08,0xC6,\r
+0xF0,0xA3,0xF0,0x90,0x08,0xC3,0xF0,0xA3,0xF0,0xFC,0x75,0x9E,0x55,0xEC,0x75,0xF0,\r
+0x80,0xA4,0xFF,0x90,0x08,0xC3,0xE5,0xF0,0xF0,0xA3,0xEF,0xF0,0xE4,0xFB,0x90,0x08,\r
+0xC3,0xE0,0xA3,0xA3,0xF0,0x90,0x08,0xC3,0xA3,0xE0,0xF9,0xE4,0xFD,0xFA,0x90,0x08,\r
+0xC3,0xE0,0xFE,0xA3,0xE0,0xFF,0x12,0x2F,0x40,0xEF,0x2D,0xFD,0x90,0x08,0xC4,0xE0,\r
+0x04,0xF0,0x70,0x06,0x90,0x08,0xC3,0xE0,0x04,0xF0,0x0A,0xEA,0xB4,0x08,0xDF,0x90,\r
+0x08,0xC5,0xE0,0x2D,0x29,0x24,0x08,0xF4,0x04,0xFD,0xFF,0x90,0x08,0xC7,0xE0,0x2F,\r
+0xF0,0x90,0x08,0xC6,0xE0,0x34,0x00,0xF0,0x0B,0xEB,0xB4,0x10,0xB1,0x0C,0xEC,0xB4,\r
+0x80,0x98,0x90,0x08,0xC6,0xE0,0xFA,0xA3,0xE0,0xFB,0xEA,0x90,0x0A,0x0D,0xF0,0xEB,\r
+0xA3,0xF0,0x90,0x0A,0x0B,0x74,0xAA,0xF0,0x75,0x9E,0x55,0x80,0xFB,0x20,0x01,0x03,\r
+0x02,0x2C,0x72,0x90,0x0A,0x00,0x74,0xF5,0x12,0x20,0x7E,0x24,0x00,0xF5,0x82,0xE5,\r
+0xF0,0x34,0x00,0xF5,0x83,0xE0,0x90,0x0A,0x01,0x12,0x20,0x7E,0x24,0x01,0xF5,0x82,\r
+0xE5,0xF0,0x34,0x00,0xF5,0x83,0xE0,0x90,0x0A,0x02,0x12,0x20,0x7E,0x24,0x84,0xF5,\r
+0x82,0xE5,0xF0,0x34,0x03,0xF5,0x83,0xE0,0x90,0x0A,0x03,0x12,0x20,0x7E,0x24,0x85,\r
+0xF5,0x82,0xE5,0xF0,0x34,0x03,0xF5,0x83,0xE0,0x90,0x0A,0x04,0xF0,0xD2,0xD8,0x30,\r
+0xD9,0x0B,0x74,0xA3,0x25,0x0C,0xF5,0x82,0xE4,0x34,0x02,0x80,0x09,0x74,0xC2,0x25,\r
+0x0C,0xF5,0x82,0xE4,0x34,0x01,0xF5,0x83,0xE0,0x90,0x0A,0x05,0xF0,0xC2,0x01,0xC2,\r
+0xC4,0x7F,0x64,0x7E,0x00,0x12,0x2F,0x02,0xD2,0xC4,0x90,0xF0,0x1F,0x74,0x01,0xF0,\r
+0xD2,0x03,0x22,0xE4,0xFD,0xFC,0xF9,0x90,0x0B,0x48,0xF0,0x12,0x1F,0xB5,0x50,0x3E,\r
+0x30,0xD9,0x08,0x12,0x1F,0x62,0x12,0x20,0x02,0x80,0x06,0x12,0x1F,0x73,0x12,0x20,\r
+0x0D,0xF5,0x83,0xE0,0xF5,0xCC,0xD2,0xDA,0x30,0xDA,0x05,0x75,0x9E,0x55,0x80,0xF8,\r
+0x12,0x21,0x21,0xE5,0xCA,0xF0,0x12,0x21,0x21,0xE0,0xFF,0x90,0x0B,0x48,0xE0,0xFE,\r
+0xEF,0xD3,0x9E,0x40,0x04,0xEF,0xF0,0xA9,0x04,0x0C,0x0D,0x0D,0x80,0xBD,0x90,0x0B,\r
+0x48,0xE0,0xFF,0xC3,0x94,0x96,0x40,0x0D,0xEC,0xD3,0x94,0x01,0x40,0x07,0x90,0xF0,\r
+0x32,0x74,0x2D,0xF0,0x22,0xEF,0xC3,0x94,0x6E,0x40,0x0D,0xEC,0xD3,0x94,0x01,0x40,\r
+0x07,0x90,0xF0,0x32,0x74,0x23,0xF0,0x22,0x90,0xF0,0x32,0x74,0x1E,0xF0,0x22,0x20,\r
+0xFA,0x10,0x90,0xF0,0x36,0xE0,0x20,0xE0,0x09,0xE0,0x30,0xE2,0x05,0x75,0x9E,0x55,\r
+0x80,0xED,0x90,0xF0,0x36,0x74,0x46,0xF0,0x30,0xF9,0x08,0x74,0x05,0x12,0x20,0xFF,\r
+0xC2,0x18,0x22,0x30,0xF8,0x03,0xD2,0x13,0x22,0x90,0x0B,0x49,0x74,0x64,0xF0,0x90,\r
+0xF0,0x51,0xE0,0xD3,0x94,0x00,0x40,0x07,0x90,0xF0,0x36,0xE0,0x44,0x10,0xF0,0x90,\r
+0xF0,0x50,0xE0,0xD3,0x94,0x00,0x40,0x07,0x90,0xF0,0x36,0xE0,0x44,0x08,0xF0,0x22,\r
+0x90,0xF0,0x33,0xE0,0x90,0x09,0x00,0xF0,0xE0,0xD3,0x94,0x05,0x40,0x03,0x74,0x05,\r
+0xF0,0x20,0xF8,0x23,0xE5,0x09,0x45,0x08,0x70,0x1D,0xC3,0x90,0x0B,0xF7,0xE0,0x95,\r
+0x0B,0x90,0x0B,0xF6,0xE0,0x95,0x0A,0x50,0x15,0xA3,0xE0,0x04,0xF0,0x70,0x0F,0x90,\r
+0x0B,0xF6,0xE0,0x04,0xF0,0x80,0x07,0xE4,0x90,0x0B,0xF6,0xF0,0xA3,0xF0,0xD2,0xD8,\r
+0x90,0xF0,0x1F,0x74,0x01,0xF0,0x22,0xE5,0xC9,0x30,0xE3,0x02,0x80,0x22,0xE5,0xC9,\r
+0x30,0xE0,0x1D,0xE4,0x90,0xF0,0x61,0xF0,0xE5,0xC9,0x30,0xE4,0x0B,0x20,0xC4,0x03,\r
+0x75,0x9E,0x55,0x12,0x25,0xA5,0x80,0x17,0x90,0xF0,0x60,0x74,0xD1,0xF0,0x80,0x0F,\r
+0x12,0x2A,0x92,0x12,0x2F,0x37,0x12,0x25,0xA5,0x12,0x2F,0x2E,0x12,0x2E,0xCF,0xE4,\r
+0xF5,0xC9,0x22,0x90,0x08,0xCE,0xEF,0xF0,0xE4,0xF5,0xAE,0x75,0xAF,0x20,0xED,0xF5,\r
+0xAB,0xEC,0xFF,0x8F,0xAA,0xEB,0xF5,0xAD,0xEA,0xFF,0x8F,0xAC,0x75,0xA9,0x01,0xE5,\r
+0xA9,0xB4,0x01,0x05,0x75,0x9E,0x55,0x80,0xF6,0xAF,0xA6,0xEF,0xFE,0xAD,0xA7,0x7C,\r
+0x00,0xE4,0x2D,0xFF,0xEC,0x3E,0xFE,0x22,0x12,0x2F,0x14,0x75,0x80,0xFF,0x75,0x90,\r
+0xFF,0x75,0xA0,0xFF,0x75,0xB0,0xFF,0x90,0x0F,0xF0,0x12,0x26,0xD6,0x90,0x0F,0xF0,\r
+0xE5,0x80,0xF0,0xA3,0xE5,0x90,0xF0,0xA3,0xE5,0xA0,0xF0,0xA3,0xE5,0xB0,0xF0,0x90,\r
+0x0F,0xFD,0x74,0xBB,0xF0,0x22,0xE5,0xC9,0x54,0x02,0x60,0x06,0x78,0xFF,0xE4,0xF6,\r
+0xD8,0xFD,0xE5,0xC9,0x54,0x02,0x60,0x11,0x90,0x00,0x00,0x7F,0x00,0x7E,0x10,0xE4,\r
+0xF0,0xA3,0x75,0x9E,0x55,0xDF,0xF9,0xDE,0xF7,0x02,0x21,0x47,0x00,0x00,0x90,0x0F,\r
+0xFD,0x74,0xBB,0xF0,0x90,0x0A,0x01,0xE0,0x64,0xAA,0x60,0x05,0x75,0x9E,0x55,0x80,\r
+0xF3,0xE4,0x90,0x0A,0x01,0xF0,0x90,0x0F,0xFD,0xF0,0xD2,0xD8,0x90,0xF0,0x1F,0x04,\r
+0xF0,0xD2,0x03,0x22,0x00,0x00,0x00,0x50,0x00,0xA0,0x00,0xF0,0x01,0x40,0x01,0x90,\r
+0x01,0xE0,0x02,0x30,0x02,0x80,0x02,0xD0,0x03,0x20,0x03,0x70,0x03,0xC0,0x04,0x10,\r
+0x04,0x60,0x04,0x88,0x01,0x02,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x00,0x50,\r
+0x00,0x5A,0x00,0x64,0x00,0x64,0x00,0x64,0x00,0x64,0x00,0x64,0x00,0x64,0x00,0x64,\r
+0x00,0x64,0x30,0x98,0x04,0xD2,0x08,0xC2,0x98,0x30,0x99,0x12,0xD2,0x09,0xC2,0x99,\r
+0xD2,0x01,0x30,0x0E,0x05,0xB2,0x14,0xC2,0x0E,0x32,0xD2,0x19,0xC2,0x0F,0x32,0x90,\r
+0x0F,0x2C,0xE0,0x54,0x0F,0x25,0xE0,0x24,0x74,0xF5,0x82,0xE4,0x34,0x2E,0xF5,0x83,\r
+0xE4,0x93,0xF5,0x0A,0x74,0x01,0x93,0xF5,0x0B,0x22,0xC0,0xE0,0xC0,0x83,0xC0,0x82,\r
+0xB2,0xC3,0xD2,0x00,0x90,0xF0,0x1F,0xE4,0xF0,0xC2,0xD8,0xD0,0x82,0xD0,0x83,0xD0,\r
+0xE0,0x32,0xEF,0x1F,0x70,0x01,0x1E,0x75,0x9E,0x55,0xD3,0xEF,0x94,0x00,0xEE,0x94,\r
+0x00,0x50,0xEF,0x22,0x90,0xF0,0x01,0x12,0x26,0xD6,0xA3,0x12,0x26,0xD7,0x12,0x26,\r
+0xE2,0x22,0xEE,0x30,0xE7,0x07,0xC3,0xE4,0x9F,0xFF,0xE4,0x9E,0xFE,0x22,0x75,0x91,\r
+0x01,0x75,0x89,0x01,0xD2,0xAC,0x22,0x75,0x86,0x08,0x75,0x84,0x9C,0xC2,0xA9,0x22,\r
+0x8F,0x82,0x8E,0x83,0xE4,0x93,0xFF,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+0x90,0x0F,0x2A,0x74,0x05,0xF0,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\r
+};\r
index 5a02355f48ba4d65992748fbb1a3111466d7974d..ca5f691466ef904bce1bc90911ca52654b1682b4 100755 (executable)
@@ -152,7 +152,7 @@ static int ts_init(struct ts_private_data *ts)
        u8 rd_cfg_buf[2];\r
        \r
        //init some register    \r
-       result = ts_bulk_read(ts, ts->ops->version_reg, 1, (unsigned short *)rd_cfg_buf);\r
+       result = ts_bulk_read(ts, ts->ops->version_reg, 1, rd_cfg_buf);\r
        if(result < 0)\r
        {\r
                printk("%s:fail to read rd_cfg_buf\n",__func__);\r
@@ -182,7 +182,7 @@ static int ts_init(struct ts_private_data *ts)
                config[TRIGGER_LOC+2] |= 0x08;\r
        }\r
        \r
-       result = ts_bulk_write(ts, GTP_REG_CONFIG_DATA, GTP_CONFIG_LENGTH, (unsigned short *)config);\r
+       result = ts_bulk_write(ts, GTP_REG_CONFIG_DATA, GTP_CONFIG_LENGTH, config);\r
        if(result < 0)\r
        {\r
                printk("%s:fail to send config data\n",__func__);\r
@@ -197,7 +197,7 @@ static int ts_init(struct ts_private_data *ts)
        }\r
 \r
        //read version\r
-       result = ts_bulk_read(ts, ts->ops->version_reg, 4, (unsigned short *)version_data);\r
+       result = ts_bulk_read(ts, ts->ops->version_reg, 4, version_data);\r
        if(result < 0)\r
        {\r
                printk("%s:fail to init ts\n",__func__);\r
@@ -227,7 +227,7 @@ static int ts_report_value(struct ts_private_data *ts)
        int finger = 0;\r
        int checksum = 0;\r
 \r
-       result = ts_bulk_read(ts, ts->ops->read_reg, ts->ops->read_len, (unsigned short *)buf);\r
+       result = ts_bulk_read(ts, ts->ops->read_reg, ts->ops->read_len, buf);\r
        if(result < 0)\r
        {\r
                printk("%s:fail to init ts\n",__func__);\r
index 2751d6de3f2e763e0955bd8e42be4ba9dedd7669..af98f482d9cfbacfdcebfb0aa6ce50fce20b643f 100755 (executable)
@@ -80,7 +80,7 @@ EXPORT_SYMBOL_GPL(ts_reg_read);
  * @buf: Buffer to fill.\r
  */\r
 int ts_bulk_read(struct ts_private_data *ts, unsigned short reg,\r
-                    int count, u16 *buf)\r
+                    int count, unsigned char *buf)\r
 {\r
        int ret;\r
 \r
@@ -119,7 +119,7 @@ EXPORT_SYMBOL_GPL(ts_reg_write);
 \r
 \r
 int ts_bulk_write(struct ts_private_data *ts, unsigned short reg,\r
-                    int count, u16 *buf)\r
+                    int count, unsigned char *buf)\r
 {\r
        int ret;\r
 \r
@@ -134,6 +134,7 @@ int ts_bulk_write(struct ts_private_data *ts, unsigned short reg,
 EXPORT_SYMBOL_GPL(ts_bulk_write);\r
 \r
 \r
+\r
 /**\r
  * ts_set_bits: Set the value of a bitfield in a ts register\r
  *\r
@@ -404,11 +405,11 @@ static int ts_irq_init(struct ts_private_data *ts)
                if(ts->ops->poll_delay_ms < 0)\r
                        ts->ops->poll_delay_ms = 30;\r
                \r
-               result = gpio_request(ts->irq, ts->i2c_id->name);\r
-               if (result)\r
-               {\r
-                       printk("%s:fail to request gpio :%d\n",__func__,ts->irq);\r
-               }\r
+               //result = gpio_request(ts->irq, ts->i2c_id->name);\r
+               //if (result)\r
+               //{\r
+               //      printk("%s:fail to request gpio :%d\n",__func__,ts->irq);\r
+               //}\r
        \r
                gpio_pull_updown(ts->irq, PullEnable);\r
                irq = gpio_to_irq(ts->irq);\r
index e2031157157d2f78c3ab146adde8ef1fc0817009..fe56136d7ee60b785071e0740e44b0572c24d095 100755 (executable)
@@ -45,7 +45,7 @@
 static int ts_i2c_read_device(struct ts_private_data *ts, unsigned short reg,\r
                                  int bytes, void *dest, int reg_size)\r
 {\r
-       const struct i2c_client *client = ts->control_data;\r
+       struct i2c_client *client = ts->control_data;\r
        struct i2c_adapter *i2c_adap = client->adapter;\r
        struct i2c_msg msgs[2];\r
        int i,res;\r
@@ -55,6 +55,8 @@ static int ts_i2c_read_device(struct ts_private_data *ts, unsigned short reg,
                return -EINVAL;\r
        }\r
 \r
+       client->addr = ts->ops->slave_addr;\r
+\r
        msgs[0].addr = client->addr;\r
        msgs[0].flags = 0;      /* write */\r
        msgs[0].buf = (unsigned char *)&reg;\r
@@ -95,7 +97,7 @@ static int ts_i2c_read_device(struct ts_private_data *ts, unsigned short reg,
 static int ts_i2c_write_device(struct ts_private_data *ts, unsigned short reg,\r
                                   int bytes, void *src, int reg_size)\r
 {\r
-       const struct i2c_client *client = ts->control_data;\r
+       struct i2c_client *client = ts->control_data;\r
        struct i2c_adapter *i2c_adap = client->adapter;\r
        struct i2c_msg msgs[1];\r
        int res;\r
@@ -105,6 +107,9 @@ static int ts_i2c_write_device(struct ts_private_data *ts, unsigned short reg,
                printk("%s:line=%d,error\n",__func__,__LINE__);\r
                return -EINVAL;\r
        }\r
+\r
+       \r
+       client->addr = ts->ops->slave_addr;\r
        \r
        if(ts->ops->reg_size == 2)\r
        {\r
@@ -134,7 +139,10 @@ static int ts_i2c_write_device(struct ts_private_data *ts, unsigned short reg,
        msgs[0].addr = client->addr;\r
        msgs[0].flags = 0;      /* write */\r
        msgs[0].buf = buf;\r
-       msgs[0].len = bytes;\r
+       if(ts->ops->reg_size  == 2)             \r
+       msgs[0].len = bytes+2;\r
+       else    \r
+       msgs[0].len = bytes+1;  \r
        msgs[0].scl_rate = TS_I2C_RATE;\r
 \r
        res = i2c_transfer(i2c_adap, msgs, 1);\r
@@ -147,6 +155,44 @@ static int ts_i2c_write_device(struct ts_private_data *ts, unsigned short reg,
                        \r
 }\r
 \r
+int ts_bulk_read_normal(struct ts_private_data *ts,\r
+                    int count, unsigned char *buf, int rate)\r
+{\r
+       int ret;\r
+       unsigned short reg;\r
+       struct i2c_client *client = ts->control_data;\r
+       client->addr = ts->ops->slave_addr;\r
+       \r
+       mutex_lock(&ts->io_lock);\r
+       ret = i2c_master_normal_recv(client, buf, count, rate);\r
+       if(ret == 1)\r
+               ret = 0;\r
+       mutex_unlock(&ts->io_lock);\r
+\r
+       return ret;\r
+}\r
+EXPORT_SYMBOL_GPL(ts_bulk_read_normal);\r
+\r
+\r
+int ts_bulk_write_normal(struct ts_private_data *ts, int count, unsigned char *buf, int rate)\r
+{\r
+       int ret;\r
+       unsigned short reg;\r
+       struct i2c_client *client = ts->control_data;\r
+       client->addr = ts->ops->slave_addr;\r
+       \r
+       mutex_lock(&ts->io_lock);\r
+       ret = i2c_master_normal_send(client, buf, count, rate);\r
+       if(ret == 1)\r
+               ret = 0;\r
+       mutex_unlock(&ts->io_lock);\r
+\r
+       return ret;\r
+}\r
+EXPORT_SYMBOL_GPL(ts_bulk_write_normal);\r
+\r
+\r
+\r
 #ifdef CONFIG_HAS_EARLYSUSPEND\r
 static void ts_suspend(struct early_suspend *h)\r
 {\r
diff --git a/drivers/input/ts/ts-serial.c b/drivers/input/ts/ts-serial.c
new file mode 100755 (executable)
index 0000000..267e9b7
--- /dev/null
@@ -0,0 +1 @@
+//to do\r
diff --git a/drivers/input/ts/ts-spi.c b/drivers/input/ts/ts-spi.c
new file mode 100755 (executable)
index 0000000..267e9b7
--- /dev/null
@@ -0,0 +1 @@
+//to do\r
index 16af64fe8414bfb6f29a90f36b2a830dae154786..c5cec24cab9a879e1c8cb63737f1e7caa74a3ddb 100755 (executable)
@@ -533,63 +533,6 @@ void bp_shutdown(struct platform_device *pdev)
        if(bp->ops->shutdown)\r
                bp->ops->shutdown(bp);\r
        \r
-       if(bp->ops->bp_power != BP_UNKNOW_DATA)\r
-       {\r
-               gpio_free(bp->ops->bp_power);   \r
-       }\r
-       \r
-       if(bp->ops->bp_en != BP_UNKNOW_DATA)\r
-       {\r
-               gpio_free(bp->ops->bp_en);\r
-               \r
-       }\r
-\r
-       if(bp->ops->bp_reset != BP_UNKNOW_DATA)\r
-       {\r
-               gpio_free(bp->ops->bp_reset);   \r
-       }\r
-       \r
-       if(bp->ops->ap_ready != BP_UNKNOW_DATA)\r
-       {\r
-               gpio_free(bp->ops->ap_ready);\r
-               \r
-       }\r
-       \r
-       if(bp->ops->bp_ready != BP_UNKNOW_DATA)\r
-       {\r
-               gpio_free(bp->ops->bp_ready);\r
-               \r
-       }\r
-       \r
-       if(bp->ops->ap_wakeup_bp != BP_UNKNOW_DATA)\r
-       {\r
-               gpio_free(bp->ops->ap_wakeup_bp);\r
-               \r
-       }\r
-       \r
-       if(bp->ops->bp_wakeup_ap != BP_UNKNOW_DATA)\r
-       {\r
-               gpio_free(bp->ops->bp_wakeup_ap);\r
-               \r
-       }\r
-       \r
-       if(bp->ops->bp_usb_en != BP_UNKNOW_DATA)\r
-       {\r
-               gpio_free(bp->ops->bp_usb_en);\r
-               \r
-       }\r
-       \r
-       if(bp->ops->bp_uart_en != BP_UNKNOW_DATA)\r
-       {\r
-               gpio_free(bp->ops->bp_uart_en);\r
-               \r
-       }\r
-       \r
-       if(bp->pdata->exit_platform_hw)\r
-               bp->pdata->exit_platform_hw();\r
-       \r
-       kfree(bp);\r
-       \r
 }\r
 \r
 \r
index 4e9a9f1be65c3e787193e35ef9f5d6a707f7d11f..f3c877625154a9a2b33776a7c2e420486e5ec67d 100755 (executable)
@@ -82,7 +82,7 @@ static int ap_wake_bp(struct bp_private_data *bp, int wake)
        }\r
        else\r
        {\r
-               gpio_direction_output(bp->ops->bp_usb_en, GPIO_HIGH);\r
+               gpio_direction_output(bp->ops->bp_usb_en, GPIO_LOW);\r
                gpio_direction_output(bp->ops->bp_uart_en, GPIO_HIGH);  \r
                gpio_direction_output(bp->ops->ap_ready, GPIO_LOW);\r
        }\r
index eb7f76f3327fbfa18a7e3f88b800ff3250e4cb99..fe1f35634637a5ecffcf5d2d294975f3ef0c048e 100755 (executable)
@@ -53,19 +53,19 @@ static struct usb_driver usb_serial_driver = {
        .no_dynamic_id =        1,
        .supports_autosuspend = 1,
 };
-#ifdef CONFIG_MU509
+#if defined(CONFIG_MU509) || defined(CONFIG_BP_AUTO_MU509)
 static int MU509_USB = 0;
 #define MU509_USB_PORT     (SERIAL_TTY_MINORS - 10)
 #endif
-#ifdef CONFIG_MW100
+#if defined(CONFIG_MW100) || defined(CONFIG_BP_AUTO_MW100)
 static int MW100_USB = 0;
 #define MW100_USB_PORT     (SERIAL_TTY_MINORS - 10)
 #endif
-#ifdef CONFIG_MT6229
+#if defined(CONFIG_MT6229) || defined(CONFIG_BP_AUTO_MT6229)
 static int MT6229_USB = 0;
 #define MT6229_USB_PORT     (SERIAL_TTY_MINORS - 10)
 #endif
-#ifdef CONFIG_SEW868
+#if defined(CONFIG_SEW868) || defined(CONFIG_BP_AUTO_SEW868)
 static int SEW868_USB = 0;
 #define SEW868_USB_PORT     (SERIAL_TTY_MINORS - 10)
 #endif
@@ -119,19 +119,19 @@ static struct usb_serial *get_free_serial(struct usb_serial *serial,
 
        *minor = 0;
        mutex_lock(&table_lock);
-#ifdef CONFIG_MU509
+#if defined(CONFIG_MU509) || defined(CONFIG_BP_AUTO_MU509)
        if (MU509_USB)
                a= MU509_USB_PORT;
 #endif
-#ifdef CONFIG_MW100    
+#if defined(CONFIG_MW100) || defined(CONFIG_BP_AUTO_MW100)
        if (MW100_USB)          
                a= MW100_USB_PORT;
 #endif
-#ifdef CONFIG_MT6229   
+#if defined(CONFIG_MT6229) || defined(CONFIG_BP_AUTO_MT6229)
        if (MT6229_USB)         
                a= MT6229_USB_PORT;
 #endif
-#ifdef CONFIG_SEW868   
+#if defined(CONFIG_SEW868) || defined(CONFIG_BP_AUTO_SEW868)
        if (SEW868_USB)         
                a= SEW868_USB_PORT;
 #endif
@@ -1093,25 +1093,25 @@ int usb_serial_probe(struct usb_interface *interface,
        } else {
                serial->attached = 1;
        }
-#ifdef CONFIG_MU509
+#if defined(CONFIG_MU509) || defined(CONFIG_BP_AUTO_MU509)
                if ((le16_to_cpu(dev->descriptor.idVendor) == 0x12D1 ) && (le16_to_cpu(dev->descriptor.idProduct) == 0x1001))
                        MU509_USB =1;
                else
                        MU509_USB = 0;
 #endif
-#ifdef CONFIG_MW100            
+#if defined(CONFIG_MW100) || defined(CONFIG_BP_AUTO_MW100)
        if ((le16_to_cpu(dev->descriptor.idVendor) == 0x19f5) && (le16_to_cpu(dev->descriptor.idProduct) == 0x9013))                    
                MW100_USB =1;           
        else                    
                MW100_USB = 0;
 #endif
-#ifdef CONFIG_MT6229           
+#if defined(CONFIG_MT6229) || defined(CONFIG_BP_AUTO_MT6229)
        if ((le16_to_cpu(dev->descriptor.idVendor) == 0x0E8D) && (le16_to_cpu(dev->descriptor.idProduct) == 0x00A2))                    
                MT6229_USB =1;          
        else                    
                MT6229_USB = 0;
 #endif
-#ifdef CONFIG_SEW868           
+#if defined(CONFIG_SEW868) || defined(CONFIG_BP_AUTO_SEW868)
        if ((le16_to_cpu(dev->descriptor.idVendor) == 0x19d2) && (le16_to_cpu(dev->descriptor.idProduct) == 0xffeb))                    
                SEW868_USB =1;          
        else                    
index a23b6e7d08001a3eae1948c3ebc36de015c10a6c..7b4efd11751737a736666a23e9f944b2a11ecf14 100755 (executable)
 #include <linux/ts-auto.h>\r
 #include "screen.h"\r
 \r
+#include <linux/rk_board_id.h>\r
+\r
+\r
 extern struct rk29_bl_info rk29_bl_info;\r
 \r
 \r
 //FOR ID0\r
 /* Base */\r
 #define OUT_TYPE_ID0                   SCREEN_RGB\r
+\r
 #define OUT_FACE_ID0                   OUT_P888\r
 #define OUT_CLK_ID0                    71000000\r
-#define LCDC_ACLK_ID0                  300000000     //29 lcdc axi DMA ÆµÂÊ\r
+#define LCDC_ACLK_ID0                  500000000//312000000           //29 lcdc axi DMA ÆµÂÊ\r
+\r
+/* Timing */\r
+#define H_PW_ID0                       100\r
+#define H_BP_ID0                       100\r
+#define H_VD_ID0                       1024\r
+#define H_FP_ID0                       120\r
+\r
+#define V_PW_ID0                       10\r
+#define V_BP_ID0                       10\r
+#define V_VD_ID0                       600\r
+#define V_FP_ID0                       15\r
+\r
+#define LCD_WIDTH_ID0                  202\r
+#define LCD_HEIGHT_ID0                 152\r
+/* Other */\r
+#define DCLK_POL_ID0                   0\r
+#define SWAP_RB_ID0                    0   \r
+\r
+//FOR ID1\r
+/* Base */\r
+#define OUT_TYPE_ID1                   SCREEN_RGB\r
+#define OUT_FACE_ID1                   OUT_P888\r
+#define OUT_CLK_ID1                    71000000\r
+#define LCDC_ACLK_ID1                  500000000\r
 \r
 /* Timing */\r
-#define H_PW_ID0                       10\r
-#define H_BP_ID0                       64\r
-#define H_VD_ID0                       800\r
-#define H_FP_ID0                       16\r
+#define H_PW_ID1                       10\r
+#define H_BP_ID1                       160\r
+#define H_VD_ID1                       1024\r
+#define H_FP_ID1                       16\r
 \r
-#define V_PW_ID0                       3\r
-#define V_BP_ID0                       8\r
-#define V_VD_ID0                       1280\r
-#define V_FP_ID0                       10\r
+#define V_PW_ID1                       3\r
+#define V_BP_ID1                       23\r
+#define V_VD_ID1                       768\r
+#define V_FP_ID1                       12\r
 \r
 \r
 /* Other */\r
-#define DCLK_POL_ID0                   0\r
-#define SWAP_RB_ID0                    0\r
+#define DCLK_POL_ID1                   0\r
+#define SWAP_RB_ID1                    0\r
 \r
-#define LCD_WIDTH_ID0                  152\r
-#define LCD_HEIGHT_ID0                 202\r
+#define LCD_WIDTH_ID1                  270\r
+#define LCD_HEIGHT_ID1                 202\r
 \r
 \r
 \r
@@ -80,7 +108,7 @@ extern struct rk29_bl_info rk29_bl_info;
 #define DCLK_POL_ID2                   0\r
 #define SWAP_RB_ID2                    0 \r
 \r
-//FOR ID2\r
+//FOR ID3\r
 /* Base */\r
 #define OUT_TYPE_ID3                   SCREEN_RGB\r
 #define OUT_FACE_ID3                   OUT_P888\r
@@ -106,6 +134,34 @@ extern struct rk29_bl_info rk29_bl_info;
 #define LCD_WIDTH_ID3                  270\r
 #define LCD_HEIGHT_ID3                 202\r
 \r
+\r
+//FOR ID4\r
+/* Base */\r
+#define OUT_TYPE_ID4                   SCREEN_RGB\r
+#define OUT_FACE_ID4                   OUT_P888\r
+#define OUT_CLK_ID4                    71000000\r
+#define LCDC_ACLK_ID4                  300000000     //29 lcdc axi DMA ÆµÂÊ\r
+\r
+/* Timing */\r
+#define H_PW_ID4                       10\r
+#define H_BP_ID4                       64\r
+#define H_VD_ID4                       800\r
+#define H_FP_ID4                       16\r
+\r
+#define V_PW_ID4                       3\r
+#define V_BP_ID4                       8\r
+#define V_VD_ID4                       1280\r
+#define V_FP_ID4                       10\r
+\r
+\r
+/* Other */\r
+#define DCLK_POL_ID4                   0\r
+#define SWAP_RB_ID4                    0\r
+\r
+#define LCD_WIDTH_ID4                  152\r
+#define LCD_HEIGHT_ID4                 202\r
+\r
+\r
 #if defined(CONFIG_TS_AUTO)\r
 extern struct ts_private_data *g_ts;\r
 #else\r
@@ -113,9 +169,9 @@ static struct ts_private_data *g_ts = NULL;
 #endif\r
 \r
 #if defined(CONFIG_RK_BOARD_ID)\r
-extern int rk_get_board_id(void);\r
+extern enum rk_board_id rk_get_board_id(void);\r
 #else\r
-static int rk_get_board_id(void)\r
+static enum rk_board_id rk_get_board_id(void)\r
 {\r
        return -1;\r
 }\r
@@ -136,13 +192,19 @@ static int lcd_get_id(void)
        switch(ts_id)\r
        {\r
                case TS_ID_FT5306:      \r
-                       id = 2;\r
+                       id = BOARD_ID_C8003;\r
                        break;\r
                case TS_ID_GT8110:      \r
-                       id = 3;\r
+                       id = BOARD_ID_C1014;\r
                        break;\r
                case TS_ID_GT828:\r
-                       id = 0;\r
+                       id = BOARD_ID_C7018;\r
+                       break;\r
+               case TS_ID_GT8005:\r
+                       id = BOARD_ID_C8002;\r
+                       break;\r
+               case TS_ID_CT360:\r
+                       id = BOARD_ID_DS763;\r
                        break;\r
                default:\r
                        break;\r
@@ -160,7 +222,7 @@ void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info )
 \r
        switch(id)\r
        {\r
-               case 0:\r
+               case BOARD_ID_DS763:\r
                        \r
                /* screen type & face */\r
                screen->type = OUT_TYPE_ID0;\r
@@ -202,7 +264,48 @@ void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info )
 \r
                break;\r
 \r
-               case 2:\r
+               case BOARD_ID_C8002:\r
+\r
+               /* screen type & face */\r
+               screen->type = OUT_TYPE_ID1;\r
+               screen->face = OUT_FACE_ID1;\r
+\r
+               /* Screen size */\r
+               screen->x_res = H_VD_ID1;\r
+               screen->y_res = V_VD_ID1;\r
+\r
+               screen->width = LCD_WIDTH_ID1;\r
+               screen->height = LCD_HEIGHT_ID1;\r
+\r
+               /* Timing */\r
+               screen->lcdc_aclk = LCDC_ACLK_ID1;\r
+               screen->pixclock = OUT_CLK_ID1;\r
+               screen->left_margin = H_BP_ID1;\r
+               screen->right_margin = H_FP_ID1;\r
+               screen->hsync_len = H_PW_ID1;\r
+               screen->upper_margin = V_BP_ID1;\r
+               screen->lower_margin = V_FP_ID1;\r
+               screen->vsync_len = V_PW_ID1;\r
+\r
+               /* Pin polarity */\r
+               screen->pin_hsync = 0;\r
+               screen->pin_vsync = 0;\r
+               screen->pin_den = 0;\r
+               screen->pin_dclk = DCLK_POL_ID1;\r
+\r
+               /* Swap rule */\r
+               screen->swap_rb = SWAP_RB_ID1;\r
+               screen->swap_rg = 0;\r
+               screen->swap_gb = 0;\r
+               screen->swap_delta = 0;\r
+               screen->swap_dumy = 0;\r
+\r
+               /* Operation function*/\r
+               screen->init = NULL;\r
+               screen->standby = NULL;\r
+               break;\r
+\r
+               case BOARD_ID_C8003:\r
                        \r
                /* screen type & face */\r
                screen->type = OUT_TYPE_ID2;\r
@@ -244,7 +347,7 @@ void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info )
 \r
                break;\r
 \r
-               case 3:\r
+               case BOARD_ID_C1014:\r
                default:\r
                        \r
                /* screen type & face */\r
@@ -287,6 +390,49 @@ void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info )
 \r
                break;\r
 \r
+               case BOARD_ID_C7018:\r
+                       \r
+               /* screen type & face */\r
+               screen->type = OUT_TYPE_ID4;\r
+               screen->face = OUT_FACE_ID4;\r
+\r
+               /* Screen size */\r
+               screen->x_res = H_VD_ID4;\r
+               screen->y_res = V_VD_ID4;\r
+\r
+               screen->width = LCD_WIDTH_ID4;\r
+               screen->height = LCD_HEIGHT_ID4;\r
+\r
+               /* Timing */\r
+               screen->lcdc_aclk = LCDC_ACLK_ID4;\r
+               screen->pixclock = OUT_CLK_ID4;\r
+               screen->left_margin = H_BP_ID4;\r
+               screen->right_margin = H_FP_ID4;\r
+               screen->hsync_len = H_PW_ID4;\r
+               screen->upper_margin = V_BP_ID4;\r
+               screen->lower_margin = V_FP_ID4;\r
+               screen->vsync_len = V_PW_ID4;\r
+\r
+               /* Pin polarity */\r
+               screen->pin_hsync = 0;\r
+               screen->pin_vsync = 0;\r
+               screen->pin_den = 0;\r
+               screen->pin_dclk = DCLK_POL_ID4;\r
+\r
+               /* Swap rule */\r
+               screen->swap_rb = SWAP_RB_ID4;\r
+               screen->swap_rg = 0;\r
+               screen->swap_gb = 0;\r
+               screen->swap_delta = 0;\r
+               screen->swap_dumy = 0;\r
+\r
+               /* Operation function*/\r
+               screen->init = NULL;\r
+               screen->standby = NULL;\r
+\r
+               break;\r
+               \r
+\r
        }\r
 \r
 \r
old mode 100644 (file)
new mode 100755 (executable)
index 6d25e8a..0bb1124
@@ -2,11 +2,11 @@
 enum rk_board_id{\r
        BOARD_ID_INVALID = -1,\r
                \r
-       BOARD_ID_C7018,\r
+       BOARD_ID_DS763 = 0,\r
        BOARD_ID_C8002,\r
        BOARD_ID_C8003,\r
        BOARD_ID_C1014,\r
-       BOARD_ID_DS763,\r
+       BOARD_ID_C7018,\r
        BOARD_ID_TA7CP01,\r
        BOARD_ID_TA9CP01,\r
        BOARD_ID_TA0CP01,\r
index 3acd39865b15bebfa3761f40cb4a06cf123cb059..459a06960d3dde873fd405c5f4810ee56631f936 100755 (executable)
@@ -27,6 +27,7 @@ enum ts_id {
        TS_ID_CT360,\r
        TS_ID_GT8110,\r
        TS_ID_GT828,\r
+       TS_ID_GT8005,\r
        \r
        TS_NUM_ID,\r
 };\r
@@ -136,9 +137,11 @@ extern int ts_reg_read(struct ts_private_data *ts, unsigned short reg);
 extern int ts_reg_write(struct ts_private_data *ts, unsigned short reg,\r
                     unsigned short val);\r
 extern int ts_bulk_read(struct ts_private_data *ts, unsigned short reg,\r
-                    int count, u16 *buf);\r
+                    int count, unsigned char *buf);\r
+extern int ts_bulk_read_normal(struct ts_private_data *ts, int count, unsigned char *buf, int rate);\r
 extern int ts_bulk_write(struct ts_private_data *ts, unsigned short reg,\r
-                    int count, u16 *buf);\r
+                    int count, unsigned char *buf);\r
+extern int ts_bulk_write_normal(struct ts_private_data *ts, int count, unsigned char *buf, int rate);\r
 extern int ts_set_bits(struct ts_private_data *ts, unsigned short reg,\r
                    unsigned short mask, unsigned short val);\r
 extern int ts_device_suspend(struct ts_private_data *ts);\r