diff options
Diffstat (limited to 'drivers/input/keyboard')
-rw-r--r-- | drivers/input/keyboard/cypress/cypress-touchkey.c | 96 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/issp_main.c | 30 | ||||
-rw-r--r-- | drivers/input/keyboard/cypress/touchkey_fw_T0.h | 770 | ||||
-rw-r--r-- | drivers/input/keyboard/gpio_keys.c | 133 | ||||
-rw-r--r-- | drivers/input/keyboard/samsung-keypad.c | 218 |
5 files changed, 1186 insertions, 61 deletions
diff --git a/drivers/input/keyboard/cypress/cypress-touchkey.c b/drivers/input/keyboard/cypress/cypress-touchkey.c index d29d91c..f29fbb0 100644 --- a/drivers/input/keyboard/cypress/cypress-touchkey.c +++ b/drivers/input/keyboard/cypress/cypress-touchkey.c @@ -48,7 +48,7 @@ /* M0 Touchkey temporary setting */ -#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1VZW) +#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_M3) #define CONFIG_MACH_Q1_BD #elif defined(CONFIG_MACH_C1) && !defined(CONFIG_TARGET_LOCALE_KOR) #define CONFIG_MACH_Q1_BD @@ -61,19 +61,21 @@ #define CONFIG_TARGET_LOCALE_NAATT #endif -#if defined(CONFIG_TARGET_LOCALE_NAATT) -static int touchkey_keycode[5] = { 0, - KEY_MENU, KEY_ENTER, KEY_BACK, KEY_END }; -#elif defined(CONFIG_TARGET_LOCALE_NA) -static int touchkey_keycode[5] = { NULL, - KEY_SEARCH, KEY_BACK, KEY_HOME, KEY_MENU }; -#elif defined(CONFIG_MACH_M0) \ - || defined(CONFIG_MACH_C1) \ - || defined(CONFIG_MACH_C1VZW) -static int touchkey_keycode[3] = { 0, KEY_BACK, KEY_MENU,}; +static int touchkey_keycode[] = { 0, +#if defined(TK_USE_4KEY_TYPE_ATT) + KEY_MENU, KEY_ENTER, KEY_BACK, KEY_END, + +#elif defined(TK_USE_4KEY_TYPE_NA) + KEY_SEARCH, KEY_BACK, KEY_HOMEPAGE, KEY_MENU, + +#elif defined(TK_USE_2KEY_TYPE_M0) + KEY_BACK, KEY_MENU, + #else -static int touchkey_keycode[3] = { 0, KEY_MENU, KEY_BACK }; + KEY_MENU, KEY_BACK, + #endif +}; static const int touchkey_count = sizeof(touchkey_keycode) / sizeof(int); struct touchkey_i2c *tkey_i2c_local; @@ -82,8 +84,6 @@ int touch_led_timeout = 3; // timeout for the touchkey backlight in secs int touch_led_disabled = 0; // 1= force disable the touchkey backlight #if defined(TK_HAS_AUTOCAL) -static u8 home_sensitivity; -static u8 search_sensitivity; static u16 raw_data0; static u16 raw_data1; static u16 raw_data2; @@ -117,6 +117,10 @@ static int touchkey_i2c_check(struct touchkey_i2c *tkey_i2c); static u8 menu_sensitivity; static u8 back_sensitivity; +#if defined(TK_USE_4KEY) +static u8 home_sensitivity; +static u8 search_sensitivity; +#endif static int touchkey_enable; static bool touchkey_probe = true; @@ -353,7 +357,8 @@ static ssize_t touchkey_raw_data0_show(struct device *dev, data[18], data[19]); raw_data0 = ((0x00FF & data[18]) << 8) | data[19]; #elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)\ -|| defined(CONFIG_MACH_C1VZW) +|| defined(CONFIG_MACH_M3)\ + || defined(CONFIG_MACH_T0) printk(KERN_DEBUG "called %s data[16] =%d,data[17] = %d\n", __func__, data[16], data[17]); raw_data0 = ((0x00FF & data[16]) << 8) | data[17]; /* menu*/ @@ -383,7 +388,8 @@ static ssize_t touchkey_raw_data1_show(struct device *dev, data[20], data[21]); raw_data1 = ((0x00FF & data[20]) << 8) | data[21]; #elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)\ -|| defined(CONFIG_MACH_C1VZW) +|| defined(CONFIG_MACH_M3)\ + || defined(CONFIG_MACH_T0) printk(KERN_DEBUG "called %s data[14] =%d,data[15] = %d\n", __func__, data[14], data[15]); raw_data1 = ((0x00FF & data[14]) << 8) | data[15]; /*back*/ @@ -552,9 +558,8 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c) tkey_i2c->firmware_ver = data[1]; tkey_i2c->module_ver = data[2]; - #if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1) \ -|| defined(CONFIG_MACH_C1VZW) +|| defined(CONFIG_MACH_M3) || defined(CONFIG_MACH_T0) if ((tkey_i2c->firmware_ver < TK_FIRMWARE_VER) && (tkey_i2c->module_ver <= TK_MODULE_VER)) { #else @@ -589,7 +594,7 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c) "[TouchKey] i2c read fail.\n"); return TK_UPDATE_FAIL; } - +#if defined(CONFIG_TARGET_LOCALE_KOR) ret = i2c_touchkey_read(tkey_i2c->client, KEYCODE_REG, data, 3); if (ret < 0) { printk(KERN_DEBUG @@ -597,6 +602,7 @@ static int touchkey_firmware_update(struct touchkey_i2c *tkey_i2c) } tkey_i2c->firmware_ver = data[1]; tkey_i2c->module_ver = data[2]; +#endif printk(KERN_DEBUG "[TouchKey] firm ver = %d, module ver = %d\n", tkey_i2c->firmware_ver, tkey_i2c->module_ver); } else { @@ -734,8 +740,13 @@ static irqreturn_t touchkey_interrupt(int irq, void *dev_id) input_report_key(tkey_i2c->input_dev, touchkey_keycode[keycode_type], pressed); input_sync(tkey_i2c->input_dev); - /* printk(KERN_DEBUG "[TouchKey] keycode:%d pressed:%d\n", - touchkey_keycode[keycode_index], pressed); */ +#if !defined(CONFIG_SAMSUNG_PRODUCT_SHIP) + printk(KERN_DEBUG "[TouchKey] keycode:%d pressed:%d\n", + touchkey_keycode[keycode_type], pressed); +#else + pr_debug("[TouchKey] pressed:%d\n", + pressed); +#endif #if defined(CONFIG_TARGET_LOCALE_KOR) if (g_debug_tkey == true) { @@ -1094,6 +1105,10 @@ static ssize_t touchkey_led_control(struct device *dev, int ret; static const int ledCmd[] = {TK_CMD_LED_ON, TK_CMD_LED_OFF}; +#if defined(CONFIG_TARGET_LOCALE_KOR) + if (touchkey_probe == false) + return size; +#endif ret = sscanf(buf, "%d", &data); if (ret != 1) { printk(KERN_DEBUG "[TouchKey] %s, %d err\n", @@ -1261,7 +1276,7 @@ void touchscreen_state_report(int state) } } -#if defined(CONFIG_TARGET_LOCALE_NAATT) || defined(CONFIG_TARGET_LOCALE_NA) +#if defined(TK_USE_4KEY) static ssize_t touchkey_menu_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -1375,7 +1390,8 @@ static ssize_t touchkey_menu_show(struct device *dev, { struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev); #if defined(CONFIG_MACH_Q1_BD) \ -|| (defined(CONFIG_MACH_C1) && defined(CONFIG_TARGET_LOCALE_KOR)) +|| (defined(CONFIG_MACH_C1) && defined(CONFIG_TARGET_LOCALE_KOR))\ + || defined(CONFIG_MACH_T0) u8 data[14] = { 0, }; int ret; @@ -1399,7 +1415,8 @@ static ssize_t touchkey_back_show(struct device *dev, { struct touchkey_i2c *tkey_i2c = dev_get_drvdata(dev); #if defined(CONFIG_MACH_Q1_BD) \ -|| (defined(CONFIG_MACH_C1) && defined(CONFIG_TARGET_LOCALE_KOR)) + || (defined(CONFIG_MACH_C1) && defined(CONFIG_TARGET_LOCALE_KOR))\ + || defined(CONFIG_MACH_T0) u8 data[14] = { 0, }; int ret; @@ -1511,6 +1528,10 @@ static ssize_t set_touchkey_update_show(struct device *dev, i2c_touchkey_write(tkey_i2c->client, &get_touch, 1); #endif +#if defined(TK_HAS_AUTOCAL) + touchkey_autocalibration(tkey_i2c); +#endif + enable_irq(tkey_i2c->irq); return count; @@ -1565,7 +1586,7 @@ static DEVICE_ATTR(touchkey_menu, S_IRUGO | S_IWUSR | S_IWGRP, static DEVICE_ATTR(touchkey_back, S_IRUGO | S_IWUSR | S_IWGRP, touchkey_back_show, NULL); -#if defined(CONFIG_TARGET_LOCALE_NA) || defined(CONFIG_TARGET_LOCALE_NAATT) +#if defined(TK_USE_4KEY) static DEVICE_ATTR(touchkey_home, S_IRUGO, touchkey_home_show, NULL); static DEVICE_ATTR(touchkey_search, S_IRUGO, touchkey_search_show, NULL); #endif @@ -1612,7 +1633,7 @@ static struct attribute *touchkey_attributes[] = { &dev_attr_brightness.attr, &dev_attr_touchkey_menu.attr, &dev_attr_touchkey_back.attr, -#if defined(CONFIG_TARGET_LOCALE_NA) || defined(CONFIG_TARGET_LOCALE_NAATT) +#if defined(TK_USE_4KEY) &dev_attr_touchkey_home.attr, &dev_attr_touchkey_search.attr, #endif @@ -1746,15 +1767,29 @@ static int i2c_touchkey_probe(struct i2c_client *client, } } - ret = touchkey_i2c_check(tkey_i2c); - if (ret < 0) { +#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1) + gpio_request(GPIO_OLED_DET, "OLED_DET"); + ret = gpio_get_value(GPIO_OLED_DET); + printk(KERN_DEBUG + "[TouchKey] OLED_DET = %d\n", ret); + + if (ret == 0) { printk(KERN_DEBUG - "[TouchKey] i2c read fail. do not excute firm update.\n"); + "[TouchKey] device wasn't connected to board\n"); input_unregister_device(input_dev); touchkey_probe = false; return -EBUSY; } +#else + ret = touchkey_i2c_check(tkey_i2c); + if (ret < 0) { + printk(KERN_DEBUG"[TouchKey] probe failed\n"); + input_unregister_device(input_dev); + touchkey_probe = false; + return -EBUSY; + } +#endif ret = request_threaded_irq(tkey_i2c->irq, NULL, touchkey_interrupt, @@ -1768,7 +1803,6 @@ static int i2c_touchkey_probe(struct i2c_client *client, return -EBUSY; } - tkey_i2c->pdata->led_power_on(1); #if defined(TK_HAS_FIRMWARE_UPDATE) @@ -1820,7 +1854,7 @@ static int __init touchkey_init(void) { int ret = 0; -#if defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1VZW) +#if defined(CONFIG_MACH_M0) if (system_rev < TOUCHKEY_FW_UPDATEABLE_HW_REV) { printk(KERN_DEBUG "[Touchkey] Doesn't support this board rev %d\n", system_rev); diff --git a/drivers/input/keyboard/cypress/issp_main.c b/drivers/input/keyboard/cypress/issp_main.c index c212506..ddca59b4 100644 --- a/drivers/input/keyboard/cypress/issp_main.c +++ b/drivers/input/keyboard/cypress/issp_main.c @@ -389,9 +389,11 @@ unsigned int iChecksumTarget; #include "touchkey_fw_NA.h" #elif defined(CONFIG_TARGET_LOCALE_NAATT) #include "touchkey_fw_NAATT.h" -#elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1)\ -|| defined(CONFIG_MACH_C1VZW) +#elif defined(CONFIG_MACH_M0) || defined(CONFIG_MACH_C1) || \ + defined(CONFIG_MACH_M3) #include "touchkey_fw_M0.h" +#elif defined(CONFIG_MACH_T0) +#include "touchkey_fw_T0.h" #else #include "touchkey_fw_U1.h" #endif @@ -684,7 +686,7 @@ RAM Load, FLASHBlock Program, and Target Checksum Verification.*/ /*INTFREE(); */ #else /*INTLOCK(); */ - local_irq_save(flags); + /*local_irq_save(flags);*/ /* Initialize the Host & Target for ISSP operations */ fIsError = fPowerCycleInitializeTargetForISSP(); if (fIsError) { @@ -713,20 +715,20 @@ RAM Load, FLASHBlock Program, and Target Checksum Verification.*/ #endif /*INTFREE(); */ - local_irq_restore(flags); + /*local_irq_restore(flags);*/ /*printk(KERN_DEBUG"fVerifySiliconID END\n"); */ /* Bulk-Erase the Device. */ /*printk(KERN_DEBUG"fEraseTarget START\n"); */ /*INTLOCK(); */ fIsError = fEraseTarget(); - local_irq_save(flags); + /*local_irq_save(flags);*/ if (fIsError) { ErrorTrap(fIsError); return fIsError; } /*INTFREE(); */ - local_irq_restore(flags); + /*local_irq_restore(flags);*/ /*printk(KERN_DEBUG"fEraseTarget END\n"); */ /*============================================================== @@ -739,7 +741,7 @@ this data should come from the HEX output of PSoC Designer.*/ iChecksumData = 0; /*PTJ: NUM_BANKS should be 1 for Krypton*/ for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) { - local_irq_save(flags); + /*local_irq_save(flags);*/ for (iBlockCounter = 0; iBlockCounter < BLOCKS_PER_BANK; iBlockCounter++) { /*printk(KERN_DEBUG @@ -789,7 +791,7 @@ this data should come from the HEX output of PSoC Designer.*/ /*INTFREE(); */ /*local_irq_restore(flags);*/ } - local_irq_restore(flags); + /*local_irq_restore(flags);*/ } /*printk(KERN_DEBUG"\r\n Program Flash Blocks End\n"); */ @@ -857,7 +859,7 @@ this data should come from the HEX output of PSoC Designer.*/ come from the hex output of psoc designer. printk(KERN_DEBUG"program security data start\n");*/ /*INTLOCK(); */ - local_irq_save(flags); + /*local_irq_save(flags);*/ for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) { /*PTJ: READ-WRITE-SETUP used here to select SRAM Bank 1 */ #ifdef CY8C20x66 @@ -887,7 +889,7 @@ this data should come from the HEX output of PSoC Designer.*/ } } /*INTFREE(); */ - local_irq_restore(flags); + /*local_irq_restore(flags);*/ /*printk(KERN_DEBUG"Program security data END\n"); */ @@ -897,7 +899,7 @@ this data should come from the HEX output of PSoC Designer.*/ loads abTargetDataOUT[] with security data that was used in secure bit stream*/ /*INTLOCK(); */ - local_irq_save(flags); + /*local_irq_save(flags);*/ fIsError = fLoadSecurityData(bBankCounter); if (fIsError) { ErrorTrap(fIsError); @@ -911,14 +913,14 @@ this data should come from the HEX output of PSoC Designer.*/ } #endif /*INTFREE(); */ - local_irq_restore(flags); + /*local_irq_restore(flags);*/ /*printk(KERN_DEBUG"Load security data END\n"); */ #endif /* security end */ /*======================================================= PTJ: Doing Checksum after READ-SECURITY*/ /*INTLOCK(); */ - local_irq_save(flags); + /*local_irq_save(flags);*/ iChecksumTarget = 0; for (bBankCounter = 0; bBankCounter < NUM_BANKS; bBankCounter++) { fIsError = fAccTargetBankChecksum(&iChecksumTarget); @@ -929,7 +931,7 @@ this data should come from the HEX output of PSoC Designer.*/ } /*INTFREE(); */ - local_irq_restore(flags); + /*local_irq_restore(flags);*/ /*printk(KERN_DEBUG"Checksum : iChecksumTarget (0x%X)\n", (unsigned char)iChecksumTarget); diff --git a/drivers/input/keyboard/cypress/touchkey_fw_T0.h b/drivers/input/keyboard/cypress/touchkey_fw_T0.h new file mode 100644 index 0000000..671d265 --- /dev/null +++ b/drivers/input/keyboard/cypress/touchkey_fw_T0.h @@ -0,0 +1,770 @@ +unsigned char firmware_data[] = { + 0x40, 0x7d, 0x00, 0x68, 0x30, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, + 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7d, 0x00, 0x68, + 0x7e, 0x7e, 0x30, 0x30, 0x30, 0x7d, 0x04, 0xae, 0x7e, 0x7e, 0x30, + 0x30, 0x30, 0x7d, 0x05, 0xfb, 0x7e, 0x7e, 0x30, 0x30, 0x30, 0x7e, + 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, + 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, + 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, + 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, + 0x30, 0x7e, 0x30, 0x30, 0x30, 0x7e, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x40, 0x71, 0x10, 0x62, 0xe3, + 0x06, 0x70, 0xef, 0x62, 0xe3, 0x38, 0x50, 0x80, 0x4e, 0x62, 0xe3, + 0x38, 0x5d, 0xd5, 0x08, 0x62, 0xd5, 0x00, 0x55, + 0xfa, 0x01, 0x40, 0x4f, 0x5b, 0x01, 0x03, 0x53, 0xf9, 0x55, 0xf8, 0x3a, + 0x50, 0x06, 0x00, 0x40, 0x40, 0x71, 0x10, 0x51, 0xfa, 0x60, 0xe8, + 0x70, 0xef, 0x18, 0x60, 0xd5, 0x55, 0xf8, 0x00, 0x55, 0xf9, 0x00, + 0x71, 0x10, 0x62, 0xe0, 0x1a, 0x70, 0xef, 0x62, 0xe3, 0x38, 0x71, + 0x10, 0x41, 0xe1, 0xfe, 0x70, 0xef, 0x62, 0xe3, 0x38, 0x62, 0xd1, + 0x03, 0x50, 0x80, 0x4e, 0x62, 0xd3, 0x03, 0x62, + 0xd0, 0x00, 0x62, 0xd5, 0x00, 0x62, 0xd4, 0x00, 0x71, 0xc0, 0x7c, 0x03, + 0x1b, 0x62, 0xd0, 0x00, 0x50, 0x01, 0x57, 0xc2, 0x08, 0x28, 0x53, + 0x51, 0x18, 0x75, 0x09, 0x00, 0x28, 0x4b, 0x51, 0x51, 0x80, 0x04, + 0x75, 0x09, 0x00, 0x62, 0xe3, 0x00, 0x08, 0x28, 0x60, 0xd5, 0x74, + 0xa0, 0x4b, 0x18, 0x75, 0x09, 0x00, 0x08, 0x28, 0x53, 0x51, 0x18, + 0x75, 0x09, 0x00, 0x08, 0x28, 0xa0, 0x1c, 0x53, + 0x50, 0x18, 0x75, 0x09, 0x00, 0x08, 0x28, 0x3f, 0x51, 0x47, 0x51, 0xff, + 0xb0, 0x06, 0x5d, 0xd5, 0x74, 0x60, 0xd5, 0x18, 0x7a, 0x50, 0xbf, + 0xeb, 0x8f, 0xc9, 0x18, 0x75, 0x09, 0x00, 0x08, 0x28, 0x53, 0x50, + 0x50, 0x00, 0x3f, 0x51, 0x47, 0x51, 0xff, 0xb0, 0x08, 0x5d, 0xd5, + 0x74, 0x60, 0xd5, 0x50, 0x00, 0x7a, 0x50, 0xbf, 0xef, 0x18, 0x8f, + 0xaa, 0x18, 0x71, 0x10, 0x43, 0xe3, 0x00, 0x70, + 0xef, 0x62, 0xe0, 0x00, 0x41, 0xfe, 0xe7, 0x43, 0xfe, 0x10, 0x71, 0x10, + 0x62, 0xe0, 0x1a, 0x70, 0xef, 0x62, 0xe2, 0x00, 0x7c, 0x1b, 0x4b, + 0x8f, 0xff, 0x7f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x01, 0x99, 0x03, 0x33, 0x06, 0x66, + 0x0c, 0xcc, 0x19, 0x99, 0x33, 0x33, 0x66, 0x66, + 0xcc, 0xcc, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0b, 0xff, 0x18, 0x00, + 0x2f, 0xff, 0x5f, 0xff, 0xbf, 0xff, 0x01, 0x66, 0x02, 0xcc, 0x05, + 0x99, 0x0b, 0x32, 0x16, 0x66, 0x2c, 0xcc, 0x59, 0x98, 0xb3, 0x32, + 0x01, 0x4c, 0x02, 0x99, 0x05, 0x33, 0x0a, 0x65, 0x14, 0xcc, 0x29, + 0x98, 0x53, 0x32, 0xa6, 0x65, 0x01, 0x33, 0x02, 0x66, 0x04, 0xcc, + 0x09, 0x99, 0x13, 0x33, 0x26, 0x65, 0x4c, 0xcc, + 0x99, 0x99, 0x1d, 0xea, 0x70, 0xef, 0x62, 0x61, 0x00, 0x62, 0xfd, 0x00, + 0x62, 0xcd, 0x00, 0x62, 0xce, 0x00, 0x62, 0xa5, 0x00, 0x62, 0xa4, + 0x00, 0x62, 0xa0, 0x00, 0x62, 0xa1, 0x80, 0x62, 0xa2, 0xc0, 0x62, + 0xa3, 0x0c, 0x62, 0xa8, 0x00, 0x62, 0xa6, 0x00, 0x62, 0xa7, 0x00, + 0x62, 0x7c, 0x33, 0x62, 0x7a, 0x00, 0x62, 0x7b, 0x00, 0x62, 0x79, + 0x00, 0x62, 0x36, 0x00, 0x62, 0x37, 0x00, 0x62, + 0x38, 0x00, 0x62, 0x39, 0x00, 0x62, 0x3a, 0x00, 0x62, 0x3b, 0x00, 0x62, + 0x3c, 0x00, 0x62, 0x3d, 0x00, 0x62, 0x3e, 0x00, 0x62, 0x3f, 0x00, + 0x62, 0x40, 0x00, 0x62, 0x41, 0x00, 0x62, 0x42, 0x00, 0x62, 0x43, + 0x00, 0x62, 0x44, 0x00, 0x62, 0x45, 0x00, 0x62, 0x46, 0x00, 0x62, + 0x47, 0x00, 0x62, 0x48, 0x00, 0x62, 0x49, 0x00, 0x62, 0x4a, 0x00, + 0x62, 0x4b, 0x00, 0x62, 0x4c, 0x00, 0x62, 0x4d, + 0x00, 0x62, 0x4e, 0x00, 0x62, 0x4f, 0x00, 0x62, 0xca, 0x20, 0x62, 0xd6, + 0x44, 0x62, 0xcf, 0x00, 0x62, 0xcb, 0x00, 0x62, 0xc8, 0x00, 0x62, + 0xcc, 0x00, 0x62, 0xc9, 0x00, 0x62, 0xd7, 0x00, 0x62, 0xa9, 0x00, + 0x62, 0x2b, 0x00, 0x62, 0xb0, 0x00, 0x62, 0xb3, 0x02, 0x62, 0xb6, + 0x00, 0x62, 0xb2, 0x00, 0x62, 0xb5, 0x00, 0x62, 0xb8, 0x00, 0x62, + 0xb1, 0x00, 0x62, 0xb4, 0x00, 0x62, 0xb7, 0x00, + 0x62, 0x33, 0x00, 0x62, 0x34, 0x00, 0x62, 0x35, 0x00, 0x71, 0x10, 0x62, + 0x54, 0x00, 0x62, 0x55, 0x00, 0x62, 0x56, 0x00, 0x62, 0x57, 0x00, + 0x62, 0x58, 0x00, 0x62, 0x59, 0x00, 0x62, 0x5a, 0x00, 0x62, 0x5b, + 0x00, 0x62, 0xdc, 0x00, 0x62, 0xe2, 0x00, 0x62, 0xdd, 0x00, 0x62, + 0xd8, 0x02, 0x62, 0xd9, 0x00, 0x62, 0xda, 0x28, 0x62, 0xdb, 0x00, + 0x62, 0xdf, 0x00, 0x62, 0x29, 0x00, 0x62, 0x30, + 0x00, 0x62, 0xbd, 0x00, 0x70, 0xef, 0x70, 0xef, 0x62, 0x00, 0x08, 0x71, + 0x10, 0x62, 0x00, 0x08, 0x62, 0x01, 0x92, 0x70, 0xef, 0x62, 0x04, + 0x17, 0x71, 0x10, 0x62, 0x04, 0x17, 0x62, 0x05, 0xab, 0x70, 0xef, + 0x62, 0x08, 0x00, 0x71, 0x10, 0x62, 0x08, 0x00, 0x62, 0x09, 0x28, + 0x70, 0xef, 0x62, 0x0c, 0x00, 0x71, 0x10, 0x62, 0x0c, 0x00, 0x62, + 0x0d, 0x00, 0x70, 0xef, 0x62, 0x10, 0x00, 0x71, + 0x10, 0x62, 0x10, 0x00, 0x62, 0x11, 0x00, 0x70, 0xef, 0x62, 0x01, 0x00, + 0x62, 0x05, 0x00, 0x62, 0x09, 0x00, 0x62, 0x0d, 0x00, 0x62, 0x11, + 0x00, 0x70, 0xef, 0x7f, 0x55, 0x02, 0x08, 0x55, 0x03, 0x17, 0x55, + 0x04, 0x00, 0x7c, 0x03, 0x28, 0x7f, 0x7c, 0x01, 0xc4, 0x70, 0xef, + 0x7f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x62, 0xd0, + 0x00, 0x53, 0x00, 0x71, 0x10, 0x5d, 0xe0, 0x08, 0x21, 0xf8, 0x29, 0x00, + 0x70, 0xfe, 0x60, 0xe0, 0x70, 0xef, 0x4b, 0x4b, 0x4b, 0x4b, 0x51, + 0x02, 0x21, 0xf7, 0x60, 0x00, 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7, + 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, 0x6e, 0x00, 0xc0, + 0x05, 0x21, 0xf7, 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, + 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7, 0x80, 0x05, + 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7, + 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, 0x6e, 0x00, 0xc0, + 0x05, 0x21, 0xf7, 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, + 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7, 0x80, 0x05, 0x29, 0x08, 0x80, + 0x01, 0x60, 0x00, 0x6e, 0x00, 0xc0, 0x05, 0x21, 0xf7, 0x80, 0x05, + 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, 0x6e, 0x00, + 0xc0, 0x05, 0x21, 0xf7, 0x80, 0x05, 0x29, 0x08, 0x80, 0x01, 0x60, 0x00, + 0x47, 0x00, 0x00, 0x49, 0x01, 0x00, 0x29, 0x08, 0x60, 0x00, 0x57, + 0x01, 0x79, 0xbf, 0xfe, 0x18, 0x71, 0x10, 0x60, 0xe0, 0x70, 0xef, + 0x71, 0x01, 0x7f, 0x08, 0x67, 0x67, 0x67, 0x67, 0x21, 0x0f, 0xff, + 0x40, 0x9f, 0x4e, 0x18, 0x21, 0x0f, 0xff, 0x39, 0x9f, 0x47, 0x7f, + 0x08, 0x10, 0x28, 0xa0, 0x0b, 0x9f, 0x3f, 0x20, + 0x18, 0x75, 0xdf, 0xf5, 0x74, 0x8f, 0xf2, 0x38, 0xfe, 0x7f, 0x52, 0x00, + 0xa0, 0x08, 0x10, 0x9f, 0x2d, 0x20, 0x75, 0x8f, 0xf6, 0x70, 0x3f, + 0x71, 0xc0, 0x7f, 0x50, 0x0d, 0x9f, 0x20, 0x50, 0x0a, 0x9f, 0x1c, + 0x7f, 0x70, 0xbf, 0x62, 0xd3, 0x03, 0x4f, 0x52, 0xfb, 0xa0, 0x15, + 0x7b, 0xfb, 0x52, 0xfc, 0x59, 0xfd, 0x60, 0xd3, 0x52, 0x00, 0x9f, + 0x05, 0x4f, 0x62, 0xd3, 0x03, 0x77, 0xfd, 0x8f, + 0xe9, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x3d, 0xfa, 0x00, 0xb0, 0x06, 0x3d, + 0xfb, 0x00, 0xa0, 0x18, 0x10, 0x52, 0xfc, 0x59, 0xfd, 0x28, 0x9e, + 0xe6, 0x20, 0x07, 0xfd, 0x01, 0x0f, 0xfc, 0x00, 0x17, 0xfb, 0x01, + 0x1f, 0xfa, 0x00, 0x8f, 0xe0, 0x7f, 0x50, 0x01, 0x80, 0x03, 0x50, + 0x00, 0x62, 0xd0, 0x00, 0x29, 0x00, 0xa0, 0x06, 0x26, 0x03, 0xef, + 0x80, 0x04, 0x2e, 0x03, 0x10, 0x51, 0x03, 0x60, + 0x04, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x50, + 0x01, 0x80, 0x03, 0x50, 0x00, 0x62, 0xd0, 0x00, 0x29, 0x00, 0xa0, + 0x06, 0x26, 0x03, 0xfb, 0x80, 0x04, 0x2e, 0x03, 0x04, 0x51, 0x03, + 0x60, 0x04, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x70, 0x3f, 0x71, 0xc0, + 0x7f, 0x08, 0x10, 0x70, 0x3f, 0x71, 0x80, 0x5d, 0xd3, 0x08, 0x5d, + 0xd0, 0x08, 0x62, 0xd0, 0x00, 0x51, 0x08, 0x60, + 0xd3, 0x2e, 0x05, 0x80, 0x49, 0xd7, 0x08, 0xa0, 0x09, 0x26, 0x05, 0xf0, + 0x2e, 0x05, 0x00, 0x80, 0x08, 0x49, 0xd7, 0x20, 0xa0, 0x03, 0x80, + 0xa6, 0x51, 0x05, 0x21, 0x0e, 0xe0, 0x01, 0x80, 0x11, 0x80, 0x67, + 0x80, 0x79, 0x80, 0x47, 0x80, 0x96, 0x80, 0x94, 0x80, 0x92, 0x80, + 0x90, 0x80, 0x97, 0x5d, 0xd8, 0x21, 0xfe, 0x39, 0x40, 0xa0, 0x06, + 0x62, 0xd7, 0x00, 0x80, 0x8a, 0x49, 0xd8, 0x01, + 0xb0, 0x0f, 0x55, 0x0c, 0x02, 0x26, 0x05, 0xf0, 0x2e, 0x05, 0x02, 0x62, + 0xd7, 0x10, 0x80, 0x77, 0x55, 0x0c, 0x01, 0x26, 0x05, 0xf0, 0x2e, + 0x05, 0x06, 0x5f, 0x07, 0x06, 0x51, 0x09, 0x02, 0x07, 0x5c, 0x52, + 0x00, 0x60, 0xd8, 0x76, 0x07, 0x62, 0xd7, 0x14, 0x80, 0x5b, 0x51, + 0x0a, 0x78, 0x3a, 0x07, 0xc0, 0x0f, 0x51, 0x09, 0x02, 0x07, 0x5c, + 0x52, 0x00, 0x60, 0xd8, 0x76, 0x07, 0x2e, 0x05, + 0x20, 0x60, 0xd8, 0x62, 0xd7, 0x04, 0x80, 0x3f, 0x5d, 0xd8, 0x3a, 0x0a, + 0xd0, 0x2b, 0xa0, 0x29, 0x53, 0x07, 0x53, 0x06, 0x26, 0x05, 0xf0, + 0x2e, 0x05, 0x04, 0x80, 0x18, 0x51, 0x0b, 0x78, 0x3a, 0x07, 0xc0, + 0x16, 0x51, 0x09, 0x02, 0x07, 0x5c, 0x5d, 0xd8, 0x54, 0x00, 0x2e, + 0x05, 0x10, 0x76, 0x07, 0x80, 0x01, 0x62, 0xd7, 0x10, 0x80, 0x0f, + 0x62, 0xd7, 0x00, 0x80, 0x0a, 0x26, 0x05, 0xf0, + 0x2e, 0x05, 0x00, 0x55, 0x0c, 0x00, 0x18, 0x60, 0xd0, 0x18, 0x60, 0xd3, + 0x20, 0x18, 0x7e, 0x62, 0xd0, 0x00, 0x71, 0x10, 0x41, 0x04, 0xfc, + 0x43, 0x05, 0x03, 0x70, 0xef, 0x26, 0x03, 0xfc, 0x51, 0x03, 0x60, + 0x04, 0x55, 0x0c, 0x00, 0x90, 0x28, 0x90, 0x2d, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x50, 0x00, 0x53, 0x06, 0x71, 0x10, 0x43, 0x04, 0x03, + 0x43, 0x05, 0x03, 0x70, 0xef, 0x2e, 0x03, 0x03, + 0x51, 0x03, 0x60, 0x04, 0x7f, 0x62, 0xd0, 0x00, 0x51, 0x05, 0x21, 0xb0, + 0x26, 0x05, 0x4f, 0x7f, 0x41, 0xe0, 0x7f, 0x43, 0xe0, 0x80, 0x7f, + 0x43, 0xd6, 0x31, 0x7f, 0x41, 0xe0, 0x7f, 0x41, 0xd6, 0xfe, 0x7f, + 0x62, 0xd0, 0x00, 0x4f, 0x52, 0xfd, 0x53, 0x0a, 0x52, 0xfc, 0x53, + 0x0b, 0x52, 0xfb, 0x53, 0x09, 0x52, 0xfa, 0x53, 0x08, 0x70, 0x3f, + 0x71, 0xc0, 0x7f, 0x08, 0x5d, 0xa4, 0x04, 0x1b, + 0x5d, 0xa5, 0x0c, 0x1a, 0x55, 0x1c, 0x01, 0x18, 0x7e, 0x70, 0xbf, 0x62, + 0xd0, 0x00, 0x70, 0xbf, 0x53, 0x1e, 0x64, 0x5c, 0x62, 0xd3, 0x00, + 0x52, 0x8d, 0x62, 0xd3, 0x00, 0x13, 0x63, 0x62, 0xd3, 0x00, 0x54, + 0x67, 0x62, 0xd3, 0x00, 0x52, 0x8c, 0x62, 0xd3, 0x00, 0x1b, 0x62, + 0x62, 0xd3, 0x00, 0x54, 0x66, 0x48, 0x66, 0x80, 0xb0, 0x33, 0x3d, + 0x66, 0x00, 0xb0, 0x7b, 0x51, 0x0d, 0x3b, 0x67, + 0xc0, 0x75, 0x52, 0x67, 0x58, 0x1e, 0x01, 0x00, 0x6d, 0x62, 0xd3, 0x00, + 0x05, 0x40, 0xc0, 0x09, 0x51, 0x0f, 0x3b, 0x40, 0xd0, 0x12, 0xa0, + 0x10, 0x56, 0x40, 0x00, 0x5b, 0x64, 0x5c, 0x62, 0xd3, 0x00, 0x07, + 0x63, 0x01, 0x0f, 0x62, 0x00, 0x80, 0x41, 0x3d, 0x66, 0xff, 0xb0, + 0x09, 0x50, 0xff, 0x12, 0x0e, 0x3b, 0x67, 0xc0, 0x20, 0x62, 0xd3, + 0x00, 0x56, 0x67, 0x00, 0x56, 0x66, 0x00, 0x5b, + 0x67, 0x5c, 0x62, 0xd3, 0x00, 0x52, 0x47, 0x78, 0xd0, 0x03, 0x50, 0x00, + 0x54, 0x47, 0x08, 0x5b, 0x64, 0x5c, 0x18, 0xb0, 0x2c, 0x62, 0xd3, + 0x00, 0x52, 0x8d, 0x62, 0xd3, 0x00, 0x54, 0x63, 0x62, 0xd3, 0x00, + 0x52, 0x8c, 0x62, 0xd3, 0x00, 0x54, 0x62, 0x51, 0x1e, 0x64, 0x5c, + 0x62, 0xd3, 0x00, 0x56, 0x67, 0x00, 0x56, 0x66, 0x00, 0x5b, 0x67, + 0x5c, 0x62, 0xd3, 0x00, 0x51, 0x12, 0x54, 0x47, + 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x70, 0xbf, 0x62, 0xd0, 0x00, 0x70, 0xbf, + 0x08, 0x5c, 0x62, 0xd3, 0x00, 0x52, 0x42, 0x53, 0x19, 0x55, 0x18, + 0x00, 0x18, 0x08, 0x90, 0x7e, 0x62, 0xd3, 0x00, 0x23, 0x44, 0xb0, + 0x2c, 0x51, 0x10, 0x04, 0x19, 0x0e, 0x18, 0x00, 0x18, 0x64, 0x5c, + 0x62, 0xd3, 0x00, 0x52, 0x67, 0x12, 0x19, 0x52, 0x66, 0x1a, 0x18, + 0xc0, 0x39, 0x5b, 0x67, 0x5c, 0x62, 0xd3, 0x00, + 0x52, 0x45, 0x78, 0x54, 0x45, 0x08, 0x5b, 0x64, 0x5c, 0x18, 0xb0, 0x3e, + 0x80, 0x18, 0x51, 0x10, 0x14, 0x19, 0x1e, 0x18, 0x00, 0x18, 0x64, + 0x5c, 0x62, 0xd3, 0x00, 0x52, 0x67, 0x12, 0x19, 0x52, 0x66, 0x1a, + 0x18, 0xc0, 0x0e, 0x5b, 0x67, 0x90, 0x31, 0x62, 0xd3, 0x00, 0x2d, + 0x44, 0x50, 0x01, 0x80, 0x24, 0x5b, 0x67, 0x08, 0x90, 0x23, 0x73, + 0x62, 0xd3, 0x00, 0x25, 0x44, 0x62, 0xd3, 0x00, + 0x20, 0x51, 0x11, 0x54, 0x45, 0x50, 0x00, 0x80, 0x0d, 0x5b, 0x67, 0x90, + 0x0d, 0x73, 0x62, 0xd3, 0x00, 0x25, 0x44, 0x50, 0x00, 0x70, 0x3f, + 0x71, 0xc0, 0x7f, 0x08, 0x67, 0x67, 0x67, 0x5c, 0x18, 0x21, 0x07, + 0xf0, 0x01, 0x7f, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, + 0x70, 0xbf, 0x70, 0xbf, 0x62, 0xd3, 0x00, 0x50, 0x02, 0x78, 0x08, + 0x5c, 0x56, 0x42, 0x1e, 0x18, 0x78, 0xdf, 0xf8, + 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x08, 0x91, 0xb2, 0x70, 0xbf, 0x18, 0x08, + 0x64, 0x5c, 0x62, 0xd3, 0x00, 0x52, 0x8d, 0x62, 0xd3, 0x00, 0x54, + 0x63, 0x62, 0xd3, 0x00, 0x52, 0x8c, 0x62, 0xd3, 0x00, 0x54, 0x62, + 0x18, 0x78, 0xdf, 0xe0, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x62, 0xd0, + 0x00, 0x55, 0x14, 0x00, 0x50, 0x02, 0x78, 0x08, 0x9f, 0x0e, 0x39, + 0x01, 0xb0, 0x04, 0x55, 0x14, 0x01, 0x18, 0x78, + 0xdf, 0xf3, 0x51, 0x14, 0x7f, 0x50, 0x02, 0x78, 0x08, 0x9e, 0x3e, 0x18, + 0x78, 0xdf, 0xfa, 0x7f, 0x98, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, + 0x96, 0x97, 0xd8, 0xd9, 0xda, 0xdb, 0xdf, 0x00, 0x01, 0x03, 0x07, + 0x0f, 0x1f, 0x3f, 0x7f, 0xff, 0x70, 0xbf, 0x62, 0xd0, 0x00, 0x62, + 0xd3, 0x00, 0x57, 0x00, 0x56, 0x44, 0x00, 0x79, 0xdf, 0xfb, 0x62, + 0xd3, 0x00, 0x57, 0x01, 0x50, 0x03, 0x54, 0x45, + 0x79, 0xdf, 0xfc, 0x62, 0xd3, 0x00, 0x50, 0x14, 0x57, 0x01, 0x54, 0x47, + 0x79, 0xdf, 0xfc, 0x70, 0x3f, 0x71, 0xc0, 0x55, 0x0d, 0x19, 0x55, + 0x0e, 0x05, 0x55, 0x0f, 0x14, 0x55, 0x10, 0x01, 0x55, 0x11, 0x03, + 0x55, 0x12, 0x14, 0x55, 0x22, 0x04, 0x55, 0x1f, 0x14, 0x43, 0x61, + 0x0d, 0x57, 0x00, 0x50, 0x02, 0x90, 0xae, 0x50, 0x04, 0xff, 0x98, + 0x29, 0x00, 0x60, 0xa9, 0x62, 0xa0, 0x08, 0x43, + 0xa2, 0x04, 0x62, 0xa3, 0x70, 0x43, 0x7a, 0x01, 0x43, 0xaa, 0x02, 0x43, + 0xdf, 0x01, 0x50, 0x01, 0x57, 0x09, 0x90, 0x20, 0x90, 0x55, 0x57, + 0x01, 0x50, 0xb3, 0x91, 0x5d, 0x50, 0x01, 0x57, 0x0e, 0x90, 0x12, + 0x90, 0x47, 0x7f, 0x53, 0x22, 0xff, 0x67, 0x29, 0x00, 0x60, 0xa9, + 0x51, 0x21, 0x58, 0x20, 0x90, 0x01, 0x7f, 0x62, 0xd0, 0x00, 0x21, + 0x03, 0x53, 0x21, 0x64, 0x64, 0x64, 0x64, 0x64, + 0x29, 0x80, 0x60, 0xa1, 0x5b, 0x78, 0x21, 0x0f, 0x29, 0x08, 0x74, 0x53, + 0x20, 0x12, 0x22, 0x02, 0x21, 0x5c, 0x50, 0x00, 0x53, 0x1d, 0x53, + 0x23, 0x29, 0x01, 0x79, 0xa0, 0x08, 0x64, 0x6b, 0x1d, 0x6b, 0x23, + 0x8f, 0xf5, 0x60, 0xb5, 0x51, 0x1d, 0x60, 0xb4, 0x7f, 0x50, 0x02, + 0x78, 0x08, 0x90, 0x28, 0x90, 0x5a, 0x18, 0x78, 0xdf, 0xf8, 0x7f, + 0x41, 0xdf, 0xfe, 0x71, 0x10, 0x41, 0xd8, 0xfd, + 0x70, 0xef, 0x41, 0x61, 0xf3, 0x41, 0xa2, 0xfb, 0x41, 0xa0, 0xf7, 0x62, + 0xa3, 0x00, 0x62, 0xa9, 0x00, 0x41, 0xaa, 0xfd, 0x7f, 0x02, 0x08, + 0x02, 0x20, 0x64, 0x5c, 0xff, 0xf8, 0x4b, 0x74, 0xff, 0xf4, 0x7f, + 0x62, 0xd0, 0x00, 0x53, 0x1d, 0x10, 0x5b, 0x64, 0x64, 0x5c, 0x71, + 0x10, 0x5e, 0x01, 0x2a, 0x1d, 0x61, 0x01, 0x36, 0x1d, 0xff, 0x5e, + 0x00, 0x22, 0x1d, 0x61, 0x00, 0x36, 0x1d, 0xff, + 0x18, 0xfe, 0xd6, 0x5c, 0x5e, 0x00, 0x2a, 0x1d, 0x61, 0x00, 0x70, 0xef, + 0x7f, 0x62, 0xd0, 0x00, 0x10, 0x73, 0x53, 0x1d, 0x71, 0x10, 0x5b, + 0xfe, 0xc0, 0x5c, 0x5e, 0x00, 0x22, 0x1d, 0x61, 0x00, 0x70, 0xef, + 0x18, 0x64, 0x64, 0x5c, 0x71, 0x10, 0x5e, 0x01, 0x22, 0x1d, 0x61, + 0x01, 0x36, 0x1d, 0xff, 0x5e, 0x00, 0x2a, 0x1d, 0x61, 0x00, 0x70, + 0xef, 0x7f, 0x70, 0xbf, 0x62, 0xd0, 0x00, 0x53, + 0x1e, 0x50, 0x00, 0x53, 0x1a, 0x53, 0x1b, 0x51, 0x1e, 0x5c, 0x62, 0xd3, + 0x00, 0x52, 0x24, 0x53, 0x1f, 0x43, 0xa0, 0x01, 0x51, 0x1f, 0x60, + 0xfd, 0x41, 0xa3, 0xdf, 0x51, 0x1e, 0x9f, 0x7a, 0x9f, 0x81, 0x58, + 0x23, 0x55, 0x1c, 0x00, 0x62, 0xa5, 0x00, 0x62, 0xa4, 0x00, 0x43, + 0xb3, 0x01, 0x51, 0x1c, 0xaf, 0xfd, 0x79, 0xdf, 0xee, 0x51, 0x1e, + 0x9f, 0x5f, 0x9f, 0x91, 0x43, 0xa3, 0x20, 0x41, + 0xa0, 0xfe, 0x62, 0xfd, 0x00, 0x50, 0xff, 0x4c, 0x1b, 0x14, 0x1b, 0x51, + 0x20, 0x11, 0x08, 0xfe, 0x4d, 0x4c, 0x1a, 0x1c, 0x1a, 0xd0, 0x07, + 0x55, 0x1a, 0x00, 0x55, 0x1b, 0x00, 0x51, 0x1e, 0x64, 0x5c, 0x62, + 0xd3, 0x00, 0x51, 0x1b, 0x54, 0x8d, 0x51, 0x1a, 0x54, 0x8c, 0x70, + 0x3f, 0x71, 0xc0, 0x7f, 0x08, 0x9f, 0x86, 0x18, 0x78, 0xdf, 0xfa, + 0x7f, 0x70, 0xbf, 0x62, 0xd0, 0x00, 0x53, 0x27, + 0x5a, 0x26, 0x55, 0x1e, 0x01, 0x62, 0xd3, 0x00, 0x58, 0x1e, 0x56, 0x24, + 0x80, 0x55, 0x29, 0x08, 0x55, 0x28, 0x80, 0x51, 0x1e, 0x9f, 0x63, + 0x51, 0x1e, 0x9f, 0x5f, 0x70, 0xbf, 0x58, 0x1e, 0x62, 0xd3, 0x00, + 0x51, 0x1b, 0x3a, 0x27, 0x51, 0x1a, 0x1a, 0x26, 0xd0, 0x06, 0x51, + 0x28, 0x73, 0x25, 0x24, 0x68, 0x28, 0x26, 0x28, 0x7f, 0x51, 0x28, + 0x2d, 0x24, 0x7a, 0x29, 0xbf, 0xd6, 0x7a, 0x1e, + 0xdf, 0xc4, 0x70, 0x3f, 0x71, 0xc0, 0x7f, 0x62, 0xd0, 0x00, 0x51, 0xa5, + 0x11, 0xdc, 0x51, 0xa4, 0x19, 0x05, 0xd0, 0x12, 0x7c, 0x16, 0xe7, + 0x39, 0x0f, 0xa0, 0x16, 0x62, 0xd0, 0x00, 0x76, 0xa5, 0x0e, 0xa4, + 0x00, 0x80, 0x0c, 0x62, 0xd0, 0x00, 0x55, 0xa5, 0x00, 0x55, 0xa4, + 0x00, 0x90, 0xbe, 0x7f, 0x62, 0xd0, 0x00, 0x3c, 0xaf, 0xf0, 0xd0, + 0x03, 0x76, 0xaf, 0x62, 0xd0, 0x00, 0x51, 0x2f, + 0x21, 0x7f, 0x53, 0x51, 0x51, 0xaf, 0x3a, 0x51, 0xb0, 0x55, 0x7c, 0x16, + 0xe7, 0x62, 0xd0, 0x00, 0x53, 0xb0, 0x3c, 0xb0, 0x0f, 0xa0, 0x3d, + 0x3c, 0xab, 0x00, 0xb0, 0x1c, 0x55, 0x94, 0x00, 0x55, 0x95, 0x00, + 0x51, 0xb0, 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50, 0x94, 0x0e, + 0x51, 0x00, 0x51, 0x51, 0x60, 0xd5, 0x50, 0x08, 0x3f, 0x50, 0x62, + 0xd0, 0x00, 0x55, 0xa7, 0x00, 0x3c, 0xae, 0x00, + 0xb0, 0x0a, 0x7c, 0x17, 0x7c, 0x62, 0xd0, 0x00, 0x55, 0xae, 0x01, 0x62, + 0xd0, 0x00, 0x55, 0xa6, 0x03, 0x80, 0x0c, 0x62, 0xd0, 0x00, 0x3c, + 0xa9, 0x00, 0xb0, 0x04, 0x55, 0xa9, 0x01, 0x7f, 0x62, 0xd0, 0x00, + 0x55, 0xa5, 0x00, 0x55, 0xa4, 0x00, 0x3c, 0xae, 0x01, 0xb0, 0x33, + 0x7a, 0xa6, 0x3c, 0xa6, 0x00, 0xb0, 0x3a, 0x3c, 0xae, 0x01, 0xb0, + 0x0a, 0x7c, 0x18, 0x0f, 0x62, 0xd0, 0x00, 0x55, + 0xae, 0x00, 0x62, 0xd0, 0x00, 0x3c, 0xab, 0x00, 0xb0, 0x0e, 0x51, 0xb0, + 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50, 0x94, 0x7c, 0x1d, 0xb9, + 0x62, 0xd0, 0x00, 0x55, 0xaf, 0x00, 0x80, 0x0f, 0x62, 0xd0, 0x00, + 0x3c, 0xa9, 0x01, 0xb0, 0x07, 0x55, 0xa9, 0x00, 0x55, 0xaf, 0x00, + 0x7f, 0x10, 0x4f, 0x38, 0x16, 0x62, 0xd0, 0x00, 0x3c, 0xaa, 0x00, + 0xb0, 0x05, 0x51, 0x9c, 0x53, 0x24, 0x56, 0x0d, + 0x00, 0x80, 0xff, 0x56, 0x00, 0x00, 0x80, 0xf3, 0x62, 0xd0, 0x00, 0x3c, + 0xaa, 0x00, 0xb0, 0x1b, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00, + 0x06, 0x50, 0x9c, 0x7c, 0x1d, 0x06, 0x52, 0x00, 0x53, 0x4e, 0x55, + 0x4f, 0x00, 0x06, 0x4e, 0x24, 0x7c, 0x1d, 0xa1, 0x10, 0x52, 0x00, + 0x7c, 0x09, 0x3a, 0x20, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, + 0x20, 0x39, 0x00, 0xbf, 0xee, 0x3d, 0x00, 0x00, + 0xb0, 0x12, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x01, 0x7c, + 0x1c, 0x2a, 0x7c, 0x1c, 0x88, 0x80, 0x80, 0x3d, 0x00, 0x01, 0xb0, + 0x2a, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, + 0x4e, 0x6b, 0x4f, 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, + 0x08, 0x51, 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, + 0x53, 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x80, + 0x52, 0x3d, 0x00, 0x02, 0xb0, 0x21, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, + 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x03, 0x7c, 0x1c, 0x2a, 0x70, 0xfb, + 0x6e, 0x4f, 0x6e, 0x4e, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x7c, + 0x1c, 0x88, 0x80, 0x2d, 0x3d, 0x00, 0x03, 0xb0, 0x28, 0x62, 0xd0, + 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e, 0x6b, 0x4f, + 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, + 0x08, 0x51, 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53, + 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x6c, 0x7c, 0x1c, + 0xc1, 0x52, 0x0d, 0x7c, 0x1d, 0xad, 0x02, 0x50, 0x53, 0x50, 0x51, + 0x4f, 0x0a, 0x51, 0x53, 0x51, 0x7c, 0x1d, 0x6f, 0x06, 0x4e, 0x8c, + 0x0e, 0x4f, 0x00, 0x51, 0x4f, 0x7c, 0x1c, 0xab, 0x7c, 0x1c, 0x88, + 0x77, 0x00, 0x3d, 0x00, 0x02, 0xcf, 0x0a, 0x77, + 0x0d, 0x3d, 0x0d, 0x03, 0xce, 0xfe, 0x56, 0x00, 0x00, 0x81, 0x06, 0x7c, + 0x1c, 0x6c, 0x7c, 0x1c, 0xc1, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, + 0x54, 0x0e, 0x3e, 0x50, 0x54, 0x0f, 0x52, 0x00, 0x53, 0x50, 0x55, + 0x51, 0x00, 0x55, 0x4e, 0x06, 0x55, 0x4f, 0x00, 0x55, 0x4b, 0x00, + 0x55, 0x4a, 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06, 0x3c, 0x4e, 0x00, + 0xa0, 0x1a, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, + 0xd0, 0x0c, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51, 0x0c, + 0x4a, 0x65, 0x50, 0x6b, 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b, 0x5f, + 0x51, 0x4a, 0x62, 0xd0, 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x03, 0x51, + 0x4e, 0x04, 0x50, 0x0e, 0x51, 0x03, 0x51, 0x51, 0x60, 0xd4, 0x3e, + 0x50, 0x54, 0x10, 0x3e, 0x50, 0x54, 0x11, 0x52, 0x00, 0x53, 0x50, + 0x55, 0x51, 0x00, 0x55, 0x4e, 0x06, 0x55, 0x4f, + 0x00, 0x55, 0x4b, 0x00, 0x55, 0x4a, 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06, + 0x3c, 0x4e, 0x00, 0xa0, 0x1a, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, + 0xd0, 0x0c, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51, + 0x0c, 0x4a, 0x65, 0x50, 0x6b, 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b, + 0x5f, 0x51, 0x4a, 0x62, 0xd0, 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x05, + 0x51, 0x4e, 0x04, 0x50, 0x0e, 0x51, 0x03, 0x51, + 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x54, 0x12, 0x3e, 0x50, 0x54, 0x13, 0x50, + 0x03, 0x08, 0x5a, 0x50, 0x06, 0x50, 0x0e, 0x08, 0x51, 0x50, 0x08, + 0x7c, 0x1a, 0x9f, 0x38, 0xfd, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x54, + 0x15, 0x51, 0x51, 0x54, 0x14, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, + 0x8c, 0x7c, 0x1d, 0x1d, 0x06, 0x50, 0x62, 0x7c, 0x1d, 0x5f, 0x7c, + 0x1c, 0x60, 0x51, 0x50, 0x01, 0x6a, 0x7c, 0x1d, + 0x1d, 0x51, 0x50, 0x01, 0x72, 0x7c, 0x1d, 0x1d, 0x06, 0x50, 0x7a, 0x7c, + 0x1d, 0x5f, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xce, 0xf7, 0x38, 0xea, + 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x16, 0x10, 0x57, 0x09, 0x50, 0x01, + 0x7c, 0x08, 0x74, 0x20, 0x62, 0xd0, 0x00, 0x50, 0x01, 0x10, 0x08, + 0x57, 0x92, 0x28, 0x53, 0x51, 0x18, 0x75, 0x09, 0x00, 0x28, 0x53, + 0x50, 0x20, 0x10, 0x51, 0x51, 0x08, 0x51, 0x50, + 0x20, 0x7c, 0x09, 0xb9, 0x20, 0x10, 0x57, 0x0e, 0x50, 0x01, 0x7c, 0x08, + 0x74, 0x20, 0x62, 0xd0, 0x00, 0x3c, 0xaa, 0x01, 0xb0, 0x0b, 0x51, + 0x24, 0x53, 0x30, 0x51, 0x25, 0x53, 0x31, 0x80, 0x0c, 0x62, 0xd0, + 0x00, 0x51, 0x9c, 0x53, 0x24, 0x51, 0x9d, 0x53, 0x25, 0x10, 0x50, + 0x00, 0x7c, 0x09, 0x3a, 0x20, 0x56, 0x0d, 0x00, 0x80, 0xff, 0x56, + 0x00, 0x00, 0x80, 0xf3, 0x62, 0xd0, 0x00, 0x3c, + 0xaa, 0x00, 0xb0, 0x1b, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, + 0x50, 0x9c, 0x7c, 0x1d, 0x06, 0x52, 0x00, 0x53, 0x4e, 0x55, 0x4f, + 0x00, 0x06, 0x4e, 0x24, 0x7c, 0x1d, 0xa1, 0x10, 0x52, 0x00, 0x7c, + 0x09, 0x3a, 0x20, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20, + 0x39, 0x00, 0xbf, 0xee, 0x3d, 0x00, 0x00, 0xb0, 0x12, 0x7c, 0x1c, + 0x60, 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x01, 0x7c, + 0x1c, 0x2a, 0x7c, 0x1c, 0x88, 0x80, 0x80, 0x3d, 0x00, 0x01, 0xb0, 0x2a, + 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e, + 0x6b, 0x4f, 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, 0x08, + 0x51, 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53, + 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x80, 0x52, 0x3d, 0x00, 0x02, + 0xb0, 0x21, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, + 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x03, 0x7c, 0x1c, 0x2a, 0x70, 0xfb, 0x6e, + 0x4f, 0x6e, 0x4e, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x7c, 0x1c, + 0x88, 0x80, 0x2d, 0x3d, 0x00, 0x03, 0xb0, 0x28, 0x62, 0xd0, 0x00, + 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e, 0x6b, 0x4f, 0x50, + 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, 0x08, 0x51, 0x4e, 0x08, + 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53, + 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x6c, 0x7c, 0x1c, 0xc1, + 0x52, 0x0d, 0x7c, 0x1d, 0xad, 0x02, 0x50, 0x53, 0x50, 0x51, 0x4f, + 0x0a, 0x51, 0x53, 0x51, 0x7c, 0x1d, 0x6f, 0x06, 0x4e, 0x8c, 0x0e, + 0x4f, 0x00, 0x51, 0x4f, 0x7c, 0x1c, 0xab, 0x7c, 0x1c, 0x88, 0x77, + 0x00, 0x3d, 0x00, 0x02, 0xcf, 0x0a, 0x77, 0x0d, 0x3d, 0x0d, 0x03, + 0xce, 0xfe, 0x56, 0x00, 0x00, 0x81, 0x06, 0x7c, + 0x1c, 0x6c, 0x7c, 0x1c, 0xc1, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x54, + 0x0e, 0x3e, 0x50, 0x54, 0x0f, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, + 0x00, 0x55, 0x4e, 0x06, 0x55, 0x4f, 0x00, 0x55, 0x4b, 0x00, 0x55, + 0x4a, 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06, 0x3c, 0x4e, 0x00, 0xa0, + 0x1a, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0xd0, 0x0c, 0x62, 0xd0, + 0x00, 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51, 0x0c, + 0x4a, 0x65, 0x50, 0x6b, 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b, 0x5f, 0x51, + 0x4a, 0x62, 0xd0, 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x03, 0x51, 0x4e, + 0x04, 0x50, 0x0e, 0x51, 0x03, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, + 0x54, 0x10, 0x3e, 0x50, 0x54, 0x11, 0x52, 0x00, 0x53, 0x50, 0x55, + 0x51, 0x00, 0x55, 0x4e, 0x06, 0x55, 0x4f, 0x00, 0x55, 0x4b, 0x00, + 0x55, 0x4a, 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06, + 0x3c, 0x4e, 0x00, 0xa0, 0x1a, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0xd0, + 0x0c, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51, 0x0c, + 0x4a, 0x65, 0x50, 0x6b, 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b, 0x5f, + 0x51, 0x4a, 0x62, 0xd0, 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x05, 0x51, + 0x4e, 0x04, 0x50, 0x0e, 0x51, 0x03, 0x51, 0x51, 0x60, 0xd4, 0x3e, + 0x50, 0x54, 0x12, 0x3e, 0x50, 0x54, 0x13, 0x50, + 0x03, 0x08, 0x5a, 0x50, 0x06, 0x50, 0x0e, 0x08, 0x51, 0x50, 0x08, 0x7c, + 0x1a, 0x9f, 0x38, 0xfd, 0x62, 0xd0, 0x00, 0x51, 0x50, 0x54, 0x15, + 0x51, 0x51, 0x54, 0x14, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, + 0x7c, 0x1d, 0x1d, 0x06, 0x50, 0x62, 0x7c, 0x1d, 0x5f, 0x7c, 0x1c, + 0x60, 0x51, 0x50, 0x01, 0x6a, 0x7c, 0x1d, 0x1d, 0x51, 0x50, 0x01, + 0x72, 0x7c, 0x1d, 0x1d, 0x06, 0x50, 0x7a, 0x7c, + 0x1d, 0x5f, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xce, 0xf7, 0x56, 0x00, 0x00, + 0x80, 0x19, 0x7c, 0x1c, 0x6c, 0x06, 0x50, 0x24, 0x7c, 0x1d, 0x06, + 0x52, 0x00, 0x53, 0x4e, 0x55, 0x4f, 0x00, 0x06, 0x4e, 0x30, 0x7c, + 0x1d, 0xa1, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xcf, 0xe4, 0x38, 0xea, + 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x02, 0x62, 0xd0, 0x00, 0x52, 0xfc, + 0x01, 0x02, 0x53, 0x50, 0x52, 0xfb, 0x09, 0x00, + 0x7c, 0x1d, 0x12, 0x52, 0xfc, 0x01, 0x04, 0x53, 0x4e, 0x52, 0xfb, 0x7c, + 0x1c, 0xb6, 0x12, 0x50, 0x51, 0x4f, 0x1a, 0x51, 0xc0, 0x6f, 0x52, + 0xfc, 0x53, 0x50, 0x52, 0xfb, 0x7c, 0x1d, 0x12, 0x52, 0xfc, 0x01, + 0x02, 0x53, 0x4e, 0x52, 0xfb, 0x7c, 0x1c, 0xb6, 0x12, 0x50, 0x51, + 0x4f, 0x1a, 0x51, 0xc0, 0x10, 0x52, 0xfc, 0x01, 0x02, 0x7c, 0x1d, + 0x3b, 0x54, 0x00, 0x3e, 0x50, 0x54, 0x01, 0x80, + 0xb3, 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x01, 0x04, 0x53, 0x50, 0x52, 0xfb, + 0x09, 0x00, 0x7c, 0x1d, 0x12, 0x52, 0xfc, 0x53, 0x4e, 0x52, 0xfb, + 0x60, 0xd4, 0x3e, 0x4e, 0x53, 0x4f, 0x3e, 0x4e, 0x12, 0x50, 0x51, + 0x4f, 0x1a, 0x51, 0xc0, 0x10, 0x52, 0xfc, 0x01, 0x04, 0x7c, 0x1d, + 0x3b, 0x54, 0x00, 0x3e, 0x50, 0x54, 0x01, 0x80, 0x7e, 0x62, 0xd0, + 0x00, 0x52, 0xfc, 0x53, 0x50, 0x52, 0xfb, 0x7c, + 0x1d, 0x54, 0x80, 0x70, 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x53, 0x50, 0x52, + 0xfb, 0x7c, 0x1d, 0x12, 0x52, 0xfc, 0x01, 0x04, 0x53, 0x4e, 0x52, + 0xfb, 0x7c, 0x1c, 0xb6, 0x12, 0x50, 0x51, 0x4f, 0x1a, 0x51, 0xc0, + 0x10, 0x52, 0xfc, 0x01, 0x04, 0x7c, 0x1d, 0x3b, 0x54, 0x00, 0x3e, + 0x50, 0x54, 0x01, 0x80, 0x42, 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x01, + 0x02, 0x53, 0x50, 0x52, 0xfb, 0x09, 0x00, 0x7c, + 0x1d, 0x12, 0x52, 0xfc, 0x53, 0x4e, 0x52, 0xfb, 0x60, 0xd4, 0x3e, 0x4e, + 0x53, 0x4f, 0x3e, 0x4e, 0x12, 0x50, 0x51, 0x4f, 0x1a, 0x51, 0xc0, + 0x10, 0x52, 0xfc, 0x01, 0x02, 0x7c, 0x1d, 0x3b, 0x54, 0x00, 0x3e, + 0x50, 0x54, 0x01, 0x80, 0x0d, 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x53, + 0x50, 0x52, 0xfb, 0x7c, 0x1d, 0x54, 0x62, 0xd0, 0x00, 0x52, 0x01, + 0x53, 0x50, 0x52, 0x00, 0x53, 0x51, 0x38, 0xfe, + 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x05, 0x62, 0xd0, 0x00, 0x55, 0xb2, 0x00, + 0x56, 0x00, 0x00, 0x80, 0xcd, 0x62, 0xd0, 0x00, 0x3c, 0xaa, 0x00, + 0xb0, 0x1b, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50, + 0x9c, 0x7c, 0x1d, 0x06, 0x52, 0x00, 0x53, 0x4e, 0x55, 0x4f, 0x00, + 0x06, 0x4e, 0x24, 0x7c, 0x1d, 0xa1, 0x10, 0x52, 0x00, 0x7c, 0x09, + 0x3a, 0x20, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0, + 0x00, 0x20, 0x39, 0x00, 0xbf, 0xee, 0x3d, 0x00, 0x00, 0xb0, 0x12, 0x7c, + 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x55, 0x4c, 0x01, 0x7c, 0x1c, 0x2a, + 0x7c, 0x1c, 0x88, 0x80, 0x80, 0x3d, 0x00, 0x01, 0xb0, 0x2a, 0x62, + 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e, 0x6b, + 0x4f, 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, 0x08, 0x51, + 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, + 0x18, 0x53, 0x4f, 0x38, 0xfe, 0x7c, 0x1c, 0x88, 0x80, 0x52, 0x3d, 0x00, + 0x02, 0xb0, 0x21, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, + 0x95, 0x55, 0x4c, 0x03, 0x7c, 0x1c, 0x2a, 0x70, 0xfb, 0x6e, 0x4f, + 0x6e, 0x4e, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x7c, 0x1c, 0x88, + 0x80, 0x2d, 0x3d, 0x00, 0x03, 0xb0, 0x28, 0x62, 0xd0, 0x00, 0x7c, + 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x65, 0x4e, 0x6b, + 0x4f, 0x50, 0x00, 0x08, 0x50, 0x05, 0x08, 0x51, 0x4f, 0x08, 0x51, 0x4e, + 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53, 0x4f, 0x38, + 0xfe, 0x7c, 0x1c, 0x88, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xcf, 0x30, + 0x56, 0x00, 0x00, 0x82, 0x86, 0x62, 0xd0, 0x00, 0x3c, 0xb1, 0x02, + 0xa0, 0x9f, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x62, 0x7c, 0x1c, + 0x77, 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06, 0x7c, + 0x1d, 0x2e, 0xd0, 0x16, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x62, 0x7c, + 0x1c, 0x77, 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06, 0x7c, 0x1d, 0xd2, + 0x80, 0x17, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, + 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x62, 0x7c, 0x1d, 0x06, 0x7c, + 0x1d, 0xd2, 0x50, 0x90, 0x13, 0x02, 0x50, 0x01, 0x1b, 0x01, 0xc0, + 0x4e, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51, + 0x50, 0x01, 0x7a, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06, + 0x7c, 0x1d, 0x2e, 0xd0, 0x16, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, + 0x7a, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06, 0x7c, + 0x1d, 0xc5, 0x80, 0x17, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51, + 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x7c, 0x1d, + 0x06, 0x7c, 0x1d, 0xc5, 0x50, 0x90, 0x13, 0x04, + 0x50, 0x01, 0x1b, 0x03, 0xd0, 0x08, 0x62, 0xd0, 0x00, 0x76, 0xb2, 0x81, + 0xde, 0x62, 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, + 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x7c, 0x1d, 0x06, 0x7c, 0x1d, + 0x2e, 0xd0, 0x5a, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x06, 0x4e, + 0x01, 0x0e, 0x4f, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, 0x51, + 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50, + 0x7a, 0x7c, 0x1d, 0x06, 0x7c, 0x1d, 0x2e, 0xd0, 0xb4, 0x7c, 0x1c, 0x60, + 0x7c, 0x1c, 0x95, 0x06, 0x4e, 0x01, 0x0e, 0x4f, 0x00, 0x7c, 0x1c, + 0x88, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, + 0x06, 0x50, 0x7a, 0x7c, 0x1d, 0x06, 0x7c, 0x1d, 0x2e, 0xd0, 0x90, + 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x06, 0x4e, 0x01, 0x0e, 0x4f, + 0x00, 0x7c, 0x1c, 0x88, 0x80, 0x7f, 0x62, 0xd0, + 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, + 0x50, 0x7a, 0x7c, 0x1d, 0x06, 0x3e, 0x50, 0x12, 0x4e, 0x51, 0x51, + 0x1a, 0x4f, 0xd0, 0x62, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x16, + 0x4e, 0x01, 0x1e, 0x4f, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, + 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x7c, + 0x1d, 0x06, 0x3e, 0x50, 0x12, 0x4e, 0x51, 0x51, + 0x1a, 0x4f, 0xd0, 0x39, 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x16, 0x4e, + 0x01, 0x1e, 0x4f, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, 0x51, + 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x7c, 0x1d, + 0x06, 0x3e, 0x50, 0x12, 0x4e, 0x51, 0x51, 0x1a, 0x4f, 0xd0, 0x10, + 0x7c, 0x1c, 0x60, 0x7c, 0x1c, 0x95, 0x16, 0x4e, 0x01, 0x1e, 0x4f, + 0x00, 0x7c, 0x1c, 0x88, 0x62, 0xd0, 0x00, 0x7c, + 0x1c, 0x60, 0x51, 0x50, 0x01, 0x72, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x6a, + 0x0e, 0x51, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, 0x51, 0x50, + 0x01, 0x7a, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x72, 0x0e, 0x51, 0x00, + 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c, + 0x1c, 0x77, 0x06, 0x50, 0x7a, 0x0e, 0x51, 0x00, 0x7c, 0x1c, 0x88, + 0x10, 0x52, 0x00, 0x7c, 0x06, 0x09, 0x20, 0x62, + 0xd0, 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, + 0x06, 0x50, 0x62, 0x7c, 0x1d, 0x06, 0x7c, 0x1d, 0x2e, 0xd0, 0x25, + 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50, 0x98, 0x0e, + 0x51, 0x00, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x7a, 0x50, 0x53, + 0x4f, 0x06, 0x4f, 0x01, 0x51, 0x51, 0x60, 0xd5, 0x51, 0x4f, 0x3f, + 0x50, 0x80, 0x0a, 0x7c, 0x1c, 0x6c, 0x06, 0x50, + 0x98, 0x7c, 0x1d, 0xb9, 0x7c, 0x1c, 0x6c, 0x06, 0x50, 0x98, 0x7c, 0x1d, + 0x06, 0x50, 0x05, 0x3a, 0x51, 0xd0, 0x58, 0x7c, 0x1c, 0x60, 0x51, + 0x50, 0x01, 0x62, 0x53, 0x4e, 0x51, 0x51, 0x09, 0x00, 0x53, 0x4f, + 0x06, 0x50, 0x8c, 0x7c, 0x1d, 0x06, 0x3e, 0x50, 0x53, 0x50, 0x51, + 0x4f, 0x60, 0xd4, 0x3e, 0x4e, 0x53, 0x4d, 0x3e, 0x4e, 0x16, 0x4e, + 0x02, 0x02, 0x50, 0x53, 0x50, 0x51, 0x4d, 0x0a, + 0x51, 0x53, 0x51, 0x70, 0xfb, 0x6e, 0x51, 0x6e, 0x50, 0x51, 0x4f, 0x60, + 0xd5, 0x51, 0x51, 0x3f, 0x4e, 0x51, 0x50, 0x3f, 0x4e, 0x52, 0x00, + 0x53, 0x50, 0x55, 0x51, 0x00, 0x06, 0x50, 0x98, 0x0e, 0x51, 0x00, + 0x51, 0x51, 0x60, 0xd5, 0x50, 0x00, 0x3f, 0x50, 0x77, 0x00, 0x3d, + 0x00, 0x02, 0xcd, 0x77, 0x62, 0xd0, 0x00, 0x3c, 0xb1, 0x02, 0xb2, + 0x20, 0x56, 0x00, 0x00, 0x82, 0x16, 0x62, 0xd0, + 0x00, 0x7c, 0x1c, 0x60, 0x51, 0x50, 0x01, 0x8c, 0x7c, 0x1c, 0x77, 0x06, + 0x50, 0x38, 0x0e, 0x51, 0x00, 0x7c, 0x1c, 0x88, 0x7c, 0x1c, 0x60, + 0x51, 0x50, 0x01, 0x62, 0x7c, 0x1c, 0x77, 0x06, 0x50, 0x3c, 0x0e, + 0x51, 0x00, 0x7c, 0x1c, 0x88, 0x97, 0xf7, 0x40, 0x51, 0x50, 0x01, + 0x62, 0x7c, 0x1c, 0x77, 0x51, 0x50, 0x01, 0x8c, 0x53, 0x4c, 0x51, + 0x51, 0x7c, 0x1d, 0x7b, 0x51, 0x4e, 0x12, 0x4c, + 0x51, 0x4f, 0x1a, 0x4d, 0xd0, 0x21, 0x7c, 0x1d, 0x6f, 0x51, 0x4e, 0x01, + 0x62, 0x53, 0x4c, 0x51, 0x4f, 0x7c, 0x1d, 0x7b, 0x06, 0x4e, 0x8c, + 0x7c, 0x1d, 0x46, 0x12, 0x4c, 0x54, 0x02, 0x51, 0x4f, 0x1a, 0x4d, + 0x54, 0x01, 0x80, 0x07, 0x56, 0x02, 0x00, 0x56, 0x01, 0x00, 0x62, + 0xd0, 0x00, 0x06, 0x50, 0x34, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, + 0xd5, 0x52, 0x01, 0x3f, 0x50, 0x52, 0x02, 0x3f, + 0x50, 0x3d, 0x00, 0x00, 0xb0, 0x35, 0x97, 0x98, 0x40, 0x51, 0x50, 0x01, + 0x8c, 0x97, 0xa8, 0x40, 0x55, 0x4c, 0x01, 0x97, 0x55, 0x40, 0x06, + 0x50, 0x38, 0x0e, 0x51, 0x00, 0x97, 0xaa, 0x40, 0x97, 0x7f, 0x40, + 0x51, 0x50, 0x01, 0x62, 0x97, 0x8f, 0x40, 0x55, 0x4c, 0x01, 0x97, + 0x3c, 0x40, 0x06, 0x50, 0x3c, 0x0e, 0x51, 0x00, 0x97, 0x91, 0x40, + 0x80, 0xfb, 0x3d, 0x00, 0x01, 0xb0, 0x44, 0x62, + 0xd0, 0x00, 0x97, 0x5c, 0x40, 0x51, 0x50, 0x01, 0x8c, 0x97, 0x6c, 0x40, + 0x55, 0x4c, 0x05, 0x97, 0x19, 0x40, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, + 0x4e, 0x06, 0x50, 0x38, 0x0e, 0x51, 0x00, 0x97, 0x68, 0x40, 0x97, + 0x3d, 0x40, 0x51, 0x50, 0x01, 0x62, 0x97, 0x4d, 0x40, 0x55, 0x4c, + 0x05, 0x96, 0xfa, 0x40, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x06, + 0x50, 0x3c, 0x0e, 0x51, 0x00, 0x97, 0x49, 0x40, + 0x80, 0xb3, 0x3d, 0x00, 0x02, 0xb0, 0x68, 0x62, 0xd0, 0x00, 0x97, 0x14, + 0x40, 0x51, 0x50, 0x01, 0x8c, 0x97, 0x24, 0x40, 0x55, 0x4c, 0x03, + 0x96, 0xd1, 0x40, 0x50, 0x00, 0x08, 0x50, 0x03, 0x08, 0x51, 0x4f, + 0x08, 0x51, 0x4e, 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, + 0x53, 0x4f, 0x38, 0xfe, 0x06, 0x50, 0x38, 0x0e, 0x51, 0x00, 0x97, + 0x0f, 0x40, 0x96, 0xe4, 0x40, 0x51, 0x50, 0x01, + 0x62, 0x96, 0xf4, 0x40, 0x65, 0x4e, 0x6b, 0x4f, 0x65, 0x4e, 0x6b, 0x4f, + 0x50, 0x00, 0x08, 0x50, 0x03, 0x08, 0x51, 0x4f, 0x08, 0x51, 0x4e, + 0x08, 0x7c, 0x1b, 0xe6, 0x18, 0x53, 0x4e, 0x18, 0x53, 0x4f, 0x38, + 0xfe, 0x06, 0x50, 0x3c, 0x0e, 0x51, 0x00, 0x96, 0xdd, 0x40, 0x80, + 0x47, 0x3d, 0x00, 0x03, 0xb0, 0x42, 0x62, 0xd0, 0x00, 0x96, 0xa8, + 0x40, 0x51, 0x50, 0x01, 0x8c, 0x96, 0xb8, 0x40, + 0x55, 0x4c, 0x05, 0x96, 0x65, 0x40, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, + 0x06, 0x50, 0x38, 0x0e, 0x51, 0x00, 0x96, 0xb4, 0x40, 0x96, 0x89, + 0x40, 0x51, 0x50, 0x01, 0x62, 0x96, 0x99, 0x40, 0x55, 0x4c, 0x05, + 0x96, 0x46, 0x40, 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0x06, 0x50, + 0x3c, 0x0e, 0x51, 0x00, 0x96, 0x95, 0x40, 0x62, 0xd0, 0x00, 0x96, + 0x67, 0x40, 0x51, 0x50, 0x01, 0x62, 0x96, 0x77, + 0x40, 0x51, 0x50, 0x01, 0x8c, 0x53, 0x4c, 0x51, 0x51, 0x97, 0x70, 0x40, + 0x51, 0x4e, 0x12, 0x4c, 0x51, 0x4f, 0x1a, 0x4d, 0xd0, 0x21, 0x97, + 0x57, 0x40, 0x51, 0x4e, 0x01, 0x62, 0x53, 0x4c, 0x51, 0x4f, 0x97, + 0x58, 0x40, 0x06, 0x4e, 0x8c, 0x97, 0x1d, 0x40, 0x12, 0x4c, 0x54, + 0x04, 0x51, 0x4f, 0x1a, 0x4d, 0x54, 0x03, 0x80, 0x07, 0x56, 0x04, + 0x00, 0x56, 0x03, 0x00, 0x62, 0xd0, 0x00, 0x06, + 0x50, 0x34, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, 0xd5, 0x52, 0x03, 0x3f, + 0x50, 0x52, 0x04, 0x3f, 0x50, 0x77, 0x00, 0x3d, 0x00, 0x02, 0xcd, + 0xe7, 0x62, 0xd0, 0x00, 0x3c, 0xb1, 0x02, 0xa0, 0x18, 0x3c, 0xb2, + 0x00, 0xa0, 0x13, 0x50, 0x01, 0x08, 0x50, 0x2c, 0x08, 0x90, 0x0e, + 0x38, 0xfe, 0x7c, 0x0a, 0xee, 0x10, 0x7c, 0x07, 0xc5, 0x20, 0x38, + 0xfb, 0x20, 0x7f, 0x10, 0x4f, 0x80, 0x02, 0x40, + 0x62, 0xd0, 0x00, 0x52, 0xfc, 0x53, 0x50, 0x52, 0xfb, 0x53, 0x51, 0x51, + 0x50, 0x11, 0x01, 0x54, 0xfc, 0x51, 0x51, 0x19, 0x00, 0x54, 0xfb, + 0x3c, 0x51, 0x00, 0xbf, 0xe4, 0x3c, 0x50, 0x00, 0xbf, 0xdf, 0x20, + 0x7f, 0x10, 0x7c, 0x04, 0x8f, 0x7c, 0x04, 0x6c, 0x20, 0x7f, 0x10, + 0x7c, 0x04, 0x8b, 0x7c, 0x04, 0x68, 0x20, 0x7f, 0x62, 0xd0, 0x00, + 0x51, 0x42, 0x12, 0x67, 0x50, 0x00, 0x1a, 0x66, + 0xd0, 0x0f, 0x51, 0x43, 0x12, 0x69, 0x50, 0x00, 0x1a, 0x68, 0xd0, 0x05, + 0x50, 0x0f, 0x80, 0x17, 0x62, 0xd0, 0x00, 0x51, 0x69, 0x12, 0x67, + 0x51, 0x68, 0x1a, 0x66, 0xd0, 0x05, 0x50, 0x00, 0x80, 0x06, 0x62, + 0xd0, 0x00, 0x50, 0x01, 0x7f, 0x10, 0x4f, 0x38, 0x05, 0x62, 0xd0, + 0x00, 0x51, 0x67, 0x54, 0x02, 0x51, 0x66, 0x54, 0x01, 0x56, 0x04, + 0x00, 0x56, 0x00, 0x00, 0x56, 0x03, 0x00, 0x80, + 0x61, 0x95, 0x69, 0x40, 0x06, 0x50, 0x42, 0x0e, 0x51, 0x00, 0x51, 0x51, + 0x60, 0xd4, 0x3e, 0x50, 0x53, 0x50, 0x96, 0x5b, 0x40, 0x06, 0x4e, + 0x66, 0x0e, 0x4f, 0x00, 0x51, 0x4f, 0x95, 0x8c, 0x40, 0x51, 0x50, + 0x12, 0x4e, 0x50, 0x00, 0x1a, 0x4f, 0xd0, 0x03, 0x77, 0x03, 0x62, + 0xd0, 0x00, 0x95, 0x2f, 0x40, 0x06, 0x50, 0x66, 0x95, 0xcf, 0x40, + 0x3e, 0x50, 0x53, 0x50, 0x52, 0x02, 0x12, 0x50, + 0x52, 0x01, 0x1a, 0x51, 0xd0, 0x1a, 0x95, 0x18, 0x40, 0x06, 0x50, 0x66, + 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x54, 0x01, + 0x3e, 0x50, 0x54, 0x02, 0x52, 0x00, 0x54, 0x04, 0x77, 0x00, 0x3d, + 0x00, 0x02, 0xcf, 0x9c, 0x50, 0x01, 0x3b, 0x03, 0xd0, 0x08, 0x62, + 0xd0, 0x00, 0x50, 0x0f, 0x80, 0x06, 0x52, 0x04, 0x62, 0xd0, 0x00, + 0x38, 0xfb, 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x02, + 0x70, 0xfe, 0x62, 0xd0, 0x00, 0x26, 0x2a, 0xf0, 0x51, 0xb0, 0x01, 0x01, + 0x53, 0x51, 0x51, 0x2a, 0x2a, 0x51, 0x53, 0x2a, 0x71, 0x01, 0x62, + 0xe3, 0x38, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20, 0x41, + 0x00, 0xf7, 0x56, 0x01, 0x00, 0x56, 0x00, 0x00, 0x80, 0x21, 0x10, + 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20, 0x53, 0x51, 0x47, 0x51, + 0x20, 0xa0, 0x03, 0x80, 0x1a, 0x50, 0x00, 0x08, + 0x50, 0x04, 0x08, 0x9e, 0xb6, 0x38, 0xfe, 0x77, 0x01, 0x0f, 0x00, 0x00, + 0x52, 0x01, 0x11, 0xdc, 0x52, 0x00, 0x19, 0x05, 0xcf, 0xd7, 0x56, + 0x01, 0x00, 0x56, 0x00, 0x00, 0x80, 0x21, 0x10, 0x7c, 0x05, 0xc5, + 0x62, 0xd0, 0x00, 0x20, 0x53, 0x51, 0x47, 0x51, 0x20, 0xb0, 0x03, + 0x80, 0x1a, 0x50, 0x00, 0x08, 0x50, 0x04, 0x08, 0x9e, 0x84, 0x38, + 0xfe, 0x77, 0x01, 0x0f, 0x00, 0x00, 0x52, 0x01, + 0x11, 0x2c, 0x52, 0x00, 0x19, 0x01, 0xcf, 0xd7, 0x43, 0x00, 0x08, 0x38, + 0xfe, 0x20, 0x7f, 0x10, 0x4f, 0x38, 0x02, 0x70, 0xfe, 0x62, 0xd0, + 0x00, 0x26, 0x2a, 0xf0, 0x51, 0xb0, 0x01, 0x09, 0x53, 0x51, 0x51, + 0x2a, 0x2a, 0x51, 0x53, 0x2a, 0x71, 0x01, 0x62, 0xe3, 0x38, 0x10, + 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20, 0x41, 0x00, 0xf7, 0x56, + 0x01, 0x00, 0x56, 0x00, 0x00, 0x80, 0x21, 0x10, + 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, 0x20, 0x53, 0x51, 0x47, 0x51, 0x20, + 0xa0, 0x03, 0x80, 0x1a, 0x50, 0x00, 0x08, 0x50, 0x04, 0x08, 0x9e, + 0x23, 0x38, 0xfe, 0x77, 0x01, 0x0f, 0x00, 0x00, 0x52, 0x01, 0x11, + 0xdc, 0x52, 0x00, 0x19, 0x05, 0xcf, 0xd7, 0x56, 0x01, 0x00, 0x56, + 0x00, 0x00, 0x80, 0x21, 0x10, 0x7c, 0x05, 0xc5, 0x62, 0xd0, 0x00, + 0x20, 0x53, 0x51, 0x47, 0x51, 0x20, 0xb0, 0x03, + 0x80, 0x1a, 0x50, 0x00, 0x08, 0x50, 0x04, 0x08, 0x9d, 0xf1, 0x38, 0xfe, + 0x77, 0x01, 0x0f, 0x00, 0x00, 0x52, 0x01, 0x11, 0x2c, 0x52, 0x00, + 0x19, 0x01, 0xcf, 0xd7, 0x43, 0x00, 0x08, 0x38, 0xfe, 0x20, 0x7f, + 0x10, 0x4f, 0x38, 0x04, 0x62, 0xd0, 0x00, 0x51, 0x2a, 0x21, 0xf0, + 0x54, 0x00, 0x51, 0x2d, 0x54, 0x01, 0x3d, 0x00, 0x10, 0xb0, 0x2a, + 0x55, 0xa7, 0x00, 0x3c, 0xab, 0x01, 0xb0, 0x09, + 0x55, 0x94, 0x00, 0x55, 0x95, 0x00, 0x80, 0x0f, 0x62, 0xd0, 0x00, 0x3c, + 0xae, 0x01, 0xa0, 0x07, 0x55, 0x94, 0x00, 0x55, 0x95, 0x00, 0x56, + 0x00, 0x00, 0x62, 0xd0, 0x00, 0x26, 0x2a, 0x0f, 0x81, 0x76, 0x3d, + 0x00, 0x20, 0xb0, 0x18, 0x62, 0xd0, 0x00, 0x55, 0xa7, 0x01, 0x55, + 0xa8, 0x00, 0x55, 0x94, 0x08, 0x55, 0x95, 0x08, 0x56, 0x00, 0x00, + 0x26, 0x2a, 0x0f, 0x81, 0x5a, 0x3d, 0x00, 0x30, + 0xb0, 0x0f, 0x62, 0xd0, 0x00, 0x55, 0xb1, 0x00, 0x56, 0x00, 0x00, 0x26, + 0x2a, 0x0f, 0x81, 0x47, 0x3d, 0x00, 0x40, 0xb0, 0x0f, 0x62, 0xd0, + 0x00, 0x55, 0xb1, 0x02, 0x56, 0x00, 0x00, 0x26, 0x2a, 0x0f, 0x81, + 0x34, 0x3d, 0x00, 0x50, 0xb0, 0xa7, 0x52, 0x01, 0x54, 0x03, 0x56, + 0x02, 0x00, 0x3d, 0x02, 0x00, 0xb0, 0x06, 0x3d, 0x03, 0x01, 0xa0, + 0x21, 0x3d, 0x02, 0x00, 0xb0, 0x06, 0x3d, 0x03, + 0x02, 0xa0, 0x28, 0x3d, 0x02, 0x00, 0xb0, 0x06, 0x3d, 0x03, 0x04, 0xa0, + 0x36, 0x3d, 0x02, 0x00, 0xb0, 0x06, 0x3d, 0x03, 0x08, 0xa0, 0x48, + 0x80, 0x62, 0x62, 0xd0, 0x00, 0x55, 0xaa, 0x01, 0x51, 0x2f, 0x29, + 0x80, 0x53, 0x2f, 0x7c, 0x0d, 0x19, 0x80, 0x51, 0x62, 0xd0, 0x00, + 0x51, 0x2b, 0x53, 0x42, 0x51, 0x2b, 0x53, 0x43, 0x51, 0x2b, 0x53, + 0x2e, 0x51, 0x2c, 0x53, 0x0e, 0x55, 0x0d, 0x00, + 0x80, 0x39, 0x62, 0xd0, 0x00, 0x51, 0x2b, 0x53, 0x2f, 0x3c, 0xaa, 0x00, + 0xa0, 0x09, 0x51, 0x2f, 0x29, 0x80, 0x53, 0x2f, 0x80, 0x25, 0x62, + 0xd0, 0x00, 0x26, 0x2f, 0x7f, 0x80, 0x1d, 0x62, 0xd0, 0x00, 0x55, + 0xaa, 0x00, 0x26, 0x2f, 0x7f, 0x51, 0x9c, 0x53, 0x24, 0x51, 0x24, + 0x53, 0x30, 0x51, 0x9d, 0x53, 0x25, 0x51, 0x25, 0x53, 0x31, 0x7c, + 0x0d, 0x19, 0x56, 0x00, 0x00, 0x62, 0xd0, 0x00, + 0x26, 0x2a, 0x0f, 0x55, 0x2b, 0x11, 0x55, 0x2c, 0x08, 0x55, 0x2d, 0x00, + 0x80, 0x89, 0x3d, 0x00, 0x60, 0xb0, 0x0f, 0x62, 0xd0, 0x00, 0x55, + 0xab, 0x01, 0x56, 0x00, 0x00, 0x26, 0x2a, 0x0f, 0x80, 0x76, 0x3d, + 0x00, 0x70, 0xb0, 0x0f, 0x62, 0xd0, 0x00, 0x55, 0xab, 0x00, 0x56, + 0x00, 0x00, 0x26, 0x2a, 0x0f, 0x80, 0x63, 0x3d, 0x00, 0x80, 0xb0, + 0x5e, 0x56, 0x00, 0x00, 0x62, 0xd0, 0x00, 0x26, + 0x2a, 0x0f, 0x9c, 0x9f, 0x10, 0x7c, 0x08, 0xb8, 0x7c, 0x05, 0xdb, 0x20, + 0x70, 0xfe, 0x93, 0xcf, 0x40, 0x62, 0xda, 0x00, 0x71, 0x10, 0x41, + 0xdc, 0xfe, 0x70, 0xcf, 0x43, 0x01, 0x08, 0x43, 0x00, 0x08, 0x50, + 0x00, 0x08, 0x50, 0x1e, 0x08, 0x9c, 0x52, 0x38, 0xfe, 0x71, 0x01, + 0x43, 0xe0, 0x10, 0x43, 0xff, 0x08, 0x70, 0xfe, 0x40, 0x40, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x10, 0x7c, 0x07, 0xe7, + 0x7c, 0x05, 0x8f, 0x7c, 0x05, 0xd0, 0x20, 0x93, 0x3f, 0x40, 0x62, 0xe3, + 0x38, 0x56, 0x00, 0x00, 0x62, 0xd0, 0x00, 0x26, 0x2a, 0x0f, 0x38, + 0xfc, 0x20, 0x7f, 0x62, 0xd0, 0x00, 0x3c, 0xa7, 0x00, 0xa0, 0x13, + 0x9c, 0x3f, 0x62, 0xd0, 0x00, 0x3c, 0xa8, 0x00, 0xb0, 0x33, 0x55, + 0xa8, 0x01, 0x7c, 0x0a, 0xee, 0x80, 0x2b, 0x62, 0xd0, 0x00, 0x50, + 0x01, 0x3a, 0x94, 0xd0, 0x08, 0x10, 0x7c, 0x04, + 0x8f, 0x20, 0x80, 0x06, 0x10, 0x7c, 0x04, 0x8b, 0x20, 0x62, 0xd0, 0x00, + 0x50, 0x01, 0x3a, 0x95, 0xd0, 0x08, 0x10, 0x7c, 0x04, 0x6c, 0x20, + 0x80, 0x06, 0x10, 0x7c, 0x04, 0x68, 0x20, 0x7f, 0x10, 0x4f, 0x38, + 0x03, 0x56, 0x02, 0x00, 0x56, 0x01, 0x00, 0x56, 0x00, 0x00, 0x80, + 0x3e, 0x62, 0xd0, 0x00, 0x91, 0xad, 0x40, 0x52, 0xfc, 0x04, 0x50, + 0x52, 0xfb, 0x0c, 0x51, 0x51, 0x51, 0x60, 0xd4, + 0x3e, 0x50, 0x53, 0x51, 0x3e, 0x50, 0x53, 0x50, 0x52, 0x02, 0x12, 0x50, + 0x52, 0x01, 0x1a, 0x51, 0xd0, 0x18, 0x91, 0x8c, 0x40, 0x52, 0xfc, + 0x04, 0x50, 0x52, 0xfb, 0x0c, 0x51, 0x51, 0x51, 0x60, 0xd4, 0x3e, + 0x50, 0x54, 0x01, 0x3e, 0x50, 0x54, 0x02, 0x77, 0x00, 0x52, 0x00, + 0x3b, 0xfa, 0xcf, 0xbe, 0x62, 0xd0, 0x00, 0x52, 0x02, 0x53, 0x50, + 0x52, 0x01, 0x53, 0x51, 0x38, 0xfd, 0x20, 0x7f, + 0x10, 0x7c, 0x04, 0x1a, 0x20, 0x10, 0x50, 0x04, 0x08, 0x50, 0x00, 0x08, + 0x50, 0x8c, 0x08, 0x7c, 0x04, 0x23, 0x38, 0xfd, 0x20, 0x10, 0x50, + 0x04, 0x08, 0x50, 0x00, 0x08, 0x50, 0x62, 0x08, 0x7c, 0x04, 0x23, + 0x38, 0xfd, 0x20, 0x10, 0x50, 0x04, 0x08, 0x50, 0x00, 0x08, 0x50, + 0x66, 0x08, 0x7c, 0x04, 0x23, 0x38, 0xfd, 0x20, 0x10, 0x50, 0x00, + 0x7c, 0x03, 0x3e, 0x20, 0x10, 0x50, 0xff, 0x7c, + 0x03, 0x3e, 0x20, 0x10, 0x50, 0xff, 0x7c, 0x03, 0x3e, 0x20, 0x7f, 0x62, + 0xd0, 0x00, 0x55, 0xaa, 0x00, 0x55, 0xab, 0x01, 0x10, 0x7c, 0x04, + 0x8f, 0x7c, 0x04, 0x6c, 0x20, 0x9b, 0x45, 0x62, 0xe3, 0x38, 0x92, + 0x7c, 0x40, 0x43, 0x00, 0x08, 0x62, 0xd0, 0x00, 0x55, 0x2a, 0x08, + 0x55, 0x2b, 0x11, 0x55, 0x2c, 0x08, 0x55, 0x2e, 0x1e, 0x55, 0x2f, + 0x03, 0x55, 0x30, 0x5f, 0x55, 0x31, 0x28, 0x55, + 0x32, 0x00, 0x55, 0x33, 0x00, 0x3c, 0xaa, 0x00, 0xa0, 0x09, 0x51, 0x2f, + 0x29, 0x80, 0x53, 0x2f, 0x80, 0x07, 0x62, 0xd0, 0x00, 0x26, 0x2f, + 0x7f, 0x10, 0x50, 0x00, 0x08, 0x50, 0x2a, 0x08, 0x50, 0x06, 0x08, + 0x50, 0x16, 0x08, 0x7c, 0x05, 0xe2, 0x38, 0xfc, 0x7c, 0x05, 0x8f, + 0x7c, 0x05, 0xd0, 0x20, 0x91, 0xd5, 0x40, 0x10, 0x7c, 0x07, 0xe7, + 0x7c, 0x07, 0x6d, 0x20, 0x7c, 0x0d, 0x19, 0x80, + 0x22, 0x62, 0xe3, 0x38, 0x7c, 0x10, 0xc2, 0x10, 0x7c, 0x07, 0xab, 0x62, + 0xd0, 0x00, 0x20, 0x39, 0x00, 0xa0, 0x09, 0x7c, 0x0a, 0x07, 0x7c, + 0x0a, 0x31, 0x80, 0x04, 0x7c, 0x0a, 0x9f, 0x9c, 0xc2, 0x9e, 0x78, + 0x8f, 0xde, 0x8f, 0xff, 0x10, 0x4f, 0x7c, 0x1b, 0xf1, 0x20, 0x70, + 0x3f, 0x71, 0xc0, 0x7f, 0x5d, 0xd0, 0x08, 0x62, 0xd0, 0x00, 0x50, + 0x00, 0x53, 0x4a, 0x53, 0x4b, 0x55, 0x49, 0x10, + 0x66, 0xfc, 0x6c, 0xfb, 0x6b, 0x4a, 0x6b, 0x4b, 0x51, 0x4a, 0x1b, 0xfa, + 0x51, 0x4b, 0x1b, 0xf9, 0xc0, 0x09, 0x53, 0x4b, 0x52, 0xfa, 0x1c, + 0x4a, 0x77, 0xfc, 0x7a, 0x49, 0xbf, 0xe3, 0x51, 0x4a, 0x54, 0xfa, + 0x51, 0x4b, 0x54, 0xf9, 0x18, 0x60, 0xd0, 0x7f, 0x55, 0x4d, 0x00, + 0x55, 0x4b, 0x00, 0x55, 0x4a, 0x00, 0x3c, 0x4d, 0x00, 0xb0, 0x06, + 0x3c, 0x4c, 0x00, 0xa0, 0x1a, 0x70, 0xfb, 0x6e, + 0x4d, 0x6e, 0x4c, 0xd0, 0x0c, 0x62, 0xd0, 0x00, 0x51, 0x4e, 0x04, 0x4b, + 0x51, 0x4f, 0x0c, 0x4a, 0x65, 0x4e, 0x6b, 0x4f, 0x8f, 0xde, 0x5f, + 0x4e, 0x4b, 0x5f, 0x4f, 0x4a, 0x62, 0xd0, 0x00, 0x7f, 0x52, 0x00, + 0x53, 0x50, 0x55, 0x51, 0x00, 0x65, 0x50, 0x6b, 0x51, 0x7f, 0x62, + 0xd0, 0x00, 0x52, 0x00, 0x53, 0x50, 0x55, 0x51, 0x00, 0x7f, 0x53, + 0x4e, 0x51, 0x51, 0x09, 0x00, 0x60, 0xd4, 0x3e, + 0x4e, 0x53, 0x4f, 0x3e, 0x4e, 0x53, 0x4e, 0x7f, 0x51, 0x51, 0x60, 0xd5, + 0x51, 0x4f, 0x3f, 0x50, 0x51, 0x4e, 0x3f, 0x50, 0x7f, 0x06, 0x50, + 0x8c, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, 0xd4, 0x3e, 0x50, 0x53, + 0x4f, 0x3e, 0x50, 0x16, 0x50, 0x02, 0x53, 0x4e, 0x7f, 0x60, 0xd4, + 0x3e, 0x4e, 0x53, 0x4f, 0x3e, 0x4e, 0x53, 0x4e, 0x7f, 0x09, 0x00, + 0x60, 0xd4, 0x3e, 0x4e, 0x53, 0x4f, 0x3e, 0x4e, + 0x7f, 0x55, 0x4e, 0x06, 0x55, 0x4f, 0x00, 0x55, 0x4b, 0x00, 0x55, 0x4a, + 0x00, 0x3c, 0x4f, 0x00, 0xb0, 0x06, 0x3c, 0x4e, 0x00, 0xa0, 0x1a, + 0x70, 0xfb, 0x6e, 0x4f, 0x6e, 0x4e, 0xd0, 0x0c, 0x62, 0xd0, 0x00, + 0x51, 0x50, 0x04, 0x4b, 0x51, 0x51, 0x0c, 0x4a, 0x65, 0x50, 0x6b, + 0x51, 0x8f, 0xde, 0x5f, 0x50, 0x4b, 0x5f, 0x51, 0x4a, 0x62, 0xd0, + 0x00, 0x5a, 0x4e, 0x06, 0x4e, 0x01, 0x51, 0x4e, + 0x04, 0x50, 0x0e, 0x51, 0x03, 0x7f, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, + 0xd4, 0x3e, 0x50, 0x53, 0x51, 0x7f, 0x60, 0xd4, 0x3e, 0x50, 0x53, + 0x51, 0x3e, 0x50, 0x53, 0x50, 0x7f, 0x53, 0x4e, 0x51, 0x51, 0x09, + 0x00, 0x60, 0xd5, 0x52, 0x14, 0x3f, 0x4e, 0x52, 0x15, 0x3f, 0x4e, + 0x7f, 0x3e, 0x50, 0x53, 0x50, 0x51, 0x4e, 0x12, 0x50, 0x51, 0x4f, + 0x1a, 0x51, 0x7f, 0x53, 0x50, 0x52, 0xfb, 0x09, + 0x00, 0x60, 0xd4, 0x3e, 0x50, 0x7f, 0x0e, 0x4f, 0x00, 0x51, 0x4f, 0x60, + 0xd4, 0x3e, 0x4e, 0x53, 0x4f, 0x3e, 0x4e, 0x7f, 0x60, 0xd4, 0x3e, + 0x50, 0x54, 0x00, 0x3e, 0x50, 0x54, 0x01, 0x7f, 0x0e, 0x51, 0x00, + 0x51, 0x51, 0x60, 0xd5, 0x52, 0x14, 0x3f, 0x50, 0x52, 0x15, 0x3f, + 0x50, 0x7f, 0x52, 0x00, 0x53, 0x4e, 0x55, 0x4f, 0x00, 0x65, 0x4e, + 0x6b, 0x4f, 0x7f, 0x09, 0x00, 0x60, 0xd4, 0x3e, + 0x4c, 0x53, 0x4d, 0x3e, 0x4c, 0x53, 0x4c, 0x7f, 0x71, 0x10, 0x41, 0x04, + 0xfe, 0x41, 0x05, 0xfe, 0x41, 0x04, 0xfd, 0x41, 0x05, 0xfd, 0x70, + 0xcf, 0x43, 0x04, 0x01, 0x43, 0x04, 0x02, 0x71, 0x01, 0x7f, 0x0e, + 0x4f, 0x00, 0x51, 0x4f, 0x60, 0xd5, 0x51, 0x51, 0x3f, 0x4e, 0x7f, + 0x53, 0x4e, 0x55, 0x4f, 0x00, 0x65, 0x4e, 0x6b, 0x4f, 0x51, 0x4e, + 0x7f, 0x0e, 0x51, 0x00, 0x51, 0x51, 0x60, 0xd5, + 0x50, 0x00, 0x3f, 0x50, 0x7f, 0x3e, 0x50, 0x12, 0x4e, 0x54, 0x04, 0x51, + 0x51, 0x1a, 0x4f, 0x54, 0x03, 0x7f, 0x3e, 0x50, 0x12, 0x4e, 0x54, + 0x02, 0x51, 0x51, 0x1a, 0x4f, 0x54, 0x01, 0x7f, 0x71, 0x10, 0x41, + 0x00, 0xf7, 0x41, 0x01, 0xf7, 0x70, 0xcf, 0x7f, 0x00, 0x2a, 0x00, + 0x16, 0x00, 0x52, 0x00, 0x10, 0x00, 0x6a, 0x00, 0x22, 0x00, 0x90, + 0x00, 0x04, 0x00, 0x94, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x00, 0x98, 0x00, 0x04, 0x00, 0x9c, 0x02, 0x5f, 0x28, 0x00, 0x9e, + 0x00, 0x08, 0x00, 0xa6, 0x07, 0x03, 0x01, 0x01, 0x00, 0x00, 0x01, + 0x02, 0x00, 0xad, 0x00, 0x06, 0xff, 0x00, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 +}; diff --git a/drivers/input/keyboard/gpio_keys.c b/drivers/input/keyboard/gpio_keys.c index b8d2a93..bf75ef5 100644 --- a/drivers/input/keyboard/gpio_keys.c +++ b/drivers/input/keyboard/gpio_keys.c @@ -389,6 +389,59 @@ static struct attribute_group sec_key_attr_group = { .attrs = sec_key_attrs, }; +#ifdef CONFIG_MACH_GC1 +void gpio_keys_check_zoom_exception(unsigned int code, + bool *zoomkey, unsigned int *hotkey, unsigned int *index) +{ + switch (code) { + case KEY_CAMERA_ZOOMIN: + *hotkey = 0x221; + *index = 5; + break; + case KEY_CAMERA_ZOOMOUT: + *hotkey = 0x222; + *index = 6; + break; + case 0x221: + *hotkey = KEY_CAMERA_ZOOMIN; + *index = 3; + break; + case 0x222: + *hotkey = KEY_CAMERA_ZOOMOUT; + *index = 4; + break; + default: + *zoomkey = false; + return; + } + *zoomkey = true; +} +#endif + +#ifdef CONFIG_FAST_BOOT +extern bool fake_shut_down; + +struct timer_list fake_timer; +bool fake_pressed; + +static void gpio_keys_fake_off_check(unsigned long _data) +{ + struct input_dev *input = (struct input_dev *)_data; + unsigned int type = EV_KEY; + + if (fake_pressed == false) + return ; + + printk(KERN_DEBUG"[Keys] make event\n"); + + input_event(input, type, KEY_FAKE_PWR, 1); + input_sync(input); + + input_event(input, type, KEY_FAKE_PWR, 0); + input_sync(input); +} +#endif + static void gpio_keys_report_event(struct gpio_button_data *bdata) { struct gpio_keys_button *button = bdata->button; @@ -396,13 +449,61 @@ static void gpio_keys_report_event(struct gpio_button_data *bdata) unsigned int type = button->type ?: EV_KEY; int state = (gpio_get_value_cansleep(button->gpio) ? 1 : 0) ^ button->active_low; +#ifdef CONFIG_MACH_GC1 + struct gpio_keys_drvdata *ddata = input_get_drvdata(input); + struct gpio_button_data *tmp_bdata; + static bool overlapped; + static unsigned int hotkey; + unsigned int index_hotkey = 0; + bool zoomkey = false; + +#ifdef CONFIG_FAST_BOOT + /*Fake pwr off control*/ + if (fake_shut_down) { + if (button->code == KEY_POWER) { + if (!!state) { + printk(KERN_DEBUG"[Keys] start fake check\n"); + fake_pressed = true; + mod_timer(&fake_timer, + jiffies + msecs_to_jiffies(1000)); + } else { + printk(KERN_DEBUG"[Keys] end fake checkPwr 0\n"); + fake_pressed = false; + } + } + return ; + } +#endif + if (system_rev < 6 && system_rev >= 2) { + if (overlapped) { + if (hotkey == button->code && !state) { + bdata->key_state = !!state; + bdata->wakeup = false; + overlapped = false; +#ifdef CONFIG_SAMSUNG_PRODUCT_SHIP + printk(KERN_DEBUG"[KEYS] Ignored\n"); +#else + printk(KERN_DEBUG"[KEYS] Ignore %d %d\n", + hotkey, state); +#endif + return; + } + } + + gpio_keys_check_zoom_exception(button->code, &zoomkey, + &hotkey, &index_hotkey); + } +#endif if (type == EV_ABS) { - if (state) + if (state) { input_event(input, type, button->code, button->value); + input_sync(input); + } } else { if (bdata->wakeup && !state) { input_event(input, type, button->code, !state); + input_sync(input); if (button->code == KEY_POWER) printk(KERN_DEBUG"[keys] f PWR %d\n", !state); } @@ -410,12 +511,32 @@ static void gpio_keys_report_event(struct gpio_button_data *bdata) bdata->key_state = !!state; bdata->wakeup = false; + +#ifdef CONFIG_MACH_GC1 + if (system_rev < 6 && system_rev >= 2 + && zoomkey && state) { + tmp_bdata = &ddata->data[index_hotkey]; + + if (tmp_bdata->key_state) { +#ifdef CONFIG_SAMSUNG_PRODUCT_SHIP + printk(KERN_DEBUG"[KEYS] overlapped\n"); +#else + printk(KERN_DEBUG"[KEYS] overlapped. Forced release c %d h %d\n", + tmp_bdata->button->code, hotkey); +#endif + input_event(input, type, hotkey, 0); + input_sync(input); + + overlapped = true; + } + } +#endif input_event(input, type, button->code, !!state); + input_sync(input); + if (button->code == KEY_POWER) printk(KERN_DEBUG"[keys]PWR %d\n", !!state); } - - input_sync(input); } static void gpio_keys_work_func(struct work_struct *work) @@ -638,6 +759,12 @@ static int __devinit gpio_keys_probe(struct platform_device *pdev) gpio_keys_report_event(&ddata->data[i]); input_sync(input); +#ifdef CONFIG_FAST_BOOT + /*Fake power off*/ + input_set_capability(input, EV_KEY, KEY_FAKE_PWR); + setup_timer(&fake_timer, gpio_keys_fake_off_check, + (unsigned long)input); +#endif device_init_wakeup(&pdev->dev, wakeup); return 0; diff --git a/drivers/input/keyboard/samsung-keypad.c b/drivers/input/keyboard/samsung-keypad.c index f689f49..74581e3 100644 --- a/drivers/input/keyboard/samsung-keypad.c +++ b/drivers/input/keyboard/samsung-keypad.c @@ -23,6 +23,13 @@ #include <linux/slab.h> #include <linux/sched.h> #include <plat/keypad.h> +#include <linux/regulator/consumer.h> +#include <linux/regulator/driver.h> +#include <linux/regulator/machine.h> +#include <linux/gpio.h> +#include <plat/gpio-cfg.h> + + #define SAMSUNG_KEYIFCON 0x00 #define SAMSUNG_KEYIFSTSCLR 0x04 @@ -56,6 +63,11 @@ /* SAMSUNG_KEYIFFC */ #define SAMSUNG_KEYIFFC_MASK (0x3ff << 0) +extern struct class *sec_class; + +static int key_suspend; +static int key_led_prev; + enum samsung_keypad_type { KEYPAD_TYPE_SAMSUNG, KEYPAD_TYPE_S5PV210, @@ -64,6 +76,7 @@ enum samsung_keypad_type { struct samsung_keypad { struct input_dev *input_dev; struct clk *clk; + struct device *dev; void __iomem *base; wait_queue_head_t wait; bool stopped; @@ -132,16 +145,15 @@ static bool samsung_keypad_report(struct samsung_keypad *keypad, continue; pressed = row_state[col] & (1 << row); - + pressed = pressed ? 1 : 0; dev_dbg(&keypad->input_dev->dev, "key %s, row: %d, col: %d\n", pressed ? "pressed" : "released", row, col); val = MATRIX_SCAN_CODE(row, col, keypad->row_shift); - input_event(input_dev, EV_MSC, MSC_SCAN, val); - input_report_key(input_dev, - keypad->keycodes[val], pressed); + input_event(input_dev, EV_KEY, keypad->keycodes[val], pressed); + printk(KERN_INFO "[KEY]:%d, :%d, %d\n", keypad->keycodes[val], val, pressed); } input_sync(keypad->input_dev); } @@ -158,13 +170,14 @@ static irqreturn_t samsung_keypad_irq(int irq, void *dev_id) unsigned int val; bool key_down; + + printk(KERN_INFO "[KEY]samsung_keypad_irq()\n"); + do { val = readl(keypad->base + SAMSUNG_KEYIFSTSCLR); /* Clear interrupt. */ writel(~0x0, keypad->base + SAMSUNG_KEYIFSTSCLR); - samsung_keypad_scan(keypad, row_state); - key_down = samsung_keypad_report(keypad, row_state); if (key_down) wait_event_timeout(keypad->wait, keypad->stopped, @@ -175,10 +188,36 @@ static irqreturn_t samsung_keypad_irq(int irq, void *dev_id) return IRQ_HANDLED; } +static irqreturn_t samsung_keypad_xeint_irq(int irq, void *dev_id) +{ + struct samsung_keypad *keypad = dev_id; + struct input_dev *input_dev = keypad->input_dev; + unsigned int val; + + printk(KERN_INFO "[KEY]samsung_keypad_xeint_irq()\n"); + + input_event(input_dev, EV_KEY, KEY_POWER, 1); + input_event(input_dev, EV_KEY, KEY_POWER, 0); + input_sync(input_dev); + + s3c_gpio_cfgpin(GPIO_KBR_0, S3C_GPIO_SFN(3)); + s3c_gpio_setpull(GPIO_KBR_0, S3C_GPIO_PULL_UP); + s3c_gpio_cfgpin(GPIO_KBR_1, S3C_GPIO_SFN(3)); + s3c_gpio_setpull(GPIO_KBR_1, S3C_GPIO_PULL_UP); + s3c_gpio_cfgpin(GPIO_KBR_2, S3C_GPIO_SFN(3)); + s3c_gpio_setpull(GPIO_KBR_2, S3C_GPIO_PULL_UP); + s3c_gpio_cfgall_range(GPIO_KBR_3, 2, S3C_GPIO_SFN(3), S3C_GPIO_PULL_UP); + s3c_gpio_cfgall_range(GPIO_KBC_0, 5, S3C_GPIO_SFN(3), S3C_GPIO_PULL_NONE); + + return IRQ_HANDLED; +} + static void samsung_keypad_start(struct samsung_keypad *keypad) { unsigned int val; + printk(KERN_INFO "[KEY]samsung_keypad_start()\n"); + /* Tell IRQ thread that it may poll the device. */ keypad->stopped = false; @@ -197,6 +236,8 @@ static void samsung_keypad_stop(struct samsung_keypad *keypad) { unsigned int val; + printk(KERN_INFO "[KEY]samsung_keypad_stop()\n"); + /* Signal IRQ thread to stop polling and disable the handler. */ keypad->stopped = true; wake_up(&keypad->wait); @@ -235,6 +276,76 @@ static void samsung_keypad_close(struct input_dev *input_dev) samsung_keypad_stop(keypad); } +static ssize_t key_disable_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ +/* struct samsung_keypad *keypad = dev_get_drvdata(dev);*/ + return 0; + +} + +static ssize_t key_disable_store(struct device *dev, + struct device_attribute *attr, const char *buf, + size_t size) +{ +/* struct samsung_keypad *keypad = dev_get_drvdata(dev);*/ + + return 0; +} + +static ssize_t key_pressed_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct samsung_keypad *keypad = dev_get_drvdata(dev); + return 0; +} + +static ssize_t key_led_onoff(struct device *dev, + struct device_attribute *attr, const char *buf, + size_t size) +{ + int data; + struct regulator *regulator; + regulator = regulator_get(NULL, "VREG_KEY"); + if (IS_ERR(regulator)) + return 0; + sscanf(buf, "%d\n", &data); + + if (key_led_prev == data || key_suspend == 1) + return 0; + if (data) { + regulator_enable(regulator); + printk(KERN_INFO "[KEY] key_led_on\n"); + } + else { + regulator_disable(regulator); + printk(KERN_INFO "[KEY] key_led_off\n"); + } + key_led_prev = data; + regulator_put(regulator); + mdelay(70); + return 0; +} + +static DEVICE_ATTR(disable_key, S_IRUGO | S_IWUSR | S_IWGRP, + key_disable_show, key_disable_store); +static DEVICE_ATTR(key_pressed, S_IRUGO | S_IWUSR | S_IWGRP, + key_pressed_show, NULL); +static DEVICE_ATTR(keyled_onoff, S_IRUGO | S_IWUSR | S_IWGRP, + NULL, key_led_onoff); + +static struct attribute *key_attributes[] = { + &dev_attr_disable_key.attr, + &dev_attr_key_pressed.attr, + &dev_attr_keyled_onoff.attr, + NULL, +}; + +static struct attribute_group key_attr_group = { + .attrs = key_attributes, +}; + + static int __devinit samsung_keypad_probe(struct platform_device *pdev) { const struct samsung_keypad_platdata *pdata; @@ -245,6 +356,7 @@ static int __devinit samsung_keypad_probe(struct platform_device *pdev) unsigned int row_shift; unsigned int keymap_size; int error; + int ret; pdata = pdev->dev.platform_data; if (!pdata) { @@ -304,6 +416,11 @@ static int __devinit samsung_keypad_probe(struct platform_device *pdev) init_waitqueue_head(&keypad->wait); input_dev->name = pdev->name; + #if defined(CONFIG_MACH_GRANDE) || defined(CONFIG_MACH_IRON) + input_dev->phys = "grande_3x4_keypad/input0"; + #else + input_dev->phys = "samsung-keypad/input0"; + #endif input_dev->id.bustype = BUS_HOST; input_dev->dev.parent = &pdev->dev; input_set_drvdata(input_dev, keypad); @@ -311,11 +428,17 @@ static int __devinit samsung_keypad_probe(struct platform_device *pdev) input_dev->open = samsung_keypad_open; input_dev->close = samsung_keypad_close; - input_dev->evbit[0] = BIT_MASK(EV_KEY); + + set_bit(EV_SYN, input_dev->evbit); + set_bit(EV_LED, input_dev->evbit); + set_bit(LED_MISC, input_dev->ledbit); + set_bit(EV_KEY, input_dev->evbit); if (!pdata->no_autorepeat) - input_dev->evbit[0] |= BIT_MASK(EV_REP); + set_bit(EV_REP, input_dev->evbit); - input_set_capability(input_dev, EV_MSC, MSC_SCAN); + + /* when sleep => wakeup, we want to report key-value as KEY_POWER */ + input_set_capability(input_dev, EV_KEY, KEY_POWER); input_dev->keycode = keypad->keycodes; input_dev->keycodesize = sizeof(keypad->keycodes[0]); @@ -343,6 +466,21 @@ static int __devinit samsung_keypad_probe(struct platform_device *pdev) device_init_wakeup(&pdev->dev, pdata->wakeup); platform_set_drvdata(pdev, keypad); + /*sysfs*/ + keypad->dev = device_create(sec_class, NULL, 0, NULL, "sec_keypad"); + if (IS_ERR(keypad->dev)) { + printk(KERN_ERR "Failed to create device(tkey_i2c->dev)!\n"); + input_unregister_device(input_dev); + } else { + dev_set_drvdata(keypad->dev, keypad); + ret = sysfs_create_group(&keypad->dev->kobj, + &key_attr_group); + if (ret) { + printk(KERN_ERR + "[Key]: failed to create sysfs group\n"); + } + } + return 0; err_free_irq: @@ -381,7 +519,7 @@ static int __devexit samsung_keypad_remove(struct platform_device *pdev) return 0; } -#ifdef CONFIG_PM +#if 1 /*CONFIG_PM*/ static void samsung_keypad_toggle_wakeup(struct samsung_keypad *keypad, bool enable) { @@ -410,13 +548,56 @@ static int samsung_keypad_suspend(struct device *dev) struct platform_device *pdev = to_platform_device(dev); struct samsung_keypad *keypad = platform_get_drvdata(pdev); struct input_dev *input_dev = keypad->input_dev; + int irq; + int error; + + printk(KERN_INFO "[KEY] samsung_keypad_suspend()\n"); mutex_lock(&input_dev->mutex); if (input_dev->users) samsung_keypad_stop(keypad); - samsung_keypad_toggle_wakeup(keypad, true); +/* samsung_keypad_toggle_wakeup(keypad, true); */ + + s3c_gpio_cfgpin(GPIO_KBR_0, S3C_GPIO_SFN(0xf)); + s3c_gpio_setpull(GPIO_KBR_0, S3C_GPIO_PULL_UP); + s3c_gpio_cfgpin(GPIO_KBR_1, S3C_GPIO_SFN(0xf)); + s3c_gpio_setpull(GPIO_KBR_1, S3C_GPIO_PULL_UP); + s3c_gpio_cfgpin(GPIO_KBR_2, S3C_GPIO_SFN(0xf)); + s3c_gpio_setpull(GPIO_KBR_2, S3C_GPIO_PULL_UP); + s3c_gpio_cfgall_range(GPIO_KBR_3, 2, S3C_GPIO_SFN(0xf), S3C_GPIO_PULL_UP); + s3c_gpio_cfgall_range(GPIO_KBC_0, 5, S3C_GPIO_OUTPUT, S3C_GPIO_PULL_DOWN); + + irq = gpio_to_irq(GPIO_KBR_0); + /*printk(KERN_INFO "[KEY] KP_ROW[2] : %d\n", irq); // KBR(0)*/ + error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq, + IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad); + enable_irq_wake(irq); + + irq = gpio_to_irq(GPIO_KBR_1); + /*printk(KERN_INFO "[KEY] KP_ROW[4] : %d\n", irq); // KBR(3)*/ + error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq, + IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad); + enable_irq_wake(irq); + + irq = gpio_to_irq(GPIO_KBR_2); + /*printk(KERN_INFO "[KEY] KP_ROW[8] : %d\n", irq); // KBR(1)*/ + error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq, + IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad); + enable_irq_wake(irq); + + irq = gpio_to_irq(GPIO_KBR_3); + /*printk(KERN_INFO "[KEY] KP_ROW[11] : %d\n", irq); // KBR(4)*/ + error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq, + IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad); + enable_irq_wake(irq); + + irq = gpio_to_irq(GPIO_KBR_4); + /*printk(KERN_INFO "[KEY] KP_ROW[12] : %d\n", irq); // KBR(2)*/ + error = request_threaded_irq(irq, NULL, samsung_keypad_xeint_irq, + IRQF_TRIGGER_FALLING, dev_name(&pdev->dev), keypad); + enable_irq_wake(irq); mutex_unlock(&input_dev->mutex); @@ -429,15 +610,18 @@ static int samsung_keypad_resume(struct device *dev) struct samsung_keypad *keypad = platform_get_drvdata(pdev); struct input_dev *input_dev = keypad->input_dev; + printk(KERN_INFO "[KEY]samsung_keypad_resume()\n"); + mutex_lock(&input_dev->mutex); - samsung_keypad_toggle_wakeup(keypad, false); +/* samsung_keypad_toggle_wakeup(keypad, false);*/ if (input_dev->users) samsung_keypad_start(keypad); mutex_unlock(&input_dev->mutex); + key_suspend = 0; return 0; } @@ -449,7 +633,11 @@ static const struct dev_pm_ops samsung_keypad_pm_ops = { static struct platform_device_id samsung_keypad_driver_ids[] = { { + #if defined(CONFIG_MACH_GRANDE) || defined(CONFIG_MACH_IRON) + .name = "grande_3x4_keypad", + #else .name = "samsung-keypad", + #endif .driver_data = KEYPAD_TYPE_SAMSUNG, }, { .name = "s5pv210-keypad", @@ -463,9 +651,13 @@ static struct platform_driver samsung_keypad_driver = { .probe = samsung_keypad_probe, .remove = __devexit_p(samsung_keypad_remove), .driver = { +#if defined(CONFIG_MACH_GRANDE) || defined(CONFIG_MACH_IRON) + .name = "grande_3x4_keypad", +#else .name = "samsung-keypad", +#endif .owner = THIS_MODULE, -#ifdef CONFIG_PM +#if 1 /*CONFIG_PM*/ .pm = &samsung_keypad_pm_ops, #endif }, |