diff options
Diffstat (limited to 'drivers/input/touchscreen/msg2233')
35 files changed, 41585 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/msg2233/Makefile b/drivers/input/touchscreen/msg2233/Makefile new file mode 100644 index 00000000..3d778e5b --- /dev/null +++ b/drivers/input/touchscreen/msg2233/Makefile @@ -0,0 +1,20 @@ +# +# Makefile for the input core drivers. +# + +# Each configuration option enables a list of files. +obj-y += mstar_drv_sprd.o \ + mstar_drv_common.o \ + mstar_drv_ic_fw_porting_layer.o \ + mstar_drv_main.o \ + mstar_drv_platform_interface.o \ + mstar_drv_platform_porting_layer.o \ + mstar_drv_self_fw_control.o \ + mstar_drv_utility_adaption.o \ + mstar_drv_hotknot.o \ + mstar_drv_hotknot_queue.o \ + mstar_drv_jni_interface.o \ + mstar_drv_mutual_fw_control.o \ + mstar_drv_mutual_mp_test.o \ + mstar_drv_self_mp_test.o \ +# end diff --git a/drivers/input/touchscreen/msg2233/msg21xxa_xxxx_update_bin.h b/drivers/input/touchscreen/msg2233/msg21xxa_xxxx_update_bin.h new file mode 100755 index 00000000..960c4716 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/msg21xxa_xxxx_update_bin.h @@ -0,0 +1,3106 @@ +u8 msg21xxa_xxxx_update_bin[49664]={
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x52,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xFD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xEF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xD3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xC5,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x1C,0x40,0x00,0x1C,
+0x60,0x00,0x1C,0x80,0x00,0x1C,0xA0,0x00,0x1C,0xC0,0x00,0x1C,0xE0,0x00,0x1D,0x00,
+0x00,0x1D,0x20,0x00,0x1D,0x40,0x00,0x1D,0x60,0x00,0x1D,0x80,0x00,0x1D,0xA0,0x00,
+0x1D,0xC0,0x00,0x1D,0xE0,0x00,0x1E,0x00,0x00,0x1E,0x20,0x00,0x1E,0x40,0x00,0x1E,
+0x60,0x00,0x1E,0x80,0x00,0x1E,0xA0,0x00,0x1E,0xC0,0x00,0x1E,0xE0,0x00,0x1F,0x00,
+0x00,0x1F,0x20,0x00,0x1F,0x40,0x00,0x1F,0x60,0x00,0x1F,0x80,0x00,0x1F,0xA0,0x00,
+0x1F,0xC0,0x00,0x1F,0xE0,0x00,0xC0,0x60,0x00,0x01,0xC8,0x63,0xAC,0x04,0x84,0x69,
+0x80,0x01,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,
+0xFC,0x21,0xFF,0x60,0xEF,0xE1,0x00,0x80,0xFF,0xE1,0x00,0xA0,0x0F,0xE1,0x08,0xC3,
+0xE0,0x02,0x0F,0x0F,0xE1,0x00,0xC3,0xE0,0x04,0x0F,0x0F,0xE1,0x04,0xC3,0xE0,0x03,
+0x0F,0xEF,0xE1,0x00,0x84,0xC3,0xE0,0x05,0x0F,0xEF,0xE1,0x00,0x88,0xC3,0xE0,0x05,
+0x1F,0xEF,0xE1,0x00,0x8C,0xE4,0x01,0x53,0x41,0x90,0x00,0x90,0x00,0x90,0x00,0x90,
+0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x30,0x44,0x0B,
+0x17,0x01,0x98,0x60,0x56,0xF8,0x01,0x4F,0x18,0x79,0x22,0xE0,0x14,0x98,0x62,0x23,
+0x00,0x18,0x58,0x77,0x01,0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0C,0x81,0x04,0x0D,
+0x21,0x0C,0x5D,0x43,0x00,0xE7,0xFF,0xFF,0xA4,0x0C,0x81,0x06,0x5C,0x63,0x00,0x20,
+0x60,0x66,0x9B,0x00,0x21,0x40,0x30,0x21,0x44,0x24,0x5D,0x40,0x41,0x4B,0x01,0x01,
+0xD0,0x81,0x04,0x66,0xE4,0x00,0x01,0x17,0xE7,0xFF,0xFF,0x5E,0x5C,0x63,0x00,0x20,
+0x64,0x4E,0xD1,0x40,0x05,0xD2,0xD1,0x41,0x05,0xB2,0xD1,0x42,0x05,0x96,0xE4,0x00,
+0x00,0xE3,0xE7,0xFF,0xFF,0x2A,0x5C,0x63,0x00,0xD0,0x62,0x05,0x1E,0x9B,0x01,0x21,
+0x40,0x24,0x5D,0x40,0x21,0x4B,0x01,0x01,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,
+0xCB,0x57,0x23,0x78,0x0B,0x7A,0x01,0x47,0x79,0xDD,0x5F,0x7B,0x04,0x0F,0x7A,0x01,
+0xCB,0x57,0x23,0x6C,0x0B,0x7A,0x01,0xC7,0x7B,0x8F,0xFF,0x0F,0x7A,0x01,0xCB,0x57,
+0x3C,0xD4,0x0B,0x7A,0x01,0x47,0x79,0xDD,0x5F,0x7B,0x04,0x0F,0x7A,0x01,0xCB,0x57,
+0x3C,0xE0,0x0B,0x7A,0x01,0xC7,0x7B,0x7F,0xFF,0x0F,0x7A,0x01,0xCA,0xF7,0x3C,0xEC,
+0x0B,0x57,0x01,0x47,0x39,0xD5,0x5F,0x39,0x04,0x0F,0x37,0x01,0x23,0x01,0x00,0xC2,
+0xF4,0x00,0x01,0xCB,0x17,0x3D,0xE8,0x0B,0x38,0x01,0xFF,0x20,0x11,0x11,0x0F,0x38,
+0x01,0xCB,0x17,0x3D,0xEC,0x0B,0x38,0x01,0xFF,0x20,0x22,0x22,0x0F,0x38,0x01,0xCB,
+0x17,0x3D,0xF0,0x0B,0x38,0x01,0xFF,0x20,0x33,0x33,0x0F,0x38,0x01,0xCA,0xF7,0x78,
+0xC0,0xFF,0x00,0xAA,0x55,0x0F,0x17,0x01,0xE4,0x00,0x00,0x01,0x0D,0x41,0x0A,0x0D,
+0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x03,0xF0,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x03,0xE8,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x03,0xEC,0xC2,
+0xE0,0x10,0x01,0xEC,0xD7,0x04,0x04,0xC2,0xE0,0x10,0x01,0xEC,0xF7,0x03,0xFC,0xC2,
+0xE0,0x10,0x01,0x0F,0x01,0x02,0xED,0x17,0x04,0x00,0xC2,0xE0,0x10,0x01,0xEF,0x17,
+0x04,0x10,0xC2,0xE0,0x10,0x01,0x0F,0x01,0x06,0xEF,0x17,0x03,0xD4,0xC2,0xE0,0x10,
+0x01,0x0F,0x01,0x0A,0xEF,0x17,0x03,0xF4,0x85,0x29,0x5C,0x84,0x00,0xC2,0xE0,0x10,
+0x01,0x4C,0x84,0x10,0xFE,0xF7,0x04,0x08,0x8E,0xE4,0x0C,0x77,0x00,0x85,0x29,0x5C,
+0x63,0x00,0x9B,0x00,0x24,0x68,0x25,0x1F,0x03,0xFE,0x5F,0x18,0x00,0xC2,0xE0,0x10,
+0x01,0xF3,0x57,0x0B,0x1E,0x1E,0xE3,0x01,0x1F,0x9A,0xFF,0x5F,0x3C,0x00,0xD7,0x97,
+0x00,0x50,0x1F,0x23,0x02,0x5F,0x39,0x00,0xC2,0xEF,0xFF,0xE1,0xCA,0xF7,0xFF,0xFF,
+0xE4,0x00,0x00,0x2F,0x4F,0x78,0x10,0x9F,0x01,0x8F,0x64,0x5F,0x18,0x00,0x0F,0x7B,
+0x02,0x5E,0xFB,0x15,0x4A,0xF7,0xD8,0xD7,0x19,0xFF,0x69,0x4F,0x03,0x10,0xC3,0x20,
+0x10,0x01,0x8F,0x04,0xEF,0x39,0x03,0xF6,0x0F,0x18,0x02,0xD7,0x38,0x01,0x41,0xC3,
+0x20,0x10,0x01,0xEF,0x79,0x03,0xF2,0xC3,0x20,0x10,0x01,0xEF,0xB9,0x03,0xEA,0xC3,
+0x20,0x10,0x01,0xEF,0xD9,0x03,0xEE,0xC3,0x20,0x10,0x01,0xEF,0x39,0x04,0x06,0xE4,
+0x00,0x00,0x49,0xC3,0x20,0x10,0x01,0xEF,0x79,0x03,0xFE,0xC3,0x20,0x10,0x01,0xEF,
+0xB9,0x04,0x02,0xC3,0x20,0x10,0x01,0xEF,0xD9,0x04,0x12,0xC3,0x20,0x10,0x01,0xEF,
+0x39,0x03,0xD6,0x20,0x60,0xDE,0x0F,0x44,0x02,0x0F,0x84,0x06,0xCF,0x5A,0x00,0x32,
+0x40,0xE7,0xE3,0xD7,0x47,0x05,0xDC,0x42,0xF7,0x2D,0x40,0xA5,0xCB,0x43,0x77,0xDB,
+0x43,0x3B,0x2C,0xCC,0xC6,0x00,0x0A,0x9B,0x4A,0x8C,0xD9,0x98,0x61,0x40,0xC6,0xD0,
+0xD7,0x06,0x04,0xF4,0x98,0x60,0xE4,0x00,0x01,0x31,0x20,0x64,0x6A,0x0F,0x44,0x02,
+0x0F,0x64,0x06,0xCF,0x5A,0x00,0x32,0x40,0xE7,0xDB,0x98,0x60,0xD7,0x47,0x04,0x14,
+0xE4,0x00,0x00,0x55,0x1C,0xFA,0xFE,0xD4,0x67,0x01,0x9E,0x4C,0x63,0x10,0x9F,0x5F,
+0x4F,0x5A,0x10,0x8F,0x44,0x8C,0x83,0x0F,0x5A,0x02,0x0F,0x64,0x02,0xCF,0x5A,0x00,
+0x32,0x41,0x08,0xDB,0x98,0x60,0xD7,0x48,0x02,0xC4,0x42,0xF7,0x2D,0x40,0xA5,0xCB,
+0x43,0xB7,0xEB,0x43,0x3D,0x2C,0xE7,0xFF,0xFF,0x3B,0xD4,0x7C,0x01,0x3E,0x9F,0x5F,
+0x4C,0xE7,0x10,0x4F,0x5A,0x10,0x98,0x60,0x8F,0x44,0x8C,0x87,0x0F,0x5A,0x02,0x0F,
+0x84,0x02,0xCF,0x5A,0x00,0x32,0x41,0x08,0xE3,0xD7,0x48,0x01,0x2C,0xE7,0xFF,0xFE,
+0xD5,0x42,0xF7,0x2D,0xCC,0xC6,0x00,0x0A,0x43,0xD7,0xF3,0x40,0xA5,0xCB,0x9B,0x4A,
+0x43,0x3E,0x2C,0x8C,0xD9,0x40,0xC6,0xD0,0xD7,0x06,0xFB,0x60,0x98,0x61,0x85,0x29,
+0xC2,0xE0,0x10,0x01,0x9B,0x21,0xEA,0xF7,0x01,0x79,0x9E,0xFF,0x5E,0xF7,0x04,0x26,
+0xE4,0x43,0xC3,0x18,0x00,0x21,0xFF,0x18,0xB6,0xF8,0x8E,0xF8,0x13,0x37,0x00,0xC3,
+0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x0B,0x1A,0xFE,0xF7,0x09,0x0C,0xD0,
+0x60,0x05,0x16,0x13,0x58,0x04,0x13,0xD8,0x01,0x1F,0x7A,0xFF,0x9F,0xC1,0x43,0xDE,
+0xD3,0x4F,0x5A,0x08,0xCD,0x1B,0x00,0x03,0x5C,0x9A,0x00,0x4F,0x7B,0x08,0x9B,0x40,
+0x5C,0x7B,0x00,0xE4,0x00,0x00,0x73,0x43,0x9A,0xDC,0x4F,0xBC,0x08,0x8F,0xB7,0x08,
+0xBD,0x01,0x40,0xB9,0x2B,0x0C,0xBD,0x01,0x9F,0x81,0x8F,0x63,0x4F,0x9C,0x08,0x5F,
+0x7B,0x00,0x8F,0x97,0x0B,0xBC,0x01,0x43,0xB9,0xEB,0x0F,0xBC,0x01,0xE4,0x00,0x00,
+0x0D,0x9B,0x60,0xD5,0x1B,0xFE,0xA4,0x8F,0x44,0x5F,0x5A,0x00,0xD7,0xDA,0xFF,0xAC,
+0x0B,0x37,0x02,0x0B,0x57,0x00,0x8F,0x59,0xC3,0x20,0x10,0x01,0xFF,0x39,0x09,0xBC,
+0x0F,0x59,0x00,0x13,0x58,0x04,0x1F,0xBA,0xFF,0x4F,0xBD,0x10,0x43,0xDD,0xCC,0x8F,
+0xB7,0x4F,0x9A,0x08,0x09,0x1D,0x00,0x1F,0x7C,0xFF,0x4F,0xBB,0x08,0x8F,0xB7,0x0B,
+0xBD,0x00,0x8F,0xA8,0x0F,0xBE,0x00,0x13,0x18,0x01,0x27,0x05,0xAF,0xE4,0x00,0x01,
+0x45,0x20,0x66,0xFE,0x13,0x58,0x04,0x13,0xD8,0x01,0x1F,0x7A,0xFF,0x9F,0xC1,0x43,
+0xDE,0xD3,0x4F,0x5A,0x08,0xCD,0x1B,0x00,0x03,0x5C,0x9A,0x00,0x4F,0x7B,0x08,0x9B,
+0x40,0x5C,0x7B,0x00,0xE4,0x00,0x00,0x73,0x43,0x9A,0xDC,0x4F,0xBC,0x08,0x8F,0xB7,
+0x08,0xBD,0x00,0x40,0xA5,0xC8,0x0C,0xBD,0x01,0x9F,0x81,0x8F,0x63,0x4F,0x9C,0x08,
+0x5F,0x7B,0x00,0x8F,0x97,0x0B,0xBC,0x00,0x43,0xBD,0xC8,0x0F,0xBC,0x01,0xE4,0x00,
+0x00,0x0D,0x9B,0x60,0xD5,0x1B,0xFE,0xA4,0x8F,0x44,0x5F,0x5A,0x00,0xD7,0xDA,0xFF,
+0xAC,0xE7,0xFF,0xFE,0xBF,0x4F,0x1A,0x10,0x9F,0x81,0x43,0x58,0xCC,0x43,0xB8,0xBC,
+0x4F,0x9C,0x08,0x0B,0xBD,0x00,0x8F,0x97,0x0B,0x9C,0x00,0x8F,0x9D,0x0F,0x9A,0x00,
+0x4F,0x7B,0x10,0x1F,0x58,0xFE,0x8F,0x3B,0x4F,0x5A,0x08,0x9F,0x1F,0x8F,0x57,0x4F,
+0x18,0x08,0x0B,0x5A,0x00,0x8E,0xF8,0x0A,0xF7,0x00,0x8E,0xFA,0x0E,0xF9,0x00,0x85,
+0x29,0x5C,0xE7,0x00,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x0B,0x1E,0x42,0xE7,0xBB,0x5E,
+0xF7,0x00,0x9B,0x00,0x8C,0xB7,0x8C,0xD7,0xC3,0x80,0x10,0x01,0xC3,0x40,0x10,0x01,
+0x5C,0xC6,0x00,0x5C,0xA5,0x00,0x8B,0x38,0x9A,0xE0,0xFF,0x9C,0x09,0xBC,0xFF,0x5A,
+0x09,0x0C,0xE4,0x00,0x00,0x49,0x4F,0x65,0x10,0x43,0xBB,0xE4,0x0F,0xBD,0x02,0x9C,
+0xA1,0x8E,0xFD,0x5C,0xA5,0x00,0x8B,0xBB,0x8F,0x7A,0x8F,0xBA,0x0B,0x7B,0x00,0x0B,
+0xBD,0x02,0x8F,0x1B,0x8F,0x3D,0xD4,0xA6,0xFF,0x01,0x26,0xE0,0xE8,0x27,0x20,0xDC,
+0x27,0x00,0xD0,0xC3,0x40,0x10,0x01,0xFF,0x5A,0x04,0x08,0x4C,0xE7,0x10,0xCF,0x18,
+0xFF,0xF6,0x8C,0xFA,0x0F,0x47,0x02,0x43,0x3A,0xCB,0x9F,0x56,0x8F,0x19,0x43,0x58,
+0xD0,0xCF,0x5A,0x07,0xFF,0x43,0x5A,0xB8,0x0F,0x43,0x01,0x0E,0xE4,0x00,0x98,0x61,
+0xE4,0x00,0x00,0x0D,0x98,0x60,0x85,0x29,0x9A,0xE3,0x9B,0x01,0xE4,0x00,0x00,0x11,
+0x8F,0x17,0x9E,0xE2,0xD7,0x03,0xFF,0xE1,0x4C,0x77,0x09,0x9C,0x7F,0x85,0x29,0xFF,
+0x00,0x7F,0xFF,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x03,0xD8,0x0F,0x17,0x01,0x0F,0x17,
+0x03,0x0F,0x17,0x05,0x0F,0x17,0x07,0x0F,0x17,0x09,0x0F,0x17,0x0B,0x85,0x29,0xC3,
+0x00,0x10,0x01,0xFE,0xF8,0x03,0xD8,0xC3,0x00,0x10,0x01,0x0B,0x37,0x08,0xFF,0x18,
+0x0B,0x90,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0x41,0x0B,0x37,0x05,0x0F,0x37,0x09,0x0B,
+0x37,0x07,0xE4,0x00,0x00,0x1B,0x0B,0x38,0x17,0x0F,0x37,0x09,0x0B,0x38,0x19,0x0F,
+0x37,0x0B,0x0B,0x37,0x04,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0x41,0x0B,0x37,0x01,0x0F,
+0x37,0x05,0x0B,0x37,0x03,0xE4,0x00,0x00,0x1B,0x0B,0x38,0x17,0x0F,0x37,0x05,0x0B,
+0x38,0x19,0x0F,0x37,0x07,0x0B,0x38,0x17,0x0B,0x18,0x19,0x0F,0x37,0x01,0x0F,0x17,
+0x03,0x85,0x29,0x1C,0x21,0xD8,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x24,0x0D,0x41,0x20,
+0x0D,0x61,0x1C,0xFD,0x57,0x03,0xD8,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x0D,0xC1,0x10,
+0x09,0xAA,0x07,0x0B,0x0A,0x03,0x43,0x18,0x6D,0x5F,0x18,0x06,0x0F,0x01,0x0B,0x43,
+0x18,0xC3,0xE9,0x97,0x03,0xD9,0x09,0xCA,0x05,0x41,0x8C,0x75,0x5D,0x8C,0x06,0x40,
+0x6C,0x63,0x8C,0x78,0xE7,0xFF,0xFE,0x48,0x0A,0xEA,0x09,0x41,0xCE,0xBD,0x0A,0xEA,
+0x0B,0x42,0xED,0xBD,0x5E,0xF7,0x06,0x0E,0xE1,0x0F,0x42,0xF7,0xBB,0x5D,0x63,0x06,
+0x5D,0x4E,0x06,0x40,0x6A,0x53,0x8C,0x77,0xE7,0xFF,0xFE,0x00,0x5E,0xE3,0x06,0x98,
+0x61,0x21,0x60,0xAC,0x22,0xE0,0xA0,0x43,0x0B,0xB8,0xD3,0x05,0x01,0x14,0x41,0x4C,
+0x53,0x0B,0x01,0x0E,0x09,0x81,0x0A,0x41,0x6B,0xBB,0x43,0x0C,0xC3,0x8D,0x58,0xCD,
+0x4A,0x00,0x64,0x42,0xEA,0x58,0x5E,0xE8,0xB1,0x48,0x61,0x01,0x0D,0xC1,0x12,0x0D,
+0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,0x1C,0x21,
+0x28,0x85,0x29,0x1C,0x21,0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0x0D,0x61,0x0C,
+0x0D,0x81,0x08,0x0D,0xC1,0x00,0xF1,0x97,0x08,0x72,0xC1,0x40,0x10,0x01,0x1D,0x6C,
+0xFF,0x0D,0x21,0x14,0x0D,0xA1,0x04,0x5D,0xC3,0x00,0x5D,0x6B,0x00,0xFD,0x4A,0x0B,
+0x90,0x4E,0xEE,0x5D,0x56,0xF7,0x01,0x22,0xE0,0xD4,0x8A,0xEB,0xE4,0x00,0x00,0x43,
+0xCC,0x77,0x00,0x30,0x1D,0xB7,0x01,0x8C,0x6A,0xCC,0x8D,0x00,0x30,0x9C,0x64,0x8C,
+0x8A,0x50,0xA0,0x30,0x9C,0x84,0xE4,0x00,0x67,0xF4,0x5E,0xED,0x00,0xD5,0x97,0xFF,
+0x1D,0x12,0xEA,0x00,0x22,0xE0,0x20,0x9E,0xFF,0x1A,0xEA,0x00,0x21,0x60,0x30,0x9D,
+0x7F,0x5D,0x6B,0x00,0xE7,0xFF,0xFF,0x7B,0x12,0xEA,0x00,0x22,0xE0,0x52,0xC2,0xE0,
+0x10,0x01,0x9B,0x37,0xEB,0x17,0x08,0x87,0x47,0x18,0xCC,0xEF,0x17,0x08,0x87,0x0D,
+0xC1,0x02,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,
+0x16,0x1C,0x21,0x18,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xEB,0x37,
+0x01,0x78,0xFF,0x18,0x04,0x1C,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x1A,0x23,0x24,
+0xA6,0x13,0x37,0x04,0x9A,0xE0,0x9F,0x21,0xE4,0x00,0x00,0x2F,0x4F,0x57,0x08,0x1F,
+0x77,0xFF,0x8F,0x58,0x4F,0x7B,0x10,0x9E,0xE1,0x0F,0x7A,0x01,0x5E,0xF7,0x00,0xD6,
+0xF9,0xFF,0x68,0xE4,0x00,0x00,0x9D,0x23,0x28,0x38,0x13,0x37,0x04,0x9A,0xE0,0x9F,
+0x21,0xE4,0x00,0x00,0x79,0x13,0x37,0x04,0x9A,0xE0,0x9F,0x21,0xE4,0x00,0x00,0x2F,
+0x4F,0x57,0x08,0xCF,0x77,0x00,0x06,0x8F,0x58,0x9F,0x79,0x9E,0xE1,0x0F,0x7A,0x01,
+0x5E,0xF7,0x00,0xD6,0xF9,0xFF,0x68,0xE4,0x00,0x00,0x35,0x4F,0x57,0x08,0x4F,0x77,
+0x08,0x8F,0x58,0x9F,0x7F,0x9E,0xE1,0x0F,0x7A,0x01,0x5E,0xF7,0x00,0xD6,0xF9,0xFF,
+0x70,0x85,0x29,0x9C,0x30,0x5C,0xC6,0x00,0x0D,0x61,0x08,0x0D,0x81,0x04,0x0D,0xA1,
+0x00,0x0D,0x41,0x0C,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,0x1A,0x13,0xD8,0x04,0x40,
+0xC6,0xF3,0x5E,0xE6,0x00,0x5F,0xA3,0x06,0x8C,0x97,0x8C,0xB7,0x5F,0x7D,0x04,0x0A,
+0xF8,0x0B,0x11,0x58,0x0C,0x40,0xFB,0xBC,0x41,0x9B,0xBD,0xC1,0xA0,0x10,0x01,0xC3,
+0x00,0x10,0x01,0x5C,0xA5,0x00,0x4D,0x77,0x08,0x5C,0xE7,0x04,0x5D,0x8C,0x04,0x5C,
+0x84,0x00,0xFD,0xAD,0x04,0x1C,0xFF,0x18,0x09,0x0C,0x53,0x20,0x64,0xE4,0x00,0x01,
+0x21,0x43,0x44,0x35,0x9F,0x41,0x4F,0x5A,0x08,0x8F,0x4D,0x09,0x1A,0x00,0x41,0x08,
+0xBB,0x41,0x08,0x50,0x5F,0x88,0x04,0x43,0x5C,0xDD,0x5F,0x5A,0x06,0x4C,0x7A,0xFA,
+0x47,0x43,0xD6,0x43,0x5A,0x1D,0xD6,0xFA,0x03,0x14,0xD5,0x7A,0x02,0x70,0x5D,0x08,
+0x06,0xD5,0x1D,0x00,0x58,0x43,0x9C,0x3D,0xE4,0x00,0x00,0x0F,0x43,0x8C,0xE5,0x5F,
+0x9C,0x06,0x4F,0x44,0x10,0x43,0x97,0xE5,0x8F,0x58,0xCF,0x9C,0x00,0x64,0x09,0x1A,
+0x00,0x43,0x9C,0xB8,0xC7,0x9C,0xFF,0xFF,0x41,0x1C,0x43,0x41,0x08,0xC8,0x0D,0x1A,
+0x01,0x4F,0x44,0x10,0x9F,0x42,0x8F,0x58,0x09,0x1A,0x00,0x43,0x9C,0x43,0x43,0x9C,
+0xC8,0x0F,0x9A,0x01,0xE4,0x00,0x00,0x29,0x4F,0x44,0x10,0x8F,0x58,0x0C,0x1A,0x01,
+0x4F,0x44,0x10,0x8F,0x58,0x0C,0x1A,0x03,0x9C,0x81,0x5C,0x84,0x00,0xD4,0x85,0xFB,
+0xA0,0xC2,0xE0,0x10,0x01,0x0D,0xA1,0x02,0xF0,0x77,0x0B,0x1B,0x0D,0x81,0x06,0x0D,
+0x61,0x0A,0x0D,0x41,0x0E,0x40,0x7E,0x1B,0x1C,0x21,0x10,0xE4,0x00,0xC1,0x25,0x5C,
+0x63,0x00,0x5C,0x84,0x00,0xC2,0xE0,0x10,0x01,0x43,0x64,0x1D,0xF2,0xF7,0x0B,0x1E,
+0x9F,0x61,0x40,0xA5,0xBB,0x5F,0x7B,0x00,0x5C,0xA5,0x00,0x20,0xE4,0x3E,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x0C,0xD0,0xE4,0x00,0x00,0x19,0xC2,0xE0,0x10,0x01,0xFE,0xF7,
+0x09,0x0C,0x43,0x23,0x2C,0x9B,0x00,0x4F,0x39,0x10,0x9F,0x22,0x8F,0x37,0xC2,0xEF,
+0xFF,0xE1,0xCA,0xF7,0xFF,0xFF,0xE4,0x00,0x00,0x3D,0x0B,0x99,0xFE,0x0B,0x59,0x00,
+0x9F,0x24,0x8F,0x5C,0x4F,0x98,0x10,0x5E,0xFA,0x15,0x8F,0x86,0x4A,0xF7,0xD0,0x0F,
+0x5C,0x00,0x9F,0x01,0x5F,0x58,0x00,0xD7,0x7A,0xFF,0x1D,0x9B,0x00,0xE4,0x00,0x00,
+0x29,0x0F,0x26,0x02,0x9F,0x01,0x43,0x39,0xBD,0x5F,0x18,0x00,0x0F,0x26,0x00,0x9C,
+0xC4,0xD7,0x78,0xFF,0x85,0x85,0x29,0x1C,0x21,0x88,0x0D,0x41,0x70,0x0D,0x61,0x6C,
+0x5D,0x44,0x00,0x0D,0x81,0x68,0x5C,0x85,0x00,0x0D,0xA1,0x64,0x88,0xA6,0x41,0xA4,
+0x55,0x0D,0x21,0x74,0x89,0x83,0x88,0xC1,0x88,0x6A,0xE7,0xFF,0xFE,0xAA,0xC2,0xE0,
+0x10,0x01,0x9D,0xA1,0xEB,0x57,0x01,0x78,0x9B,0x20,0x5D,0xAD,0x00,0x8B,0x19,0x9A,
+0xE0,0x89,0x61,0xE4,0x00,0x00,0x5B,0x4F,0x79,0x10,0x43,0x99,0x54,0x8F,0x6B,0x0F,
+0x7B,0x02,0x8E,0xFB,0x23,0x44,0x54,0x23,0x48,0x36,0xCF,0x9C,0x00,0x06,0x9F,0x9F,
+0xE4,0x00,0x00,0x13,0x4F,0x9C,0x08,0x9F,0x81,0x43,0x7C,0xDB,0x9F,0x21,0x8F,0x1B,
+0x5F,0x79,0x00,0xD5,0xBB,0xFE,0xA5,0x26,0xE1,0x34,0xC3,0x20,0x10,0x01,0xEB,0x39,
+0x0B,0x25,0x43,0x18,0xCB,0x23,0x44,0x32,0x4F,0x37,0x0A,0x8F,0x19,0xE4,0x00,0x00,
+0x35,0x23,0x48,0x46,0xCF,0x37,0x00,0x03,0xCE,0xF7,0x00,0x06,0x8F,0x19,0xE4,0x00,
+0x00,0x13,0x8F,0x17,0x4E,0xF7,0x08,0x42,0xF8,0xB8,0xC2,0xE0,0xFF,0xE8,0xCB,0x00,
+0x07,0xFF,0x98,0x61,0x4A,0xF7,0xC0,0x5E,0xFF,0xF9,0x4A,0xF7,0x00,0x0E,0xEC,0x01,
+0xE4,0x00,0x00,0x0D,0x98,0x60,0x0D,0xA1,0x66,0x0D,0x81,0x6A,0x0D,0x61,0x6E,0x0D,
+0x41,0x72,0x0D,0x21,0x76,0x1C,0x21,0x78,0x85,0x29,0xFC,0x21,0xFF,0x78,0xED,0x41,
+0x00,0x80,0x0D,0x81,0x78,0x0D,0xA1,0x74,0x0D,0xC1,0x70,0x0D,0xE1,0x6C,0x0E,0x01,
+0x68,0x0E,0xC1,0x64,0xED,0x21,0x00,0x84,0x0D,0x61,0x7C,0xC1,0x40,0x10,0x01,0xFD,
+0x4A,0x0B,0x1A,0x11,0x6A,0x04,0x4E,0xEB,0x08,0x9E,0xE8,0xC6,0xF7,0x03,0xF8,0xFE,
+0xC1,0x00,0x88,0x5D,0xC4,0x00,0x5D,0xA5,0x00,0x8A,0x03,0x5C,0xA6,0x00,0x89,0xE1,
+0x41,0x65,0x5B,0x40,0x21,0xBD,0x88,0x6E,0x88,0x8D,0xFC,0xD6,0xFF,0x78,0xE7,0xFF,
+0xFC,0xA2,0xC3,0x40,0x10,0x01,0x89,0x81,0x5D,0x6B,0x00,0x13,0x2A,0x04,0x9A,0xE0,
+0xFF,0x5A,0x04,0x1C,0xE4,0x00,0x00,0x29,0x4F,0x17,0x08,0x9E,0xE1,0x43,0x6C,0xC4,
+0x8F,0x1A,0x0B,0x18,0x03,0x0F,0x1B,0x01,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x6D,0x43,
+0x4B,0x74,0x8D,0xAB,0x5F,0x5A,0x00,0x5D,0xAD,0x00,0x9A,0xE0,0x1F,0x2D,0x01,0x43,
+0x39,0xD5,0x5F,0x39,0x00,0xE4,0x00,0x00,0x33,0x4F,0x77,0x10,0xFF,0x96,0xFF,0x78,
+0x8F,0x7C,0x0F,0x7B,0x02,0x27,0x60,0x4A,0xD5,0xB8,0x03,0x19,0x9E,0xE1,0x5F,0x17,
+0x00,0xD7,0x38,0xFF,0x45,0x8B,0x1A,0x1F,0x36,0xD8,0x1F,0x76,0xD8,0x4E,0xF8,0x10,
+0x8E,0xF9,0x0F,0x37,0xA2,0x1E,0xF8,0x01,0x43,0x39,0xCB,0x4E,0xF7,0x10,0x8E,0xFB,
+0x0E,0xF7,0xA2,0x42,0xF7,0xBB,0x5F,0x37,0x15,0x4B,0x77,0xC8,0x27,0x60,0xBC,0x8F,
+0x1A,0x0B,0x6A,0x0B,0x41,0x78,0x5D,0x13,0x4A,0x0C,0x4D,0x6B,0x08,0x98,0x61,0x8D,
+0x8B,0x0B,0x0C,0x00,0x43,0x18,0xDB,0x43,0x77,0xDB,0x43,0x18,0xD0,0x8E,0xF9,0x42,
+0xFB,0xB8,0x8E,0xF8,0x0E,0xF0,0x01,0xE4,0x00,0x00,0x0D,0x98,0x60,0x88,0x2F,0x0E,
+0xC1,0x66,0x0E,0x01,0x6A,0x0D,0xE1,0x6E,0x0D,0xC1,0x72,0x0D,0xA1,0x76,0x0D,0x81,
+0x7A,0x0D,0x61,0x7E,0xED,0x41,0x00,0x82,0xED,0x21,0x00,0x86,0xFC,0x21,0x00,0x88,
+0x85,0x29,0x1C,0x21,0xB8,0x0D,0x41,0x40,0xC1,0x40,0x10,0x01,0x0D,0x61,0x3C,0x0D,
+0x81,0x38,0x0D,0xC1,0x30,0x0E,0x41,0x20,0x0E,0x61,0x1C,0x0E,0x81,0x18,0x0E,0xA1,
+0x14,0x0E,0xC1,0x10,0x0D,0x21,0x44,0x0D,0xA1,0x34,0x0D,0xE1,0x2C,0x0E,0x01,0x28,
+0x0E,0x21,0x24,0x5E,0x63,0x00,0x5E,0x44,0x00,0xC1,0xC0,0x10,0x01,0xF0,0x8A,0x0B,
+0x1A,0xFD,0xCE,0x0C,0x5C,0x98,0xA0,0x88,0x6E,0x99,0x80,0x8A,0xCA,0xE4,0x00,0xBE,
+0x36,0xC1,0x40,0x10,0x01,0x89,0x6C,0xC2,0xA0,0x10,0x01,0x9A,0x81,0xFD,0x4A,0x0B,
+0x90,0xE4,0x00,0x01,0x19,0xCC,0x6B,0x00,0x30,0xEA,0xF5,0x08,0x3F,0x41,0xA3,0x54,
+0x56,0xF7,0x02,0x12,0x2D,0x04,0x12,0x0D,0x05,0x11,0xED,0x07,0x22,0xE1,0x0C,0x1C,
+0x61,0x04,0x88,0x91,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFA,0xDA,0x20,0x61,
+0x14,0x1C,0x61,0x06,0x88,0x91,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFC,0x5C,
+0x20,0x60,0xCC,0x0B,0x01,0x04,0xCF,0x18,0x00,0x07,0x0A,0xE1,0x06,0xCE,0xF7,0x00,
+0x03,0x8E,0xF8,0x9B,0x0A,0x42,0xF7,0xC0,0x0E,0xED,0x17,0xE4,0x00,0x00,0x43,0x8C,
+0x6A,0x88,0x91,0x1C,0x63,0x16,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFA,0x56,
+0x20,0x60,0x32,0x4E,0xF4,0x5C,0x45,0x8C,0xBD,0x5D,0x8C,0x00,0x88,0x6E,0xF0,0x96,
+0x0B,0x1A,0x98,0xA1,0x9D,0x61,0xE4,0x00,0xBD,0x04,0x5D,0x6B,0x00,0x12,0xEA,0x00,
+0xD6,0xEB,0xFB,0xAD,0x88,0x6C,0xE7,0xFF,0xF4,0x7A,0x12,0xEA,0x00,0x22,0xE0,0x6C,
+0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x25,0x56,0xF7,0x40,0x22,0xE0,0x34,0xC2,0xE0,
+0x10,0x01,0xEE,0xF7,0x03,0xE6,0x86,0xE8,0xC2,0xE0,0x10,0x01,0x88,0x6E,0xF0,0x97,
+0x0B,0x1A,0x98,0xA1,0xE4,0x00,0xBC,0x88,0xC2,0xE0,0x10,0x01,0x99,0x80,0xEA,0xF7,
+0x08,0x25,0x89,0x6C,0x56,0xF7,0x80,0x99,0xA1,0x22,0xE0,0xFC,0xC2,0xE0,0x10,0x01,
+0xEE,0xF7,0x03,0xFA,0x86,0xE8,0xE4,0x00,0x00,0x7F,0xCE,0xEB,0x00,0x30,0x40,0x6A,
+0xBC,0x8A,0xE3,0x88,0x83,0x10,0xB7,0x04,0x1C,0x63,0x18,0x9C,0x8C,0x10,0xD7,0x05,
+0x10,0xF7,0x07,0xE7,0xFF,0xEF,0xDC,0x20,0x60,0x32,0x4E,0xED,0x5C,0x45,0x8C,0xBD,
+0x5D,0x8C,0x00,0x9D,0x61,0x5D,0x6B,0x00,0x12,0xEA,0x00,0xD6,0xEB,0xFE,0x7D,0x88,
+0x6C,0xE7,0xFF,0xF3,0x64,0x22,0x61,0x5C,0x22,0x40,0xFE,0xE4,0x00,0x00,0xA3,0xCD,
+0x6C,0x00,0x30,0x8D,0x6A,0x0A,0xEB,0x16,0x0E,0xE1,0x08,0x0A,0xEB,0x18,0x1C,0x61,
+0x08,0x0E,0xE1,0x0C,0x1C,0x81,0x0C,0xEE,0xED,0x03,0xD2,0x0C,0xAB,0x0E,0x88,0xCE,
+0x86,0xE8,0x0E,0xE1,0x0A,0x9D,0x81,0x0E,0xEB,0x17,0x5D,0x8C,0x00,0x0E,0xE1,0x0E,
+0x0E,0xEB,0x19,0xE4,0x00,0x00,0x25,0xC1,0xC0,0x10,0x01,0x99,0x80,0xC1,0xA0,0x10,
+0x01,0xFD,0xCE,0x01,0x64,0x12,0xEA,0x00,0xD6,0xEC,0xFD,0xBD,0xC2,0xE0,0x10,0x01,
+0x13,0x6A,0x00,0xEB,0x97,0x08,0x3F,0x9B,0x20,0xC2,0xE0,0x10,0x01,0x57,0x9C,0x01,
+0xFE,0xF7,0x0B,0xA8,0xCB,0xA0,0x07,0xFF,0xE4,0x00,0x00,0x89,0x0B,0x57,0x01,0x13,
+0xD7,0xEF,0x5F,0x1A,0x06,0x47,0x18,0xC7,0x4F,0x18,0xFA,0x47,0x1A,0xC4,0x5F,0x58,
+0x06,0xC3,0x40,0xFF,0xE8,0x20,0x00,0x1D,0xFF,0x00,0x07,0xFF,0x0F,0x17,0x01,0x5F,
+0x58,0x06,0x23,0x80,0x48,0xCF,0x1A,0x03,0xFF,0x4F,0x5E,0x50,0x43,0x18,0xE8,0x8F,
+0x1A,0x0F,0x17,0x01,0x9F,0x21,0x1E,0xF7,0x30,0x5F,0x39,0x00,0xD7,0x3B,0xFE,0x06,
+0x0E,0xC1,0x12,0x0E,0xA1,0x16,0x0E,0x81,0x1A,0x0E,0x61,0x1E,0x0E,0x41,0x22,0x0E,
+0x21,0x26,0x0E,0x01,0x2A,0x0D,0xE1,0x2E,0x0D,0xC1,0x32,0x0D,0xA1,0x36,0x0D,0x81,
+0x3A,0x0D,0x61,0x3E,0x0D,0x41,0x42,0x0D,0x21,0x46,0x1C,0x21,0x48,0x85,0x29,0x1C,
+0x21,0xC8,0xC2,0xE0,0x10,0x01,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0E,0x61,0x0C,0x0E,
+0xC1,0x00,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,0x61,0x2C,0x0D,0xC1,0x20,0x0D,0xE1,
+0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,0x81,0x08,0x0E,0xA1,0x04,
+0xC1,0x80,0x10,0x01,0xF3,0x57,0x08,0x72,0xFD,0x8C,0x0B,0x90,0xC2,0xE0,0x10,0x01,
+0x1E,0xC1,0x38,0x89,0xA3,0x8A,0x61,0x18,0x0C,0x00,0xFE,0xF7,0x0B,0x98,0x9B,0x00,
+0x9B,0x3F,0xE4,0x00,0x00,0x2B,0x0C,0x17,0x00,0x1B,0x37,0xFE,0x1B,0x37,0xFF,0x9F,
+0x01,0x1E,0xF7,0x30,0x5F,0x18,0x00,0xD7,0x1A,0xFF,0x7E,0xC1,0xE0,0x10,0x01,0xFD,
+0xEF,0x0B,0x1A,0x12,0xEF,0x04,0x10,0x6F,0x01,0x40,0x63,0xBB,0xE4,0x00,0xB6,0x22,
+0x13,0x2F,0x04,0x4E,0xF9,0x10,0x9E,0xEA,0xC6,0xF7,0x07,0xF8,0xC3,0x60,0x10,0x01,
+0x40,0x21,0xBD,0x0A,0x0D,0x18,0x89,0x61,0x9B,0x00,0xCA,0xE0,0x20,0x00,0xFF,0x7B,
+0x09,0xBC,0xE4,0x00,0x00,0x3B,0x4F,0x58,0x10,0x9F,0x01,0x43,0x9A,0xDC,0x8F,0x4B,
+0x0E,0x3C,0x02,0x5E,0x37,0x15,0x0E,0x3A,0x00,0x4A,0xF1,0xB8,0x5E,0xF7,0x06,0x5F,
+0x58,0x00,0xD7,0x3A,0xFF,0x25,0x46,0x37,0xBF,0x99,0x40,0x4E,0x31,0xFA,0x89,0xCA,
+0x46,0x31,0xBC,0xC2,0x80,0x10,0x01,0x9A,0x42,0x8A,0xAC,0xE4,0x00,0x04,0x4B,0x0B,
+0x0D,0x18,0x21,0x41,0x32,0x0E,0xEB,0x02,0xD7,0x17,0x0E,0xEC,0x0F,0x0B,0x06,0xD6,
+0xF8,0x00,0x7C,0xD6,0xF8,0x0E,0x96,0x0F,0x0B,0x0A,0xD6,0xF8,0x0E,0x58,0x98,0x60,
+0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,0xFF,0xE5,0xE6,
+0xD0,0x60,0x0D,0xAA,0x12,0xEC,0x00,0x99,0x41,0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,
+0xEC,0x18,0x17,0x04,0x18,0x17,0x06,0x1A,0x57,0x05,0xE4,0x00,0x03,0x4F,0x21,0x45,
+0x56,0x0E,0xEB,0x06,0xD7,0x17,0x0C,0x8C,0x0F,0x0B,0x02,0xD7,0x17,0x0C,0x54,0x0F,
+0x0B,0x0A,0xD6,0xF8,0x00,0x7C,0xD6,0xF8,0x0B,0xFE,0x0F,0x0B,0x0E,0xD6,0xF8,0x0B,
+0xC0,0x98,0x61,0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,
+0xFF,0xE5,0x40,0xD0,0x60,0x0B,0x12,0x12,0xEC,0x00,0x9B,0x01,0x8E,0xEE,0x99,0x42,
+0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x18,0x17,0x04,0x1B,0x17,0x06,0x1A,0x57,0x05,0xE4,
+0x00,0x02,0xA5,0x25,0x45,0xC5,0x1F,0x37,0xFE,0xD7,0x2A,0x03,0x58,0x4E,0xEA,0x10,
+0x8E,0xEB,0x0E,0xF7,0x02,0xD7,0x17,0x09,0x84,0x1F,0x0A,0xFF,0x4F,0x18,0x10,0x8F,
+0x0B,0x0F,0x18,0x02,0xD6,0xF8,0x01,0x34,0xD6,0xF8,0x08,0xEE,0x1F,0x2A,0xFE,0x4F,
+0x39,0x10,0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x08,0x70,0x1F,0x4A,0x01,0x4F,0x5A,
+0x10,0x8F,0x4B,0x0F,0x5A,0x02,0xD7,0x59,0x07,0xF8,0x1F,0x2A,0x01,0x4F,0x39,0x10,
+0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x03,0x2C,0xD6,0xF9,0x07,0x66,0x1F,0x2A,0x02,
+0x4F,0x39,0x10,0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x06,0xE8,0xD7,0x19,0x06,0xC8,
+0xE4,0x00,0x00,0x95,0x4F,0x0A,0x10,0x1F,0x57,0xFE,0x0B,0x2D,0x18,0x8F,0x0B,0xD5,
+0x5A,0x03,0x6E,0x0F,0x18,0x02,0xD7,0x38,0x05,0xFC,0x1F,0x37,0xFF,0x4F,0x39,0x10,
+0x8F,0x2B,0x0F,0x39,0x02,0xD7,0x38,0x05,0x84,0x1F,0x37,0xFD,0x4F,0x39,0x10,0x8F,
+0x2B,0x0F,0x39,0x02,0xD7,0x19,0x00,0xB4,0xD7,0x19,0x04,0xEE,0x9E,0xFC,0x4E,0xF7,
+0x10,0x8E,0xEB,0x0E,0xF7,0x02,0xD7,0x17,0x04,0x78,0x88,0x6A,0x88,0x8B,0x88,0xB1,
+0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,0xFF,0xE3,0x6E,0x20,0x61,0xE4,0x12,
+0xEC,0x00,0x1F,0x0A,0xFF,0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x19,0x57,0x06,
+0x1B,0x17,0x04,0x9D,0x41,0x5D,0x4A,0x00,0xE4,0x00,0x00,0xAD,0x0E,0xF8,0x02,0xD7,
+0x37,0x02,0xB4,0x1F,0x0A,0xFF,0x4F,0x18,0x10,0x8F,0x0B,0x0F,0x18,0x02,0xD6,0xF8,
+0x00,0xBC,0xD6,0xF8,0x02,0x1E,0x1F,0x0A,0xFE,0x4F,0x18,0x10,0x8F,0x0B,0x0F,0x18,
+0x02,0xD6,0xF8,0x01,0xA0,0x88,0x6A,0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,
+0x09,0x0D,0x1E,0xE7,0xFF,0xE2,0xB8,0x20,0x60,0x78,0x12,0xEC,0x00,0x1F,0x0A,0xFE,
+0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x1B,0x17,0x04,0x19,0x57,0x06,0x19,0x57,
+0x05,0xE4,0x00,0x00,0x21,0x9D,0x41,0x5D,0x4A,0x00,0x12,0xEF,0x04,0xD6,0xEA,0xF0,
+0x95,0x12,0xEF,0x04,0xD6,0xEA,0x01,0x61,0x12,0xEC,0x00,0x8E,0xEE,0xCE,0xF7,0x00,
+0x30,0x43,0x17,0x64,0x13,0x18,0x05,0xD5,0x58,0x00,0x55,0x1D,0x58,0x01,0x5D,0x4A,
+0x00,0x8E,0xF5,0x9B,0x01,0x9D,0xC1,0x18,0x17,0x07,0x0F,0x17,0x08,0x5D,0xCE,0x00,
+0x12,0xEF,0x04,0xD6,0xEA,0x00,0x61,0xF2,0xF4,0x08,0x72,0xD6,0xEE,0xFD,0xFC,0x12,
+0xEC,0x00,0x8D,0xD7,0x19,0xCC,0x00,0x88,0x33,0x0E,0xC1,0x02,0x0E,0xA1,0x06,0x0E,
+0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,
+0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,
+0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,
+0xF8,0x77,0x04,0x64,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x0B,0x25,0xEE,0xF8,0x04,0x5D,
+0xC3,0x00,0x10,0x01,0xCF,0x37,0x00,0x05,0x4E,0xF7,0x10,0xEF,0x38,0x04,0x5B,0xC3,
+0x00,0x10,0x01,0xEE,0xF8,0x04,0x59,0x85,0x29,0x5C,0x63,0x06,0x20,0x84,0x5A,0x0B,
+0x05,0x00,0x0B,0x25,0x02,0x0B,0x45,0x04,0x0B,0x85,0x06,0x0B,0x65,0x08,0xE4,0x00,
+0x00,0x27,0x0B,0x05,0x0A,0x0B,0x25,0x0C,0x0B,0x45,0x0E,0x0B,0x85,0x10,0x0B,0x65,
+0x12,0xC2,0xE0,0x10,0x01,0x9B,0xA2,0xEA,0xF7,0x0B,0x25,0x43,0x9C,0xBB,0x43,0x9C,
+0xE8,0x43,0x80,0xE5,0xFF,0x9C,0x03,0xFF,0xD4,0x7C,0x00,0xC8,0x43,0x9B,0xBB,0x43,
+0xBC,0xE8,0xFF,0xBD,0x03,0xFF,0xD7,0xA3,0x01,0x08,0x5C,0x78,0x04,0xE4,0x00,0x00,
+0xE3,0x24,0x7C,0x58,0x43,0x03,0xC3,0x40,0x7C,0x1D,0x43,0x43,0xD3,0x40,0x78,0xD4,
+0x40,0x63,0xE0,0xE4,0x00,0x00,0xB1,0x9B,0x82,0x43,0x7B,0xBB,0x43,0x7B,0xE0,0xFF,
+0x9B,0x03,0xFF,0xD7,0x83,0x01,0x7C,0xC0,0x60,0xFF,0xEC,0x20,0x00,0xCD,0x43,0x60,
+0xDD,0xFE,0xFB,0xFC,0x01,0x8E,0xE3,0x43,0x37,0xCB,0xCA,0xE0,0x07,0xFF,0x40,0x77,
+0x1D,0xFF,0x7B,0x04,0x00,0x43,0x03,0xC3,0x40,0x79,0xC4,0x40,0x63,0xD8,0xE4,0x00,
+0x00,0x3B,0x24,0x7C,0x32,0x8C,0x77,0x40,0x63,0xD3,0xE4,0x00,0x00,0x1D,0xFF,0x17,
+0x07,0xFF,0x40,0x78,0x1D,0x40,0x63,0xCB,0x40,0x63,0xB8,0x5C,0x63,0x04,0x85,0x29,
+0x9C,0x38,0x0C,0x01,0x04,0xC3,0x00,0x10,0x01,0xC3,0x40,0x10,0x01,0xFF,0x18,0x0B,
+0x1A,0xFF,0x9A,0x04,0x1C,0x0B,0x38,0x0B,0x0B,0xBC,0x00,0x13,0x18,0x0C,0x5F,0x79,
+0x06,0x5E,0xE3,0x06,0x43,0x7D,0xDB,0x43,0x7B,0xC0,0xD6,0xFB,0x00,0x4C,0x9B,0x41,
+0x0F,0x41,0x04,0x0F,0x41,0x06,0x98,0x7F,0x23,0x40,0x5E,0x0B,0x5C,0x02,0x43,0x5A,
+0xCB,0x43,0x5A,0xC0,0xD7,0x57,0x00,0x58,0x9B,0x41,0x98,0x60,0x0F,0x41,0x04,0x0F,
+0x41,0x06,0x23,0x41,0x1E,0xC3,0x40,0x10,0x01,0xC3,0x60,0x10,0x01,0xF3,0xBA,0x0B,
+0x1E,0xFF,0x7B,0x04,0x20,0x9B,0x41,0xE4,0x00,0x00,0x57,0x0B,0xDB,0xFE,0x43,0xDE,
+0xCB,0x43,0xDE,0xC0,0xD7,0xD7,0x00,0xD4,0x0B,0xDB,0x00,0x43,0xDE,0xCB,0x43,0xDE,
+0xC0,0xD7,0xD7,0x00,0x68,0x9B,0x41,0x0F,0x41,0x04,0xE4,0x00,0x00,0x1F,0x9F,0x41,
+0x9F,0x62,0x5C,0x7A,0x02,0xD7,0x5D,0xFE,0xB0,0x0F,0x41,0x06,0x23,0x40,0x9E,0xC3,
+0x40,0x10,0x01,0xF3,0x5A,0x0B,0x1E,0x9F,0x41,0x4F,0x7A,0x08,0x8F,0x9B,0x0B,0x7C,
+0x00,0x43,0x3B,0xCB,0x43,0x19,0xC0,0xD7,0x17,0x00,0x64,0x9A,0xE1,0x5C,0x7A,0x02,
+0x0E,0xE1,0x04,0x9C,0x28,0x85,0x29,0xC3,0x20,0x10,0x01,0x5C,0x63,0x06,0x5C,0xC6,
+0x02,0x5C,0xE7,0x00,0xFF,0x39,0x09,0x0C,0x24,0xC0,0x98,0xC2,0xE0,0x10,0x01,0xF3,
+0x17,0x0B,0x1E,0xD4,0xD8,0x00,0xDC,0x43,0x18,0x3B,0x1E,0xE6,0xFF,0x8E,0xF8,0x4F,
+0x17,0x10,0x8F,0x19,0x0B,0x78,0x02,0x0B,0x58,0x00,0xE4,0x00,0x00,0x11,0x9B,0x40,
+0x8B,0x7A,0xC2,0xE0,0x10,0x01,0xF3,0x97,0x0B,0x1E,0xD7,0x86,0x01,0x08,0xD0,0xDF,
+0x04,0x28,0x42,0xFC,0x3B,0x8E,0xE6,0x4F,0x17,0x10,0x4E,0xF7,0x10,0x8F,0x19,0x8F,
+0x37,0x0B,0x18,0x02,0x0B,0xD9,0x00,0xE4,0x00,0x00,0x17,0x24,0xDD,0xA0,0x9B,0xC0,
+0x8B,0x1E,0xD4,0xDC,0x03,0x0C,0x4E,0xE6,0x08,0xC0,0xE0,0x10,0x01,0xFC,0xE7,0x04,
+0x1C,0x8E,0xE7,0x9C,0xC1,0x09,0x17,0x00,0x4C,0xC6,0x08,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x0B,0x1A,0x8C,0xE6,0x0B,0x97,0x0B,0x13,0x37,0x0C,0x0A,0xE7,0x00,0x40,0xD7,
+0xE3,0x42,0xF7,0x45,0x43,0xA8,0xE3,0x40,0xC6,0xC8,0x43,0xBD,0xC8,0x43,0x97,0xE3,
+0x43,0xA3,0xED,0x43,0x3C,0xC8,0x40,0x66,0x1D,0x43,0x18,0xEB,0x43,0x7B,0x1B,0x42,
+0xFE,0xEB,0x8F,0x1B,0x40,0x7A,0x1B,0x43,0x18,0xC8,0x8E,0xE3,0x42,0xF7,0xC8,0xE4,
+0x00,0x00,0x11,0x9A,0xE0,0x8B,0x17,0x0F,0x04,0x01,0x0E,0xE5,0x01,0x85,0x29,0x1C,
+0x21,0xD8,0x0D,0x41,0x20,0x0D,0x61,0x1C,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x5D,0x84,
+0x00,0x0D,0xC1,0x10,0x0D,0xE1,0x0C,0x0E,0x01,0x08,0x5D,0xA5,0x00,0x5D,0x63,0x04,
+0x0C,0xC1,0x04,0x0D,0x21,0x24,0x89,0xE8,0x0D,0xC1,0x2A,0xC1,0x40,0x10,0x01,0x9A,
+0x02,0xFD,0x4A,0x0B,0x1A,0x0C,0xE1,0x00,0x08,0x6A,0x0B,0x40,0x6C,0x1B,0x40,0x63,
+0x80,0x40,0x6B,0x1D,0xE7,0xFF,0xFC,0x38,0x0C,0x81,0x06,0x88,0xC3,0x5E,0xE3,0x02,
+0x0C,0xA1,0x02,0x26,0xFC,0x36,0x0C,0x04,0x01,0x0C,0x05,0x01,0xE4,0x00,0x00,0x2D,
+0x0A,0xEA,0x0B,0x42,0xEC,0xBB,0x88,0xED,0x40,0x77,0x80,0x40,0x6B,0x1D,0xE7,0xFF,
+0xFD,0x72,0x08,0x6A,0x0B,0x40,0x6C,0x1B,0x4C,0x63,0x0A,0x8C,0x6B,0xE7,0xFF,0xFB,
+0xC6,0x12,0xEA,0x04,0x88,0xC3,0x5F,0x03,0x02,0xD7,0x17,0x00,0x70,0x0C,0x0F,0x01,
+0x0C,0x0E,0x01,0xE4,0x00,0x00,0x69,0x08,0x6A,0x0B,0x41,0x8C,0x1B,0x88,0x8F,0x4C,
+0x6C,0x0A,0x88,0xAE,0x8C,0x6B,0x88,0xED,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,
+0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,
+0x1C,0x21,0x28,0xE7,0xFF,0xFC,0xC9,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,0x12,
+0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,0x1C,
+0x21,0x28,0x85,0x29,0x1C,0x21,0x90,0x0D,0x41,0x68,0x0D,0x81,0x60,0x0D,0xA1,0x5C,
+0x0D,0xE1,0x54,0x0E,0x01,0x50,0x0E,0x21,0x4C,0x0D,0x21,0x6C,0xC2,0x20,0x10,0x01,
+0x0D,0x61,0x64,0x0D,0xC1,0x58,0x0E,0x41,0x48,0x0E,0x61,0x44,0x0E,0x81,0x40,0x0E,
+0xA1,0x3C,0x0E,0xC1,0x38,0x89,0xA3,0x8A,0x04,0x89,0x85,0x5D,0xE6,0x00,0x99,0x40,
+0xFE,0x31,0x0B,0x90,0xE4,0x00,0x00,0xA1,0xCF,0x0A,0x00,0x30,0x8F,0x11,0x1E,0xE1,
+0x20,0x10,0xB8,0x07,0x0B,0x98,0x17,0x43,0x2D,0x2C,0x4D,0x05,0x08,0x13,0x59,0x00,
+0x1F,0x61,0x38,0x8D,0x1A,0x9F,0x41,0x4D,0x08,0x08,0x1B,0x59,0x00,0x8F,0x68,0x08,
+0x78,0x17,0x0F,0x9B,0xD9,0x1F,0x01,0x30,0x8F,0x08,0x88,0x8F,0x0F,0x01,0x00,0x1C,
+0xC1,0x18,0x1C,0xE1,0x28,0x8C,0xC8,0x8C,0xE8,0x9D,0x41,0x8D,0x17,0x5D,0x4A,0x00,
+0xE7,0xFF,0xFD,0x1E,0x12,0xF1,0x00,0xD6,0xEA,0xFD,0x8D,0xC2,0xE0,0x10,0x01,0x8B,
+0x10,0xF2,0x57,0x04,0x64,0x9B,0x41,0x8A,0xED,0xE4,0x00,0x00,0x23,0x13,0x37,0x00,
+0x27,0x24,0x19,0x0F,0x58,0x00,0x9E,0xE1,0x9F,0x04,0x43,0x37,0x6D,0x5F,0x39,0x00,
+0xD6,0x59,0xFF,0x6D,0x99,0x60,0xC2,0x60,0x10,0x01,0x89,0x4B,0xC2,0x80,0x10,0x01,
+0xE4,0x00,0x03,0x07,0x42,0xF0,0x5C,0x0E,0xF7,0x02,0x22,0xE0,0x48,0x1E,0xE1,0x10,
+0x8E,0xEB,0x0B,0x57,0x00,0x0B,0x77,0x02,0xE4,0x00,0x01,0x5D,0x42,0xED,0x54,0x12,
+0xF7,0x00,0x22,0xE1,0xE0,0x1E,0xE1,0x18,0x8E,0xEB,0x0B,0x17,0x00,0x1E,0xE1,0x28,
+0x8E,0xEB,0x0A,0xF7,0x00,0x8E,0xF8,0x1F,0x01,0x30,0x8F,0x0B,0x0B,0x18,0x00,0x8E,
+0xF8,0x1F,0x01,0x20,0x8F,0x0B,0x0B,0x18,0x00,0x8E,0xF8,0x9B,0x04,0x42,0xF7,0xC0,
+0x0E,0xEC,0x00,0xE4,0x00,0x02,0x55,0xCE,0xEE,0x00,0x30,0x8E,0xF1,0x41,0x0E,0xCC,
+0x08,0x77,0x17,0x4D,0x08,0x08,0x1E,0xE1,0x30,0x8E,0xE8,0x0E,0xE1,0x00,0x1E,0xE1,
+0x20,0x0F,0x01,0x0C,0x0F,0x21,0x08,0x88,0x8F,0x88,0xB5,0x1C,0xC1,0x18,0x1C,0xE1,
+0x28,0x8C,0xC8,0x8C,0xE8,0x8D,0x17,0xE7,0xFF,0xFB,0x90,0x9D,0xC1,0x0F,0x01,0x0E,
+0x5D,0xCE,0x00,0x0F,0x21,0x0A,0xE4,0x00,0x00,0x23,0x9A,0xC1,0x99,0xC0,0x42,0xD6,
+0x55,0x4F,0x2A,0x08,0x43,0x0D,0xB4,0x12,0xF8,0x00,0xD6,0xEE,0xFD,0x6D,0x4E,0xD6,
+0x10,0x43,0x10,0xB4,0x0F,0x18,0x02,0xD3,0x00,0x05,0x0A,0x1F,0x01,0x38,0x8E,0xD8,
+0x0B,0x56,0xD8,0x0B,0x76,0xDA,0x43,0x3A,0xDD,0x5F,0x39,0x06,0x4E,0xF9,0xFA,0xEB,
+0x93,0x04,0x5B,0x47,0x37,0xCE,0x43,0x39,0xBD,0x52,0xE0,0x64,0x5F,0x39,0x06,0xD7,
+0x3C,0x00,0xF4,0xEB,0x14,0x04,0x59,0x9A,0xE0,0xD7,0x19,0x00,0xA4,0x42,0xF9,0xC5,
+0x43,0x1C,0xC5,0xCE,0xF7,0x00,0x64,0x42,0xF7,0xC0,0x5E,0xF7,0x00,0x5F,0x7A,0x15,
+0x4B,0x81,0x01,0x4F,0x2A,0x08,0x4B,0x00,0x0A,0x8F,0x19,0x8F,0x3C,0x1F,0x81,0x38,
+0x1F,0x41,0x38,0x53,0x60,0xC8,0x4F,0x39,0x08,0x43,0x7B,0xBD,0x8F,0x3C,0x0B,0x99,
+0xE0,0x4F,0x18,0x08,0x8F,0x1A,0x0B,0xB8,0xE8,0x0B,0x58,0xF8,0x8F,0x5D,0x8F,0x5C,
+0x0B,0x99,0xF0,0x8F,0x5C,0x43,0x5B,0xD3,0x0B,0x79,0xE8,0x0B,0x39,0xF8,0x8F,0x79,
+0x0B,0x38,0xE0,0x8F,0x79,0x0B,0x38,0xF0,0x43,0x1B,0xCC,0x42,0xF7,0xC3,0xCB,0x00,
+0x03,0x20,0x8E,0xFA,0xE7,0xFF,0xFD,0xF3,0x22,0xE0,0x88,0x1F,0x01,0x38,0x4E,0xEA,
+0x10,0x8E,0xF8,0x0B,0x17,0xF0,0x0B,0x37,0xE0,0x8F,0x38,0x0B,0x17,0xF8,0x8F,0x38,
+0x0B,0x17,0xE8,0x42,0xF9,0xC4,0xE7,0xFF,0xFD,0xAB,0x0C,0x0C,0x00,0x9D,0x41,0x9D,
+0x84,0x9D,0x64,0x5E,0xAA,0x00,0xD6,0x55,0xF3,0xF5,0x0E,0xC1,0x3A,0x0E,0xA1,0x3E,
+0x0E,0x81,0x42,0x0E,0x61,0x46,0x0E,0x41,0x4A,0x0E,0x21,0x4E,0x0E,0x01,0x52,0x0D,
+0xE1,0x56,0x0D,0xC1,0x5A,0x0D,0xA1,0x5E,0x0D,0x81,0x62,0x0D,0x61,0x66,0x0D,0x41,
+0x6A,0x0D,0x21,0x6E,0x1C,0x21,0x70,0x85,0x29,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x0D,
+0x61,0x0C,0x0D,0x81,0x08,0x0D,0xA1,0x04,0x0D,0x21,0x14,0x89,0xA3,0xC2,0xE0,0x10,
+0x01,0x5C,0x64,0x06,0xEA,0xF7,0x08,0x3F,0x5D,0x85,0x00,0x5D,0x66,0x00,0x5D,0x47,
+0x00,0x56,0xF7,0x04,0x22,0xE0,0x34,0x88,0x8C,0x88,0xAB,0x88,0xCA,0xE7,0xFF,0xE0,
+0xEC,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x0B,0x1E,0x43,0x0A,0xC3,0x5F,0x18,0x00,0x9B,
+0x20,0x42,0xF8,0x64,0x8D,0x78,0xC3,0x40,0x10,0x01,0x5D,0x6B,0x00,0x5E,0xF7,0x00,
+0x8B,0x19,0xFF,0x5A,0x09,0x0C,0xE4,0x00,0x00,0x3B,0x4F,0x77,0x10,0x8F,0x7A,0x0B,
+0x7B,0x02,0x8F,0x1B,0x4F,0x77,0x10,0x9E,0xE1,0x8F,0x7A,0x5E,0xF7,0x00,0x0B,0x7B,
+0x00,0x8F,0x3B,0xD6,0xEB,0xFF,0x38,0x27,0x21,0x14,0x27,0x01,0x08,0xC2,0xE0,0x10,
+0x01,0xFE,0xF7,0x03,0x30,0x4F,0x39,0x40,0x9D,0x44,0x4D,0x4A,0x10,0x8D,0x57,0x0A,
+0xEA,0x06,0x43,0x19,0xC0,0x9B,0x4A,0xFF,0x18,0xFF,0x00,0x53,0x20,0x64,0x43,0x18,
+0xBB,0x0A,0xEA,0x04,0x43,0x18,0xD0,0x4E,0xF7,0x40,0x42,0xF7,0xC8,0x8E,0xF8,0x5E,
+0xE0,0x09,0x0E,0xED,0x00,0x48,0x61,0x01,0xE4,0x00,0x00,0x0D,0x98,0x60,0x0D,0xA1,
+0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,
+0x85,0x29,0xCA,0xE0,0x01,0x00,0xFC,0x21,0xFF,0x80,0x5C,0xE7,0x00,0x0D,0x41,0x78,
+0x0D,0x61,0x74,0x0D,0x81,0x70,0x0E,0x21,0x5C,0x0E,0x41,0x58,0x0E,0x61,0x54,0x0E,
+0x81,0x50,0x0E,0xA1,0x4C,0x0E,0xC1,0x48,0x0D,0x21,0x7C,0x0D,0xA1,0x6C,0x0D,0xC1,
+0x68,0x0D,0xE1,0x64,0x0E,0x01,0x60,0xCE,0x44,0x00,0x0A,0x42,0x52,0x1B,0x42,0x52,
+0xB8,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x1A,0x11,0xD7,0x04,0x41,0x87,0x73,0x5F,
+0x0C,0x00,0xCC,0x84,0x0A,0x00,0x8C,0xB8,0x8C,0xD8,0xC2,0xA0,0x10,0x01,0xC2,0x20,
+0x10,0x01,0xC1,0x60,0x10,0x01,0xC3,0x00,0x10,0x01,0xFD,0x6B,0x09,0x0C,0x42,0x64,
+0x18,0x5E,0x86,0x00,0x09,0xF7,0x0B,0x12,0x17,0x0C,0x5D,0x45,0x00,0xFE,0xB5,0x03,
+0x30,0xFE,0x31,0x04,0x1C,0x8A,0xCB,0xFF,0x18,0x09,0xBC,0xE4,0x00,0x01,0x61,0x0F,
+0x01,0x04,0x88,0x95,0x50,0xA0,0x3C,0x1C,0x61,0x08,0xE4,0x00,0x44,0xAC,0x41,0xAA,
+0x65,0x1E,0xED,0x01,0x4E,0xF7,0x08,0x8E,0xF1,0x98,0x82,0x08,0x77,0x00,0x1C,0xA1,
+0x08,0x40,0x63,0x7B,0x40,0x63,0x80,0xE7,0xFF,0xF1,0x44,0x0F,0x01,0x06,0x5C,0x63,
+0x04,0xD5,0x4C,0x00,0x5E,0x1E,0xEE,0xFF,0xD5,0xB7,0x01,0x92,0xCB,0x20,0x03,0xE8,
+0x43,0x43,0x9B,0x4E,0xEA,0x10,0x43,0x63,0x93,0x9E,0xE2,0x43,0x7B,0xC8,0x8E,0xEB,
+0x0B,0x97,0x01,0x43,0x7C,0xDD,0x0F,0x77,0x01,0x43,0x3A,0xC8,0x4E,0xEA,0x10,0x8E,
+0xEB,0x0B,0x57,0x01,0x43,0x3A,0xCD,0x0F,0x37,0x01,0x4E,0xEA,0x08,0x1F,0x37,0x01,
+0x4F,0x59,0x08,0x8F,0x4B,0x0B,0x7A,0x00,0x27,0x7C,0x1A,0x0C,0x1A,0x01,0x4F,0x57,
+0x08,0x8F,0x56,0x0B,0x7A,0x00,0x27,0x7C,0x1A,0x0C,0x1A,0x01,0x4E,0xF7,0x08,0x8E,
+0xEB,0x4F,0x4A,0x10,0x0B,0x77,0x00,0x8F,0x58,0x4F,0x39,0x08,0x9D,0x41,0x8F,0x2B,
+0x5D,0x4A,0x00,0x0A,0xF9,0x00,0x8E,0xFB,0x0E,0xFA,0x00,0xD5,0x54,0xFA,0xA0,0x0E,
+0xC1,0x4A,0x0E,0xA1,0x4E,0x0E,0x81,0x52,0x0E,0x61,0x56,0x0E,0x41,0x5A,0x0E,0x21,
+0x5E,0x0E,0x01,0x62,0x0D,0xE1,0x66,0x0D,0xC1,0x6A,0x0D,0xA1,0x6E,0x0D,0x81,0x72,
+0x0D,0x61,0x76,0x0D,0x41,0x7A,0x0D,0x21,0x7E,0xFC,0x21,0x00,0x80,0x85,0x29,0x1C,
+0x21,0xB8,0x98,0x60,0x0D,0x21,0x44,0x0D,0x41,0x40,0x0D,0x61,0x3C,0x0D,0x81,0x38,
+0x0D,0xA1,0x34,0x0D,0xC1,0x30,0x0D,0xE1,0x2C,0x0E,0x01,0x28,0x0E,0x21,0x24,0x0E,
+0x41,0x20,0x0E,0x61,0x1C,0x0E,0x81,0x18,0x0C,0x01,0x08,0x0C,0x01,0x0C,0x18,0x01,
+0x02,0x18,0x01,0x03,0x0C,0x01,0x10,0x0C,0x01,0x14,0xE7,0xFF,0xD3,0x4C,0x1C,0x61,
+0x02,0x1C,0x81,0x10,0x1C,0xA1,0x08,0x98,0xC4,0xE7,0xFF,0xF5,0xD6,0xC2,0xE0,0x10,
+0x01,0xF3,0x97,0x04,0x64,0xC2,0xE0,0x10,0x01,0xEB,0xB7,0x08,0x1D,0xC2,0xE0,0x10,
+0x01,0xEF,0x77,0x04,0x56,0xC2,0xE0,0x10,0x01,0x57,0xBD,0x20,0xEF,0xD7,0x04,0x62,
+0xC3,0x20,0x10,0x01,0x4F,0xBD,0x29,0x1E,0xE1,0x08,0xFF,0x39,0x03,0x50,0x9B,0x40,
+0xE4,0x00,0x00,0x63,0x0F,0x17,0x02,0x09,0x19,0xFC,0x0F,0x19,0x00,0x43,0x18,0x45,
+0x5F,0x1F,0xF9,0x4B,0x18,0x00,0x0F,0x17,0x00,0x23,0xA0,0x3C,0x23,0x60,0x30,0x43,
+0x18,0xF3,0x43,0x18,0xD8,0x0F,0x17,0x00,0x9F,0x41,0x9E,0xE4,0x5F,0x5A,0x00,0x9F,
+0x28,0xD7,0x5C,0xFE,0x9E,0x98,0x61,0x99,0x60,0xC2,0x20,0x10,0x01,0xC2,0x80,0x10,
+0x01,0xE7,0xFF,0xD2,0x3E,0x89,0x4B,0xFD,0xB1,0x0B,0x90,0x9A,0x41,0xC2,0x60,0x10,
+0x01,0xFE,0x94,0x0C,0x5C,0xE4,0x00,0x00,0xF9,0xCE,0x0A,0x00,0x30,0x42,0xF0,0x6C,
+0x1C,0x61,0x04,0x11,0xF7,0x04,0x11,0xD7,0x05,0x11,0x97,0x07,0x08,0x97,0x17,0x88,
+0xAF,0x88,0xCE,0x88,0xEC,0xE7,0xFF,0xF9,0x88,0x20,0x60,0xF8,0x98,0x60,0xE7,0xFF,
+0xD1,0xC4,0x1F,0x01,0x18,0x4E,0xEC,0x10,0x8E,0xF8,0x88,0xAF,0x0C,0x97,0xF2,0x88,
+0xCE,0x88,0xEC,0x0C,0x61,0x06,0xE7,0xFF,0xFA,0xF8,0x98,0x61,0xE7,0xFF,0xD1,0x88,
+0x40,0x6D,0x84,0x88,0xAF,0x88,0x83,0x88,0xCE,0x1C,0x63,0x18,0x9C,0x8C,0x88,0xEC,
+0xE7,0xFF,0xD4,0x42,0x20,0x60,0x32,0x4E,0xF2,0x54,0x45,0x6B,0xBD,0x5D,0x6B,0x00,
+0x88,0x74,0xF0,0x93,0x0B,0x1A,0x98,0xA1,0x9D,0x41,0xE4,0x00,0xA0,0x3C,0x5D,0x4A,
+0x00,0xF2,0xF1,0x0B,0x90,0xD6,0xEA,0xFC,0x25,0x88,0x6B,0xE7,0xFF,0xD7,0xB0,0x0D,
+0x21,0x46,0x0E,0x81,0x1A,0x0E,0x61,0x1E,0x0E,0x41,0x22,0x0E,0x21,0x26,0x0E,0x01,
+0x2A,0x0D,0xE1,0x2E,0x0D,0xC1,0x32,0x0D,0xA1,0x36,0x0D,0x81,0x3A,0x0D,0x61,0x3E,
+0x0D,0x41,0x42,0x1C,0x21,0x48,0x85,0x29,0xFC,0x21,0xFF,0x00,0x98,0xA0,0xED,0x41,
+0x00,0xF8,0xED,0x61,0x00,0xF4,0xED,0xC1,0x00,0xE8,0xED,0xE1,0x00,0xE4,0xEE,0x01,
+0x00,0xE0,0xEE,0x21,0x00,0xDC,0xEE,0x41,0x00,0xD8,0xEE,0x61,0x00,0xD4,0xED,0x21,
+0x00,0xFC,0xED,0x81,0x00,0xF0,0xED,0xA1,0x00,0xEC,0xEE,0x81,0x00,0xD0,0xEE,0xA1,
+0x00,0xCC,0xEE,0xC1,0x00,0xC8,0xC2,0x20,0x10,0x01,0xC2,0x60,0x10,0x01,0xFE,0x31,
+0x0C,0x5C,0xFD,0x73,0x0B,0x1A,0x88,0x71,0x10,0x8B,0x00,0xE4,0x00,0x9F,0x1A,0xC2,
+0xE0,0x10,0x01,0xEA,0xF7,0x08,0x25,0xC6,0xF7,0x02,0x00,0xC2,0x40,0x10,0x01,0x5E,
+0xE0,0x01,0xC1,0xE0,0x10,0x01,0x4A,0xE1,0x13,0xC1,0x40,0x10,0x01,0xC1,0xC0,0x10,
+0x01,0x0E,0xE1,0x0C,0x9A,0x00,0xFE,0x52,0x03,0x30,0xFD,0xEF,0x09,0x0C,0xFD,0x4A,
+0x09,0xBC,0xFD,0xCE,0x0B,0x90,0x98,0x60,0x0C,0x01,0x58,0x0C,0x01,0x5C,0x18,0x01,
+0x56,0x18,0x01,0x57,0x0C,0x01,0x60,0x0C,0x01,0x64,0xE7,0xFF,0xCF,0x6C,0x1C,0x61,
+0x56,0x1C,0x81,0x60,0x1C,0xA1,0x58,0x98,0xC3,0xE7,0xFF,0xF1,0xF6,0xC2,0xE0,0x10,
+0x01,0xEB,0x97,0x08,0x1D,0xC2,0xE0,0x10,0x01,0xC3,0x20,0x10,0x01,0xEF,0x77,0x04,
+0x56,0xC2,0xE0,0x10,0x01,0xF3,0x59,0x04,0x64,0x57,0x9C,0x20,0xEF,0xB7,0x04,0x62,
+0x4F,0x9C,0x29,0x1E,0xE1,0x58,0x9B,0x20,0xE4,0x00,0x00,0x5D,0x0F,0xD7,0x02,0x4F,
+0x19,0x18,0x8F,0x12,0x0B,0x18,0x1C,0x43,0x1E,0xC5,0x5F,0x1F,0xF9,0x4B,0x18,0x00,
+0x0F,0x17,0x00,0x23,0x80,0x3C,0x23,0x60,0x30,0x43,0x18,0xEB,0x43,0x18,0xD8,0x0F,
+0x17,0x00,0x9F,0x21,0x9E,0xE4,0x5F,0x19,0x00,0xD7,0x58,0xFE,0x9D,0x13,0x0B,0x04,
+0x09,0xAB,0x0B,0x12,0x8B,0x0C,0x9A,0xA0,0xE4,0x00,0x01,0xA1,0xFE,0xE1,0x00,0xC8,
+0x8E,0xF5,0x12,0xF7,0x8E,0x22,0xE0,0x72,0xFF,0x61,0x00,0xC8,0x9A,0xE1,0x42,0xF7,
+0xAD,0x4E,0xF7,0x10,0x8E,0xFB,0x0F,0x37,0x92,0x4E,0xF5,0x10,0x8E,0xFB,0x0F,0x37,
+0x90,0x41,0x95,0xC3,0x1F,0xB5,0x01,0x5E,0xCC,0x00,0x43,0xBD,0xC3,0xE4,0x00,0x01,
+0x25,0x0F,0x01,0x00,0x0F,0x41,0x04,0x0F,0xA1,0x08,0x88,0x92,0x50,0xA0,0x3C,0x1C,
+0x61,0x10,0xE4,0x00,0x3D,0x1C,0x42,0xF6,0x65,0xC3,0x80,0x10,0x01,0x9E,0xE1,0xFF,
+0x9C,0x04,0x1C,0x4E,0xF7,0x08,0x8E,0xFC,0x98,0x81,0x08,0x77,0x00,0x1C,0xA1,0x10,
+0x40,0x63,0x6B,0x40,0x63,0xA0,0xE7,0xFF,0xE9,0xA6,0x53,0x60,0x64,0x4E,0xF6,0x10,
+0x5C,0x63,0x04,0x4F,0x35,0x10,0xFD,0x21,0x00,0xC8,0x9E,0xE2,0x8F,0x29,0x8E,0xEF,
+0x0F,0x39,0x92,0x43,0x23,0xCB,0x43,0x39,0xD8,0x0B,0x77,0x01,0x5F,0x39,0x04,0x43,
+0x7B,0xCD,0x0F,0x77,0x01,0x0F,0xA1,0x0A,0x4F,0x76,0x10,0x0F,0x41,0x06,0x43,0x9B,
+0x7C,0x9E,0xC1,0x0B,0xDC,0x01,0x8F,0x6A,0x43,0x3E,0xCD,0x5E,0xD6,0x00,0x5F,0x39,
+0x06,0x0F,0x01,0x02,0x0F,0x3C,0x01,0x0A,0xF7,0x00,0x8F,0x37,0x0F,0x3B,0x00,0xD7,
+0xB6,0xFB,0x94,0x9E,0xA1,0x5E,0xB5,0x00,0xD7,0x55,0xF9,0xA5,0x98,0x61,0xE7,0xFF,
+0xCC,0xC4,0x13,0x6B,0x04,0x13,0x4B,0x01,0xC3,0x00,0x10,0x01,0x43,0x5A,0xDB,0x9A,
+0xE0,0xFF,0x18,0x0C,0xD0,0xE4,0x00,0x00,0x4F,0x4F,0x37,0x10,0x43,0x99,0xC4,0x8F,
+0x2F,0x0B,0x39,0x01,0x0F,0x3C,0x01,0x4F,0x37,0x10,0x9E,0xE1,0x9F,0x22,0x5E,0xF7,
+0x00,0x43,0x99,0xC4,0x8F,0x2F,0x0B,0x39,0x01,0x0F,0x3C,0x01,0xD7,0x57,0xFE,0xEC,
+0xC3,0x20,0x10,0x01,0x12,0x8E,0x00,0xFF,0x39,0x0B,0x96,0x9B,0xA0,0x8B,0x19,0x8B,
+0xCA,0xE4,0x00,0x01,0x3D,0x1F,0x98,0x02,0x12,0xF8,0xFE,0x12,0xB8,0xFF,0x11,0x98,
+0x01,0x13,0x58,0x00,0x0D,0x1C,0x02,0x21,0x04,0x5E,0x43,0x8C,0xDB,0x8F,0x9A,0x4F,
+0x9C,0x10,0x8F,0x8A,0x0F,0x9C,0x02,0x41,0x8C,0xDB,0xE4,0x00,0x00,0xCD,0x4D,0xBA,
+0x10,0x43,0x9A,0xDC,0x8D,0xAA,0x4F,0x9C,0x10,0x0D,0xAD,0x02,0x8F,0x8A,0x0F,0x9C,
+0x02,0x8F,0x8D,0xE7,0xFF,0xFF,0xC9,0x21,0x04,0x5A,0x41,0xB7,0x64,0x4D,0xAD,0x10,
+0x8D,0xAA,0x0D,0xAD,0x02,0xD5,0xBC,0x01,0x94,0xE4,0x00,0x00,0x65,0x4D,0xB7,0x10,
+0x42,0xD7,0xDC,0x8D,0xBE,0x4E,0xD6,0x10,0x0D,0xAD,0x02,0x8E,0xDE,0x0E,0xD6,0x02,
+0x8E,0xCD,0xD6,0xDC,0x00,0xC8,0x43,0x57,0x64,0x4F,0x5A,0x10,0x8F,0x5E,0x0F,0x9A,
+0x02,0x8F,0x8D,0xE4,0x00,0x00,0x0D,0x8B,0x8D,0x8B,0x57,0x9E,0xE1,0x5E,0xF7,0x00,
+0xD6,0xF5,0xFD,0xB8,0x1B,0x58,0x00,0x9F,0xA1,0x1F,0x18,0x30,0x5F,0xBD,0x00,0xD7,
+0xB4,0xFB,0x36,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x0B,0x1E,0xC2,0xE0,0x10,0x01,0x1F,
+0x98,0xFF,0xF3,0x57,0x04,0x50,0x1F,0xB8,0xFD,0xC2,0xE0,0x10,0x01,0x1E,0xB8,0xFC,
+0x11,0x8E,0x00,0x5D,0x1C,0x00,0x1D,0xB8,0xFE,0xFE,0xF7,0x0B,0x95,0x9B,0x60,0x8A,
+0x9C,0x5F,0xBD,0x00,0x5E,0xB5,0x00,0x9A,0xC2,0x1C,0x78,0xFD,0xE4,0x00,0x00,0xEB,
+0x13,0x17,0x01,0xD7,0x1C,0x00,0x76,0x19,0x17,0x00,0x18,0x77,0xFF,0xE4,0x00,0x00,
+0xB9,0x23,0x00,0x36,0x1A,0xD7,0x00,0x18,0x17,0xFF,0xE4,0x00,0x00,0x9F,0x23,0x04,
+0x56,0x5F,0x40,0x29,0x9F,0x1F,0x4B,0xC2,0x1B,0x1B,0x17,0xFF,0x1B,0xD7,0x00,0xE4,
+0x00,0x00,0x75,0xD7,0x0D,0x00,0x8E,0x5F,0x40,0x29,0x1A,0x97,0x00,0x4B,0xDD,0xA8,
+0xE4,0x00,0x00,0x4D,0x1F,0xD8,0x01,0x5F,0xDE,0x00,0x23,0x44,0x22,0x9F,0x02,0x5F,
+0xD8,0x00,0x1B,0xD7,0x00,0x13,0xD7,0x01,0x23,0x44,0x26,0x9F,0xDE,0xE4,0x00,0x00,
+0x0D,0x9F,0xDF,0x5F,0xDE,0x00,0x1B,0xD7,0xFF,0x9F,0x61,0x1E,0xF7,0x30,0x5F,0x7B,
+0x00,0xD7,0x6C,0xFC,0x7E,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x25,0x56,0xF7,0x08,
+0xD2,0xE0,0x08,0x6A,0xC2,0xE0,0x10,0x01,0x9B,0x00,0xF3,0x57,0x0B,0x1E,0x9B,0xA0,
+0xC2,0xE0,0x10,0x01,0x1E,0xDA,0xFE,0xEA,0x97,0x01,0x7E,0x8B,0x78,0x8B,0x9D,0x98,
+0x60,0x9A,0xA1,0xE4,0x00,0x01,0xBF,0x12,0xF9,0x00,0xD2,0xE1,0x06,0x99,0xD6,0xD7,
+0x06,0x78,0x1D,0x17,0xFF,0x1D,0xB7,0x01,0x1D,0x39,0x02,0x5D,0x08,0x00,0x5D,0xAD,
+0x00,0x0F,0xC9,0x02,0x23,0xC4,0xDE,0x13,0x79,0x01,0x43,0x7A,0xDB,0x5F,0x7B,0x00,
+0x8D,0xBB,0x8D,0x1B,0x8E,0xFB,0x4D,0xAD,0x10,0x4D,0x08,0x10,0x8D,0xAA,0x8D,0x0A,
+0x0F,0xAD,0x02,0x0F,0x88,0x02,0x4E,0xF7,0x10,0x5F,0xBC,0x15,0x8E,0xEA,0x4B,0x9D,
+0xE0,0x0F,0x77,0x02,0x5F,0x9C,0x06,0xE4,0x00,0x00,0xCD,0x23,0xC9,0xA2,0x13,0x79,
+0x01,0x43,0xBB,0xD3,0x5F,0xBD,0x00,0x43,0x8D,0xEC,0x4F,0x9C,0x10,0x8F,0x8A,0x43,
+0x75,0xDD,0x0F,0xDC,0x02,0x43,0x7A,0xDB,0x5F,0x7B,0x00,0x8D,0xBB,0x4D,0xAD,0x10,
+0x8D,0xAA,0x0F,0x8D,0x02,0x8F,0xDC,0x43,0x88,0xEC,0x4F,0x9C,0x10,0x8F,0x8A,0x8D,
+0x1B,0x0D,0xBC,0x02,0x8F,0xB7,0x4D,0x08,0x10,0x8E,0xFB,0x8D,0x0A,0x4F,0xBD,0x10,
+0x0F,0x88,0x02,0x8F,0xAA,0x8F,0x8D,0x4E,0xF7,0x10,0x5F,0xDC,0x15,0x8E,0xEA,0x4B,
+0x9E,0xE0,0x0F,0x7D,0x02,0x0E,0xF7,0x02,0x5F,0x9C,0x06,0x8F,0x77,0x8B,0xB4,0xE4,
+0x00,0x00,0x0F,0x23,0xC0,0x68,0xC3,0x60,0x7C,0xEC,0x20,0x00,0x4D,0x42,0xFB,0xE5,
+0xD7,0xB7,0x00,0x68,0x4E,0xF5,0xC4,0x44,0x63,0xBD,0x5C,0x63,0x00,0x9F,0x01,0x1F,
+0x39,0x30,0x5E,0xF8,0x00,0xD5,0x97,0xF9,0x15,0xE7,0xFF,0xCD,0xF4,0x1E,0xC1,0x68,
+0x10,0x8B,0x00,0x88,0x76,0x98,0xA0,0x99,0xA0,0xE4,0x00,0x96,0x3E,0x89,0x8D,0xC2,
+0x80,0x10,0x01,0xE4,0x00,0x01,0x3F,0xCC,0x6C,0x00,0x30,0xEB,0x74,0x08,0x3F,0x42,
+0xA3,0x74,0x57,0x7B,0x02,0x13,0x55,0x04,0x13,0x35,0x05,0x13,0x15,0x07,0x23,0x61,
+0x54,0x88,0x9A,0x88,0xB9,0x88,0xD8,0x0F,0x01,0x00,0x0F,0x21,0x08,0x0F,0x41,0x04,
+0x1C,0x61,0x52,0x98,0xE1,0xE7,0xFF,0xD2,0xE4,0x0F,0x01,0x02,0x0F,0x21,0x0A,0x0F,
+0x41,0x06,0x20,0x61,0x14,0x1C,0x61,0x54,0x88,0x9A,0x88,0xB9,0x88,0xD8,0x98,0xE1,
+0xE7,0xFF,0xD4,0x54,0x20,0x60,0xCC,0x0B,0x21,0x52,0x0B,0x01,0x54,0xCF,0x39,0x00,
+0x07,0xCF,0x18,0x00,0x03,0x9A,0xEA,0x8F,0x19,0x43,0x18,0xB8,0x0F,0x15,0x17,0xE4,
+0x00,0x00,0x47,0x8C,0x6E,0x88,0x9A,0x1C,0x63,0x16,0x88,0xB9,0x88,0xD8,0x98,0xE1,
+0xE7,0xFF,0xD2,0x4E,0x20,0x60,0x3A,0x9A,0xE1,0x4E,0xF7,0x64,0x45,0xAD,0xBD,0x5D,
+0xAD,0x00,0x88,0x76,0x10,0x8B,0x00,0x98,0xA1,0x9D,0x81,0xE4,0x00,0x94,0xFA,0x5D,
+0x8C,0x00,0x12,0xEE,0x00,0xD6,0xEC,0xFB,0x15,0x88,0x6D,0xE7,0xFF,0xCC,0x70,0x9E,
+0x01,0x0F,0x21,0x0E,0x5E,0x10,0x00,0xD7,0x30,0xD8,0x7D,0x88,0x71,0x10,0x8B,0x00,
+0x98,0xA1,0xE4,0x00,0x94,0xAC,0xED,0x21,0x00,0xFE,0xEE,0xC1,0x00,0xCA,0xEE,0xA1,
+0x00,0xCE,0xEE,0x81,0x00,0xD2,0xEE,0x61,0x00,0xD6,0xEE,0x41,0x00,0xDA,0xEE,0x21,
+0x00,0xDE,0xEE,0x01,0x00,0xE2,0xED,0xE1,0x00,0xE6,0xED,0xC1,0x00,0xEA,0xED,0xA1,
+0x00,0xEE,0xED,0x81,0x00,0xF2,0xED,0x61,0x00,0xF6,0xED,0x41,0x00,0xFA,0xFC,0x21,
+0x01,0x00,0x85,0x29,0x20,0x60,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x34,0x85,
+0x29,0x20,0x60,0x4E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x00,0xFC,0xC2,0xE0,0x10,0x01,
+0xEC,0xB7,0x01,0x30,0x85,0x29,0x20,0x60,0x5E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,
+0x8C,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x04,0x90,0xE4,0x00,0x00,0x5D,0x20,0x64,0x5E,
+0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0xBC,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x04,0xB4,
+0xE4,0x00,0x00,0x2F,0x20,0x68,0x4E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0xAC,0xC2,
+0xE0,0x10,0x01,0xEC,0xB7,0x04,0x88,0x85,0x29,0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,
+0xEC,0x97,0x04,0xA8,0x85,0x29,0x5C,0x84,0x04,0x20,0x60,0x3E,0xC2,0xE0,0x10,0x01,
+0xEC,0x97,0x01,0x3B,0xE4,0x00,0x00,0x3D,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEC,
+0x97,0x01,0x1D,0xE4,0x00,0x00,0x1F,0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,
+0x01,0x41,0x85,0x29,0x5C,0x84,0x04,0x20,0x60,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,
+0x01,0x01,0xE4,0x00,0x00,0x3D,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,
+0x39,0xE4,0x00,0x00,0x1F,0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x19,
+0x85,0x29,0x5C,0x84,0x04,0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x1B,
+0x85,0x29,0x1C,0x21,0xC8,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,0x61,0x2C,0x0D,0x81,
+0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,0xE1,0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,
+0x0E,0x41,0x10,0x0E,0x61,0x0C,0x0E,0x81,0x08,0x0E,0xA1,0x04,0x0E,0xC1,0x00,0x20,
+0x65,0x70,0x20,0x60,0x4C,0xD0,0x62,0x04,0x42,0x99,0xC0,0x89,0xEE,0xD0,0x63,0x06,
+0x66,0xE4,0x00,0x01,0x71,0xC2,0xE0,0x10,0x01,0xEE,0xD7,0x00,0xFE,0xC2,0xE0,0x10,
+0x01,0xEE,0xB7,0x01,0x32,0xC2,0xE0,0x10,0x01,0xEE,0x97,0x04,0x8E,0xC2,0xE0,0x10,
+0x01,0xEE,0x77,0x04,0x92,0xC2,0xE0,0x10,0x01,0xE9,0xF7,0x01,0x3B,0xC2,0xE0,0x10,
+0x01,0x9A,0x00,0xE9,0xD7,0x01,0x01,0x99,0xA0,0xC2,0xE0,0x10,0x01,0x9A,0x21,0xED,
+0x77,0x01,0x36,0x9A,0x45,0x89,0x90,0xE4,0x00,0x00,0xD9,0xC2,0xE0,0x10,0x01,0xEE,
+0x97,0x04,0xBE,0xC2,0xE0,0x10,0x01,0xEE,0x77,0x04,0xB6,0xC2,0xE0,0x10,0x01,0x99,
+0xA0,0xE9,0xF7,0x01,0x1D,0x9A,0x00,0xC2,0xE0,0x10,0x01,0x8A,0x2D,0xE9,0xD7,0x01,
+0x39,0x9A,0x40,0x99,0x61,0x89,0x90,0x9A,0xA0,0xE4,0x00,0x00,0x71,0xC2,0xE0,0x10,
+0x01,0xEE,0x97,0x04,0xAE,0xC2,0xE0,0x10,0x01,0xEE,0x17,0x04,0xAA,0xC2,0xE0,0x10,
+0x01,0xE9,0xF7,0x01,0x41,0xC2,0xE0,0x10,0x01,0x99,0x81,0xE9,0xD7,0x01,0x19,0x9A,
+0x21,0xC2,0xE0,0x10,0x01,0x9A,0x40,0xE9,0xB7,0x01,0x1B,0x99,0x61,0x9A,0x60,0x8A,
+0xAC,0x9A,0xC1,0x99,0x41,0xE4,0x00,0x00,0x55,0xC2,0xE0,0x10,0x01,0xE9,0xF7,0x01,
+0x3B,0xC2,0xE0,0x10,0x01,0xE9,0xD7,0x01,0x01,0x99,0xA0,0x9A,0x40,0x9A,0x00,0x9A,
+0x80,0x9A,0xA0,0x8A,0x2D,0x89,0x72,0x8A,0x70,0x89,0x94,0x8A,0xD5,0x99,0x40,0x88,
+0x6A,0xE4,0x00,0xDF,0xF6,0x88,0x6A,0xE4,0x00,0xE0,0x78,0x88,0x76,0xE4,0x00,0xF4,
+0x26,0x88,0x75,0xE4,0x00,0xF4,0x80,0x88,0x74,0xE4,0x00,0xE1,0xD8,0x88,0x73,0xE4,
+0x00,0xE2,0x24,0x88,0x72,0xE4,0x00,0xE1,0x26,0x88,0x71,0xE4,0x00,0xE1,0x52,0x88,
+0x6A,0xE4,0x00,0xF5,0xA2,0x88,0x70,0xE4,0x00,0xF5,0xFC,0x98,0x60,0xE4,0x00,0xF6,
+0x4A,0x98,0x60,0xE4,0x00,0xF6,0x98,0x98,0x60,0xE4,0x00,0xF6,0xE6,0x98,0x60,0xE4,
+0x00,0xF7,0x34,0x88,0x6F,0xE4,0x00,0xE2,0x1E,0x88,0x6E,0xE4,0x00,0xE2,0x4C,0x88,
+0x6D,0xE4,0x00,0xE2,0x80,0x88,0x6C,0xE4,0x00,0xE2,0x9A,0x88,0x6B,0x0E,0xC1,0x02,
+0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,
+0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,
+0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0xE4,0x00,0xDF,0xE3,0xC2,0xE0,
+0x10,0x01,0xF0,0x77,0x04,0xA4,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x04,0xA4,
+0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x04,0xA4,0x9F,0x01,0xFB,0x17,0x04,0xA4,
+0x85,0x29,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x04,0xB8,0x85,0x29,0xC2,0xE0,0x10,0x01,
+0xF8,0x77,0x04,0xB8,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x04,0xB8,0x9F,0x01,
+0xFB,0x17,0x04,0xB8,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x01,0x14,0x85,0x29,
+0xC3,0x40,0x10,0x01,0xFF,0x5A,0x01,0x04,0x0C,0x1A,0x00,0x9A,0xE1,0xC3,0x20,0x10,
+0x01,0xFF,0x39,0x01,0x20,0x0E,0xF9,0x00,0xC3,0x00,0x10,0x01,0xFF,0x18,0x04,0x94,
+0x0C,0x18,0x00,0x0C,0x1A,0x04,0x0E,0xF9,0x04,0x0C,0x18,0x04,0x0C,0x1A,0x08,0x0E,
+0xF9,0x08,0x0C,0x18,0x08,0x0C,0x1A,0x0C,0x0E,0xF9,0x0C,0x0C,0x18,0x0C,0xC3,0x00,
+0x10,0x01,0xEE,0xF8,0x01,0x3C,0x85,0x29,0x9C,0x38,0x0D,0x41,0x04,0xC3,0x00,0x10,
+0x01,0xC2,0xE0,0x10,0x01,0x5C,0xA5,0x00,0x5C,0xC6,0x00,0xF3,0x38,0x04,0xB9,0xFE,
+0xF7,0x01,0x3C,0xD7,0x25,0x00,0x6A,0xF8,0xB8,0x04,0xB9,0x9B,0x01,0x0F,0x17,0x00,
+0xC3,0x80,0x10,0x01,0xC3,0x00,0x10,0x01,0x0F,0x37,0x02,0xFF,0x9C,0x01,0x20,0xFF,
+0x18,0x01,0x04,0x23,0x24,0x9A,0x0B,0xA3,0x00,0x4F,0x46,0x18,0x43,0x78,0xD4,0x0F,
+0xBB,0x00,0x0B,0xA4,0x00,0x0F,0xBB,0x04,0x8F,0x5C,0x0F,0x3A,0x00,0x0F,0x3A,0x04,
+0x40,0xA5,0x35,0x20,0xA4,0x1A,0x0C,0x17,0x00,0x4E,0xE6,0x18,0x8E,0xF8,0x0C,0xF7,
+0x02,0x08,0xA3,0x00,0x0D,0x17,0x02,0x0F,0xB7,0x06,0x0F,0x37,0x06,0x42,0xE7,0x2D,
+0x4C,0xF7,0xFA,0x46,0xE7,0xBE,0x0B,0x44,0x00,0x40,0xF7,0x3D,0x43,0x39,0xD5,0x4E,
+0xF9,0xFA,0x47,0x37,0xCE,0x42,0xF9,0xBD,0x41,0x08,0x2D,0x43,0xBD,0xD5,0x4F,0xC8,
+0xFA,0x4F,0x7D,0xFA,0x45,0x1E,0x46,0x47,0xBB,0xEE,0x43,0xC8,0xF5,0x43,0x7D,0xDD,
+0x43,0xC7,0xF3,0x43,0x7B,0xBB,0x9B,0x21,0x8F,0x7E,0x9A,0xE3,0xE4,0x00,0x00,0x11,
+0x8F,0x37,0x9E,0xE2,0xD7,0x3B,0xFF,0xE1,0xC3,0x20,0x10,0x01,0x4E,0xF7,0x09,0x53,
+0x40,0x1E,0x9E,0xFF,0x5E,0xF7,0x06,0xEE,0xF9,0x04,0xC0,0xC3,0x20,0x10,0x01,0x42,
+0xF7,0xD1,0xEF,0x39,0x01,0x16,0x42,0xF7,0xBB,0x43,0x39,0xBD,0xC2,0xE0,0x10,0x01,
+0x5F,0x23,0x11,0x20,0x00,0x1B,0x53,0x20,0x19,0xEF,0x37,0x04,0xB0,0xC3,0xA0,0x10,
+0x01,0xEC,0xB7,0x04,0xB2,0x4C,0xC6,0x08,0x9A,0xE0,0xFF,0xBD,0x04,0x94,0xCB,0x40,
+0x10,0x00,0x43,0x26,0xBC,0x4F,0x39,0x10,0x43,0x7C,0xCC,0xC9,0x40,0xA0,0x00,0x0D,
+0x1B,0x02,0x0F,0xDB,0x02,0x43,0x68,0x53,0xCF,0xDE,0x00,0x0A,0x8F,0xC5,0x43,0xDB,
+0xF0,0x43,0x7D,0xCC,0x0F,0xDB,0x00,0x5F,0xD7,0x00,0x23,0xC0,0x92,0x43,0xD8,0xCC,
+0x0D,0x1E,0x02,0x0F,0x7B,0x02,0x0F,0x3E,0x02,0x0B,0xC3,0x00,0x43,0x3E,0xCD,0x43,
+0x3B,0xCB,0x43,0x39,0xD0,0x8F,0x28,0x0F,0x23,0x01,0xE4,0x00,0x00,0x43,0x43,0xD8,
+0xCC,0x0D,0x1E,0x02,0x0F,0x7B,0x02,0x0F,0x3E,0x02,0x0B,0xC4,0x00,0x43,0x3E,0xCD,
+0x43,0x3B,0xCB,0x43,0x39,0xD0,0x8F,0x28,0x0F,0x24,0x01,0x43,0x66,0xBC,0x4F,0x7B,
+0x10,0x43,0xD8,0xDC,0x0F,0x3E,0x00,0x43,0x3C,0xDC,0x8F,0x7D,0x0F,0xD9,0x02,0x0D,
+0x1B,0x02,0x0F,0x79,0x02,0x43,0x68,0xDB,0x43,0x7B,0xD0,0x43,0x7E,0xDD,0x0F,0x79,
+0x00,0x9E,0xE1,0xD2,0xE2,0xFB,0x7E,0x0D,0x41,0x06,0x9C,0x28,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x05,0x1A,0x13,0x17,0x20,0x43,0x37,0xC4,0x9F,0x01,0x18,0x79,
+0x00,0x5F,0x18,0x00,0x1B,0x17,0x20,0xC3,0x20,0x10,0x01,0xC2,0xE0,0x10,0x01,0x5F,
+0x04,0xDB,0xFF,0x39,0x05,0x4E,0xFE,0xF7,0x05,0xA0,0x20,0x00,0x91,0x4F,0x18,0x08,
+0xC3,0x40,0x10,0x01,0x8F,0x38,0xEB,0x5A,0x05,0x49,0x8F,0x17,0x0F,0x59,0x01,0xC2,
+0xE0,0x10,0x01,0xEA,0xF7,0x05,0xF3,0x0E,0xF8,0x01,0xE4,0x00,0x00,0x1D,0xFF,0x00,
+0x7F,0xFF,0x0F,0x19,0x4F,0x0F,0x17,0x4F,0x85,0x29,0xC3,0x00,0x10,0x01,0x5C,0x84,
+0x02,0x9A,0xE0,0xFF,0x18,0x05,0x1A,0xE4,0x00,0x00,0x51,0x43,0x38,0xBC,0x43,0x63,
+0xBC,0x13,0x59,0x00,0x9E,0xE1,0x8F,0x44,0x5E,0xF7,0x00,0x1F,0x5A,0x40,0x4F,0x3A,
+0xFA,0x4F,0x39,0xD1,0x8F,0x59,0x57,0x5A,0x3F,0x43,0x3A,0xCD,0x1B,0x3B,0x00,0x13,
+0x38,0x20,0xD7,0x37,0xFE,0xCD,0x85,0x29,0xC3,0x18,0x00,0x21,0x5F,0x23,0x00,0xFF,
+0x18,0xB6,0xFE,0x9A,0xE0,0x5C,0x77,0x00,0x0B,0x78,0x01,0x9B,0x5F,0x5C,0x62,0x01,
+0x20,0x00,0x19,0x0B,0x58,0x03,0xD7,0x64,0x01,0x7D,0xD7,0x44,0x01,0x59,0x23,0x24,
+0x36,0x40,0x60,0xBD,0x54,0x63,0x3F,0xE4,0x00,0x00,0x57,0x23,0x28,0x2A,0x1C,0x63,
+0x20,0xE4,0x00,0x00,0x1B,0x23,0x2C,0x76,0x52,0xE0,0x20,0x40,0x77,0x1D,0x5C,0x63,
+0x00,0xE4,0x00,0x00,0x23,0x9E,0xE1,0x9F,0x02,0x5E,0xE2,0x29,0x23,0xFE,0xE5,0x50,
+0x60,0xFF,0x85,0x29,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x06,0x4A,0x0B,0x17,0x07,0x0A,
+0xF7,0x01,0x40,0x63,0xC3,0x40,0x63,0xB8,0x9A,0xEA,0x40,0x63,0xB8,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xFE,0xF7,0x01,0x44,0x0B,0x17,0x06,0x0A,0xF7,0x04,0xD7,0x17,0x00,
+0x92,0xCC,0x63,0x07,0xD0,0x42,0xF8,0xBD,0x40,0x63,0xB8,0xE4,0x00,0x00,0x0D,0x98,
+0x60,0x85,0x29,0x8B,0x23,0x20,0x80,0x96,0xC2,0xE0,0x10,0x01,0x98,0x60,0xFE,0xF7,
+0x01,0x44,0x0B,0x17,0x02,0x0A,0xF7,0x00,0xD7,0x17,0x00,0xDA,0xCC,0x79,0x07,0xD0,
+0x42,0xF8,0xBD,0x40,0x63,0xB8,0xE4,0x00,0x00,0x1B,0x20,0x84,0x1E,0xE7,0xFF,0xFF,
+0x65,0x98,0x60,0x85,0x29,0x5C,0x84,0x00,0x5C,0xA5,0x00,0x4C,0x84,0x30,0x5C,0xC6,
+0x00,0x8C,0x85,0x4C,0x84,0x08,0x8C,0x64,0xD0,0xC8,0x00,0x59,0x0C,0x03,0x01,0xE4,
+0x00,0x00,0x3F,0x52,0xE0,0x64,0x20,0xC0,0x54,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xB6,
+0xFA,0x9C,0xC1,0x4C,0xC6,0x0A,0x8C,0xD7,0x12,0xE6,0xFF,0x0E,0xE3,0x01,0x85,0x29,
+0xFC,0x21,0xFE,0x88,0xEE,0x21,0x01,0x54,0xEE,0x41,0x01,0x50,0xED,0x21,0x01,0x74,
+0xED,0x41,0x01,0x70,0xED,0x61,0x01,0x6C,0xED,0x81,0x01,0x68,0xED,0xA1,0x01,0x64,
+0xED,0xC1,0x01,0x60,0xED,0xE1,0x01,0x5C,0xEE,0x01,0x01,0x58,0xEE,0x61,0x01,0x4C,
+0xEE,0x81,0x01,0x48,0xEE,0xA1,0x01,0x44,0x5E,0x23,0x00,0x8A,0x44,0x5C,0xA5,0x00,
+0x4F,0x11,0x08,0x9A,0xE1,0xD4,0xB8,0x00,0x94,0x43,0x18,0x28,0x9A,0xE0,0x23,0x00,
+0x24,0x1E,0xF8,0x01,0x5E,0xF7,0x00,0x43,0x05,0xBB,0x5F,0x08,0x11,0x20,0x00,0x21,
+0x9E,0xFF,0x5E,0xF7,0x00,0x42,0x17,0x2B,0x8B,0x41,0x5E,0x10,0x00,0x9B,0x00,0x41,
+0xD0,0x8D,0x9D,0xC2,0x5D,0xCE,0x00,0xE4,0x00,0x00,0x4D,0x43,0x7A,0xCC,0x13,0xBC,
+0x00,0x9F,0x21,0x1B,0xBB,0x00,0xE4,0x00,0x00,0x13,0x9B,0x20,0x43,0x86,0xC4,0x5F,
+0x79,0x00,0xD6,0xFB,0xFF,0x4D,0x9F,0x01,0x8F,0x57,0x5F,0x18,0x00,0xD7,0x05,0xFF,
+0x6E,0x99,0x60,0x52,0x80,0x40,0xE4,0x00,0x01,0xC9,0x21,0x60,0x56,0x13,0x12,0x00,
+0x1E,0xE1,0x00,0x1F,0x18,0x40,0x8E,0xED,0x12,0xF7,0x00,0xE4,0x00,0x00,0x21,0x13,
+0x15,0x00,0x42,0xF3,0x6C,0x1F,0x18,0x40,0x12,0xF7,0xFF,0x43,0x18,0xBD,0x4E,0xF8,
+0xFA,0x4E,0xF7,0xD1,0x40,0xD8,0xBC,0x54,0xC6,0x3F,0x40,0xC6,0xBD,0x5C,0xC6,0x00,
+0x5C,0xC4,0x13,0x20,0x00,0x25,0x40,0xD4,0x35,0x5C,0xC6,0x00,0x1C,0x61,0x40,0x21,
+0x60,0x7A,0x98,0x80,0x88,0xAC,0xE7,0xFF,0xFD,0x9E,0x21,0x81,0x78,0x0B,0x0A,0x81,
+0xEA,0xEA,0xFF,0x7F,0x8E,0xF8,0x0E,0xEA,0x81,0xE4,0x00,0x00,0x9F,0x98,0x81,0x88,
+0xAC,0x21,0x64,0x56,0xE7,0xFF,0xFD,0x62,0x21,0x81,0x00,0x0B,0x0A,0xFF,0xEA,0xEA,
+0xFF,0x7F,0xE4,0x00,0x00,0x45,0xE7,0xFF,0xFD,0x3E,0x21,0x80,0x52,0xEB,0x01,0x00,
+0xC1,0x0A,0xE1,0x41,0x8E,0xF8,0xEE,0xE1,0x00,0xC1,0xE4,0x00,0x00,0x3D,0x0B,0x0A,
+0xFF,0x0A,0xEA,0x81,0x5F,0x57,0x04,0x5F,0x38,0x04,0xD7,0x3A,0x00,0x31,0x8A,0xF8,
+0x0B,0x0A,0x01,0x8E,0xF8,0x0E,0xEA,0x01,0x9D,0xA1,0x9D,0x42,0x5D,0x8D,0x00,0xD5,
+0xCC,0xFA,0x5D,0x21,0x60,0x76,0x9D,0x61,0x5D,0x6B,0x00,0xE4,0x00,0x00,0x3F,0x0B,
+0x0F,0x01,0x9E,0xE1,0x0F,0x0F,0x81,0x5E,0xF7,0x00,0x9D,0xE2,0xE4,0x00,0x00,0x0D,
+0x9A,0xE0,0xD6,0xEE,0xFF,0x6E,0xE7,0xFF,0xFF,0xC1,0xD5,0x71,0x00,0xC2,0xFD,0xE1,
+0x00,0xC0,0x1E,0x61,0x00,0x89,0x4F,0x99,0xA0,0x42,0xB2,0x5C,0x8E,0x6B,0xE7,0xFF,
+0xFF,0x7D,0x21,0x64,0x26,0x9D,0xDF,0xE4,0x00,0x00,0x0F,0x1D,0xCE,0x3F,0xFE,0xE1,
+0x01,0x40,0x4D,0xCE,0x08,0x8D,0xD7,0xE8,0x6E,0xFF,0x01,0x42,0x03,0x80,0xEE,0xA1,
+0x01,0x46,0x5C,0x70,0x00,0xEE,0x81,0x01,0x4A,0xEE,0x61,0x01,0x4E,0xEE,0x41,0x01,
+0x52,0xEE,0x21,0x01,0x56,0xEE,0x01,0x01,0x5A,0xED,0xE1,0x01,0x5E,0xED,0xC1,0x01,
+0x62,0xED,0xA1,0x01,0x66,0xED,0x81,0x01,0x6A,0xED,0x61,0x01,0x6E,0xED,0x41,0x01,
+0x72,0xED,0x21,0x01,0x76,0xFC,0x21,0x01,0x78,0x85,0x29,0x5C,0x84,0x06,0x5C,0xA5,
+0x06,0x43,0x24,0x2C,0x9B,0x02,0x43,0x19,0xC0,0x53,0x20,0x1E,0x5E,0xE3,0x06,0xC7,
+0x18,0xFF,0xFF,0x40,0x84,0x2D,0x98,0x60,0xCC,0x84,0x00,0x0A,0x40,0x84,0xC8,0xC4,
+0x84,0xFF,0xFF,0x43,0x38,0x25,0xD6,0xF9,0x00,0x60,0x8C,0x98,0x5C,0x97,0x1D,0x48,
+0x61,0x01,0x85,0x29,0x24,0x80,0x68,0x24,0x7C,0x34,0xCE,0xE3,0x03,0xE8,0x98,0x61,
+0xE4,0x00,0x00,0x49,0xCE,0xE3,0xFC,0x18,0x98,0x64,0xE4,0x00,0x00,0x35,0x20,0x80,
+0x74,0x24,0x7C,0x34,0xCE,0xE3,0xFC,0x18,0x98,0x62,0xE4,0x00,0x00,0x15,0xCE,0xE3,
+0x03,0xE8,0x98,0x63,0x40,0x97,0x20,0xE7,0xFF,0xF9,0x23,0x9A,0xE0,0x20,0x60,0x3C,
+0x5C,0x60,0x11,0x52,0xE0,0x30,0x53,0x00,0x10,0x4A,0xF8,0xB8,0x88,0x77,0x85,0x29,
+0x0A,0xE3,0x00,0x26,0xFC,0x60,0xC3,0x00,0x10,0x01,0xEB,0x18,0x06,0x51,0x5F,0x38,
+0x06,0x5E,0xF8,0x1D,0x4A,0xF9,0xB8,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0x0E,0xE3,0x01,
+0xC3,0x00,0x10,0x01,0x0A,0xE4,0x00,0xFF,0x18,0x06,0x4A,0x26,0xFC,0x4C,0x0B,0x38,
+0x07,0x5F,0x59,0x06,0x5E,0xF9,0x1D,0x4A,0xFA,0xB8,0xE4,0x00,0x00,0x0D,0x9A,0xE0,
+0x0E,0xE4,0x01,0x13,0x38,0x04,0x23,0x28,0x64,0x23,0x2C,0x8C,0x23,0x20,0xA6,0x0B,
+0x23,0x00,0x0E,0xE3,0x01,0x0A,0xF8,0x07,0x42,0xF7,0xCD,0xE4,0x00,0x00,0x15,0x0B,
+0x18,0x09,0x42,0xF8,0xBD,0x0E,0xE4,0x01,0xE4,0x00,0x00,0x1B,0x0B,0x03,0x00,0x0E,
+0xE3,0x01,0x0F,0x04,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,0x6D,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x06,0x59,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,
+0x61,0x24,0x0D,0x81,0x20,0x0D,0xA1,0x1C,0x0C,0x61,0x07,0x0C,0x81,0x05,0x0D,0x21,
+0x2C,0x0D,0xC1,0x18,0x0D,0xE1,0x14,0x0E,0x01,0x10,0x0E,0x21,0x0C,0x5D,0xA5,0x00,
+0x1C,0x61,0x06,0x1C,0x81,0x04,0xE7,0xFF,0xFE,0x94,0xC2,0xE0,0x10,0x01,0x09,0x81,
+0x04,0xFF,0x17,0x06,0x4A,0xEA,0xF7,0x06,0x4B,0x0B,0x18,0x03,0x41,0x8C,0xC3,0x41,
+0x8C,0xB8,0x5D,0x8C,0x06,0x0D,0x81,0x05,0xC1,0x40,0x10,0x01,0xC1,0x60,0x10,0x01,
+0xFD,0x4A,0x05,0x3C,0xFD,0x6B,0x05,0x40,0xD1,0xA1,0x06,0x9E,0xC1,0xC0,0x10,0x01,
+0xC1,0xA0,0x10,0x01,0x0E,0xEA,0x02,0xFD,0xCE,0x05,0x18,0xFD,0xAD,0x05,0x9E,0x22,
+0xE4,0x68,0x22,0xE0,0x34,0x98,0x60,0xD2,0xE3,0x08,0x25,0xE4,0x00,0x00,0xD7,0x0A,
+0xE1,0x07,0x0E,0xED,0x01,0xE4,0x00,0x00,0xAB,0xC2,0xE0,0x10,0x01,0x0A,0x21,0x06,
+0xEE,0x37,0x05,0x15,0xC2,0xE0,0x10,0x01,0x09,0xED,0x00,0xED,0x97,0x06,0x47,0x41,
+0xEF,0x8D,0x4E,0xEF,0xFA,0x0A,0x0E,0x00,0x45,0xF7,0x7E,0x42,0x10,0x65,0x41,0xEF,
+0xBD,0x4E,0xF0,0xFA,0x46,0x17,0x86,0x42,0x10,0xBD,0xC2,0xE0,0x10,0x01,0xE8,0x77,
+0x06,0x59,0xE7,0xFF,0xF7,0x04,0x42,0x10,0x83,0x41,0xEF,0x7B,0x40,0x63,0x1B,0x8D,
+0xF0,0x9A,0xE3,0xD5,0xE3,0x05,0x18,0x0E,0x2D,0x01,0x0D,0x8E,0x01,0x0C,0x0B,0x01,
+0x9A,0xE2,0xE4,0x00,0x01,0x29,0x0A,0xE1,0x06,0x09,0xAD,0x00,0x41,0xAD,0xBD,0x4E,
+0xED,0xFA,0x45,0xB7,0x6E,0x41,0xAD,0xBD,0x0A,0xEE,0x00,0x41,0x97,0x65,0x4E,0xEC,
+0xFA,0x45,0x97,0x66,0x41,0x8C,0xBD,0xC2,0xE0,0x10,0x01,0x41,0x8C,0x63,0xE8,0x77,
+0x06,0x59,0x41,0xAD,0x6B,0xE7,0xFF,0xF6,0x5E,0x8D,0x8D,0x40,0x63,0x1B,0xD5,0x83,
+0x01,0x88,0x9A,0xE4,0x0E,0xEA,0x00,0xE4,0x00,0x00,0x51,0x21,0xA1,0x26,0x0E,0xEA,
+0x02,0x22,0xE8,0x60,0x26,0xE8,0x2B,0x22,0xE5,0x0A,0xE4,0x00,0x00,0x2B,0x22,0xEC,
+0x90,0xD2,0xE4,0x01,0xC6,0xE4,0x00,0x00,0x51,0x9A,0xE1,0xE4,0x00,0x00,0x57,0xC2,
+0xE0,0x10,0x01,0x0B,0x0B,0x01,0xEA,0xF7,0x06,0x6D,0xD7,0x17,0x00,0xF9,0xE4,0x00,
+0x00,0x2D,0x9A,0xE4,0x98,0x61,0x0E,0xEA,0x00,0xE4,0x00,0x00,0x25,0x0C,0x0A,0x00,
+0xE4,0x00,0x00,0x13,0x9A,0xE4,0x0E,0xEA,0x00,0x98,0x60,0x0A,0xEB,0x01,0x0E,0x21,
+0x0E,0x9E,0xE1,0x0E,0x01,0x12,0x0E,0xEB,0x01,0x0D,0xE1,0x16,0x0D,0xC1,0x1A,0x0D,
+0xA1,0x1E,0x0D,0x81,0x22,0x0D,0x61,0x26,0x0D,0x41,0x2A,0x0D,0x21,0x2E,0x1C,0x21,
+0x30,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x05,0x45,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x06,0x5C,0x85,0x29,0x9B,0x01,0xC2,0xE0,0x10,0x01,0x1C,0x21,0xB0,0xFB,0x17,
+0x05,0x42,0x0D,0x41,0x48,0x0D,0x61,0x44,0x0D,0x81,0x40,0x0E,0x01,0x30,0x0E,0x21,
+0x2C,0x0E,0x41,0x28,0x0E,0x61,0x24,0x0E,0x81,0x20,0x0E,0xA1,0x1C,0x0E,0xC1,0x18,
+0x0C,0x61,0x17,0x0C,0x81,0x15,0x0D,0x21,0x4C,0x0D,0xA1,0x3C,0x0D,0xC1,0x38,0x0D,
+0xE1,0x34,0x1C,0x61,0x16,0x1C,0x81,0x14,0xE7,0xFF,0xFA,0xF0,0xC2,0xE0,0x10,0x01,
+0x09,0x41,0x16,0xED,0x57,0x05,0x49,0xC2,0xE0,0x10,0x01,0xFF,0x17,0x06,0x4A,0xEA,
+0xF7,0x06,0x4B,0x0B,0x18,0x03,0x09,0x61,0x14,0x41,0x6B,0xC3,0x41,0x6B,0xB8,0xC2,
+0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0x5D,0x6B,0x06,0xED,0x77,0x05,0xF3,0xEA,0xF8,
+0x05,0x45,0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xF8,0x05,0x45,0xC3,0x20,0x10,0x01,0xC2,
+0x60,0x10,0x01,0xC2,0x40,0x10,0x01,0xC2,0x80,0x10,0x01,0xC2,0xA0,0x10,0x01,0xC3,
+0x00,0x10,0x01,0xC2,0xC0,0x10,0x01,0xC3,0x40,0x10,0x01,0xFF,0x39,0x06,0x48,0xFE,
+0x73,0x05,0x4A,0xFE,0x52,0x05,0x16,0xFE,0x34,0x05,0x4C,0xFE,0x15,0x06,0x44,0xFF,
+0x18,0x05,0xF4,0xFE,0xD6,0x04,0xC4,0xFD,0x9A,0x01,0x44,0xD2,0xE1,0x04,0x3E,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x05,0x3A,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x05,0x46,0xC2,
+0xE0,0x10,0x01,0xC3,0x60,0x10,0x01,0xEC,0x17,0x06,0x5C,0xC3,0x40,0x10,0x01,0x0D,
+0x4C,0x01,0x0D,0x4C,0x03,0x0D,0x6C,0x05,0x0D,0x6C,0x07,0x0D,0x4C,0x09,0x0D,0x6C,
+0x0B,0x0C,0x0C,0x10,0x0C,0x0C,0x14,0x0D,0x53,0x01,0x0D,0x72,0x01,0x0D,0x51,0x01,
+0x0D,0x70,0x01,0x9A,0xE0,0xFF,0x7B,0x05,0x4E,0xFF,0x5A,0x05,0xA0,0x43,0x98,0xBC,
+0x0C,0x1C,0x01,0x43,0x96,0xBC,0x0C,0x1C,0x01,0x43,0x9B,0xBC,0x0C,0x1C,0x01,0x43,
+0x9A,0xBC,0x0C,0x1C,0x01,0x9E,0xE2,0x5E,0xEA,0x09,0x23,0xFF,0x8D,0x9A,0xE1,0x0D,
+0x58,0x01,0x0D,0x76,0x01,0x0D,0x5B,0x01,0x0D,0x7A,0x01,0x1A,0xF9,0x00,0xE4,0x00,
+0x03,0x49,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x05,0x3A,0x5E,0xE3,0xBB,0x20,0x04,0xF5,
+0x09,0xF3,0x00,0x40,0x8A,0x7D,0x0F,0x01,0x04,0x0C,0x81,0x0C,0x0F,0x21,0x08,0x50,
+0x60,0x23,0xE7,0xFF,0xF2,0x44,0x09,0xD2,0x00,0x0C,0x81,0x0E,0x41,0xAB,0x75,0x43,
+0x64,0x23,0x42,0xED,0x6B,0x40,0x63,0x1B,0x8E,0xFB,0x0F,0x01,0x06,0x0F,0x21,0x0A,
+0xD6,0xE3,0x0B,0x10,0x12,0xF9,0x00,0x5E,0xE4,0xDB,0x20,0x00,0x51,0x4F,0x77,0x08,
+0x8F,0x1B,0x8E,0xDB,0x0D,0x58,0x01,0x0D,0x76,0x01,0xE4,0x00,0x00,0x1D,0xFF,0x60,
+0x7F,0xFF,0x0F,0x78,0x4F,0x0F,0x76,0x4F,0x1E,0xD7,0x01,0x5E,0xD6,0x00,0x1A,0xD9,
+0x00,0x0A,0xEC,0x00,0xD6,0xEA,0x00,0x38,0x0D,0x4C,0x01,0x0B,0x0C,0x02,0x8A,0xEC,
+0xD5,0x58,0x00,0x38,0x0D,0x4C,0x03,0x0B,0x17,0x04,0xD7,0x0B,0x00,0x38,0x0D,0x77,
+0x05,0x0A,0xEC,0x06,0xD5,0x77,0x00,0x38,0x0D,0x6C,0x07,0x4E,0xE4,0xFA,0x47,0x17,
+0x26,0x42,0xF8,0xBD,0x0F,0x0C,0x12,0x8E,0xF8,0x0E,0xEC,0x10,0x4E,0xED,0xFA,0x47,
+0x17,0x6E,0x42,0xF8,0xBD,0x0F,0x0C,0x16,0x8E,0xF8,0x88,0x6D,0x0E,0xEC,0x14,0xE7,
+0xFF,0xF6,0xCA,0xC3,0x00,0x10,0x01,0xF8,0x78,0x05,0x3B,0xC1,0xA0,0x10,0x01,0x89,
+0x83,0x5E,0xE3,0x00,0xFD,0xAD,0x05,0xF0,0x22,0xC9,0x94,0x26,0xC9,0x95,0x13,0x2D,
+0x00,0x1F,0x39,0x40,0x43,0x39,0xBD,0x4F,0x19,0xFA,0x4F,0x18,0xD1,0x42,0xF9,0xC4,
+0x56,0xF7,0x3F,0x42,0xD7,0xC5,0x5E,0xF6,0x00,0x0E,0xE1,0x10,0x26,0xEC,0x31,0x57,
+0x16,0xFF,0x5F,0x07,0x91,0x20,0x01,0x65,0xC3,0x00,0x10,0x01,0xF3,0x18,0x05,0x3A,
+0x23,0x00,0xC2,0x08,0x91,0x00,0x40,0x8F,0x25,0x08,0x70,0x00,0x40,0x6E,0x1D,0xE7,
+0xFF,0xF6,0x0A,0xE7,0xFF,0xEE,0x56,0x0E,0xE1,0x12,0xD2,0xE7,0x00,0x69,0x56,0xF6,
+0xFF,0x5E,0xE7,0x11,0x20,0x01,0x71,0x0D,0xF1,0x01,0x0D,0xD0,0x01,0x19,0x8D,0x00,
+0x0D,0x53,0x01,0x0D,0x72,0x01,0xE4,0x00,0x00,0xB9,0x5E,0xE3,0xC9,0x20,0x01,0x55,
+0x9B,0x01,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x06,0x5C,0xE4,0x00,0x00,0x91,0x0B,0x10,
+0x00,0x0B,0x31,0x00,0x43,0x18,0x75,0x43,0x39,0x7D,0x0F,0x01,0x04,0x0F,0x21,0x08,
+0x50,0x60,0x23,0xE7,0xFF,0xEF,0xA2,0x0F,0x21,0x0A,0x0F,0x01,0x06,0x43,0x39,0xCB,
+0x43,0x18,0xC3,0x40,0x63,0x1B,0x8F,0x19,0xD7,0x03,0xFC,0x5C,0xE7,0xFF,0xFE,0xF9,
+0xC2,0xE0,0x10,0x01,0xF3,0x17,0x05,0x46,0x9F,0x01,0xFB,0x17,0x05,0x46,0xE7,0xFF,
+0xFF,0x33,0x0E,0xC1,0x1A,0x0E,0xA1,0x1E,0x0E,0x81,0x22,0x0E,0x61,0x26,0x0E,0x41,
+0x2A,0x0E,0x21,0x2E,0x0E,0x01,0x32,0x0D,0xE1,0x36,0x0D,0xC1,0x3A,0x0D,0xA1,0x3E,
+0x0D,0x81,0x42,0x0D,0x61,0x46,0x0D,0x41,0x4A,0x0D,0x21,0x4E,0x1C,0x21,0x50,0x85,
+0x29,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x06,0x68,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,
+0x64,0x85,0x29,0xFC,0x21,0xFF,0x58,0xED,0x61,0x00,0x9C,0x0E,0xC1,0x70,0xED,0x21,
+0x00,0xA4,0xED,0x41,0x00,0xA0,0xED,0x81,0x00,0x98,0xED,0xA1,0x00,0x94,0xED,0xC1,
+0x00,0x90,0xED,0xE1,0x00,0x8C,0xEE,0x01,0x00,0x88,0xEE,0x21,0x00,0x84,0xEE,0x41,
+0x00,0x80,0x0E,0x61,0x7C,0x0E,0x81,0x78,0x0E,0xA1,0x74,0xFE,0xC1,0x00,0xA8,0xC2,
+0xE0,0x10,0x01,0xC1,0x60,0x10,0x01,0xEA,0xF7,0x05,0x4A,0xFD,0x6B,0x01,0x44,0xC3,
+0x00,0x10,0x01,0x0C,0x76,0xA0,0xEB,0x18,0x05,0x16,0x0C,0x36,0xA4,0x0E,0xEB,0x0D,
+0x0F,0x0B,0x0F,0xC3,0x20,0x10,0x01,0xF3,0x39,0x05,0x3A,0x5F,0x23,0xDB,0x20,0x00,
+0x85,0xC3,0x20,0x10,0x01,0xE8,0x79,0x06,0x44,0xC3,0x20,0x10,0x01,0xE8,0x99,0x05,
+0x4C,0x40,0x97,0x25,0x40,0x78,0x1D,0xE7,0xFF,0xF3,0x7A,0xE7,0xFF,0xEB,0xC6,0x0C,
+0x6B,0x12,0x0D,0x4B,0x16,0x98,0x80,0x0C,0x6B,0x18,0x0D,0x4B,0x1C,0xE7,0xFF,0xEE,
+0x0C,0x0C,0x6B,0x10,0x88,0x6A,0xE7,0xFF,0xED,0xB2,0x0B,0x0B,0x00,0x0C,0x6B,0x14,
+0xC2,0xE0,0x10,0x01,0x0B,0x2B,0x02,0xEA,0xF7,0x06,0x54,0x43,0x39,0xC5,0xC3,0x00,
+0x10,0x01,0xFE,0x38,0x06,0x60,0xD6,0xF9,0x00,0x88,0x0B,0x4B,0x06,0x0B,0x2B,0x04,
+0x43,0x3A,0xCD,0xD6,0xF9,0x00,0xEC,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x06,0x5E,0x22,
+0xE4,0x44,0xC2,0xE0,0x10,0x01,0xFD,0x57,0x05,0x1A,0x13,0x2A,0x20,0x27,0x24,0x5B,
+0xC2,0xE0,0x10,0x01,0xEC,0x16,0xFF,0x78,0xEC,0x17,0x06,0x5C,0x0C,0x16,0x80,0xE4,
+0x00,0x10,0x67,0x0C,0x36,0x9C,0x0F,0x31,0x02,0xEC,0x16,0xFF,0x78,0x0F,0x39,0x02,
+0x0C,0x16,0x80,0x0B,0x39,0x01,0x0C,0x16,0x90,0x9F,0x27,0x99,0x80,0x4F,0x39,0x19,
+0x4F,0x39,0x18,0x40,0x21,0xCD,0xEC,0x36,0xFF,0x70,0x40,0x21,0xCD,0xEC,0x36,0xFF,
+0x64,0xE4,0x00,0x0F,0xCB,0x4F,0x0C,0x20,0xEF,0x16,0xFF,0x68,0x0E,0xF7,0x06,0x8E,
+0xF8,0x11,0xB7,0x05,0x5D,0xA3,0xFB,0x20,0x00,0x45,0xC3,0x20,0x10,0x01,0xEF,0x19,
+0x06,0x6A,0x8B,0x2D,0xE4,0x00,0x00,0x25,0x1F,0x2D,0xE0,0xC3,0x40,0x10,0x01,0x5F,
+0x39,0x00,0xEF,0x1A,0x06,0x66,0x9B,0x41,0x4F,0x3A,0xCC,0x47,0x19,0xC4,0xD3,0x00,
+0x0A,0x12,0x1F,0x0D,0xFF,0x27,0x0D,0x13,0x10,0xB7,0x04,0x0C,0xD7,0x02,0x10,0x6A,
+0x20,0x9A,0xE0,0x20,0xA0,0x30,0x88,0x8A,0xE7,0xFF,0xED,0x10,0x5E,0xE3,0x00,0xEF,
+0x16,0xFF,0x72,0x8F,0x0C,0x1A,0xF8,0x00,0x0E,0xF1,0x02,0xEF,0x16,0xFF,0x6A,0x0E,
+0xF7,0x06,0x8E,0xF8,0x10,0xAA,0x20,0x10,0x77,0x04,0x0C,0x97,0x02,0x88,0xCA,0x9A,
+0xE0,0xD0,0xA0,0x07,0x5E,0xE4,0x00,0x01,0xDD,0x99,0xC0,0x99,0xFB,0x8A,0x0E,0xD1,
+0xAA,0x03,0x66,0x99,0xE0,0x1C,0x76,0xA8,0x88,0x8F,0xE7,0xFF,0xEA,0x00,0x0E,0xF1,
+0x02,0xEF,0x36,0xFF,0x6A,0x0E,0xF7,0x06,0x10,0x6A,0x20,0x8E,0xF9,0x10,0xB7,0x04,
+0x0C,0xD7,0x02,0x20,0xA0,0x54,0x1C,0x96,0xA8,0xE7,0xFF,0xEC,0x4E,0x5C,0x63,0x00,
+0xD4,0x70,0x00,0x41,0x8A,0x03,0x89,0xCF,0x9D,0xE4,0x5D,0xEF,0x00,0x5D,0xE8,0x09,
+0x23,0xFF,0x15,0xEE,0xF6,0xFF,0x72,0x8E,0xEC,0x1A,0x17,0x00,0x5E,0x09,0x73,0x20,
+0x02,0xA9,0x1C,0x76,0xA8,0x88,0x8E,0xE7,0xFF,0xE9,0x66,0x0E,0xF1,0x02,0xEF,0x56,
+0xFF,0x6A,0x0E,0xF7,0x06,0x8E,0xFA,0xE4,0x00,0x00,0xC9,0x1C,0x76,0xA8,0x88,0x8F,
+0xE7,0xFF,0xE9,0x34,0x0E,0xF1,0x02,0xEF,0x16,0xFF,0x6A,0x0E,0xF7,0x06,0x10,0x6A,
+0x20,0x8E,0xF8,0x10,0xB7,0x04,0x0C,0xD7,0x02,0x20,0xA0,0x54,0x1C,0x96,0xA8,0xE7,
+0xFF,0xEB,0x82,0x5C,0x63,0x00,0xD4,0x70,0x00,0x41,0x8A,0x03,0x89,0xCF,0x9D,0xE1,
+0x5D,0xEF,0x02,0xD1,0xE6,0xFE,0x46,0xEE,0xF6,0xFF,0x72,0x8E,0xEC,0x1A,0x17,0x00,
+0x5E,0x09,0x73,0x20,0x01,0x19,0x1C,0x76,0xA8,0x88,0x8E,0xE7,0xFF,0xE8,0x9E,0x0E,
+0xF1,0x02,0xEF,0x36,0xFF,0x6A,0x0E,0xF7,0x06,0x8E,0xF9,0x10,0x77,0x04,0x0C,0x97,
+0x02,0x10,0xAA,0x20,0x9A,0xE0,0x20,0xA0,0x34,0x1C,0xD6,0xA8,0xE7,0xFF,0xEA,0xE8,
+0x5E,0xE3,0x00,0xEF,0x16,0xFF,0x66,0x8F,0x0C,0x1A,0xF8,0x00,0xE4,0x00,0x00,0x2D,
+0xEE,0xF6,0xFF,0x72,0x8E,0xEC,0x18,0x17,0x00,0xEE,0xF6,0xFF,0x66,0x8E,0xEC,0x18,
+0x17,0x00,0xEE,0xF6,0xFF,0x72,0x8E,0xEC,0x12,0xF7,0x00,0x0E,0xF6,0x94,0x5E,0xE9,
+0x53,0x20,0x19,0x01,0xEE,0xF6,0xFF,0x66,0x8E,0xEC,0x12,0xF7,0x00,0x0E,0xF6,0x98,
+0x5E,0xE8,0xB3,0x20,0x18,0xB9,0x0B,0x4B,0x08,0x0A,0xEB,0x02,0x0B,0x0B,0x00,0x0B,
+0x2B,0x06,0xEF,0x56,0xFF,0x58,0xEE,0xF6,0xFF,0x60,0xEF,0x16,0xFF,0x74,0xEF,0x36,
+0xFF,0x5C,0x0A,0x0B,0x0C,0x09,0xEB,0x0A,0x09,0xCB,0x0E,0x0A,0x6B,0x04,0xD1,0xA7,
+0x01,0x36,0xD5,0xEE,0x2F,0xF8,0x41,0xCE,0x7D,0x4C,0x6E,0xFA,0x45,0xC3,0x76,0x40,
+0x6E,0x1D,0xE7,0xFF,0xE8,0xBA,0xC0,0x60,0x18,0xE8,0x20,0x17,0x9D,0x12,0xEA,0x20,
+0xE4,0x00,0x08,0xB3,0xEF,0x56,0xFF,0x5A,0x43,0x5A,0x85,0x4E,0xFA,0xFA,0x0F,0x56,
+0x84,0x46,0x97,0xD6,0xEF,0x36,0xFF,0x62,0x42,0x94,0xBD,0xEF,0x56,0xFF,0x76,0x42,
+0xEF,0x75,0x43,0x39,0xD5,0xEE,0xF6,0xFF,0x7C,0xEF,0x36,0xFF,0x6C,0x4E,0xF7,0xFA,
+0xEF,0x16,0xFF,0x7E,0x46,0xB7,0xC6,0x42,0xB5,0xBD,0xEE,0xF6,0xFF,0x5E,0x42,0x57,
+0x9D,0xD1,0xA8,0x08,0x7E,0x40,0x77,0x7D,0xE7,0xFF,0xE8,0x0E,0xC0,0x60,0xCE,0x48,
+0x20,0x00,0x95,0xEF,0x16,0xFF,0x62,0x98,0x80,0x40,0x78,0x85,0xE7,0xFF,0xE8,0x2E,
+0xC0,0x60,0x19,0x08,0x20,0x00,0x45,0x12,0xEA,0x20,0x8E,0xEA,0x12,0xF7,0xFF,0x5E,
+0xE5,0xFB,0x20,0x15,0xBD,0x42,0xB5,0xAB,0x42,0x94,0xA3,0x42,0x52,0x93,0x8E,0x95,
+0xEF,0x36,0xFF,0x6E,0xCE,0x94,0x00,0x64,0x42,0xF9,0xCB,0x8E,0x57,0x4E,0x52,0x18,
+0xD6,0x54,0x00,0x91,0x40,0x6E,0x9D,0xE7,0xFF,0xE7,0x70,0xC0,0x60,0x18,0xE8,0x20,
+0x15,0x09,0xEF,0x56,0xFF,0x62,0xEE,0xF6,0xFF,0x5A,0x98,0x80,0x40,0x7A,0xBD,0xE7,
+0xFF,0xE7,0x88,0xC0,0x60,0x4A,0xE8,0x20,0x14,0xA9,0x11,0xEA,0x00,0x1E,0xEF,0xF0,
+0x5E,0xE3,0xDB,0x20,0x00,0x45,0x12,0xEA,0x01,0x9E,0xF0,0x5E,0xF7,0x00,0x5E,0xE3,
+0xD3,0x20,0x14,0x41,0xC3,0x20,0x10,0x01,0xFF,0x39,0x05,0x1A,0x13,0x19,0x20,0x8F,
+0x19,0x12,0xF8,0xFF,0x1F,0x37,0xEF,0x5F,0x23,0xDB,0x20,0x00,0x49,0x13,0x18,0xFE,
+0x5F,0x02,0x13,0x20,0x00,0x25,0x5F,0x05,0xF3,0x20,0x13,0xA1,0x9E,0xF4,0xD2,0xE6,
+0x00,0x9D,0xEC,0x76,0xFF,0x7E,0xE7,0xFF,0xE6,0x92,0xC0,0x60,0x9C,0x4C,0x20,0x13,
+0x4D,0x9D,0xF8,0xD1,0xE7,0x21,0xD5,0xEF,0x56,0xFF,0x5E,0x41,0xCE,0xD5,0x4C,0x6E,
+0xFA,0x45,0xC3,0x76,0x40,0x6E,0x1D,0xE7,0xFF,0xE6,0x50,0xC0,0x60,0x7C,0xEC,0x20,
+0x10,0x79,0xEE,0xF6,0xFF,0x62,0x98,0x80,0x42,0x10,0xBD,0x4C,0x70,0xFA,0x46,0x03,
+0x86,0x40,0x70,0x1D,0xE7,0xFF,0xE6,0x5E,0xC0,0x60,0x3E,0x68,0xE4,0x00,0x07,0xFD,
+0xD1,0xAA,0x0E,0xFE,0xEF,0x16,0xFF,0x5A,0x43,0x10,0xC5,0x4E,0xF8,0xFA,0x0F,0x16,
+0x88,0x44,0x77,0xC6,0x98,0x80,0x40,0x63,0xBD,0xE7,0xFF,0xE6,0x14,0x0C,0x76,0x8C,
+0xC0,0x60,0xAF,0x0C,0x20,0x00,0x69,0x40,0x6E,0x7D,0x4E,0xE3,0xFA,0x44,0x77,0x1E,
+0x40,0x63,0xBD,0xE7,0xFF,0xE5,0x98,0xC0,0x60,0xAF,0x08,0x20,0x00,0xF5,0xEF,0x36,
+0xFF,0x5E,0x88,0x6F,0x88,0x99,0x88,0xB3,0xE7,0xFF,0xEA,0x86,0x20,0x60,0x52,0xEF,
+0x56,0xFF,0x5E,0x88,0x6E,0x88,0x9A,0x88,0xB3,0xE7,0xFF,0xEA,0x64,0x20,0x60,0x6C,
+0xEE,0xF6,0xFF,0x5A,0xD6,0x17,0x00,0xA0,0x0C,0x76,0x8A,0x98,0x80,0xE7,0xFF,0xE5,
+0x6C,0xC0,0x60,0x32,0x0C,0x20,0x10,0x71,0xEF,0x16,0xFF,0x6E,0x42,0xF8,0xC3,0x42,
+0xB5,0xAB,0x42,0x94,0xA3,0x42,0x52,0x93,0x8E,0x95,0x8E,0x57,0xCE,0x94,0x00,0x64,
+0x4E,0xF2,0x18,0xD6,0x97,0x01,0xA1,0x40,0x6E,0x9D,0xE7,0xFF,0xE4,0xCA,0xC0,0x60,
+0x18,0xEC,0x20,0x00,0x95,0x12,0xEA,0x01,0x9E,0xF0,0x5E,0xF7,0x00,0x5E,0xE3,0xD3,
+0x20,0x00,0x5D,0xEF,0x36,0xFF,0x76,0x98,0x80,0x40,0x70,0xCD,0xE7,0xFF,0xE4,0xCE,
+0xC0,0x60,0x2B,0xCC,0x20,0x0F,0x35,0x12,0xAA,0x00,0x1E,0xF5,0xF8,0x5E,0xE6,0x13,
+0x20,0x00,0xAD,0xEF,0x56,0xFF,0x5E,0x40,0x7A,0x7D,0xE7,0xFF,0xE4,0x4A,0xC0,0x60,
+0xC7,0xEC,0x20,0x00,0x65,0x40,0x6F,0x9D,0xE7,0xFF,0xE4,0x2E,0xC0,0x60,0xC7,0xEC,
+0x20,0x00,0x2D,0xCE,0xF2,0x00,0x06,0xD6,0x97,0x1C,0xD5,0xCE,0x52,0x00,0x0C,0xD6,
+0x92,0x01,0x39,0x12,0xEA,0x01,0xD2,0xEF,0x01,0x05,0x0C,0x76,0x86,0x98,0x80,0xE7,
+0xFF,0xE4,0x28,0x5C,0x6C,0x91,0x20,0x00,0x41,0x40,0x6E,0x7D,0xE7,0xFF,0xE3,0xC6,
+0x5C,0x6C,0x99,0x20,0x0D,0xB9,0x1E,0xB5,0xDB,0x5E,0xA2,0x3B,0x20,0x00,0x85,0x12,
+0xEA,0x20,0x8E,0xEA,0x12,0xF7,0xFF,0x5E,0xE4,0x93,0x20,0x00,0x4D,0x5E,0xE6,0xDB,
+0x20,0x00,0x35,0x0E,0xF6,0x8E,0xC2,0xE0,0x7D,0x0C,0x20,0x0D,0x1D,0xEC,0x76,0xFF,
+0x7E,0xE7,0xFF,0xE3,0x5C,0xC0,0x60,0xBB,0x88,0x20,0x00,0x65,0xEF,0x16,0xFF,0x62,
+0xEF,0x36,0xFF,0x76,0x88,0x70,0x88,0x98,0x88,0xB9,0xE7,0xFF,0xE8,0x42,0xD0,0x60,
+0x19,0x1E,0x40,0x6E,0x7D,0x4E,0xE3,0xFA,0x44,0x77,0x1E,0x40,0x63,0xBD,0xE7,0xFF,
+0xE3,0x02,0xC0,0x60,0xBB,0x88,0x20,0x00,0x5D,0xEF,0x56,0xFF,0x5E,0xD5,0xFA,0x18,
+0x22,0xD5,0xF3,0x18,0x02,0xD5,0xDA,0x17,0xE2,0xD5,0xD3,0x17,0xC2,0x0E,0xF6,0x8E,
+0xC2,0xE0,0xBB,0x88,0x20,0x00,0x7D,0xEF,0x16,0xFF,0x5A,0xEF,0x36,0xFF,0x62,0xD7,
+0x19,0x17,0x12,0xEF,0x56,0xFF,0x76,0xD7,0x1A,0x16,0xD2,0xD6,0x19,0x16,0xB2,0xD6,
+0x1A,0x16,0x92,0xEE,0xF6,0xFF,0x62,0xEF,0x16,0xFF,0x5A,0x98,0x80,0x40,0x77,0xC5,
+0xE7,0xFF,0xE2,0xA6,0xC0,0x60,0xBB,0x8C,0x4A,0xE1,0x01,0xE4,0x00,0x04,0x49,0xC2,
+0xE0,0x10,0x01,0x1F,0x0D,0xFD,0xFE,0xF7,0x06,0x4A,0x27,0x04,0xE7,0x0B,0x17,0x03,
+0x0B,0x37,0x01,0xCF,0x18,0x01,0x2C,0x43,0x18,0xC8,0xD6,0x58,0x14,0xBC,0x0B,0x17,
+0x07,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x03,0x2A,0x12,0xF7,0x00,0x42,0xF8,0xBB,0x53,
+0x00,0x64,0x42,0xF7,0xC0,0x0F,0x0B,0x1A,0xD6,0xF8,0x13,0xCC,0x0E,0xEB,0x12,0xE4,
+0x00,0x01,0x51,0x1F,0x0D,0xFF,0xD3,0x01,0x05,0x65,0x13,0x4A,0x20,0x13,0x2A,0x00,
+0x23,0x44,0x98,0x13,0x0A,0x01,0x43,0x99,0xC5,0x8F,0x38,0x4F,0x7C,0xFA,0x4F,0x39,
+0x0A,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0x5F,0x7B,0x00,0x5F,0x63,0xFB,0x20,0x00,0x1B,
+0x1F,0x39,0x20,0x57,0x39,0x3F,0x9B,0x00,0x1F,0xB9,0x40,0x53,0xC0,0x40,0xE4,0x00,
+0x00,0x63,0x43,0x2A,0xC4,0x13,0x99,0x00,0x43,0x9D,0xE5,0x4F,0x7C,0xFA,0x4F,0x7B,
+0xD1,0x43,0x3C,0xDC,0x57,0x39,0x3F,0x43,0x39,0xDD,0x5F,0x39,0x00,0x5F,0x24,0x13,
+0x20,0x00,0x25,0x43,0x3E,0xCD,0x5F,0x39,0x00,0x9F,0x01,0xD3,0x24,0x10,0x35,0x5F,
+0x78,0x00,0xD7,0x5B,0xFE,0x85,0xE4,0x00,0x04,0x8D,0xC3,0x20,0x10,0x01,0xEF,0x19,
+0x03,0x26,0x13,0x38,0x00,0x0B,0x17,0x09,0x43,0x39,0xC3,0x53,0x00,0x64,0x43,0x39,
+0xC1,0x0B,0x17,0x03,0x43,0x39,0xC3,0x0B,0x17,0x01,0x42,0xF9,0xC0,0x0F,0x0B,0x1E,
+0xD6,0xF8,0x0E,0x8C,0x0E,0xEB,0x16,0xC2,0xE1,0x06,0x8C,0x20,0x07,0x19,0xE4,0x00,
+0x02,0x5F,0xD1,0xA9,0x02,0x46,0xC3,0x40,0x10,0x01,0xF6,0xFA,0x05,0x46,0xD2,0xE3,
+0x0D,0x9C,0xEE,0xF6,0xFF,0x5A,0x50,0x60,0x64,0x42,0x10,0xBD,0xE7,0xFF,0xDF,0xF0,
+0xD4,0x70,0x0D,0x0C,0x12,0xEA,0x20,0xD2,0xE5,0x08,0x31,0x13,0x0A,0x01,0x9F,0x10,
+0x5F,0x18,0x00,0x5F,0x03,0xDB,0x20,0x03,0xDD,0x8E,0xEA,0x12,0xF7,0xFE,0x9E,0xF0,
+0x5E,0xF7,0x00,0x5E,0xE3,0xD3,0xE4,0x00,0x01,0x35,0xD1,0xA5,0x01,0x16,0x40,0x6E,
+0x9D,0xE7,0xFF,0xDF,0xBC,0xC0,0x60,0xA2,0x88,0x20,0x03,0x51,0x12,0xEA,0x00,0x9E,
+0xF8,0x5E,0xF7,0x00,0xD2,0xEE,0x0A,0xE9,0xE4,0x00,0x01,0x8B,0xD1,0xA6,0x03,0xDE,
+0xEF,0x16,0xFF,0x5E,0x40,0x78,0x7D,0xE7,0xFF,0xDF,0x70,0xC0,0x60,0x9C,0x48,0x20,
+0x00,0x79,0x40,0x6E,0x9D,0xE7,0xFF,0xDF,0x54,0xC0,0x60,0x3E,0x6C,0x20,0x00,0x41,
+0x12,0xEA,0x00,0x1E,0xF7,0xD8,0x5E,0xF7,0x00,0xD2,0xEE,0x09,0x41,0xEF,0x36,0xFF,
+0x5E,0x40,0x79,0x75,0xE7,0xFF,0xDF,0x16,0xC0,0x60,0x7D,0x08,0x20,0x02,0x05,0x40,
+0x6F,0x9D,0xE7,0xFF,0xDE,0xFA,0xC0,0x60,0xE0,0xEC,0x20,0x01,0xCD,0x12,0xEA,0x20,
+0x8E,0xEA,0x13,0x17,0xFF,0xD3,0x07,0x00,0x7D,0x12,0xF7,0xFE,0xD2,0xE7,0x07,0xAD,
+0xE4,0x00,0x00,0xBB,0x5F,0x02,0xD3,0x20,0x03,0xA9,0x12,0xF7,0xFE,0x5E,0xE2,0xD3,
+0x20,0x03,0x85,0xE4,0x00,0x00,0x95,0x9A,0xE0,0xD1,0xAB,0x02,0x36,0xEF,0x56,0xFF,
+0x5A,0xD6,0x1A,0x00,0x40,0xD5,0xCF,0x06,0x64,0x41,0xCE,0x7D,0x4C,0x6E,0xFA,0x45,
+0xC3,0x76,0x40,0x6E,0x1D,0xE7,0xFF,0xDE,0x54,0xC0,0x60,0x25,0x6C,0x20,0x00,0x81,
+0xEE,0xF6,0xFF,0x5A,0x98,0x80,0x42,0x10,0xBD,0x4C,0x70,0xFA,0x46,0x03,0x86,0x40,
+0x70,0x1D,0xE7,0xFF,0xDE,0x62,0xC0,0x60,0x25,0x68,0x20,0x02,0x5D,0x9A,0xE0,0xEF,
+0x36,0xFF,0x6A,0x0F,0x11,0x02,0x0F,0x18,0x06,0x8F,0x19,0x0F,0x38,0x0A,0x23,0x25,
+0x92,0x0F,0x4B,0x12,0x23,0x41,0x78,0x0F,0x2B,0x16,0x23,0x21,0x60,0x11,0xD8,0x0C,
+0x13,0xD8,0x0D,0x97,0x63,0x11,0x18,0x0E,0xCB,0x7B,0x34,0x50,0x13,0xB8,0x0F,0x41,
+0xCE,0xDB,0xCF,0x9E,0x07,0xD0,0xCF,0x1D,0x07,0xD0,0xD1,0xAA,0x00,0xAE,0x22,0xE0,
+0x44,0xCF,0x9E,0x46,0x50,0xCF,0x1D,0x46,0x50,0x43,0x9C,0x69,0x43,0x18,0x69,0xCE,
+0xFA,0x07,0xD0,0xD6,0xEE,0x01,0xF5,0xCF,0x5A,0x00,0x14,0xD7,0x9A,0x01,0xB5,0xCE,
+0xF9,0x07,0xD0,0x43,0x68,0xDB,0xD6,0xFB,0x01,0x5D,0xCF,0x39,0x00,0x14,0xD7,0x19,
+0x01,0x1D,0x0E,0xF6,0x96,0x0F,0x56,0x9A,0x0F,0x16,0x92,0x8E,0xFA,0x4E,0xF7,0x0A,
+0xD6,0xF8,0x00,0x88,0x5E,0xF7,0x00,0x0D,0x96,0x80,0x0E,0xF6,0x90,0xEE,0xF6,0xFF,
+0x78,0x9D,0x81,0x5D,0x8C,0x00,0x0E,0xF1,0x02,0x0F,0x17,0x02,0x0B,0x18,0x01,0xD7,
+0x0C,0xC0,0xB5,0xC2,0xE0,0x10,0x01,0xEF,0x36,0xFF,0x7A,0x0C,0x36,0x9E,0xFB,0x37,
+0x05,0x43,0xE7,0xFF,0xE7,0x22,0x98,0x62,0xEF,0x56,0xFF,0x7A,0x23,0x41,0x14,0x0E,
+0xF1,0x02,0x0F,0x36,0x82,0x0F,0x17,0x06,0x0F,0x56,0xA2,0x4E,0xF9,0x20,0x98,0x61,
+0x8E,0xF8,0x12,0xF7,0x05,0x0E,0xFA,0x00,0xE4,0x00,0x00,0x53,0xEF,0x36,0xFF,0x6E,
+0x4F,0x19,0xFA,0x46,0x78,0xCE,0x42,0x73,0xC5,0x4F,0x12,0xFA,0x46,0x58,0x96,0x42,
+0x52,0xC5,0x4E,0x52,0x12,0xFE,0x52,0x01,0x2C,0xD6,0x72,0xFC,0xC4,0xE7,0xFF,0xFB,
+0x3B,0x0C,0x36,0xA6,0x0E,0xC1,0x72,0x0E,0xA1,0x76,0x0E,0x81,0x7A,0x0E,0x61,0x7E,
+0xEE,0x41,0x00,0x82,0xEE,0x21,0x00,0x86,0xEE,0x01,0x00,0x8A,0xED,0xE1,0x00,0x8E,
+0xED,0xC1,0x00,0x92,0xED,0xA1,0x00,0x96,0xED,0x81,0x00,0x9A,0xED,0x61,0x00,0x9E,
+0xED,0x41,0x00,0xA2,0xED,0x21,0x00,0xA6,0xFC,0x21,0x00,0xA8,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0x9C,0x38,0xEC,0x77,0x06,0x60,0x0D,0x21,0x04,0x0D,0x41,0x00,0x08,0x61,
+0x09,0xC1,0x40,0x10,0x01,0xEC,0x8A,0x06,0x4B,0xFD,0x4A,0x06,0x4A,0x0C,0xAA,0x03,
+0x0C,0xCA,0x07,0x0C,0xEA,0x09,0x19,0x0A,0x04,0xE7,0xFF,0xDA,0xF6,0x0D,0x21,0x06,
+0x0C,0x6A,0x0B,0x0D,0x41,0x02,0x9C,0x28,0x85,0x29,0x9C,0x30,0x5C,0x63,0x00,0x0D,
+0x41,0x08,0x0D,0x61,0x04,0x4C,0x63,0x08,0xC2,0xF8,0x00,0x21,0x0D,0x21,0x0C,0xFE,
+0xF7,0xB7,0x22,0x99,0x40,0x8E,0xE3,0x09,0x77,0x01,0x88,0x6A,0x88,0x8B,0x9D,0x41,
+0xE4,0x00,0xB7,0xC4,0x5D,0x4A,0x00,0xD1,0x44,0xFF,0x9E,0x0D,0x61,0x06,0x0D,0x41,
+0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,
+0x71,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0x76,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,
+0x6E,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0x72,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,
+0x79,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0x75,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,
+0x7C,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,0x71,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x06,0x6E,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,0x76,0xC2,0xE0,0x10,0x01,0xF8,
+0x77,0x06,0x72,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0x79,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x06,0x75,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0x7C,0x24,0x6C,0x1F,0xE7,0xFF,
+0xFE,0x99,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0x5C,0x63,0x04,0xEC,
+0x77,0x06,0x75,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0x7C,0xF3,0x78,0x06,0x6E,0xC3,
+0x40,0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,0x00,0x10,0x01,0xFF,0x5A,0x06,0x76,0xFF,
+0x39,0x06,0x72,0x23,0x60,0x2C,0xEB,0x78,0x06,0x79,0xD7,0x63,0x00,0xA1,0x13,0x5A,
+0x00,0xEC,0x78,0x06,0x79,0x1B,0x59,0x00,0x9B,0x01,0xEF,0x17,0x06,0x7C,0x85,0x29,
+0xC2,0xE0,0x10,0x01,0xEB,0x17,0x06,0x75,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x06,0x71,
+0x5E,0xF8,0x1F,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0x6E,
+0x5E,0xE0,0x5B,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x06,0x6E,
+0x27,0x08,0x7B,0x9F,0x01,0xFB,0x17,0x06,0x6E,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,
+0x76,0x9C,0x61,0x54,0x63,0x03,0xF8,0x77,0x06,0x76,0xE7,0xFF,0xFD,0x61,0x85,0x29,
+0x8B,0x03,0x56,0xE3,0x03,0x22,0xE0,0x98,0x9B,0x04,0x42,0xF8,0xBD,0x5F,0x44,0x00,
+0x5E,0xE5,0x17,0x4B,0x37,0x28,0x9A,0xE0,0xE4,0x00,0x00,0x13,0x1B,0x58,0x00,0x9E,
+0xE1,0x43,0x03,0xBC,0xD6,0xF9,0xFF,0xC6,0x40,0xA5,0xBD,0x4E,0xE4,0x80,0x4F,0x64,
+0xC0,0x47,0x7B,0xBD,0x4E,0xE4,0x40,0x47,0x7B,0x25,0x4F,0x45,0x11,0x47,0x7B,0xBD,
+0x9A,0xE0,0xE4,0x00,0x00,0x17,0x8F,0x38,0x9E,0xE1,0x0F,0x79,0x00,0x4F,0x37,0x10,
+0xD6,0xFA,0xFF,0xB6,0x8F,0x19,0x9A,0xE0,0x54,0xA5,0x03,0x5C,0x84,0x00,0xE4,0x00,
+0x00,0x19,0x43,0x37,0xC4,0x9E,0xE1,0x18,0x99,0x00,0xD4,0xB7,0xFF,0xC5,0x85,0x29,
+0x46,0xE4,0x1D,0x56,0xF7,0x03,0x22,0xE0,0x82,0x9A,0xFC,0x47,0x45,0xBC,0x9A,0xE0,
+0xE4,0x00,0x00,0x51,0x43,0x03,0xBC,0x43,0x24,0xBC,0x9E,0xE1,0x13,0x39,0x00,0x1B,
+0x38,0x00,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0xD6,0xE5,0xFF,0x66,0xE4,0x00,0x00,0x63,
+0x0F,0x39,0x02,0x9E,0xE4,0x0F,0x38,0x00,0x43,0x03,0xBC,0x43,0x24,0xBC,0xD6,0xFA,
+0xFF,0x96,0x9A,0xE0,0x54,0xA5,0x03,0xE4,0x00,0x00,0x25,0x43,0x57,0xC4,0x43,0x77,
+0xCC,0x9E,0xE1,0x13,0x7B,0x00,0x1B,0x7A,0x00,0xD4,0xB7,0xFF,0x95,0x85,0x29,0x9C,
+0x30,0x0D,0x41,0x08,0x0D,0x61,0x04,0x0D,0x21,0x0C,0x89,0x63,0x99,0x40,0xE4,0x00,
+0x20,0xCA,0x20,0x64,0xD2,0xE4,0x00,0x22,0xF6,0x20,0x64,0x82,0xE4,0x00,0x22,0xD4,
+0xC2,0xE0,0x10,0x01,0xFF,0x20,0xFF,0x7F,0xEB,0x17,0x08,0x87,0x99,0x41,0x47,0x18,
+0xCC,0xEF,0x17,0x08,0x87,0xE4,0x00,0x00,0x23,0xE4,0x00,0x22,0xEA,0x20,0x67,0x7C,
+0x88,0x6B,0xE4,0x00,0x22,0x4A,0x88,0x6A,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,
+0x0E,0x1C,0x21,0x10,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x21,0x2C,0x0D,0x41,0x28,0x0D,
+0x61,0x24,0x0D,0x81,0x20,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,0x0D,0xE1,0x14,0x0E,0x01,
+0x10,0x0E,0x21,0x0C,0x0E,0x41,0x08,0x0E,0x61,0x04,0xE4,0x00,0x68,0x1A,0xC1,0x80,
+0x10,0x01,0xC0,0x60,0x00,0x21,0xFD,0x4C,0x00,0xD4,0xFC,0x63,0xB0,0xE4,0xC0,0x80,
+0x10,0x01,0xC0,0xA0,0x10,0x01,0xFC,0x84,0x00,0x00,0xFC,0xA5,0x03,0x80,0x40,0xA5,
+0x25,0xE4,0x00,0x63,0x5E,0x0C,0x0A,0x01,0x0C,0x0A,0x03,0x0C,0x0A,0x05,0x0C,0x0A,
+0x08,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x00,0xC3,0x0C,0x0A,0x0C,0x9A,0xEA,0xC1,0xC0,
+0x10,0x01,0x0E,0xEA,0x11,0xEC,0x0E,0x06,0x8C,0x50,0x60,0x26,0xE4,0x00,0x22,0xE4,
+0xC8,0x80,0xE1,0x00,0x98,0x60,0xE4,0x00,0x31,0x9C,0x98,0x63,0xE4,0x00,0x30,0x24,
+0xE4,0x00,0x07,0x2A,0xC2,0xE0,0x10,0x01,0x9B,0x3C,0xF3,0x17,0x08,0x19,0x47,0x18,
+0xCC,0xFC,0x60,0x0B,0xB8,0xFB,0x17,0x08,0x19,0x05,0x60,0x5B,0xC9,0x6B,0x8D,0x80,
+0x88,0x8B,0xE4,0x00,0x30,0x5C,0x98,0x61,0xC2,0x58,0x00,0x21,0x8A,0x6B,0xC1,0x80,
+0x10,0x01,0xC1,0xA0,0x10,0x01,0xC1,0x60,0x10,0x01,0xE4,0x00,0x30,0x34,0xC2,0x00,
+0x10,0x01,0xC1,0xE0,0x10,0x01,0xC2,0x20,0x10,0x01,0xFE,0x52,0xB7,0x2C,0xFD,0x8C,
+0x06,0x86,0xFD,0xAD,0x08,0x86,0xFD,0x6B,0x06,0x80,0xE4,0x00,0x2F,0xE4,0x0E,0xEA,
+0x0E,0x22,0xE5,0xA0,0x22,0xE0,0x2C,0xD2,0xE2,0x18,0x9E,0xE4,0x00,0x02,0x5F,0xE4,
+0x00,0x62,0x0A,0xE4,0x00,0x2F,0xFA,0x0C,0x6A,0x13,0xE4,0x00,0x2F,0xEC,0x0C,0x6A,
+0x17,0xE4,0x00,0x2F,0xDE,0x0C,0x6A,0x1B,0xE4,0x00,0x2F,0xD0,0x0C,0x6A,0x19,0x0A,
+0xEC,0x01,0xC6,0xF7,0xFF,0xDF,0x0E,0xEC,0x01,0x0A,0xEC,0x01,0xC6,0xF7,0xFF,0x7F,
+0x0E,0xEC,0x01,0x9A,0xE1,0x0E,0xEA,0x0C,0x0A,0xED,0x01,0x52,0xF7,0x80,0xEC,0x0E,
+0x06,0x8C,0x0E,0xED,0x01,0x98,0x61,0xE4,0x00,0x1D,0x3A,0x98,0x60,0xE4,0x00,0x37,
+0x1A,0xE4,0x00,0x31,0xEA,0xE4,0x00,0x05,0x6B,0xEE,0xF0,0x06,0x8A,0x22,0xE4,0x4E,
+0x9A,0xE2,0x0E,0xEA,0x0C,0x0C,0x0B,0x00,0xEC,0x10,0x06,0x88,0xE4,0x00,0x05,0x3D,
+0xEE,0xEE,0x06,0x8E,0x22,0xE0,0x2C,0xD2,0xE1,0x14,0x9E,0xE4,0x00,0x00,0x3D,0x98,
+0x61,0xE7,0xFF,0xFC,0x5C,0xD0,0x61,0x14,0x2E,0xEC,0x0F,0x08,0x60,0xEC,0x6E,0x06,
+0x8C,0xE4,0x00,0x69,0x6E,0xE4,0x00,0x02,0xBB,0x0A,0xEA,0x01,0xC6,0xF7,0x01,0x00,
+0xD2,0xE0,0x13,0x52,0xE4,0x00,0x2E,0xB8,0x0A,0xEA,0x13,0x0B,0x0A,0x11,0x40,0x63,
+0xBD,0x5E,0xE3,0x04,0xD7,0x17,0x12,0xB5,0xE4,0x00,0x2E,0x90,0x0C,0x6A,0x13,0x0A,
+0xEA,0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0xE4,0x00,0x63,0x44,0xE4,0x00,0x69,
+0x66,0xE4,0x00,0x68,0x96,0xEE,0xEF,0x08,0x62,0xEE,0xF1,0x08,0x8C,0xE4,0x00,0x64,
+0x30,0x98,0x61,0xE4,0x00,0x98,0x5A,0xE4,0x00,0x64,0xA8,0x98,0x61,0xE4,0x00,0x65,
+0x00,0xE4,0x00,0x66,0x40,0xE4,0x00,0x88,0x52,0x0A,0xED,0x01,0x56,0xF7,0x80,0xD2,
+0xE0,0x10,0x5A,0x0A,0xEA,0x01,0xC6,0xF7,0x01,0x00,0x22,0xE3,0xE4,0x0A,0xEA,0x01,
+0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0x9A,0xE1,0x0E,0xEA,0x0C,0xEC,0x0E,0x06,0x8C,
+0x98,0x61,0xE4,0x00,0x1B,0x84,0xE4,0x00,0x03,0xC9,0x0E,0xEB,0x02,0xD2,0xE4,0x0E,
+0xED,0x4E,0xF7,0x10,0x8E,0xF2,0x0E,0xF7,0x02,0x86,0xE9,0x0A,0xEC,0x01,0xC6,0xF7,
+0xFF,0xDF,0x0E,0xEC,0x01,0x0A,0xEC,0x01,0xC6,0xF7,0xFF,0x7F,0xFF,0x00,0xFF,0x7F,
+0x0E,0xEC,0x01,0x0A,0xED,0x01,0x46,0xF7,0xC4,0x0E,0xED,0x01,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x48,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x9C,0xC2,0xE0,0x10,0x01,
+0xEC,0x17,0x08,0x33,0xC2,0xE0,0x10,0x01,0x9B,0x3E,0xF3,0x17,0x08,0x1A,0x47,0x18,
+0xCC,0xFB,0x17,0x08,0x1A,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x50,0xE4,0x00,0x59,
+0x4A,0xE4,0x00,0x66,0x28,0x98,0x62,0xE4,0x00,0x2C,0x52,0x50,0x60,0x40,0xE4,0x00,
+0x2C,0x64,0x50,0x60,0x19,0xE4,0x00,0x63,0x80,0xE4,0x00,0x04,0x04,0x50,0x60,0xC8,
+0xE4,0x00,0x2C,0xC4,0xE4,0x00,0x6B,0xA6,0x50,0x60,0x40,0xE4,0x00,0x63,0x4C,0xC8,
+0x80,0x7D,0x00,0xFC,0x60,0x0B,0xB8,0xE4,0x00,0x2C,0x32,0xFC,0x60,0x06,0x00,0xE4,
+0x00,0x63,0x34,0xE4,0x00,0x03,0xC0,0xE4,0x00,0x02,0x5D,0x98,0x60,0xE7,0xFF,0xF9,
+0xA4,0xD0,0x61,0x09,0x4E,0x9A,0xE2,0xEC,0x0F,0x08,0x60,0x0E,0xEB,0x00,0xE4,0x00,
+0x67,0x14,0xE4,0x00,0x66,0x54,0xE4,0x00,0x02,0x29,0x0A,0xEA,0x01,0xC6,0xF7,0x01,
+0x00,0xD2,0xE0,0x05,0x8A,0x0A,0xEA,0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0xE4,
+0x00,0x03,0x48,0x98,0x60,0x98,0x80,0xE4,0x00,0x2B,0x3A,0xFC,0x60,0x0B,0xB8,0xC8,
+0x80,0x7D,0x00,0xE4,0x00,0x2B,0x7A,0xE4,0x00,0x2B,0xA2,0xFC,0x60,0x0B,0xB8,0x88,
+0x93,0xE4,0x00,0x2B,0x5E,0x98,0x81,0x98,0x60,0xE4,0x00,0x2A,0xF6,0xE4,0x00,0x02,
+0xE4,0x98,0x62,0xE4,0x00,0x2B,0x72,0xE4,0x00,0x2B,0x72,0x0C,0x6A,0x13,0x0A,0xEA,
+0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0xE4,0x00,0x60,0x26,0xE4,0x00,0x61,0x32,
+0xE4,0x00,0x95,0xAA,0x98,0x80,0x98,0x64,0xE4,0x00,0x48,0xEC,0xE4,0x00,0x65,0x60,
+0xEE,0xEF,0x08,0x62,0xEE,0xF1,0x08,0x8C,0xE4,0x00,0x61,0x86,0x98,0x60,0xE4,0x00,
+0x61,0xDE,0xE4,0x00,0x63,0x1E,0xE4,0x00,0x85,0x30,0x0A,0xED,0x01,0x56,0xF7,0x80,
+0x22,0xE0,0x88,0x0A,0xEA,0x01,0xC6,0xF7,0x01,0x00,0x22,0xE3,0xE4,0x0A,0xEA,0x01,
+0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0x9A,0xE1,0x98,0x60,0x0E,0xEB,0x00,0xE4,0x00,
+0x18,0x6C,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x31,0x5E,0xEB,0x01,0x20,0x00,0x29,
+0x1E,0xF7,0xA0,0xD2,0xEB,0x02,0x3D,0x9A,0xE3,0xE4,0x00,0x00,0x7D,0x98,0x63,0xE4,
+0x00,0x32,0x16,0xE4,0x00,0x2C,0xE6,0xE4,0x00,0x2A,0x52,0x9A,0xE4,0x0C,0x6A,0x17,
+0xE4,0x00,0x00,0x4F,0xE4,0x00,0x2A,0x38,0x0A,0xEA,0x17,0x40,0x63,0xBD,0x5E,0xE3,
+0x04,0xC2,0xE0,0x7C,0xEA,0x20,0x00,0x55,0x98,0x60,0xE4,0x00,0x29,0x32,0xE4,0x00,
+0x2A,0x04,0x0C,0x6A,0x17,0x9A,0xE2,0x0E,0xEB,0x00,0x0E,0xEA,0x0A,0xFC,0x60,0x1E,
+0x7F,0x9E,0xE1,0x0E,0xEA,0x08,0x0C,0x8A,0x0A,0xE4,0x00,0x2B,0xA6,0xE4,0x00,0x2A,
+0x76,0xE7,0xFF,0xF9,0x93,0xE4,0x00,0xAB,0xCB,0x9C,0x38,0x0D,0x21,0x04,0x0D,0x41,
+0x00,0xE4,0x00,0xAD,0x26,0x98,0x6D,0xE4,0x00,0x9D,0xA0,0x98,0x60,0xFC,0x80,0x3E,
+0x0C,0xE4,0x00,0x9F,0xE4,0x98,0x61,0xFC,0x80,0x3E,0x0C,0xE4,0x00,0x9F,0xD0,0x98,
+0x60,0x50,0x80,0x14,0xE4,0x00,0xA4,0xCA,0x98,0x60,0x98,0x8C,0xE4,0x00,0xA3,0xEC,
+0x98,0x61,0x50,0x80,0x14,0xE4,0x00,0xA4,0xA8,0x98,0x61,0x98,0x8C,0x99,0x40,0xE4,
+0x00,0xA3,0xC6,0x88,0x6A,0x98,0x80,0x9D,0x41,0xE4,0x00,0xAA,0x32,0x5D,0x4A,0x00,
+0xD1,0x44,0xFF,0x9E,0x98,0x60,0x05,0x40,0xFF,0xC9,0x4A,0xFF,0xFF,0x88,0x8A,0xE4,
+0x00,0xA2,0x20,0x88,0x8A,0x98,0x60,0xE4,0x00,0x9F,0xA8,0x88,0x8A,0x0D,0x21,0x06,
+0x0D,0x41,0x02,0x98,0x60,0x9C,0x28,0xE4,0x00,0xA0,0x89,0xE4,0x00,0xAC,0x75,0xE4,
+0x00,0xAE,0x19,0xE4,0x00,0xAF,0x45,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0x9C,0x1C,
+0x21,0xB0,0x0E,0xE1,0x10,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x06,0x90,0x0D,0x41,0x4C,
+0x0D,0x61,0x48,0x0D,0x81,0x44,0x0D,0xE1,0x38,0x0E,0x01,0x34,0x0E,0x21,0x30,0x0E,
+0x41,0x2C,0x0E,0x61,0x28,0x0E,0x81,0x24,0x0D,0xA1,0x40,0x0D,0xC1,0x3C,0x0E,0xA1,
+0x20,0x0E,0xC1,0x1C,0x0E,0xE1,0x0C,0xC2,0x60,0x10,0x01,0xC2,0x40,0x10,0x01,0xFE,
+0x73,0x06,0xB0,0xFE,0x52,0x06,0xA8,0xC2,0x20,0x10,0x01,0xC2,0x00,0x10,0x01,0xFE,
+0x31,0x06,0xA0,0xFE,0x10,0x06,0xB4,0xC1,0xE0,0x10,0x01,0xC1,0x8F,0xFF,0xE1,0xFD,
+0xEF,0x06,0xAC,0x9B,0x80,0xC2,0x98,0x00,0x21,0xC0,0xD8,0x00,0x21,0x13,0x53,0x00,
+0x0E,0xF2,0x02,0x0D,0x51,0x02,0x0F,0xB0,0x02,0x0F,0x6F,0x02,0x99,0x60,0xC9,0x8C,
+0xFF,0xFF,0x88,0xFC,0x53,0x20,0xFF,0xFE,0x94,0xB8,0xA6,0xFC,0xC6,0xB8,0xAC,0xE4,
+0x00,0x01,0xC5,0x41,0x14,0xC4,0x9F,0x01,0x11,0x08,0x00,0x8D,0xA8,0x5D,0xAD,0x00,
+0xE4,0x00,0x00,0x11,0x9B,0x00,0x89,0xB8,0x5D,0x18,0x00,0xD7,0xC8,0xFF,0x45,0xC3,
+0x18,0x00,0x21,0xFF,0x18,0xB8,0xA6,0x8F,0x0B,0x99,0x00,0x12,0xB8,0x00,0xCF,0x0D,
+0x00,0x0A,0x1E,0xD5,0xFF,0x8F,0x06,0x0E,0xC1,0x08,0x0F,0x01,0x14,0xE4,0x00,0x01,
+0x37,0x0F,0x01,0x16,0xCD,0xE8,0x00,0x0A,0x8D,0xF8,0x0A,0xCF,0x00,0x0E,0xC1,0x04,
+0x0F,0x01,0x0E,0x0E,0xC1,0x0A,0xD5,0x16,0x00,0x3A,0x0B,0x0F,0x0A,0x0D,0xE1,0x06,
+0xD5,0xE4,0x03,0xB4,0xD4,0x98,0x03,0x94,0x8D,0xCD,0x5D,0xCE,0x00,0xCF,0x0E,0x00,
+0x0A,0x8F,0x06,0x09,0xF8,0x06,0x0B,0x18,0x08,0x4F,0x18,0x50,0x41,0xEF,0x23,0x8D,
+0xF8,0xFD,0xEF,0x02,0x00,0x4D,0xEF,0x52,0x5D,0xEF,0x06,0x41,0xEF,0x7B,0x43,0x03,
+0x7D,0x4E,0xD8,0xFA,0x47,0x16,0xC6,0x43,0x18,0xB5,0xD7,0x0C,0x01,0x4C,0xC3,0x20,
+0x1F,0xE4,0x20,0x00,0x2D,0x89,0x5D,0x89,0x97,0x8B,0x3A,0x88,0xFC,0x8B,0xAA,0x8A,
+0xEC,0x8B,0x59,0x8B,0x87,0x8B,0x78,0x89,0x4F,0x89,0x98,0x88,0xEE,0x8B,0x3E,0xE4,
+0x00,0x00,0x2F,0xC3,0x40,0x1F,0xE0,0x20,0x00,0x1D,0xD6,0xF8,0x00,0x60,0x8B,0xAF,
+0x8A,0xF8,0x8B,0x5E,0x8B,0x8E,0x9D,0x01,0x5D,0xC8,0x00,0xD6,0xAE,0xFB,0x35,0x9D,
+0x61,0x5F,0xCB,0x00,0x0E,0xC1,0x12,0xD6,0xDE,0xF9,0x6D,0xC3,0x00,0x10,0x01,0x1B,
+0x53,0x00,0xFF,0x18,0x06,0xAC,0x0E,0xF2,0x00,0x0D,0x51,0x00,0x0F,0xB0,0x00,0x0F,
+0x78,0x00,0xC3,0x20,0x1F,0xE0,0x20,0x01,0x55,0xCF,0x9C,0x00,0x0A,0xCC,0xE7,0x00,
+0x0A,0x8C,0xE6,0x0B,0x07,0x04,0x4F,0x18,0x50,0x8C,0xDC,0x08,0x67,0x02,0x0B,0x86,
+0x02,0x40,0x63,0x23,0x0B,0x46,0x04,0x8C,0x78,0x43,0x1B,0xBC,0xFC,0x63,0x02,0x00,
+0x4C,0x63,0x52,0x23,0x00,0xA8,0xC2,0xE0,0x1F,0xE0,0x20,0x00,0x8D,0x40,0x63,0xBB,
+0x40,0x9C,0x23,0x4E,0xFA,0x50,0x8E,0xE4,0xFE,0xF7,0x02,0x00,0x4E,0xF7,0x52,0x43,
+0x77,0xDB,0x8C,0x7B,0x40,0x63,0xC0,0xE4,0x00,0x00,0x0D,0x88,0x64,0x0E,0xC1,0x1E,
+0x0E,0xA1,0x22,0x0E,0x81,0x26,0x0E,0x61,0x2A,0x0E,0x41,0x2E,0x0E,0x21,0x32,0x0E,
+0x01,0x36,0x0D,0xE1,0x3A,0x0D,0xC1,0x3E,0x0D,0xA1,0x42,0x0D,0x81,0x46,0x0D,0x61,
+0x4A,0x0D,0x41,0x4E,0x1B,0x25,0x00,0x1C,0x21,0x50,0x85,0x29,0x8B,0x23,0xC2,0xE0,
+0x10,0x01,0x5C,0xA5,0x00,0xF2,0xF7,0x06,0x9C,0x98,0x60,0xD6,0xE5,0x0C,0xB9,0xD3,
+0x3F,0x0C,0x98,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,0x01,0xF2,
+0xF7,0x06,0x95,0xFF,0x18,0x06,0x93,0xFF,0x7B,0x06,0x94,0x22,0xE8,0x42,0x13,0x18,
+0x00,0x5F,0x08,0x9B,0x20,0x00,0x51,0xE4,0x00,0x01,0x3B,0xD2,0xE1,0x04,0xCE,0x13,
+0x18,0x00,0x5F,0x05,0x93,0x20,0x02,0x3D,0x24,0xA4,0x4B,0x9B,0x43,0x43,0x5A,0x2D,
+0x4F,0x5A,0x08,0x5F,0x5A,0x00,0xE4,0x00,0x00,0x37,0x20,0xA8,0x54,0x9B,0x44,0x43,
+0x5A,0x2D,0x4F,0x5A,0x08,0x5F,0x5A,0x00,0x20,0xAC,0xEE,0xE4,0x00,0x00,0x51,0x9B,
+0x43,0x9A,0xE0,0x13,0x9B,0x00,0x8B,0x17,0xE4,0x00,0x00,0x27,0x4F,0xB8,0x08,0x9F,
+0x01,0x8F,0xBC,0x5F,0x18,0x00,0x8E,0xFD,0x5E,0xF7,0x00,0xD7,0x05,0xFF,0x8E,0xE4,
+0x00,0x00,0x49,0x5E,0xE0,0x21,0x53,0x00,0x1D,0x52,0xE0,0x2F,0x4A,0xF8,0xB8,0xE4,
+0x00,0x00,0x4B,0x5E,0xE0,0x29,0x53,0x00,0x41,0x52,0xE0,0x29,0x4A,0xF8,0xB8,0xE4,
+0x00,0x00,0x2B,0x27,0x04,0x33,0x9F,0x9F,0x4F,0x18,0x08,0xE4,0x00,0x00,0x8B,0x9B,
+0x0A,0x20,0xA9,0x10,0x13,0x1B,0x00,0x9C,0xBF,0x9F,0x1F,0x4C,0xA5,0x08,0x8F,0x05,
+0xE4,0x00,0x00,0x65,0x9B,0x43,0x13,0xBB,0x00,0x43,0x5A,0x2D,0x9A,0xE0,0x4F,0x5A,
+0x08,0x8B,0x77,0x5F,0x5A,0x00,0xE4,0x00,0x00,0x21,0x8F,0x9D,0x9F,0x61,0x8E,0xFC,
+0x5F,0x7B,0x00,0x5E,0xF7,0x00,0x4F,0x9B,0x08,0xD7,0x65,0xFF,0x8E,0x1F,0x1D,0xFF,
+0x8F,0x1C,0x5F,0x18,0x00,0x4F,0x5A,0x08,0xC3,0xB8,0x00,0x21,0xFF,0xBD,0xB7,0x40,
+0x8F,0xBA,0x9B,0x40,0xE4,0x00,0x01,0x0B,0x4F,0x7A,0x08,0x8F,0x7D,0x0B,0x9B,0x00,
+0xD7,0x3C,0x03,0xBC,0x0B,0x7B,0x02,0xD7,0x79,0x03,0x84,0x8E,0xFA,0xC3,0xB8,0x00,
+0x21,0xCF,0x17,0x00,0x06,0xFF,0xBD,0xB7,0x5C,0x8F,0x1D,0x1F,0x57,0x01,0x14,0xD8,
+0x00,0xCF,0x5A,0x00,0x06,0x09,0x18,0x02,0x8F,0x5D,0x98,0x60,0x0B,0xB8,0x04,0x14,
+0xBA,0x00,0x0B,0xDA,0x02,0x0B,0x1A,0x04,0xD7,0x9B,0x02,0x52,0x42,0xF9,0xDD,0x40,
+0x77,0x33,0x43,0x3C,0xCD,0x43,0x59,0x2B,0x43,0xD9,0xF3,0x8F,0x43,0x40,0x77,0x43,
+0x43,0x5A,0x23,0x8C,0x7E,0x8C,0x7A,0x42,0xF7,0xEB,0x40,0x83,0x23,0x97,0x41,0x43,
+0x39,0xC3,0xCB,0x5A,0x86,0xA0,0x8F,0x37,0x40,0x64,0xD0,0x43,0x7C,0xDD,0x8C,0x79,
+0x40,0x63,0xD8,0xE4,0x00,0x00,0x1F,0x9F,0x41,0x5F,0x7A,0x00,0xD7,0x1B,0xFB,0xE5,
+0x98,0x60,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x06,0x95,0xC2,0xE0,0x10,0x01,
+0xF8,0x97,0x06,0x92,0xC2,0xE0,0x10,0x01,0xF8,0xB7,0x06,0x93,0xC2,0xE0,0x10,0x01,
+0xF8,0xD7,0x06,0x94,0xC2,0xE0,0x10,0x01,0xEC,0xF7,0x06,0x91,0x85,0x29,0x9A,0xFF,
+0x1C,0x21,0xD8,0x0D,0xE1,0x0C,0x1A,0xE1,0x07,0xC1,0xE0,0x10,0x01,0xFD,0xEF,0x06,
+0xB0,0x1A,0xEF,0x00,0x52,0xE0,0xFF,0xC3,0x00,0x10,0x01,0x0D,0x41,0x20,0x0D,0x61,
+0x1C,0x0D,0xA1,0x14,0x0D,0xC1,0x10,0xCB,0x20,0xFF,0xFF,0xC1,0xC0,0x10,0x01,0xEF,
+0x38,0x06,0xB8,0xFD,0xCE,0x06,0xAC,0xC1,0xA0,0x10,0x01,0x0E,0xEE,0x00,0xFD,0xAD,
+0x06,0xA8,0x0D,0x21,0x24,0x0E,0xED,0x00,0x0D,0x81,0x18,0xC2,0xE0,0x10,0x01,0x0E,
+0x01,0x08,0x89,0x63,0xF3,0x17,0x06,0x95,0x89,0x44,0x88,0x65,0xC2,0xE0,0x10,0x01,
+0x23,0x08,0x56,0xC3,0x00,0x10,0x01,0xF3,0x18,0x06,0x93,0x5F,0x08,0x9B,0x20,0x00,
+0x61,0xE4,0x00,0x00,0x37,0x23,0x04,0x5E,0xC3,0x00,0x10,0x01,0xF3,0x18,0x06,0x93,
+0x5F,0x05,0x93,0x20,0x00,0x25,0x9B,0x05,0xE4,0x00,0x00,0x0D,0x9B,0x04,0xFB,0x17,
+0x06,0x9C,0xC2,0x00,0x10,0x01,0x0E,0xEB,0x02,0xEE,0xF0,0x06,0xB8,0x0A,0xE6,0x06,
+0x0C,0x8B,0x02,0xD4,0x97,0x04,0xCC,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x71,0x53,
+0x18,0x01,0x1C,0xA1,0x07,0xEF,0x17,0x08,0x71,0xE7,0xFF,0xF6,0x9C,0x0C,0x6B,0x00,
+0x0C,0x8A,0x02,0xED,0x90,0x06,0xBA,0x10,0xAF,0x00,0x88,0x6C,0xE7,0xFF,0xFA,0xC0,
+0xC2,0xE0,0x10,0x01,0x89,0x63,0xEC,0x77,0x06,0x98,0x10,0xA1,0x07,0x0C,0x8A,0x02,
+0x88,0x6C,0xE7,0xFF,0xFA,0x94,0xC3,0x00,0x10,0x01,0xEC,0x78,0x06,0xA4,0x0F,0x6E,
+0x02,0x0F,0x2D,0x02,0x0F,0x4A,0x02,0x43,0x1B,0xCC,0x23,0x00,0xEC,0xC3,0x20,0x1F,
+0xE0,0x20,0x00,0xD1,0xC3,0x80,0x10,0x01,0xEF,0xBC,0x06,0xA2,0xC3,0x80,0x10,0x01,
+0xEF,0x9C,0x06,0xB6,0x43,0xBD,0xE5,0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,0x9D,0xE5,
+0xD7,0x1C,0x00,0xAC,0x41,0x6B,0xDB,0x42,0xE3,0xCB,0x8E,0xEB,0x43,0x17,0xC0,0x8F,
+0x58,0xE4,0x00,0x01,0x55,0x42,0xFA,0x1C,0xE4,0x00,0x01,0x5B,0xC9,0x80,0x07,0xFF,
+0x42,0xEC,0xBD,0xD6,0xE4,0x05,0x2C,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x71,0x53,
+0x18,0x01,0x40,0x8C,0x25,0xEF,0x17,0x08,0x71,0x1C,0xA1,0x07,0xE7,0xFF,0xF5,0x56,
+0x40,0x6C,0x1D,0x0C,0x6B,0x00,0xEE,0xF0,0x06,0xBA,0x0C,0x8A,0x02,0x41,0x8C,0xBD,
+0x10,0xAF,0x00,0x88,0x6C,0xE7,0xFF,0xF9,0x6E,0xC2,0xE0,0x10,0x01,0x89,0x63,0xEC,
+0x77,0x06,0x98,0x10,0xA1,0x07,0x0C,0x8A,0x02,0x88,0x6C,0xE7,0xFF,0xF9,0x42,0xC3,
+0x00,0x10,0x01,0xEC,0x78,0x06,0xA4,0x0F,0x6E,0x02,0x0F,0x2D,0x02,0x0F,0x4A,0x02,
+0x43,0x1B,0xCC,0x23,0x00,0xFC,0xC3,0x20,0x1F,0xE0,0x20,0x00,0xE1,0xC3,0x80,0x10,
+0x01,0xEF,0xBC,0x06,0xA2,0xC3,0x80,0x10,0x01,0xEF,0x9C,0x06,0xB6,0x43,0xBD,0xE5,
+0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,0x9D,0xE5,0xD7,0x1C,0x00,0xCC,0x41,0x6B,0xDB,
+0x42,0xE3,0xCB,0x8E,0xEB,0x43,0x17,0xC0,0x43,0x5A,0xC5,0x0F,0x4A,0x00,0xE4,0x00,
+0x00,0x15,0x42,0xFA,0x1D,0x0E,0xEA,0x00,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,
+0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,
+0x1C,0x21,0x28,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,0x61,0x24,0x0D,0x81,
+0x20,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,0x0D,0xE1,0x14,0x0E,0x01,0x10,0x0E,0x21,0x0C,
+0x0E,0x41,0x08,0x5E,0x23,0x00,0x0E,0x61,0x04,0x56,0x11,0x03,0x4E,0xF1,0x11,0x5E,
+0x00,0x09,0x99,0xC0,0x4A,0x41,0x01,0x99,0x80,0x9A,0x64,0x0D,0x21,0x2C,0x8E,0x57,
+0x89,0x44,0x89,0xAE,0x89,0x6C,0x99,0xE0,0x42,0x73,0x25,0xE4,0x00,0x00,0xF3,0x42,
+0xF3,0x54,0xD6,0xF1,0x01,0xD8,0x22,0x04,0x4A,0x51,0xC0,0x10,0x11,0x6A,0x00,0x89,
+0xAE,0x51,0x80,0x10,0xE4,0x00,0x00,0x6B,0x22,0x08,0x4A,0x51,0xC0,0x10,0x11,0x6A,
+0x00,0x11,0x8A,0x01,0x89,0xAE,0xE4,0x00,0x00,0x47,0x22,0x0C,0x7E,0x11,0x6A,0x00,
+0x11,0x8A,0x01,0x11,0xAA,0x02,0x51,0xC0,0x10,0xE4,0x00,0x00,0x21,0x11,0x6A,0x00,
+0x11,0x8A,0x01,0x11,0xAA,0x02,0x11,0xCA,0x03,0x4E,0xEC,0x80,0x4C,0x8C,0xC0,0x8C,
+0x97,0x4E,0xEE,0x80,0x4F,0x0B,0x40,0x4C,0xAE,0xC0,0x8C,0xB7,0x4E,0xED,0x40,0x88,
+0x6F,0x8C,0x8B,0x8C,0xAD,0x8C,0x98,0x8C,0xB7,0x9D,0xE1,0xE4,0x00,0x90,0x48,0x5D,
+0xEF,0x00,0x9D,0x44,0xD5,0xF2,0xFC,0x5E,0x0E,0x61,0x06,0x0E,0x41,0x0A,0x0E,0x21,
+0x0E,0x0E,0x01,0x12,0x0D,0xE1,0x16,0x0D,0xC1,0x1A,0x0D,0xA1,0x1E,0x0D,0x81,0x22,
+0x0D,0x61,0x26,0x0D,0x41,0x2A,0x0D,0x21,0x2E,0x1C,0x21,0x30,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0xEE,0xF7,0x00,0xE2,0x5E,0xE0,0x41,0x1C,0x21,0xE8,0x0D,0x61,0x0C,0x0D,
+0x81,0x08,0x0D,0xA1,0x04,0x0D,0x21,0x14,0x0D,0x41,0x10,0x89,0x63,0x5D,0x84,0x00,
+0x49,0xA1,0x01,0xE4,0x00,0x54,0xDE,0xC3,0x14,0x00,0x01,0xCB,0x18,0x7A,0x30,0x0A,
+0xF8,0x01,0xC6,0xF7,0x01,0x00,0x5E,0xF7,0x04,0x22,0xE3,0xD8,0xFC,0x60,0x01,0x00,
+0x99,0x40,0xE4,0x00,0x19,0xEC,0xE4,0x00,0x00,0x31,0x88,0x6A,0x98,0x81,0x88,0xAD,
+0x9D,0x41,0xE4,0x00,0xA5,0x16,0x5D,0x4A,0x00,0x0C,0x6B,0x01,0x9D,0x62,0xD5,0x4C,
+0xFF,0x66,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,
+0x16,0x1C,0x21,0x18,0x85,0x29,0xFC,0x21,0xFD,0xF0,0xED,0x41,0x02,0x08,0xED,0xE1,
+0x01,0xF4,0xEE,0x01,0x01,0xF0,0xED,0x21,0x02,0x0C,0xED,0x61,0x02,0x04,0xED,0x81,
+0x02,0x00,0xED,0xA1,0x01,0xFC,0xED,0xC1,0x01,0xF8,0xEE,0x21,0x01,0xEC,0xEE,0x41,
+0x01,0xE8,0xEE,0x61,0x01,0xE4,0xC2,0x00,0x10,0x01,0xC1,0xE0,0x10,0x01,0x89,0x43,
+0xFE,0x10,0x07,0xE8,0xFD,0xEF,0x08,0x06,0x20,0x60,0x30,0x20,0x68,0x88,0x20,0x64,
+0x30,0x24,0x64,0x63,0x99,0x80,0xE4,0x00,0x00,0x0D,0x99,0x81,0xCD,0x8C,0x00,0x1A,
+0x51,0x60,0x1A,0x8D,0x90,0xE4,0x00,0x00,0x29,0xD0,0x64,0x00,0x62,0x99,0x80,0x89,
+0x6C,0xE4,0x00,0x00,0x11,0x89,0x8F,0x99,0x63,0x9A,0xE0,0x89,0xC1,0x53,0x20,0x10,
+0xE4,0x00,0x00,0x19,0x43,0x0E,0xBC,0x9E,0xE1,0x1B,0x38,0x00,0x5F,0x17,0x00,0xD5,
+0x78,0xFF,0xAD,0x88,0x6B,0x88,0x81,0x99,0xA3,0xE7,0xFF,0xFC,0x18,0x89,0xC1,0xFE,
+0x20,0xFE,0xB0,0xCA,0x40,0x01,0x50,0x52,0x60,0x3F,0x1C,0x61,0x60,0x88,0x8B,0xE7,
+0xFF,0xFD,0xBE,0x1F,0x21,0x60,0x8B,0x01,0x9B,0x41,0xE4,0x00,0x00,0x93,0x0A,0xF9,
+0x00,0xC2,0xFF,0xD5,0xEC,0x20,0x00,0x39,0x43,0x71,0xBD,0xC3,0x60,0x2A,0x0C,0xE4,
+0x00,0x00,0x0F,0x5E,0xE0,0x19,0x4B,0x61,0x01,0x23,0x60,0x98,0xFE,0xF7,0x01,0x50,
+0x13,0x58,0x00,0x42,0xF7,0x90,0x8E,0xFA,0x5E,0xF7,0x06,0x26,0xFC,0x34,0x5E,0xE7,
+0xF1,0x4A,0xF7,0x98,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0x1A,0xF8,0x00,0x9B,0x40,0x9F,
+0x01,0x9F,0x22,0x42,0xF8,0x75,0x5E,0xF7,0x00,0xD5,0x77,0xFD,0xAD,0x23,0x40,0x24,
+0x9A,0xE0,0xE4,0x00,0x00,0x51,0x88,0x6B,0x88,0x81,0x9D,0xBF,0xE7,0xFF,0xFB,0x12,
+0x5D,0xAD,0x00,0x21,0xA2,0x1E,0xE7,0xFF,0xFF,0xD5,0x43,0x0C,0xBC,0x1F,0x21,0x00,
+0x8F,0x37,0x9E,0xE1,0x13,0x39,0x00,0x1B,0x38,0x00,0x5F,0x17,0x00,0xD5,0x78,0xFF,
+0x6D,0x21,0x40,0x64,0x21,0x48,0x28,0x21,0x44,0x8C,0xD1,0x44,0x01,0xCA,0x99,0x60,
+0x99,0x80,0x88,0x8B,0x89,0x4C,0xE4,0x00,0x00,0x77,0xC1,0x80,0x10,0x01,0x99,0x60,
+0x88,0x90,0xFD,0x8C,0x0A,0x9C,0xE4,0x00,0x00,0x2D,0xC0,0x80,0x10,0x01,0xC1,0x80,
+0x10,0x01,0x99,0x61,0xFC,0x84,0x08,0x02,0xFD,0x8C,0x0B,0x04,0x51,0x40,0x1A,0xE4,
+0x00,0x00,0x25,0xC1,0x80,0x10,0x01,0x99,0x68,0x88,0x8F,0xFD,0x8C,0x0B,0x28,0x99,
+0x43,0x88,0x6A,0xE7,0xFF,0xFA,0x24,0xFD,0xA1,0x01,0x20,0x88,0x8A,0x88,0x6D,0xE7,
+0xFF,0xFB,0xDE,0x9A,0xE0,0xE4,0x00,0x00,0x33,0x4F,0x17,0x10,0x4F,0x37,0x08,0x8F,
+0x0C,0x8F,0x2D,0x9E,0xE1,0x0B,0x39,0x00,0x4F,0x39,0x40,0x0F,0x38,0x00,0x5F,0x17,
+0x00,0xD5,0x58,0xFF,0x45,0x88,0x6B,0xE4,0x00,0x52,0x3C,0xED,0x21,0x02,0x0E,0xEE,
+0x61,0x01,0xE6,0xEE,0x41,0x01,0xEA,0xEE,0x21,0x01,0xEE,0xEE,0x01,0x01,0xF2,0xED,
+0xE1,0x01,0xF6,0xED,0xC1,0x01,0xFA,0xED,0xA1,0x01,0xFE,0xED,0x81,0x02,0x02,0xED,
+0x61,0x02,0x06,0xED,0x41,0x02,0x0A,0xFC,0x21,0x02,0x10,0x85,0x29,0x9C,0x38,0xC2,
+0xE0,0x10,0x01,0x0D,0x21,0x04,0xFE,0xF7,0x07,0xE8,0x9B,0x00,0x13,0x37,0x00,0x4F,
+0x39,0x08,0x9E,0xE1,0x8F,0x19,0xC3,0x20,0x10,0x01,0xFF,0x39,0x08,0x02,0xD6,0xF9,
+0xFF,0x76,0xC2,0xE0,0x10,0x01,0xF3,0x57,0x08,0x06,0xFE,0xF7,0x08,0x06,0x13,0x37,
+0x02,0x13,0x77,0x01,0x98,0x60,0x42,0xFB,0xD4,0x98,0x80,0x8E,0xF9,0x53,0x20,0x37,
+0x4E,0xF7,0x08,0x8E,0xF8,0x97,0x03,0x4E,0xF7,0x09,0xCB,0x18,0xD0,0x8F,0xCE,0xF7,
+0x03,0x5B,0x42,0xF7,0xC9,0xCE,0xF7,0x00,0x1D,0xD6,0xF8,0x00,0xA1,0x97,0x2F,0x98,
+0x60,0xCB,0x39,0x42,0x3F,0x98,0x82,0xD6,0xF9,0x00,0x31,0x98,0x87,0xE4,0x00,0x9A,
+0x14,0x0D,0x21,0x06,0x98,0x61,0x98,0x80,0x9C,0x28,0xE4,0x00,0x99,0xFB,0x9C,0x38,
+0x98,0x80,0x0D,0x21,0x04,0x98,0x66,0xE4,0x00,0x2E,0x6A,0x98,0x60,0xE7,0xFF,0xFA,
+0xF2,0x98,0x66,0x98,0x87,0xE4,0x00,0x2E,0x4E,0x0D,0x21,0x06,0x98,0x64,0x9C,0x28,
+0xE7,0xFF,0xFA,0xCD,0xC2,0xE0,0x10,0x01,0x5C,0xA0,0x29,0xF3,0x37,0x0B,0x1A,0x53,
+0x40,0x40,0x52,0xE0,0x20,0xC3,0x60,0x10,0x01,0x4B,0x5A,0xB8,0xFF,0x7B,0x09,0x0C,
+0x20,0x60,0x6C,0xE4,0x00,0x00,0x55,0x4F,0x17,0x08,0x9E,0xE1,0x8F,0x1B,0x0B,0x18,
+0x00,0xD7,0x58,0x00,0x78,0x98,0x61,0xE4,0x00,0x00,0xD9,0x9A,0xE0,0x43,0x40,0xD5,
+0x5F,0x17,0x00,0xD7,0x38,0xFF,0x25,0x98,0x60,0xE4,0x00,0x00,0xB5,0x20,0x67,0xEA,
+0x9A,0xE0,0x20,0x80,0xA6,0x9A,0xE0,0x43,0x80,0xD5,0xE4,0x00,0x00,0x7D,0x4F,0x17,
+0x08,0x8F,0x1B,0x0B,0x18,0x00,0x4F,0x98,0xFA,0x47,0x1C,0xC6,0x43,0x18,0xE5,0x0B,
+0x84,0x00,0xD7,0x1C,0x00,0x38,0x0F,0x04,0x01,0x9E,0xE1,0x5F,0x17,0x00,0xD7,0x38,
+0xFF,0x05,0xE7,0xFF,0xFF,0xA7,0x4F,0x17,0x08,0x8F,0x1B,0x0B,0x18,0x00,0xD7,0x98,
+0xFD,0x3C,0x9E,0xE1,0xD7,0x1A,0xFD,0x0C,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x5D,0xE7,
+0xFF,0xFF,0x51,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xF3,0xB7,0x0B,
+0x1A,0xC3,0xC0,0x10,0x01,0x9A,0xE0,0xFF,0x18,0x06,0xC0,0x8B,0x37,0xFF,0xDE,0x09,
+0x0C,0xE4,0x00,0x00,0x5B,0x4F,0x57,0x08,0x0B,0x98,0x00,0x8F,0x5E,0x0B,0x5A,0x00,
+0x43,0x9A,0xE5,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0x5F,0x66,0x11,0x20,
+0x00,0x21,0x9F,0x21,0x5F,0x39,0x00,0x0F,0x58,0x01,0x9E,0xE1,0x9F,0x02,0x5F,0x57,
+0x00,0xD7,0xBA,0xFE,0xA5,0x5F,0x20,0x93,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,
+0x01,0xC3,0x40,0x10,0x01,0xF3,0x37,0x0B,0x1A,0xC3,0x60,0x10,0x01,0x9A,0xE0,0xFF,
+0x5A,0x06,0xC0,0xFF,0x7B,0x09,0x0C,0xE4,0x00,0x00,0x29,0x4F,0x17,0x08,0x9E,0xE1,
+0x43,0x9A,0xC4,0x8F,0x1B,0x0B,0x18,0x01,0x0F,0x1C,0x01,0x5F,0x17,0x00,0xD7,0x38,
+0xFF,0x6D,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x8A,0xC2,0xE0,0x10,0x01,
+0x9C,0x38,0xF8,0x17,0x08,0x83,0x0D,0x21,0x04,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,
+0x9D,0x20,0x64,0x26,0x98,0x60,0xE4,0x00,0x00,0x0D,0x98,0x64,0x98,0x80,0xE4,0x00,
+0x2F,0xA0,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEC,0x17,0x06,0xBC,0x9C,0x28,0xE4,
+0x00,0x4B,0xFB,0x1C,0x21,0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0xEB,0x17,0x00,
+0xD5,0x0D,0x21,0x14,0x0D,0x61,0x0C,0x0C,0x01,0x07,0x89,0x43,0xC7,0x18,0x01,0x00,
+0x98,0x60,0xD3,0x00,0x06,0x3A,0xEB,0x17,0x00,0xD5,0xC7,0x18,0xFE,0xFF,0xEF,0x17,
+0x00,0xD5,0xE4,0x00,0x46,0x32,0xE4,0x00,0x47,0x3E,0x21,0x44,0x36,0x98,0x61,0xE4,
+0x00,0x7B,0x62,0xE4,0x00,0x00,0x11,0xE4,0x00,0x7B,0x9C,0xC2,0xE0,0x10,0x01,0xED,
+0x77,0x06,0xBE,0x5D,0x60,0x01,0x0C,0x01,0x07,0x98,0x61,0x1C,0x81,0x06,0x98,0xA1,
+0x48,0x84,0x00,0x88,0xCA,0xE7,0xFF,0xFC,0x5E,0xC2,0xE0,0x10,0x01,0x20,0x60,0xE6,
+0xF3,0x17,0x08,0x8A,0x9F,0x01,0xFB,0x17,0x08,0x8A,0x0A,0xE1,0x06,0xD2,0xEF,0x00,
+0x94,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x08,0x83,0x9F,0x01,0xFB,0x17,0x08,0x83,0x98,
+0x63,0x21,0x44,0x36,0x98,0x81,0xE4,0x00,0x78,0x06,0xE4,0x00,0x00,0x6B,0xE4,0x00,
+0x78,0x5C,0xE4,0x00,0x00,0x5B,0xF8,0x17,0x08,0x8A,0xC2,0xE0,0x10,0x01,0xF8,0x17,
+0x08,0x83,0x21,0x63,0x76,0x0A,0xE1,0x06,0x5E,0xEC,0x11,0x23,0xFF,0x51,0x21,0x44,
+0x36,0x98,0x61,0xE4,0x00,0x4F,0xEA,0xE4,0x00,0x00,0x11,0xE4,0x00,0x50,0x24,0x9B,
+0x01,0xC2,0xE0,0x10,0x01,0x98,0x61,0xEF,0x17,0x06,0xBC,0xC2,0xE0,0x10,0x01,0xF3,
+0x17,0x08,0x9D,0x9F,0x01,0xFB,0x17,0x08,0x9D,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,
+0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0x9C,0x38,0x0D,0x21,0x04,0x20,0x64,0x26,0x98,
+0x60,0xE4,0x00,0x00,0x0D,0x98,0x64,0x98,0x80,0xE4,0x00,0x2D,0x6A,0x0D,0x21,0x06,
+0x9C,0x28,0xE4,0x00,0x49,0xD5,0x98,0x81,0x98,0x60,0x88,0xA4,0xE7,0xFF,0xA7,0xEB,
+0xC2,0xE0,0x10,0x01,0x98,0x61,0xF2,0xF7,0x08,0x8A,0xD2,0xEA,0x00,0x95,0xC2,0xE0,
+0x10,0x01,0xF2,0xF7,0x08,0x83,0x5E,0xE0,0xBB,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0xF2,0xF7,0x08,0x9D,0x5E,0xE1,0xDB,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x00,0x00,0x0C,0x17,0x00,0x0C,0x17,0x19,0x0C,0x17,0x1B,0xEC,
+0x17,0x00,0xA1,0xEC,0x17,0x00,0xA3,0xEC,0x17,0x00,0xA5,0xEC,0x17,0x00,0xA7,0xF8,
+0x17,0x00,0xA8,0xEC,0x17,0x00,0xAC,0x1F,0x17,0x08,0xEC,0x17,0x00,0xA1,0x0F,0x17,
+0x04,0x1F,0x17,0x20,0x0F,0x17,0x1C,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD9,0x53,
+0x18,0x02,0xEF,0x17,0x00,0xD9,0x85,0x29,0xC3,0x20,0x10,0x01,0xFF,0x19,0x00,0x00,
+0x1E,0xF8,0x20,0x5C,0x63,0x04,0x0E,0xF8,0x1C,0x9A,0xE0,0xE4,0x00,0x00,0x29,0x0F,
+0x38,0x1E,0x43,0x44,0xBC,0x8F,0x37,0x13,0x5A,0x00,0x9E,0xE1,0x1B,0x59,0x00,0x5F,
+0x37,0x04,0xD4,0x79,0xFF,0x6D,0x9A,0xE1,0xEE,0xF8,0x00,0xAC,0x85,0x29,0x9C,0x38,
+0x0D,0x21,0x04,0x0D,0x41,0x00,0x5D,0x43,0x00,0xE7,0xFF,0xFE,0xEA,0x88,0x6A,0xE4,
+0x00,0x95,0xF0,0x0D,0x21,0x06,0x0D,0x41,0x02,0x9C,0x28,0x85,0x29,0x1C,0x21,0xE0,
+0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xC1,0x08,0x0D,
+0xE1,0x04,0x0D,0x21,0x1C,0x0E,0x01,0x00,0xC1,0xA0,0x10,0x01,0xE4,0x00,0x97,0x62,
+0xC1,0x80,0x10,0x01,0xC1,0xC0,0x10,0x01,0xC1,0xE0,0x10,0x01,0x5C,0x63,0x00,0xFD,
+0xAD,0x00,0xC8,0xFD,0x8C,0x08,0x1A,0xFD,0x6E,0x00,0xC0,0xFD,0x4F,0x00,0x00,0xD0,
+0x60,0x23,0xFA,0xE4,0x00,0x97,0x60,0x5C,0x63,0x00,0x20,0x60,0xDC,0x0C,0x0A,0x19,
+0xE4,0x00,0x97,0xEC,0xE4,0x00,0x0D,0x38,0xEC,0x6A,0x00,0xA5,0xE4,0x00,0x00,0x4B,
+0x0E,0xEA,0x06,0x0A,0x0A,0x19,0x8E,0x17,0xE4,0x00,0x97,0xF0,0x18,0x70,0x00,0x0A,
+0xEA,0x19,0xD2,0xEE,0x00,0x8D,0x0A,0xEA,0x19,0x9E,0xE1,0x5E,0xF7,0x04,0x0E,0xEA,
+0x19,0x99,0xC0,0xE4,0x00,0x96,0x6E,0x5C,0x63,0x00,0x20,0x63,0x5A,0x0E,0xEA,0x06,
+0x13,0x17,0x00,0x5F,0x0A,0x09,0x20,0x00,0x65,0x0A,0xEA,0x19,0xD2,0xE4,0x04,0x0E,
+0xE4,0x00,0x97,0x18,0x0A,0xEA,0x19,0xD2,0xE0,0x04,0x4E,0xE4,0x00,0x0B,0x0B,0x13,
+0x17,0x00,0x23,0x08,0x36,0x0A,0xEA,0x19,0x22,0xE9,0x96,0xE7,0xFF,0xFF,0xCB,0x13,
+0x17,0x00,0x23,0x04,0x36,0x0A,0xEA,0x19,0x22,0xE5,0x56,0xE7,0xFF,0xFF,0xAB,0x13,
+0x17,0x00,0x5F,0x0A,0x29,0x20,0x01,0x0B,0x13,0x17,0x00,0x5F,0x0A,0x49,0x23,0xFE,
+0xEF,0x13,0x17,0x00,0x5F,0x0A,0x69,0x20,0x00,0xC3,0x13,0x17,0x00,0x5F,0x0A,0x89,
+0x20,0x00,0x9F,0x13,0x17,0x00,0x5F,0x0B,0x09,0x20,0x00,0x7B,0x13,0x17,0x00,0x5F,
+0x0B,0x29,0x23,0xFE,0x5F,0x13,0x17,0x00,0x5F,0x04,0x09,0x20,0x00,0x33,0x12,0xF7,
+0x00,0x5E,0xE4,0x29,0x20,0x00,0x25,0x0A,0xEA,0x19,0x22,0xEE,0x18,0x98,0x61,0xE4,
+0x00,0xA7,0x5E,0x9D,0xC1,0xC1,0xC4,0xE2,0x0E,0x23,0xFD,0x6B,0xE7,0xFF,0xFE,0xE9,
+0x0E,0xEA,0x06,0x13,0x17,0x00,0xD3,0x00,0x27,0xD2,0x13,0x17,0x00,0x5F,0x0B,0x9B,
+0x20,0x13,0xC1,0x13,0x17,0x00,0x5F,0x0A,0x49,0x07,0x00,0x80,0x20,0x00,0xA5,0x0B,
+0x2A,0x19,0xD3,0x24,0x1B,0x16,0x13,0x37,0x01,0x13,0x57,0x02,0x12,0xF7,0x03,0x4F,
+0x39,0x40,0x47,0x39,0xD5,0xC3,0x22,0x7F,0xEE,0x20,0x0D,0x2D,0x8F,0x19,0x1A,0xF8,
+0x00,0xE4,0x00,0x06,0x87,0x13,0x37,0x00,0x5F,0x2A,0x69,0x20,0x02,0xCD,0x0B,0x2A,
+0x19,0xD3,0x23,0x25,0x7E,0x13,0x57,0x01,0x13,0x37,0x02,0x4E,0xFA,0x40,0x46,0xF7,
+0xCD,0xCB,0x20,0x14,0x00,0xC2,0xE2,0x80,0x0A,0x4A,0xF7,0xC8,0x8E,0xF8,0x0E,0xEA,
+0x1C,0xFE,0xE0,0x08,0x00,0xEE,0xEA,0x00,0xA1,0xE4,0x00,0x00,0x1D,0xE4,0x00,0x0A,
+0x3E,0x98,0x61,0xE4,0x00,0x0A,0x72,0xE4,0x00,0x93,0xE0,0x5C,0x63,0x00,0x20,0x63,
+0xBC,0xEC,0x0A,0x00,0xA3,0xE4,0x00,0x94,0xE8,0xE4,0x00,0x94,0x7A,0xEB,0x0A,0x00,
+0xA3,0xEA,0xEA,0x00,0xA1,0xD7,0x17,0x01,0x26,0xEA,0xEA,0x00,0xA3,0xEA,0xEA,0x00,
+0xA1,0xE4,0x00,0x94,0x70,0xE4,0x00,0x94,0xDC,0xE4,0x00,0x94,0xA0,0xEC,0x0A,0x00,
+0xA3,0xEC,0x0A,0x00,0xA1,0xE4,0x00,0x08,0x77,0xE4,0x00,0x93,0xCE,0x5C,0x63,0x00,
+0x20,0x63,0x66,0xE4,0x00,0x93,0x22,0x5C,0x63,0x00,0x20,0x63,0x0C,0xEA,0xEA,0x00,
+0xA3,0x0F,0x0A,0x1E,0x8E,0xF8,0x10,0x77,0x00,0xE4,0x00,0x92,0x9C,0xEA,0xEA,0x00,
+0xA3,0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xEA,0x00,0xA3,0xE7,0xFF,0xFF,0x47,0x13,0x17,
+0x00,0xD3,0x01,0x04,0x26,0x0A,0xEA,0x19,0xD2,0xE1,0x13,0xE6,0xFE,0xEA,0x00,0xB4,
+0xEE,0xEA,0x00,0xB0,0x12,0xEB,0x00,0x22,0xE0,0x4A,0x9A,0xE8,0x53,0x00,0x52,0xFA,
+0xEA,0x00,0xBC,0x9A,0xE8,0xE4,0x00,0x00,0x21,0x9A,0xE8,0x53,0x00,0x62,0xFA,0xEA,
+0x00,0xBC,0x52,0xE0,0x80,0x1F,0x20,0x81,0xFB,0x2A,0x00,0xB4,0x13,0x2B,0x00,0xFB,
+0x2A,0x00,0xB5,0xFB,0x0A,0x00,0xB6,0xF8,0x0A,0x00,0xB7,0x5E,0xF7,0x00,0xFA,0xEA,
+0x00,0xB8,0xF8,0x0A,0x00,0xB9,0xF8,0x0A,0x00,0xBA,0xC2,0xE0,0x10,0x01,0xF8,0x0A,
+0x00,0xBB,0xEB,0x17,0x00,0xD9,0xC7,0x18,0xFF,0xFD,0xEF,0x17,0x00,0xD9,0x12,0xEC,
+0x00,0x52,0xF7,0x01,0x9B,0x01,0x1A,0xEC,0x00,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,
+0x33,0xE4,0x00,0x04,0x07,0x13,0x17,0x00,0x23,0x09,0x4A,0x0B,0x0A,0x19,0xD3,0x02,
+0x0F,0xB6,0x12,0xF7,0x01,0x22,0xE0,0x4A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF9,
+0x18,0x17,0x00,0xE4,0x00,0x00,0x29,0x22,0xE4,0x5E,0xC2,0xF4,0x00,0x01,0x9B,0x01,
+0xCA,0xF7,0x3D,0xF9,0x1B,0x17,0x00,0x12,0xF7,0x00,0xE4,0x00,0x00,0x2D,0xD2,0xE2,
+0x0E,0x36,0xC3,0x14,0x00,0x01,0xCB,0x18,0x3D,0xF9,0x1A,0xF8,0x00,0x12,0xF8,0x00,
+0x5E,0xF7,0x00,0x1A,0xEB,0x00,0xE4,0x00,0x03,0x5D,0x13,0x17,0x00,0x5F,0x0B,0x01,
+0x20,0x00,0x31,0x13,0x17,0x00,0x5F,0x0B,0x29,0x20,0x04,0xB5,0x0B,0x0A,0x19,0x23,
+0x0C,0xB6,0xC3,0x00,0x10,0x01,0x9B,0x21,0xEF,0x38,0x06,0x88,0x13,0x17,0x01,0x12,
+0xF7,0x02,0x4F,0x18,0x40,0x47,0x18,0xBD,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x20,
+0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x34,0xE4,0x00,0x02,0xD9,0x0B,0x0A,0x19,0xD3,
+0x04,0x0B,0x2E,0xC3,0x00,0x10,0x01,0xEF,0x18,0x06,0xFE,0x23,0x00,0x68,0xEB,0x2A,
+0x00,0xA5,0xEB,0x0A,0x00,0xA7,0x43,0x19,0xC5,0xD3,0x0A,0x00,0x60,0xF3,0x0A,0x00,
+0xA8,0xF8,0x0A,0x00,0xA8,0x11,0xD7,0x01,0xC1,0xA0,0x10,0x01,0x13,0x57,0x02,0xFD,
+0x6D,0x07,0x00,0x13,0x17,0x03,0x4E,0xEE,0x08,0x43,0x2B,0xBC,0x9E,0xE1,0x1B,0x59,
+0x00,0x8E,0xEB,0x1B,0x17,0x00,0xC2,0xE0,0x10,0x01,0x99,0x81,0xED,0x97,0x06,0xFC,
+0xE4,0x00,0x06,0xA0,0xEC,0x6A,0x00,0xA7,0xF2,0xEA,0x00,0xA8,0x4D,0xCC,0x74,0x45,
+0xCE,0xBD,0x5D,0xCE,0x00,0xF9,0xCA,0x00,0xA8,0xF2,0xEA,0x00,0xA8,0x56,0xF7,0x01,
+0xD2,0xE0,0x07,0xA2,0xF2,0xEA,0x00,0xA8,0x56,0xF7,0x02,0xD2,0xE0,0x07,0x4A,0xF2,
+0xEA,0x00,0xA8,0x56,0xF7,0x04,0xD2,0xE0,0x06,0xF2,0xF2,0xEA,0x00,0xA8,0x56,0xF7,
+0x08,0xD2,0xE0,0x06,0x9A,0xF3,0x4D,0x07,0x00,0x13,0x0B,0x01,0x12,0xEB,0x02,0x4E,
+0xF7,0x40,0x13,0x2B,0x03,0x4F,0x5A,0xC0,0x4F,0x18,0x80,0x47,0x1A,0xC5,0x47,0x18,
+0xCD,0x47,0x18,0xBD,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x34,0x13,0x4B,0x04,0x13,
+0x0B,0x05,0x12,0xEB,0x06,0x4E,0xF7,0x40,0x13,0x2B,0x07,0x4F,0x5A,0xC0,0x4F,0x18,
+0x80,0x47,0x1A,0xC5,0x47,0x18,0xCD,0x47,0x18,0xBD,0xC2,0xE0,0x10,0x01,0xEF,0x17,
+0x08,0x20,0xF2,0xEA,0x00,0xA8,0xF8,0x0A,0x00,0xA8,0xC2,0xE0,0x10,0x01,0xED,0x97,
+0x06,0x88,0xE4,0x00,0x00,0xE5,0x13,0x17,0x00,0x5F,0x04,0x09,0x20,0x00,0x99,0x0B,
+0x0A,0x19,0x23,0x0D,0x8A,0x13,0x37,0x01,0x13,0x17,0x02,0x4E,0xF9,0x40,0x46,0xF7,
+0xC5,0xC2,0xEB,0x54,0xA4,0x20,0x01,0x3D,0x12,0xED,0x00,0x52,0xF7,0x03,0xE4,0x00,
+0x00,0x87,0x13,0x17,0x00,0x5F,0x04,0x29,0x20,0x06,0xE1,0x0B,0x0A,0x19,0x23,0x0C,
+0xDA,0x13,0x37,0x01,0x13,0x17,0x02,0x4E,0xF9,0x40,0x46,0xF7,0xC5,0xC3,0x00,0x10,
+0x01,0xEE,0xF8,0x00,0xCC,0x12,0xED,0x00,0x57,0x37,0x01,0x23,0x20,0x64,0xEF,0x18,
+0x00,0xCE,0x23,0x00,0x32,0x9B,0x1B,0x46,0xF7,0xC4,0xE4,0x00,0x00,0x0F,0x52,0xF7,
+0x04,0x1A,0xED,0x00,0x0C,0x0A,0x00,0x0C,0x0A,0x19,0xE4,0x00,0x02,0xED,0xE4,0x00,
+0x8D,0xD2,0x5C,0x63,0x00,0xD0,0x60,0x0B,0x5A,0xE4,0x00,0x8F,0x14,0xE4,0x00,0x8E,
+0xD8,0x50,0x60,0x20,0xE4,0x00,0x03,0xD0,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF9,
+0x12,0xF7,0x00,0x1A,0xEB,0x00,0x12,0xEB,0x00,0x22,0xE0,0x42,0xC2,0xE0,0x10,0x01,
+0x99,0xC6,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0xD8,0x12,0xEB,0x00,0x22,0xE0,0x4E,0x12,
+0xED,0x00,0x56,0xF7,0x01,0x5E,0xE0,0x09,0x49,0xC4,0x43,0xE4,0x00,0x00,0x43,0x12,
+0xEB,0x00,0x22,0xE4,0x2A,0x51,0xC0,0x80,0xE4,0x00,0x00,0x29,0x12,0xEB,0x00,0x22,
+0xEB,0xD8,0x12,0xEB,0x00,0x22,0xEF,0xC0,0xC9,0xC0,0xFF,0xFF,0xEE,0xEA,0x00,0xAE,
+0x22,0xE4,0x2E,0xED,0xCA,0x00,0xA1,0xEC,0x0A,0x00,0xAC,0xE4,0x00,0x8D,0xFC,0xEA,
+0xEA,0x00,0xA1,0xD5,0xD7,0x00,0x71,0x12,0xEC,0x00,0x56,0xF7,0x01,0xD2,0xE0,0x05,
+0x22,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x08,0x50,0x23,0x00,0x24,0x9F,0x1F,0xFB,0x17,
+0x08,0x50,0xEC,0x0A,0x00,0xA3,0x12,0xEC,0x00,0x56,0xF7,0x01,0x22,0xE0,0x2C,0xF1,
+0xAA,0x00,0xBC,0xE4,0x00,0x00,0xAD,0xE9,0xAA,0x00,0xA1,0xE4,0x00,0x00,0x9D,0x12,
+0xEB,0x00,0x22,0xE0,0x42,0x12,0xEC,0x00,0x56,0xF7,0x01,0x22,0xE0,0x56,0xE4,0x00,
+0x00,0x3D,0xE4,0x00,0x8B,0xDE,0x5C,0x63,0x00,0x20,0x63,0xE4,0xE7,0xFF,0xFF,0xD3,
+0xEA,0xEA,0x00,0xA3,0xEF,0x0A,0x00,0xB2,0xE4,0x00,0x00,0x17,0xEA,0xEA,0x00,0xA3,
+0x0F,0x0A,0x1E,0x8E,0xF8,0x10,0x77,0x00,0xE4,0x00,0x8B,0x5E,0xEA,0xEA,0x00,0xA3,
+0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xEA,0x00,0xA3,0xEA,0xEA,0x00,0xA3,0xD6,0xED,0xFD,
+0x96,0xE4,0x00,0x8D,0x04,0xE4,0x00,0x8C,0xC8,0xEC,0x0A,0x00,0xA1,0xEC,0x0A,0x00,
+0xA3,0xE4,0x00,0x00,0x45,0x98,0x60,0x9D,0x61,0xE4,0x00,0x8A,0xFC,0xE4,0x00,0x00,
+0x0D,0x99,0x60,0xD5,0xCB,0xFF,0x95,0xE4,0x00,0x8C,0xB8,0xE4,0x00,0x8C,0x7C,0xEC,
+0x0A,0x00,0xA1,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD9,0x53,0x18,0x02,0xEF,0x17,
+0x00,0xD9,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x33,0xC3,0x00,0x32,0x0A,0x20,0x00,
+0x49,0x13,0x0C,0x00,0x9B,0x3E,0xEC,0x17,0x08,0x33,0x47,0x18,0xCC,0x1B,0x0C,0x00,
+0x0E,0x01,0x02,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,0x0D,
+0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0x9C,0x38,0x0D,
+0x21,0x04,0xE4,0x00,0x93,0x30,0x98,0x60,0x88,0x83,0xE4,0x00,0x90,0x62,0x98,0x61,
+0x98,0x82,0xE4,0x00,0x90,0x52,0x98,0x60,0xFC,0x80,0x3E,0x0C,0xE4,0x00,0x8C,0x3E,
+0x98,0x61,0xFC,0x80,0x3E,0x0C,0xE4,0x00,0x8D,0xA4,0x0D,0x21,0x06,0x9C,0x28,0xE4,
+0x00,0x95,0xFB,0x20,0x64,0x1E,0xE4,0x00,0x97,0x25,0xE4,0x00,0x97,0x43,0x9C,0x38,
+0x0D,0x21,0x04,0xE4,0x00,0x97,0x58,0x0D,0x21,0x06,0x9C,0x28,0xE4,0x00,0x97,0x1F,
+0xE4,0x00,0x99,0x17,0xE4,0x00,0x98,0xAD,0xE4,0x00,0x99,0x77,0xE4,0x00,0x99,0xD3,
+0xE4,0x00,0x9D,0xB1,0xE4,0x00,0x9B,0x1B,0xE4,0x00,0x9A,0x1F,0xE4,0x00,0x9A,0x55,
+0xE4,0x00,0x9A,0x8B,0xE4,0x00,0x9A,0xAF,0xE4,0x00,0x9A,0xD3,0xE4,0x00,0x99,0x09,
+0xE4,0x00,0x9B,0x01,0x20,0x60,0x28,0x20,0x64,0x3E,0xE4,0x00,0x00,0x11,0xE4,0x00,
+0x9B,0x9D,0xE4,0x00,0x9B,0xB7,0x85,0x29,0xE4,0x00,0x9E,0x55,0xE4,0x00,0x9B,0xC5,
+0xC2,0xE0,0x10,0x01,0xE8,0x77,0x00,0xC3,0xEB,0x17,0x00,0xC3,0xD4,0x78,0xFF,0xC6,
+0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0D,0x61,0x04,0x0D,0x21,0x0C,0x5D,0x43,0x04,
+0xE7,0xFF,0xFF,0xC0,0xC2,0xE0,0x10,0x01,0xFF,0x17,0x00,0xE6,0x89,0x77,0x0C,0x78,
+0x03,0xE7,0xFF,0xFF,0x9E,0xFF,0x0B,0x00,0xE6,0x0B,0x18,0x03,0x40,0x63,0xC5,0x5F,
+0x03,0x04,0xD5,0x58,0xFF,0x7D,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,
+0x21,0x10,0x85,0x29,0xE4,0x00,0x9E,0x71,0xC3,0x34,0x00,0x01,0xCA,0xF9,0x23,0xFC,
+0x0A,0xF7,0x00,0xD2,0xFF,0x04,0x3C,0xC3,0x00,0x10,0x01,0xF2,0xF8,0x07,0x08,0x9E,
+0xE1,0x5E,0xF7,0x00,0xFA,0xF8,0x07,0x08,0x22,0xE1,0xCA,0xC3,0x00,0x10,0x01,0xC3,
+0x60,0x10,0x01,0xFF,0x18,0x03,0x72,0xCA,0xE0,0x11,0x7D,0xCB,0x39,0x22,0x00,0xFF,
+0x7B,0x09,0x0C,0x1F,0x57,0xFD,0x57,0x5A,0xFF,0x4F,0x5A,0x10,0x8F,0x59,0x0B,0x9A,
+0x01,0x4F,0x97,0x08,0x8F,0x9B,0xEB,0x9C,0xDD,0x3B,0x0F,0x9A,0x01,0x5F,0x57,0x00,
+0x5F,0x4F,0xE9,0x57,0x57,0xFF,0x4F,0x5A,0x10,0x8F,0x59,0x0B,0x9A,0x01,0x20,0x00,
+0x6D,0xFF,0xA0,0x80,0x00,0x5F,0x9C,0x04,0x47,0x9C,0xEC,0x0B,0xB8,0x01,0xC7,0xBD,
+0x7F,0xFF,0x47,0x9C,0xED,0xE4,0x00,0x00,0x0F,0x0B,0x98,0x01,0x0F,0x9A,0x01,0x9E,
+0xE1,0x9F,0x02,0xC2,0xE2,0x30,0x04,0x23,0xFE,0xB1,0x85,0x29,0x5C,0x63,0x04,0xE4,
+0x00,0x9D,0x43,0x9A,0xE0,0x8B,0x17,0xE4,0x00,0x00,0x1D,0x43,0x23,0xBC,0x9E,0xE1,
+0x13,0x39,0x00,0x8F,0x19,0xD4,0x97,0xFF,0xB4,0x40,0x60,0xC5,0x85,0x29,0x9C,0x38,
+0x98,0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFC,0xFC,0x98,0x61,0xE7,0xFF,0xFC,0xF0,0xC2,
+0xE0,0x10,0x01,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0x3A,0x50,0x60,0xC8,0xE7,0xFF,0xFD,
+0xCA,0xE4,0x00,0x00,0x15,0x98,0x6F,0xE7,0xFF,0xFD,0x8A,0x0D,0x21,0x06,0x98,0x60,
+0x9C,0x28,0xE7,0xFF,0xFC,0xA3,0x9C,0x38,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x04,0xEC,
+0x17,0x08,0x31,0x0D,0x41,0x00,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x00,0xC0,0x23,0x00,
+0x42,0xC3,0x00,0x10,0x01,0x98,0x66,0xEF,0x18,0x00,0xE2,0x23,0x08,0x78,0xF2,0xF7,
+0x00,0xC0,0x50,0x60,0x80,0x22,0xE0,0x52,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x00,0xC8,
+0x56,0xF7,0x01,0x5E,0xE0,0x09,0x48,0x64,0x43,0xC1,0x40,0x10,0x01,0xEA,0xEA,0x00,
+0xD9,0x56,0xF7,0x02,0x22,0xE0,0x6C,0xC0,0x80,0x10,0x01,0xFC,0x84,0x07,0x0A,0xE7,
+0xFF,0xEE,0x32,0xEA,0xEA,0x00,0xD9,0xC6,0xF7,0xFF,0xFD,0xEE,0xEA,0x00,0xD9,0x0D,
+0x41,0x02,0x0D,0x21,0x06,0x9C,0x28,0xE7,0xFF,0xFE,0xAF,0x9C,0x30,0xC3,0x00,0x10,
+0x01,0x0D,0x21,0x0C,0xFC,0x98,0x07,0x0A,0x0D,0x41,0x08,0x8A,0xE4,0x8B,0x24,0x18,
+0x17,0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0x8C,0xD6,0xF8,0xFF,0x9E,
+0x52,0xE0,0x62,0x1F,0x19,0x1F,0x1A,0xE4,0x00,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x07,
+0x0B,0x18,0x17,0x00,0x9E,0xE1,0xD7,0x17,0xFF,0xDE,0x1E,0xE0,0x9E,0xC3,0x60,0x10,
+0x01,0x1A,0xE4,0x1F,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF8,0x12,0xF7,0x00,0xFA,
+0xFB,0x07,0x09,0xF2,0xFB,0x07,0x09,0x22,0xEC,0xCC,0xC2,0xE0,0x10,0x01,0xC3,0x40,
+0x10,0x01,0xF3,0xB7,0x0B,0x1A,0x9B,0x00,0xC2,0xE0,0x10,0x01,0xC3,0xC0,0x10,0x01,
+0xC1,0x00,0x10,0x01,0xFE,0xF7,0x07,0x2A,0xFF,0x5A,0x09,0x48,0x8B,0x38,0xFF,0xDE,
+0x0C,0x96,0xFD,0x08,0x09,0x0C,0xE4,0x00,0x01,0x09,0xC3,0x80,0x10,0x01,0x9A,0xE0,
+0xFF,0x9C,0x0B,0x04,0x8B,0x64,0x43,0x17,0xE4,0x0B,0x38,0x00,0x43,0x17,0xDC,0x4F,
+0x59,0x42,0x1B,0x38,0x21,0x1B,0x58,0x20,0x9E,0xE2,0x5E,0xE2,0x09,0x23,0xFF,0xA5,
+0x0C,0x81,0x04,0x50,0x60,0x20,0xE7,0xFF,0xFA,0xBC,0xC1,0x40,0x10,0x01,0xEA,0xEA,
+0x00,0xD9,0x0C,0x81,0x06,0x56,0xF7,0x02,0x22,0xE1,0x74,0xE4,0x00,0x00,0x8F,0xF3,
+0x9B,0x07,0x09,0x23,0x84,0x34,0x23,0x88,0x68,0x43,0x98,0x44,0xE4,0x00,0x00,0x0F,
+0x43,0x98,0xF4,0x15,0x5C,0x01,0x19,0x57,0x00,0x0B,0x9C,0x01,0xE4,0x00,0x00,0x21,
+0x0F,0x9A,0x02,0x4D,0x5C,0x82,0x4F,0x9C,0x42,0x19,0x57,0x00,0x1B,0x97,0x01,0x9F,
+0x21,0x9F,0x02,0x5F,0x39,0x04,0x9E,0xE2,0x9F,0x44,0xD7,0xB9,0xFE,0x2D,0xE7,0xFF,
+0xFF,0x45,0x50,0x60,0x80,0xE7,0xFF,0xEB,0xC6,0xEA,0xEA,0x00,0xD9,0xC6,0xF7,0xFF,
+0xFD,0xEE,0xEA,0x00,0xD9,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0xE7,0xFF,
+0xFC,0x41,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xF0,0x77,0x0B,0x90,0xC3,0x20,
+0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x0B,0xA2,0xFE,0xF7,0x07,0x90,0xFF,0x39,
+0x07,0x98,0x9B,0x60,0x98,0x81,0xE4,0x00,0x01,0x7D,0x0B,0x57,0x01,0xC3,0x4F,0xFF,
+0xE0,0x20,0x00,0x35,0x0B,0x57,0x03,0xC3,0x4F,0xFF,0xE4,0x20,0x00,0x49,0x0B,0x58,
+0x01,0x18,0x19,0x00,0x0F,0x57,0x01,0x0B,0x58,0x03,0x0F,0x57,0x03,0x13,0x59,0x00,
+0x23,0x41,0x22,0x0B,0x98,0x03,0x0B,0x57,0x03,0x43,0x5C,0xD5,0x5F,0x5A,0x06,0x4F,
+0xDA,0xFA,0x0B,0xB8,0x01,0x47,0x5E,0xD6,0x09,0x17,0x01,0x43,0x5A,0xF5,0x41,0x1D,
+0x45,0x5D,0x08,0x06,0x4F,0xC8,0xFA,0x45,0x1E,0x46,0x43,0xC8,0xF5,0x8F,0xDA,0x5F,
+0xCC,0x99,0x20,0x00,0x25,0x5F,0x46,0x51,0x20,0x01,0x11,0x18,0x99,0x00,0x0F,0xB7,
+0x01,0x0F,0x97,0x03,0xE4,0x00,0x00,0x71,0x0B,0x98,0x01,0x0B,0xD7,0x01,0x43,0xDC,
+0xF5,0x5F,0xDE,0x06,0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x0B,0x58,0x03,0x41,0x1E,0xED,
+0x0B,0xD7,0x03,0x43,0xDA,0xF5,0x5F,0xDE,0x06,0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x43,
+0xBD,0xF5,0xD7,0xA8,0x00,0x52,0x0F,0x97,0x01,0x0F,0x57,0x03,0x0B,0x57,0x01,0x9F,
+0x61,0x0F,0x58,0x01,0x5F,0x7B,0x00,0x0B,0x57,0x03,0x9F,0x21,0x0F,0x58,0x03,0x9E,
+0xE4,0x1F,0x18,0x30,0xD7,0x63,0xFA,0x36,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,
+0x3D,0xF9,0x1C,0x21,0xD8,0xCA,0xF7,0x3D,0xF8,0x0D,0x41,0x20,0x0D,0x61,0x1C,0x0D,
+0x81,0x18,0x0D,0xA1,0x14,0x0D,0xC1,0x10,0x0D,0xE1,0x0C,0x0E,0x01,0x08,0x0E,0x21,
+0x04,0x0D,0x21,0x24,0xC1,0x80,0x10,0x01,0xFD,0x8C,0x08,0x86,0x0A,0x2C,0x01,0xC6,
+0x31,0x7F,0xFF,0x0E,0x2C,0x01,0x13,0x38,0x00,0xC3,0x00,0x10,0x01,0xFB,0x38,0x00,
+0xC0,0x13,0x37,0x00,0xC2,0xE0,0x10,0x01,0xFB,0x37,0x07,0x09,0xC1,0xE0,0x10,0x01,
+0xC1,0xC0,0x10,0x01,0xC3,0x60,0x10,0x01,0xC3,0x40,0x10,0x01,0x5D,0xA3,0x00,0xFD,
+0xEF,0x09,0x0C,0xFD,0xCE,0x07,0x8C,0xFE,0x00,0x80,0x00,0xFD,0x5B,0x07,0x0A,0xFD,
+0x7A,0x0B,0x90,0xD1,0xA1,0x12,0x8E,0x0B,0x2B,0x16,0x0A,0xEB,0x18,0x46,0x11,0x85,
+0x0E,0xEB,0x17,0x0E,0x0C,0x01,0x0F,0x2B,0x19,0x13,0x0B,0x00,0xD3,0x01,0x1F,0x79,
+0x0B,0x6B,0x46,0x0B,0x0B,0x48,0x0F,0x6B,0x49,0x0F,0x0B,0x47,0xD7,0x17,0x1F,0x4C,
+0x0E,0xEB,0x47,0x0F,0x0B,0x17,0x0F,0x2B,0x49,0x0F,0x6B,0x19,0xE4,0x00,0x07,0xB3,
+0xC2,0xE0,0x10,0x01,0x5F,0x98,0x04,0xEA,0xF7,0x0B,0x21,0x5F,0x17,0x15,0x4A,0xFC,
+0xB8,0x0E,0xEB,0x13,0xCF,0x39,0x00,0x30,0x9A,0xE0,0x8F,0x2B,0x0B,0x19,0x18,0x27,
+0x1C,0x50,0xC2,0xE0,0x10,0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,0x23,0x5F,0x17,0x15,
+0x4A,0xF9,0xB8,0x0E,0xEB,0x15,0xCE,0xFB,0x00,0x30,0x8E,0xEB,0x0B,0x17,0x16,0x9A,
+0xE0,0x27,0x1C,0x50,0xC2,0xE0,0x10,0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,0x21,0x5F,
+0x17,0x15,0x4A,0xF9,0xB8,0x0E,0xEB,0x43,0xCF,0x7B,0x00,0x30,0x9A,0xE0,0x8F,0x6B,
+0x0B,0x1B,0x18,0x27,0x1C,0x50,0xC2,0xE0,0x10,0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,
+0x23,0x5F,0x17,0x15,0x4A,0xF9,0xB8,0x0E,0xEB,0x45,0xE4,0x00,0x00,0x63,0xC3,0x00,
+0x10,0x01,0x5F,0x77,0x04,0xEB,0x18,0x0B,0x21,0x5E,0xF8,0x15,0x4B,0x1B,0xC0,0x0F,
+0x0B,0x13,0x9A,0xE0,0x27,0x3C,0x50,0xC2,0xE0,0x10,0x01,0x5F,0x19,0x04,0xEA,0xF7,
+0x0B,0x23,0x5F,0x37,0x15,0x4A,0xF8,0xB8,0x0E,0xEB,0x15,0xE7,0xFF,0xFB,0x6E,0x12,
+0xEB,0x00,0x26,0xE4,0x7D,0x0B,0x2B,0x43,0x0B,0x0B,0x13,0x43,0x19,0xC5,0x0B,0x2B,
+0x45,0x0F,0x0B,0x1B,0x0B,0x0B,0x15,0x43,0x19,0xC5,0x0F,0x0B,0x1D,0xE4,0x00,0x00,
+0x15,0x0C,0x0B,0x1B,0x0C,0x0B,0x1D,0xC3,0x00,0x10,0x01,0xF3,0x18,0x00,0xC0,0x23,
+0x01,0x9E,0x53,0x00,0x52,0x0B,0x2B,0x13,0x1B,0x0A,0x00,0x4F,0x79,0x41,0x0B,0x0B,
+0x15,0x4F,0x7B,0x20,0x4F,0x58,0x41,0x1B,0x2A,0x02,0x57,0x5A,0x0F,0x1B,0x0A,0x03,
+0x47,0x5B,0xD5,0x1B,0x4A,0x01,0x26,0xE4,0xA1,0x0B,0x0B,0x1A,0x0A,0xEB,0x1C,0x4F,
+0x38,0x42,0x4F,0x57,0x42,0x5F,0x39,0x04,0x57,0x5A,0x0F,0x4F,0x39,0x20,0x1B,0x0A,
+0x05,0x47,0x39,0xD5,0x1A,0xEA,0x06,0x1B,0x2A,0x04,0xE4,0x00,0x00,0x1B,0x18,0x0A,
+0x04,0x18,0x0A,0x05,0x18,0x0A,0x06,0x88,0x6A,0x98,0x87,0xE7,0xFF,0xF6,0x50,0x18,
+0x6A,0x07,0xE4,0x00,0x01,0x8B,0x8B,0x0A,0x18,0x18,0x00,0xC3,0x20,0x10,0x01,0x9F,
+0x01,0xFF,0x39,0x07,0x8C,0xD7,0x19,0xFF,0x9E,0x53,0x00,0x62,0x1B,0x0A,0x00,0x0B,
+0x0B,0x13,0x4F,0x38,0x41,0x1B,0x0A,0x02,0x0B,0x0B,0x15,0x1B,0x2A,0x01,0x1B,0x0A,
+0x04,0x4F,0x38,0x41,0x57,0x17,0x01,0x4E,0xF7,0x20,0x53,0x18,0x20,0x52,0xF7,0x02,
+0x1B,0x0A,0x11,0x1A,0xEA,0x12,0x0A,0xEB,0x1A,0x4F,0x17,0x42,0x1A,0xEA,0x0E,0x1B,
+0x0A,0x0D,0x0A,0xEB,0x1C,0x4F,0x17,0x42,0x1B,0x2A,0x03,0x1B,0x0A,0x0F,0x1A,0xEA,
+0x10,0x88,0x6A,0x50,0x80,0x1F,0xE7,0xFF,0xF5,0x7A,0xC2,0xE0,0x10,0x01,0xC3,0x20,
+0x10,0x01,0xC3,0x80,0x10,0x01,0x18,0x6A,0x1F,0xFE,0xF7,0x07,0x2A,0xFF,0x39,0x09,
+0x48,0x9B,0x00,0xC3,0x60,0x10,0x01,0xFF,0x9C,0x0C,0x96,0xF3,0x5B,0x07,0x09,0x23,
+0x44,0x34,0x23,0x48,0x68,0x43,0x58,0x7C,0xE4,0x00,0x00,0x0F,0x43,0x58,0xE4,0x17,
+0xBA,0x01,0x1B,0xB7,0x00,0x0B,0x5A,0x01,0xE4,0x00,0x00,0x21,0x0F,0x59,0x02,0x4F,
+0xBA,0x82,0x4F,0x5A,0x42,0x1B,0xB7,0x00,0x1B,0x57,0x01,0x9F,0x02,0x9E,0xE2,0x9F,
+0x24,0x5F,0x07,0x49,0x23,0xFF,0x1D,0x0A,0xEC,0x00,0xD2,0xFF,0x0F,0x6C,0x9A,0xE1,
+0xE4,0x00,0x02,0xF5,0xD1,0xA0,0x05,0x66,0xFE,0xE0,0x7F,0xFF,0xC3,0x20,0x10,0x01,
+0xC3,0x40,0x10,0x01,0xEE,0xF9,0x07,0x91,0xF8,0x1A,0x07,0x98,0xFF,0x39,0x07,0x90,
+0xFF,0x5A,0x07,0x98,0x0E,0xF9,0x03,0x0E,0xF9,0x05,0x0E,0xF9,0x07,0x18,0x1A,0x01,
+0xF2,0xF8,0x00,0xC0,0x22,0xE0,0xB2,0x52,0xE0,0x52,0x1A,0xEA,0x00,0x9A,0xFF,0x88,
+0x6A,0x1A,0xEA,0x01,0x1A,0xEA,0x02,0x1A,0xEA,0x03,0x1A,0xEA,0x04,0x1A,0xEA,0x05,
+0x1A,0xEA,0x06,0x98,0x87,0xE7,0xFF,0xF3,0xFC,0x18,0x6A,0x07,0xE4,0x00,0x00,0x89,
+0x8A,0xEA,0x18,0x17,0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0x8C,0xD6,
+0xF8,0xFF,0x9E,0x52,0xE0,0x62,0x9B,0x1F,0x1A,0xEA,0x00,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x07,0x0B,0x1B,0x17,0x00,0xC3,0x20,0x10,0x01,0x9E,0xE1,0xFF,0x39,0x07,0x29,
+0xD6,0xF9,0xFF,0x9E,0x88,0x6A,0x50,0x80,0x1F,0xE7,0xFF,0xF3,0x74,0x18,0x6A,0x1F,
+0x0A,0xEC,0x01,0x0C,0x0E,0x00,0x46,0x10,0xBD,0x0E,0x0C,0x01,0xE4,0x00,0x02,0x77,
+0xD1,0xA2,0x06,0x8E,0xF2,0xF8,0x00,0xC0,0x22,0xE0,0xD2,0x52,0xE0,0x52,0xC3,0x00,
+0x10,0x01,0x1A,0xEA,0x00,0xEB,0x18,0x08,0x31,0x9A,0xFF,0x1B,0x0A,0x05,0x1A,0xEA,
+0x01,0x1A,0xEA,0x02,0x1A,0xEA,0x03,0x1A,0xEA,0x04,0x1A,0xEA,0x06,0x88,0x6A,0x98,
+0x87,0xE7,0xFF,0xF2,0xE4,0x18,0x6A,0x07,0xE4,0x00,0x01,0x15,0x8A,0xEA,0x18,0x17,
+0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0x8C,0xD6,0xF8,0xFF,0x9E,0x52,
+0xE0,0x62,0x1A,0xEA,0x00,0x0A,0xEB,0x13,0x4F,0x17,0x41,0x1A,0xEA,0x02,0x1B,0x0A,
+0x01,0x0A,0xEB,0x15,0x4F,0x17,0x41,0x1A,0xEA,0x04,0x1B,0x0A,0x03,0x12,0xEB,0x00,
+0x57,0x17,0x01,0x4E,0xF7,0x20,0x53,0x18,0x20,0x52,0xF7,0x02,0x1B,0x0A,0x11,0x1A,
+0xEA,0x12,0x0A,0xEB,0x1A,0x4F,0x17,0x42,0x1A,0xEA,0x0E,0x1B,0x0A,0x0D,0x0A,0xEB,
+0x1C,0x4F,0x17,0x42,0x1A,0xEA,0x10,0x1B,0x0A,0x0F,0x88,0x6A,0x50,0x80,0x1F,0xE7,
+0xFF,0xF2,0x08,0x9A,0xE0,0x18,0x6A,0x1F,0x43,0x17,0x7C,0x0B,0x38,0x00,0x43,0x17,
+0x54,0x4F,0x59,0x42,0x1B,0x38,0x21,0x1B,0x58,0x20,0x9E,0xE2,0x5E,0xE7,0x49,0x23,
+0xFF,0xA5,0x46,0x11,0x85,0x9A,0xE2,0x0E,0x0C,0x01,0x0E,0xEE,0x00,0xE4,0x00,0x00,
+0xD5,0x21,0xAD,0x9A,0x1E,0xE0,0xA7,0x1A,0xEA,0x00,0x9A,0xE6,0x1A,0xEA,0x02,0x52,
+0xE0,0x50,0x1A,0xEA,0x03,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x31,0x46,0x11,0x85,
+0x18,0x0A,0x01,0x0E,0x0C,0x01,0x1A,0xEA,0x04,0x88,0x6A,0x98,0x85,0xE7,0xFF,0xF1,
+0x4C,0x0D,0xAE,0x00,0x18,0x6A,0x05,0xE4,0x00,0x00,0x61,0x9B,0x00,0xD2,0xFF,0xE6,
+0x10,0xE7,0xFF,0xF9,0x5B,0x0A,0xEB,0x46,0x0B,0x0B,0x16,0x5E,0xF8,0x15,0x4B,0x21,
+0x01,0xCE,0xF9,0x00,0x30,0x8E,0xEB,0x4B,0x60,0x0A,0x0B,0x17,0x16,0x9A,0xE0,0xD3,
+0x1F,0xE0,0x8C,0xE7,0xFF,0xF8,0x3D,0x0E,0x21,0x06,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,
+0x0D,0xC1,0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,
+0x21,0x26,0x1C,0x21,0x28,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,0x81,0x20,
+0x5D,0x43,0x00,0x5D,0x84,0x00,0x42,0xEC,0x55,0x9E,0xE1,0x5E,0xF7,0x00,0x57,0x17,
+0x03,0x4E,0xF7,0x11,0x5F,0x00,0x09,0x0D,0x61,0x24,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,
+0x49,0xA1,0x01,0x0D,0x21,0x2C,0x8D,0xB7,0xC1,0xD8,0x00,0x21,0xE4,0x00,0x60,0xE2,
+0x99,0x60,0xFD,0xCE,0xBA,0xA7,0xE4,0x00,0x00,0xE3,0x88,0x61,0x50,0x80,0x22,0x50,
+0xA0,0x18,0xE7,0xFF,0xB9,0xDC,0x9A,0xE4,0x43,0x0E,0x54,0x13,0x58,0x00,0x1F,0x01,
+0x18,0x4F,0x3A,0x09,0x57,0x5A,0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,
+0x50,0x7B,0x47,0x5A,0xC4,0x5F,0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,
+0x02,0x1F,0x61,0x18,0x47,0x18,0xD5,0x8F,0x3B,0x1B,0x19,0xE8,0x9D,0x41,0x5D,0x4A,
+0x00,0xD5,0x4C,0x00,0xE1,0x06,0xE0,0x81,0xCC,0x6B,0x00,0x18,0x88,0x81,0x8C,0x77,
+0x50,0xA0,0x18,0x9D,0x61,0xE7,0xFF,0xBA,0x16,0xE4,0x00,0x00,0x1D,0x9E,0xE1,0xD2,
+0xE8,0xFD,0x4E,0xE7,0xFF,0xFF,0xC5,0x5E,0xEB,0x00,0xD5,0xB7,0xFC,0x85,0xE4,0x00,
+0x60,0x04,0x0D,0x21,0x2E,0x0D,0xC1,0x1A,0x0D,0xA1,0x1E,0x0D,0x81,0x22,0x0D,0x61,
+0x26,0x0D,0x41,0x2A,0x1C,0x21,0x30,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x03,
+0x2E,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x07,0xE6,0x85,0x29,0x1C,0x21,0xD0,
+0x0D,0x21,0x2C,0x0D,0x41,0x28,0x0D,0x61,0x24,0xD0,0x69,0x0C,0x95,0x4F,0x03,0x10,
+0xC2,0xF8,0x00,0x21,0xC1,0x78,0x00,0x21,0xFE,0xF7,0xBA,0x40,0xFD,0x6B,0xBA,0xA7,
+0x8E,0xF8,0x0E,0xF7,0x02,0x86,0xE9,0x1C,0x83,0x01,0xCC,0x63,0x00,0x1A,0xCC,0x84,
+0x00,0x1A,0x9C,0x9F,0xE7,0xFF,0xFD,0xC6,0xE4,0x00,0x02,0xC7,0x0C,0x61,0x04,0xE4,
+0x00,0x5E,0xFC,0x0C,0x61,0x06,0x99,0x40,0x9C,0x7E,0x5C,0x63,0x00,0xCC,0x63,0x00,
+0x1A,0x8D,0x63,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,0xFF,0xB7,0xE8,
+0x8B,0x2A,0x9A,0xE4,0x5F,0x23,0x39,0x20,0x00,0xDD,0x43,0x0B,0xCC,0x13,0x98,0x00,
+0x4F,0x7C,0x09,0x57,0x9C,0x01,0x5F,0x80,0x01,0x4B,0x50,0x7B,0x1F,0x01,0x20,0x8F,
+0x1B,0x17,0x18,0xE8,0x47,0x1A,0xC4,0x5F,0x57,0x02,0x20,0x00,0x25,0x4F,0x57,0x20,
+0x5F,0x5A,0x02,0x1F,0x81,0x20,0x47,0x5A,0xC5,0x8F,0x7C,0x1B,0x5B,0xE8,0x9F,0x21,
+0x9E,0xE1,0xD2,0xE8,0xFE,0x16,0x06,0xE0,0x81,0xCC,0x6A,0x00,0x06,0x1C,0x81,0x08,
+0x8C,0x77,0x50,0xA0,0x18,0xE7,0xFF,0xB8,0x16,0x9D,0x44,0x5D,0x43,0x89,0x23,0xFE,
+0x55,0xE4,0x00,0x01,0xAD,0xE4,0x00,0x5D,0xF0,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,
+0xA0,0x18,0xE7,0xFF,0xB6,0xFC,0xC3,0x78,0x00,0x21,0x9A,0xE4,0xFF,0x7B,0xBA,0xA4,
+0xD2,0xE7,0x01,0xC2,0x43,0x1B,0xBC,0x13,0x58,0xFC,0x1F,0x01,0x20,0x4F,0x3A,0x09,
+0x57,0x5A,0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,0x50,0x7B,0x47,0x5A,
+0xC4,0x5F,0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,0x02,0x1F,0x81,0x20,
+0x47,0x18,0xD5,0x8F,0x3C,0x1B,0x19,0xE8,0x9E,0xE1,0xD2,0xE8,0xFE,0x36,0xE4,0x00,
+0x00,0xD9,0xE4,0x00,0x5D,0x36,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,
+0xFF,0xB6,0x42,0x8B,0x0B,0xE4,0x00,0x00,0x9F,0x43,0x38,0xBC,0x13,0x79,0xFC,0x1F,
+0x21,0x20,0x4F,0x5B,0x09,0x57,0x7B,0x01,0x8F,0x3A,0x13,0x39,0xE8,0x5F,0x60,0x01,
+0x4B,0x70,0x7B,0x47,0x7B,0xCC,0x5F,0x37,0x02,0x5F,0x7B,0x02,0x20,0x00,0x25,0x4F,
+0x37,0x20,0x5F,0x39,0x02,0x1F,0x81,0x20,0x47,0x39,0xDD,0x8F,0x5C,0x1B,0x3A,0xE8,
+0x9E,0xE1,0xD2,0xE8,0xFE,0x3E,0xC2,0xF8,0x00,0x21,0x9F,0x04,0xFE,0xF7,0xBA,0xBF,
+0xD7,0x17,0x00,0x52,0x9A,0xE4,0xE7,0xFF,0xFF,0x67,0x04,0x60,0x81,0x1C,0x81,0x08,
+0x50,0xA0,0x18,0xE7,0xFF,0xB6,0x5A,0xE4,0x00,0x5C,0x72,0x0D,0x61,0x26,0x0D,0x41,
+0x2A,0x0D,0x21,0x2E,0x1C,0x21,0x30,0x85,0x29,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x0D,
+0x21,0x14,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x0D,0xA1,0x04,0x89,0x43,0xD0,0x67,0x06,
+0x3A,0xD0,0x67,0x00,0x65,0xD0,0x61,0x0B,0x1D,0xE4,0x00,0x00,0x19,0xD0,0x69,0x0A,
+0xDE,0xE4,0x00,0x02,0x19,0xC1,0xA0,0x10,0x01,0xCD,0x63,0x00,0x1A,0xFD,0xAD,0x07,
+0xE8,0x99,0x80,0x8D,0x6D,0x13,0x4B,0x01,0x13,0x2B,0x00,0x13,0x0B,0x03,0x12,0xEB,
+0x02,0x4C,0x9A,0xC0,0x4C,0xB8,0xC0,0x4F,0x5A,0x80,0x4F,0x18,0x80,0x8C,0x9A,0x8C,
+0xB8,0x8C,0x99,0x8C,0xB7,0x4F,0x39,0x40,0x4E,0xF7,0x40,0x88,0x6C,0x8C,0x99,0x8C,
+0xB7,0x9D,0x81,0xE4,0x00,0x5D,0xD8,0x5D,0x8C,0x00,0x9D,0x64,0xD1,0x86,0xFE,0x4E,
+0x98,0x66,0x98,0x80,0x98,0xA0,0xCD,0x4A,0x00,0x1A,0x8D,0x4D,0x10,0xCA,0x18,0xE4,
+0x00,0x5E,0x08,0x98,0x66,0x98,0x80,0x98,0xA1,0x10,0xCA,0x18,0xE4,0x00,0x5D,0xEE,
+0x98,0x66,0x98,0x81,0x98,0xA0,0x10,0xCA,0x19,0xE4,0x00,0x5D,0xD4,0x98,0x66,0x98,
+0x81,0x98,0xA1,0x10,0xCA,0x19,0xE4,0x00,0x5D,0xBA,0x98,0x66,0x98,0x82,0x98,0xA0,
+0x98,0xC0,0xE4,0x00,0x5D,0xA2,0x98,0x66,0x98,0x82,0x98,0xA1,0x98,0xC0,0xE4,0x00,
+0x5D,0x8A,0x98,0x66,0x98,0x83,0x98,0xA0,0x98,0xC0,0xE4,0x00,0x5D,0x72,0x98,0x66,
+0xE4,0x00,0x00,0x83,0xC1,0xA0,0x10,0x01,0x99,0x40,0xFD,0xAD,0x08,0x06,0x5D,0x8A,
+0x00,0x41,0x6A,0x6C,0x98,0x60,0x88,0x8C,0x98,0xA0,0x10,0xCB,0x00,0xE4,0x00,0x5D,
+0x2C,0x98,0x60,0x88,0x8C,0x98,0xA1,0x10,0xCB,0x00,0x9D,0x41,0xE4,0x00,0x5D,0x0E,
+0x21,0x4F,0x7A,0x98,0x60,0x98,0x83,0x98,0xA0,0x98,0xC0,0xE4,0x00,0x5C,0xF0,0x98,
+0x60,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,
+0x98,0x83,0x98,0xA1,0x98,0xC0,0x1C,0x21,0x18,0xE4,0x00,0x5C,0xB5,0xC3,0x00,0x10,
+0x01,0x0D,0xA1,0x06,0xFE,0xF8,0x08,0x02,0xF3,0x38,0x08,0x02,0x13,0x57,0x01,0x13,
+0x17,0x03,0x4C,0x9A,0xC0,0x12,0xF7,0x02,0x4C,0xB8,0xC0,0x4F,0x5A,0x80,0x4F,0x18,
+0x80,0x8C,0x9A,0x8C,0xB8,0x8C,0x99,0x8C,0xB7,0x4F,0x39,0x40,0x4E,0xF7,0x40,0x0D,
+0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x98,0x60,0x8C,0x99,0x8C,
+0xB7,0x1C,0x21,0x18,0xE4,0x00,0x5B,0xB7,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,
+0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0x1C,0x21,0xE0,0x0D,
+0xC1,0x08,0x0D,0x21,0x1C,0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,
+0x0C,0x0D,0xE1,0x04,0x89,0xC4,0xD0,0x66,0x00,0xB5,0xC2,0xF8,0x00,0x21,0xFE,0xF7,
+0xBA,0x68,0x4C,0x63,0x10,0x8C,0x77,0x0E,0xE3,0x02,0x86,0xE9,0x99,0xED,0xC9,0x80,
+0x3E,0x0C,0xE4,0x00,0x01,0xC9,0xD0,0x81,0x04,0x41,0x1E,0xE4,0xFE,0xD2,0xE1,0x04,
+0x89,0x5C,0x80,0xE1,0xCA,0xE0,0x3E,0x0C,0xC9,0x80,0x10,0x06,0x49,0xE1,0x6B,0x49,
+0x8C,0xB8,0x99,0xA2,0x99,0x41,0x99,0x60,0x48,0x60,0x1A,0xE4,0x00,0x01,0x87,0xD0,
+0x81,0x04,0x09,0x1E,0xE4,0xFE,0xD2,0xE1,0x04,0x51,0x5C,0x80,0xE1,0xCA,0xE0,0x3E,
+0x0C,0xC9,0x80,0x10,0x06,0x99,0xA0,0x49,0xE1,0x6B,0x49,0x8C,0xB8,0x89,0x4D,0x99,
+0x60,0x48,0x61,0x1B,0xE4,0x00,0x01,0x35,0x24,0x85,0xE9,0x5C,0x80,0xE1,0xCA,0xE0,
+0x3E,0x0C,0xC9,0x80,0x08,0x03,0x49,0xE1,0x6B,0x49,0x8C,0xB8,0xE4,0x00,0x00,0xD9,
+0x24,0x85,0xC1,0x5C,0x80,0xE1,0xCA,0xE0,0x3E,0x0C,0xC9,0x80,0x10,0x06,0x49,0xE1,
+0x6B,0x49,0x8C,0xB8,0xE4,0x00,0x00,0xC5,0x99,0xE1,0xE4,0x00,0x00,0x95,0x99,0xE7,
+0xC9,0x80,0x3E,0x0C,0x99,0xA2,0x99,0x41,0x99,0x60,0xE4,0x00,0x00,0x21,0x99,0xE7,
+0xC9,0x80,0x3E,0x0C,0x99,0xA2,0x99,0x41,0x99,0x63,0x98,0x60,0xE4,0x00,0x00,0x85,
+0x99,0xA0,0x99,0xE7,0xC9,0x80,0x3E,0x0C,0x89,0x4D,0x99,0x60,0xE4,0x00,0x00,0x21,
+0x99,0xA0,0x99,0xE7,0xC9,0x80,0x3E,0x0C,0x89,0x4D,0x99,0x63,0x98,0x61,0xE4,0x00,
+0x00,0x41,0x99,0xE7,0xC9,0x80,0x08,0x03,0x99,0xA0,0x89,0x4D,0xE4,0x00,0x00,0x1D,
+0x99,0xE7,0xC9,0x80,0x10,0x06,0x99,0xA2,0x99,0x41,0x99,0x60,0x98,0x63,0xE7,0xFF,
+0x7E,0x28,0x88,0x6A,0x88,0x8D,0xE4,0x00,0x73,0x4A,0x88,0x6A,0x88,0x8C,0xE4,0x00,
+0x5A,0x6A,0x21,0xA0,0x3E,0x88,0x6A,0x88,0x8C,0xE4,0x00,0x6F,0x24,0xE4,0x00,0x00,
+0x1F,0x21,0xA0,0x2C,0x88,0x6A,0x88,0x8C,0xE4,0x00,0x70,0x80,0x88,0x6A,0x05,0x80,
+0xFF,0xC9,0x8C,0xFF,0xFF,0x88,0x8C,0xE4,0x00,0x5C,0xF0,0x88,0x8C,0x88,0x6A,0xE4,
+0x00,0x5A,0x78,0x98,0x62,0xE4,0x00,0x57,0xF8,0xC2,0xE0,0x10,0x01,0x98,0x60,0xEC,
+0x17,0x07,0xDC,0xC1,0xA0,0x10,0x01,0xEC,0x0D,0x07,0xE0,0xE4,0x00,0x64,0x34,0x98,
+0x60,0xE4,0x00,0x5C,0x34,0x98,0x60,0x88,0x8C,0xE4,0x00,0x5B,0x24,0x88,0x6F,0xE4,
+0x00,0x57,0x50,0x98,0x60,0xE4,0x00,0x5D,0x74,0x21,0x64,0x5E,0xED,0x6D,0x07,0xE0,
+0x98,0x61,0xE4,0x00,0x63,0xE6,0x98,0x63,0xE4,0x00,0x5B,0xE6,0xE4,0x00,0x00,0x2B,
+0x21,0x6C,0x46,0x98,0x61,0x88,0x8C,0xE4,0x00,0x5A,0xC8,0x98,0x61,0xE4,0x00,0x5D,
+0x24,0xE4,0x00,0x61,0x08,0x1C,0x63,0x13,0x5C,0x83,0x00,0x88,0x6A,0x5C,0x82,0x93,
+0x20,0x00,0x1B,0x50,0x80,0x14,0xE4,0x00,0x5E,0x26,0x88,0x6A,0x98,0x8C,0xE4,0x00,
+0x5D,0x48,0xC2,0xE0,0x10,0x01,0x88,0x6E,0xED,0xD7,0x07,0xE4,0xE7,0xFF,0xF5,0xA2,
+0x88,0x6E,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,0x0D,0x61,
+0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0xE7,0xFF,0xF8,0xBF,0xC2,0xE0,
+0x10,0x01,0x9C,0x38,0xEC,0x77,0x03,0x2C,0x0D,0x41,0x00,0x0D,0x21,0x04,0x89,0x43,
+0xE7,0xFF,0xFB,0xB8,0x25,0x44,0xD3,0x99,0x40,0x88,0x6A,0x98,0x80,0x9D,0x41,0xE4,
+0x00,0x63,0x26,0x5D,0x4A,0x00,0xD1,0x44,0xFF,0x9E,0xE7,0xFF,0xE1,0xEC,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x00,0xE6,0x0C,0x77,0x0B,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x06,
+0x87,0x53,0x18,0x20,0xEF,0x17,0x06,0x87,0x0D,0x41,0x02,0x0D,0x21,0x06,0x9C,0x28,
+0x85,0x29,0x1C,0x21,0xD8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x20,0x0D,0xC1,0x10,0xEE,
+0xF7,0x00,0xE2,0x0D,0x21,0x24,0x0D,0x61,0x1C,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x0D,
+0xE1,0x0C,0x0E,0x01,0x08,0x0E,0x21,0x04,0x0E,0x41,0x00,0x5E,0xE0,0x41,0x89,0x43,
+0x49,0xC1,0x01,0x24,0x64,0x59,0x1E,0xE3,0xFE,0xD2,0xE1,0x04,0x11,0xD0,0x67,0x04,
+0x2A,0xD0,0x69,0x04,0x3A,0xE4,0x00,0x00,0xED,0x51,0x60,0x1A,0x9A,0xE0,0x20,0x60,
+0x5C,0x9A,0xE0,0xD1,0x45,0x00,0x92,0x9A,0xE1,0x21,0x44,0x30,0x21,0x4C,0x24,0xD1,
+0x46,0x00,0x32,0x9A,0xE0,0xCE,0xF7,0x00,0x34,0xC1,0xE0,0x10,0x01,0xC2,0x00,0x10,
+0x01,0xFD,0xEF,0x08,0xD8,0xFE,0x10,0x07,0xA8,0x99,0x80,0xC2,0x40,0x10,0x01,0x8D,
+0xF7,0x8E,0x17,0x89,0xAC,0x1E,0x2A,0xFE,0xFE,0x52,0x08,0x4A,0x88,0x6D,0x98,0x81,
+0x88,0xAE,0xE4,0x00,0x6B,0x76,0x42,0xEF,0x64,0x25,0x44,0x41,0x42,0xF0,0x64,0x26,
+0x24,0x29,0xD1,0x47,0x00,0x56,0x42,0xEC,0x94,0x0C,0x77,0x01,0x9D,0xA1,0x9D,0x82,
+0x5D,0xAD,0x00,0xD5,0x6D,0xFE,0xCD,0xE4,0x00,0x00,0x41,0x51,0x60,0x1A,0xE4,0x00,
+0x00,0x21,0x99,0x63,0xE7,0xFF,0xFF,0x3F,0x99,0x64,0xE7,0xFF,0xFF,0x33,0x9A,0xE0,
+0x21,0x4A,0x06,0xE7,0xFF,0xFF,0x25,0x0E,0x41,0x02,0x0E,0x21,0x06,0x0E,0x01,0x0A,
+0x0D,0xE1,0x0E,0x0D,0xC1,0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,
+0x41,0x22,0x0D,0x21,0x26,0x1C,0x21,0x28,0x85,0x29,0x1C,0x21,0xB8,0x0D,0x41,0x40,
+0x0D,0x21,0x44,0x0D,0x61,0x3C,0x0D,0x81,0x38,0x89,0x44,0xD0,0x67,0x04,0xAD,0xC2,
+0xF8,0x00,0x21,0xFE,0xF7,0xBA,0x84,0x4C,0x63,0x10,0xC1,0x60,0x10,0x01,0x8C,0x77,
+0xC1,0x80,0x10,0x01,0x0E,0xE3,0x02,0xFD,0x6B,0x0A,0x9C,0xFD,0x8C,0x08,0xD8,0x86,
+0xE9,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x06,0x87,0xC7,0x18,0xFF,0xDF,0xEF,0x17,0x06,
+0x87,0xD0,0x88,0x02,0xFD,0x9A,0xE1,0x4E,0xF7,0x24,0xC6,0xF7,0x01,0x83,0x22,0xE1,
+0x48,0xE4,0x00,0x00,0x93,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x06,0x87,0xC7,0x18,0xFF,
+0xDF,0xEF,0x17,0x06,0x87,0xD1,0x47,0x01,0xDD,0x9A,0xE1,0x4E,0xF7,0x54,0x57,0x17,
+0x8C,0x23,0x00,0xA6,0x56,0xF7,0x03,0x22,0xE0,0xA4,0x88,0x6A,0xE7,0xFF,0xFD,0x0C,
+0xCC,0x8A,0x00,0x34,0xCC,0xAA,0x00,0x68,0x1C,0x61,0x04,0x8C,0x8C,0x8C,0xAB,0x50,
+0xC0,0x1A,0xE4,0x00,0x18,0x54,0xE4,0x00,0x00,0x15,0x88,0x6A,0xE7,0xFF,0xFC,0xCC,
+0x0D,0x81,0x3A,0x0D,0x61,0x3E,0x0D,0x41,0x42,0x0D,0x21,0x46,0x1C,0x21,0x48,0x85,
+0x29,0xC2,0xE0,0x10,0x01,0x98,0x60,0xFE,0xF7,0x07,0xA8,0xCB,0x40,0xFF,0xFE,0x0B,
+0x37,0x00,0x4F,0x19,0xFA,0x47,0x38,0xCE,0x43,0x19,0xC5,0x8C,0x78,0x5F,0x03,0x04,
+0xCB,0x20,0xFF,0xFE,0x9E,0xE2,0x5C,0x79,0x17,0x48,0x78,0xD0,0xC3,0x00,0x10,0x01,
+0xFF,0x18,0x07,0xDC,0xD6,0xF8,0xFE,0xDE,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x17,
+0x07,0x9C,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x07,0xA0,0xC2,0xE0,0x10,0x01,0x9B,0x04,
+0xEC,0x17,0x07,0xA4,0x98,0x64,0xC2,0xE0,0x10,0x01,0x98,0x80,0xEF,0x17,0x03,0x2C,
+0xE7,0xFF,0xF7,0x19,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0x9E,0xE4,
+0x00,0x00,0x41,0x20,0x68,0x3E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0xA2,0xE4,0x00,
+0x00,0x23,0x9A,0xE0,0x20,0x6C,0x2E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0xA6,0x88,
+0x77,0x85,0x29,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x07,0x9C,0xE4,0x00,
+0x00,0x3D,0x20,0x68,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x07,0xA0,0xE4,0x00,0x00,
+0x1F,0x20,0x6C,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x07,0xA4,0x85,0x29,0x1C,0x21,
+0xE0,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,
+0x0C,0x0D,0xC1,0x08,0x0D,0xE1,0x04,0xEE,0xF7,0x08,0x22,0x0D,0x21,0x1C,0xC1,0x80,
+0x10,0x01,0xC1,0x60,0x10,0x01,0x5D,0xE3,0x06,0x5D,0xC4,0x06,0x89,0x45,0x89,0xA6,
+0x56,0xF7,0x01,0xFD,0x8C,0x08,0x44,0xFD,0x6B,0x08,0x14,0x22,0xE0,0xE0,0x98,0xA2,
+0x25,0x44,0x43,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBB,0x94,0x8E,0xEA,0x10,0xB7,0x00,
+0x0E,0xEB,0x02,0x5E,0xE0,0x29,0x88,0x6F,0x88,0x8E,0x48,0xA5,0x12,0xE7,0xFF,0x87,
+0x58,0x5C,0x63,0x00,0x20,0x60,0x3C,0x0C,0x0C,0x00,0x0C,0x0D,0x00,0x98,0x61,0xE4,
+0x00,0x00,0xED,0x21,0x45,0x38,0x21,0x40,0x28,0x21,0x4D,0x8E,0xE4,0x00,0x00,0xA7,
+0x0E,0xEB,0x02,0x22,0xE4,0x36,0xE7,0xFF,0x8A,0x5A,0x98,0x62,0xE4,0x00,0x00,0x5D,
+0x0E,0xEC,0x02,0x22,0xE4,0x86,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x08,0x36,0xC2,0xE0,
+0x10,0x01,0xEC,0x97,0x08,0x22,0xE7,0xFF,0x90,0x76,0x88,0x6D,0xE7,0xFF,0x90,0x8E,
+0xE4,0x00,0x00,0x15,0xE7,0xFF,0x89,0xFE,0x98,0x60,0x0C,0x0B,0x00,0xE4,0x00,0x00,
+0x4B,0x88,0x6F,0x88,0x8E,0xE7,0xFF,0x8A,0x00,0x98,0x60,0xE4,0x00,0x00,0x2F,0xE7,
+0xFF,0x89,0xC8,0x9A,0xE1,0x0E,0xEB,0x00,0xE4,0x00,0x00,0x11,0xE7,0xFF,0x89,0xAE,
+0x98,0x62,0x0D,0x4C,0x00,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,
+0x12,0x0D,0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0xC3,
+0x80,0x10,0x01,0xC3,0x60,0x10,0x01,0xC3,0x40,0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,
+0x00,0x10,0x01,0xFF,0x9C,0x08,0x28,0xFF,0x7B,0x08,0x78,0xFF,0x5A,0x08,0x19,0xFF,
+0x39,0x0B,0x70,0xFF,0x18,0x08,0x68,0x20,0x69,0x7A,0x0A,0xFC,0x04,0x0B,0xD9,0x09,
+0x43,0xD7,0xF5,0x5F,0xDE,0x06,0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x43,0xBE,0xED,0x5F,
+0xAC,0x99,0x20,0x00,0x7D,0x0B,0xBC,0x07,0x0B,0x99,0x0B,0x43,0xBD,0xE5,0x5F,0xBD,
+0x06,0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,0x9D,0xE5,0xC3,0x80,0x10,0xE8,0x20,0x05,
+0x19,0x0E,0xF8,0x01,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x2F,0x0B,0x99,0x0B,0x0E,
+0xF8,0x03,0x0B,0x39,0x0F,0x12,0xFA,0x00,0x0F,0x9B,0x01,0x0F,0x3B,0x03,0x52,0xF7,
+0x02,0xE4,0x00,0x01,0x57,0xC3,0xA0,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0xBD,0x08,
+0x11,0xFE,0xF7,0x0B,0x90,0x20,0x6D,0x92,0x0B,0x79,0x01,0x0B,0xDC,0x01,0x43,0xDE,
+0xDD,0x5F,0xDE,0x06,0x4F,0x7E,0xFA,0x47,0xDB,0xF6,0x43,0x7E,0xDD,0x5F,0x6C,0x99,
+0x20,0x00,0x7D,0x0B,0x39,0x03,0x0B,0x7C,0x03,0x43,0x7B,0xCD,0x5F,0x7B,0x06,0x4F,
+0x3B,0xFA,0x47,0x79,0xDE,0x43,0x3B,0xCD,0xC3,0x20,0x10,0xE8,0x20,0x03,0x61,0x0B,
+0x37,0x17,0x0F,0x38,0x01,0x0B,0x37,0x19,0x0F,0x38,0x03,0x0B,0x37,0x47,0x0A,0xF7,
+0x49,0x0E,0xF8,0x07,0x12,0xFA,0x00,0x52,0xF7,0x01,0x0F,0x38,0x05,0x1A,0xFA,0x00,
+0x9A,0xE2,0x1A,0xFD,0x00,0xE4,0x00,0x01,0x5F,0xD0,0x64,0x01,0xD6,0x0B,0x3B,0x00,
+0x0B,0x7B,0x02,0x43,0x79,0xDD,0x9F,0x6E,0x5F,0x63,0x9B,0x20,0x00,0x2F,0xC3,0x20,
+0x10,0x01,0xEB,0x39,0x08,0x6B,0x0B,0x18,0x01,0x0F,0x17,0x47,0x9B,0x02,0x0F,0x37,
+0x49,0x1B,0x17,0x00,0x12,0xFA,0x00,0x9B,0x1D,0x46,0xF7,0xC4,0x1A,0xFA,0x00,0xE4,
+0x00,0x00,0xEB,0xD0,0x65,0x03,0x8E,0x13,0x7D,0x00,0x23,0x68,0xFE,0x0B,0x98,0x00,
+0x0B,0x59,0x00,0x8F,0x5C,0x43,0x5A,0xD8,0x0B,0x98,0x02,0x0F,0x57,0x17,0x0B,0x59,
+0x02,0x8F,0x5C,0x43,0x5A,0xD8,0x0B,0x98,0x04,0x0F,0x57,0x19,0x0B,0x59,0x08,0x8F,
+0x5C,0x43,0x5A,0xD8,0x0F,0x57,0x47,0x0B,0x58,0x06,0x0B,0x19,0x0A,0x8F,0x1A,0x43,
+0x78,0xD8,0x0F,0x77,0x49,0xE4,0x00,0x00,0x55,0x23,0x64,0x9A,0x0B,0x38,0x01,0x0F,
+0x37,0x17,0x0B,0x38,0x03,0x0F,0x37,0x19,0x0B,0x38,0x05,0x0B,0x18,0x07,0x0F,0x37,
+0x47,0x0F,0x17,0x49,0x9B,0x3E,0x13,0x1A,0x00,0x47,0x18,0xCC,0x1B,0x1A,0x00,0x9B,
+0x02,0x1B,0x17,0x00,0x85,0x29,0xC3,0x00,0x10,0x01,0xFF,0x18,0x08,0x28,0xFE,0xE0,
+0x7F,0xFF,0x0E,0xF8,0x01,0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0x9B,0x01,
+0xC3,0x20,0x10,0x01,0xFF,0x39,0x03,0x6C,0x1B,0x19,0x01,0xC3,0x00,0x10,0x01,0xFF,
+0x18,0x08,0x94,0x0E,0xF8,0x01,0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0xC3,
+0x00,0x10,0x01,0xF8,0x18,0x08,0x84,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,0x70,0x0E,
+0xF8,0x01,0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0x0E,0xF8,0x09,0x0E,0xF8,
+0x0B,0x0E,0xF8,0x0D,0x0E,0xF8,0x0F,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xA1,0xC2,
+0xE0,0x10,0x01,0x18,0x19,0x00,0xF3,0x17,0x08,0x19,0x9B,0x3C,0x47,0x18,0xCC,0xFB,
+0x17,0x08,0x19,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x11,0x85,0x29,0xC3,0x00,0x10,
+0x01,0xC3,0x40,0x10,0x01,0x5C,0x63,0x00,0xFF,0x18,0x09,0x0C,0x9A,0xE0,0xFF,0x5A,
+0x09,0xBC,0xE4,0x00,0x00,0x31,0x4F,0x37,0x10,0x0B,0x98,0x00,0x0B,0x78,0x02,0x8F,
+0x3A,0x8F,0x7C,0x9E,0xE1,0x0F,0x79,0x00,0x9F,0x04,0x5F,0x37,0x00,0xD4,0x79,0xFF,
+0x4D,0x85,0x29,0x1C,0x21,0xE0,0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0xC1,0x08,0x0D,
+0x21,0x1C,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x18,0x01,0x07,0xC1,0x40,0x10,0x01,0xC1,
+0x60,0x10,0x01,0x5D,0xC3,0x00,0xFD,0x4A,0x08,0x13,0xFD,0x6B,0x08,0x12,0x21,0xC8,
+0x36,0x18,0x0A,0x00,0x18,0x0B,0x00,0xE4,0x00,0x00,0x15,0x21,0xCC,0x1A,0x18,0x0A,
+0x00,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x1A,0x10,0x77,0x01,0x12,0xF7,0x04,0xC1,
+0xA0,0x10,0x01,0x40,0x63,0xBB,0xC1,0x80,0x10,0x01,0xE7,0xFF,0xFE,0xE6,0xFD,0xAD,
+0x08,0x18,0xFD,0x8C,0x0B,0x90,0xD1,0xC1,0x04,0x2E,0x12,0xEA,0x00,0x22,0xE1,0xFA,
+0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x09,0xBC,0x0F,0x17,0x02,0xC3,0x00,0x29,0xA8,0x20,
+0x00,0x39,0x13,0x01,0x07,0x9F,0x01,0x5F,0x18,0x00,0x1B,0x01,0x07,0xC3,0x00,0x10,
+0x01,0x9E,0xE4,0xFF,0x18,0x09,0xF0,0xD6,0xF8,0xFF,0x0E,0x12,0xE1,0x07,0xD2,0xE4,
+0x01,0x49,0xE7,0xFF,0xE7,0xAE,0x20,0x68,0x84,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,
+0x3C,0xD2,0xE9,0x00,0xB5,0x12,0xEC,0x00,0x26,0xE4,0x3D,0x12,0xEB,0x00,0x9E,0xE1,
+0x1A,0xEB,0x00,0xE4,0x00,0x00,0x0F,0x18,0x0B,0x00,0x12,0xEB,0x00,0x26,0xE5,0x01,
+0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0x2A,0x18,0x0D,0x00,0xE4,0x00,
+0x00,0x59,0x9A,0xE1,0x1A,0xEA,0x00,0xE4,0x00,0x00,0x47,0x12,0xEA,0x00,0x22,0xE4,
+0x7E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0x2A,0x18,0x0D,0x00,0xE4,
+0x00,0x00,0x1D,0xE7,0xFF,0xE6,0xEC,0x20,0x68,0x18,0x18,0x0C,0x00,0x12,0xED,0x00,
+0x22,0xE0,0x2C,0x9E,0xFF,0x18,0x0C,0x00,0x1A,0xED,0x00,0x0D,0xC1,0x0A,0x0D,0xA1,
+0x0E,0x0D,0x81,0x12,0x0D,0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,
+0x85,0x29,0x98,0x62,0xE7,0xFF,0xFD,0x9F,0xC3,0x00,0x10,0x01,0x5C,0x84,0x00,0xFF,
+0x18,0x09,0x0C,0x20,0xA0,0x6C,0xE4,0x00,0x00,0x4B,0x4F,0x37,0x08,0x9E,0xE1,0x43,
+0x59,0xC4,0x8F,0x23,0x0B,0x5A,0x00,0x0F,0x59,0x01,0xE4,0x00,0x00,0x0D,0x9A,0xE0,
+0x5F,0x37,0x00,0xD4,0x99,0xFF,0x3D,0xE4,0x00,0x00,0x7B,0x20,0xA4,0xE6,0xE4,0x00,
+0x00,0x31,0x4F,0x37,0x08,0x9E,0xE1,0x43,0x43,0xCC,0x8F,0x38,0x0B,0x5A,0x00,0x0F,
+0x59,0x01,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0x5F,0x37,0x00,0xD4,0x99,0xFF,0x3D,0xC2,
+0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x1A,0x10,0x77,0x01,0x12,0xF7,0x04,0x40,0x63,0xBB,
+0xE7,0xFF,0xFC,0x5B,0x85,0x29,0x9C,0x38,0x98,0x63,0x0D,0x21,0x04,0xE7,0xFF,0x6C,
+0xAA,0x0D,0x21,0x06,0x9C,0x28,0xE4,0x00,0x72,0xAD,0x9A,0xED,0x1C,0x21,0xE8,0x0D,
+0x41,0x10,0x0D,0x61,0x0C,0xC1,0x60,0x10,0x01,0xFD,0x4B,0x0B,0x1A,0x1A,0xEA,0x04,
+0x9A,0xE1,0x1A,0xEA,0x01,0xFE,0xE0,0x07,0xFF,0x0E,0xEA,0x07,0x0E,0xEA,0x09,0xC2,
+0xE0,0x10,0x01,0x9B,0x02,0xFB,0x17,0x08,0x72,0x52,0xE0,0xAA,0x0D,0x21,0x14,0x0E,
+0xEA,0x0B,0x50,0x60,0x19,0x98,0x80,0xE7,0xFF,0x2C,0x66,0x52,0xE0,0x1D,0xFA,0xEB,
+0x0B,0x1A,0x9A,0xE4,0x1A,0xEA,0x0C,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x00,0xD5,0xC2,
+0xE0,0x10,0x01,0xEC,0x17,0x08,0x60,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x8C,0xC2,
+0xE0,0x10,0x01,0xEC,0x17,0x08,0x87,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x54,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x5C,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x8A,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x83,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x48,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x9C,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x76,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x67,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x65,0xC2,
+0xE0,0x10,0x01,0xEC,0x17,0x08,0x58,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x31,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x77,0xC2,0xE0,0x10,0x01,0x9B,0x03,0xFB,0x17,0x08,
+0x66,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x07,0x8C,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,
+0x84,0xC2,0xE0,0x10,0x01,0xFF,0x00,0x01,0xF4,0xEF,0x17,0x06,0x85,0xC2,0xE0,0x10,
+0x01,0x50,0x60,0x14,0xF8,0x17,0x08,0x9D,0x50,0x80,0x50,0xE7,0xFF,0x7B,0xB8,0x52,
+0xE0,0x64,0x50,0x80,0x35,0x0E,0xE1,0x01,0x50,0xA0,0x59,0xFC,0xC0,0x07,0xFF,0xFC,
+0xE0,0x07,0xFF,0x99,0x00,0xC0,0x60,0x10,0x01,0xFC,0x63,0x01,0x88,0xE7,0xFF,0x98,
+0xE2,0xC0,0x60,0x10,0x01,0x98,0x80,0xFC,0x63,0x09,0xBC,0x50,0xA0,0x3C,0xE7,0xFF,
+0x9B,0xE4,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x90,0x18,0x17,0x04,0x18,0x17,0x05,
+0x18,0x17,0x06,0x18,0x17,0x34,0x18,0x17,0x35,0x18,0x17,0x36,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x50,0xC2,0xE0,0x10,0x01,0xF3,0x37,0x00,0xC0,0xC2,0xF4,0x00,0x01,
+0xCB,0x17,0x3D,0xF9,0xCA,0xF7,0x3D,0xF8,0x1B,0x38,0x00,0xC3,0x00,0x10,0x01,0xF3,
+0x18,0x07,0x09,0x1B,0x17,0x00,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x3F,0x53,0x18,
+0x04,0xEF,0x17,0x08,0x3F,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x00,0x01,0xFF,0x18,0x1D,
+0x58,0xEF,0x17,0x03,0xE4,0xC2,0xE0,0x10,0x01,0x53,0x00,0xDF,0xEF,0x17,0x08,0x93,
+0xC2,0xE0,0x10,0x01,0x53,0x00,0xCA,0xEF,0x17,0x08,0x25,0xC2,0xE0,0x10,0x01,0xC3,
+0x00,0x00,0x01,0xFF,0x18,0x1B,0xCF,0xEF,0x17,0x03,0xF8,0xC2,0xE0,0x10,0x01,0xC3,
+0x00,0x00,0x01,0xFF,0x18,0x19,0x89,0xEF,0x17,0x04,0x18,0xC2,0xE0,0x10,0x01,0xC3,
+0x00,0x00,0x01,0xFF,0x18,0x1A,0x62,0xEF,0x17,0x04,0x14,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x0B,0x40,0xFE,0xF7,0x0B,0x40,0xC3,0x60,0x10,0x01,0x18,0x17,0x01,0x18,0x17,
+0x02,0x18,0x17,0x03,0x0C,0x17,0x05,0x0C,0x17,0x07,0x0C,0x17,0x0B,0x0C,0x17,0x09,
+0xC3,0x40,0x10,0x01,0xC3,0x20,0x10,0x01,0x9A,0xE0,0xFF,0x7B,0x09,0x0C,0xFF,0x5A,
+0x0C,0x96,0xFF,0x39,0x09,0x48,0x43,0x17,0xDC,0x0C,0x18,0x01,0x43,0x17,0xD4,0x0C,
+0x18,0x01,0x4F,0x17,0x08,0x8F,0x19,0x0C,0x18,0x00,0x9E,0xE2,0x5E,0xE7,0x49,0x23,
+0xFF,0x9D,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,
+0xE4,0x00,0x6A,0xF1,0x1C,0x21,0xE8,0x0D,0x21,0x14,0xE7,0xFF,0xCD,0x74,0xE7,0xFF,
+0xA4,0x36,0xE7,0xFF,0xCC,0x96,0xE7,0xFF,0xF0,0x08,0x98,0x60,0x98,0x81,0xE7,0xFF,
+0x66,0x0C,0x98,0x81,0x98,0x60,0x88,0xA4,0xE7,0xFF,0x66,0x12,0x98,0x81,0x98,0x60,
+0x88,0xA4,0xE7,0xFF,0x66,0x28,0x98,0x80,0x98,0x61,0x88,0xA4,0xE7,0xFF,0x66,0x14,
+0x98,0xA0,0x98,0x62,0x98,0x81,0xE7,0xFF,0x66,0x00,0x98,0x62,0x98,0x80,0xE7,0xFF,
+0x66,0x76,0x98,0x60,0x50,0x80,0x66,0xE7,0xFF,0x66,0x7E,0x98,0x61,0x50,0x80,0x66,
+0xE7,0xFF,0x66,0x6C,0x98,0x62,0x50,0x80,0xF3,0xE7,0xFF,0x66,0x5A,0x98,0x60,0xFC,
+0x80,0xA0,0x00,0xE7,0xFF,0x66,0xA2,0x98,0x61,0xFC,0x80,0xA0,0x00,0xE7,0xFF,0x66,
+0x8E,0x98,0x62,0xFC,0x80,0xA0,0x00,0xE7,0xFF,0x66,0x7A,0xFC,0x80,0x01,0x26,0x98,
+0x62,0xE7,0xFF,0x66,0xC2,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x96,0x60,0xE7,0xFF,0xFA,
+0x3A,0x98,0x61,0xE7,0xFF,0x45,0xCA,0xE7,0xFF,0x31,0xFE,0x50,0x60,0x1B,0xE7,0xFF,
+0x6A,0xB0,0x9A,0xEE,0x0E,0xE1,0x00,0x52,0xE0,0x14,0x0E,0xE1,0x04,0xCA,0xE0,0x07,
+0xD0,0x98,0xC8,0x0E,0xE1,0x08,0x98,0xAE,0x88,0xE6,0x99,0x0A,0x98,0x6A,0x98,0x8C,
+0xE7,0xFF,0x26,0x0E,0x98,0x81,0x98,0x60,0xE7,0xFF,0xCB,0xB0,0x50,0x60,0x10,0xE7,
+0xFF,0xCB,0xE2,0xE4,0x00,0x3F,0x22,0xE7,0xFF,0xF9,0x7E,0x98,0x80,0x98,0x60,0xE7,
+0xFF,0x23,0xD0,0xE7,0xFF,0xB7,0x36,0xE7,0xFF,0xB6,0x2C,0xC2,0xE0,0x10,0x01,0xF0,
+0x77,0x03,0x6E,0xE7,0xFF,0xCB,0x7A,0x9B,0x00,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0D,0xC3,0x17,0x00,0x0F,0x53,0x18,0x04,0xC3,0x17,0x00,0x0D,0xC3,0x17,0x00,0x0F,
+0x53,0x18,0x08,0xC3,0x17,0x00,0x0D,0xC2,0xE0,0x01,0x1F,0x52,0xF7,0x06,0xC2,0xE0,
+0x01,0x1D,0xFC,0x60,0x01,0x40,0xE7,0xFF,0xCB,0x24,0x50,0x60,0x20,0xE7,0xFF,0xCB,
+0x2E,0x98,0x61,0x50,0x80,0x13,0x50,0xA0,0x37,0x98,0xC8,0xFC,0xE0,0x01,0x0D,0xE7,
+0xFF,0xAA,0x6A,0xC3,0x00,0x00,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x46,0xAE,0x0D,
+0x21,0x16,0xEF,0x17,0x03,0xD0,0x1C,0x21,0x18,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEF,
+0x17,0x00,0xE2,0x23,0x05,0x08,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0xEC,0xC3,0x00,0x10,
+0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x08,0x4A,0xFE,0xF7,0x08,0x7C,0x0B,0x38,0x01,
+0xC3,0x60,0x10,0x01,0x0F,0x37,0x01,0xC3,0x40,0x10,0x01,0x0B,0x38,0x03,0xFF,0x7B,
+0x0A,0x8C,0x0F,0x37,0x03,0x0B,0x18,0x05,0xFF,0x5A,0x0B,0x80,0x0F,0x17,0x05,0x9A,
+0xE0,0xE4,0x00,0x00,0x5D,0xC3,0x60,0x10,0x01,0xC3,0x40,0x10,0x01,0x9A,0xE0,0xFF,
+0x7B,0x08,0xA4,0xFF,0x5A,0x08,0xD8,0x43,0x17,0xDC,0x43,0x37,0xD4,0x0B,0x39,0x01,
+0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xBD,0xE7,0xFF,0xFF,0x45,0x43,
+0x17,0xDC,0x43,0x37,0xD4,0x0B,0x39,0x01,0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE2,0x09,
+0x23,0xFF,0xBD,0x85,0x29,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,0x01,0x9A,0xE0,0xFF,
+0x18,0x0C,0x96,0xFF,0x7B,0x08,0xA4,0x43,0x37,0xC4,0x43,0x57,0xDC,0x0B,0x5A,0x01,
+0x0F,0x59,0x01,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xBD,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x08,0x7C,0x0B,0x37,0x01,0x0F,0x38,0x35,0x0B,0x37,0x03,0x0A,0xF7,0x05,0x0F,
+0x38,0x37,0x0E,0xF8,0x39,0x85,0x29,0xE4,0x00,0x68,0xED,0xC2,0xE0,0x10,0x01,0xFF,
+0x20,0xDF,0x9F,0xEB,0x17,0x08,0x87,0x47,0x18,0xCC,0x9B,0x3E,0xEF,0x17,0x08,0x87,
+0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x71,0x47,0x18,0xCC,0xEF,0x17,0x08,0x71,0x85,
+0x29,0xE4,0x00,0x71,0x9D,0xE4,0x00,0x71,0x3B,0xE4,0x00,0x71,0xCB,0xC2,0xE0,0x10,
+0x01,0x88,0xC3,0xF3,0x17,0x00,0xC0,0x23,0x08,0x4A,0xF2,0xF7,0x00,0xC0,0x22,0xE8,
+0x2E,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,0x09,0xC3,0x00,0x10,0x01,0x9A,0xE0,0xFF,
+0x18,0x09,0x0C,0x8B,0x38,0x5F,0x57,0x00,0x27,0x44,0x3D,0x5E,0xE3,0x01,0x20,0x00,
+0x25,0x5E,0xE3,0x29,0x20,0x00,0x31,0x0B,0x59,0x01,0x4F,0x5A,0x08,0x0F,0x59,0x01,
+0x9E,0xE1,0x9F,0x22,0x5E,0xE3,0x49,0x23,0xFF,0x79,0xC2,0xE0,0x10,0x01,0xC3,0x40,
+0x10,0x01,0xF3,0x77,0x0B,0x1A,0xFF,0x5A,0x08,0x86,0x1F,0xBB,0xFF,0x0A,0xFA,0x01,
+0x9B,0x20,0xE4,0x00,0x00,0x57,0xD7,0xB9,0x00,0xB8,0x0B,0xD8,0x00,0x0B,0x98,0x02,
+0x8F,0x9E,0xCB,0xD7,0x20,0x00,0xC3,0x80,0x1B,0xCC,0x4A,0xFE,0xB8,0x0B,0x98,0x00,
+0x53,0xD7,0x40,0x5F,0x84,0x19,0x9F,0x21,0x4A,0xFE,0xB8,0x9F,0x02,0x5F,0x99,0x04,
+0xD7,0x7C,0xFE,0xB5,0x98,0x60,0x0E,0xFA,0x01,0x88,0x83,0x98,0xA0,0xE7,0xFF,0xB3,
+0x4F,0x9C,0x38,0x0D,0x41,0x00,0x0D,0x21,0x04,0xC1,0x40,0x10,0x01,0x20,0x64,0x62,
+0xE7,0xFF,0xB4,0x6A,0x20,0x64,0x56,0xF2,0xEA,0x08,0x48,0x9E,0xE1,0xFA,0xEA,0x08,
+0x48,0xE4,0x00,0x00,0x19,0xE7,0xFF,0xB4,0xF0,0xF8,0x0A,0x08,0x48,0xE7,0xFF,0xDA,
+0x78,0x9A,0xE3,0x20,0x64,0x34,0xE7,0xFF,0xDA,0x66,0x5C,0x60,0x49,0x4A,0xE3,0x4B,
+0xC3,0x00,0x10,0x01,0xF3,0x38,0x08,0x48,0xD6,0xF9,0x02,0x1D,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x9C,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x8A,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x83,0xC2,0xE0,0x10,0x01,0xF8,0x18,0x08,0x48,0xF8,0x17,0x08,0x9D,
+0x0D,0x41,0x02,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEB,0x17,0x08,0x87,0x9C,0x28,
+0x53,0x18,0x80,0xEF,0x17,0x08,0x87,0xE7,0xFF,0x64,0xF3,0x0D,0x41,0x02,0x0D,0x21,
+0x06,0x9C,0x28,0x85,0x29,0x9C,0x38,0xC3,0x14,0x00,0x01,0x0D,0x21,0x04,0xCA,0xF8,
+0x22,0x00,0x0B,0x37,0x01,0xCB,0x18,0x26,0x18,0x9B,0x3F,0x0F,0x37,0x01,0x0B,0x38,
+0x01,0x53,0x39,0x02,0x0F,0x38,0x01,0x0B,0x17,0x01,0xFC,0x60,0x01,0x00,0x0C,0x17,
+0x01,0xE7,0xFF,0xC6,0x0E,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEB,0x17,0x00,0xD5,
+0x9C,0x28,0xC7,0x18,0xFE,0xFF,0xEF,0x17,0x00,0xD5,0x85,0x29,0x5C,0xC6,0x00,0x9A,
+0xE0,0xE4,0x00,0x00,0x45,0x4F,0x17,0x08,0x4F,0x57,0x10,0x43,0x23,0xC4,0x8F,0x45,
+0x8F,0x04,0x0F,0x5A,0x02,0x0B,0x18,0x01,0x4F,0x5A,0x42,0x9E,0xE1,0x43,0x18,0xD5,
+0x0F,0x19,0x01,0x5F,0x17,0x00,0xD4,0xD8,0xFE,0xFD,0x85,0x29,0x9C,0x38,0x0D,0x21,
+0x04,0xE4,0x00,0x38,0x32,0x0D,0x21,0x06,0xFC,0x60,0x01,0x00,0x9C,0x28,0xE7,0xFF,
+0xC5,0x45,0x9C,0x38,0x0D,0x21,0x04,0xE4,0x00,0x38,0x06,0x0D,0x21,0x06,0xFC,0x60,
+0x01,0x00,0x9C,0x28,0xE7,0xFF,0xC5,0x09,0x9C,0x38,0x98,0x80,0x0D,0x21,0x04,0x98,
+0x61,0xE7,0xFF,0xE3,0x1A,0x98,0x60,0xE7,0xFF,0x63,0x2A,0x98,0x61,0x98,0x80,0xE7,
+0xFF,0xE8,0x28,0x98,0x62,0x98,0x80,0xE7,0xFF,0xE8,0x18,0x0D,0x21,0x06,0x98,0x63,
+0x98,0x80,0x9C,0x28,0xE7,0xFF,0xE7,0xFF,0x98,0x64,0x98,0x80,0xE7,0xFF,0xE2,0xC5,
+0x9C,0x38,0x0D,0x21,0x04,0xE7,0xFF,0xD7,0xE8,0x24,0x64,0x29,0x20,0x69,0x8A,0xE4,
+0x00,0x00,0x19,0xE7,0xFF,0xD7,0xCC,0xE4,0x00,0x00,0x57,0xE7,0xFF,0xC4,0xCA,0xC2,
+0xE0,0x10,0x01,0xFE,0xF7,0x00,0xE6,0x0A,0xF7,0x09,0x40,0x63,0xBD,0x5E,0xE3,0x04,
+0xC2,0xE1,0x76,0xEA,0x20,0x00,0x7D,0x98,0x62,0xE7,0xFF,0xE7,0x16,0x20,0x60,0x5A,
+0x98,0x61,0x98,0x80,0xE7,0xFF,0xE2,0x34,0x0D,0x21,0x06,0x98,0x60,0x9C,0x28,0xE7,
+0xFF,0x62,0x3B,0x98,0x62,0x98,0x80,0xE7,0xFF,0xE2,0x0E,0xFC,0x60,0x01,0x5E,0xE7,
+0xFF,0x8E,0x48,0x0D,0x21,0x06,0x98,0x60,0x9C,0x28,0xE7,0xFF,0x61,0xBD,0x0D,0x21,
+0x06,0x9C,0x28,0x85,0x29,0xD0,0x69,0x06,0x2D,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,
+0xFE,0xF7,0xBA,0xC4,0x8E,0xF8,0xC3,0x00,0x10,0x01,0x0F,0x37,0x02,0xFF,0x18,0x09,
+0x48,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x09,0xF8,0x87,0x29,0xC3,0x00,0x10,0x01,0xFF,
+0x18,0x0B,0x34,0x0F,0x38,0x02,0x0F,0x37,0x68,0x0F,0x38,0x06,0x0F,0x18,0x0A,0x0F,
+0x37,0x6C,0x0F,0x17,0x70,0xE4,0x00,0x01,0x0B,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,
+0x28,0x0F,0x37,0x02,0x0F,0x38,0x68,0x0F,0x37,0x06,0x0E,0xF7,0x0A,0x0F,0x38,0x6C,
+0x0E,0xF8,0x70,0xE4,0x00,0x00,0xCF,0xCE,0xE3,0x00,0x68,0xC3,0x60,0x10,0x01,0xCC,
+0x63,0x00,0x1A,0xFF,0x7B,0x0A,0x9C,0x4C,0x63,0x10,0x8F,0x77,0x8F,0x03,0x9A,0xE0,
+0x43,0x38,0xBC,0x43,0x5B,0xBC,0x0F,0x5A,0x02,0x0F,0x59,0x00,0x9E,0xE4,0x5E,0xED,
+0x09,0x23,0xFF,0xBD,0xE4,0x00,0x00,0x6D,0x9C,0x7E,0xC3,0x40,0x10,0x01,0x5C,0x63,
+0x00,0xFF,0x5A,0x0B,0xF4,0xCF,0x03,0x00,0x68,0xCC,0x63,0x00,0x1A,0x8F,0x58,0x4C,
+0x63,0x10,0x8C,0x77,0x9A,0xE0,0x43,0x03,0xBC,0x43,0x3A,0xBC,0x0F,0x39,0x02,0x0F,
+0x38,0x00,0x9E,0xE4,0x5E,0xED,0x09,0x23,0xFF,0xBD,0x85,0x29,0xD0,0x69,0x06,0x3D,
+0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBA,0xEC,0x8E,0xF8,0xC3,0x00,0x10,
+0x01,0x0F,0x37,0x02,0xFF,0x18,0x08,0xA4,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x08,0x7C,
+0x87,0x29,0x0B,0x37,0x00,0xC3,0x00,0x10,0x01,0x4F,0x39,0x40,0xFF,0x18,0x0B,0x34,
+0xE4,0x00,0x00,0x25,0x0B,0x37,0x00,0xC3,0x00,0x10,0x01,0x4F,0x39,0x40,0xFF,0x18,
+0x0B,0x28,0x0F,0x38,0x00,0x0B,0x37,0x02,0x0A,0xF7,0x04,0x4F,0x39,0x40,0x4E,0xF7,
+0x40,0x0F,0x38,0x04,0x0E,0xF8,0x08,0xE4,0x00,0x00,0xD9,0xCE,0xE3,0x00,0x34,0x8F,
+0x17,0xCE,0xE3,0x00,0x68,0xC3,0x60,0x10,0x01,0xFF,0x7B,0x0A,0x9C,0x8F,0x77,0x9A,
+0xE0,0x4F,0x37,0x08,0x43,0x58,0xBC,0x8F,0x3B,0x0B,0x5A,0x00,0x4F,0x5A,0x40,0x0F,
+0x59,0x00,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xA9,0xE4,0x00,0x00,0x73,0x1E,0xE3,
+0xFE,0x5E,0xF7,0x00,0xCF,0x37,0x00,0x34,0xCE,0xF7,0x00,0x68,0xC3,0x60,0x10,0x01,
+0x8F,0x19,0xFF,0x7B,0x0B,0xF4,0x8F,0x77,0x9A,0xE0,0x4F,0x37,0x08,0x43,0x58,0xBC,
+0x8F,0x3B,0x0B,0x5A,0x00,0x4F,0x5A,0x40,0x0F,0x59,0x00,0x9E,0xE2,0x5E,0xE6,0x89,
+0x23,0xFF,0xA9,0xE7,0xFF,0xFC,0xE5,0x9C,0x38,0x98,0x64,0x0D,0x41,0x00,0x0D,0x21,
+0x04,0x98,0x80,0xE7,0xFF,0xDE,0x96,0xC1,0x40,0x10,0x01,0xEA,0xEA,0x00,0xD5,0xC6,
+0xF7,0xFE,0xFF,0xEE,0xEA,0x00,0xD5,0xE7,0xFF,0xFA,0xEA,0xEA,0xEA,0x00,0xD5,0xC6,
+0xF7,0x01,0x00,0x22,0xE3,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xC0,0x3C,0xFC,0x60,
+0x01,0x00,0xE7,0xFF,0xC0,0x0C,0xE7,0xFF,0xF5,0x4A,0x0D,0x21,0x06,0x0D,0x41,0x02,
+0x98,0x60,0x9C,0x28,0xE7,0xFF,0xFD,0xD1,0x9C,0x38,0x0D,0x21,0x04,0x20,0x64,0x3E,
+0x98,0x60,0xE7,0xFF,0xFD,0xB4,0x98,0x68,0xE4,0x00,0x00,0x19,0x98,0x62,0xE7,0xFF,
+0xFD,0x9C,0x98,0x69,0x0D,0x21,0x06,0x9C,0x28,0xE7,0xFF,0xFD,0x87,0x9C,0x38,0x98,
+0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFD,0x70,0x0D,0x21,0x06,0x98,0x68,0x9C,0x28,0xE7,
+0xFF,0xFD,0x5B,0x20,0x80,0x64,0xD0,0x84,0x00,0xFA,0x20,0x88,0x90,0x20,0x8C,0xA8,
+0x5C,0x80,0x21,0x4B,0x0A,0x01,0x8A,0xF8,0xE4,0x00,0x00,0x49,0x53,0x00,0x19,0x8A,
+0xF8,0xE4,0x00,0x00,0x37,0x53,0x00,0x19,0x9A,0xE1,0xE4,0x00,0x00,0x25,0x53,0x00,
+0x32,0x8A,0xF8,0xE4,0x00,0x00,0x13,0x53,0x00,0x50,0x8A,0xF8,0xD0,0x69,0x0A,0xE5,
+0x4F,0x43,0x10,0xC3,0x38,0x00,0x21,0xFF,0x39,0xBB,0x14,0x8F,0x3A,0xC3,0x40,0x10,
+0x01,0x0F,0x79,0x02,0xFF,0x5A,0x08,0xA4,0xC3,0x20,0x10,0x01,0xFF,0x39,0x08,0x7C,
+0x87,0x69,0xCF,0x23,0x00,0x68,0xCC,0xA3,0x00,0x34,0xC0,0x80,0x10,0x01,0x8C,0xBA,
+0xFC,0x84,0x0A,0x9C,0x99,0x02,0x8C,0x99,0xCB,0xA0,0x01,0xF4,0x9B,0x20,0x43,0x65,
+0xCC,0x0B,0x9B,0x00,0x4F,0x79,0x08,0x4F,0x9C,0x40,0x8F,0x64,0x0F,0x5B,0x02,0x5F,
+0x5C,0x1D,0x4B,0xD8,0xB8,0x43,0x9C,0xD5,0x43,0x9E,0xE3,0xCF,0xDA,0x01,0xF4,0x43,
+0x9C,0x40,0x8F,0x9E,0x43,0x9C,0xE8,0x0F,0x9B,0x00,0x9F,0x22,0x5F,0x26,0x89,0x23,
+0xFF,0x3D,0xE4,0x00,0x01,0xCD,0x1F,0x23,0xFE,0x5F,0x39,0x00,0xCC,0xB9,0x00,0x34,
+0xCF,0x39,0x00,0x68,0xC0,0x80,0x10,0x01,0x8C,0xBA,0xFC,0x84,0x0B,0xF4,0x99,0x02,
+0x8C,0x99,0xCB,0xA0,0x01,0xF4,0x9B,0x20,0x43,0x65,0xCC,0x0B,0x9B,0x00,0x4F,0x79,
+0x08,0x4F,0x9C,0x40,0x8F,0x64,0x0F,0x5B,0x02,0x5F,0x5C,0x1D,0x4B,0xD8,0xB8,0x43,
+0x9C,0xD5,0x43,0x9E,0xE3,0xCF,0xDA,0x01,0xF4,0x43,0x9C,0x40,0x8F,0x9E,0x43,0x9C,
+0xE8,0x0F,0x9B,0x00,0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x3D,0xE4,0x00,0x01,0x19,
+0xC3,0x40,0x10,0x01,0x9B,0xC2,0xFF,0x5A,0x0B,0x28,0xCB,0xA0,0x01,0xF4,0x0F,0x7A,
+0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,0x1D,0x43,0x9C,0xDD,0x49,0x18,0xB8,
+0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,0x8F,0x7C,0x43,0x7B,0xE8,0x0F,
+0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,0x44,0xFF,0x7B,0x08,0x82,0xD7,0x3B,
+0xFE,0x86,0xE4,0x00,0x00,0x8D,0xC3,0x40,0x10,0x01,0x9B,0xC2,0xFF,0x5A,0x0B,0x34,
+0xCB,0xA0,0x01,0xF4,0x0F,0x7A,0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,0x1D,
+0x43,0x9C,0xDD,0x49,0x18,0xB8,0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,
+0x8F,0x7C,0x43,0x7B,0xE8,0x0F,0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,0x44,
+0xFF,0x7B,0x08,0x82,0xD7,0x3B,0xFE,0x86,0xE7,0xFF,0xF8,0x9B,0x9C,0x38,0x0D,0x21,
+0x04,0x0D,0x41,0x00,0x89,0x43,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xFC,0xB2,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xFC,0x93,0x1C,0x21,
+0xC8,0x0D,0x41,0x30,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,0xE1,0x1C,0x0E,0x01,0x18,
+0x0D,0x21,0x34,0x0D,0x61,0x2C,0x0D,0x81,0x28,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,
+0x61,0x0C,0x0E,0x81,0x08,0x0E,0xA1,0x04,0xC1,0xC0,0x10,0x01,0xFD,0xCE,0x08,0x86,
+0x0A,0xEE,0x01,0xC7,0x17,0x7F,0xFF,0x0F,0x0E,0x01,0xC2,0x00,0x10,0x01,0xC1,0xA0,
+0x10,0x01,0xC1,0xE0,0x10,0x01,0xC1,0x40,0x10,0x01,0x56,0xF7,0x08,0xFE,0x10,0x08,
+0x54,0xFD,0xAD,0x08,0x60,0xFD,0xEF,0x08,0x5C,0xFD,0x4A,0x0B,0x90,0x22,0xE1,0x6C,
+0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0x8E,0x22,0xE5,0x40,0xC3,0x00,0x10,0x01,0x0A,
+0xEA,0x18,0xFF,0x18,0x01,0x64,0x0B,0x58,0x0A,0xD7,0x57,0x01,0x04,0xCB,0x20,0x07,
+0xFF,0x43,0x59,0xD5,0xD6,0xFA,0x00,0xAC,0x0A,0xEA,0x16,0x0B,0x18,0x06,0xD7,0x17,
+0x00,0x5C,0x43,0x19,0xC5,0xD6,0xF8,0x01,0x18,0xE7,0xFF,0xE3,0xBA,0x9A,0xE3,0x0E,
+0xED,0x00,0xC2,0xE0,0x10,0x01,0x18,0x10,0x00,0xF8,0x17,0x08,0x76,0x18,0x0F,0x00,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x67,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0x50,
+0x22,0xE0,0x24,0x98,0x60,0xE7,0xFF,0xC2,0x8A,0x0E,0xED,0x02,0x22,0xE0,0x96,0x0A,
+0xEE,0x01,0x56,0xF7,0x40,0xD2,0xE0,0x4B,0x62,0x98,0x63,0xE7,0xFF,0xE4,0xB0,0xE7,
+0xFF,0x1C,0x40,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x76,0x9A,0xE1,0xE4,0x00,0x14,
+0x21,0x22,0xE5,0x0E,0x0A,0xEE,0x01,0x57,0x17,0x08,0x23,0x00,0x2C,0xE7,0xFF,0xE2,
+0xF2,0xE4,0x00,0x12,0xEF,0x57,0x17,0x40,0x23,0x00,0x94,0xC6,0xF7,0x20,0x00,0x22,
+0xE0,0x7A,0xC2,0xE0,0x10,0x01,0x98,0x62,0xF3,0x17,0x08,0x76,0xC3,0x00,0x19,0x0A,
+0x20,0x24,0x8F,0x9F,0x01,0xFB,0x17,0x08,0x76,0xE4,0x00,0x13,0xAF,0x0C,0x0D,0x00,
+0xE4,0x00,0x13,0xA1,0xC2,0x20,0x10,0x01,0xFE,0x31,0x08,0x64,0x22,0xE8,0xAA,0x0A,
+0xEE,0x01,0x56,0xF7,0x08,0x22,0xE0,0x68,0x12,0xF0,0x00,0x9E,0xE1,0x1A,0xF0,0x00,
+0xE7,0xFF,0x1B,0x9E,0x12,0xF0,0x00,0xD2,0xE1,0x4D,0x49,0xE4,0x00,0x0E,0x75,0x18,
+0x10,0x00,0xE4,0x00,0x11,0x25,0xC1,0x80,0x10,0x01,0xC1,0x60,0x10,0x01,0xFD,0x8C,
+0x0B,0x70,0xFD,0x6B,0x08,0x28,0xD2,0xE3,0x38,0x96,0xE7,0xFF,0xCC,0x5E,0xC3,0x00,
+0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x20,0x03,0xE8,0x20,0x68,0x1C,0xFF,0x20,0x01,
+0xF4,0xEF,0x37,0x03,0x7B,0xEF,0x38,0x03,0x79,0x0A,0xEE,0x01,0x56,0xF7,0x08,0xD2,
+0xE0,0x37,0x02,0xC1,0xC0,0x10,0x01,0xC2,0x00,0x10,0x01,0x12,0xEA,0x00,0xFD,0xCE,
+0x08,0x94,0xFE,0x10,0x03,0x6C,0xD2,0xE1,0x0F,0xB9,0x0B,0x8B,0x04,0xC3,0x8F,0xFF,
+0xE0,0x20,0x06,0x6D,0x08,0xAA,0x48,0x0B,0x2B,0x06,0x0B,0x6B,0x00,0x43,0xA5,0xCD,
+0x08,0xCA,0x46,0x0B,0x4B,0x02,0x43,0xC6,0xE5,0x0B,0x0A,0x18,0x08,0x8A,0x16,0x42,
+0xFA,0xC5,0x41,0x04,0xDD,0x42,0xFE,0xBB,0x41,0x3D,0x43,0x8E,0xE9,0x22,0xE1,0x84,
+0x42,0x7C,0xDD,0x41,0x3A,0xCD,0x42,0x9D,0x9B,0x42,0x5E,0x4B,0x8E,0x92,0x22,0x80,
+0x40,0x26,0x80,0x28,0x26,0xE0,0x2A,0xE4,0x00,0x00,0x8F,0x26,0xFD,0x0E,0x4E,0xB7,
+0xFA,0x46,0x55,0xBE,0x42,0x52,0xAD,0x4E,0xB4,0xFA,0x46,0x95,0xA6,0x42,0xB4,0xAD,
+0xD6,0xB2,0x01,0x74,0x42,0x98,0xD5,0x41,0x28,0x4B,0x42,0x74,0x9B,0x8E,0x69,0x22,
+0x60,0x40,0x26,0x60,0x28,0x26,0xE0,0x2A,0xE4,0x00,0x00,0x2D,0x26,0xFC,0x4A,0x4E,
+0xF3,0xFA,0x46,0x77,0x9E,0x42,0x73,0xBD,0x9A,0xE1,0xD6,0x72,0x06,0x18,0x42,0x45,
+0xD5,0x42,0x66,0xDD,0x42,0x84,0xE5,0x42,0xF9,0xC5,0x41,0x32,0xA3,0x42,0xF3,0xBB,
+0x8E,0xE9,0x22,0xE0,0xDC,0x43,0x9B,0xE5,0x41,0x39,0xD5,0x40,0xF2,0xE3,0x42,0xB3,
+0x4B,0x8C,0xF5,0x20,0xE0,0x40,0x24,0xE0,0x28,0x26,0xE0,0x2A,0xE4,0x00,0x00,0x3B,
+0x26,0xFC,0x66,0x4E,0xB7,0xFA,0x44,0x75,0xBE,0x40,0x63,0xAD,0x4E,0xA7,0xFA,0x44,
+0xF5,0x3E,0x42,0xA7,0xAD,0xD6,0xA3,0x01,0xA0,0x43,0x58,0xD5,0x41,0x08,0x43,0x43,
+0x5A,0xD3,0x43,0x38,0xCD,0x42,0x94,0xA3,0x43,0x39,0xCB,0x8F,0x48,0x8E,0x99,0x9A,
+0xE0,0xD6,0x9A,0x00,0x45,0x8B,0x54,0x9A,0xE1,0x42,0x73,0x9B,0x42,0x52,0x93,0x8E,
+0x53,0xD6,0x5A,0x01,0xB1,0xE4,0x00,0x00,0x6F,0x42,0xB8,0xCD,0x41,0x34,0x4B,0x43,
+0x95,0xE3,0x8F,0x89,0x23,0x80,0x40,0x27,0x80,0x28,0x26,0xE0,0x2A,0xE7,0xFF,0xFF,
+0x79,0x26,0xFE,0xE2,0x4E,0xFC,0xFA,0x47,0x97,0xE6,0x43,0x9C,0xBD,0x9A,0xE0,0xD7,
+0x83,0x00,0xF0,0xE7,0xFF,0xFF,0x4D,0x8B,0x52,0x52,0xE0,0x10,0x43,0xDE,0xF3,0x43,
+0xBD,0xEB,0x53,0x20,0x11,0x8F,0xBE,0x5F,0xBA,0x1F,0x4A,0xF7,0xC8,0x4F,0x37,0x21,
+0x46,0xF7,0xCE,0x56,0xF7,0x0F,0xD2,0xE0,0x3B,0x5A,0x0C,0xCA,0x17,0x0C,0xAA,0x19,
+0x0C,0x8A,0x47,0x0F,0x0A,0x49,0xE4,0x00,0x0E,0xB7,0xC2,0xE0,0x10,0x01,0x9B,0x3E,
+0xF3,0x17,0x08,0x19,0x47,0x18,0xCC,0x98,0x63,0xFB,0x17,0x08,0x19,0xE7,0xFF,0xDB,
+0x24,0x12,0xF0,0x00,0x1A,0xEA,0x10,0x12,0xF0,0x01,0x1A,0xEA,0x40,0xE7,0xFF,0x17,
+0xA4,0x12,0xEA,0x00,0xD2,0xE1,0x3B,0xD6,0xE4,0x00,0x02,0x73,0x0A,0xEB,0x00,0xC2,
+0xEF,0xFF,0xE4,0x23,0xFF,0x7B,0x0B,0xCB,0x02,0x0B,0x2A,0x16,0x0B,0x0A,0x18,0x43,
+0xB9,0xBD,0x43,0x98,0xF5,0x0B,0x6A,0x46,0x0B,0x4A,0x48,0x42,0xFB,0xBD,0x43,0xDA,
+0xF5,0x42,0xF7,0xBB,0x43,0xDE,0xF3,0x8E,0xFE,0x43,0xBD,0xEB,0x43,0x9C,0xE3,0x8F,
+0x9D,0x5E,0xFC,0x1F,0x52,0xE0,0x10,0x4A,0xE0,0xB8,0x22,0xE2,0x9C,0x0F,0x6A,0x17,
+0x0F,0x4A,0x19,0x0F,0x2A,0x47,0x0F,0x0A,0x49,0xE7,0xFF,0xFF,0x31,0x22,0xE6,0x52,
+0x0A,0xEB,0x04,0xC2,0xEF,0xFF,0xE0,0x23,0xFE,0x29,0x0B,0xCA,0x16,0x0B,0xAA,0x18,
+0x0B,0x0B,0x00,0x0B,0x2B,0x02,0x43,0x9E,0xC5,0x43,0x7D,0xCD,0x43,0xDE,0xBD,0x0B,
+0x4B,0x06,0x43,0xDE,0xF3,0x43,0xBD,0xD5,0x43,0x9C,0xE3,0x43,0xBD,0xEB,0x43,0x7B,
+0xDB,0x8F,0xBE,0x8F,0x7C,0xD7,0xBB,0x35,0x39,0xE4,0x00,0x0D,0x7F,0x0B,0x8C,0x03,
+0x43,0x99,0xE5,0x5F,0x9C,0x06,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0xC3,
+0x60,0x10,0xE8,0x20,0x00,0xD9,0x0B,0x8C,0x03,0xC3,0x60,0x10,0x01,0xEF,0x9B,0x08,
+0x79,0xFF,0x7B,0x08,0x78,0x0B,0x8C,0x07,0x0F,0x9B,0x03,0xC3,0x60,0x10,0x01,0xEF,
+0x1B,0x08,0x69,0xC3,0x00,0x10,0x01,0xFF,0x7B,0x08,0x68,0x0F,0x3B,0x03,0xF3,0x38,
+0x08,0x19,0x53,0x39,0x02,0xFB,0x38,0x08,0x19,0x0B,0x0E,0x05,0x0F,0x0E,0x01,0x0B,
+0x0E,0x07,0x0F,0x0E,0x03,0x0B,0x0C,0x09,0x0F,0x0C,0x01,0x0B,0x0C,0x0B,0x0F,0x0C,
+0x03,0x0B,0x0C,0x0D,0x0E,0xEB,0x01,0x0F,0x0C,0x05,0xFE,0xE0,0x7F,0xFF,0x0B,0x0C,
+0x0F,0x0E,0xEB,0x05,0x0E,0xEB,0x07,0x0E,0xEE,0x05,0x0E,0xEE,0x07,0x0E,0xEC,0x09,
+0x0E,0xEC,0x0B,0x0F,0x0C,0x07,0x0E,0xEC,0x0D,0x0E,0xEC,0x0F,0x9B,0x01,0x12,0xF0,
+0x01,0x0F,0x4B,0x03,0x1A,0xF0,0x00,0x42,0xF8,0xBD,0x1A,0xF0,0x01,0xE7,0xFF,0xFD,
+0x69,0x0A,0xEA,0x17,0x0B,0x0B,0x01,0x43,0x18,0xBD,0x5F,0x18,0x06,0x4E,0xF8,0xFA,
+0x47,0x17,0xC6,0x42,0xF8,0xBD,0xC3,0x00,0x10,0x01,0xEB,0x38,0x03,0x78,0xD6,0xF9,
+0x01,0x2C,0x0A,0xEA,0x19,0x0B,0x0B,0x03,0x43,0x18,0xBD,0x5F,0x18,0x06,0x4E,0xF8,
+0xFA,0x47,0x17,0xC6,0x42,0xF8,0xBD,0xC3,0x00,0x10,0x01,0xEB,0x38,0x03,0x7A,0xD6,
+0xF9,0x2F,0xF8,0xE7,0xFF,0x15,0x60,0xD0,0x60,0x2F,0xBA,0xE7,0xFF,0xDB,0x36,0xC2,
+0xE0,0x10,0x01,0xEF,0x17,0x07,0x8E,0xD3,0x01,0x2F,0x3E,0xE4,0x00,0x0B,0xEF,0x9A,
+0xFE,0x0E,0xF1,0x01,0xC1,0xA0,0x10,0x01,0x13,0x2A,0x00,0xFD,0xAD,0x0B,0xA6,0x9B,
+0x00,0x8A,0xED,0xE4,0x00,0x00,0x35,0x0B,0x57,0x01,0x9F,0x01,0x0F,0x4B,0x01,0x5F,
+0x18,0x00,0x0B,0x57,0x03,0x1E,0xF7,0x30,0x0F,0x4B,0x03,0x9D,0x64,0xD7,0x19,0xFF,
+0x56,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x08,0x3A,0x22,0xE4,0x26,0x99,0x60,0xE4,0x00,
+0x00,0x5F,0xE7,0xFF,0xC4,0xEE,0x20,0x6B,0xD8,0xE7,0xFF,0xC4,0xE0,0x20,0x6C,0xAE,
+0xE7,0xFF,0xFF,0xD9,0xCC,0x8B,0x00,0x30,0x88,0xCB,0x1C,0x84,0x10,0x9D,0x61,0x8C,
+0x8A,0x5D,0x6B,0x00,0x1C,0x64,0x06,0x9C,0x88,0xE7,0xFF,0x50,0x5E,0x10,0xAA,0x00,
+0xD4,0xAB,0xFF,0x25,0xE4,0x00,0x00,0x11,0xE7,0xFF,0x4F,0xB0,0xE7,0xFF,0xC4,0x7A,
+0xC3,0x20,0x10,0x01,0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0x20,0x68,0xD6,0x53,
+0x40,0x4B,0xEF,0x58,0x08,0x89,0xEF,0x59,0x08,0x53,0x53,0x00,0x25,0xEF,0x17,0x08,
+0x9F,0xC2,0x20,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFE,0x31,0x08,0x40,0xEF,0x17,0x08,
+0x75,0x99,0x60,0xC2,0x60,0x10,0x01,0xC2,0x80,0x10,0x01,0x8A,0x51,0xE4,0x00,0x03,
+0x19,0x53,0x40,0x32,0xEF,0x58,0x08,0x89,0xEF,0x59,0x08,0x53,0x53,0x00,0x19,0xE7,
+0xFF,0xFF,0x9D,0x4E,0xEB,0x10,0x8E,0xEE,0x0B,0x17,0x00,0xC3,0x0F,0xFF,0xE4,0x20,
+0x05,0x3B,0x0B,0x37,0x02,0xC3,0x2F,0xFF,0xE0,0x20,0x05,0x11,0xCE,0xEB,0x00,0x30,
+0x8E,0xEA,0x0A,0x17,0x17,0x42,0x18,0x85,0x5E,0x10,0x06,0x4F,0x10,0xFA,0x0A,0xF7,
+0x19,0x46,0x18,0x86,0x42,0xF9,0xBD,0x42,0x10,0xC5,0x5E,0xF7,0x06,0x4F,0x17,0xFA,
+0x5E,0x10,0x06,0x46,0xF8,0xBE,0xE9,0xF3,0x08,0x89,0x42,0xF7,0xC5,0x43,0x11,0x5C,
+0x5E,0xF7,0x06,0x13,0x58,0x00,0xD6,0xEF,0x00,0xE4,0xC3,0x00,0x10,0x01,0xEB,0x18,
+0x08,0x53,0xD6,0x18,0x00,0x84,0x9B,0x03,0x27,0x48,0x57,0x1F,0x1A,0x01,0xE4,0x00,
+0x00,0x19,0x9B,0x00,0x23,0x40,0x24,0x1F,0x1A,0xFF,0x5F,0x18,0x00,0x43,0x52,0x5C,
+0x1B,0x1A,0x00,0x43,0x11,0x5C,0x13,0x18,0x00,0xD3,0x02,0x06,0xA1,0xEB,0x14,0x08,
+0x75,0xD6,0xF8,0x00,0x8C,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0F,0x37,0x19,0xE4,0x00,
+0x00,0x9B,0xD6,0xEF,0x02,0x4C,0x43,0x2F,0xC5,0x40,0x77,0xC5,0x43,0x39,0xCB,0x42,
+0xF8,0xBD,0x43,0x4F,0x7B,0x40,0x63,0xBB,0x8C,0x79,0x40,0x63,0xD3,0x40,0x63,0xC8,
+0xE7,0xFF,0x10,0xD0,0x4E,0xEB,0x10,0x8E,0xEE,0x5C,0x63,0x06,0x0B,0x17,0x02,0x41,
+0xEF,0x1D,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0B,0x37,0x18,0xD7,0x19,0x00,0x58,0x41,
+0xF8,0x7D,0xE4,0x00,0x00,0x0D,0x8D,0xF8,0x0D,0xF7,0x19,0xC2,0xE0,0x10,0x01,0xEA,
+0xF7,0x08,0x9F,0xD6,0x17,0x00,0xCC,0xCE,0xEB,0x00,0x30,0x4F,0x0B,0x10,0x8E,0xEA,
+0x8F,0x0E,0x0B,0x18,0x01,0x0F,0x17,0x17,0xE4,0x00,0x00,0xAB,0xC3,0x00,0x10,0x01,
+0xE9,0xF8,0x08,0x53,0xD6,0x0F,0x02,0x4C,0x43,0x0F,0xBD,0x43,0x2F,0x7B,0x43,0x18,
+0xC3,0x40,0x70,0xBD,0x42,0x17,0x85,0x40,0x63,0x83,0x8C,0x78,0x40,0x63,0xCB,0x40,
+0x63,0xC0,0xE7,0xFF,0x0F,0xEC,0x4E,0xEB,0x10,0x8E,0xEE,0x5C,0x63,0x06,0x0B,0x17,
+0x00,0x41,0xEF,0x1D,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0B,0x37,0x16,0xD7,0x19,0x00,
+0x58,0x41,0xF8,0x7D,0xE4,0x00,0x00,0x0D,0x8D,0xF8,0x0D,0xF7,0x17,0x4E,0xEB,0x10,
+0xCF,0x0B,0x00,0x30,0x8E,0xEE,0x8F,0x0A,0x9D,0x61,0x0B,0x38,0x17,0x5D,0x6B,0x00,
+0x0B,0x18,0x19,0x0F,0x37,0x01,0x0F,0x17,0x03,0x12,0xEA,0x00,0xD6,0xEB,0xF4,0x3D,
+0xE7,0xFF,0xC0,0xD2,0x20,0x68,0x36,0x9B,0x08,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x03,
+0x71,0xC2,0xE0,0x10,0x01,0x13,0x2A,0x00,0xF3,0x77,0x08,0x84,0x8B,0x0D,0xC2,0xE0,
+0x10,0x01,0x9B,0x80,0xFE,0xF7,0x0B,0x74,0xFF,0x40,0x7F,0xFF,0xE4,0x00,0x00,0x9F,
+0xD7,0x79,0x00,0x92,0x0F,0x57,0xFD,0x0F,0x57,0xFF,0x0F,0x57,0x01,0x0F,0x57,0x03,
+0x8B,0x79,0x0B,0xB7,0x00,0xC3,0xAF,0xFF,0xE0,0x20,0x00,0x41,0x0B,0xB7,0xFD,0x0F,
+0xB7,0x01,0x0B,0xB7,0xFF,0xE4,0x00,0x00,0x1B,0x0B,0xB8,0x01,0x0F,0xB7,0x01,0x0B,
+0xB8,0x03,0x0F,0xB7,0x03,0x0B,0xB8,0x01,0x9F,0x81,0x0F,0xB7,0xFD,0x5F,0x9C,0x00,
+0x0B,0xB8,0x03,0x1F,0x18,0x30,0x0F,0xB7,0xFF,0x9E,0xE8,0xD7,0x99,0xFD,0xAE,0xC2,
+0xE0,0x10,0x01,0xFB,0x77,0x08,0x84,0xC2,0xE0,0x10,0x01,0x23,0x24,0x7A,0x9B,0x02,
+0xFB,0x17,0x08,0xA1,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x03,0x70,0x9B,0x0A,0x9B,0x4A,
+0x43,0x18,0xBD,0x9A,0xE0,0xE4,0x00,0x00,0x8F,0xF8,0x17,0x08,0xA1,0xE7,0xFF,0xFF,
+0xCF,0x0B,0x6C,0x04,0x0B,0x8C,0x00,0x0B,0xAC,0x06,0x43,0x9C,0xDD,0x9E,0xE1,0x43,
+0x98,0xE3,0x5E,0xF7,0x00,0x43,0x9C,0xD0,0x8F,0x9B,0x0B,0x6C,0x02,0x0F,0x8D,0x01,
+0x43,0x7B,0xED,0x0F,0x8C,0x01,0x43,0x78,0xDB,0x43,0x7B,0xD0,0x8F,0x7D,0x5F,0x7B,
+0x06,0x0F,0x6D,0x03,0x0F,0x6C,0x03,0x1D,0xAD,0x30,0x9D,0x88,0xD6,0xF9,0xFE,0x2E,
+0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0x19,0x56,0xF7,0x02,0x22,0xE0,0x24,0x98,0x64,
+0xE7,0xFF,0xD1,0x1E,0x13,0x0A,0x00,0xC2,0xE0,0x10,0x01,0x0E,0xA1,0x06,0x0E,0x81,
+0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,
+0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,
+0x21,0x36,0xFB,0x17,0x08,0x26,0x98,0x61,0x1C,0x21,0x38,0xE7,0xFF,0xB3,0x1F,0x18,
+0x0F,0x00,0x9A,0xE4,0xE4,0x00,0x04,0xF3,0xD2,0xE4,0x01,0xA6,0x0A,0xEE,0x01,0x56,
+0xF7,0x08,0x22,0xE0,0x3C,0x9A,0xE3,0x0C,0x11,0x01,0x0E,0xED,0x00,0xE4,0x00,0x04,
+0xC7,0x12,0xEF,0x00,0x9E,0xE1,0x5E,0xF7,0x00,0x1A,0xEF,0x00,0xD2,0xE1,0x12,0xA1,
+0x9A,0xE5,0x18,0x0F,0x00,0x0E,0xED,0x00,0xE4,0x00,0x04,0x91,0xD2,0xE5,0x09,0xF6,
+0x12,0xEF,0x00,0x9E,0xE1,0x1A,0xEF,0x00,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0x84,
+0x22,0xE9,0x4A,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0x19,0x56,0xF7,0x01,0x22,0xE1,
+0x10,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xA1,0xC1,0x40,0x10,0x01,0xF2,0xEA,0x08,
+0x11,0x22,0xE8,0x66,0x98,0x65,0xE7,0xFF,0xCF,0xB2,0x98,0x61,0xE7,0xFF,0xB2,0x1C,
+0x9A,0xE1,0xFA,0xEA,0x08,0x11,0xE4,0x00,0x01,0x75,0xD2,0xE1,0x05,0x8E,0x98,0x65,
+0xE7,0xFF,0xCF,0x7E,0x98,0x61,0xE7,0xFF,0xB1,0xE8,0xF8,0x0A,0x08,0x11,0xE4,0x00,
+0x01,0x45,0x0B,0x0B,0x00,0x0B,0x4C,0x00,0x43,0x38,0xD5,0x5F,0x39,0x06,0x4E,0xF9,
+0xFA,0x47,0x37,0xCE,0x42,0xF9,0xBD,0x5E,0xEC,0x99,0x20,0x00,0x7D,0x0A,0xEC,0x03,
+0x0B,0x2B,0x03,0x43,0x39,0xBD,0x5F,0x39,0x06,0x4E,0xF9,0xFA,0x47,0x37,0xCE,0x42,
+0xF9,0xBD,0xC2,0xE0,0x10,0xE8,0x20,0x01,0x95,0xC3,0x20,0x10,0x01,0xF2,0xF9,0x08,
+0xA1,0x22,0xE8,0xB6,0x8F,0x1A,0x43,0x18,0xB8,0x0F,0x0A,0x17,0xC3,0x00,0x10,0x01,
+0xEB,0x58,0x08,0x2A,0xC3,0x00,0x10,0x01,0xEB,0x18,0x0B,0x72,0x8F,0x1A,0x42,0xF8,
+0xB8,0x0E,0xEA,0x19,0x9A,0xE1,0xFA,0xF9,0x08,0xA1,0xE4,0x00,0x00,0x45,0x22,0xE4,
+0x66,0xC2,0xE0,0x10,0x01,0x0F,0x0A,0x17,0xEA,0xF7,0x08,0x2B,0xF8,0x19,0x08,0xA1,
+0x0E,0xEA,0x19,0xE4,0x00,0x00,0x13,0x9A,0xE3,0x1A,0xEF,0x00,0x9A,0xE1,0x98,0x61,
+0x1A,0xEA,0x00,0xE7,0xFF,0xB0,0xAE,0xE4,0x00,0x00,0x13,0x9A,0xE3,0x1A,0xEF,0x00,
+0x12,0xEF,0x00,0xD2,0xE2,0x09,0xE9,0x98,0x62,0x0C,0x11,0x01,0xE7,0xFF,0xD2,0xCE,
+0xE7,0xFF,0x0A,0x5E,0xC2,0xE0,0x10,0x01,0x9B,0x03,0xFB,0x17,0x08,0x50,0xE7,0xFF,
+0xD1,0x30,0xE7,0xFF,0x46,0xBC,0x98,0x60,0xE7,0xFF,0xB0,0x44,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x67,0x9A,0xE6,0xE4,0x00,0x02,0x0F,0xD2,0xE6,0x08,0x36,0x0A,0xEE,
+0x01,0x56,0xF7,0x40,0x22,0xE0,0x26,0x98,0x64,0xE7,0xFF,0xEB,0xA6,0xC3,0x00,0x10,
+0x01,0xF2,0xF8,0x08,0x67,0x9E,0xE1,0x5E,0xF7,0x00,0xFA,0xF8,0x08,0x67,0x5E,0xE6,
+0x53,0x0A,0xEE,0x01,0x20,0x01,0x35,0x56,0xF7,0x40,0x22,0xE0,0x50,0x9A,0xE1,0x0E,
+0xED,0x00,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x76,0xE4,0x00,0x01,0x8D,0x0C,0x0D,
+0x00,0x98,0x60,0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,
+0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,
+0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0xE7,0xFF,0xEA,
+0xDF,0x56,0xF7,0x08,0xD2,0xE0,0x04,0x62,0x18,0x10,0x00,0x9A,0xE2,0xE4,0x00,0x01,
+0x01,0xC3,0x6F,0xFF,0xE4,0x23,0xE2,0x95,0xE7,0xFF,0xF1,0x73,0x0B,0x8C,0x01,0x43,
+0x98,0xE5,0x5F,0x9C,0x06,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0x5F,0x6C,
+0x99,0x23,0xE5,0x33,0xE7,0xFF,0xF2,0xC5,0x98,0x62,0xE7,0xFF,0xCC,0x4A,0xFE,0xE0,
+0x7F,0xFF,0x0E,0xEB,0x05,0x0E,0xEB,0x07,0x0E,0xEE,0x05,0x0E,0xEE,0x07,0x0E,0xEC,
+0x09,0x0E,0xEC,0x0B,0x0E,0xEC,0x0D,0x0E,0xEC,0x0F,0xE7,0xFF,0xF0,0xEF,0x0A,0xF1,
+0x01,0xCB,0x00,0xFF,0xFD,0x9E,0xE1,0x5E,0xF7,0x04,0xD6,0xF8,0xD0,0xAD,0xE7,0xFF,
+0xF4,0x27,0xFE,0xE0,0x7F,0xFF,0x18,0x0F,0x00,0x0E,0xEB,0x01,0x0E,0xEB,0x03,0x0E,
+0xEB,0x05,0x0E,0xEB,0x07,0x18,0x10,0x00,0x1B,0x10,0x01,0x9A,0xE5,0x0E,0xED,0x00,
+0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,
+0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,
+0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0x9C,0x38,0x0D,0x21,
+0x04,0x0D,0x41,0x00,0x89,0x43,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xE6,0x12,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xE5,0xF3,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x3D,0xF9,0x1C,0x21,0xC8,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,
+0x61,0x2C,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,0xE1,0x1C,0x0E,0x01,
+0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,0x61,0x0C,0x0E,0x81,0x08,0x13,0x17,0x00,
+0xC2,0xE0,0x10,0x01,0xFB,0x17,0x00,0xC0,0xF3,0x17,0x00,0xC0,0x23,0x00,0x2C,0xF2,
+0xF7,0x00,0xC0,0xD2,0xE1,0x30,0x2E,0xC1,0x80,0x10,0x01,0xC1,0xE0,0x10,0x01,0xFD,
+0x8C,0x08,0x86,0xFD,0xEF,0x00,0xE0,0x0A,0xEC,0x01,0x56,0xF7,0x80,0xD2,0xE0,0x2E,
+0x1E,0xC2,0xE0,0x10,0x01,0xC1,0xA0,0x10,0x01,0xF3,0x17,0x00,0xC0,0xFD,0xAD,0x09,
+0x0C,0x23,0x08,0xB2,0xF2,0xF7,0x00,0xC0,0x22,0xE8,0x68,0x0B,0x2D,0x02,0x9B,0x42,
+0xCF,0x19,0x00,0x03,0x0A,0xED,0x00,0x43,0x18,0xD0,0xD6,0xF8,0x02,0x14,0xE4,0x00,
+0x00,0x9B,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,0x09,0x22,0xE3,0x86,0x8B,0x0D,0x9A,
+0xE0,0x9B,0x22,0x5F,0x57,0x00,0x27,0x44,0x3D,0x5E,0xE3,0x01,0x20,0x00,0x25,0x5E,
+0xE3,0x29,0x20,0x00,0x31,0x0B,0x58,0x00,0x43,0x5A,0xC8,0x0F,0x58,0x01,0x9E,0xE1,
+0x9F,0x02,0x5E,0xE3,0x49,0x23,0xFF,0x79,0xE7,0xFF,0xFF,0x67,0x42,0xF7,0xC5,0x43,
+0x57,0xD0,0x8F,0x1A,0x0F,0x0D,0x01,0xE4,0x00,0x00,0x43,0x4E,0xF7,0x08,0x9B,0x1D,
+0x43,0x17,0xC0,0x8F,0x38,0x9B,0x0B,0xCF,0x39,0x00,0x0A,0x43,0x39,0xC0,0x9B,0x03,
+0x42,0xF7,0xC0,0x8E,0xF9,0x0E,0xED,0x03,0x0A,0xED,0x30,0x0B,0x0D,0x32,0x4F,0x37,
+0x08,0xD7,0x19,0x00,0xC0,0xCE,0xF7,0xFF,0xFE,0x9B,0x43,0x8F,0x17,0x43,0x18,0xD0,
+0x8F,0x38,0x0F,0x2D,0x33,0xE4,0x00,0x00,0x37,0x9B,0x22,0x43,0x18,0xC8,0x53,0x20,
+0x14,0x42,0xF7,0xC5,0xCE,0xF7,0x00,0x13,0x42,0xF7,0xC8,0x8F,0x17,0x0F,0x0D,0x31,
+0xC1,0x40,0x10,0x01,0xFD,0x4A,0x0B,0x1A,0x12,0xEA,0x04,0x10,0x6A,0x01,0x40,0x63,
+0xBB,0xE7,0xFF,0xCC,0xD8,0x13,0x0A,0x01,0xC3,0x20,0x10,0x01,0x13,0x4A,0x04,0xEA,
+0xF9,0x09,0xBC,0x43,0x5A,0xC3,0xFF,0x79,0x09,0xBC,0x9B,0x00,0xE4,0x00,0x00,0x35,
+0x4F,0x38,0x10,0x9F,0x01,0x8F,0x3B,0x5F,0x18,0x00,0x0F,0x39,0x02,0x5F,0x99,0x06,
+0x5F,0x37,0x1D,0x4A,0xFC,0xB8,0xD7,0x58,0xFF,0x54,0xC1,0x40,0x10,0x01,0xC2,0xE2,
+0x32,0x88,0xFD,0x4A,0x01,0x64,0x20,0x00,0x35,0x4E,0xF7,0x0A,0x0E,0xEA,0x19,0xE4,
+0x00,0x00,0x2F,0x53,0x00,0xDF,0xC2,0xE0,0x6F,0x68,0x20,0x00,0x25,0x4E,0xF7,0x12,
+0x5F,0x17,0x06,0x0F,0x0A,0x19,0x88,0x6A,0xE7,0xFF,0x14,0xEE,0xC1,0x60,0x10,0x01,
+0x89,0xCD,0xFD,0x6B,0x0B,0x90,0x8A,0xED,0x12,0x2B,0x00,0x53,0x20,0x14,0x0B,0x17,
+0x00,0xCF,0x18,0x00,0x19,0x43,0x18,0xC8,0x0F,0x17,0x01,0xC3,0x00,0x10,0x01,0x9E,
+0xE2,0xFF,0x18,0x09,0x40,0xD6,0xF8,0xFF,0x4E,0x88,0x6A,0xE7,0xFF,0x14,0x88,0xC2,
+0x00,0x10,0x01,0x9A,0xE0,0xFE,0x10,0x08,0x26,0x22,0x20,0x4A,0x13,0x0B,0x00,0x27,
+0x04,0x33,0x12,0xF0,0x00,0x5E,0xE0,0x01,0x4A,0xE1,0x01,0x13,0x0B,0x00,0x23,0x09,
+0x2E,0x13,0x10,0x00,0x23,0x05,0x3A,0x13,0x2B,0x07,0x13,0x0B,0x37,0xD7,0x38,0x02,
+0x2A,0x0F,0x0B,0x0A,0x23,0x04,0xFA,0x0F,0x0B,0x3A,0x23,0x04,0xE2,0xC3,0x00,0x10,
+0x01,0xEB,0x38,0x0B,0x72,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0xA5,0xFF,0x39,0xFC,0x01,
+0x4F,0x19,0xFA,0x47,0x38,0xCE,0x43,0x19,0xC5,0xC3,0x20,0x10,0x01,0xEB,0x59,0x0B,
+0x25,0xD7,0x1A,0x00,0xA4,0xE4,0x00,0x00,0x1B,0x23,0x04,0x26,0x13,0x10,0x00,0x23,
+0x00,0x18,0x22,0xE0,0x9C,0x53,0x00,0x19,0x0A,0xEE,0x00,0xCE,0xF7,0x00,0x14,0x42,
+0xF7,0xC0,0x0E,0xEE,0x01,0xC3,0x40,0x10,0x01,0x9D,0xC2,0xFF,0x5A,0x09,0x40,0xD5,
+0xDA,0xFF,0x4E,0x88,0x6A,0xE7,0xFF,0x13,0x54,0x0E,0xEF,0x02,0x22,0xE4,0x26,0x98,
+0x61,0xE7,0xFF,0xCA,0xC4,0x12,0xEB,0x00,0x22,0xE0,0x5A,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x08,0x38,0x13,0x2B,0x00,0xD3,0x20,0x09,0x86,0xE4,0x00,0x02,0x93,0x98,0x61,
+0x98,0x81,0x88,0xAA,0xE7,0xFF,0x0E,0x1C,0x0A,0xEA,0x10,0x0B,0x0A,0x06,0x0B,0x2A,
+0x12,0x5D,0xD7,0x04,0x42,0x38,0xBD,0x40,0xB8,0xCD,0xCA,0xE0,0x07,0xFF,0x43,0x37,
+0xCD,0x0B,0x4A,0x02,0x0B,0x6A,0x08,0x40,0x97,0xC5,0x5C,0xF9,0x04,0x13,0xCB,0x00,
+0x0B,0x2A,0x0A,0x40,0x78,0xD5,0x42,0x77,0xCD,0x40,0xDA,0xC5,0xC2,0xE0,0x10,0x01,
+0x42,0x59,0xDD,0x42,0x9B,0xCD,0xFE,0xF7,0x0B,0xA8,0x9B,0xA0,0xC9,0x00,0x07,0xFF,
+0xE4,0x00,0x00,0xC5,0x0B,0x97,0xFE,0xD7,0x1C,0x00,0x98,0x43,0x9C,0xD5,0x43,0x9C,
+0x8B,0x43,0x9C,0x18,0x8F,0x8E,0xE4,0x00,0x00,0x2D,0xD7,0x84,0x00,0xA8,0x43,0x88,
+0xE5,0x43,0x9C,0xD5,0x43,0x9C,0x2B,0x43,0x9C,0x30,0x8F,0x87,0x0F,0x97,0xFF,0x0B,
+0x97,0x00,0xD7,0x3C,0x00,0x88,0x43,0x9C,0xDD,0x43,0x9C,0xCB,0x43,0x9C,0x90,0xE4,
+0x00,0x00,0x31,0xD7,0x93,0x00,0xB8,0x43,0x88,0xE5,0x43,0x9C,0xDD,0x43,0x9C,0xCB,
+0x43,0x9C,0xA0,0xFF,0x9C,0x07,0xFF,0x0F,0x97,0x01,0x9F,0xA1,0x1E,0xF7,0x30,0x5F,
+0xBD,0x00,0xD7,0xBE,0xFD,0x16,0x0B,0x0A,0x12,0xCA,0xE0,0x07,0xFF,0x0B,0x2A,0x10,
+0x0B,0x4A,0x0C,0x43,0x77,0xCD,0x42,0xF7,0xD5,0x43,0x7B,0xC5,0x0B,0x0A,0x0E,0x43,
+0x97,0xC5,0xC2,0xE0,0x10,0x01,0x9B,0x00,0xFE,0xF7,0x0B,0xA6,0xE4,0x00,0x00,0x59,
+0x0B,0xB7,0x00,0x43,0xBD,0xCD,0xCF,0xBD,0x07,0xFF,0x43,0xBD,0xD8,0x9F,0x01,0x0F,
+0xB7,0x01,0x5F,0x18,0x00,0x0B,0xB7,0x02,0x43,0xBD,0xD5,0xCF,0xBD,0x07,0xFF,0x43,
+0xBD,0xE0,0x0F,0xB7,0x03,0x1E,0xF7,0x30,0xD7,0x1E,0xFE,0xC6,0xE7,0xFF,0xFD,0xBF,
+0xCF,0x57,0x00,0x30,0x9E,0xE1,0x8F,0x4B,0x0F,0x5A,0x0E,0xC3,0x40,0x95,0xEC,0x4B,
+0x18,0x0A,0xE4,0x00,0x00,0x11,0x9A,0xE0,0x8B,0x17,0x5F,0x57,0x00,0xD7,0x3A,0xFF,
+0x1D,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x38,0x0A,0xEC,0x01,0x52,0xF7,0x08,0xE4,
+0x00,0x00,0x33,0x9B,0x07,0xC2,0xE0,0x10,0x01,0x18,0x10,0x00,0xEF,0x17,0x03,0x71,
+0x0A,0xEC,0x01,0x9B,0x17,0x46,0xF7,0xC4,0x0E,0xEC,0x01,0xC1,0xC0,0x10,0x01,0x0E,
+0xEF,0x02,0xFD,0x4E,0x08,0x30,0xD2,0xE1,0x0A,0x6E,0xE7,0xFF,0xE1,0x48,0xC2,0xE0,
+0x10,0x01,0x99,0x60,0xEE,0xF7,0x07,0x8E,0x22,0xE5,0x6A,0xE4,0x00,0x02,0x29,0x1C,
+0x61,0x01,0x88,0x8F,0x98,0xA3,0xE7,0xFF,0x6A,0x14,0x1E,0xE1,0x08,0x8E,0xEB,0x12,
+0xF7,0xF9,0x1F,0x17,0x1A,0x4E,0xF7,0x08,0x4F,0x18,0x08,0x8E,0xF0,0x8F,0x0D,0x0A,
+0xF7,0x01,0x0B,0x18,0x00,0xD7,0x17,0x00,0x98,0x9A,0xE1,0x0B,0x0A,0x01,0x4E,0xF7,
+0x5C,0x46,0xF7,0xC5,0xE4,0x00,0x00,0x25,0x9A,0xE1,0x0B,0x0A,0x01,0x4E,0xF7,0x5C,
+0x46,0xF7,0xBF,0x46,0xF7,0xC4,0x9D,0x61,0x0E,0xEA,0x01,0x5D,0x6B,0x00,0xE4,0x00,
+0x00,0x31,0xC1,0xF8,0x00,0x21,0xC2,0x00,0x10,0x01,0xC1,0xC0,0x10,0x01,0xFD,0xEF,
+0xB4,0xBA,0xFE,0x10,0x03,0x72,0xF2,0xEE,0x08,0x66,0xD6,0xEB,0xFC,0xAD,0x0A,0xEA,
+0x01,0x22,0xE0,0x34,0x0A,0xEC,0x01,0x52,0xF7,0x10,0xE4,0x00,0x00,0x3B,0x0A,0xEC,
+0x01,0x57,0x17,0x10,0x23,0x00,0x34,0x9B,0x21,0xC3,0x00,0x10,0x01,0xFB,0x38,0x08,
+0x50,0x1F,0x40,0xEF,0x46,0xF7,0xD4,0x0E,0xEC,0x01,0xC1,0x40,0x10,0x01,0xC3,0x00,
+0x10,0x01,0xEE,0xEA,0x08,0x5A,0xFF,0x18,0x08,0x77,0x22,0xE0,0x56,0x18,0x18,0x00,
+0x0A,0xEC,0x01,0x56,0xF7,0x10,0x22,0xE1,0x64,0x9A,0xE1,0xE4,0x00,0x00,0x41,0x22,
+0xE4,0x92,0x12,0xF8,0x00,0x9E,0xE1,0x5E,0xF7,0x00,0x1A,0xF8,0x00,0x0B,0x0C,0x01,
+0x57,0x18,0x10,0x23,0x00,0xE0,0x26,0xE4,0xE5,0x9A,0xE2,0xEE,0xEA,0x08,0x58,0xE4,
+0x00,0x00,0x61,0x22,0xE8,0x7E,0x18,0x18,0x00,0x0A,0xEC,0x01,0x56,0xF7,0x10,0x22,
+0xE0,0x34,0x98,0x62,0xE7,0xFF,0xA3,0x4C,0xE4,0x00,0x00,0x2F,0x9A,0xE3,0xE7,0xFF,
+0xFF,0xBB,0x22,0xEC,0x36,0x98,0x60,0xE7,0xFF,0xA3,0x26,0xEC,0x0A,0x08,0x58,0x0B,
+0x0C,0x00,0xC2,0xE0,0x10,0x01,0x27,0x1C,0x56,0xF3,0x17,0x08,0x3C,0xD3,0x09,0x08,
+0x1D,0x9F,0x01,0xFB,0x17,0x08,0x3C,0xE4,0x00,0x01,0xF3,0xF8,0x17,0x08,0x3C,0xE4,
+0x00,0x01,0xFB,0x0E,0xEF,0x02,0xD2,0xE2,0x07,0xB6,0x0A,0xEC,0x01,0x56,0xF7,0x40,
+0x22,0xE0,0x26,0x98,0x63,0xE7,0xFF,0xF4,0xEE,0x12,0xEB,0x00,0x22,0xE0,0x36,0x98,
+0x60,0x98,0x80,0x98,0xA0,0xE4,0x00,0x00,0x3B,0x22,0xE4,0x3E,0x08,0x6B,0x17,0x08,
+0x8B,0x19,0x98,0xA1,0xE4,0x00,0x00,0x1D,0xD2,0xE1,0x06,0x21,0x98,0x60,0x98,0x80,
+0x98,0xA2,0x1C,0xC1,0x04,0xE7,0xFF,0xBD,0xD2,0xD0,0x61,0x05,0x9E,0x0E,0xE1,0x06,
+0x22,0xE0,0x2A,0x52,0xE0,0x58,0xE4,0x00,0x00,0xD9,0x9E,0xFF,0xD2,0xEB,0x03,0x6D,
+0x4E,0xF7,0x10,0xC3,0x18,0x00,0x21,0xFF,0x18,0xBB,0x3C,0x8E,0xF8,0x0E,0xF7,0x02,
+0x86,0xE9,0x52,0xE0,0x60,0xE4,0x00,0x00,0x9B,0x52,0xE0,0x61,0xE4,0x00,0x00,0x8D,
+0x52,0xE0,0x62,0xE4,0x00,0x00,0x7F,0x52,0xE0,0x63,0xE4,0x00,0x00,0x71,0x52,0xE0,
+0x64,0xE4,0x00,0x00,0x63,0x52,0xE0,0x65,0xE4,0x00,0x00,0x55,0x52,0xE0,0x66,0xE4,
+0x00,0x00,0x47,0x52,0xE0,0x67,0xE4,0x00,0x00,0x39,0x52,0xE0,0x68,0xE4,0x00,0x00,
+0x2B,0x52,0xE0,0x69,0xE4,0x00,0x00,0x1D,0x52,0xE0,0x6A,0xE4,0x00,0x00,0x0F,0x52,
+0xE0,0x6B,0x0E,0xEA,0x01,0xE4,0x00,0x00,0x6F,0x0C,0x0A,0x01,0xE4,0x00,0x00,0x61,
+0x0E,0xEF,0x02,0x22,0xE4,0xA6,0x9B,0x05,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x60,
+0x9B,0x03,0xC2,0xE0,0x10,0x01,0x98,0x60,0xFB,0x17,0x08,0x50,0xE7,0xFF,0xA0,0xFC,
+0xE7,0xFF,0x9B,0xCC,0xE4,0x00,0x00,0x11,0xE7,0xFF,0x9C,0xA6,0xC2,0xE0,0x10,0x01,
+0xEB,0x17,0x08,0x33,0xC3,0x00,0x7D,0x0A,0x20,0x00,0x61,0xC3,0x00,0x10,0x01,0x9B,
+0x5E,0xF3,0x38,0x08,0x1A,0xEC,0x17,0x08,0x33,0x47,0x39,0xD4,0xFB,0x38,0x08,0x1A,
+0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,
+0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,
+0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0x9C,0x38,0x0D,0x41,0x00,0x0D,0x21,
+0x04,0x89,0x43,0x20,0x84,0x46,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xD8,0x92,0x98,0x68,
+0xE4,0x00,0x00,0x1D,0x98,0x62,0x88,0x8A,0xE7,0xFF,0xD8,0x76,0x98,0x69,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x9C,0x28,0xE7,0xFF,0xD8,0x57,0x9C,0x38,0x0D,0x21,
+0x04,0x0D,0x41,0x00,0x89,0x43,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xD8,0x32,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xD8,0x13,0xD0,0x69,
+0x08,0x05,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBB,0x6C,0x8E,0xF8,0xC3,
+0x20,0x10,0x01,0x0F,0x77,0x02,0xC3,0x40,0x10,0x01,0xC3,0x00,0x10,0x01,0xC2,0xE0,
+0x10,0x01,0xFF,0x39,0x09,0xF8,0xFF,0x5A,0x09,0x48,0xFF,0x18,0x0C,0x96,0xFE,0xF7,
+0x09,0x0C,0x87,0x69,0xCC,0x63,0x00,0x1A,0x5C,0x63,0x00,0x4F,0x23,0x08,0x4C,0x63,
+0x10,0x8F,0x19,0x8E,0xF9,0x8F,0x43,0x9B,0x20,0x43,0x77,0xCC,0x43,0xB8,0xCC,0x4F,
+0x99,0x08,0x0B,0xBD,0x01,0x8F,0x9A,0x0F,0x9C,0x02,0x4F,0x9C,0x42,0x43,0x9D,0xE5,
+0x0F,0x9B,0x01,0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x85,0xE4,0x00,0x01,0x27,0x9C,
+0x7E,0xCC,0x63,0x00,0x1A,0x5C,0x63,0x00,0x4F,0x43,0x08,0x4C,0x63,0x10,0x8F,0x1A,
+0x8C,0x79,0x8E,0xFA,0x9B,0x20,0x43,0x77,0xCC,0x43,0xB8,0xCC,0x4F,0x99,0x08,0x0B,
+0xBD,0x01,0x8F,0x83,0x0F,0x9C,0x02,0x4F,0x9C,0x42,0x43,0x9D,0xE5,0x0F,0x9B,0x01,
+0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x85,0xE4,0x00,0x00,0xAD,0x0B,0x78,0x35,0x0F,
+0x3A,0x6A,0x4F,0x39,0x42,0x43,0x3B,0xCD,0x0B,0x78,0x37,0x0F,0x37,0x35,0x0F,0x3A,
+0x6E,0x4F,0x39,0x42,0x43,0x3B,0xCD,0x0F,0x37,0x37,0x0F,0x3A,0x72,0xE4,0x00,0x00,
+0x4B,0x0F,0x59,0x6A,0x0B,0x78,0x35,0x4F,0x5A,0x42,0x43,0x5B,0xD5,0x0B,0x78,0x37,
+0x0F,0x57,0x35,0x0F,0x59,0x6E,0x0F,0x39,0x72,0x4F,0x5A,0x42,0x43,0x5B,0xD5,0x0F,
+0x57,0x37,0x4F,0x39,0x42,0x0B,0x18,0x39,0x43,0x18,0xCD,0x0F,0x17,0x39,0x85,0x29,
+0x9C,0x38,0x0D,0x21,0x04,0x20,0x64,0x3E,0x98,0x60,0xE7,0xFF,0xFD,0xE8,0x98,0x68,
+0xE4,0x00,0x00,0x19,0x98,0x62,0xE7,0xFF,0xFD,0xD0,0x98,0x69,0x0D,0x21,0x06,0x9C,
+0x28,0xE7,0xFF,0xFD,0xBB,0x9C,0x38,0x98,0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFD,0xA4,
+0x0D,0x21,0x06,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xFD,0x8F,0x9C,0x38,0x0D,0x21,0x04,
+0xE7,0xFF,0xA8,0x66,0x20,0x60,0x5E,0xE7,0xFF,0xA8,0x44,0x98,0x80,0xE7,0xFF,0xB5,
+0x9A,0xE7,0xFF,0xA8,0x30,0x98,0x82,0xE4,0x00,0x00,0x37,0xE7,0xFF,0xA8,0x30,0x20,
+0x64,0x86,0xE7,0xFF,0xA8,0x0E,0x98,0x81,0xE7,0xFF,0xB5,0x64,0xE7,0xFF,0xA7,0xFA,
+0x98,0x83,0xE7,0xFF,0xB2,0xB8,0xE7,0xFF,0xCF,0x2C,0x9A,0xE0,0xE4,0x00,0x00,0x8D,
+0xE7,0xFF,0xA7,0xE6,0x20,0x68,0x36,0xE7,0xFF,0xA7,0xC4,0x98,0x82,0xE4,0x00,0x00,
+0x23,0xE7,0xFF,0xA7,0xC4,0x20,0x6C,0x5E,0xE7,0xFF,0xA7,0xA2,0x98,0x83,0xE7,0xFF,
+0xB4,0xF8,0xE7,0xFF,0xA7,0x8E,0x98,0x87,0xE7,0xFF,0xFF,0x95,0xE7,0xFF,0xA7,0x8E,
+0x9A,0xE0,0xD0,0x67,0x00,0x86,0xE7,0xFF,0xA7,0x66,0x98,0x87,0xE7,0xFF,0xB4,0xBC,
+0x9A,0xE1,0x88,0x77,0x0D,0x21,0x06,0x9C,0x28,0x85,0x29,0x1C,0x21,0xE8,0x0D,0x21,
+0x14,0x0D,0x41,0x10,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x80,0x01,0x80,0x01,0x80,0x01,
+0x80,0x01,0xE7,0xFF,0x93,0x8C,0x0C,0x61,0x00,0xE7,0xFF,0x93,0x86,0x0C,0x61,0x04,
+0x0E,0xE1,0x02,0xD2,0xE0,0x14,0xA2,0x0E,0xE1,0x02,0xC1,0x60,0x10,0x01,0xC1,0x40,
+0x10,0x01,0x57,0x17,0x10,0xFD,0x6B,0x00,0xE6,0xFD,0x4A,0x00,0xD4,0xD3,0x00,0x06,
+0xCA,0x50,0x60,0x10,0xE7,0xFF,0x93,0x68,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xC3,
+0x9F,0x01,0x5F,0x18,0x04,0xEF,0x17,0x00,0xC3,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,
+0x33,0x23,0x00,0x24,0x9F,0x01,0xEF,0x17,0x08,0x33,0xE7,0xFF,0x93,0x6C,0x0A,0xEB,
+0x0B,0x40,0x63,0xBD,0x5E,0xE3,0x04,0x5E,0xE3,0xBB,0x20,0x02,0x3F,0xC2,0xE0,0x10,
+0x01,0xEA,0xF7,0x06,0x87,0x56,0xF7,0x20,0xD2,0xE0,0x04,0x0A,0x98,0x61,0xE7,0xFF,
+0xB5,0xAC,0x20,0x61,0xDE,0xE7,0xFF,0xA6,0x08,0x20,0x64,0x56,0xC2,0xE0,0x10,0x01,
+0xF2,0xF7,0x00,0xC8,0x56,0xF7,0x01,0x22,0xE1,0x8A,0xE4,0x00,0x00,0x1F,0xE7,0xFF,
+0xA5,0xD6,0x20,0x63,0xA8,0xE4,0x00,0x00,0xA9,0xE7,0xFF,0xCC,0x18,0xC2,0xE0,0x10,
+0x01,0xEB,0x17,0x06,0x87,0xC7,0x18,0xFF,0xDF,0xEF,0x17,0x06,0x87,0xE7,0xFF,0xA5,
+0x98,0x20,0x60,0x5E,0x98,0x81,0x98,0xA0,0xE7,0xFF,0x2A,0xF2,0x98,0x60,0x88,0x83,
+0xE7,0xFF,0xB0,0x3C,0xE4,0x00,0x00,0x43,0x98,0x80,0x98,0x62,0xE7,0xFF,0xB0,0x24,
+0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x5C,0x5E,0x98,0x60,0xE7,0xFF,0x2F,0xDC,0xE7,0xFF,
+0x92,0x44,0x0C,0x6B,0x09,0xE7,0xFF,0xCC,0x6E,0x0A,0xEA,0x01,0x52,0xF7,0x10,0x0E,
+0xEA,0x01,0xE4,0x00,0x03,0xEF,0x57,0x17,0x40,0x23,0x00,0x38,0x50,0x60,0x40,0xE7,
+0xFF,0x91,0xB2,0xE4,0x00,0x03,0xCD,0xC6,0xF7,0x01,0x00,0xD2,0xE0,0x0E,0xF2,0x98,
+0x60,0xE7,0xFF,0x91,0x5E,0xFC,0x60,0x01,0x00,0xE7,0xFF,0x91,0x5E,0xFC,0x60,0x01,
+0x00,0xE7,0xFF,0x91,0x6E,0xE7,0xFF,0xA4,0xA8,0xD0,0x67,0x0D,0xA5,0xC2,0xF8,0x00,
+0x21,0xFE,0xF7,0xBB,0x98,0x4C,0x63,0x10,0x8C,0x77,0x0E,0xE3,0x02,0x86,0xE9,0xE7,
+0xFF,0xA4,0x88,0x20,0x60,0x46,0x98,0x80,0xE7,0xFF,0xB1,0xC4,0x98,0x60,0x98,0x87,
+0xE4,0x00,0x02,0x77,0xE7,0xFF,0xA4,0x5E,0xD0,0x67,0x0C,0x2E,0x98,0x60,0x98,0x87,
+0xE4,0x00,0x01,0xFF,0xE7,0xFF,0xFB,0xCE,0xD0,0x60,0x0B,0xAA,0xE7,0xFF,0xB2,0xEA,
+0x5D,0x83,0x04,0x98,0x61,0xE7,0xFF,0xB3,0x9E,0xD0,0x60,0x07,0x56,0xC1,0x80,0x19,
+0x0A,0x20,0x03,0x89,0xE7,0xFF,0x2E,0xE4,0xE7,0xFF,0x2E,0xB4,0x5C,0x63,0x00,0x24,
+0x64,0x33,0x98,0x61,0xC1,0x80,0x32,0x0A,0x20,0x01,0xE9,0x98,0x80,0x98,0x62,0xE7,
+0xFF,0xAE,0x7E,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x5A,0xB8,0x98,0x60,0xE7,0xFF,0x2E,
+0x36,0xE7,0xFF,0x90,0x9E,0x0C,0x6B,0x09,0xE4,0x00,0x01,0xAF,0xE7,0xFF,0xFB,0x1E,
+0xD0,0x60,0x08,0xEA,0xE7,0xFF,0xB2,0x3A,0xE7,0xFF,0x5A,0xF8,0xE7,0xFF,0x5B,0x88,
+0xD0,0x61,0x04,0x9A,0xE7,0xFF,0x5B,0xA8,0x20,0x64,0xD2,0xE7,0xFF,0x2D,0xC6,0x5C,
+0x63,0x00,0xC0,0x60,0x18,0xEE,0x20,0x00,0x1D,0xE7,0xFF,0x2D,0xD2,0xE7,0xFF,0x2D,
+0xA2,0x98,0x80,0x5D,0x43,0x00,0x98,0x62,0xE7,0xFF,0xAD,0xCC,0xCC,0x6A,0x00,0x64,
+0xFC,0x63,0x01,0x5E,0xE7,0xFF,0x59,0xFE,0xE4,0x00,0x01,0x0F,0xE7,0xFF,0x5B,0x58,
+0x98,0x62,0x98,0x80,0xE4,0x00,0x00,0xEF,0xE7,0xFF,0xA2,0xD6,0x20,0x64,0x3E,0xE7,
+0xFF,0xA2,0xC8,0x88,0x83,0x98,0x64,0xE4,0x00,0x00,0x71,0xE7,0xFF,0xA2,0xB0,0x20,
+0x63,0xC0,0xE7,0xFF,0xA2,0xA2,0xD0,0x60,0x05,0x3E,0x98,0x64,0x98,0x80,0xE7,0xFF,
+0xAF,0xD8,0x98,0x64,0xE4,0x00,0x00,0x8B,0x98,0x64,0x98,0x89,0xE4,0x00,0x00,0x27,
+0xE7,0xFF,0xA2,0x66,0x20,0x64,0x76,0xE7,0xFF,0xA2,0x58,0x88,0x83,0x98,0x67,0xE7,
+0xFF,0xAF,0x96,0x0A,0xEA,0x01,0xCA,0xF7,0x01,0x00,0x0E,0xEA,0x01,0xE4,0x00,0x00,
+0xE1,0xE7,0xFF,0xA2,0x24,0x20,0x63,0x88,0xE7,0xFF,0xA2,0x16,0x20,0x61,0x86,0x98,
+0x67,0x98,0x80,0xE7,0xFF,0xAF,0x4E,0x98,0x67,0x98,0x81,0xE7,0xFF,0xAC,0xA6,0xE7,
+0xFF,0xC9,0x1A,0xE4,0x00,0x00,0x95,0x0E,0xE1,0x06,0x22,0xE1,0x3C,0x0E,0xE1,0x06,
+0x56,0xF7,0x20,0x22,0xE1,0x18,0x98,0x60,0xE7,0xFF,0x8E,0x30,0x50,0x60,0x20,0xE7,
+0xFF,0x8E,0x3A,0xE7,0xFF,0x80,0xB4,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD9,0xC7,
+0x18,0xFF,0xFE,0x50,0x60,0x20,0xEF,0x17,0x00,0xD9,0xE7,0xFF,0x8E,0x14,0xC2,0xE0,
+0x10,0x01,0xEB,0x17,0x00,0xD7,0x53,0x18,0x20,0xEF,0x17,0x00,0xD7,0xC2,0xE0,0x10,
+0x01,0xF0,0x77,0x03,0x6E,0xE7,0xFF,0x8D,0xB6,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,
+0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x0C,0x63,0x02,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x0C,0x83,0x00,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x24,0x14,0x0B,0x17,0x01,0x53,0x18,0x01,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xDF,0x0F,
+0x17,0x01,0x85,0x29,0x9C,0x30,0x0D,0x21,0x0C,0x0D,0x41,0x08,0x0D,0x61,0x04,0x0D,
+0x81,0x00,0xC1,0x54,0x00,0x01,0xC9,0x8A,0x22,0x28,0x0A,0xEC,0x01,0xC6,0xF7,0xFF,
+0xFB,0xC9,0x6A,0x22,0x04,0x0E,0xEC,0x01,0xFF,0x00,0x80,0x00,0x0A,0xEB,0x01,0x46,
+0xF7,0xC5,0x5E,0xF7,0x04,0xC9,0x4A,0x24,0xA8,0x0E,0xEB,0x01,0x0A,0xEA,0x01,0xCA,
+0xF7,0x30,0x00,0x50,0x60,0x64,0x0E,0xEA,0x01,0xE4,0x00,0x28,0x4A,0x0A,0xEC,0x01,
+0x52,0xF7,0x04,0x50,0x60,0x1E,0x0E,0xEC,0x01,0xE4,0x00,0x28,0x2A,0x0A,0xEB,0x01,
+0xC6,0xF7,0x7F,0xFF,0x0E,0xEB,0x01,0x0A,0xEA,0x01,0xC6,0xF7,0xCF,0xFF,0x0E,0xEA,
+0x01,0x0D,0x81,0x02,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,
+0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x2C,0x08,0x77,0x01,0x4C,0x63,0x09,
+0x54,0x63,0x1F,0x9C,0x61,0x85,0x29,0x9C,0x7F,0x5C,0x63,0x00,0x5C,0x62,0xFB,0x20,
+0x00,0x81,0xC2,0xF4,0x00,0x01,0x4C,0x63,0x08,0xCA,0xF7,0x24,0x2C,0x54,0x63,0x3E,
+0x0B,0x17,0x01,0x1F,0x20,0xC1,0x47,0x18,0xCC,0x44,0x63,0xC5,0x0C,0x77,0x01,0x85,
+0x29,0x9B,0x19,0x20,0x60,0x62,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x37,
+0x01,0x47,0x19,0xC4,0x53,0x18,0x04,0xE4,0x00,0x00,0x87,0x20,0x64,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x17,0x01,0x53,0x18,0x06,0xE4,0x00,0x00,0x5D,
+0x20,0x68,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x17,0x01,0xC7,0x18,
+0xFF,0xF9,0xE4,0x00,0x00,0x31,0x20,0x6C,0x5E,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,
+0x10,0x0B,0x37,0x01,0x47,0x19,0xC4,0x53,0x18,0x02,0x0F,0x17,0x01,0x85,0x29,0x5C,
+0x63,0x00,0x9C,0x30,0x0D,0x21,0x0C,0x0D,0x41,0x08,0x0C,0xA1,0x04,0x95,0x50,0xC9,
+0x4A,0x20,0x80,0x8D,0x43,0x4D,0x4A,0x18,0x88,0x6A,0xE7,0xFF,0xFC,0xE0,0x0C,0xA1,
+0x06,0x1C,0x6A,0x04,0x0D,0x21,0x0E,0x0D,0x41,0x0A,0x88,0x85,0x1C,0x21,0x10,0xE7,
+0xFF,0xFC,0xB7,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x5D,0x44,0x00,0x4E,0xEA,0x08,0x0D,
+0x61,0x0C,0x0D,0x81,0x08,0x5D,0x65,0x00,0x5C,0x63,0x00,0x4D,0x83,0x18,0x8D,0x8B,
+0x8D,0x97,0x06,0xE0,0x81,0xCA,0xF7,0x04,0x00,0x0D,0x21,0x14,0x0D,0xA1,0x04,0xC5,
+0x8C,0x1F,0xFC,0x5D,0xA6,0x00,0x8D,0x97,0x88,0x6C,0xE7,0xFF,0xFC,0x00,0x55,0x4A,
+0x01,0x50,0x80,0xFF,0x4D,0x4A,0x08,0x8D,0x6A,0x4D,0x6B,0x18,0x4C,0x84,0x5C,0x4D,
+0x6D,0x5C,0x44,0x84,0x27,0x0D,0xA1,0x06,0x44,0x83,0x24,0x0D,0x41,0x12,0x88,0x6C,
+0x44,0x84,0x5D,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x21,0x16,0x1C,0x21,0x18,0xE7,
+0xFF,0xFB,0xD7,0x5C,0x84,0x04,0x20,0x60,0x28,0x20,0x64,0xC2,0xE4,0x00,0x00,0x33,
+0x4C,0x84,0x41,0xC2,0xF4,0x00,0x01,0x9C,0x9F,0xCA,0xF7,0x24,0x34,0xC4,0x84,0x01,
+0xFF,0xE4,0x00,0x00,0x2B,0x4C,0x84,0x41,0xC2,0xF4,0x00,0x01,0x9C,0x9F,0xCA,0xF7,
+0x24,0x38,0xC4,0x84,0x01,0xFF,0x0C,0x97,0x01,0x85,0x29,0x07,0x00,0xFF,0xCB,0x18,
+0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,0x00,0x7D,0xC2,0xF4,0x00,0x01,
+0x47,0x64,0x27,0xCB,0x37,0x24,0x3C,0x0B,0x59,0x01,0x47,0x5A,0xDC,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x40,0x47,0x04,0xC4,0x0B,0x37,0x01,0x4F,0x18,0x81,0x44,0x84,0x27,
+0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,
+0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,0xF4,0x00,0x01,0x47,0x9A,0xD7,
+0xCB,0x37,0x24,0x3C,0x0B,0x79,0x01,0x47,0x7B,0xE4,0x47,0x5A,0xDD,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x40,0x44,0x84,0xC4,0x0B,0x57,0x01,0x4C,0x84,0x81,0x47,0x24,0x27,
+0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0x07,0x00,0xFF,0xCB,0x18,
+0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,0x00,0x7D,0xC2,0xF4,0x00,0x01,
+0x47,0x64,0x27,0xCB,0x37,0x24,0x1C,0x0B,0x59,0x01,0x47,0x5A,0xDC,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x20,0x47,0x04,0xC4,0x0B,0x37,0x01,0x4F,0x18,0x81,0x44,0x84,0x27,
+0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,
+0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,0xF4,0x00,0x01,0x47,0x9A,0xD7,
+0xCB,0x37,0x24,0x1C,0x0B,0x79,0x01,0x47,0x7B,0xE4,0x47,0x5A,0xDD,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x20,0x44,0x84,0xC4,0x0B,0x57,0x01,0x4C,0x84,0x81,0x47,0x24,0x27,
+0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,
+0x17,0x24,0x80,0x0B,0x38,0x01,0x5F,0x23,0x04,0x0F,0x38,0x01,0x07,0x20,0xFF,0xCB,
+0x39,0xFF,0xFF,0xCA,0xF7,0x24,0x84,0x44,0x63,0xCC,0x0B,0x17,0x01,0x4C,0x63,0x81,
+0xFF,0x20,0xFF,0x00,0x47,0x18,0xCC,0x44,0x63,0xC5,0x0C,0x77,0x01,0x85,0x29,0x07,
+0x00,0xFF,0xCB,0x18,0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,0x00,0x7D,
+0xC2,0xF4,0x00,0x01,0x47,0x64,0x27,0xCB,0x37,0x24,0x24,0x0B,0x59,0x01,0x47,0x5A,
+0xDC,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x28,0x47,0x04,0xC4,0x0B,0x37,0x01,0x4F,0x18,
+0x81,0x44,0x84,0x27,0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,0x19,0xC4,
+0x47,0x04,0xC5,0x0F,0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,0xF4,0x00,
+0x01,0x47,0x9A,0xD7,0xCB,0x37,0x24,0x24,0x0B,0x79,0x01,0x47,0x7B,0xE4,0x47,0x5A,
+0xDD,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x28,0x44,0x84,0xC4,0x0B,0x57,0x01,0x4C,0x84,
+0x81,0x47,0x24,0x27,0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0xC3,
+0x14,0x00,0x01,0xCA,0xF8,0x22,0x08,0x20,0x64,0x3A,0x0B,0x37,0x01,0xCB,0x39,0x10,
+0x00,0xE4,0x00,0x00,0x1D,0x20,0x60,0x36,0x0B,0x37,0x01,0xC7,0x39,0xEF,0xFF,0x0F,
+0x37,0x01,0xCA,0xF8,0x22,0x08,0x0B,0x17,0x01,0xCB,0x18,0x20,0x00,0x0F,0x17,0x01,
+0x85,0x29,0x5C,0x84,0x00,0x1F,0x00,0x80,0x20,0x60,0x28,0x20,0x64,0xAA,0xE4,0x00,
+0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x54,0xE4,0x00,0x00,0x19,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0x64,0x0B,0x37,0x01,0x54,0x84,0x7F,0x47,0x19,0xC4,0x47,
+0x04,0xC5,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0x20,0x60,0x28,0x20,0x64,0xAA,
+0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x50,0xE4,0x00,0x00,0x19,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x61,0x13,0x17,0x00,0x54,0x84,0x1F,0x57,0x18,
+0xE0,0x44,0x84,0xC5,0x18,0x97,0x00,0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0D,0x61,
+0x04,0x0D,0x21,0x0C,0x5D,0x44,0x00,0x89,0x63,0x1C,0x8A,0xF1,0x4C,0x84,0x08,0x5C,
+0x83,0xF3,0x20,0x00,0x19,0x50,0x80,0x1F,0x88,0x6B,0xE7,0xFF,0xFF,0x5A,0x1F,0x00,
+0x80,0x21,0x60,0x28,0x21,0x64,0xAA,0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x24,0x4C,0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x60,0x0B,
+0x37,0x01,0x55,0x4A,0x7F,0x47,0x19,0xC4,0x47,0x0A,0xC5,0x0F,0x17,0x01,0x0D,0x61,
+0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0x20,0x64,0x8E,0xC2,
+0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,0x01,0x53,0x39,
+0xF0,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xF0,0xE4,0x00,0x00,0x47,0x20,
+0x60,0x8A,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,
+0x01,0xC7,0x39,0xFF,0x0F,0x0F,0x38,0x01,0x0B,0x17,0x01,0x53,0x18,0x0F,0x0F,0x17,
+0x01,0x85,0x29,0x20,0x64,0x8E,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,
+0x22,0x60,0x0B,0x38,0x01,0x53,0x39,0x08,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,
+0xFE,0xFF,0xE4,0x00,0x00,0x49,0x20,0x60,0x8E,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,
+0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,0x01,0xC7,0x39,0xFF,0xF7,0x0F,0x38,0x01,0x0B,
+0x17,0x01,0xCB,0x18,0x01,0x00,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x22,0x60,0x0B,0x17,0x01,0xCB,0x18,0x02,0x00,0xE4,0x00,0x00,
+0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x60,0x0B,0x17,0x01,0xC7,
+0x18,0xFD,0xFF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x54,0x63,0x7F,0xCA,
+0xF7,0x24,0xA0,0x1F,0x20,0x80,0x0B,0x17,0x01,0x47,0x18,0xCC,0x47,0x03,0xC5,0x0F,
+0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x4C,0x63,0x40,0xCA,0xF7,0x24,0xA0,0xC4,
+0x63,0x7F,0x00,0x0B,0x17,0x01,0xFF,0x20,0x80,0xFF,0x47,0x18,0xCC,0x47,0x03,0xC5,
+0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA1,0x10,0x77,0x00,
+0x54,0x63,0x7F,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA0,
+0x0B,0x17,0x01,0xC7,0x18,0xFF,0x7F,0xE4,0x00,0x00,0x2B,0x20,0x60,0x52,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0x53,0x18,0x80,0x0F,0x17,0x01,0x85,
+0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0xC7,
+0x18,0x7F,0xFF,0xE4,0x00,0x00,0x39,0x20,0x60,0x6E,0xC2,0xF4,0x00,0x01,0xFF,0x20,
+0x80,0x00,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0x0F,
+0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x5C,0x63,0x00,0xCA,0xF7,0x22,0x0C,0xFF,
+0x20,0xFF,0x00,0x0B,0x17,0x01,0x47,0x18,0xCC,0x47,0x03,0xC5,0x0F,0x17,0x01,0x85,
+0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xFF,0x40,0xFF,0x00,0xCA,0xF7,0x22,0xF0,
+0x47,0x03,0xD4,0x0B,0x37,0x01,0x5F,0x39,0x00,0x47,0x18,0xCD,0x0F,0x17,0x01,0x85,
+0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x38,0x0B,0x17,0x01,0x0C,
+0x77,0x01,0x85,0x29,0x20,0x64,0x6A,0xC2,0xF4,0x00,0x01,0x9B,0x3C,0xCA,0xF7,0x25,
+0xC0,0x0B,0x17,0x01,0x47,0x18,0xCC,0x53,0x18,0x01,0xE4,0x00,0x00,0x3F,0x20,0x60,
+0x7A,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x38,0xCA,0xF7,0x25,0xC0,0x0B,0x38,0x01,
+0x0C,0x18,0x01,0x0B,0x17,0x01,0x53,0x18,0x03,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,
+0x00,0x20,0x64,0x62,0x4C,0x63,0x24,0xC2,0xF4,0x00,0x01,0x5C,0x63,0x04,0xCA,0xF7,
+0x22,0xCC,0x0C,0x77,0x01,0xE4,0x00,0x00,0x25,0x20,0x60,0x3A,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x22,0xCC,0x0C,0x17,0x01,0x85,0x29,0x20,0x60,0x5A,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFE,0xE4,0x00,0x00,0x2B,0x20,
+0x64,0x52,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0x53,0x18,0x01,
+0x0F,0x17,0x01,0x85,0x29,0x20,0x60,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xE8,
+0x0B,0x17,0x01,0xC7,0x18,0xF0,0xFF,0xE4,0x00,0x00,0x2D,0x20,0x64,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0xCB,0x18,0x0F,0x00,0x0F,0x17,0x01,
+0x85,0x29,0x5C,0x63,0x00,0xC4,0x84,0x03,0xFF,0x20,0x64,0x70,0x20,0x60,0x34,0x20,
+0x68,0x88,0x20,0x6C,0xDA,0xE4,0x00,0x00,0x51,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,
+0x68,0xE4,0x00,0x00,0x49,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x6C,0xE4,0x00,0x00,
+0x31,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x70,0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x24,0x74,0x0C,0x97,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x5C,0x63,0x00,0x07,0x00,
+0x20,0xCB,0x18,0x41,0x00,0x44,0x63,0xC5,0x4C,0x63,0x10,0x0C,0x83,0x00,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0xFC,0x21,0xFE,0x88,0x50,0xA0,
+0x96,0xED,0x21,0x01,0x74,0xED,0x41,0x01,0x70,0xED,0x61,0x01,0x6C,0x88,0x61,0xC1,
+0x78,0x00,0x21,0xFD,0x6B,0xB4,0xBE,0x88,0x8B,0xE7,0xFF,0x4A,0x4E,0xFD,0x41,0x00,
+0x96,0xFC,0x8B,0x00,0x96,0x88,0x6A,0x50,0xA0,0xD2,0xE7,0xFF,0x4A,0x2C,0x8A,0xE1,
+0xC3,0x54,0x00,0x01,0xFF,0x60,0xFF,0x00,0x0B,0x37,0x01,0x47,0x19,0xDC,0x5F,0x39,
+0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,0x03,0x47,0xB9,0xCF,0x8F,
+0x1A,0x0B,0x98,0x01,0x47,0x9C,0xEC,0x0B,0xB7,0x05,0x47,0x39,0xEC,0x47,0x3C,0xCD,
+0x0F,0x38,0x01,0x9E,0xE6,0xD5,0x57,0xFE,0x9E,0xFE,0xE1,0x00,0x96,0xFF,0x81,0x01,
+0x68,0x0B,0x37,0x01,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,
+0x8F,0x19,0x0B,0x37,0x03,0x47,0xD9,0xCF,0x8F,0x1A,0x0B,0xB8,0x01,0x47,0xBD,0xF4,
+0x0B,0xD7,0x05,0x47,0x39,0xF4,0x47,0x3D,0xCD,0x0F,0x38,0x01,0x9E,0xE6,0xD7,0x97,
+0xFE,0x9E,0xED,0x61,0x01,0x6E,0xED,0x41,0x01,0x72,0xED,0x21,0x01,0x76,0xFC,0x21,
+0x01,0x78,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x00,0x0C,0x18,0x01,0xCA,
+0xF7,0x24,0x14,0xFF,0x20,0xFF,0x07,0x0B,0x17,0x01,0x47,0x18,0xCC,0x53,0x18,0x30,
+0x0F,0x17,0x01,0x85,0x29,0x1C,0x21,0xD8,0xC3,0x54,0x00,0x01,0x0D,0x21,0x24,0xCA,
+0xE0,0x11,0x50,0xCB,0x5A,0x22,0x00,0x57,0x37,0xFF,0x4F,0x39,0x10,0x8F,0x3A,0x0C,
+0x19,0x01,0x9E,0xE1,0xC3,0x14,0x00,0x01,0xC2,0xE2,0x2B,0x84,0x23,0xFF,0xAD,0xCA,
+0xF8,0x23,0x70,0x0C,0x17,0x01,0xCA,0xF8,0x23,0x74,0xCB,0x18,0x23,0x78,0x0C,0x17,
+0x01,0x0C,0x18,0x01,0x1C,0x61,0x02,0xC0,0x98,0x00,0x21,0x50,0xA0,0x1E,0xFC,0x84,
+0xB4,0xBE,0xFC,0x84,0x01,0x68,0xE7,0xFF,0x48,0x34,0x1E,0xE1,0x02,0x1F,0x41,0x20,
+0x0B,0x37,0x01,0xFF,0x60,0xFF,0x00,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,
+0x4F,0x18,0x08,0x8F,0x19,0xC3,0x34,0x00,0x01,0x8F,0x19,0x0B,0x37,0x03,0x47,0x99,
+0xCF,0x0B,0x78,0x01,0x47,0x7B,0xE4,0x0B,0x97,0x05,0x47,0x39,0xE4,0x47,0x3B,0xCD,
+0x0F,0x38,0x01,0x9E,0xE6,0xD7,0x57,0xFE,0x5E,0x0D,0x21,0x26,0xFC,0x60,0x01,0xF4,
+0x1C,0x21,0x28,0xE4,0x00,0x16,0xB7,0x5C,0x84,0x00,0x9B,0x10,0x20,0x60,0x28,0x20,
+0x64,0xAA,0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x10,0xE4,0x00,
+0x00,0x19,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x14,0x0B,0x37,0x01,0x54,0x84,0x0F,
+0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,0x17,0x01,0x85,0x29,0x1C,0x21,0xE0,0xC0,0x98,
+0x00,0x21,0x0D,0x21,0x1C,0x88,0x61,0xFC,0x84,0xB4,0xBE,0x50,0xA0,0x18,0xFC,0x84,
+0x01,0x86,0xE7,0xFF,0x46,0xFC,0x8A,0xE1,0x1F,0x41,0x18,0x0B,0x37,0x01,0xFF,0x60,
+0xFF,0x00,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,
+0xC3,0x34,0x00,0x01,0x8F,0x19,0x0B,0x37,0x03,0x47,0x99,0xCF,0x0B,0x78,0x01,0x47,
+0x7B,0xE4,0x0B,0x97,0x05,0x47,0x39,0xE4,0x47,0x3B,0xCD,0x0F,0x38,0x01,0x9E,0xE6,
+0xD7,0x57,0xFE,0x5E,0xC3,0x54,0x00,0x01,0xCA,0xE0,0x11,0x50,0xCB,0x5A,0x22,0x00,
+0x57,0x37,0xFF,0x4F,0x39,0x10,0x8F,0x3A,0x0C,0x19,0x01,0x9E,0xE1,0xC3,0x14,0x00,
+0x01,0xC2,0xE2,0x2B,0x84,0x23,0xFF,0xAD,0xCA,0xF8,0x23,0x70,0x0C,0x17,0x01,0xCA,
+0xF8,0x23,0x74,0x0C,0x17,0x01,0xCB,0x18,0x23,0x78,0x0C,0x18,0x01,0x0D,0x21,0x1E,
+0x1C,0x21,0x20,0x85,0x29,0x1C,0x21,0xE0,0xC0,0x98,0x00,0x21,0x0D,0x21,0x1C,0x1C,
+0x61,0x06,0xFC,0x84,0xB4,0xBE,0x50,0xA0,0x12,0xFC,0x84,0x01,0x9E,0xE7,0xFF,0x45,
+0xC6,0x1E,0xE1,0x06,0x1F,0x41,0x18,0x0B,0x37,0x01,0xFF,0x60,0xFF,0x00,0x47,0x19,
+0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0xC3,0x34,0x00,0x01,
+0x8F,0x19,0x0B,0x37,0x03,0x47,0x99,0xCF,0x0B,0x78,0x01,0x47,0x7B,0xE4,0x0B,0x97,
+0x05,0x47,0x39,0xE4,0x47,0x3B,0xCD,0x0F,0x38,0x01,0x9E,0xE6,0xD7,0x57,0xFE,0x5E,
+0xC3,0x74,0x00,0x01,0xCA,0xE0,0x11,0x50,0xCB,0x7B,0x22,0x00,0xFF,0x40,0x11,0x11,
+0x57,0x37,0xFF,0x4F,0x39,0x10,0x8F,0x3B,0x0F,0x59,0x01,0x9E,0xE1,0xC3,0x14,0x00,
+0x01,0xC2,0xE2,0x2B,0x84,0x23,0xFF,0xAD,0xCB,0x38,0x23,0x70,0x9A,0xFF,0x0E,0xF9,
+0x01,0xCB,0x38,0x23,0x74,0x0E,0xF9,0x01,0xCB,0x18,0x23,0x78,0x0E,0xF8,0x01,0x0D,
+0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x74,0xD8,0x18,
+0x18,0x00,0xCB,0x37,0x74,0x10,0x5C,0x63,0x00,0x18,0x79,0x00,0xCB,0x37,0x76,0x30,
+0x18,0x19,0x00,0x53,0x40,0x24,0xCB,0x37,0x74,0x00,0x1B,0x59,0x00,0xCB,0x77,0x74,
+0x28,0x53,0x20,0x60,0x1B,0x3B,0x00,0xCB,0x77,0x74,0x30,0x1B,0x3B,0x00,0xCB,0x77,
+0x74,0x38,0x53,0x20,0x1C,0x1B,0x3B,0x00,0xCB,0x77,0x74,0x40,0x1B,0x3B,0x00,0xCB,
+0x37,0x74,0xA8,0x13,0x39,0x00,0xCB,0x37,0x74,0x78,0x9B,0x69,0x1B,0x79,0x00,0xCB,
+0x37,0x74,0x70,0x18,0x19,0x00,0xCB,0x37,0x74,0x60,0x13,0x79,0x00,0x1B,0x59,0x00,
+0xCA,0xF7,0x74,0x61,0x13,0x37,0x00,0x18,0x17,0x00,0x98,0x61,0x12,0xF8,0x00,0x52,
+0xF7,0x01,0x1A,0xF8,0x00,0x85,0x29,0x5C,0x63,0x00,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x74,0x20,0x18,0x77,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFE,0xFF,0x0F,0x17,0x01,0x85,
+0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x10,0x77,0x00,0x4C,0x63,0x21,0x54,
+0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xE0,0x10,0x77,0x00,0x4C,
+0x63,0x09,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x10,
+0x77,0x00,0x4C,0x63,0x29,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x74,0xE0,0x10,0x77,0x00,0x4C,0x63,0x19,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x74,0x68,0x10,0x77,0x00,0x4C,0x63,0x11,0x54,0x63,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x08,0x77,0x01,0x4C,0x63,0x49,0x54,0x63,
+0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x08,0x77,0x01,0x4C,0x63,
+0x51,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x61,0x13,0x17,
+0x00,0x57,0x18,0xFD,0x1B,0x17,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,
+0x61,0x13,0x17,0x00,0x53,0x18,0x02,0x1B,0x17,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x74,0xC0,0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,
+0xA8,0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xC8,0x12,0xF7,
+0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xA0,0x12,0xF7,0x00,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x20,0x10,0x77,0x00,0x85,0x29,0x5C,0x63,0x00,
+0xC3,0x14,0x00,0x01,0x4E,0xE3,0x10,0xCB,0x18,0x2A,0x00,0x8E,0xF8,0x08,0x77,0x00,
+0x9A,0xE8,0xCC,0x63,0x00,0x03,0x40,0x63,0xB8,0x85,0x29,0x5C,0x84,0x04,0x5E,0xE4,
+0x00,0xD2,0xEF,0x05,0xAD,0x4E,0xF7,0x10,0xC3,0x18,0x00,0x21,0xFF,0x18,0xBD,0x1C,
+0x8E,0xF8,0xC3,0x34,0x00,0x01,0x0F,0x17,0x02,0xCA,0xF9,0x26,0x18,0x0B,0x57,0x01,
+0xC7,0x5A,0xFF,0xF3,0x1F,0x60,0xCF,0x0F,0x57,0x01,0x0B,0x57,0x01,0x47,0x5A,0xDC,
+0x53,0x5A,0x10,0x4C,0x84,0x49,0x0F,0x57,0x01,0x9A,0xE1,0xCB,0x59,0x26,0x20,0xE4,
+0x00,0x00,0x31,0x4F,0x37,0x08,0x9E,0xE1,0x8F,0x38,0x5E,0xF7,0x04,0x0B,0x39,0x01,
+0xC7,0x39,0x3F,0xFF,0x0F,0x3A,0x01,0xC3,0x34,0x00,0x01,0xD6,0xE4,0xFF,0x40,0x20,
+0x60,0x96,0xCB,0x39,0x26,0x38,0x0B,0x18,0x01,0x0A,0xF9,0x01,0x4F,0x18,0x60,0xFF,
+0x40,0x8F,0xFF,0xC7,0x18,0x70,0x00,0x46,0xF7,0xD4,0x46,0xF8,0xBD,0x0E,0xF9,0x01,
+0xE4,0x00,0x00,0x4B,0x20,0x64,0x86,0xCA,0xF9,0x26,0x38,0xFF,0x60,0xF8,0xFF,0x0B,
+0x38,0x01,0x0B,0x57,0x01,0x4F,0x39,0x40,0x47,0x1A,0xDC,0xC7,0x39,0x07,0x00,0x47,
+0x19,0xC5,0x0F,0x17,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x18,0x0B,0x17,0x01,
+0x53,0x18,0x30,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0xD0,0x8F,0x03,0x9D,0xC2,
+0xF8,0x00,0x21,0xFE,0xF7,0xBC,0x44,0x4C,0x84,0x10,0xC3,0x14,0x00,0x01,0x8C,0x97,
+0xCB,0x38,0x26,0x34,0x0E,0xE4,0x02,0x0B,0x59,0x01,0x0B,0x77,0x03,0xFF,0x80,0xC0,
+0x00,0xC7,0x7B,0x3F,0xFF,0x47,0x5A,0xE4,0x47,0x5B,0xD5,0x0F,0x59,0x01,0x20,0x60,
+0x7E,0x0B,0x37,0x01,0xCB,0x18,0x26,0x38,0x4F,0x39,0x60,0x0B,0x58,0x01,0xFF,0x60,
+0x8F,0xFF,0xC7,0x39,0x70,0x00,0x46,0xFA,0xDC,0xE4,0x00,0x00,0x3F,0x20,0x64,0x86,
+0x0B,0x37,0x01,0xCB,0x18,0x26,0x38,0x4F,0x39,0x40,0x0B,0x58,0x01,0xFF,0x80,0xF8,
+0xFF,0xC7,0x39,0x07,0x00,0x46,0xFA,0xE4,0x46,0xF9,0xBD,0x0E,0xF8,0x01,0x85,0x29,
+0x5C,0x84,0x00,0xD0,0x8C,0x04,0x1D,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBC,0x44,0x4C,
+0x84,0x10,0xFF,0x40,0xC0,0x00,0x8C,0x97,0x0E,0xE4,0x02,0x20,0x60,0xD6,0xC3,0x14,
+0x00,0x01,0x0B,0x77,0x03,0xCB,0x38,0x26,0xC4,0xC7,0x7B,0x3F,0xFF,0x0B,0x99,0x01,
+0x47,0x5C,0xD4,0x47,0x5B,0xD5,0xCB,0x18,0x26,0x38,0x0F,0x59,0x01,0x1F,0x60,0x8F,
+0x0B,0x37,0x01,0x0B,0x58,0x01,0x4F,0x39,0x20,0x57,0x39,0x70,0xE4,0x00,0x00,0x63,
+0x20,0x64,0xDA,0xC3,0x14,0x00,0x01,0x0B,0x77,0x03,0xCB,0x38,0x26,0xC8,0xC7,0x7B,
+0x3F,0xFF,0x0B,0x99,0x01,0x47,0x5C,0xD4,0x47,0x5B,0xD5,0xCB,0x18,0x26,0x38,0x0F,
+0x59,0x01,0x9B,0x78,0x0B,0x37,0x01,0x0B,0x58,0x01,0x57,0x39,0x07,0x46,0xFA,0xDC,
+0x46,0xF9,0xBD,0x0E,0xF8,0x01,0x85,0x29,0x5C,0x84,0x04,0x20,0x60,0x28,0x20,0x64,
+0xEE,0xE4,0x00,0x00,0x39,0xC2,0xF4,0x00,0x01,0x4C,0x84,0x41,0xCA,0xF7,0x26,0xC0,
+0x54,0x84,0x3F,0x0B,0x17,0x01,0x1F,0x20,0xC0,0xE4,0x00,0x00,0x2F,0xC2,0xF4,0x00,
+0x01,0xC4,0x84,0x3F,0x00,0xCA,0xF7,0x26,0xC0,0xFF,0x20,0xC0,0xFF,0x0B,0x17,0x01,
+0x47,0x18,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0x20,0x61,0x52,0x20,0x84,
+0x84,0x20,0x80,0x2C,0xD0,0x82,0x04,0xD6,0xE4,0x00,0x00,0x5D,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,0x18,0x3F,0xFF,0xE4,0x00,0x01,0x01,0xC2,
+0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,0x18,
+0x3F,0xFF,0xE4,0x00,0x00,0x27,0xC2,0xF4,0x00,0x01,0xFF,0x20,0xC0,0x00,0xCA,0xF7,
+0x26,0x30,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0xE4,0x00,0x00,0xA1,0x20,
+0x65,0x3E,0x20,0x84,0x80,0x20,0x80,0x28,0x20,0x89,0x1A,0xE4,0x00,0x00,0x63,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,0x18,0xCF,0xFF,0xE4,0x00,
+0x00,0x5B,0xC2,0xF4,0x00,0x01,0xFF,0x20,0xCF,0xFF,0xCA,0xF7,0x26,0x30,0x0B,0x17,
+0x01,0x47,0x18,0xCC,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,0x27,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xCB,0x18,0x30,0x00,0x0F,0x17,0x01,0x85,0x29,
+0x20,0x64,0x72,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x26,0x24,0x0B,
+0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,0x18,0x7F,0xFF,0x0F,0x17,
+0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,
+0x01,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,0x18,0xDF,0xFF,0x0F,0x17,0x01,0x85,0x29,
+0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xCB,0x18,
+0x40,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,
+0x24,0x0B,0x17,0x01,0xC7,0x18,0xBF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xCB,0x18,0x10,0x00,0xE4,
+0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,
+0x01,0xC7,0x18,0xEF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x9C,0x38,0xC2,0xF4,0x00,0x01,
+0x0D,0x21,0x04,0xCA,0xF7,0x26,0x18,0x0B,0x17,0x01,0xCB,0x18,0x40,0x00,0x98,0x60,
+0x0F,0x17,0x01,0xE7,0xFF,0xFF,0x1A,0x0D,0x21,0x06,0x98,0x60,0x9C,0x28,0xE7,0xFF,
+0xFF,0x5F,0x20,0x64,0x72,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x26,
+0x00,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0xE4,0x00,0x00,0x2D,0x20,0x60,
+0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0x7F,0xFF,
+0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,
+0x0B,0x17,0x01,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xDF,0xFF,0x0F,0x17,0x01,
+0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,
+0xCB,0x18,0x40,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xBF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,
+0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x10,
+0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,
+0x0B,0x17,0x01,0xC7,0x18,0xEF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x08,0x00,0xE4,0x00,
+0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,
+0xC7,0x18,0xF7,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x04,0x00,0xE4,0x00,0x00,0x2D,0x20,
+0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFB,
+0xFF,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x00,0xC2,0xF4,0x00,0x01,0x4F,0x23,0x40,
+0xCA,0xF7,0x26,0x14,0x4C,0x63,0x60,0x0B,0x17,0x01,0x44,0x79,0x1D,0x5F,0x18,0x00,
+0x44,0x63,0xC5,0x5C,0x63,0x04,0x0C,0x77,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xFF,
+0x20,0xF0,0x00,0xCB,0x17,0x26,0x0C,0xC4,0x63,0x0F,0xFF,0x0B,0x58,0x01,0x5C,0x63,
+0x06,0x47,0x5A,0xCC,0x47,0x43,0xD5,0x0F,0x58,0x01,0xCA,0xF7,0x26,0x10,0x0B,0x17,
+0x01,0x47,0x38,0xCC,0x44,0x63,0xCD,0x0C,0x77,0x01,0x85,0x29,0x9C,0x38,0xFF,0x00,
+0xE0,0x00,0x0D,0x21,0x04,0x0D,0x41,0x00,0xC1,0x54,0x00,0x01,0xCA,0xEA,0x26,0x04,
+0x0B,0x37,0x01,0x47,0x39,0xC4,0xCB,0x39,0x0F,0xA0,0x0F,0x37,0x01,0xCA,0xEA,0x26,
+0x08,0x0B,0x37,0x01,0x47,0x19,0xC4,0xCB,0x18,0x10,0x60,0x98,0x60,0x0F,0x17,0x01,
+0xFC,0x80,0x08,0x03,0xE7,0xFF,0xF9,0x28,0xCA,0xEA,0x26,0xC0,0xFF,0x20,0xC0,0xFF,
+0x0B,0x17,0x01,0x47,0x18,0xCC,0xCB,0x18,0x08,0x00,0x98,0x60,0x0F,0x17,0x01,0xFC,
+0x80,0x08,0x03,0xE7,0xFF,0xF7,0xDA,0x98,0x61,0xFC,0x80,0x08,0x03,0xE7,0xFF,0xF7,
+0xC6,0xCA,0xEA,0x26,0x00,0x0B,0x17,0x01,0x53,0x18,0x0F,0x0F,0x17,0x01,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0x7F,0x0F,0x17,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xBF,0x98,
+0x68,0x0F,0x17,0x01,0xE7,0xFF,0xFE,0x44,0x0D,0x21,0x06,0x0D,0x41,0x02,0xFC,0x60,
+0x01,0x2C,0x9C,0x28,0xE7,0xFF,0xFE,0x6F,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0x00,
+0x0B,0x17,0x01,0x53,0x18,0x02,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x78,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFD,0x0F,0x17,0x01,0x85,0x29,0x9C,
+0x7F,0x5C,0x63,0x00,0xD0,0x64,0x05,0x15,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBE,0xDC,
+0x4C,0x63,0x10,0xFF,0x00,0xFC,0xFF,0x8C,0x77,0xC2,0xF4,0x00,0x01,0x0F,0x23,0x02,
+0x87,0x29,0xCB,0x17,0x3D,0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x38,0x01,0x53,0x39,0x01,
+0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFC,0xFF,0xE4,0x00,0x00,0xD3,0xCB,0x37,
+0x3D,0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x59,0x01,0x53,0x5A,0x01,0x0F,0x59,0x01,0x0B,
+0x37,0x01,0x47,0x19,0xC4,0xCB,0x18,0x01,0x00,0xE4,0x00,0x00,0x95,0xCB,0x37,0x3D,
+0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x59,0x01,0x53,0x5A,0x01,0x0F,0x59,0x01,0x0B,0x37,
+0x01,0x47,0x19,0xC4,0xCB,0x18,0x02,0x00,0xE4,0x00,0x00,0x57,0xCA,0xF7,0x3D,0x3C,
+0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFE,0xE4,0x00,0x00,0x39,0xCB,0x17,0x3C,0x10,0xCA,
+0xF7,0x3C,0x14,0x0B,0x38,0x01,0x53,0x39,0x01,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,
+0x18,0xFF,0xFD,0x0F,0x17,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0x00,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xFB,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x00,0x5C,0x84,0x00,
+0x9A,0xE0,0x24,0x64,0x43,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBE,0xF0,0x8C,0x77,0x12,
+0xE3,0x00,0xC3,0x14,0x00,0x01,0xCB,0x18,0x78,0x01,0x4E,0xF7,0x10,0x5C,0x80,0x29,
+0x46,0xF7,0xC5,0x4B,0x00,0x1A,0x1B,0x17,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0x5C,
+0x84,0x04,0xCB,0x17,0x79,0x04,0xCC,0x84,0x17,0x70,0x4F,0x24,0x81,0x5C,0x84,0x04,
+0x0F,0x38,0x01,0xCA,0xF7,0x79,0x00,0x0C,0x97,0x01,0x98,0x81,0xE7,0xFF,0xFF,0x5D,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xCC,0x0B,0x17,0x01,0x53,0x18,0x02,0x0F,0x17,
+0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x7A,0x30,0xCB,0x37,0x7A,0x34,0xCB,
+0x57,0x7A,0x10,0xCA,0xF7,0x7A,0x14,0x0B,0x18,0x01,0x0B,0x39,0x01,0x0B,0x5A,0x01,
+0x08,0x77,0x01,0x4E,0xF9,0x80,0x4C,0x63,0x80,0x8E,0xF8,0x8C,0x7A,0x44,0x63,0x1F,
+0x44,0x63,0xBC,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x7A,0x70,0xCB,0x37,0x7A,
+0x74,0xCB,0x57,0x7A,0x50,0xCA,0xF7,0x7A,0x54,0x0B,0x18,0x01,0x0B,0x39,0x01,0x0B,
+0x5A,0x01,0x08,0x77,0x01,0x4E,0xF9,0x80,0x4C,0x63,0x80,0x8E,0xF8,0x8C,0x7A,0x44,
+0x63,0x1F,0x44,0x63,0xBC,0x85,0x29,0x5C,0x63,0x06,0xC2,0xF4,0x00,0x01,0x47,0x23,
+0x1F,0xCA,0xF7,0x7A,0x10,0x0B,0x17,0x01,0x47,0x19,0xC4,0x44,0x63,0xC5,0x5C,0x63,
+0x04,0x0C,0x77,0x01,0x85,0x29,0x5C,0x63,0x06,0xC2,0xF4,0x00,0x01,0x47,0x23,0x1F,
+0xCA,0xF7,0x7A,0x50,0x0B,0x17,0x01,0x47,0x19,0xC4,0x44,0x63,0xC5,0x5C,0x63,0x04,
+0x0C,0x77,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x44,0x63,0x1F,0xCA,0xF7,0x7A,0x10,
+0x0B,0x17,0x01,0x47,0x18,0x1C,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x44,
+0x63,0x1F,0xCA,0xF7,0x7A,0x50,0x0B,0x17,0x01,0x47,0x18,0x1C,0x0F,0x17,0x01,0x85,
+0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x7A,0x30,0x0C,0x77,0x01,0x85,
+0x29,0x9B,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x7A,0x70,0x0F,0x17,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xFF,0x20,0xAA,0x55,0xCB,0x17,0x78,0xC0,0x0F,0x38,0x01,0x5F,
+0x03,0x04,0x27,0x08,0x17,0x98,0x63,0xCA,0xF7,0x78,0xC4,0x5C,0x63,0x04,0xCB,0x00,
+0x03,0xE8,0x43,0x04,0xC1,0x40,0x63,0xC3,0x4C,0x63,0x81,0x44,0x63,0x1F,0x0C,0x77,
+0x01,0x06,0xE0,0x5B,0xCA,0xF7,0x8D,0x80,0x5C,0x97,0x0D,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x3C,0x44,0x0B,0x17,0x01,0x20,0x00,0x2D,0xC7,0x18,0xFF,0xBF,0xE4,0x00,0x00,
+0x15,0x5F,0x18,0x04,0x53,0x18,0x40,0x0F,0x17,0x01,0x85,0x29,0xFF,0x00,0xAA,0x55,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xC0,0x0F,0x17,0x01,0x85,0x29,0xFF,0x00,0x55,
+0xAA,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xC0,0x0F,0x17,0x01,0x85,0x29,0xCA,0xE0,
+0x03,0x20,0xC3,0x14,0x00,0x01,0x5C,0x63,0x04,0xC0,0x60,0x63,0xEA,0x48,0x63,0xB8,
+0xCA,0xF8,0x79,0x10,0x0B,0x37,0x01,0x53,0x39,0x01,0x0F,0x37,0x01,0xCB,0x58,0x79,
+0x00,0xCB,0x38,0x79,0x08,0x9C,0x38,0x0A,0xF9,0x01,0xCB,0x18,0x3C,0x44,0x0B,0x7A,
+0x01,0x0B,0x39,0x01,0x0F,0x21,0x07,0x0B,0x18,0x01,0x57,0x18,0x40,0x5F,0x18,0x04,
+0x23,0x00,0x40,0x4C,0x63,0x29,0x5C,0x60,0x09,0x48,0x63,0x0A,0xE4,0x00,0x00,0x3F,
+0xCC,0x63,0x00,0x06,0x5C,0x63,0x04,0xE4,0x00,0x00,0x29,0x0A,0xF8,0x01,0x52,0xF7,
+0x01,0x0E,0xF8,0x01,0x0A,0xF9,0x01,0xE4,0x00,0x00,0x21,0xC3,0x34,0x00,0x01,0xCB,
+0x19,0x79,0x10,0xCB,0x39,0x79,0x08,0x0B,0x41,0x07,0x43,0x57,0xD5,0xD4,0x7A,0x00,
+0xB8,0x0B,0x41,0x07,0xD7,0x57,0xFE,0xB9,0x0B,0x41,0x07,0x43,0x5B,0xD5,0x8E,0xFA,
+0xD4,0x77,0xFE,0x5C,0x9C,0x28,0x85,0x29,0x5C,0x63,0x04,0xE4,0x00,0x00,0x2D,0x42,
+0xE4,0x2C,0xC3,0x38,0x00,0x01,0x43,0x05,0xCC,0x8F,0x03,0x13,0x18,0x00,0x1B,0x17,
+0x00,0x9C,0xBF,0x20,0xBF,0xB2,0x85,0x29,0x5C,0x63,0x00,0xC2,0xF4,0x00,0x01,0x20,
+0x60,0xCE,0xCA,0xF7,0x2C,0x30,0x0B,0x17,0x01,0xCB,0x18,0x02,0x00,0x0F,0x17,0x01,
+0x80,0x01,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3C,0x44,0xCA,0xF7,0x3C,0xA8,0x0B,0x38,
+0x01,0xC7,0x39,0xFF,0xF3,0x0F,0x38,0x01,0x0B,0x17,0x01,0x53,0x18,0x01,0xE4,0x00,
+0x00,0x9F,0xCB,0x17,0x3C,0xA8,0x0B,0x38,0x01,0x53,0x39,0x01,0xCA,0xF7,0x3C,0x5C,
+0x0F,0x38,0x01,0x1F,0x00,0xC0,0x0B,0x37,0x00,0x47,0x39,0xC4,0x9B,0x02,0x24,0x64,
+0x25,0x54,0x63,0x3F,0x5F,0x03,0x06,0x47,0x18,0xCD,0x5C,0x78,0x04,0xC3,0x14,0x00,
+0x01,0x0C,0x77,0x01,0xCA,0xF8,0x3C,0xA8,0x0B,0x37,0x01,0xC7,0x39,0xFF,0xFE,0x0F,
+0x37,0x01,0xCA,0xF8,0x2C,0x30,0x0B,0x17,0x01,0xCB,0x18,0x01,0x00,0x0F,0x17,0x01,
+0x85,0x29,0x80,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x1E,0xB0,0x0B,0x17,0x01,0x53,
+0x18,0x03,0x0F,0x17,0x01,0x80,0x01,0x9B,0x1F,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0D,0xCA,0xE0,0x48,0x04,0xC3,0x17,0x00,0x0D,0x80,0x01,0xCA,0xE0,0x40,0x00,0xC3,
+0x17,0x00,0x0F,0x53,0x18,0x40,0xC3,0x17,0x00,0x0D,0xC3,0x17,0x00,0x0F,0x1F,0x20,
+0xBF,0x47,0x18,0xCC,0xC3,0x17,0x00,0x0D,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,
+0x3D,0x80,0x0B,0x38,0x01,0xCB,0x39,0x08,0x00,0x0F,0x38,0x01,0xCA,0xF7,0x3D,0x84,
+0x0B,0x17,0x01,0xCB,0x18,0x08,0x00,0x0F,0x17,0x01,0x85,0x29,0xE7,0xFF,0xFF,0xBD,
+0x56,0xE3,0xFF,0x4E,0xF7,0x08,0x5C,0x84,0x04,0xC4,0x63,0xFF,0x00,0x8C,0x77,0xC2,
+0xF4,0x00,0x01,0x4C,0x63,0x08,0x8C,0x77,0x0C,0x83,0x01,0x85,0x29,0x1C,0x21,0xC8,
+0xC0,0x98,0x00,0x21,0x0D,0x21,0x34,0x1C,0x61,0x06,0xFC,0x84,0xB6,0x6E,0x50,0xA0,
+0x2A,0xE7,0xFF,0x2D,0x1E,0x1E,0xE1,0x06,0x1F,0x41,0x30,0x0B,0x37,0x01,0xFF,0x60,
+0xFF,0x00,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,
+0xC3,0x34,0x00,0x01,0x8F,0x19,0x0B,0x37,0x03,0x47,0x99,0xCF,0x0B,0x78,0x01,0x47,
+0x7B,0xE4,0x0B,0x97,0x05,0x47,0x39,0xE4,0x47,0x3B,0xCD,0x0F,0x38,0x01,0x9E,0xE6,
+0xD7,0x57,0xFE,0x5E,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0xFC,0x21,0xFF,0x38,
+0x50,0xA0,0x3C,0xED,0x21,0x00,0xC4,0xED,0x41,0x00,0xC0,0xED,0x61,0x00,0xBC,0xED,
+0x81,0x00,0xB8,0xED,0xA1,0x00,0xB4,0xED,0xC1,0x00,0xB0,0xED,0xE1,0x00,0xAC,0xEE,
+0x01,0x00,0xA8,0xC1,0x58,0x00,0x21,0x1C,0x61,0x6C,0xFD,0x4A,0xB6,0x6E,0x1C,0x8A,
+0x2A,0xE7,0xFF,0x2C,0x1E,0x50,0xA0,0x24,0x1C,0x8A,0x66,0x1C,0x61,0x48,0xE7,0xFF,
+0x2C,0x04,0x98,0x61,0x98,0x82,0xE7,0xFF,0xEE,0x8A,0x98,0x61,0xFC,0x80,0x3E,0x0C,
+0xE7,0xFF,0xD5,0xA6,0x98,0x61,0xFC,0x80,0x3E,0x0C,0xE7,0xFF,0xEB,0xDC,0x98,0x61,
+0x88,0x83,0xE7,0xFF,0xD8,0x5A,0x98,0x61,0x88,0x83,0xE7,0xFF,0xD5,0xE2,0x98,0x60,
+0x98,0x81,0xE7,0xFF,0xD6,0xD2,0x98,0x60,0x05,0x4F,0x0F,0xC9,0x4A,0x0F,0x0F,0x88,
+0x8A,0xE7,0xFF,0xE0,0x92,0x98,0x61,0x88,0x8A,0xE7,0xFF,0xE0,0x82,0xC3,0x54,0x00,
+0x01,0xCA,0xE0,0x11,0x50,0xCB,0x5A,0x22,0x00,0x57,0x17,0xFF,0x4F,0x18,0x10,0x8F,
+0x1A,0x1F,0x61,0x2A,0x0B,0x38,0x01,0x4F,0x17,0x08,0x8F,0x1B,0xEF,0x38,0xDD,0x61,
+0x9E,0xE1,0xC2,0xE2,0x2B,0xE4,0x23,0xFF,0x8D,0x1E,0xE1,0x6C,0xFF,0x41,0x00,0xA8,
+0xC1,0x94,0x00,0x01,0xFD,0xA0,0xFF,0x00,0x0B,0x37,0x01,0x47,0x19,0x6C,0x5F,0x39,
+0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,0x03,0x8F,0x0C,0x0F,0x38,
+0x01,0x9E,0xE4,0xD7,0x57,0xFF,0x2E,0x1E,0xE1,0x48,0x1F,0x41,0x6C,0x0B,0x37,0x01,
+0x47,0x19,0x6C,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,
+0x03,0x8F,0x0C,0x0F,0x38,0x01,0x9E,0xE4,0xD7,0x57,0xFF,0x2E,0xE7,0xFF,0xD1,0xAC,
+0x99,0xE0,0x89,0xC3,0x98,0x61,0xE7,0xFF,0xD1,0xC2,0xD1,0xE0,0x05,0xBE,0x98,0x60,
+0x1D,0x61,0x0A,0xE7,0xFF,0xD1,0xFC,0x99,0x40,0xE4,0x00,0x01,0x45,0x98,0x61,0x88,
+0x8A,0x22,0x01,0x0A,0xE7,0xFF,0xDD,0x94,0x98,0x60,0xE7,0xFF,0xDD,0xDE,0xFC,0x60,
+0x01,0x00,0xE7,0xFF,0xF7,0x86,0xE7,0xFF,0xCF,0xC8,0xE7,0xFF,0xF6,0x32,0xC4,0x63,
+0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0xDC,0xFC,0x60,0x01,
+0x00,0xE7,0xFF,0xF7,0xA0,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE8,0x04,0xE4,
+0x00,0x00,0x8B,0xE7,0xFF,0xDD,0x16,0x98,0x61,0xE7,0xFF,0xDD,0x60,0xFC,0x60,0x01,
+0x00,0xE7,0xFF,0xF7,0x08,0xE7,0xFF,0xCF,0x4A,0xE7,0xFF,0xF5,0xB4,0xC4,0x63,0x01,
+0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0x5E,0xFC,0x60,0x01,0x00,
+0xE7,0xFF,0xF7,0x22,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE7,0x86,0x0A,0xEB,
+0x01,0x40,0x63,0xBD,0x0C,0x6B,0x01,0x9E,0x01,0x5E,0x10,0x00,0xD2,0x02,0xFB,0x8E,
+0x9D,0x41,0x9D,0x62,0x5D,0x4A,0x00,0xD1,0x44,0x05,0xEA,0x9A,0x00,0xE7,0xFF,0xFE,
+0xC1,0x98,0x61,0x1D,0x61,0x12,0xE7,0xFF,0xD0,0x96,0x99,0x40,0xE4,0x00,0x01,0x45,
+0x98,0x61,0x88,0x8A,0x22,0x01,0x0A,0xE7,0xFF,0xDC,0x2E,0x98,0x60,0xE7,0xFF,0xDC,
+0x78,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0x20,0xE7,0xFF,0xCE,0x62,0xE7,0xFF,0xF4,
+0xCC,0xC4,0x63,0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF5,0x76,
+0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0x3A,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,
+0xE6,0x9E,0xE4,0x00,0x00,0x8B,0xE7,0xFF,0xDB,0xB0,0x98,0x61,0xE7,0xFF,0xDB,0xFA,
+0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF5,0xA2,0xE7,0xFF,0xCD,0xE4,0xE7,0xFF,0xF4,0x4E,
+0xC4,0x63,0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF4,0xF8,0xFC,
+0x60,0x01,0x00,0xE7,0xFF,0xF5,0xBC,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE6,
+0x20,0x0A,0xEB,0x01,0x40,0x63,0xBD,0x0C,0x6B,0x01,0x9E,0x01,0x5E,0x10,0x00,0xD2,
+0x02,0xFB,0x8E,0x9D,0x41,0x9D,0x62,0x5D,0x4A,0x00,0xD1,0x44,0x00,0x52,0x9A,0x00,
+0xE7,0xFF,0xFE,0xC1,0x9D,0xE1,0x5D,0xEF,0x00,0xD1,0xE2,0xF4,0x8E,0x0B,0x21,0x0A,
+0x0B,0x01,0x12,0x0F,0x21,0x07,0x1E,0xE1,0x0C,0x1F,0x81,0x12,0x0B,0x77,0x01,0x8B,
+0x59,0x5F,0xBB,0x06,0xD7,0x3D,0x00,0x30,0x8B,0x5B,0x5F,0x3A,0x06,0x0B,0x77,0x09,
+0x8B,0x58,0x5F,0xBB,0x06,0xD7,0x1D,0x00,0x30,0x8B,0x5B,0x5F,0x1A,0x06,0x9E,0xE2,
+0xD7,0x97,0xFE,0xE6,0x0F,0x21,0x07,0x9A,0xE0,0x0F,0x01,0x09,0x1F,0x21,0x1A,0x8B,
+0x57,0xFD,0x00,0x3F,0xFF,0xE4,0x00,0x00,0x69,0x43,0x7E,0xC4,0x0B,0x9B,0x00,0x43,
+0x79,0xC4,0x23,0x80,0x32,0x0D,0x1B,0x01,0x9B,0x41,0xE4,0x00,0x00,0x23,0x09,0x5D,
+0x00,0xCD,0x4A,0x1F,0xFF,0x43,0x8A,0xE0,0x0F,0x9B,0x01,0x9F,0x02,0xD3,0x08,0xFE,
+0xE6,0x9F,0x28,0x9E,0xE2,0xD2,0xE4,0x00,0xBA,0x1F,0x01,0x0A,0x4F,0xD7,0x10,0x1F,
+0xA1,0x06,0x8F,0xD8,0x8F,0xB7,0x9B,0x00,0xE7,0xFF,0xFF,0x83,0xC3,0x94,0x00,0x01,
+0x9A,0xE0,0xCB,0x9C,0x24,0x00,0xE4,0x00,0x00,0x47,0x43,0xB9,0xC4,0x43,0xDB,0xC4,
+0x57,0xBD,0xFF,0x0B,0xDE,0x01,0x4F,0xBD,0x10,0x8F,0xBC,0x0F,0xDD,0x01,0x9F,0x02,
+0xD3,0x08,0xFF,0x56,0x9E,0xE1,0x22,0xE8,0x54,0x1F,0x21,0x1A,0x4F,0x77,0x18,0x9B,
+0x00,0x8F,0x79,0xFF,0x37,0x12,0x46,0xE7,0xFF,0xFF,0xA7,0x9A,0xE0,0x4F,0x17,0x08,
+0x1F,0x61,0x6C,0x8F,0x1B,0x0B,0x38,0x01,0x47,0x19,0x6C,0x5F,0x39,0x00,0x4F,0x39,
+0x10,0x4F,0x18,0x08,0x8F,0x19,0x1F,0x21,0x2A,0x8F,0x0C,0x8F,0x37,0x0B,0x39,0x01,
+0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE3,0xC9,0x23,0xFF,0x55,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x25,0x38,0x0B,0x17,0x01,0x23,0x40,0x34,0x5F,0x18,0x04,0x53,0x18,0x0F,0xE4,
+0x00,0x00,0x11,0xC7,0x18,0xFF,0xF0,0x0F,0x17,0x01,0x98,0x60,0x98,0x80,0xE7,0xFF,
+0xDA,0x38,0x98,0x80,0x98,0x61,0xE7,0xFF,0xDA,0x28,0x98,0x60,0xE7,0xFF,0xD8,0xDA,
+0x98,0x60,0x98,0x80,0xE7,0xFF,0xD8,0x74,0x88,0x6E,0xEE,0x01,0x00,0xAA,0xED,0xE1,
+0x00,0xAE,0xED,0xC1,0x00,0xB2,0xED,0xA1,0x00,0xB6,0xED,0x81,0x00,0xBA,0xED,0x61,
+0x00,0xBE,0xED,0x41,0x00,0xC2,0xED,0x21,0x00,0xC6,0xFC,0x21,0x00,0xC8,0xE7,0xFF,
+0xCC,0x13,0xC2,0xF4,0x00,0x01,0x53,0x20,0x1F,0xCB,0x17,0x3C,0x30,0x0F,0x38,0x01,
+0xCC,0x63,0x61,0xA8,0xCB,0x17,0x3C,0x90,0xCA,0xF7,0x3C,0x38,0x0B,0x18,0x01,0x43,
+0x03,0xC1,0x4F,0x18,0x29,0x9F,0x1F,0x5F,0x18,0x04,0x0F,0x17,0x01,0x85,0x29,0xC2,
+0xF4,0x00,0x01,0x54,0x63,0x62,0xCA,0xF7,0x3C,0x94,0x50,0x63,0x02,0x0B,0x17,0x01,
+0x1F,0x20,0x9D,0x47,0x18,0xCC,0x47,0x03,0xC5,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,
+0x04,0xC6,0xE3,0x02,0x00,0x5E,0xF7,0x04,0x22,0xE0,0x70,0xC2,0xF4,0x00,0x01,0xFF,
+0x20,0xFC,0xFF,0xCA,0xF7,0x2C,0x54,0x0B,0x17,0x01,0x47,0x18,0xCC,0xCB,0x18,0x01,
+0x00,0x0F,0x17,0x01,0xC6,0xE3,0x04,0x00,0x5E,0xF7,0x04,0x22,0xE0,0xB8,0xC2,0xF4,
+0x00,0x01,0xFF,0x00,0xA5,0x5A,0xCB,0x37,0x30,0xCC,0x0F,0x19,0x01,0xCB,0x37,0x30,
+0xD0,0x0F,0x19,0x01,0xCA,0xF7,0x31,0x04,0xFF,0x40,0x8F,0xFF,0x0B,0x17,0x01,0x47,
+0x18,0xD4,0xCB,0x18,0x30,0x00,0x0F,0x17,0x01,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3C,
+0x98,0x0B,0x38,0x01,0xFF,0x20,0x01,0x01,0x0F,0x38,0x01,0xCB,0x17,0x3C,0xA0,0x0B,
+0x58,0x01,0x0F,0x38,0x01,0x1F,0x40,0x88,0xCB,0x17,0x3C,0xB4,0x0B,0x38,0x01,0x47,
+0x39,0xD4,0x53,0x39,0x33,0x0F,0x38,0x01,0xCB,0x17,0x3C,0xB0,0x0B,0x38,0x01,0x5F,
+0x39,0x00,0xCB,0x39,0x03,0x00,0x0F,0x38,0x01,0xCA,0xF7,0x3C,0x94,0xC4,0x63,0x07,
+0x00,0x0B,0x17,0x01,0xFF,0x20,0xF8,0xFF,0x47,0x18,0xCC,0x44,0x63,0xC5,0x0C,0x77,
+0x01,0x85,0x29,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xC8,0x80,
+0xAA,0x55,0xC0,0x74,0x00,0x01,0xC8,0x63,0x78,0xC0,0x0C,0x83,0x00,0xC0,0x74,0x00,
+0x01,0xC8,0x63,0x1F,0xDC,0x50,0x80,0x80,0x0C,0x83,0x00,0x04,0x20,0x80,0xC8,0x21,
+0x17,0xFC,0x1C,0x40,0xFD,0x44,0x21,0x14,0x28,0x00,0x74,0xC0,0x40,0x00,0x01,0xC8,
+0x42,0x3E,0x06,0x84,0x49,0x0C,0x41,0x0C,0x0C,0x61,0x10,0x0C,0x81,0x14,0x0C,0xA1,
+0x18,0x0C,0xC1,0x1C,0x0C,0xE1,0x20,0x0D,0x01,0x24,0x0D,0x21,0x28,0x0D,0x41,0x2C,
+0x0D,0x61,0x30,0x0D,0x81,0x34,0x0D,0xA1,0x38,0x0D,0xC1,0x3C,0x0D,0xE1,0x40,0x0E,
+0x01,0x44,0x0E,0x21,0x48,0x0E,0x41,0x4C,0x0E,0x61,0x50,0x0E,0x81,0x54,0x0E,0xA1,
+0x58,0x0E,0xC1,0x5C,0x0E,0xE1,0x60,0x0F,0x01,0x64,0x0F,0x21,0x68,0x0F,0x41,0x6C,
+0x0F,0x61,0x70,0x0F,0x81,0x74,0x0F,0xA1,0x78,0x0F,0xC1,0x7C,0x1C,0x61,0x00,0xC1,
+0x00,0x00,0x01,0xC9,0x08,0xAD,0x50,0x85,0x08,0x90,0x23,0x00,0xC0,0x40,0x10,0x01,
+0xC8,0x42,0x03,0xB0,0xC0,0x60,0x10,0x01,0xC8,0x63,0x0D,0x04,0x5C,0x43,0x1F,0x20,
+0x00,0x2D,0x0C,0x02,0x00,0x1C,0x42,0x04,0x93,0xF4,0x85,0x29,0xC0,0x80,0x01,0x1F,
+0xC0,0x7F,0xFF,0xE1,0xC8,0x63,0xFF,0xF9,0x44,0x84,0x1C,0xC0,0x80,0x01,0x1D,0x0C,
+0x61,0x02,0xC0,0x60,0x02,0x0D,0x0C,0x61,0x06,0xC0,0x60,0x04,0x0D,0x0C,0x41,0x0E,
+0x0C,0x61,0x12,0x0C,0x81,0x16,0x0C,0xA1,0x1A,0x0C,0xC1,0x1E,0x0C,0xE1,0x22,0x0D,
+0x01,0x26,0x0D,0x21,0x2A,0x0D,0x41,0x2E,0x0D,0x61,0x32,0x0D,0x81,0x36,0x0D,0xA1,
+0x3A,0x0D,0xC1,0x3E,0x0D,0xE1,0x42,0x0E,0x01,0x46,0x0E,0x21,0x4A,0x0E,0x41,0x4E,
+0x0E,0x61,0x52,0x0E,0x81,0x56,0x0E,0xA1,0x5A,0x0E,0xC1,0x5E,0x0E,0xE1,0x62,0x0F,
+0x01,0x66,0x0F,0x21,0x6A,0x0F,0x41,0x6E,0x0F,0x61,0x72,0x0F,0x81,0x76,0x0F,0xA1,
+0x7A,0x0F,0xC1,0x7E,0xEF,0xE1,0x00,0x82,0x0C,0x21,0x0A,0x84,0x00,0x00,0x00,0x00,
+0x9C,0x30,0xCA,0xE0,0x48,0x02,0x0D,0x41,0x08,0x0D,0x21,0x0C,0x89,0x43,0xC2,0xF7,
+0x00,0x0F,0x9B,0x1C,0x46,0xF7,0xC4,0x0E,0xE1,0x04,0x0E,0xE1,0x06,0x56,0xF7,0x04,
+0x22,0xE0,0xE0,0xCA,0xE0,0x48,0x00,0xC3,0x37,0x00,0x0F,0x9B,0x1B,0x47,0x39,0xC4,
+0xC3,0x37,0x00,0x0D,0xCA,0xE0,0x48,0x02,0xC3,0x37,0x00,0x0F,0x47,0x19,0xC4,0xC3,
+0x17,0x00,0x0D,0x98,0x82,0xE7,0xFF,0xBE,0x8C,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0F,0x53,0x18,0x04,0xC3,0x17,0x00,0x0D,0x0E,0xE1,0x06,0x56,0xF7,0x08,0x22,0xE0,
+0xE8,0xCA,0xE0,0x48,0x00,0xC3,0x37,0x00,0x0F,0x9B,0x17,0x47,0x39,0xC4,0xC3,0x37,
+0x00,0x0D,0xCA,0xE0,0x48,0x02,0xC3,0x37,0x00,0x0F,0x47,0x19,0xC4,0xC3,0x17,0x00,
+0x0D,0x98,0x83,0x88,0x6A,0xE7,0xFF,0xBE,0x0C,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0F,0x53,0x18,0x08,0xC3,0x17,0x00,0x0D,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,
+0x10,0x85,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x00,0xA0,0x26,0x01,
+0x66,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xA0,0x66,0x00,
+0x01,0x00,0x00,0x00,0xF3,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0x00,0x2F,0x00,0x07,0x00,0x0D,0x01,
+0xE0,0xFF,0x5C,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x1B,0x00,0x01,0x00,0x10,0x00,
+0xDF,0x00,0x9E,0x00,0x5B,0x00,0x5B,0x00,0x1A,0x00,0x32,0x00,0x90,0x01,0x80,0x00,
+0x94,0x01,0x80,0x00,0x19,0x00,0x32,0x00,0x98,0xB9,0x00,0xC0,0x02,0x01,0x00,0x00,
+0x00,0x00,0x00,0x00,0x14,0x14,0x14,0x14,0xF5,0xB9,0x00,0xC0,0x02,0x02,0x00,0x00,
+0x00,0x00,0x00,0x00,0x14,0x14,0x14,0x14,0xD7,0xB9,0x00,0xC0,0x02,0x03,0x00,0x00,
+0x00,0x00,0x00,0x00,0x14,0x14,0x14,0x14,0xCD,0xB9,0x00,0xC0,0x02,0x04,0x00,0x00,
+0x00,0x00,0x00,0x00,0x14,0x14,0x14,0x14,0x08,0xBA,0x00,0xC0,0x0B,0x05,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x64,0x2C,0x9A,0xB9,0x00,0xC0,0x0D,0x06,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x5A,0x2C,0xA7,0xB9,0x00,0xC0,0x0B,0x07,0x00,0x00,
+0x01,0x00,0x00,0x00,0x28,0x14,0x28,0x14,0xE7,0xB9,0x00,0xC0,0x0E,0x08,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1E,0x37,0x19,0xD9,0xB9,0x00,0xC0,0x06,0x09,0x00,0x00,
+0x01,0x00,0x00,0x00,0x1E,0x14,0x30,0x1E,0x13,0xBA,0x00,0xC0,0x0E,0x0A,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1C,0x3C,0x22,0x27,0xBA,0x00,0xC0,0x0F,0x0B,0x00,0x00,
+0x01,0x00,0x00,0x00,0x46,0x19,0x28,0x14,0x6A,0xB9,0x00,0xC0,0x06,0x0C,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1E,0x28,0x14,0x82,0xB9,0x00,0xC0,0x0E,0x0A,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1C,0x3C,0x22,0xCF,0xB9,0x00,0xC0,0x08,0x05,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x78,0x2C,0xFD,0xB9,0x00,0xC0,0x0B,0x05,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x78,0x2C,0xDF,0xB9,0x00,0xC0,0x08,0x06,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x5A,0x2C,0xB2,0xB9,0x00,0xC0,0x0C,0x08,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1E,0x37,0x19,0xF7,0xB9,0x00,0xC0,0x06,0x07,0x00,0x00,
+0x01,0x00,0x00,0x00,0x28,0x14,0x28,0x14,0xC6,0xB9,0x00,0xC0,0x07,0x07,0x00,0x00,
+0x01,0x00,0x00,0x00,0x28,0x14,0x28,0x14,0x90,0xB9,0x00,0xC0,0x08,0x0B,0x00,0x00,
+0x01,0x00,0x00,0x00,0x46,0x19,0x28,0x14,0x21,0xBA,0x00,0xC0,0x06,0x09,0x00,0x00,
+0x01,0x00,0x00,0x00,0x1E,0x14,0x30,0x1E,0xBE,0xB9,0x00,0xC0,0x08,0x0C,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1E,0x28,0x14,0x36,0xBA,0x00,0xC0,0x09,0x09,0x00,0x00,
+0x01,0x00,0x00,0x00,0x1E,0x14,0x30,0x1E,0x70,0xB9,0x00,0xC0,0x0A,0x06,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x5A,0x2C,0x7A,0xB9,0x00,0xC0,0x08,0x06,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x5A,0x2C,0x92,0x01,0x80,0x00,0x86,0x01,0x80,0x00,
+0x01,0x00,0x00,0x00,0x64,0x00,0x14,0x00,0x14,0x00,0x06,0x00,0x06,0x00,0x5A,0x00,
+0x14,0x00,0x14,0x00,0x06,0x00,0x06,0x00,0x64,0x00,0x01,0x00,0x5F,0x00,0x01,0x00,
+0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x50,0x00,0x96,0x00,0x40,0x06,0x00,0x00,0x80,0x0C,0x00,0x00,0x01,0x03,0x07,0x00,
+0x00,0x01,0x02,0x00,0x07,0x00,0xC8,0x00,0xC8,0x00,0xC8,0x00,0xF4,0x01,0xF4,0x01,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x02,0x00,0x04,0x00,0x06,0x00,
+0x08,0x00,0x0A,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x20,0x00,0x28,0x00,
+0x32,0x00,0x3E,0x00,0x40,0x00,0x64,0x00,0x80,0x00,0x00,0x01,0x02,0x00,0x00,0x11,
+0xFF,0xFF,0xFF,0xFF,0x01,0x11,0xFF,0xFF,0x18,0x50,0x02,0x11,0xFF,0x7F,0xFF,0x0E,
+0x03,0x11,0xFF,0x00,0x66,0x00,0x04,0x11,0xFF,0x0F,0x72,0x07,0x05,0x11,0xFF,0x0F,
+0x72,0x07,0x06,0x11,0xFF,0x00,0x00,0x00,0x07,0x11,0x03,0x00,0x00,0x00,0x08,0x11,
+0x73,0x00,0x00,0x00,0x09,0x11,0xFF,0xFF,0x00,0x00,0x09,0x11,0xFF,0x7F,0x00,0x00,
+0x0A,0x11,0xFF,0x7F,0x87,0x10,0x0E,0x11,0xFF,0xFF,0x00,0x00,0x0F,0x11,0xFF,0xFF,
+0x00,0x00,0x17,0x11,0x0F,0xFF,0x00,0x00,0x18,0x11,0xFF,0xFF,0x00,0x02,0x19,0x11,
+0xFF,0x00,0x0E,0x00,0x1E,0x11,0xFF,0xFF,0x00,0x00,0x1F,0x11,0xFF,0x00,0x00,0x00,
+0x33,0x11,0x0F,0x00,0x00,0x00,0x3A,0x11,0x37,0x0F,0x00,0x00,0x3B,0x11,0x77,0x00,
+0x77,0x00,0x3C,0x11,0x00,0xFF,0x00,0xA0,0x3D,0x11,0x77,0x00,0x00,0x00,0x3E,0x11,
+0xFF,0x00,0x00,0x00,0x04,0x12,0x06,0x00,0x00,0x00,0x05,0x12,0xFF,0x00,0x00,0x00,
+0x07,0x12,0xFF,0xFF,0x00,0x00,0x08,0x12,0xFF,0x00,0x00,0x00,0x09,0x12,0xFF,0xFF,
+0x00,0x00,0x0A,0x12,0xFF,0x00,0x00,0x00,0x0B,0x12,0x3F,0x00,0x2E,0x00,0x0D,0x12,
+0x1F,0x00,0x05,0x00,0x0E,0x12,0x1F,0x00,0x05,0x00,0x0F,0x12,0xFF,0xFF,0x00,0x00,
+0x10,0x12,0xFF,0x00,0x00,0x00,0x11,0x12,0xFF,0x0F,0x00,0x00,0x12,0x12,0x87,0x1F,
+0x00,0x00,0x13,0x12,0x7F,0x0F,0x14,0x00,0x14,0x12,0x9F,0xFF,0x0A,0x09,0x15,0x12,
+0x7F,0x0F,0x0C,0x0F,0x16,0x12,0xFF,0x0F,0x00,0x07,0x17,0x12,0x1F,0xFF,0x0A,0x5C,
+0x18,0x12,0x7F,0x1F,0x14,0x0A,0x19,0x12,0xFF,0xFF,0x8C,0x21,0x1A,0x12,0xFF,0x03,
+0x00,0x00,0x1B,0x12,0xFF,0x03,0x00,0x00,0x1C,0x12,0xFF,0x03,0x00,0x00,0x1D,0x12,
+0xFF,0x03,0x00,0x00,0x1E,0x12,0x1F,0x1F,0x12,0x07,0x1F,0x12,0x3F,0x3F,0x00,0x00,
+0x20,0x12,0xFF,0xFF,0x00,0x00,0x21,0x12,0xFF,0x00,0x00,0x00,0x23,0x12,0x3F,0x3F,
+0x02,0x00,0x24,0x12,0x3F,0x00,0x00,0x00,0x28,0x12,0xFF,0xFF,0x83,0x81,0x2D,0x12,
+0x01,0x00,0x01,0x00,0x50,0x12,0xFF,0xFF,0x00,0x00,0x51,0x12,0xFF,0x00,0x00,0x00,
+0x70,0x12,0x03,0x00,0x03,0x00,0x01,0x11,0x06,0x00,0x02,0x00,0x02,0x11,0x00,0x08,
+0x00,0x08,0x2A,0x12,0x00,0xFF,0x00,0xBA,0x2B,0x12,0xFF,0x30,0xF0,0x20,0x01,0x11,
+0x06,0x00,0x00,0x00,0x2A,0x12,0x00,0xFF,0x00,0x00,0x2B,0x12,0xFF,0x30,0x00,0x00,
+0x01,0x11,0x00,0x50,0x00,0x50,0x02,0x11,0x3F,0x06,0x2F,0x06,0x01,0x11,0x00,0x50,
+0x00,0x00,0x02,0x11,0x3F,0x06,0x00,0x00,0x2A,0x12,0x00,0x30,0x00,0x20,0x11,0x1E,
+0xFF,0x7F,0x00,0x00,0x12,0x1E,0xFF,0x00,0x00,0x00,0x13,0x1E,0x0F,0x00,0x00,0x00,
+0x15,0x1E,0x73,0x07,0x00,0x00,0x16,0x1E,0x0F,0x00,0x00,0x00,0x18,0x1E,0x3F,0x00,
+0x08,0x00,0x2A,0x1E,0x05,0x00,0x01,0x00,0x50,0x11,0x11,0x11,0x51,0x11,0x11,0x11,
+0x52,0x11,0x11,0x11,0x53,0x11,0x11,0x11,0x54,0x11,0x11,0x11,0x55,0x11,0x11,0x11,
+0x56,0x11,0x11,0x11,0x57,0x11,0x11,0x11,0x58,0x11,0x11,0x11,0x59,0x11,0x11,0x11,
+0x5A,0x11,0x11,0x11,0x5B,0x11,0x11,0x11,0x5C,0x11,0xFF,0xFF,0x5D,0x11,0xFF,0xFF,
+0x5E,0x11,0xFF,0xFF,0x46,0x12,0x00,0x00,0x47,0x12,0x00,0x00,0x48,0x12,0x00,0x00,
+0x49,0x12,0x00,0x00,0x4A,0x12,0x00,0x00,0x4B,0x12,0x00,0x00,0x4C,0x12,0x00,0x00,
+0x4D,0x12,0x00,0x00,0x4E,0x12,0x0F,0x00,0x02,0x03,0x5C,0x54,0x47,0x37,0x00,0x00,
+0x31,0x00,0x94,0x00,0xFA,0x00,0x66,0x01,0xD9,0x01,0x57,0x02,0xE6,0x02,0x8A,0x03,
+0x4F,0x04,0x44,0x05,0x84,0x06,0x42,0x08,0xEB,0x0A,0x98,0x0F,0x55,0x1A,0xF3,0x07,
+0xFF,0xFF,0x0F,0x00,0x52,0x00,0x69,0x00,0xD9,0x00,0x00,0x00,0x3B,0x40,0x00,0x00,
+0xDB,0x40,0x00,0x00,0xFA,0x40,0x00,0x00,0xCD,0x41,0x00,0x00,0xE4,0x41,0x00,0x00,
+0x95,0x00,0x89,0x00,0x7E,0x00,0x72,0x00,0x67,0x00,0x5B,0x00,0x50,0x00,0x44,0x00,
+0x39,0x00,0x2D,0x00,0x22,0x00,0x16,0x00,0x0B,0x00,0x00,0x00,0xFF,0x00,0x8D,0x09,
+0x1A,0x00,0xFE,0x00,0x1B,0x07,0x3F,0x00,0xFE,0x00,0x9D,0x0A,0x78,0x00,0xFD,0x00,
+0xEC,0x12,0xA8,0x00,0xFC,0x00,0x6B,0x18,0xD0,0x00,0xFB,0x00,0x7C,0x19,0x0A,0x01,
+0xF9,0x00,0x55,0x20,0x4E,0x01,0xF8,0x00,0x85,0x26,0x86,0x01,0xFF,0x00,0x48,0x0D,
+0x09,0x00,0xFE,0x00,0x9E,0x0B,0x1E,0x00,0xFE,0x00,0x34,0x0E,0x44,0x00,0xFD,0x00,
+0x35,0x14,0x66,0x00,0xFD,0x00,0x1A,0x18,0x7F,0x00,0xFC,0x00,0x11,0x19,0x9C,0x00,
+0xFB,0x00,0x3C,0x1C,0xBF,0x00,0xFB,0x00,0x94,0x21,0xDB,0x00,0xFA,0x00,0xE6,0x24,
+0xF7,0x00,0xF9,0x00,0xFB,0x24,0x29,0x01,0xFE,0x00,0xE0,0x0D,0x04,0x00,0xFE,0x00,
+0xF6,0x10,0x18,0x00,0xFE,0x00,0xC8,0x12,0x30,0x00,0xFD,0x00,0xEB,0x14,0x4A,0x00,
+0xFD,0x00,0x74,0x16,0x69,0x00,0xFC,0x00,0xB9,0x1C,0x7E,0x00,0xFC,0x00,0x68,0x20,
+0x8E,0x00,0xFB,0x00,0xCE,0x21,0xA6,0x00,0xFB,0x00,0x52,0x23,0xC8,0x00,0xFA,0x00,
+0x0A,0x29,0xE2,0x00,0xF9,0x00,0x4D,0x2C,0xFC,0x00,0xFE,0x00,0x85,0x13,0xF8,0xFF,
+0xFE,0x00,0xF6,0x12,0x07,0x00,0xFD,0x00,0xC9,0x13,0x24,0x00,0xFD,0x00,0x6E,0x18,
+0x3E,0x00,0xFC,0x00,0x47,0x1C,0x4E,0x00,0xFC,0x00,0x83,0x1D,0x5E,0x00,0xFC,0x00,
+0xFB,0x1F,0x74,0x00,0xFB,0x00,0xF7,0x25,0x86,0x00,0xFA,0x00,0xB8,0x29,0x93,0x00,
+0xFA,0x00,0xA4,0x29,0xAB,0x00,0xF9,0x00,0x13,0x2B,0xCB,0x00,0xF9,0x00,0x37,0x30,
+0xE5,0x00,0xFD,0x00,0x0D,0x1F,0xDC,0xFF,0xFD,0x00,0x3D,0x1E,0xE7,0xFF,0xFD,0x00,
+0xD0,0x1C,0x02,0x00,0xFC,0x00,0xCD,0x1E,0x1B,0x00,0xFC,0x00,0x4B,0x22,0x29,0x00,
+0xFC,0x00,0x4F,0x25,0x33,0x00,0xFB,0x00,0x83,0x27,0x43,0x00,0xFA,0x00,0xE6,0x2C,
+0x4F,0x00,0xFA,0x00,0x48,0x30,0x57,0x00,0xFA,0x00,0x0E,0x31,0x62,0x00,0xF9,0x00,
+0x76,0x31,0x77,0x00,0xF9,0x00,0x65,0x36,0x87,0x00,0xF8,0x00,0xB3,0x38,0x94,0x00,
+0xF8,0x00,0x27,0x37,0xAC,0x00,0x05,0x03,0x03,0x04,0x04,0x00,0x11,0x00,0xC1,0x09,
+0xD9,0xFF,0x36,0x01,0x0E,0x00,0x1C,0x00,0xDD,0x03,0x03,0x00,0x40,0x00,0x14,0x00,
+0x4C,0x00,0x95,0x03,0x05,0x00,0x07,0x00,0x18,0x00,0xA5,0x00,0x4B,0x06,0x9B,0xFF,
+0x03,0x00,0x19,0x00,0xC8,0x00,0x14,0x03,0x3B,0x00,0x00,0x00,0x1A,0x00,0x16,0x00,
+0x40,0x05,0xE4,0xFF,0xA2,0x00,0x14,0x00,0x3B,0x00,0x67,0x04,0xF0,0xFF,0x3B,0x00,
+0x1A,0x00,0x6F,0x00,0x22,0x04,0xF8,0xFF,0x03,0x00,0x20,0x00,0x1C,0x00,0x48,0x05,
+0xDB,0xFF,0x98,0x00,0x16,0x00,0x57,0x00,0x90,0x04,0xEC,0xFF,0x19,0x00,0x21,0x00,
+0x95,0x00,0x08,0x04,0xFE,0xFF,0x02,0x00,0x24,0x00,0x23,0x00,0xC4,0x05,0xCC,0xFF,
+0xA6,0x00,0x17,0x00,0x62,0x00,0x9C,0x04,0xEC,0xFF,0x17,0x00,0x25,0x00,0xA0,0x00,
+0x0E,0x04,0xFB,0xFF,0x02,0x00,0x28,0x00,0x0D,0x01,0x7D,0x04,0xE1,0xFF,0xFC,0xFF,
+0x2A,0x00,0x33,0x00,0x30,0x07,0xA2,0xFF,0xD3,0x00,0x18,0x00,0x6F,0x00,0xAD,0x04,
+0xED,0xFF,0x23,0x00,0x2B,0x00,0x9C,0x00,0x14,0x03,0x27,0x00,0x03,0x00,0x2F,0x00,
+0xE1,0x00,0x53,0x05,0xAB,0xFF,0x02,0x00,0x30,0x00,0x00,0x00,0x13,0x1A,0x05,0x00,
+0x30,0x34,0x38,0x0C,0x10,0x34,0x30,0x0E,0x30,0x0A,0x35,0x02,0x09,0x10,0x35,0x10,
+0x0A,0x34,0x1E,0x18,0x14,0x0E,0x0B,0x07,0x01,0x3C,0x37,0x34,0x30,0x2A,0x26,0x23,
+0x1C,0x17,0x0E,0x05,0x03,0x10,0x19,0x1B,0x2F,0x2F,0x10,0x0E,0x0A,0x05,0x00,0x39,
+0x33,0x30,0x10,0x0B,0x04,0x35,0x30,0x28,0x22,0x1E,0x19,0x13,0x10,0x0B,0x07,0x02,
+0x3D,0x39,0x00,0x3C,0x38,0x34,0x2E,0x23,0x1D,0x16,0x10,0x0B,0x05,0x01,0x3F,0x00,
+0x0A,0x17,0x1A,0x10,0x02,0x3F,0x21,0x1D,0x19,0x14,0x0E,0x04,0x01,0x00,0x00,0x32,
+0x33,0x05,0x0D,0x3D,0x35,0x09,0x10,0x1F,0x1F,0x0D,0x0D,0x0D,0x0D,0x35,0x35,0x0E,
+0x0D,0x36,0x32,0x09,0x0D,0x37,0x33,0x00,0x3C,0x36,0x2A,0x23,0x1E,0x1A,0x15,0x10,
+0x0B,0x08,0x03,0x3C,0x39,0x0F,0x0F,0x1D,0x18,0x12,0x0A,0x04,0x01,0x10,0x10,0x32,
+0x3E,0x0D,0x10,0x33,0x38,0x01,0x0D,0x10,0x30,0x34,0x00,0x0D,0x10,0x32,0x34,0x3A,
+0x07,0x0D,0x10,0x01,0x05,0x0B,0x0E,0x13,0x1A,0x1F,0x25,0x29,0x2E,0x34,0x36,0x3B,
+0x00,0x10,0x0E,0x07,0x3C,0x33,0x30,0x28,0x22,0x1D,0x19,0x14,0x10,0x0A,0x05,0x0B,
+0x13,0x1A,0x1D,0x22,0x26,0x2B,0x3D,0x02,0x10,0x09,0x3D,0x34,0x30,0x0B,0x04,0x00,
+0xB7,0x60,0x00,0x00,0xB7,0x60,0x00,0x00,0xCC,0x60,0x00,0x00,0xCC,0x60,0x00,0x00,
+0x2B,0x62,0x00,0x00,0x2B,0x62,0x00,0x00,0x2B,0x62,0x00,0x00,0x55,0x61,0x00,0x00,
+0x2B,0x62,0x00,0x00,0xB2,0x61,0x00,0x00,0x06,0x64,0x00,0x00,0x06,0x64,0x00,0x00,
+0x2F,0x64,0x00,0x00,0xFC,0x63,0x00,0x00,0x58,0x64,0x00,0x00,0x88,0x64,0x00,0x00,
+0x70,0x64,0x00,0x00,0x61,0x67,0x00,0x00,0x85,0x67,0x00,0x00,0x95,0x67,0x00,0x00,
+0xD0,0x67,0x00,0x00,0xCA,0x67,0x00,0x00,0xCA,0x67,0x00,0x00,0xD0,0x67,0x00,0x00,
+0xCA,0x67,0x00,0x00,0x0A,0x0B,0x2C,0x1B,0x09,0x07,0x1C,0x1A,0x25,0x05,0x1D,0x19,
+0x26,0x00,0x1E,0x18,0x27,0x04,0x1F,0x17,0x28,0x06,0x20,0x0D,0x29,0x08,0x2B,0x0C,
+0x2A,0x00,0x00,0x00,0x57,0x75,0x00,0x00,0x57,0x75,0x00,0x00,0x88,0x75,0x00,0x00,
+0x88,0x75,0x00,0x00,0xBA,0x75,0x00,0x00,0xBA,0x75,0x00,0x00,0xBA,0x75,0x00,0x00,
+0xBA,0x75,0x00,0x00,0x39,0x75,0x00,0x00,0x1B,0x75,0x00,0x00,0x1B,0x76,0x00,0x00,
+0x1B,0x76,0x00,0x00,0x4E,0x76,0x00,0x00,0x4E,0x76,0x00,0x00,0x83,0x76,0x00,0x00,
+0x83,0x76,0x00,0x00,0x83,0x76,0x00,0x00,0x83,0x76,0x00,0x00,0xF4,0x75,0x00,0x00,
+0xE2,0x75,0x00,0x00,0x72,0x77,0x00,0x00,0x72,0x77,0x00,0x00,0xC6,0x77,0x00,0x00,
+0xC6,0x77,0x00,0x00,0xA8,0x78,0x00,0x00,0xA8,0x78,0x00,0x00,0xA8,0x78,0x00,0x00,
+0xA8,0x78,0x00,0x00,0x20,0x78,0x00,0x00,0x66,0x78,0x00,0x00,0xE2,0x89,0x00,0x00,
+0xE9,0x89,0x00,0x00,0xF0,0x89,0x00,0x00,0xF7,0x89,0x00,0x00,0xFE,0x89,0x00,0x00,
+0x05,0x8A,0x00,0x00,0x0C,0x8A,0x00,0x00,0x13,0x8A,0x00,0x00,0x1A,0x8A,0x00,0x00,
+0x21,0x8A,0x00,0x00,0x28,0x8A,0x00,0x00,0x2F,0x8A,0x00,0x00,0x44,0x8B,0x00,0x00,
+0x44,0x8B,0x00,0x00,0x7F,0x8B,0x00,0x00,0x7F,0x8B,0x00,0x00,0x0E,0x8C,0x00,0x00,
+0x0E,0x8C,0x00,0x00,0x0E,0x8C,0x00,0x00,0x0E,0x8C,0x00,0x00,0xBC,0x8B,0x00,0x00,
+0xE1,0x8B,0x00,0x00,0x00,0x01,0x00,0x00,0x3F,0x8E,0x00,0x00,0x64,0x8E,0x00,0x00,
+0xBC,0x8E,0x00,0x00,0xDD,0x8F,0x00,0x00,0x18,0x8F,0x00,0x00,0x48,0x8F,0x00,0x00,
+0xDD,0x8F,0x00,0x00,0x50,0x8F,0x00,0x00,0x04,0x00,0x1D,0x00,0x2E,0x00,0x50,0x00,
+0x82,0x00,0xC7,0x00,0x23,0x01,0x9B,0x01,0x32,0x02,0xEE,0x02,0xD0,0x03,0xDE,0x04,
+0x19,0x06,0x82,0x07,0x1A,0x09,0xE0,0x0A,0xD0,0x0C,0xE7,0x0E,0x1F,0x11,0x71,0x13,
+0xD3,0x15,0x3D,0x18,0xA2,0x1A,0xF9,0x1C,0x34,0x1F,0x47,0x21,0x28,0x23,0xCB,0x24,
+0x27,0x26,0x33,0x27,0xEA,0x27,0x46,0x28,0x04,0x00,0x1C,0x00,0x2B,0x00,0x4B,0x00,
+0x78,0x00,0xB7,0x00,0x0A,0x01,0x75,0x01,0xFC,0x01,0xA3,0x02,0x6D,0x03,0x5E,0x04,
+0x76,0x05,0xB9,0x06,0x26,0x08,0xBE,0x09,0x7D,0x0B,0x61,0x0D,0x67,0x0F,0x87,0x11,
+0xBB,0x13,0xFC,0x15,0x3F,0x18,0x7B,0x1A,0xA6,0x1C,0xB6,0x1E,0x9F,0x20,0x57,0x22,
+0xD7,0x23,0x14,0x25,0x08,0x26,0xAF,0x26,0x03,0x27,0x05,0x00,0x08,0x21,0x05,0x00,
+0x00,0x20,0x00,0x00,0x80,0xBD,0x00,0xC0,0x90,0xBD,0x00,0xC0,0xA2,0xBD,0x00,0xC0,
+0xA6,0xBD,0x00,0xC0,0x18,0xBD,0x00,0xC0,0x60,0xBD,0x00,0xC0,0xC0,0xBD,0x00,0xC0,
+0xDE,0xBD,0x00,0xC0,0xE2,0xBD,0x00,0xC0,0x08,0xBE,0x00,0xC0,0x96,0xBE,0x00,0xC0,
+0xD8,0xBE,0x00,0xC0,0x3A,0xBC,0x00,0xC0,0x3E,0xBC,0x00,0xC0,0x14,0xBD,0x00,0xC0,
+0x5C,0xBD,0x00,0xC0,0x05,0x00,0x2A,0x00,0x2A,0x00,0x3E,0x00,0x58,0x00,0x79,0x00,
+0xA1,0x00,0xD3,0x00,0x0F,0x01,0x56,0x01,0xAA,0x01,0x0C,0x02,0x7D,0x02,0xFE,0x02,
+0x91,0x03,0x37,0x04,0xF0,0x04,0xBE,0x05,0xA0,0x06,0x99,0x07,0xA7,0x08,0xCC,0x09,
+0x06,0x0B,0x56,0x0C,0xBB,0x0D,0x34,0x0F,0xC0,0x10,0x5D,0x12,0x0A,0x14,0xC5,0x15,
+0x8A,0x17,0x59,0x19,0x2D,0x1B,0x05,0x1D,0xDC,0x1E,0xB0,0x20,0x7D,0x22,0x40,0x24,
+0xF5,0x25,0x98,0x27,0x27,0x29,0x9E,0x2A,0xF9,0x2B,0x37,0x2D,0x53,0x2E,0x4B,0x2F,
+0x1E,0x30,0xC9,0x30,0x4A,0x31,0xA1,0x31,0xCD,0x31,0x04,0x00,0x2D,0x00,0x6D,0x00,
+0xE7,0x00,0xAD,0x01,0xD8,0x02,0x81,0x04,0xBE,0x06,0xA0,0x09,0x30,0x0D,0x6D,0x11,
+0x47,0x16,0xA3,0x1B,0x56,0x21,0x29,0x27,0xDC,0x2C,0x2A,0x32,0xCF,0x36,0x8B,0x3A,
+0x29,0x3D,0x81,0x3E,0x06,0x00,0xF5,0x28,0x03,0x00,0x33,0x33,0x64,0xBD,0x00,0xC0,
+0x7A,0xBD,0x00,0xC0,0x0C,0xBE,0x00,0xC0,0x9A,0xBE,0x00,0xC0,0x84,0xBD,0x00,0xC0,
+0x94,0xBD,0x00,0xC0,0x68,0xBD,0x00,0xC0,0xAA,0xBD,0x00,0xC0,0xC4,0xBD,0x00,0xC0,
+0xE6,0xBD,0x00,0xC0,0xEA,0xBC,0x00,0xC0,0xA4,0xBE,0x00,0xC0,0xB8,0xBB,0x00,0xC0,
+0xF8,0xBB,0x00,0xC0,0x84,0xBC,0x00,0xC0,0x14,0xBE,0x00,0xC0,0x06,0x00,0x00,0x20,
+0x03,0x00,0xAA,0x2A,0x00,0x00,0x00,0x20,0x02,0x00,0x45,0x00,0x5D,0x01,0x1B,0x04,
+0x31,0x09,0xA2,0x10,0x55,0x19,0x32,0x21,0xE5,0x25,0x01,0x00,0x10,0x10,0xEF,0x2F,
+0x00,0x00,0x00,0x20,0x02,0x00,0x49,0x01,0x6C,0x07,0xB1,0x15,0x60,0x29,0x38,0x38,
+0x01,0x00,0x00,0x20,0x02,0x00,0xAC,0x00,0xCB,0x03,0x95,0x0B,0x6B,0x18,0xE0,0x26,
+0xA6,0x30,0x02,0x00,0xAA,0x2A,0x02,0x00,0x00,0x20,0x03,0x00,0x4D,0x00,0x51,0x01,
+0xBD,0x03,0x48,0x08,0x6B,0x0F,0x0D,0x19,0x47,0x24,0x73,0x2F,0x86,0x38,0x9F,0x3D,
+0x03,0x00,0x00,0x20,0x03,0x00,0x33,0x00,0xC4,0x00,0x08,0x02,0x5B,0x04,0x11,0x08,
+0x55,0x0D,0x0D,0x14,0xCC,0x1B,0xCF,0x23,0x1E,0x2B,0xB5,0x30,0xBD,0x33,0x04,0x00,
+0x33,0x33,0x04,0x00,0xAA,0x2A,0x03,0x00,0x1F,0x00,0x5B,0x00,0xD6,0x00,0xAB,0x01,
+0xF6,0x02,0xD5,0x04,0x59,0x07,0x87,0x0A,0x52,0x0E,0x96,0x12,0x1C,0x17,0x9B,0x1B,
+0xC0,0x1F,0x37,0x23,0xB6,0x25,0x05,0x27,0x04,0x00,0x00,0x20,0x01,0x00,0x65,0x04,
+0x5D,0x14,0x3D,0x27,0x05,0x00,0x26,0x00,0x1D,0x00,0x28,0x00,0x36,0x00,0x47,0x00,
+0x5A,0x00,0x72,0x00,0x8D,0x00,0xAE,0x00,0xD3,0x00,0xFD,0x00,0x2D,0x01,0x64,0x01,
+0xA2,0x01,0xE6,0x01,0x33,0x02,0x87,0x02,0xE5,0x02,0x4B,0x03,0xBA,0x03,0x33,0x04,
+0xB6,0x04,0x43,0x05,0xDB,0x05,0x7C,0x06,0x29,0x07,0xDF,0x07,0xA1,0x08,0x6C,0x09,
+0x41,0x0A,0x21,0x0B,0x09,0x0C,0xFA,0x0C,0xF4,0x0D,0xF5,0x0E,0xFE,0x0F,0x0C,0x11,
+0x20,0x12,0x38,0x13,0x53,0x14,0x71,0x15,0x90,0x16,0xAF,0x17,0xCD,0x18,0xE8,0x19,
+0x00,0x1B,0x12,0x1C,0x1E,0x1D,0x23,0x1E,0x1F,0x1F,0x10,0x20,0xF7,0x20,0xD0,0x21,
+0x9C,0x22,0x59,0x23,0x07,0x24,0xA3,0x24,0x2E,0x25,0xA7,0x25,0x0C,0x26,0x5E,0x26,
+0x9C,0x26,0xC6,0x26,0xDA,0x26,0x05,0x00,0x33,0x33,0x01,0x00,0x7E,0x01,0x41,0x08,
+0x4A,0x15,0xF4,0x20,0x04,0x00,0x23,0x00,0x45,0x00,0x84,0x00,0xE4,0x00,0x6F,0x01,
+0x2F,0x02,0x2F,0x03,0x76,0x04,0x0F,0x06,0xFD,0x07,0x45,0x0A,0xE6,0x0C,0xDA,0x0F,
+0x19,0x13,0x93,0x16,0x37,0x1A,0xEF,0x1D,0xA0,0x21,0x2F,0x25,0x80,0x28,0x77,0x2B,
+0xFA,0x2D,0xF2,0x2F,0x4D,0x31,0xFD,0x31,0x05,0x00,0xF5,0x28,0x72,0xA2,0x00,0x00,
+0x8E,0xA2,0x00,0x00,0xAD,0xA2,0x00,0x00,0xCC,0xA2,0x00,0x00,0xDB,0xA2,0x00,0x00,
+0x44,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x0F,0x70,0x8A,0xF7,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,
+0x00,0x00,0x56,0x30,0x31,0x2E,0x30,0x30,0x37,0x2E,0x30,0x34,0x46,0xC9,0xF5,0x89
+};
diff --git a/drivers/input/touchscreen/msg2233/msg21xxa_yyyy_update_bin.h b/drivers/input/touchscreen/msg2233/msg21xxa_yyyy_update_bin.h new file mode 100755 index 00000000..1f4bfde8 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/msg21xxa_yyyy_update_bin.h @@ -0,0 +1,3106 @@ +u8 msg21xxa_yyyy_update_bin[49664]={
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x52,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xFD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xEF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xD3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xC5,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x1C,0x40,0x00,0x1C,
+0x60,0x00,0x1C,0x80,0x00,0x1C,0xA0,0x00,0x1C,0xC0,0x00,0x1C,0xE0,0x00,0x1D,0x00,
+0x00,0x1D,0x20,0x00,0x1D,0x40,0x00,0x1D,0x60,0x00,0x1D,0x80,0x00,0x1D,0xA0,0x00,
+0x1D,0xC0,0x00,0x1D,0xE0,0x00,0x1E,0x00,0x00,0x1E,0x20,0x00,0x1E,0x40,0x00,0x1E,
+0x60,0x00,0x1E,0x80,0x00,0x1E,0xA0,0x00,0x1E,0xC0,0x00,0x1E,0xE0,0x00,0x1F,0x00,
+0x00,0x1F,0x20,0x00,0x1F,0x40,0x00,0x1F,0x60,0x00,0x1F,0x80,0x00,0x1F,0xA0,0x00,
+0x1F,0xC0,0x00,0x1F,0xE0,0x00,0xC0,0x60,0x00,0x01,0xC8,0x63,0xAC,0x04,0x84,0x69,
+0x80,0x01,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,
+0xFC,0x21,0xFF,0x60,0xEF,0xE1,0x00,0x80,0xFF,0xE1,0x00,0xA0,0x0F,0xE1,0x08,0xC3,
+0xE0,0x02,0x0F,0x0F,0xE1,0x00,0xC3,0xE0,0x04,0x0F,0x0F,0xE1,0x04,0xC3,0xE0,0x03,
+0x0F,0xEF,0xE1,0x00,0x84,0xC3,0xE0,0x05,0x0F,0xEF,0xE1,0x00,0x88,0xC3,0xE0,0x05,
+0x1F,0xEF,0xE1,0x00,0x8C,0xE4,0x01,0x53,0x41,0x90,0x00,0x90,0x00,0x90,0x00,0x90,
+0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x30,0x44,0x0B,
+0x17,0x01,0x98,0x60,0x56,0xF8,0x01,0x4F,0x18,0x79,0x22,0xE0,0x14,0x98,0x62,0x23,
+0x00,0x18,0x58,0x77,0x01,0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0C,0x81,0x04,0x0D,
+0x21,0x0C,0x5D,0x43,0x00,0xE7,0xFF,0xFF,0xA4,0x0C,0x81,0x06,0x5C,0x63,0x00,0x20,
+0x60,0x66,0x9B,0x00,0x21,0x40,0x30,0x21,0x44,0x24,0x5D,0x40,0x41,0x4B,0x01,0x01,
+0xD0,0x81,0x04,0x66,0xE4,0x00,0x01,0x17,0xE7,0xFF,0xFF,0x5E,0x5C,0x63,0x00,0x20,
+0x64,0x4E,0xD1,0x40,0x05,0xD2,0xD1,0x41,0x05,0xB2,0xD1,0x42,0x05,0x96,0xE4,0x00,
+0x00,0xE3,0xE7,0xFF,0xFF,0x2A,0x5C,0x63,0x00,0xD0,0x62,0x05,0x1E,0x9B,0x01,0x21,
+0x40,0x24,0x5D,0x40,0x21,0x4B,0x01,0x01,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,
+0xCB,0x57,0x23,0x78,0x0B,0x7A,0x01,0x47,0x79,0xDD,0x5F,0x7B,0x04,0x0F,0x7A,0x01,
+0xCB,0x57,0x23,0x6C,0x0B,0x7A,0x01,0xC7,0x7B,0x8F,0xFF,0x0F,0x7A,0x01,0xCB,0x57,
+0x3C,0xD4,0x0B,0x7A,0x01,0x47,0x79,0xDD,0x5F,0x7B,0x04,0x0F,0x7A,0x01,0xCB,0x57,
+0x3C,0xE0,0x0B,0x7A,0x01,0xC7,0x7B,0x7F,0xFF,0x0F,0x7A,0x01,0xCA,0xF7,0x3C,0xEC,
+0x0B,0x57,0x01,0x47,0x39,0xD5,0x5F,0x39,0x04,0x0F,0x37,0x01,0x23,0x01,0x00,0xC2,
+0xF4,0x00,0x01,0xCB,0x17,0x3D,0xE8,0x0B,0x38,0x01,0xFF,0x20,0x11,0x11,0x0F,0x38,
+0x01,0xCB,0x17,0x3D,0xEC,0x0B,0x38,0x01,0xFF,0x20,0x22,0x22,0x0F,0x38,0x01,0xCB,
+0x17,0x3D,0xF0,0x0B,0x38,0x01,0xFF,0x20,0x33,0x33,0x0F,0x38,0x01,0xCA,0xF7,0x78,
+0xC0,0xFF,0x00,0xAA,0x55,0x0F,0x17,0x01,0xE4,0x00,0x00,0x01,0x0D,0x41,0x0A,0x0D,
+0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x03,0xF0,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x03,0xE8,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x03,0xEC,0xC2,
+0xE0,0x10,0x01,0xEC,0xD7,0x04,0x04,0xC2,0xE0,0x10,0x01,0xEC,0xF7,0x03,0xFC,0xC2,
+0xE0,0x10,0x01,0x0F,0x01,0x02,0xED,0x17,0x04,0x00,0xC2,0xE0,0x10,0x01,0xEF,0x17,
+0x04,0x10,0xC2,0xE0,0x10,0x01,0x0F,0x01,0x06,0xEF,0x17,0x03,0xD4,0xC2,0xE0,0x10,
+0x01,0x0F,0x01,0x0A,0xEF,0x17,0x03,0xF4,0x85,0x29,0x5C,0x84,0x00,0xC2,0xE0,0x10,
+0x01,0x4C,0x84,0x10,0xFE,0xF7,0x04,0x08,0x8E,0xE4,0x0C,0x77,0x00,0x85,0x29,0x5C,
+0x63,0x00,0x9B,0x00,0x24,0x68,0x25,0x1F,0x03,0xFE,0x5F,0x18,0x00,0xC2,0xE0,0x10,
+0x01,0xF3,0x57,0x0B,0x1E,0x1E,0xE3,0x01,0x1F,0x9A,0xFF,0x5F,0x3C,0x00,0xD7,0x97,
+0x00,0x50,0x1F,0x23,0x02,0x5F,0x39,0x00,0xC2,0xEF,0xFF,0xE1,0xCA,0xF7,0xFF,0xFF,
+0xE4,0x00,0x00,0x2F,0x4F,0x78,0x10,0x9F,0x01,0x8F,0x64,0x5F,0x18,0x00,0x0F,0x7B,
+0x02,0x5E,0xFB,0x15,0x4A,0xF7,0xD8,0xD7,0x19,0xFF,0x69,0x4F,0x03,0x10,0xC3,0x20,
+0x10,0x01,0x8F,0x04,0xEF,0x39,0x03,0xF6,0x0F,0x18,0x02,0xD7,0x38,0x01,0x41,0xC3,
+0x20,0x10,0x01,0xEF,0x79,0x03,0xF2,0xC3,0x20,0x10,0x01,0xEF,0xB9,0x03,0xEA,0xC3,
+0x20,0x10,0x01,0xEF,0xD9,0x03,0xEE,0xC3,0x20,0x10,0x01,0xEF,0x39,0x04,0x06,0xE4,
+0x00,0x00,0x49,0xC3,0x20,0x10,0x01,0xEF,0x79,0x03,0xFE,0xC3,0x20,0x10,0x01,0xEF,
+0xB9,0x04,0x02,0xC3,0x20,0x10,0x01,0xEF,0xD9,0x04,0x12,0xC3,0x20,0x10,0x01,0xEF,
+0x39,0x03,0xD6,0x20,0x60,0xDE,0x0F,0x44,0x02,0x0F,0x84,0x06,0xCF,0x5A,0x00,0x32,
+0x40,0xE7,0xE3,0xD7,0x47,0x05,0xDC,0x42,0xF7,0x2D,0x40,0xA5,0xCB,0x43,0x77,0xDB,
+0x43,0x3B,0x2C,0xCC,0xC6,0x00,0x0A,0x9B,0x4A,0x8C,0xD9,0x98,0x61,0x40,0xC6,0xD0,
+0xD7,0x06,0x04,0xF4,0x98,0x60,0xE4,0x00,0x01,0x31,0x20,0x64,0x6A,0x0F,0x44,0x02,
+0x0F,0x64,0x06,0xCF,0x5A,0x00,0x32,0x40,0xE7,0xDB,0x98,0x60,0xD7,0x47,0x04,0x14,
+0xE4,0x00,0x00,0x55,0x1C,0xFA,0xFE,0xD4,0x67,0x01,0x9E,0x4C,0x63,0x10,0x9F,0x5F,
+0x4F,0x5A,0x10,0x8F,0x44,0x8C,0x83,0x0F,0x5A,0x02,0x0F,0x64,0x02,0xCF,0x5A,0x00,
+0x32,0x41,0x08,0xDB,0x98,0x60,0xD7,0x48,0x02,0xC4,0x42,0xF7,0x2D,0x40,0xA5,0xCB,
+0x43,0xB7,0xEB,0x43,0x3D,0x2C,0xE7,0xFF,0xFF,0x3B,0xD4,0x7C,0x01,0x3E,0x9F,0x5F,
+0x4C,0xE7,0x10,0x4F,0x5A,0x10,0x98,0x60,0x8F,0x44,0x8C,0x87,0x0F,0x5A,0x02,0x0F,
+0x84,0x02,0xCF,0x5A,0x00,0x32,0x41,0x08,0xE3,0xD7,0x48,0x01,0x2C,0xE7,0xFF,0xFE,
+0xD5,0x42,0xF7,0x2D,0xCC,0xC6,0x00,0x0A,0x43,0xD7,0xF3,0x40,0xA5,0xCB,0x9B,0x4A,
+0x43,0x3E,0x2C,0x8C,0xD9,0x40,0xC6,0xD0,0xD7,0x06,0xFB,0x60,0x98,0x61,0x85,0x29,
+0xC2,0xE0,0x10,0x01,0x9B,0x21,0xEA,0xF7,0x01,0x79,0x9E,0xFF,0x5E,0xF7,0x04,0x26,
+0xE4,0x43,0xC3,0x18,0x00,0x21,0xFF,0x18,0xB6,0xF8,0x8E,0xF8,0x13,0x37,0x00,0xC3,
+0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x0B,0x1A,0xFE,0xF7,0x09,0x0C,0xD0,
+0x60,0x05,0x16,0x13,0x58,0x04,0x13,0xD8,0x01,0x1F,0x7A,0xFF,0x9F,0xC1,0x43,0xDE,
+0xD3,0x4F,0x5A,0x08,0xCD,0x1B,0x00,0x03,0x5C,0x9A,0x00,0x4F,0x7B,0x08,0x9B,0x40,
+0x5C,0x7B,0x00,0xE4,0x00,0x00,0x73,0x43,0x9A,0xDC,0x4F,0xBC,0x08,0x8F,0xB7,0x08,
+0xBD,0x01,0x40,0xB9,0x2B,0x0C,0xBD,0x01,0x9F,0x81,0x8F,0x63,0x4F,0x9C,0x08,0x5F,
+0x7B,0x00,0x8F,0x97,0x0B,0xBC,0x01,0x43,0xB9,0xEB,0x0F,0xBC,0x01,0xE4,0x00,0x00,
+0x0D,0x9B,0x60,0xD5,0x1B,0xFE,0xA4,0x8F,0x44,0x5F,0x5A,0x00,0xD7,0xDA,0xFF,0xAC,
+0x0B,0x37,0x02,0x0B,0x57,0x00,0x8F,0x59,0xC3,0x20,0x10,0x01,0xFF,0x39,0x09,0xBC,
+0x0F,0x59,0x00,0x13,0x58,0x04,0x1F,0xBA,0xFF,0x4F,0xBD,0x10,0x43,0xDD,0xCC,0x8F,
+0xB7,0x4F,0x9A,0x08,0x09,0x1D,0x00,0x1F,0x7C,0xFF,0x4F,0xBB,0x08,0x8F,0xB7,0x0B,
+0xBD,0x00,0x8F,0xA8,0x0F,0xBE,0x00,0x13,0x18,0x01,0x27,0x05,0xAF,0xE4,0x00,0x01,
+0x45,0x20,0x66,0xFE,0x13,0x58,0x04,0x13,0xD8,0x01,0x1F,0x7A,0xFF,0x9F,0xC1,0x43,
+0xDE,0xD3,0x4F,0x5A,0x08,0xCD,0x1B,0x00,0x03,0x5C,0x9A,0x00,0x4F,0x7B,0x08,0x9B,
+0x40,0x5C,0x7B,0x00,0xE4,0x00,0x00,0x73,0x43,0x9A,0xDC,0x4F,0xBC,0x08,0x8F,0xB7,
+0x08,0xBD,0x00,0x40,0xA5,0xC8,0x0C,0xBD,0x01,0x9F,0x81,0x8F,0x63,0x4F,0x9C,0x08,
+0x5F,0x7B,0x00,0x8F,0x97,0x0B,0xBC,0x00,0x43,0xBD,0xC8,0x0F,0xBC,0x01,0xE4,0x00,
+0x00,0x0D,0x9B,0x60,0xD5,0x1B,0xFE,0xA4,0x8F,0x44,0x5F,0x5A,0x00,0xD7,0xDA,0xFF,
+0xAC,0xE7,0xFF,0xFE,0xBF,0x4F,0x1A,0x10,0x9F,0x81,0x43,0x58,0xCC,0x43,0xB8,0xBC,
+0x4F,0x9C,0x08,0x0B,0xBD,0x00,0x8F,0x97,0x0B,0x9C,0x00,0x8F,0x9D,0x0F,0x9A,0x00,
+0x4F,0x7B,0x10,0x1F,0x58,0xFE,0x8F,0x3B,0x4F,0x5A,0x08,0x9F,0x1F,0x8F,0x57,0x4F,
+0x18,0x08,0x0B,0x5A,0x00,0x8E,0xF8,0x0A,0xF7,0x00,0x8E,0xFA,0x0E,0xF9,0x00,0x85,
+0x29,0x5C,0xE7,0x00,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x0B,0x1E,0x42,0xE7,0xBB,0x5E,
+0xF7,0x00,0x9B,0x00,0x8C,0xB7,0x8C,0xD7,0xC3,0x80,0x10,0x01,0xC3,0x40,0x10,0x01,
+0x5C,0xC6,0x00,0x5C,0xA5,0x00,0x8B,0x38,0x9A,0xE0,0xFF,0x9C,0x09,0xBC,0xFF,0x5A,
+0x09,0x0C,0xE4,0x00,0x00,0x49,0x4F,0x65,0x10,0x43,0xBB,0xE4,0x0F,0xBD,0x02,0x9C,
+0xA1,0x8E,0xFD,0x5C,0xA5,0x00,0x8B,0xBB,0x8F,0x7A,0x8F,0xBA,0x0B,0x7B,0x00,0x0B,
+0xBD,0x02,0x8F,0x1B,0x8F,0x3D,0xD4,0xA6,0xFF,0x01,0x26,0xE0,0xE8,0x27,0x20,0xDC,
+0x27,0x00,0xD0,0xC3,0x40,0x10,0x01,0xFF,0x5A,0x04,0x08,0x4C,0xE7,0x10,0xCF,0x18,
+0xFF,0xF6,0x8C,0xFA,0x0F,0x47,0x02,0x43,0x3A,0xCB,0x9F,0x56,0x8F,0x19,0x43,0x58,
+0xD0,0xCF,0x5A,0x07,0xFF,0x43,0x5A,0xB8,0x0F,0x43,0x01,0x0E,0xE4,0x00,0x98,0x61,
+0xE4,0x00,0x00,0x0D,0x98,0x60,0x85,0x29,0x9A,0xE3,0x9B,0x01,0xE4,0x00,0x00,0x11,
+0x8F,0x17,0x9E,0xE2,0xD7,0x03,0xFF,0xE1,0x4C,0x77,0x09,0x9C,0x7F,0x85,0x29,0xFF,
+0x00,0x7F,0xFF,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x03,0xD8,0x0F,0x17,0x01,0x0F,0x17,
+0x03,0x0F,0x17,0x05,0x0F,0x17,0x07,0x0F,0x17,0x09,0x0F,0x17,0x0B,0x85,0x29,0xC3,
+0x00,0x10,0x01,0xFE,0xF8,0x03,0xD8,0xC3,0x00,0x10,0x01,0x0B,0x37,0x08,0xFF,0x18,
+0x0B,0x90,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0x41,0x0B,0x37,0x05,0x0F,0x37,0x09,0x0B,
+0x37,0x07,0xE4,0x00,0x00,0x1B,0x0B,0x38,0x17,0x0F,0x37,0x09,0x0B,0x38,0x19,0x0F,
+0x37,0x0B,0x0B,0x37,0x04,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0x41,0x0B,0x37,0x01,0x0F,
+0x37,0x05,0x0B,0x37,0x03,0xE4,0x00,0x00,0x1B,0x0B,0x38,0x17,0x0F,0x37,0x05,0x0B,
+0x38,0x19,0x0F,0x37,0x07,0x0B,0x38,0x17,0x0B,0x18,0x19,0x0F,0x37,0x01,0x0F,0x17,
+0x03,0x85,0x29,0x1C,0x21,0xD8,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x24,0x0D,0x41,0x20,
+0x0D,0x61,0x1C,0xFD,0x57,0x03,0xD8,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x0D,0xC1,0x10,
+0x09,0xAA,0x07,0x0B,0x0A,0x03,0x43,0x18,0x6D,0x5F,0x18,0x06,0x0F,0x01,0x0B,0x43,
+0x18,0xC3,0xE9,0x97,0x03,0xD9,0x09,0xCA,0x05,0x41,0x8C,0x75,0x5D,0x8C,0x06,0x40,
+0x6C,0x63,0x8C,0x78,0xE7,0xFF,0xFE,0x48,0x0A,0xEA,0x09,0x41,0xCE,0xBD,0x0A,0xEA,
+0x0B,0x42,0xED,0xBD,0x5E,0xF7,0x06,0x0E,0xE1,0x0F,0x42,0xF7,0xBB,0x5D,0x63,0x06,
+0x5D,0x4E,0x06,0x40,0x6A,0x53,0x8C,0x77,0xE7,0xFF,0xFE,0x00,0x5E,0xE3,0x06,0x98,
+0x61,0x21,0x60,0xAC,0x22,0xE0,0xA0,0x43,0x0B,0xB8,0xD3,0x05,0x01,0x14,0x41,0x4C,
+0x53,0x0B,0x01,0x0E,0x09,0x81,0x0A,0x41,0x6B,0xBB,0x43,0x0C,0xC3,0x8D,0x58,0xCD,
+0x4A,0x00,0x64,0x42,0xEA,0x58,0x5E,0xE8,0xB1,0x48,0x61,0x01,0x0D,0xC1,0x12,0x0D,
+0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,0x1C,0x21,
+0x28,0x85,0x29,0x1C,0x21,0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0x0D,0x61,0x0C,
+0x0D,0x81,0x08,0x0D,0xC1,0x00,0xF1,0x97,0x08,0x72,0xC1,0x40,0x10,0x01,0x1D,0x6C,
+0xFF,0x0D,0x21,0x14,0x0D,0xA1,0x04,0x5D,0xC3,0x00,0x5D,0x6B,0x00,0xFD,0x4A,0x0B,
+0x90,0x4E,0xEE,0x5D,0x56,0xF7,0x01,0x22,0xE0,0xD4,0x8A,0xEB,0xE4,0x00,0x00,0x43,
+0xCC,0x77,0x00,0x30,0x1D,0xB7,0x01,0x8C,0x6A,0xCC,0x8D,0x00,0x30,0x9C,0x64,0x8C,
+0x8A,0x50,0xA0,0x30,0x9C,0x84,0xE4,0x00,0x67,0xF4,0x5E,0xED,0x00,0xD5,0x97,0xFF,
+0x1D,0x12,0xEA,0x00,0x22,0xE0,0x20,0x9E,0xFF,0x1A,0xEA,0x00,0x21,0x60,0x30,0x9D,
+0x7F,0x5D,0x6B,0x00,0xE7,0xFF,0xFF,0x7B,0x12,0xEA,0x00,0x22,0xE0,0x52,0xC2,0xE0,
+0x10,0x01,0x9B,0x37,0xEB,0x17,0x08,0x87,0x47,0x18,0xCC,0xEF,0x17,0x08,0x87,0x0D,
+0xC1,0x02,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,
+0x16,0x1C,0x21,0x18,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xEB,0x37,
+0x01,0x78,0xFF,0x18,0x04,0x1C,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x1A,0x23,0x24,
+0xA6,0x13,0x37,0x04,0x9A,0xE0,0x9F,0x21,0xE4,0x00,0x00,0x2F,0x4F,0x57,0x08,0x1F,
+0x77,0xFF,0x8F,0x58,0x4F,0x7B,0x10,0x9E,0xE1,0x0F,0x7A,0x01,0x5E,0xF7,0x00,0xD6,
+0xF9,0xFF,0x68,0xE4,0x00,0x00,0x9D,0x23,0x28,0x38,0x13,0x37,0x04,0x9A,0xE0,0x9F,
+0x21,0xE4,0x00,0x00,0x79,0x13,0x37,0x04,0x9A,0xE0,0x9F,0x21,0xE4,0x00,0x00,0x2F,
+0x4F,0x57,0x08,0xCF,0x77,0x00,0x06,0x8F,0x58,0x9F,0x79,0x9E,0xE1,0x0F,0x7A,0x01,
+0x5E,0xF7,0x00,0xD6,0xF9,0xFF,0x68,0xE4,0x00,0x00,0x35,0x4F,0x57,0x08,0x4F,0x77,
+0x08,0x8F,0x58,0x9F,0x7F,0x9E,0xE1,0x0F,0x7A,0x01,0x5E,0xF7,0x00,0xD6,0xF9,0xFF,
+0x70,0x85,0x29,0x9C,0x30,0x5C,0xC6,0x00,0x0D,0x61,0x08,0x0D,0x81,0x04,0x0D,0xA1,
+0x00,0x0D,0x41,0x0C,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,0x1A,0x13,0xD8,0x04,0x40,
+0xC6,0xF3,0x5E,0xE6,0x00,0x5F,0xA3,0x06,0x8C,0x97,0x8C,0xB7,0x5F,0x7D,0x04,0x0A,
+0xF8,0x0B,0x11,0x58,0x0C,0x40,0xFB,0xBC,0x41,0x9B,0xBD,0xC1,0xA0,0x10,0x01,0xC3,
+0x00,0x10,0x01,0x5C,0xA5,0x00,0x4D,0x77,0x08,0x5C,0xE7,0x04,0x5D,0x8C,0x04,0x5C,
+0x84,0x00,0xFD,0xAD,0x04,0x1C,0xFF,0x18,0x09,0x0C,0x53,0x20,0x64,0xE4,0x00,0x01,
+0x21,0x43,0x44,0x35,0x9F,0x41,0x4F,0x5A,0x08,0x8F,0x4D,0x09,0x1A,0x00,0x41,0x08,
+0xBB,0x41,0x08,0x50,0x5F,0x88,0x04,0x43,0x5C,0xDD,0x5F,0x5A,0x06,0x4C,0x7A,0xFA,
+0x47,0x43,0xD6,0x43,0x5A,0x1D,0xD6,0xFA,0x03,0x14,0xD5,0x7A,0x02,0x70,0x5D,0x08,
+0x06,0xD5,0x1D,0x00,0x58,0x43,0x9C,0x3D,0xE4,0x00,0x00,0x0F,0x43,0x8C,0xE5,0x5F,
+0x9C,0x06,0x4F,0x44,0x10,0x43,0x97,0xE5,0x8F,0x58,0xCF,0x9C,0x00,0x64,0x09,0x1A,
+0x00,0x43,0x9C,0xB8,0xC7,0x9C,0xFF,0xFF,0x41,0x1C,0x43,0x41,0x08,0xC8,0x0D,0x1A,
+0x01,0x4F,0x44,0x10,0x9F,0x42,0x8F,0x58,0x09,0x1A,0x00,0x43,0x9C,0x43,0x43,0x9C,
+0xC8,0x0F,0x9A,0x01,0xE4,0x00,0x00,0x29,0x4F,0x44,0x10,0x8F,0x58,0x0C,0x1A,0x01,
+0x4F,0x44,0x10,0x8F,0x58,0x0C,0x1A,0x03,0x9C,0x81,0x5C,0x84,0x00,0xD4,0x85,0xFB,
+0xA0,0xC2,0xE0,0x10,0x01,0x0D,0xA1,0x02,0xF0,0x77,0x0B,0x1B,0x0D,0x81,0x06,0x0D,
+0x61,0x0A,0x0D,0x41,0x0E,0x40,0x7E,0x1B,0x1C,0x21,0x10,0xE4,0x00,0xC1,0x25,0x5C,
+0x63,0x00,0x5C,0x84,0x00,0xC2,0xE0,0x10,0x01,0x43,0x64,0x1D,0xF2,0xF7,0x0B,0x1E,
+0x9F,0x61,0x40,0xA5,0xBB,0x5F,0x7B,0x00,0x5C,0xA5,0x00,0x20,0xE4,0x3E,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x0C,0xD0,0xE4,0x00,0x00,0x19,0xC2,0xE0,0x10,0x01,0xFE,0xF7,
+0x09,0x0C,0x43,0x23,0x2C,0x9B,0x00,0x4F,0x39,0x10,0x9F,0x22,0x8F,0x37,0xC2,0xEF,
+0xFF,0xE1,0xCA,0xF7,0xFF,0xFF,0xE4,0x00,0x00,0x3D,0x0B,0x99,0xFE,0x0B,0x59,0x00,
+0x9F,0x24,0x8F,0x5C,0x4F,0x98,0x10,0x5E,0xFA,0x15,0x8F,0x86,0x4A,0xF7,0xD0,0x0F,
+0x5C,0x00,0x9F,0x01,0x5F,0x58,0x00,0xD7,0x7A,0xFF,0x1D,0x9B,0x00,0xE4,0x00,0x00,
+0x29,0x0F,0x26,0x02,0x9F,0x01,0x43,0x39,0xBD,0x5F,0x18,0x00,0x0F,0x26,0x00,0x9C,
+0xC4,0xD7,0x78,0xFF,0x85,0x85,0x29,0x1C,0x21,0x88,0x0D,0x41,0x70,0x0D,0x61,0x6C,
+0x5D,0x44,0x00,0x0D,0x81,0x68,0x5C,0x85,0x00,0x0D,0xA1,0x64,0x88,0xA6,0x41,0xA4,
+0x55,0x0D,0x21,0x74,0x89,0x83,0x88,0xC1,0x88,0x6A,0xE7,0xFF,0xFE,0xAA,0xC2,0xE0,
+0x10,0x01,0x9D,0xA1,0xEB,0x57,0x01,0x78,0x9B,0x20,0x5D,0xAD,0x00,0x8B,0x19,0x9A,
+0xE0,0x89,0x61,0xE4,0x00,0x00,0x5B,0x4F,0x79,0x10,0x43,0x99,0x54,0x8F,0x6B,0x0F,
+0x7B,0x02,0x8E,0xFB,0x23,0x44,0x54,0x23,0x48,0x36,0xCF,0x9C,0x00,0x06,0x9F,0x9F,
+0xE4,0x00,0x00,0x13,0x4F,0x9C,0x08,0x9F,0x81,0x43,0x7C,0xDB,0x9F,0x21,0x8F,0x1B,
+0x5F,0x79,0x00,0xD5,0xBB,0xFE,0xA5,0x26,0xE1,0x34,0xC3,0x20,0x10,0x01,0xEB,0x39,
+0x0B,0x25,0x43,0x18,0xCB,0x23,0x44,0x32,0x4F,0x37,0x0A,0x8F,0x19,0xE4,0x00,0x00,
+0x35,0x23,0x48,0x46,0xCF,0x37,0x00,0x03,0xCE,0xF7,0x00,0x06,0x8F,0x19,0xE4,0x00,
+0x00,0x13,0x8F,0x17,0x4E,0xF7,0x08,0x42,0xF8,0xB8,0xC2,0xE0,0xFF,0xE8,0xCB,0x00,
+0x07,0xFF,0x98,0x61,0x4A,0xF7,0xC0,0x5E,0xFF,0xF9,0x4A,0xF7,0x00,0x0E,0xEC,0x01,
+0xE4,0x00,0x00,0x0D,0x98,0x60,0x0D,0xA1,0x66,0x0D,0x81,0x6A,0x0D,0x61,0x6E,0x0D,
+0x41,0x72,0x0D,0x21,0x76,0x1C,0x21,0x78,0x85,0x29,0xFC,0x21,0xFF,0x78,0xED,0x41,
+0x00,0x80,0x0D,0x81,0x78,0x0D,0xA1,0x74,0x0D,0xC1,0x70,0x0D,0xE1,0x6C,0x0E,0x01,
+0x68,0x0E,0xC1,0x64,0xED,0x21,0x00,0x84,0x0D,0x61,0x7C,0xC1,0x40,0x10,0x01,0xFD,
+0x4A,0x0B,0x1A,0x11,0x6A,0x04,0x4E,0xEB,0x08,0x9E,0xE8,0xC6,0xF7,0x03,0xF8,0xFE,
+0xC1,0x00,0x88,0x5D,0xC4,0x00,0x5D,0xA5,0x00,0x8A,0x03,0x5C,0xA6,0x00,0x89,0xE1,
+0x41,0x65,0x5B,0x40,0x21,0xBD,0x88,0x6E,0x88,0x8D,0xFC,0xD6,0xFF,0x78,0xE7,0xFF,
+0xFC,0xA2,0xC3,0x40,0x10,0x01,0x89,0x81,0x5D,0x6B,0x00,0x13,0x2A,0x04,0x9A,0xE0,
+0xFF,0x5A,0x04,0x1C,0xE4,0x00,0x00,0x29,0x4F,0x17,0x08,0x9E,0xE1,0x43,0x6C,0xC4,
+0x8F,0x1A,0x0B,0x18,0x03,0x0F,0x1B,0x01,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x6D,0x43,
+0x4B,0x74,0x8D,0xAB,0x5F,0x5A,0x00,0x5D,0xAD,0x00,0x9A,0xE0,0x1F,0x2D,0x01,0x43,
+0x39,0xD5,0x5F,0x39,0x00,0xE4,0x00,0x00,0x33,0x4F,0x77,0x10,0xFF,0x96,0xFF,0x78,
+0x8F,0x7C,0x0F,0x7B,0x02,0x27,0x60,0x4A,0xD5,0xB8,0x03,0x19,0x9E,0xE1,0x5F,0x17,
+0x00,0xD7,0x38,0xFF,0x45,0x8B,0x1A,0x1F,0x36,0xD8,0x1F,0x76,0xD8,0x4E,0xF8,0x10,
+0x8E,0xF9,0x0F,0x37,0xA2,0x1E,0xF8,0x01,0x43,0x39,0xCB,0x4E,0xF7,0x10,0x8E,0xFB,
+0x0E,0xF7,0xA2,0x42,0xF7,0xBB,0x5F,0x37,0x15,0x4B,0x77,0xC8,0x27,0x60,0xBC,0x8F,
+0x1A,0x0B,0x6A,0x0B,0x41,0x78,0x5D,0x13,0x4A,0x0C,0x4D,0x6B,0x08,0x98,0x61,0x8D,
+0x8B,0x0B,0x0C,0x00,0x43,0x18,0xDB,0x43,0x77,0xDB,0x43,0x18,0xD0,0x8E,0xF9,0x42,
+0xFB,0xB8,0x8E,0xF8,0x0E,0xF0,0x01,0xE4,0x00,0x00,0x0D,0x98,0x60,0x88,0x2F,0x0E,
+0xC1,0x66,0x0E,0x01,0x6A,0x0D,0xE1,0x6E,0x0D,0xC1,0x72,0x0D,0xA1,0x76,0x0D,0x81,
+0x7A,0x0D,0x61,0x7E,0xED,0x41,0x00,0x82,0xED,0x21,0x00,0x86,0xFC,0x21,0x00,0x88,
+0x85,0x29,0x1C,0x21,0xB8,0x0D,0x41,0x40,0xC1,0x40,0x10,0x01,0x0D,0x61,0x3C,0x0D,
+0x81,0x38,0x0D,0xC1,0x30,0x0E,0x41,0x20,0x0E,0x61,0x1C,0x0E,0x81,0x18,0x0E,0xA1,
+0x14,0x0E,0xC1,0x10,0x0D,0x21,0x44,0x0D,0xA1,0x34,0x0D,0xE1,0x2C,0x0E,0x01,0x28,
+0x0E,0x21,0x24,0x5E,0x63,0x00,0x5E,0x44,0x00,0xC1,0xC0,0x10,0x01,0xF0,0x8A,0x0B,
+0x1A,0xFD,0xCE,0x0C,0x5C,0x98,0xA0,0x88,0x6E,0x99,0x80,0x8A,0xCA,0xE4,0x00,0xBE,
+0x36,0xC1,0x40,0x10,0x01,0x89,0x6C,0xC2,0xA0,0x10,0x01,0x9A,0x81,0xFD,0x4A,0x0B,
+0x90,0xE4,0x00,0x01,0x19,0xCC,0x6B,0x00,0x30,0xEA,0xF5,0x08,0x3F,0x41,0xA3,0x54,
+0x56,0xF7,0x02,0x12,0x2D,0x04,0x12,0x0D,0x05,0x11,0xED,0x07,0x22,0xE1,0x0C,0x1C,
+0x61,0x04,0x88,0x91,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFA,0xDA,0x20,0x61,
+0x14,0x1C,0x61,0x06,0x88,0x91,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFC,0x5C,
+0x20,0x60,0xCC,0x0B,0x01,0x04,0xCF,0x18,0x00,0x07,0x0A,0xE1,0x06,0xCE,0xF7,0x00,
+0x03,0x8E,0xF8,0x9B,0x0A,0x42,0xF7,0xC0,0x0E,0xED,0x17,0xE4,0x00,0x00,0x43,0x8C,
+0x6A,0x88,0x91,0x1C,0x63,0x16,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFA,0x56,
+0x20,0x60,0x32,0x4E,0xF4,0x5C,0x45,0x8C,0xBD,0x5D,0x8C,0x00,0x88,0x6E,0xF0,0x96,
+0x0B,0x1A,0x98,0xA1,0x9D,0x61,0xE4,0x00,0xBD,0x04,0x5D,0x6B,0x00,0x12,0xEA,0x00,
+0xD6,0xEB,0xFB,0xAD,0x88,0x6C,0xE7,0xFF,0xF4,0x7A,0x12,0xEA,0x00,0x22,0xE0,0x6C,
+0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x25,0x56,0xF7,0x40,0x22,0xE0,0x34,0xC2,0xE0,
+0x10,0x01,0xEE,0xF7,0x03,0xE6,0x86,0xE8,0xC2,0xE0,0x10,0x01,0x88,0x6E,0xF0,0x97,
+0x0B,0x1A,0x98,0xA1,0xE4,0x00,0xBC,0x88,0xC2,0xE0,0x10,0x01,0x99,0x80,0xEA,0xF7,
+0x08,0x25,0x89,0x6C,0x56,0xF7,0x80,0x99,0xA1,0x22,0xE0,0xFC,0xC2,0xE0,0x10,0x01,
+0xEE,0xF7,0x03,0xFA,0x86,0xE8,0xE4,0x00,0x00,0x7F,0xCE,0xEB,0x00,0x30,0x40,0x6A,
+0xBC,0x8A,0xE3,0x88,0x83,0x10,0xB7,0x04,0x1C,0x63,0x18,0x9C,0x8C,0x10,0xD7,0x05,
+0x10,0xF7,0x07,0xE7,0xFF,0xEF,0xDC,0x20,0x60,0x32,0x4E,0xED,0x5C,0x45,0x8C,0xBD,
+0x5D,0x8C,0x00,0x9D,0x61,0x5D,0x6B,0x00,0x12,0xEA,0x00,0xD6,0xEB,0xFE,0x7D,0x88,
+0x6C,0xE7,0xFF,0xF3,0x64,0x22,0x61,0x5C,0x22,0x40,0xFE,0xE4,0x00,0x00,0xA3,0xCD,
+0x6C,0x00,0x30,0x8D,0x6A,0x0A,0xEB,0x16,0x0E,0xE1,0x08,0x0A,0xEB,0x18,0x1C,0x61,
+0x08,0x0E,0xE1,0x0C,0x1C,0x81,0x0C,0xEE,0xED,0x03,0xD2,0x0C,0xAB,0x0E,0x88,0xCE,
+0x86,0xE8,0x0E,0xE1,0x0A,0x9D,0x81,0x0E,0xEB,0x17,0x5D,0x8C,0x00,0x0E,0xE1,0x0E,
+0x0E,0xEB,0x19,0xE4,0x00,0x00,0x25,0xC1,0xC0,0x10,0x01,0x99,0x80,0xC1,0xA0,0x10,
+0x01,0xFD,0xCE,0x01,0x64,0x12,0xEA,0x00,0xD6,0xEC,0xFD,0xBD,0xC2,0xE0,0x10,0x01,
+0x13,0x6A,0x00,0xEB,0x97,0x08,0x3F,0x9B,0x20,0xC2,0xE0,0x10,0x01,0x57,0x9C,0x01,
+0xFE,0xF7,0x0B,0xA8,0xCB,0xA0,0x07,0xFF,0xE4,0x00,0x00,0x89,0x0B,0x57,0x01,0x13,
+0xD7,0xEF,0x5F,0x1A,0x06,0x47,0x18,0xC7,0x4F,0x18,0xFA,0x47,0x1A,0xC4,0x5F,0x58,
+0x06,0xC3,0x40,0xFF,0xE8,0x20,0x00,0x1D,0xFF,0x00,0x07,0xFF,0x0F,0x17,0x01,0x5F,
+0x58,0x06,0x23,0x80,0x48,0xCF,0x1A,0x03,0xFF,0x4F,0x5E,0x50,0x43,0x18,0xE8,0x8F,
+0x1A,0x0F,0x17,0x01,0x9F,0x21,0x1E,0xF7,0x30,0x5F,0x39,0x00,0xD7,0x3B,0xFE,0x06,
+0x0E,0xC1,0x12,0x0E,0xA1,0x16,0x0E,0x81,0x1A,0x0E,0x61,0x1E,0x0E,0x41,0x22,0x0E,
+0x21,0x26,0x0E,0x01,0x2A,0x0D,0xE1,0x2E,0x0D,0xC1,0x32,0x0D,0xA1,0x36,0x0D,0x81,
+0x3A,0x0D,0x61,0x3E,0x0D,0x41,0x42,0x0D,0x21,0x46,0x1C,0x21,0x48,0x85,0x29,0x1C,
+0x21,0xC8,0xC2,0xE0,0x10,0x01,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0E,0x61,0x0C,0x0E,
+0xC1,0x00,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,0x61,0x2C,0x0D,0xC1,0x20,0x0D,0xE1,
+0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,0x81,0x08,0x0E,0xA1,0x04,
+0xC1,0x80,0x10,0x01,0xF3,0x57,0x08,0x72,0xFD,0x8C,0x0B,0x90,0xC2,0xE0,0x10,0x01,
+0x1E,0xC1,0x38,0x89,0xA3,0x8A,0x61,0x18,0x0C,0x00,0xFE,0xF7,0x0B,0x98,0x9B,0x00,
+0x9B,0x3F,0xE4,0x00,0x00,0x2B,0x0C,0x17,0x00,0x1B,0x37,0xFE,0x1B,0x37,0xFF,0x9F,
+0x01,0x1E,0xF7,0x30,0x5F,0x18,0x00,0xD7,0x1A,0xFF,0x7E,0xC1,0xE0,0x10,0x01,0xFD,
+0xEF,0x0B,0x1A,0x12,0xEF,0x04,0x10,0x6F,0x01,0x40,0x63,0xBB,0xE4,0x00,0xB6,0x22,
+0x13,0x2F,0x04,0x4E,0xF9,0x10,0x9E,0xEA,0xC6,0xF7,0x07,0xF8,0xC3,0x60,0x10,0x01,
+0x40,0x21,0xBD,0x0A,0x0D,0x18,0x89,0x61,0x9B,0x00,0xCA,0xE0,0x20,0x00,0xFF,0x7B,
+0x09,0xBC,0xE4,0x00,0x00,0x3B,0x4F,0x58,0x10,0x9F,0x01,0x43,0x9A,0xDC,0x8F,0x4B,
+0x0E,0x3C,0x02,0x5E,0x37,0x15,0x0E,0x3A,0x00,0x4A,0xF1,0xB8,0x5E,0xF7,0x06,0x5F,
+0x58,0x00,0xD7,0x3A,0xFF,0x25,0x46,0x37,0xBF,0x99,0x40,0x4E,0x31,0xFA,0x89,0xCA,
+0x46,0x31,0xBC,0xC2,0x80,0x10,0x01,0x9A,0x42,0x8A,0xAC,0xE4,0x00,0x04,0x4B,0x0B,
+0x0D,0x18,0x21,0x41,0x32,0x0E,0xEB,0x02,0xD7,0x17,0x0E,0xEC,0x0F,0x0B,0x06,0xD6,
+0xF8,0x00,0x7C,0xD6,0xF8,0x0E,0x96,0x0F,0x0B,0x0A,0xD6,0xF8,0x0E,0x58,0x98,0x60,
+0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,0xFF,0xE5,0xE6,
+0xD0,0x60,0x0D,0xAA,0x12,0xEC,0x00,0x99,0x41,0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,
+0xEC,0x18,0x17,0x04,0x18,0x17,0x06,0x1A,0x57,0x05,0xE4,0x00,0x03,0x4F,0x21,0x45,
+0x56,0x0E,0xEB,0x06,0xD7,0x17,0x0C,0x8C,0x0F,0x0B,0x02,0xD7,0x17,0x0C,0x54,0x0F,
+0x0B,0x0A,0xD6,0xF8,0x00,0x7C,0xD6,0xF8,0x0B,0xFE,0x0F,0x0B,0x0E,0xD6,0xF8,0x0B,
+0xC0,0x98,0x61,0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,
+0xFF,0xE5,0x40,0xD0,0x60,0x0B,0x12,0x12,0xEC,0x00,0x9B,0x01,0x8E,0xEE,0x99,0x42,
+0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x18,0x17,0x04,0x1B,0x17,0x06,0x1A,0x57,0x05,0xE4,
+0x00,0x02,0xA5,0x25,0x45,0xC5,0x1F,0x37,0xFE,0xD7,0x2A,0x03,0x58,0x4E,0xEA,0x10,
+0x8E,0xEB,0x0E,0xF7,0x02,0xD7,0x17,0x09,0x84,0x1F,0x0A,0xFF,0x4F,0x18,0x10,0x8F,
+0x0B,0x0F,0x18,0x02,0xD6,0xF8,0x01,0x34,0xD6,0xF8,0x08,0xEE,0x1F,0x2A,0xFE,0x4F,
+0x39,0x10,0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x08,0x70,0x1F,0x4A,0x01,0x4F,0x5A,
+0x10,0x8F,0x4B,0x0F,0x5A,0x02,0xD7,0x59,0x07,0xF8,0x1F,0x2A,0x01,0x4F,0x39,0x10,
+0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x03,0x2C,0xD6,0xF9,0x07,0x66,0x1F,0x2A,0x02,
+0x4F,0x39,0x10,0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x06,0xE8,0xD7,0x19,0x06,0xC8,
+0xE4,0x00,0x00,0x95,0x4F,0x0A,0x10,0x1F,0x57,0xFE,0x0B,0x2D,0x18,0x8F,0x0B,0xD5,
+0x5A,0x03,0x6E,0x0F,0x18,0x02,0xD7,0x38,0x05,0xFC,0x1F,0x37,0xFF,0x4F,0x39,0x10,
+0x8F,0x2B,0x0F,0x39,0x02,0xD7,0x38,0x05,0x84,0x1F,0x37,0xFD,0x4F,0x39,0x10,0x8F,
+0x2B,0x0F,0x39,0x02,0xD7,0x19,0x00,0xB4,0xD7,0x19,0x04,0xEE,0x9E,0xFC,0x4E,0xF7,
+0x10,0x8E,0xEB,0x0E,0xF7,0x02,0xD7,0x17,0x04,0x78,0x88,0x6A,0x88,0x8B,0x88,0xB1,
+0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,0xFF,0xE3,0x6E,0x20,0x61,0xE4,0x12,
+0xEC,0x00,0x1F,0x0A,0xFF,0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x19,0x57,0x06,
+0x1B,0x17,0x04,0x9D,0x41,0x5D,0x4A,0x00,0xE4,0x00,0x00,0xAD,0x0E,0xF8,0x02,0xD7,
+0x37,0x02,0xB4,0x1F,0x0A,0xFF,0x4F,0x18,0x10,0x8F,0x0B,0x0F,0x18,0x02,0xD6,0xF8,
+0x00,0xBC,0xD6,0xF8,0x02,0x1E,0x1F,0x0A,0xFE,0x4F,0x18,0x10,0x8F,0x0B,0x0F,0x18,
+0x02,0xD6,0xF8,0x01,0xA0,0x88,0x6A,0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,
+0x09,0x0D,0x1E,0xE7,0xFF,0xE2,0xB8,0x20,0x60,0x78,0x12,0xEC,0x00,0x1F,0x0A,0xFE,
+0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x1B,0x17,0x04,0x19,0x57,0x06,0x19,0x57,
+0x05,0xE4,0x00,0x00,0x21,0x9D,0x41,0x5D,0x4A,0x00,0x12,0xEF,0x04,0xD6,0xEA,0xF0,
+0x95,0x12,0xEF,0x04,0xD6,0xEA,0x01,0x61,0x12,0xEC,0x00,0x8E,0xEE,0xCE,0xF7,0x00,
+0x30,0x43,0x17,0x64,0x13,0x18,0x05,0xD5,0x58,0x00,0x55,0x1D,0x58,0x01,0x5D,0x4A,
+0x00,0x8E,0xF5,0x9B,0x01,0x9D,0xC1,0x18,0x17,0x07,0x0F,0x17,0x08,0x5D,0xCE,0x00,
+0x12,0xEF,0x04,0xD6,0xEA,0x00,0x61,0xF2,0xF4,0x08,0x72,0xD6,0xEE,0xFD,0xFC,0x12,
+0xEC,0x00,0x8D,0xD7,0x19,0xCC,0x00,0x88,0x33,0x0E,0xC1,0x02,0x0E,0xA1,0x06,0x0E,
+0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,
+0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,
+0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,
+0xF8,0x77,0x04,0x64,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x0B,0x25,0xEE,0xF8,0x04,0x5D,
+0xC3,0x00,0x10,0x01,0xCF,0x37,0x00,0x05,0x4E,0xF7,0x10,0xEF,0x38,0x04,0x5B,0xC3,
+0x00,0x10,0x01,0xEE,0xF8,0x04,0x59,0x85,0x29,0x5C,0x63,0x06,0x20,0x84,0x5A,0x0B,
+0x05,0x00,0x0B,0x25,0x02,0x0B,0x45,0x04,0x0B,0x85,0x06,0x0B,0x65,0x08,0xE4,0x00,
+0x00,0x27,0x0B,0x05,0x0A,0x0B,0x25,0x0C,0x0B,0x45,0x0E,0x0B,0x85,0x10,0x0B,0x65,
+0x12,0xC2,0xE0,0x10,0x01,0x9B,0xA2,0xEA,0xF7,0x0B,0x25,0x43,0x9C,0xBB,0x43,0x9C,
+0xE8,0x43,0x80,0xE5,0xFF,0x9C,0x03,0xFF,0xD4,0x7C,0x00,0xC8,0x43,0x9B,0xBB,0x43,
+0xBC,0xE8,0xFF,0xBD,0x03,0xFF,0xD7,0xA3,0x01,0x08,0x5C,0x78,0x04,0xE4,0x00,0x00,
+0xE3,0x24,0x7C,0x58,0x43,0x03,0xC3,0x40,0x7C,0x1D,0x43,0x43,0xD3,0x40,0x78,0xD4,
+0x40,0x63,0xE0,0xE4,0x00,0x00,0xB1,0x9B,0x82,0x43,0x7B,0xBB,0x43,0x7B,0xE0,0xFF,
+0x9B,0x03,0xFF,0xD7,0x83,0x01,0x7C,0xC0,0x60,0xFF,0xEC,0x20,0x00,0xCD,0x43,0x60,
+0xDD,0xFE,0xFB,0xFC,0x01,0x8E,0xE3,0x43,0x37,0xCB,0xCA,0xE0,0x07,0xFF,0x40,0x77,
+0x1D,0xFF,0x7B,0x04,0x00,0x43,0x03,0xC3,0x40,0x79,0xC4,0x40,0x63,0xD8,0xE4,0x00,
+0x00,0x3B,0x24,0x7C,0x32,0x8C,0x77,0x40,0x63,0xD3,0xE4,0x00,0x00,0x1D,0xFF,0x17,
+0x07,0xFF,0x40,0x78,0x1D,0x40,0x63,0xCB,0x40,0x63,0xB8,0x5C,0x63,0x04,0x85,0x29,
+0x9C,0x38,0x0C,0x01,0x04,0xC3,0x00,0x10,0x01,0xC3,0x40,0x10,0x01,0xFF,0x18,0x0B,
+0x1A,0xFF,0x9A,0x04,0x1C,0x0B,0x38,0x0B,0x0B,0xBC,0x00,0x13,0x18,0x0C,0x5F,0x79,
+0x06,0x5E,0xE3,0x06,0x43,0x7D,0xDB,0x43,0x7B,0xC0,0xD6,0xFB,0x00,0x4C,0x9B,0x41,
+0x0F,0x41,0x04,0x0F,0x41,0x06,0x98,0x7F,0x23,0x40,0x5E,0x0B,0x5C,0x02,0x43,0x5A,
+0xCB,0x43,0x5A,0xC0,0xD7,0x57,0x00,0x58,0x9B,0x41,0x98,0x60,0x0F,0x41,0x04,0x0F,
+0x41,0x06,0x23,0x41,0x1E,0xC3,0x40,0x10,0x01,0xC3,0x60,0x10,0x01,0xF3,0xBA,0x0B,
+0x1E,0xFF,0x7B,0x04,0x20,0x9B,0x41,0xE4,0x00,0x00,0x57,0x0B,0xDB,0xFE,0x43,0xDE,
+0xCB,0x43,0xDE,0xC0,0xD7,0xD7,0x00,0xD4,0x0B,0xDB,0x00,0x43,0xDE,0xCB,0x43,0xDE,
+0xC0,0xD7,0xD7,0x00,0x68,0x9B,0x41,0x0F,0x41,0x04,0xE4,0x00,0x00,0x1F,0x9F,0x41,
+0x9F,0x62,0x5C,0x7A,0x02,0xD7,0x5D,0xFE,0xB0,0x0F,0x41,0x06,0x23,0x40,0x9E,0xC3,
+0x40,0x10,0x01,0xF3,0x5A,0x0B,0x1E,0x9F,0x41,0x4F,0x7A,0x08,0x8F,0x9B,0x0B,0x7C,
+0x00,0x43,0x3B,0xCB,0x43,0x19,0xC0,0xD7,0x17,0x00,0x64,0x9A,0xE1,0x5C,0x7A,0x02,
+0x0E,0xE1,0x04,0x9C,0x28,0x85,0x29,0xC3,0x20,0x10,0x01,0x5C,0x63,0x06,0x5C,0xC6,
+0x02,0x5C,0xE7,0x00,0xFF,0x39,0x09,0x0C,0x24,0xC0,0x98,0xC2,0xE0,0x10,0x01,0xF3,
+0x17,0x0B,0x1E,0xD4,0xD8,0x00,0xDC,0x43,0x18,0x3B,0x1E,0xE6,0xFF,0x8E,0xF8,0x4F,
+0x17,0x10,0x8F,0x19,0x0B,0x78,0x02,0x0B,0x58,0x00,0xE4,0x00,0x00,0x11,0x9B,0x40,
+0x8B,0x7A,0xC2,0xE0,0x10,0x01,0xF3,0x97,0x0B,0x1E,0xD7,0x86,0x01,0x08,0xD0,0xDF,
+0x04,0x28,0x42,0xFC,0x3B,0x8E,0xE6,0x4F,0x17,0x10,0x4E,0xF7,0x10,0x8F,0x19,0x8F,
+0x37,0x0B,0x18,0x02,0x0B,0xD9,0x00,0xE4,0x00,0x00,0x17,0x24,0xDD,0xA0,0x9B,0xC0,
+0x8B,0x1E,0xD4,0xDC,0x03,0x0C,0x4E,0xE6,0x08,0xC0,0xE0,0x10,0x01,0xFC,0xE7,0x04,
+0x1C,0x8E,0xE7,0x9C,0xC1,0x09,0x17,0x00,0x4C,0xC6,0x08,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x0B,0x1A,0x8C,0xE6,0x0B,0x97,0x0B,0x13,0x37,0x0C,0x0A,0xE7,0x00,0x40,0xD7,
+0xE3,0x42,0xF7,0x45,0x43,0xA8,0xE3,0x40,0xC6,0xC8,0x43,0xBD,0xC8,0x43,0x97,0xE3,
+0x43,0xA3,0xED,0x43,0x3C,0xC8,0x40,0x66,0x1D,0x43,0x18,0xEB,0x43,0x7B,0x1B,0x42,
+0xFE,0xEB,0x8F,0x1B,0x40,0x7A,0x1B,0x43,0x18,0xC8,0x8E,0xE3,0x42,0xF7,0xC8,0xE4,
+0x00,0x00,0x11,0x9A,0xE0,0x8B,0x17,0x0F,0x04,0x01,0x0E,0xE5,0x01,0x85,0x29,0x1C,
+0x21,0xD8,0x0D,0x41,0x20,0x0D,0x61,0x1C,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x5D,0x84,
+0x00,0x0D,0xC1,0x10,0x0D,0xE1,0x0C,0x0E,0x01,0x08,0x5D,0xA5,0x00,0x5D,0x63,0x04,
+0x0C,0xC1,0x04,0x0D,0x21,0x24,0x89,0xE8,0x0D,0xC1,0x2A,0xC1,0x40,0x10,0x01,0x9A,
+0x02,0xFD,0x4A,0x0B,0x1A,0x0C,0xE1,0x00,0x08,0x6A,0x0B,0x40,0x6C,0x1B,0x40,0x63,
+0x80,0x40,0x6B,0x1D,0xE7,0xFF,0xFC,0x38,0x0C,0x81,0x06,0x88,0xC3,0x5E,0xE3,0x02,
+0x0C,0xA1,0x02,0x26,0xFC,0x36,0x0C,0x04,0x01,0x0C,0x05,0x01,0xE4,0x00,0x00,0x2D,
+0x0A,0xEA,0x0B,0x42,0xEC,0xBB,0x88,0xED,0x40,0x77,0x80,0x40,0x6B,0x1D,0xE7,0xFF,
+0xFD,0x72,0x08,0x6A,0x0B,0x40,0x6C,0x1B,0x4C,0x63,0x0A,0x8C,0x6B,0xE7,0xFF,0xFB,
+0xC6,0x12,0xEA,0x04,0x88,0xC3,0x5F,0x03,0x02,0xD7,0x17,0x00,0x70,0x0C,0x0F,0x01,
+0x0C,0x0E,0x01,0xE4,0x00,0x00,0x69,0x08,0x6A,0x0B,0x41,0x8C,0x1B,0x88,0x8F,0x4C,
+0x6C,0x0A,0x88,0xAE,0x8C,0x6B,0x88,0xED,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,
+0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,
+0x1C,0x21,0x28,0xE7,0xFF,0xFC,0xC9,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,0x12,
+0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,0x1C,
+0x21,0x28,0x85,0x29,0x1C,0x21,0x90,0x0D,0x41,0x68,0x0D,0x81,0x60,0x0D,0xA1,0x5C,
+0x0D,0xE1,0x54,0x0E,0x01,0x50,0x0E,0x21,0x4C,0x0D,0x21,0x6C,0xC2,0x20,0x10,0x01,
+0x0D,0x61,0x64,0x0D,0xC1,0x58,0x0E,0x41,0x48,0x0E,0x61,0x44,0x0E,0x81,0x40,0x0E,
+0xA1,0x3C,0x0E,0xC1,0x38,0x89,0xA3,0x8A,0x04,0x89,0x85,0x5D,0xE6,0x00,0x99,0x40,
+0xFE,0x31,0x0B,0x90,0xE4,0x00,0x00,0xA1,0xCF,0x0A,0x00,0x30,0x8F,0x11,0x1E,0xE1,
+0x20,0x10,0xB8,0x07,0x0B,0x98,0x17,0x43,0x2D,0x2C,0x4D,0x05,0x08,0x13,0x59,0x00,
+0x1F,0x61,0x38,0x8D,0x1A,0x9F,0x41,0x4D,0x08,0x08,0x1B,0x59,0x00,0x8F,0x68,0x08,
+0x78,0x17,0x0F,0x9B,0xD9,0x1F,0x01,0x30,0x8F,0x08,0x88,0x8F,0x0F,0x01,0x00,0x1C,
+0xC1,0x18,0x1C,0xE1,0x28,0x8C,0xC8,0x8C,0xE8,0x9D,0x41,0x8D,0x17,0x5D,0x4A,0x00,
+0xE7,0xFF,0xFD,0x1E,0x12,0xF1,0x00,0xD6,0xEA,0xFD,0x8D,0xC2,0xE0,0x10,0x01,0x8B,
+0x10,0xF2,0x57,0x04,0x64,0x9B,0x41,0x8A,0xED,0xE4,0x00,0x00,0x23,0x13,0x37,0x00,
+0x27,0x24,0x19,0x0F,0x58,0x00,0x9E,0xE1,0x9F,0x04,0x43,0x37,0x6D,0x5F,0x39,0x00,
+0xD6,0x59,0xFF,0x6D,0x99,0x60,0xC2,0x60,0x10,0x01,0x89,0x4B,0xC2,0x80,0x10,0x01,
+0xE4,0x00,0x03,0x07,0x42,0xF0,0x5C,0x0E,0xF7,0x02,0x22,0xE0,0x48,0x1E,0xE1,0x10,
+0x8E,0xEB,0x0B,0x57,0x00,0x0B,0x77,0x02,0xE4,0x00,0x01,0x5D,0x42,0xED,0x54,0x12,
+0xF7,0x00,0x22,0xE1,0xE0,0x1E,0xE1,0x18,0x8E,0xEB,0x0B,0x17,0x00,0x1E,0xE1,0x28,
+0x8E,0xEB,0x0A,0xF7,0x00,0x8E,0xF8,0x1F,0x01,0x30,0x8F,0x0B,0x0B,0x18,0x00,0x8E,
+0xF8,0x1F,0x01,0x20,0x8F,0x0B,0x0B,0x18,0x00,0x8E,0xF8,0x9B,0x04,0x42,0xF7,0xC0,
+0x0E,0xEC,0x00,0xE4,0x00,0x02,0x55,0xCE,0xEE,0x00,0x30,0x8E,0xF1,0x41,0x0E,0xCC,
+0x08,0x77,0x17,0x4D,0x08,0x08,0x1E,0xE1,0x30,0x8E,0xE8,0x0E,0xE1,0x00,0x1E,0xE1,
+0x20,0x0F,0x01,0x0C,0x0F,0x21,0x08,0x88,0x8F,0x88,0xB5,0x1C,0xC1,0x18,0x1C,0xE1,
+0x28,0x8C,0xC8,0x8C,0xE8,0x8D,0x17,0xE7,0xFF,0xFB,0x90,0x9D,0xC1,0x0F,0x01,0x0E,
+0x5D,0xCE,0x00,0x0F,0x21,0x0A,0xE4,0x00,0x00,0x23,0x9A,0xC1,0x99,0xC0,0x42,0xD6,
+0x55,0x4F,0x2A,0x08,0x43,0x0D,0xB4,0x12,0xF8,0x00,0xD6,0xEE,0xFD,0x6D,0x4E,0xD6,
+0x10,0x43,0x10,0xB4,0x0F,0x18,0x02,0xD3,0x00,0x05,0x0A,0x1F,0x01,0x38,0x8E,0xD8,
+0x0B,0x56,0xD8,0x0B,0x76,0xDA,0x43,0x3A,0xDD,0x5F,0x39,0x06,0x4E,0xF9,0xFA,0xEB,
+0x93,0x04,0x5B,0x47,0x37,0xCE,0x43,0x39,0xBD,0x52,0xE0,0x64,0x5F,0x39,0x06,0xD7,
+0x3C,0x00,0xF4,0xEB,0x14,0x04,0x59,0x9A,0xE0,0xD7,0x19,0x00,0xA4,0x42,0xF9,0xC5,
+0x43,0x1C,0xC5,0xCE,0xF7,0x00,0x64,0x42,0xF7,0xC0,0x5E,0xF7,0x00,0x5F,0x7A,0x15,
+0x4B,0x81,0x01,0x4F,0x2A,0x08,0x4B,0x00,0x0A,0x8F,0x19,0x8F,0x3C,0x1F,0x81,0x38,
+0x1F,0x41,0x38,0x53,0x60,0xC8,0x4F,0x39,0x08,0x43,0x7B,0xBD,0x8F,0x3C,0x0B,0x99,
+0xE0,0x4F,0x18,0x08,0x8F,0x1A,0x0B,0xB8,0xE8,0x0B,0x58,0xF8,0x8F,0x5D,0x8F,0x5C,
+0x0B,0x99,0xF0,0x8F,0x5C,0x43,0x5B,0xD3,0x0B,0x79,0xE8,0x0B,0x39,0xF8,0x8F,0x79,
+0x0B,0x38,0xE0,0x8F,0x79,0x0B,0x38,0xF0,0x43,0x1B,0xCC,0x42,0xF7,0xC3,0xCB,0x00,
+0x03,0x20,0x8E,0xFA,0xE7,0xFF,0xFD,0xF3,0x22,0xE0,0x88,0x1F,0x01,0x38,0x4E,0xEA,
+0x10,0x8E,0xF8,0x0B,0x17,0xF0,0x0B,0x37,0xE0,0x8F,0x38,0x0B,0x17,0xF8,0x8F,0x38,
+0x0B,0x17,0xE8,0x42,0xF9,0xC4,0xE7,0xFF,0xFD,0xAB,0x0C,0x0C,0x00,0x9D,0x41,0x9D,
+0x84,0x9D,0x64,0x5E,0xAA,0x00,0xD6,0x55,0xF3,0xF5,0x0E,0xC1,0x3A,0x0E,0xA1,0x3E,
+0x0E,0x81,0x42,0x0E,0x61,0x46,0x0E,0x41,0x4A,0x0E,0x21,0x4E,0x0E,0x01,0x52,0x0D,
+0xE1,0x56,0x0D,0xC1,0x5A,0x0D,0xA1,0x5E,0x0D,0x81,0x62,0x0D,0x61,0x66,0x0D,0x41,
+0x6A,0x0D,0x21,0x6E,0x1C,0x21,0x70,0x85,0x29,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x0D,
+0x61,0x0C,0x0D,0x81,0x08,0x0D,0xA1,0x04,0x0D,0x21,0x14,0x89,0xA3,0xC2,0xE0,0x10,
+0x01,0x5C,0x64,0x06,0xEA,0xF7,0x08,0x3F,0x5D,0x85,0x00,0x5D,0x66,0x00,0x5D,0x47,
+0x00,0x56,0xF7,0x04,0x22,0xE0,0x34,0x88,0x8C,0x88,0xAB,0x88,0xCA,0xE7,0xFF,0xE0,
+0xEC,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x0B,0x1E,0x43,0x0A,0xC3,0x5F,0x18,0x00,0x9B,
+0x20,0x42,0xF8,0x64,0x8D,0x78,0xC3,0x40,0x10,0x01,0x5D,0x6B,0x00,0x5E,0xF7,0x00,
+0x8B,0x19,0xFF,0x5A,0x09,0x0C,0xE4,0x00,0x00,0x3B,0x4F,0x77,0x10,0x8F,0x7A,0x0B,
+0x7B,0x02,0x8F,0x1B,0x4F,0x77,0x10,0x9E,0xE1,0x8F,0x7A,0x5E,0xF7,0x00,0x0B,0x7B,
+0x00,0x8F,0x3B,0xD6,0xEB,0xFF,0x38,0x27,0x21,0x14,0x27,0x01,0x08,0xC2,0xE0,0x10,
+0x01,0xFE,0xF7,0x03,0x30,0x4F,0x39,0x40,0x9D,0x44,0x4D,0x4A,0x10,0x8D,0x57,0x0A,
+0xEA,0x06,0x43,0x19,0xC0,0x9B,0x4A,0xFF,0x18,0xFF,0x00,0x53,0x20,0x64,0x43,0x18,
+0xBB,0x0A,0xEA,0x04,0x43,0x18,0xD0,0x4E,0xF7,0x40,0x42,0xF7,0xC8,0x8E,0xF8,0x5E,
+0xE0,0x09,0x0E,0xED,0x00,0x48,0x61,0x01,0xE4,0x00,0x00,0x0D,0x98,0x60,0x0D,0xA1,
+0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,
+0x85,0x29,0xCA,0xE0,0x01,0x00,0xFC,0x21,0xFF,0x80,0x5C,0xE7,0x00,0x0D,0x41,0x78,
+0x0D,0x61,0x74,0x0D,0x81,0x70,0x0E,0x21,0x5C,0x0E,0x41,0x58,0x0E,0x61,0x54,0x0E,
+0x81,0x50,0x0E,0xA1,0x4C,0x0E,0xC1,0x48,0x0D,0x21,0x7C,0x0D,0xA1,0x6C,0x0D,0xC1,
+0x68,0x0D,0xE1,0x64,0x0E,0x01,0x60,0xCE,0x44,0x00,0x0A,0x42,0x52,0x1B,0x42,0x52,
+0xB8,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x1A,0x11,0xD7,0x04,0x41,0x87,0x73,0x5F,
+0x0C,0x00,0xCC,0x84,0x0A,0x00,0x8C,0xB8,0x8C,0xD8,0xC2,0xA0,0x10,0x01,0xC2,0x20,
+0x10,0x01,0xC1,0x60,0x10,0x01,0xC3,0x00,0x10,0x01,0xFD,0x6B,0x09,0x0C,0x42,0x64,
+0x18,0x5E,0x86,0x00,0x09,0xF7,0x0B,0x12,0x17,0x0C,0x5D,0x45,0x00,0xFE,0xB5,0x03,
+0x30,0xFE,0x31,0x04,0x1C,0x8A,0xCB,0xFF,0x18,0x09,0xBC,0xE4,0x00,0x01,0x61,0x0F,
+0x01,0x04,0x88,0x95,0x50,0xA0,0x3C,0x1C,0x61,0x08,0xE4,0x00,0x44,0xAC,0x41,0xAA,
+0x65,0x1E,0xED,0x01,0x4E,0xF7,0x08,0x8E,0xF1,0x98,0x82,0x08,0x77,0x00,0x1C,0xA1,
+0x08,0x40,0x63,0x7B,0x40,0x63,0x80,0xE7,0xFF,0xF1,0x44,0x0F,0x01,0x06,0x5C,0x63,
+0x04,0xD5,0x4C,0x00,0x5E,0x1E,0xEE,0xFF,0xD5,0xB7,0x01,0x92,0xCB,0x20,0x03,0xE8,
+0x43,0x43,0x9B,0x4E,0xEA,0x10,0x43,0x63,0x93,0x9E,0xE2,0x43,0x7B,0xC8,0x8E,0xEB,
+0x0B,0x97,0x01,0x43,0x7C,0xDD,0x0F,0x77,0x01,0x43,0x3A,0xC8,0x4E,0xEA,0x10,0x8E,
+0xEB,0x0B,0x57,0x01,0x43,0x3A,0xCD,0x0F,0x37,0x01,0x4E,0xEA,0x08,0x1F,0x37,0x01,
+0x4F,0x59,0x08,0x8F,0x4B,0x0B,0x7A,0x00,0x27,0x7C,0x1A,0x0C,0x1A,0x01,0x4F,0x57,
+0x08,0x8F,0x56,0x0B,0x7A,0x00,0x27,0x7C,0x1A,0x0C,0x1A,0x01,0x4E,0xF7,0x08,0x8E,
+0xEB,0x4F,0x4A,0x10,0x0B,0x77,0x00,0x8F,0x58,0x4F,0x39,0x08,0x9D,0x41,0x8F,0x2B,
+0x5D,0x4A,0x00,0x0A,0xF9,0x00,0x8E,0xFB,0x0E,0xFA,0x00,0xD5,0x54,0xFA,0xA0,0x0E,
+0xC1,0x4A,0x0E,0xA1,0x4E,0x0E,0x81,0x52,0x0E,0x61,0x56,0x0E,0x41,0x5A,0x0E,0x21,
+0x5E,0x0E,0x01,0x62,0x0D,0xE1,0x66,0x0D,0xC1,0x6A,0x0D,0xA1,0x6E,0x0D,0x81,0x72,
+0x0D,0x61,0x76,0x0D,0x41,0x7A,0x0D,0x21,0x7E,0xFC,0x21,0x00,0x80,0x85,0x29,0x1C,
+0x21,0xB8,0x98,0x60,0x0D,0x21,0x44,0x0D,0x41,0x40,0x0D,0x61,0x3C,0x0D,0x81,0x38,
+0x0D,0xA1,0x34,0x0D,0xC1,0x30,0x0D,0xE1,0x2C,0x0E,0x01,0x28,0x0E,0x21,0x24,0x0E,
+0x41,0x20,0x0E,0x61,0x1C,0x0E,0x81,0x18,0x0C,0x01,0x08,0x0C,0x01,0x0C,0x18,0x01,
+0x02,0x18,0x01,0x03,0x0C,0x01,0x10,0x0C,0x01,0x14,0xE7,0xFF,0xD3,0x4C,0x1C,0x61,
+0x02,0x1C,0x81,0x10,0x1C,0xA1,0x08,0x98,0xC4,0xE7,0xFF,0xF5,0xD6,0xC2,0xE0,0x10,
+0x01,0xF3,0x97,0x04,0x64,0xC2,0xE0,0x10,0x01,0xEB,0xB7,0x08,0x1D,0xC2,0xE0,0x10,
+0x01,0xEF,0x77,0x04,0x56,0xC2,0xE0,0x10,0x01,0x57,0xBD,0x20,0xEF,0xD7,0x04,0x62,
+0xC3,0x20,0x10,0x01,0x4F,0xBD,0x29,0x1E,0xE1,0x08,0xFF,0x39,0x03,0x50,0x9B,0x40,
+0xE4,0x00,0x00,0x63,0x0F,0x17,0x02,0x09,0x19,0xFC,0x0F,0x19,0x00,0x43,0x18,0x45,
+0x5F,0x1F,0xF9,0x4B,0x18,0x00,0x0F,0x17,0x00,0x23,0xA0,0x3C,0x23,0x60,0x30,0x43,
+0x18,0xF3,0x43,0x18,0xD8,0x0F,0x17,0x00,0x9F,0x41,0x9E,0xE4,0x5F,0x5A,0x00,0x9F,
+0x28,0xD7,0x5C,0xFE,0x9E,0x98,0x61,0x99,0x60,0xC2,0x20,0x10,0x01,0xC2,0x80,0x10,
+0x01,0xE7,0xFF,0xD2,0x3E,0x89,0x4B,0xFD,0xB1,0x0B,0x90,0x9A,0x41,0xC2,0x60,0x10,
+0x01,0xFE,0x94,0x0C,0x5C,0xE4,0x00,0x00,0xF9,0xCE,0x0A,0x00,0x30,0x42,0xF0,0x6C,
+0x1C,0x61,0x04,0x11,0xF7,0x04,0x11,0xD7,0x05,0x11,0x97,0x07,0x08,0x97,0x17,0x88,
+0xAF,0x88,0xCE,0x88,0xEC,0xE7,0xFF,0xF9,0x88,0x20,0x60,0xF8,0x98,0x60,0xE7,0xFF,
+0xD1,0xC4,0x1F,0x01,0x18,0x4E,0xEC,0x10,0x8E,0xF8,0x88,0xAF,0x0C,0x97,0xF2,0x88,
+0xCE,0x88,0xEC,0x0C,0x61,0x06,0xE7,0xFF,0xFA,0xF8,0x98,0x61,0xE7,0xFF,0xD1,0x88,
+0x40,0x6D,0x84,0x88,0xAF,0x88,0x83,0x88,0xCE,0x1C,0x63,0x18,0x9C,0x8C,0x88,0xEC,
+0xE7,0xFF,0xD4,0x42,0x20,0x60,0x32,0x4E,0xF2,0x54,0x45,0x6B,0xBD,0x5D,0x6B,0x00,
+0x88,0x74,0xF0,0x93,0x0B,0x1A,0x98,0xA1,0x9D,0x41,0xE4,0x00,0xA0,0x3C,0x5D,0x4A,
+0x00,0xF2,0xF1,0x0B,0x90,0xD6,0xEA,0xFC,0x25,0x88,0x6B,0xE7,0xFF,0xD7,0xB0,0x0D,
+0x21,0x46,0x0E,0x81,0x1A,0x0E,0x61,0x1E,0x0E,0x41,0x22,0x0E,0x21,0x26,0x0E,0x01,
+0x2A,0x0D,0xE1,0x2E,0x0D,0xC1,0x32,0x0D,0xA1,0x36,0x0D,0x81,0x3A,0x0D,0x61,0x3E,
+0x0D,0x41,0x42,0x1C,0x21,0x48,0x85,0x29,0xFC,0x21,0xFF,0x00,0x98,0xA0,0xED,0x41,
+0x00,0xF8,0xED,0x61,0x00,0xF4,0xED,0xC1,0x00,0xE8,0xED,0xE1,0x00,0xE4,0xEE,0x01,
+0x00,0xE0,0xEE,0x21,0x00,0xDC,0xEE,0x41,0x00,0xD8,0xEE,0x61,0x00,0xD4,0xED,0x21,
+0x00,0xFC,0xED,0x81,0x00,0xF0,0xED,0xA1,0x00,0xEC,0xEE,0x81,0x00,0xD0,0xEE,0xA1,
+0x00,0xCC,0xEE,0xC1,0x00,0xC8,0xC2,0x20,0x10,0x01,0xC2,0x60,0x10,0x01,0xFE,0x31,
+0x0C,0x5C,0xFD,0x73,0x0B,0x1A,0x88,0x71,0x10,0x8B,0x00,0xE4,0x00,0x9F,0x1A,0xC2,
+0xE0,0x10,0x01,0xEA,0xF7,0x08,0x25,0xC6,0xF7,0x02,0x00,0xC2,0x40,0x10,0x01,0x5E,
+0xE0,0x01,0xC1,0xE0,0x10,0x01,0x4A,0xE1,0x13,0xC1,0x40,0x10,0x01,0xC1,0xC0,0x10,
+0x01,0x0E,0xE1,0x0C,0x9A,0x00,0xFE,0x52,0x03,0x30,0xFD,0xEF,0x09,0x0C,0xFD,0x4A,
+0x09,0xBC,0xFD,0xCE,0x0B,0x90,0x98,0x60,0x0C,0x01,0x58,0x0C,0x01,0x5C,0x18,0x01,
+0x56,0x18,0x01,0x57,0x0C,0x01,0x60,0x0C,0x01,0x64,0xE7,0xFF,0xCF,0x6C,0x1C,0x61,
+0x56,0x1C,0x81,0x60,0x1C,0xA1,0x58,0x98,0xC3,0xE7,0xFF,0xF1,0xF6,0xC2,0xE0,0x10,
+0x01,0xEB,0x97,0x08,0x1D,0xC2,0xE0,0x10,0x01,0xC3,0x20,0x10,0x01,0xEF,0x77,0x04,
+0x56,0xC2,0xE0,0x10,0x01,0xF3,0x59,0x04,0x64,0x57,0x9C,0x20,0xEF,0xB7,0x04,0x62,
+0x4F,0x9C,0x29,0x1E,0xE1,0x58,0x9B,0x20,0xE4,0x00,0x00,0x5D,0x0F,0xD7,0x02,0x4F,
+0x19,0x18,0x8F,0x12,0x0B,0x18,0x1C,0x43,0x1E,0xC5,0x5F,0x1F,0xF9,0x4B,0x18,0x00,
+0x0F,0x17,0x00,0x23,0x80,0x3C,0x23,0x60,0x30,0x43,0x18,0xEB,0x43,0x18,0xD8,0x0F,
+0x17,0x00,0x9F,0x21,0x9E,0xE4,0x5F,0x19,0x00,0xD7,0x58,0xFE,0x9D,0x13,0x0B,0x04,
+0x09,0xAB,0x0B,0x12,0x8B,0x0C,0x9A,0xA0,0xE4,0x00,0x01,0xA1,0xFE,0xE1,0x00,0xC8,
+0x8E,0xF5,0x12,0xF7,0x8E,0x22,0xE0,0x72,0xFF,0x61,0x00,0xC8,0x9A,0xE1,0x42,0xF7,
+0xAD,0x4E,0xF7,0x10,0x8E,0xFB,0x0F,0x37,0x92,0x4E,0xF5,0x10,0x8E,0xFB,0x0F,0x37,
+0x90,0x41,0x95,0xC3,0x1F,0xB5,0x01,0x5E,0xCC,0x00,0x43,0xBD,0xC3,0xE4,0x00,0x01,
+0x25,0x0F,0x01,0x00,0x0F,0x41,0x04,0x0F,0xA1,0x08,0x88,0x92,0x50,0xA0,0x3C,0x1C,
+0x61,0x10,0xE4,0x00,0x3D,0x1C,0x42,0xF6,0x65,0xC3,0x80,0x10,0x01,0x9E,0xE1,0xFF,
+0x9C,0x04,0x1C,0x4E,0xF7,0x08,0x8E,0xFC,0x98,0x81,0x08,0x77,0x00,0x1C,0xA1,0x10,
+0x40,0x63,0x6B,0x40,0x63,0xA0,0xE7,0xFF,0xE9,0xA6,0x53,0x60,0x64,0x4E,0xF6,0x10,
+0x5C,0x63,0x04,0x4F,0x35,0x10,0xFD,0x21,0x00,0xC8,0x9E,0xE2,0x8F,0x29,0x8E,0xEF,
+0x0F,0x39,0x92,0x43,0x23,0xCB,0x43,0x39,0xD8,0x0B,0x77,0x01,0x5F,0x39,0x04,0x43,
+0x7B,0xCD,0x0F,0x77,0x01,0x0F,0xA1,0x0A,0x4F,0x76,0x10,0x0F,0x41,0x06,0x43,0x9B,
+0x7C,0x9E,0xC1,0x0B,0xDC,0x01,0x8F,0x6A,0x43,0x3E,0xCD,0x5E,0xD6,0x00,0x5F,0x39,
+0x06,0x0F,0x01,0x02,0x0F,0x3C,0x01,0x0A,0xF7,0x00,0x8F,0x37,0x0F,0x3B,0x00,0xD7,
+0xB6,0xFB,0x94,0x9E,0xA1,0x5E,0xB5,0x00,0xD7,0x55,0xF9,0xA5,0x98,0x61,0xE7,0xFF,
+0xCC,0xC4,0x13,0x6B,0x04,0x13,0x4B,0x01,0xC3,0x00,0x10,0x01,0x43,0x5A,0xDB,0x9A,
+0xE0,0xFF,0x18,0x0C,0xD0,0xE4,0x00,0x00,0x4F,0x4F,0x37,0x10,0x43,0x99,0xC4,0x8F,
+0x2F,0x0B,0x39,0x01,0x0F,0x3C,0x01,0x4F,0x37,0x10,0x9E,0xE1,0x9F,0x22,0x5E,0xF7,
+0x00,0x43,0x99,0xC4,0x8F,0x2F,0x0B,0x39,0x01,0x0F,0x3C,0x01,0xD7,0x57,0xFE,0xEC,
+0xC3,0x20,0x10,0x01,0x12,0x8E,0x00,0xFF,0x39,0x0B,0x96,0x9B,0xA0,0x8B,0x19,0x8B,
+0xCA,0xE4,0x00,0x01,0x3D,0x1F,0x98,0x02,0x12,0xF8,0xFE,0x12,0xB8,0xFF,0x11,0x98,
+0x01,0x13,0x58,0x00,0x0D,0x1C,0x02,0x21,0x04,0x5E,0x43,0x8C,0xDB,0x8F,0x9A,0x4F,
+0x9C,0x10,0x8F,0x8A,0x0F,0x9C,0x02,0x41,0x8C,0xDB,0xE4,0x00,0x00,0xCD,0x4D,0xBA,
+0x10,0x43,0x9A,0xDC,0x8D,0xAA,0x4F,0x9C,0x10,0x0D,0xAD,0x02,0x8F,0x8A,0x0F,0x9C,
+0x02,0x8F,0x8D,0xE7,0xFF,0xFF,0xC9,0x21,0x04,0x5A,0x41,0xB7,0x64,0x4D,0xAD,0x10,
+0x8D,0xAA,0x0D,0xAD,0x02,0xD5,0xBC,0x01,0x94,0xE4,0x00,0x00,0x65,0x4D,0xB7,0x10,
+0x42,0xD7,0xDC,0x8D,0xBE,0x4E,0xD6,0x10,0x0D,0xAD,0x02,0x8E,0xDE,0x0E,0xD6,0x02,
+0x8E,0xCD,0xD6,0xDC,0x00,0xC8,0x43,0x57,0x64,0x4F,0x5A,0x10,0x8F,0x5E,0x0F,0x9A,
+0x02,0x8F,0x8D,0xE4,0x00,0x00,0x0D,0x8B,0x8D,0x8B,0x57,0x9E,0xE1,0x5E,0xF7,0x00,
+0xD6,0xF5,0xFD,0xB8,0x1B,0x58,0x00,0x9F,0xA1,0x1F,0x18,0x30,0x5F,0xBD,0x00,0xD7,
+0xB4,0xFB,0x36,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x0B,0x1E,0xC2,0xE0,0x10,0x01,0x1F,
+0x98,0xFF,0xF3,0x57,0x04,0x50,0x1F,0xB8,0xFD,0xC2,0xE0,0x10,0x01,0x1E,0xB8,0xFC,
+0x11,0x8E,0x00,0x5D,0x1C,0x00,0x1D,0xB8,0xFE,0xFE,0xF7,0x0B,0x95,0x9B,0x60,0x8A,
+0x9C,0x5F,0xBD,0x00,0x5E,0xB5,0x00,0x9A,0xC2,0x1C,0x78,0xFD,0xE4,0x00,0x00,0xEB,
+0x13,0x17,0x01,0xD7,0x1C,0x00,0x76,0x19,0x17,0x00,0x18,0x77,0xFF,0xE4,0x00,0x00,
+0xB9,0x23,0x00,0x36,0x1A,0xD7,0x00,0x18,0x17,0xFF,0xE4,0x00,0x00,0x9F,0x23,0x04,
+0x56,0x5F,0x40,0x29,0x9F,0x1F,0x4B,0xC2,0x1B,0x1B,0x17,0xFF,0x1B,0xD7,0x00,0xE4,
+0x00,0x00,0x75,0xD7,0x0D,0x00,0x8E,0x5F,0x40,0x29,0x1A,0x97,0x00,0x4B,0xDD,0xA8,
+0xE4,0x00,0x00,0x4D,0x1F,0xD8,0x01,0x5F,0xDE,0x00,0x23,0x44,0x22,0x9F,0x02,0x5F,
+0xD8,0x00,0x1B,0xD7,0x00,0x13,0xD7,0x01,0x23,0x44,0x26,0x9F,0xDE,0xE4,0x00,0x00,
+0x0D,0x9F,0xDF,0x5F,0xDE,0x00,0x1B,0xD7,0xFF,0x9F,0x61,0x1E,0xF7,0x30,0x5F,0x7B,
+0x00,0xD7,0x6C,0xFC,0x7E,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x25,0x56,0xF7,0x08,
+0xD2,0xE0,0x08,0x6A,0xC2,0xE0,0x10,0x01,0x9B,0x00,0xF3,0x57,0x0B,0x1E,0x9B,0xA0,
+0xC2,0xE0,0x10,0x01,0x1E,0xDA,0xFE,0xEA,0x97,0x01,0x7E,0x8B,0x78,0x8B,0x9D,0x98,
+0x60,0x9A,0xA1,0xE4,0x00,0x01,0xBF,0x12,0xF9,0x00,0xD2,0xE1,0x06,0x99,0xD6,0xD7,
+0x06,0x78,0x1D,0x17,0xFF,0x1D,0xB7,0x01,0x1D,0x39,0x02,0x5D,0x08,0x00,0x5D,0xAD,
+0x00,0x0F,0xC9,0x02,0x23,0xC4,0xDE,0x13,0x79,0x01,0x43,0x7A,0xDB,0x5F,0x7B,0x00,
+0x8D,0xBB,0x8D,0x1B,0x8E,0xFB,0x4D,0xAD,0x10,0x4D,0x08,0x10,0x8D,0xAA,0x8D,0x0A,
+0x0F,0xAD,0x02,0x0F,0x88,0x02,0x4E,0xF7,0x10,0x5F,0xBC,0x15,0x8E,0xEA,0x4B,0x9D,
+0xE0,0x0F,0x77,0x02,0x5F,0x9C,0x06,0xE4,0x00,0x00,0xCD,0x23,0xC9,0xA2,0x13,0x79,
+0x01,0x43,0xBB,0xD3,0x5F,0xBD,0x00,0x43,0x8D,0xEC,0x4F,0x9C,0x10,0x8F,0x8A,0x43,
+0x75,0xDD,0x0F,0xDC,0x02,0x43,0x7A,0xDB,0x5F,0x7B,0x00,0x8D,0xBB,0x4D,0xAD,0x10,
+0x8D,0xAA,0x0F,0x8D,0x02,0x8F,0xDC,0x43,0x88,0xEC,0x4F,0x9C,0x10,0x8F,0x8A,0x8D,
+0x1B,0x0D,0xBC,0x02,0x8F,0xB7,0x4D,0x08,0x10,0x8E,0xFB,0x8D,0x0A,0x4F,0xBD,0x10,
+0x0F,0x88,0x02,0x8F,0xAA,0x8F,0x8D,0x4E,0xF7,0x10,0x5F,0xDC,0x15,0x8E,0xEA,0x4B,
+0x9E,0xE0,0x0F,0x7D,0x02,0x0E,0xF7,0x02,0x5F,0x9C,0x06,0x8F,0x77,0x8B,0xB4,0xE4,
+0x00,0x00,0x0F,0x23,0xC0,0x68,0xC3,0x60,0x7C,0xEC,0x20,0x00,0x4D,0x42,0xFB,0xE5,
+0xD7,0xB7,0x00,0x68,0x4E,0xF5,0xC4,0x44,0x63,0xBD,0x5C,0x63,0x00,0x9F,0x01,0x1F,
+0x39,0x30,0x5E,0xF8,0x00,0xD5,0x97,0xF9,0x15,0xE7,0xFF,0xCD,0xF4,0x1E,0xC1,0x68,
+0x10,0x8B,0x00,0x88,0x76,0x98,0xA0,0x99,0xA0,0xE4,0x00,0x96,0x3E,0x89,0x8D,0xC2,
+0x80,0x10,0x01,0xE4,0x00,0x01,0x3F,0xCC,0x6C,0x00,0x30,0xEB,0x74,0x08,0x3F,0x42,
+0xA3,0x74,0x57,0x7B,0x02,0x13,0x55,0x04,0x13,0x35,0x05,0x13,0x15,0x07,0x23,0x61,
+0x54,0x88,0x9A,0x88,0xB9,0x88,0xD8,0x0F,0x01,0x00,0x0F,0x21,0x08,0x0F,0x41,0x04,
+0x1C,0x61,0x52,0x98,0xE1,0xE7,0xFF,0xD2,0xE4,0x0F,0x01,0x02,0x0F,0x21,0x0A,0x0F,
+0x41,0x06,0x20,0x61,0x14,0x1C,0x61,0x54,0x88,0x9A,0x88,0xB9,0x88,0xD8,0x98,0xE1,
+0xE7,0xFF,0xD4,0x54,0x20,0x60,0xCC,0x0B,0x21,0x52,0x0B,0x01,0x54,0xCF,0x39,0x00,
+0x07,0xCF,0x18,0x00,0x03,0x9A,0xEA,0x8F,0x19,0x43,0x18,0xB8,0x0F,0x15,0x17,0xE4,
+0x00,0x00,0x47,0x8C,0x6E,0x88,0x9A,0x1C,0x63,0x16,0x88,0xB9,0x88,0xD8,0x98,0xE1,
+0xE7,0xFF,0xD2,0x4E,0x20,0x60,0x3A,0x9A,0xE1,0x4E,0xF7,0x64,0x45,0xAD,0xBD,0x5D,
+0xAD,0x00,0x88,0x76,0x10,0x8B,0x00,0x98,0xA1,0x9D,0x81,0xE4,0x00,0x94,0xFA,0x5D,
+0x8C,0x00,0x12,0xEE,0x00,0xD6,0xEC,0xFB,0x15,0x88,0x6D,0xE7,0xFF,0xCC,0x70,0x9E,
+0x01,0x0F,0x21,0x0E,0x5E,0x10,0x00,0xD7,0x30,0xD8,0x7D,0x88,0x71,0x10,0x8B,0x00,
+0x98,0xA1,0xE4,0x00,0x94,0xAC,0xED,0x21,0x00,0xFE,0xEE,0xC1,0x00,0xCA,0xEE,0xA1,
+0x00,0xCE,0xEE,0x81,0x00,0xD2,0xEE,0x61,0x00,0xD6,0xEE,0x41,0x00,0xDA,0xEE,0x21,
+0x00,0xDE,0xEE,0x01,0x00,0xE2,0xED,0xE1,0x00,0xE6,0xED,0xC1,0x00,0xEA,0xED,0xA1,
+0x00,0xEE,0xED,0x81,0x00,0xF2,0xED,0x61,0x00,0xF6,0xED,0x41,0x00,0xFA,0xFC,0x21,
+0x01,0x00,0x85,0x29,0x20,0x60,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x34,0x85,
+0x29,0x20,0x60,0x4E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x00,0xFC,0xC2,0xE0,0x10,0x01,
+0xEC,0xB7,0x01,0x30,0x85,0x29,0x20,0x60,0x5E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,
+0x8C,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x04,0x90,0xE4,0x00,0x00,0x5D,0x20,0x64,0x5E,
+0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0xBC,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x04,0xB4,
+0xE4,0x00,0x00,0x2F,0x20,0x68,0x4E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0xAC,0xC2,
+0xE0,0x10,0x01,0xEC,0xB7,0x04,0x88,0x85,0x29,0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,
+0xEC,0x97,0x04,0xA8,0x85,0x29,0x5C,0x84,0x04,0x20,0x60,0x3E,0xC2,0xE0,0x10,0x01,
+0xEC,0x97,0x01,0x3B,0xE4,0x00,0x00,0x3D,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEC,
+0x97,0x01,0x1D,0xE4,0x00,0x00,0x1F,0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,
+0x01,0x41,0x85,0x29,0x5C,0x84,0x04,0x20,0x60,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,
+0x01,0x01,0xE4,0x00,0x00,0x3D,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,
+0x39,0xE4,0x00,0x00,0x1F,0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x19,
+0x85,0x29,0x5C,0x84,0x04,0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x1B,
+0x85,0x29,0x1C,0x21,0xC8,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,0x61,0x2C,0x0D,0x81,
+0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,0xE1,0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,
+0x0E,0x41,0x10,0x0E,0x61,0x0C,0x0E,0x81,0x08,0x0E,0xA1,0x04,0x0E,0xC1,0x00,0x20,
+0x65,0x70,0x20,0x60,0x4C,0xD0,0x62,0x04,0x42,0x99,0xC0,0x89,0xEE,0xD0,0x63,0x06,
+0x66,0xE4,0x00,0x01,0x71,0xC2,0xE0,0x10,0x01,0xEE,0xD7,0x00,0xFE,0xC2,0xE0,0x10,
+0x01,0xEE,0xB7,0x01,0x32,0xC2,0xE0,0x10,0x01,0xEE,0x97,0x04,0x8E,0xC2,0xE0,0x10,
+0x01,0xEE,0x77,0x04,0x92,0xC2,0xE0,0x10,0x01,0xE9,0xF7,0x01,0x3B,0xC2,0xE0,0x10,
+0x01,0x9A,0x00,0xE9,0xD7,0x01,0x01,0x99,0xA0,0xC2,0xE0,0x10,0x01,0x9A,0x21,0xED,
+0x77,0x01,0x36,0x9A,0x45,0x89,0x90,0xE4,0x00,0x00,0xD9,0xC2,0xE0,0x10,0x01,0xEE,
+0x97,0x04,0xBE,0xC2,0xE0,0x10,0x01,0xEE,0x77,0x04,0xB6,0xC2,0xE0,0x10,0x01,0x99,
+0xA0,0xE9,0xF7,0x01,0x1D,0x9A,0x00,0xC2,0xE0,0x10,0x01,0x8A,0x2D,0xE9,0xD7,0x01,
+0x39,0x9A,0x40,0x99,0x61,0x89,0x90,0x9A,0xA0,0xE4,0x00,0x00,0x71,0xC2,0xE0,0x10,
+0x01,0xEE,0x97,0x04,0xAE,0xC2,0xE0,0x10,0x01,0xEE,0x17,0x04,0xAA,0xC2,0xE0,0x10,
+0x01,0xE9,0xF7,0x01,0x41,0xC2,0xE0,0x10,0x01,0x99,0x81,0xE9,0xD7,0x01,0x19,0x9A,
+0x21,0xC2,0xE0,0x10,0x01,0x9A,0x40,0xE9,0xB7,0x01,0x1B,0x99,0x61,0x9A,0x60,0x8A,
+0xAC,0x9A,0xC1,0x99,0x41,0xE4,0x00,0x00,0x55,0xC2,0xE0,0x10,0x01,0xE9,0xF7,0x01,
+0x3B,0xC2,0xE0,0x10,0x01,0xE9,0xD7,0x01,0x01,0x99,0xA0,0x9A,0x40,0x9A,0x00,0x9A,
+0x80,0x9A,0xA0,0x8A,0x2D,0x89,0x72,0x8A,0x70,0x89,0x94,0x8A,0xD5,0x99,0x40,0x88,
+0x6A,0xE4,0x00,0xDF,0xF6,0x88,0x6A,0xE4,0x00,0xE0,0x78,0x88,0x76,0xE4,0x00,0xF4,
+0x26,0x88,0x75,0xE4,0x00,0xF4,0x80,0x88,0x74,0xE4,0x00,0xE1,0xD8,0x88,0x73,0xE4,
+0x00,0xE2,0x24,0x88,0x72,0xE4,0x00,0xE1,0x26,0x88,0x71,0xE4,0x00,0xE1,0x52,0x88,
+0x6A,0xE4,0x00,0xF5,0xA2,0x88,0x70,0xE4,0x00,0xF5,0xFC,0x98,0x60,0xE4,0x00,0xF6,
+0x4A,0x98,0x60,0xE4,0x00,0xF6,0x98,0x98,0x60,0xE4,0x00,0xF6,0xE6,0x98,0x60,0xE4,
+0x00,0xF7,0x34,0x88,0x6F,0xE4,0x00,0xE2,0x1E,0x88,0x6E,0xE4,0x00,0xE2,0x4C,0x88,
+0x6D,0xE4,0x00,0xE2,0x80,0x88,0x6C,0xE4,0x00,0xE2,0x9A,0x88,0x6B,0x0E,0xC1,0x02,
+0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,
+0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,
+0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0xE4,0x00,0xDF,0xE3,0xC2,0xE0,
+0x10,0x01,0xF0,0x77,0x04,0xA4,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x04,0xA4,
+0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x04,0xA4,0x9F,0x01,0xFB,0x17,0x04,0xA4,
+0x85,0x29,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x04,0xB8,0x85,0x29,0xC2,0xE0,0x10,0x01,
+0xF8,0x77,0x04,0xB8,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x04,0xB8,0x9F,0x01,
+0xFB,0x17,0x04,0xB8,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x01,0x14,0x85,0x29,
+0xC3,0x40,0x10,0x01,0xFF,0x5A,0x01,0x04,0x0C,0x1A,0x00,0x9A,0xE1,0xC3,0x20,0x10,
+0x01,0xFF,0x39,0x01,0x20,0x0E,0xF9,0x00,0xC3,0x00,0x10,0x01,0xFF,0x18,0x04,0x94,
+0x0C,0x18,0x00,0x0C,0x1A,0x04,0x0E,0xF9,0x04,0x0C,0x18,0x04,0x0C,0x1A,0x08,0x0E,
+0xF9,0x08,0x0C,0x18,0x08,0x0C,0x1A,0x0C,0x0E,0xF9,0x0C,0x0C,0x18,0x0C,0xC3,0x00,
+0x10,0x01,0xEE,0xF8,0x01,0x3C,0x85,0x29,0x9C,0x38,0x0D,0x41,0x04,0xC3,0x00,0x10,
+0x01,0xC2,0xE0,0x10,0x01,0x5C,0xA5,0x00,0x5C,0xC6,0x00,0xF3,0x38,0x04,0xB9,0xFE,
+0xF7,0x01,0x3C,0xD7,0x25,0x00,0x6A,0xF8,0xB8,0x04,0xB9,0x9B,0x01,0x0F,0x17,0x00,
+0xC3,0x80,0x10,0x01,0xC3,0x00,0x10,0x01,0x0F,0x37,0x02,0xFF,0x9C,0x01,0x20,0xFF,
+0x18,0x01,0x04,0x23,0x24,0x9A,0x0B,0xA3,0x00,0x4F,0x46,0x18,0x43,0x78,0xD4,0x0F,
+0xBB,0x00,0x0B,0xA4,0x00,0x0F,0xBB,0x04,0x8F,0x5C,0x0F,0x3A,0x00,0x0F,0x3A,0x04,
+0x40,0xA5,0x35,0x20,0xA4,0x1A,0x0C,0x17,0x00,0x4E,0xE6,0x18,0x8E,0xF8,0x0C,0xF7,
+0x02,0x08,0xA3,0x00,0x0D,0x17,0x02,0x0F,0xB7,0x06,0x0F,0x37,0x06,0x42,0xE7,0x2D,
+0x4C,0xF7,0xFA,0x46,0xE7,0xBE,0x0B,0x44,0x00,0x40,0xF7,0x3D,0x43,0x39,0xD5,0x4E,
+0xF9,0xFA,0x47,0x37,0xCE,0x42,0xF9,0xBD,0x41,0x08,0x2D,0x43,0xBD,0xD5,0x4F,0xC8,
+0xFA,0x4F,0x7D,0xFA,0x45,0x1E,0x46,0x47,0xBB,0xEE,0x43,0xC8,0xF5,0x43,0x7D,0xDD,
+0x43,0xC7,0xF3,0x43,0x7B,0xBB,0x9B,0x21,0x8F,0x7E,0x9A,0xE3,0xE4,0x00,0x00,0x11,
+0x8F,0x37,0x9E,0xE2,0xD7,0x3B,0xFF,0xE1,0xC3,0x20,0x10,0x01,0x4E,0xF7,0x09,0x53,
+0x40,0x1E,0x9E,0xFF,0x5E,0xF7,0x06,0xEE,0xF9,0x04,0xC0,0xC3,0x20,0x10,0x01,0x42,
+0xF7,0xD1,0xEF,0x39,0x01,0x16,0x42,0xF7,0xBB,0x43,0x39,0xBD,0xC2,0xE0,0x10,0x01,
+0x5F,0x23,0x11,0x20,0x00,0x1B,0x53,0x20,0x19,0xEF,0x37,0x04,0xB0,0xC3,0xA0,0x10,
+0x01,0xEC,0xB7,0x04,0xB2,0x4C,0xC6,0x08,0x9A,0xE0,0xFF,0xBD,0x04,0x94,0xCB,0x40,
+0x10,0x00,0x43,0x26,0xBC,0x4F,0x39,0x10,0x43,0x7C,0xCC,0xC9,0x40,0xA0,0x00,0x0D,
+0x1B,0x02,0x0F,0xDB,0x02,0x43,0x68,0x53,0xCF,0xDE,0x00,0x0A,0x8F,0xC5,0x43,0xDB,
+0xF0,0x43,0x7D,0xCC,0x0F,0xDB,0x00,0x5F,0xD7,0x00,0x23,0xC0,0x92,0x43,0xD8,0xCC,
+0x0D,0x1E,0x02,0x0F,0x7B,0x02,0x0F,0x3E,0x02,0x0B,0xC3,0x00,0x43,0x3E,0xCD,0x43,
+0x3B,0xCB,0x43,0x39,0xD0,0x8F,0x28,0x0F,0x23,0x01,0xE4,0x00,0x00,0x43,0x43,0xD8,
+0xCC,0x0D,0x1E,0x02,0x0F,0x7B,0x02,0x0F,0x3E,0x02,0x0B,0xC4,0x00,0x43,0x3E,0xCD,
+0x43,0x3B,0xCB,0x43,0x39,0xD0,0x8F,0x28,0x0F,0x24,0x01,0x43,0x66,0xBC,0x4F,0x7B,
+0x10,0x43,0xD8,0xDC,0x0F,0x3E,0x00,0x43,0x3C,0xDC,0x8F,0x7D,0x0F,0xD9,0x02,0x0D,
+0x1B,0x02,0x0F,0x79,0x02,0x43,0x68,0xDB,0x43,0x7B,0xD0,0x43,0x7E,0xDD,0x0F,0x79,
+0x00,0x9E,0xE1,0xD2,0xE2,0xFB,0x7E,0x0D,0x41,0x06,0x9C,0x28,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x05,0x1A,0x13,0x17,0x20,0x43,0x37,0xC4,0x9F,0x01,0x18,0x79,
+0x00,0x5F,0x18,0x00,0x1B,0x17,0x20,0xC3,0x20,0x10,0x01,0xC2,0xE0,0x10,0x01,0x5F,
+0x04,0xDB,0xFF,0x39,0x05,0x4E,0xFE,0xF7,0x05,0xA0,0x20,0x00,0x91,0x4F,0x18,0x08,
+0xC3,0x40,0x10,0x01,0x8F,0x38,0xEB,0x5A,0x05,0x49,0x8F,0x17,0x0F,0x59,0x01,0xC2,
+0xE0,0x10,0x01,0xEA,0xF7,0x05,0xF3,0x0E,0xF8,0x01,0xE4,0x00,0x00,0x1D,0xFF,0x00,
+0x7F,0xFF,0x0F,0x19,0x4F,0x0F,0x17,0x4F,0x85,0x29,0xC3,0x00,0x10,0x01,0x5C,0x84,
+0x02,0x9A,0xE0,0xFF,0x18,0x05,0x1A,0xE4,0x00,0x00,0x51,0x43,0x38,0xBC,0x43,0x63,
+0xBC,0x13,0x59,0x00,0x9E,0xE1,0x8F,0x44,0x5E,0xF7,0x00,0x1F,0x5A,0x40,0x4F,0x3A,
+0xFA,0x4F,0x39,0xD1,0x8F,0x59,0x57,0x5A,0x3F,0x43,0x3A,0xCD,0x1B,0x3B,0x00,0x13,
+0x38,0x20,0xD7,0x37,0xFE,0xCD,0x85,0x29,0xC3,0x18,0x00,0x21,0x5F,0x23,0x00,0xFF,
+0x18,0xB6,0xFE,0x9A,0xE0,0x5C,0x77,0x00,0x0B,0x78,0x01,0x9B,0x5F,0x5C,0x62,0x01,
+0x20,0x00,0x19,0x0B,0x58,0x03,0xD7,0x64,0x01,0x7D,0xD7,0x44,0x01,0x59,0x23,0x24,
+0x36,0x40,0x60,0xBD,0x54,0x63,0x3F,0xE4,0x00,0x00,0x57,0x23,0x28,0x2A,0x1C,0x63,
+0x20,0xE4,0x00,0x00,0x1B,0x23,0x2C,0x76,0x52,0xE0,0x20,0x40,0x77,0x1D,0x5C,0x63,
+0x00,0xE4,0x00,0x00,0x23,0x9E,0xE1,0x9F,0x02,0x5E,0xE2,0x29,0x23,0xFE,0xE5,0x50,
+0x60,0xFF,0x85,0x29,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x06,0x4A,0x0B,0x17,0x07,0x0A,
+0xF7,0x01,0x40,0x63,0xC3,0x40,0x63,0xB8,0x9A,0xEA,0x40,0x63,0xB8,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xFE,0xF7,0x01,0x44,0x0B,0x17,0x06,0x0A,0xF7,0x04,0xD7,0x17,0x00,
+0x92,0xCC,0x63,0x07,0xD0,0x42,0xF8,0xBD,0x40,0x63,0xB8,0xE4,0x00,0x00,0x0D,0x98,
+0x60,0x85,0x29,0x8B,0x23,0x20,0x80,0x96,0xC2,0xE0,0x10,0x01,0x98,0x60,0xFE,0xF7,
+0x01,0x44,0x0B,0x17,0x02,0x0A,0xF7,0x00,0xD7,0x17,0x00,0xDA,0xCC,0x79,0x07,0xD0,
+0x42,0xF8,0xBD,0x40,0x63,0xB8,0xE4,0x00,0x00,0x1B,0x20,0x84,0x1E,0xE7,0xFF,0xFF,
+0x65,0x98,0x60,0x85,0x29,0x5C,0x84,0x00,0x5C,0xA5,0x00,0x4C,0x84,0x30,0x5C,0xC6,
+0x00,0x8C,0x85,0x4C,0x84,0x08,0x8C,0x64,0xD0,0xC8,0x00,0x59,0x0C,0x03,0x01,0xE4,
+0x00,0x00,0x3F,0x52,0xE0,0x64,0x20,0xC0,0x54,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xB6,
+0xFA,0x9C,0xC1,0x4C,0xC6,0x0A,0x8C,0xD7,0x12,0xE6,0xFF,0x0E,0xE3,0x01,0x85,0x29,
+0xFC,0x21,0xFE,0x88,0xEE,0x21,0x01,0x54,0xEE,0x41,0x01,0x50,0xED,0x21,0x01,0x74,
+0xED,0x41,0x01,0x70,0xED,0x61,0x01,0x6C,0xED,0x81,0x01,0x68,0xED,0xA1,0x01,0x64,
+0xED,0xC1,0x01,0x60,0xED,0xE1,0x01,0x5C,0xEE,0x01,0x01,0x58,0xEE,0x61,0x01,0x4C,
+0xEE,0x81,0x01,0x48,0xEE,0xA1,0x01,0x44,0x5E,0x23,0x00,0x8A,0x44,0x5C,0xA5,0x00,
+0x4F,0x11,0x08,0x9A,0xE1,0xD4,0xB8,0x00,0x94,0x43,0x18,0x28,0x9A,0xE0,0x23,0x00,
+0x24,0x1E,0xF8,0x01,0x5E,0xF7,0x00,0x43,0x05,0xBB,0x5F,0x08,0x11,0x20,0x00,0x21,
+0x9E,0xFF,0x5E,0xF7,0x00,0x42,0x17,0x2B,0x8B,0x41,0x5E,0x10,0x00,0x9B,0x00,0x41,
+0xD0,0x8D,0x9D,0xC2,0x5D,0xCE,0x00,0xE4,0x00,0x00,0x4D,0x43,0x7A,0xCC,0x13,0xBC,
+0x00,0x9F,0x21,0x1B,0xBB,0x00,0xE4,0x00,0x00,0x13,0x9B,0x20,0x43,0x86,0xC4,0x5F,
+0x79,0x00,0xD6,0xFB,0xFF,0x4D,0x9F,0x01,0x8F,0x57,0x5F,0x18,0x00,0xD7,0x05,0xFF,
+0x6E,0x99,0x60,0x52,0x80,0x40,0xE4,0x00,0x01,0xC9,0x21,0x60,0x56,0x13,0x12,0x00,
+0x1E,0xE1,0x00,0x1F,0x18,0x40,0x8E,0xED,0x12,0xF7,0x00,0xE4,0x00,0x00,0x21,0x13,
+0x15,0x00,0x42,0xF3,0x6C,0x1F,0x18,0x40,0x12,0xF7,0xFF,0x43,0x18,0xBD,0x4E,0xF8,
+0xFA,0x4E,0xF7,0xD1,0x40,0xD8,0xBC,0x54,0xC6,0x3F,0x40,0xC6,0xBD,0x5C,0xC6,0x00,
+0x5C,0xC4,0x13,0x20,0x00,0x25,0x40,0xD4,0x35,0x5C,0xC6,0x00,0x1C,0x61,0x40,0x21,
+0x60,0x7A,0x98,0x80,0x88,0xAC,0xE7,0xFF,0xFD,0x9E,0x21,0x81,0x78,0x0B,0x0A,0x81,
+0xEA,0xEA,0xFF,0x7F,0x8E,0xF8,0x0E,0xEA,0x81,0xE4,0x00,0x00,0x9F,0x98,0x81,0x88,
+0xAC,0x21,0x64,0x56,0xE7,0xFF,0xFD,0x62,0x21,0x81,0x00,0x0B,0x0A,0xFF,0xEA,0xEA,
+0xFF,0x7F,0xE4,0x00,0x00,0x45,0xE7,0xFF,0xFD,0x3E,0x21,0x80,0x52,0xEB,0x01,0x00,
+0xC1,0x0A,0xE1,0x41,0x8E,0xF8,0xEE,0xE1,0x00,0xC1,0xE4,0x00,0x00,0x3D,0x0B,0x0A,
+0xFF,0x0A,0xEA,0x81,0x5F,0x57,0x04,0x5F,0x38,0x04,0xD7,0x3A,0x00,0x31,0x8A,0xF8,
+0x0B,0x0A,0x01,0x8E,0xF8,0x0E,0xEA,0x01,0x9D,0xA1,0x9D,0x42,0x5D,0x8D,0x00,0xD5,
+0xCC,0xFA,0x5D,0x21,0x60,0x76,0x9D,0x61,0x5D,0x6B,0x00,0xE4,0x00,0x00,0x3F,0x0B,
+0x0F,0x01,0x9E,0xE1,0x0F,0x0F,0x81,0x5E,0xF7,0x00,0x9D,0xE2,0xE4,0x00,0x00,0x0D,
+0x9A,0xE0,0xD6,0xEE,0xFF,0x6E,0xE7,0xFF,0xFF,0xC1,0xD5,0x71,0x00,0xC2,0xFD,0xE1,
+0x00,0xC0,0x1E,0x61,0x00,0x89,0x4F,0x99,0xA0,0x42,0xB2,0x5C,0x8E,0x6B,0xE7,0xFF,
+0xFF,0x7D,0x21,0x64,0x26,0x9D,0xDF,0xE4,0x00,0x00,0x0F,0x1D,0xCE,0x3F,0xFE,0xE1,
+0x01,0x40,0x4D,0xCE,0x08,0x8D,0xD7,0xE8,0x6E,0xFF,0x01,0x42,0x03,0x80,0xEE,0xA1,
+0x01,0x46,0x5C,0x70,0x00,0xEE,0x81,0x01,0x4A,0xEE,0x61,0x01,0x4E,0xEE,0x41,0x01,
+0x52,0xEE,0x21,0x01,0x56,0xEE,0x01,0x01,0x5A,0xED,0xE1,0x01,0x5E,0xED,0xC1,0x01,
+0x62,0xED,0xA1,0x01,0x66,0xED,0x81,0x01,0x6A,0xED,0x61,0x01,0x6E,0xED,0x41,0x01,
+0x72,0xED,0x21,0x01,0x76,0xFC,0x21,0x01,0x78,0x85,0x29,0x5C,0x84,0x06,0x5C,0xA5,
+0x06,0x43,0x24,0x2C,0x9B,0x02,0x43,0x19,0xC0,0x53,0x20,0x1E,0x5E,0xE3,0x06,0xC7,
+0x18,0xFF,0xFF,0x40,0x84,0x2D,0x98,0x60,0xCC,0x84,0x00,0x0A,0x40,0x84,0xC8,0xC4,
+0x84,0xFF,0xFF,0x43,0x38,0x25,0xD6,0xF9,0x00,0x60,0x8C,0x98,0x5C,0x97,0x1D,0x48,
+0x61,0x01,0x85,0x29,0x24,0x80,0x68,0x24,0x7C,0x34,0xCE,0xE3,0x03,0xE8,0x98,0x61,
+0xE4,0x00,0x00,0x49,0xCE,0xE3,0xFC,0x18,0x98,0x64,0xE4,0x00,0x00,0x35,0x20,0x80,
+0x74,0x24,0x7C,0x34,0xCE,0xE3,0xFC,0x18,0x98,0x62,0xE4,0x00,0x00,0x15,0xCE,0xE3,
+0x03,0xE8,0x98,0x63,0x40,0x97,0x20,0xE7,0xFF,0xF9,0x23,0x9A,0xE0,0x20,0x60,0x3C,
+0x5C,0x60,0x11,0x52,0xE0,0x30,0x53,0x00,0x10,0x4A,0xF8,0xB8,0x88,0x77,0x85,0x29,
+0x0A,0xE3,0x00,0x26,0xFC,0x60,0xC3,0x00,0x10,0x01,0xEB,0x18,0x06,0x51,0x5F,0x38,
+0x06,0x5E,0xF8,0x1D,0x4A,0xF9,0xB8,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0x0E,0xE3,0x01,
+0xC3,0x00,0x10,0x01,0x0A,0xE4,0x00,0xFF,0x18,0x06,0x4A,0x26,0xFC,0x4C,0x0B,0x38,
+0x07,0x5F,0x59,0x06,0x5E,0xF9,0x1D,0x4A,0xFA,0xB8,0xE4,0x00,0x00,0x0D,0x9A,0xE0,
+0x0E,0xE4,0x01,0x13,0x38,0x04,0x23,0x28,0x64,0x23,0x2C,0x8C,0x23,0x20,0xA6,0x0B,
+0x23,0x00,0x0E,0xE3,0x01,0x0A,0xF8,0x07,0x42,0xF7,0xCD,0xE4,0x00,0x00,0x15,0x0B,
+0x18,0x09,0x42,0xF8,0xBD,0x0E,0xE4,0x01,0xE4,0x00,0x00,0x1B,0x0B,0x03,0x00,0x0E,
+0xE3,0x01,0x0F,0x04,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,0x6D,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x06,0x59,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,
+0x61,0x24,0x0D,0x81,0x20,0x0D,0xA1,0x1C,0x0C,0x61,0x07,0x0C,0x81,0x05,0x0D,0x21,
+0x2C,0x0D,0xC1,0x18,0x0D,0xE1,0x14,0x0E,0x01,0x10,0x0E,0x21,0x0C,0x5D,0xA5,0x00,
+0x1C,0x61,0x06,0x1C,0x81,0x04,0xE7,0xFF,0xFE,0x94,0xC2,0xE0,0x10,0x01,0x09,0x81,
+0x04,0xFF,0x17,0x06,0x4A,0xEA,0xF7,0x06,0x4B,0x0B,0x18,0x03,0x41,0x8C,0xC3,0x41,
+0x8C,0xB8,0x5D,0x8C,0x06,0x0D,0x81,0x05,0xC1,0x40,0x10,0x01,0xC1,0x60,0x10,0x01,
+0xFD,0x4A,0x05,0x3C,0xFD,0x6B,0x05,0x40,0xD1,0xA1,0x06,0x9E,0xC1,0xC0,0x10,0x01,
+0xC1,0xA0,0x10,0x01,0x0E,0xEA,0x02,0xFD,0xCE,0x05,0x18,0xFD,0xAD,0x05,0x9E,0x22,
+0xE4,0x68,0x22,0xE0,0x34,0x98,0x60,0xD2,0xE3,0x08,0x25,0xE4,0x00,0x00,0xD7,0x0A,
+0xE1,0x07,0x0E,0xED,0x01,0xE4,0x00,0x00,0xAB,0xC2,0xE0,0x10,0x01,0x0A,0x21,0x06,
+0xEE,0x37,0x05,0x15,0xC2,0xE0,0x10,0x01,0x09,0xED,0x00,0xED,0x97,0x06,0x47,0x41,
+0xEF,0x8D,0x4E,0xEF,0xFA,0x0A,0x0E,0x00,0x45,0xF7,0x7E,0x42,0x10,0x65,0x41,0xEF,
+0xBD,0x4E,0xF0,0xFA,0x46,0x17,0x86,0x42,0x10,0xBD,0xC2,0xE0,0x10,0x01,0xE8,0x77,
+0x06,0x59,0xE7,0xFF,0xF7,0x04,0x42,0x10,0x83,0x41,0xEF,0x7B,0x40,0x63,0x1B,0x8D,
+0xF0,0x9A,0xE3,0xD5,0xE3,0x05,0x18,0x0E,0x2D,0x01,0x0D,0x8E,0x01,0x0C,0x0B,0x01,
+0x9A,0xE2,0xE4,0x00,0x01,0x29,0x0A,0xE1,0x06,0x09,0xAD,0x00,0x41,0xAD,0xBD,0x4E,
+0xED,0xFA,0x45,0xB7,0x6E,0x41,0xAD,0xBD,0x0A,0xEE,0x00,0x41,0x97,0x65,0x4E,0xEC,
+0xFA,0x45,0x97,0x66,0x41,0x8C,0xBD,0xC2,0xE0,0x10,0x01,0x41,0x8C,0x63,0xE8,0x77,
+0x06,0x59,0x41,0xAD,0x6B,0xE7,0xFF,0xF6,0x5E,0x8D,0x8D,0x40,0x63,0x1B,0xD5,0x83,
+0x01,0x88,0x9A,0xE4,0x0E,0xEA,0x00,0xE4,0x00,0x00,0x51,0x21,0xA1,0x26,0x0E,0xEA,
+0x02,0x22,0xE8,0x60,0x26,0xE8,0x2B,0x22,0xE5,0x0A,0xE4,0x00,0x00,0x2B,0x22,0xEC,
+0x90,0xD2,0xE4,0x01,0xC6,0xE4,0x00,0x00,0x51,0x9A,0xE1,0xE4,0x00,0x00,0x57,0xC2,
+0xE0,0x10,0x01,0x0B,0x0B,0x01,0xEA,0xF7,0x06,0x6D,0xD7,0x17,0x00,0xF9,0xE4,0x00,
+0x00,0x2D,0x9A,0xE4,0x98,0x61,0x0E,0xEA,0x00,0xE4,0x00,0x00,0x25,0x0C,0x0A,0x00,
+0xE4,0x00,0x00,0x13,0x9A,0xE4,0x0E,0xEA,0x00,0x98,0x60,0x0A,0xEB,0x01,0x0E,0x21,
+0x0E,0x9E,0xE1,0x0E,0x01,0x12,0x0E,0xEB,0x01,0x0D,0xE1,0x16,0x0D,0xC1,0x1A,0x0D,
+0xA1,0x1E,0x0D,0x81,0x22,0x0D,0x61,0x26,0x0D,0x41,0x2A,0x0D,0x21,0x2E,0x1C,0x21,
+0x30,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x05,0x45,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x06,0x5C,0x85,0x29,0x9B,0x01,0xC2,0xE0,0x10,0x01,0x1C,0x21,0xB0,0xFB,0x17,
+0x05,0x42,0x0D,0x41,0x48,0x0D,0x61,0x44,0x0D,0x81,0x40,0x0E,0x01,0x30,0x0E,0x21,
+0x2C,0x0E,0x41,0x28,0x0E,0x61,0x24,0x0E,0x81,0x20,0x0E,0xA1,0x1C,0x0E,0xC1,0x18,
+0x0C,0x61,0x17,0x0C,0x81,0x15,0x0D,0x21,0x4C,0x0D,0xA1,0x3C,0x0D,0xC1,0x38,0x0D,
+0xE1,0x34,0x1C,0x61,0x16,0x1C,0x81,0x14,0xE7,0xFF,0xFA,0xF0,0xC2,0xE0,0x10,0x01,
+0x09,0x41,0x16,0xED,0x57,0x05,0x49,0xC2,0xE0,0x10,0x01,0xFF,0x17,0x06,0x4A,0xEA,
+0xF7,0x06,0x4B,0x0B,0x18,0x03,0x09,0x61,0x14,0x41,0x6B,0xC3,0x41,0x6B,0xB8,0xC2,
+0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0x5D,0x6B,0x06,0xED,0x77,0x05,0xF3,0xEA,0xF8,
+0x05,0x45,0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xF8,0x05,0x45,0xC3,0x20,0x10,0x01,0xC2,
+0x60,0x10,0x01,0xC2,0x40,0x10,0x01,0xC2,0x80,0x10,0x01,0xC2,0xA0,0x10,0x01,0xC3,
+0x00,0x10,0x01,0xC2,0xC0,0x10,0x01,0xC3,0x40,0x10,0x01,0xFF,0x39,0x06,0x48,0xFE,
+0x73,0x05,0x4A,0xFE,0x52,0x05,0x16,0xFE,0x34,0x05,0x4C,0xFE,0x15,0x06,0x44,0xFF,
+0x18,0x05,0xF4,0xFE,0xD6,0x04,0xC4,0xFD,0x9A,0x01,0x44,0xD2,0xE1,0x04,0x3E,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x05,0x3A,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x05,0x46,0xC2,
+0xE0,0x10,0x01,0xC3,0x60,0x10,0x01,0xEC,0x17,0x06,0x5C,0xC3,0x40,0x10,0x01,0x0D,
+0x4C,0x01,0x0D,0x4C,0x03,0x0D,0x6C,0x05,0x0D,0x6C,0x07,0x0D,0x4C,0x09,0x0D,0x6C,
+0x0B,0x0C,0x0C,0x10,0x0C,0x0C,0x14,0x0D,0x53,0x01,0x0D,0x72,0x01,0x0D,0x51,0x01,
+0x0D,0x70,0x01,0x9A,0xE0,0xFF,0x7B,0x05,0x4E,0xFF,0x5A,0x05,0xA0,0x43,0x98,0xBC,
+0x0C,0x1C,0x01,0x43,0x96,0xBC,0x0C,0x1C,0x01,0x43,0x9B,0xBC,0x0C,0x1C,0x01,0x43,
+0x9A,0xBC,0x0C,0x1C,0x01,0x9E,0xE2,0x5E,0xEA,0x09,0x23,0xFF,0x8D,0x9A,0xE1,0x0D,
+0x58,0x01,0x0D,0x76,0x01,0x0D,0x5B,0x01,0x0D,0x7A,0x01,0x1A,0xF9,0x00,0xE4,0x00,
+0x03,0x49,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x05,0x3A,0x5E,0xE3,0xBB,0x20,0x04,0xF5,
+0x09,0xF3,0x00,0x40,0x8A,0x7D,0x0F,0x01,0x04,0x0C,0x81,0x0C,0x0F,0x21,0x08,0x50,
+0x60,0x23,0xE7,0xFF,0xF2,0x44,0x09,0xD2,0x00,0x0C,0x81,0x0E,0x41,0xAB,0x75,0x43,
+0x64,0x23,0x42,0xED,0x6B,0x40,0x63,0x1B,0x8E,0xFB,0x0F,0x01,0x06,0x0F,0x21,0x0A,
+0xD6,0xE3,0x0B,0x10,0x12,0xF9,0x00,0x5E,0xE4,0xDB,0x20,0x00,0x51,0x4F,0x77,0x08,
+0x8F,0x1B,0x8E,0xDB,0x0D,0x58,0x01,0x0D,0x76,0x01,0xE4,0x00,0x00,0x1D,0xFF,0x60,
+0x7F,0xFF,0x0F,0x78,0x4F,0x0F,0x76,0x4F,0x1E,0xD7,0x01,0x5E,0xD6,0x00,0x1A,0xD9,
+0x00,0x0A,0xEC,0x00,0xD6,0xEA,0x00,0x38,0x0D,0x4C,0x01,0x0B,0x0C,0x02,0x8A,0xEC,
+0xD5,0x58,0x00,0x38,0x0D,0x4C,0x03,0x0B,0x17,0x04,0xD7,0x0B,0x00,0x38,0x0D,0x77,
+0x05,0x0A,0xEC,0x06,0xD5,0x77,0x00,0x38,0x0D,0x6C,0x07,0x4E,0xE4,0xFA,0x47,0x17,
+0x26,0x42,0xF8,0xBD,0x0F,0x0C,0x12,0x8E,0xF8,0x0E,0xEC,0x10,0x4E,0xED,0xFA,0x47,
+0x17,0x6E,0x42,0xF8,0xBD,0x0F,0x0C,0x16,0x8E,0xF8,0x88,0x6D,0x0E,0xEC,0x14,0xE7,
+0xFF,0xF6,0xCA,0xC3,0x00,0x10,0x01,0xF8,0x78,0x05,0x3B,0xC1,0xA0,0x10,0x01,0x89,
+0x83,0x5E,0xE3,0x00,0xFD,0xAD,0x05,0xF0,0x22,0xC9,0x94,0x26,0xC9,0x95,0x13,0x2D,
+0x00,0x1F,0x39,0x40,0x43,0x39,0xBD,0x4F,0x19,0xFA,0x4F,0x18,0xD1,0x42,0xF9,0xC4,
+0x56,0xF7,0x3F,0x42,0xD7,0xC5,0x5E,0xF6,0x00,0x0E,0xE1,0x10,0x26,0xEC,0x31,0x57,
+0x16,0xFF,0x5F,0x07,0x91,0x20,0x01,0x65,0xC3,0x00,0x10,0x01,0xF3,0x18,0x05,0x3A,
+0x23,0x00,0xC2,0x08,0x91,0x00,0x40,0x8F,0x25,0x08,0x70,0x00,0x40,0x6E,0x1D,0xE7,
+0xFF,0xF6,0x0A,0xE7,0xFF,0xEE,0x56,0x0E,0xE1,0x12,0xD2,0xE7,0x00,0x69,0x56,0xF6,
+0xFF,0x5E,0xE7,0x11,0x20,0x01,0x71,0x0D,0xF1,0x01,0x0D,0xD0,0x01,0x19,0x8D,0x00,
+0x0D,0x53,0x01,0x0D,0x72,0x01,0xE4,0x00,0x00,0xB9,0x5E,0xE3,0xC9,0x20,0x01,0x55,
+0x9B,0x01,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x06,0x5C,0xE4,0x00,0x00,0x91,0x0B,0x10,
+0x00,0x0B,0x31,0x00,0x43,0x18,0x75,0x43,0x39,0x7D,0x0F,0x01,0x04,0x0F,0x21,0x08,
+0x50,0x60,0x23,0xE7,0xFF,0xEF,0xA2,0x0F,0x21,0x0A,0x0F,0x01,0x06,0x43,0x39,0xCB,
+0x43,0x18,0xC3,0x40,0x63,0x1B,0x8F,0x19,0xD7,0x03,0xFC,0x5C,0xE7,0xFF,0xFE,0xF9,
+0xC2,0xE0,0x10,0x01,0xF3,0x17,0x05,0x46,0x9F,0x01,0xFB,0x17,0x05,0x46,0xE7,0xFF,
+0xFF,0x33,0x0E,0xC1,0x1A,0x0E,0xA1,0x1E,0x0E,0x81,0x22,0x0E,0x61,0x26,0x0E,0x41,
+0x2A,0x0E,0x21,0x2E,0x0E,0x01,0x32,0x0D,0xE1,0x36,0x0D,0xC1,0x3A,0x0D,0xA1,0x3E,
+0x0D,0x81,0x42,0x0D,0x61,0x46,0x0D,0x41,0x4A,0x0D,0x21,0x4E,0x1C,0x21,0x50,0x85,
+0x29,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x06,0x68,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,
+0x64,0x85,0x29,0xFC,0x21,0xFF,0x58,0xED,0x61,0x00,0x9C,0x0E,0xC1,0x70,0xED,0x21,
+0x00,0xA4,0xED,0x41,0x00,0xA0,0xED,0x81,0x00,0x98,0xED,0xA1,0x00,0x94,0xED,0xC1,
+0x00,0x90,0xED,0xE1,0x00,0x8C,0xEE,0x01,0x00,0x88,0xEE,0x21,0x00,0x84,0xEE,0x41,
+0x00,0x80,0x0E,0x61,0x7C,0x0E,0x81,0x78,0x0E,0xA1,0x74,0xFE,0xC1,0x00,0xA8,0xC2,
+0xE0,0x10,0x01,0xC1,0x60,0x10,0x01,0xEA,0xF7,0x05,0x4A,0xFD,0x6B,0x01,0x44,0xC3,
+0x00,0x10,0x01,0x0C,0x76,0xA0,0xEB,0x18,0x05,0x16,0x0C,0x36,0xA4,0x0E,0xEB,0x0D,
+0x0F,0x0B,0x0F,0xC3,0x20,0x10,0x01,0xF3,0x39,0x05,0x3A,0x5F,0x23,0xDB,0x20,0x00,
+0x85,0xC3,0x20,0x10,0x01,0xE8,0x79,0x06,0x44,0xC3,0x20,0x10,0x01,0xE8,0x99,0x05,
+0x4C,0x40,0x97,0x25,0x40,0x78,0x1D,0xE7,0xFF,0xF3,0x7A,0xE7,0xFF,0xEB,0xC6,0x0C,
+0x6B,0x12,0x0D,0x4B,0x16,0x98,0x80,0x0C,0x6B,0x18,0x0D,0x4B,0x1C,0xE7,0xFF,0xEE,
+0x0C,0x0C,0x6B,0x10,0x88,0x6A,0xE7,0xFF,0xED,0xB2,0x0B,0x0B,0x00,0x0C,0x6B,0x14,
+0xC2,0xE0,0x10,0x01,0x0B,0x2B,0x02,0xEA,0xF7,0x06,0x54,0x43,0x39,0xC5,0xC3,0x00,
+0x10,0x01,0xFE,0x38,0x06,0x60,0xD6,0xF9,0x00,0x88,0x0B,0x4B,0x06,0x0B,0x2B,0x04,
+0x43,0x3A,0xCD,0xD6,0xF9,0x00,0xEC,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x06,0x5E,0x22,
+0xE4,0x44,0xC2,0xE0,0x10,0x01,0xFD,0x57,0x05,0x1A,0x13,0x2A,0x20,0x27,0x24,0x5B,
+0xC2,0xE0,0x10,0x01,0xEC,0x16,0xFF,0x78,0xEC,0x17,0x06,0x5C,0x0C,0x16,0x80,0xE4,
+0x00,0x10,0x67,0x0C,0x36,0x9C,0x0F,0x31,0x02,0xEC,0x16,0xFF,0x78,0x0F,0x39,0x02,
+0x0C,0x16,0x80,0x0B,0x39,0x01,0x0C,0x16,0x90,0x9F,0x27,0x99,0x80,0x4F,0x39,0x19,
+0x4F,0x39,0x18,0x40,0x21,0xCD,0xEC,0x36,0xFF,0x70,0x40,0x21,0xCD,0xEC,0x36,0xFF,
+0x64,0xE4,0x00,0x0F,0xCB,0x4F,0x0C,0x20,0xEF,0x16,0xFF,0x68,0x0E,0xF7,0x06,0x8E,
+0xF8,0x11,0xB7,0x05,0x5D,0xA3,0xFB,0x20,0x00,0x45,0xC3,0x20,0x10,0x01,0xEF,0x19,
+0x06,0x6A,0x8B,0x2D,0xE4,0x00,0x00,0x25,0x1F,0x2D,0xE0,0xC3,0x40,0x10,0x01,0x5F,
+0x39,0x00,0xEF,0x1A,0x06,0x66,0x9B,0x41,0x4F,0x3A,0xCC,0x47,0x19,0xC4,0xD3,0x00,
+0x0A,0x12,0x1F,0x0D,0xFF,0x27,0x0D,0x13,0x10,0xB7,0x04,0x0C,0xD7,0x02,0x10,0x6A,
+0x20,0x9A,0xE0,0x20,0xA0,0x30,0x88,0x8A,0xE7,0xFF,0xED,0x10,0x5E,0xE3,0x00,0xEF,
+0x16,0xFF,0x72,0x8F,0x0C,0x1A,0xF8,0x00,0x0E,0xF1,0x02,0xEF,0x16,0xFF,0x6A,0x0E,
+0xF7,0x06,0x8E,0xF8,0x10,0xAA,0x20,0x10,0x77,0x04,0x0C,0x97,0x02,0x88,0xCA,0x9A,
+0xE0,0xD0,0xA0,0x07,0x5E,0xE4,0x00,0x01,0xDD,0x99,0xC0,0x99,0xFB,0x8A,0x0E,0xD1,
+0xAA,0x03,0x66,0x99,0xE0,0x1C,0x76,0xA8,0x88,0x8F,0xE7,0xFF,0xEA,0x00,0x0E,0xF1,
+0x02,0xEF,0x36,0xFF,0x6A,0x0E,0xF7,0x06,0x10,0x6A,0x20,0x8E,0xF9,0x10,0xB7,0x04,
+0x0C,0xD7,0x02,0x20,0xA0,0x54,0x1C,0x96,0xA8,0xE7,0xFF,0xEC,0x4E,0x5C,0x63,0x00,
+0xD4,0x70,0x00,0x41,0x8A,0x03,0x89,0xCF,0x9D,0xE4,0x5D,0xEF,0x00,0x5D,0xE8,0x09,
+0x23,0xFF,0x15,0xEE,0xF6,0xFF,0x72,0x8E,0xEC,0x1A,0x17,0x00,0x5E,0x09,0x73,0x20,
+0x02,0xA9,0x1C,0x76,0xA8,0x88,0x8E,0xE7,0xFF,0xE9,0x66,0x0E,0xF1,0x02,0xEF,0x56,
+0xFF,0x6A,0x0E,0xF7,0x06,0x8E,0xFA,0xE4,0x00,0x00,0xC9,0x1C,0x76,0xA8,0x88,0x8F,
+0xE7,0xFF,0xE9,0x34,0x0E,0xF1,0x02,0xEF,0x16,0xFF,0x6A,0x0E,0xF7,0x06,0x10,0x6A,
+0x20,0x8E,0xF8,0x10,0xB7,0x04,0x0C,0xD7,0x02,0x20,0xA0,0x54,0x1C,0x96,0xA8,0xE7,
+0xFF,0xEB,0x82,0x5C,0x63,0x00,0xD4,0x70,0x00,0x41,0x8A,0x03,0x89,0xCF,0x9D,0xE1,
+0x5D,0xEF,0x02,0xD1,0xE6,0xFE,0x46,0xEE,0xF6,0xFF,0x72,0x8E,0xEC,0x1A,0x17,0x00,
+0x5E,0x09,0x73,0x20,0x01,0x19,0x1C,0x76,0xA8,0x88,0x8E,0xE7,0xFF,0xE8,0x9E,0x0E,
+0xF1,0x02,0xEF,0x36,0xFF,0x6A,0x0E,0xF7,0x06,0x8E,0xF9,0x10,0x77,0x04,0x0C,0x97,
+0x02,0x10,0xAA,0x20,0x9A,0xE0,0x20,0xA0,0x34,0x1C,0xD6,0xA8,0xE7,0xFF,0xEA,0xE8,
+0x5E,0xE3,0x00,0xEF,0x16,0xFF,0x66,0x8F,0x0C,0x1A,0xF8,0x00,0xE4,0x00,0x00,0x2D,
+0xEE,0xF6,0xFF,0x72,0x8E,0xEC,0x18,0x17,0x00,0xEE,0xF6,0xFF,0x66,0x8E,0xEC,0x18,
+0x17,0x00,0xEE,0xF6,0xFF,0x72,0x8E,0xEC,0x12,0xF7,0x00,0x0E,0xF6,0x94,0x5E,0xE9,
+0x53,0x20,0x19,0x01,0xEE,0xF6,0xFF,0x66,0x8E,0xEC,0x12,0xF7,0x00,0x0E,0xF6,0x98,
+0x5E,0xE8,0xB3,0x20,0x18,0xB9,0x0B,0x4B,0x08,0x0A,0xEB,0x02,0x0B,0x0B,0x00,0x0B,
+0x2B,0x06,0xEF,0x56,0xFF,0x58,0xEE,0xF6,0xFF,0x60,0xEF,0x16,0xFF,0x74,0xEF,0x36,
+0xFF,0x5C,0x0A,0x0B,0x0C,0x09,0xEB,0x0A,0x09,0xCB,0x0E,0x0A,0x6B,0x04,0xD1,0xA7,
+0x01,0x36,0xD5,0xEE,0x2F,0xF8,0x41,0xCE,0x7D,0x4C,0x6E,0xFA,0x45,0xC3,0x76,0x40,
+0x6E,0x1D,0xE7,0xFF,0xE8,0xBA,0xC0,0x60,0x18,0xE8,0x20,0x17,0x9D,0x12,0xEA,0x20,
+0xE4,0x00,0x08,0xB3,0xEF,0x56,0xFF,0x5A,0x43,0x5A,0x85,0x4E,0xFA,0xFA,0x0F,0x56,
+0x84,0x46,0x97,0xD6,0xEF,0x36,0xFF,0x62,0x42,0x94,0xBD,0xEF,0x56,0xFF,0x76,0x42,
+0xEF,0x75,0x43,0x39,0xD5,0xEE,0xF6,0xFF,0x7C,0xEF,0x36,0xFF,0x6C,0x4E,0xF7,0xFA,
+0xEF,0x16,0xFF,0x7E,0x46,0xB7,0xC6,0x42,0xB5,0xBD,0xEE,0xF6,0xFF,0x5E,0x42,0x57,
+0x9D,0xD1,0xA8,0x08,0x7E,0x40,0x77,0x7D,0xE7,0xFF,0xE8,0x0E,0xC0,0x60,0xCE,0x48,
+0x20,0x00,0x95,0xEF,0x16,0xFF,0x62,0x98,0x80,0x40,0x78,0x85,0xE7,0xFF,0xE8,0x2E,
+0xC0,0x60,0x19,0x08,0x20,0x00,0x45,0x12,0xEA,0x20,0x8E,0xEA,0x12,0xF7,0xFF,0x5E,
+0xE5,0xFB,0x20,0x15,0xBD,0x42,0xB5,0xAB,0x42,0x94,0xA3,0x42,0x52,0x93,0x8E,0x95,
+0xEF,0x36,0xFF,0x6E,0xCE,0x94,0x00,0x64,0x42,0xF9,0xCB,0x8E,0x57,0x4E,0x52,0x18,
+0xD6,0x54,0x00,0x91,0x40,0x6E,0x9D,0xE7,0xFF,0xE7,0x70,0xC0,0x60,0x18,0xE8,0x20,
+0x15,0x09,0xEF,0x56,0xFF,0x62,0xEE,0xF6,0xFF,0x5A,0x98,0x80,0x40,0x7A,0xBD,0xE7,
+0xFF,0xE7,0x88,0xC0,0x60,0x4A,0xE8,0x20,0x14,0xA9,0x11,0xEA,0x00,0x1E,0xEF,0xF0,
+0x5E,0xE3,0xDB,0x20,0x00,0x45,0x12,0xEA,0x01,0x9E,0xF0,0x5E,0xF7,0x00,0x5E,0xE3,
+0xD3,0x20,0x14,0x41,0xC3,0x20,0x10,0x01,0xFF,0x39,0x05,0x1A,0x13,0x19,0x20,0x8F,
+0x19,0x12,0xF8,0xFF,0x1F,0x37,0xEF,0x5F,0x23,0xDB,0x20,0x00,0x49,0x13,0x18,0xFE,
+0x5F,0x02,0x13,0x20,0x00,0x25,0x5F,0x05,0xF3,0x20,0x13,0xA1,0x9E,0xF4,0xD2,0xE6,
+0x00,0x9D,0xEC,0x76,0xFF,0x7E,0xE7,0xFF,0xE6,0x92,0xC0,0x60,0x9C,0x4C,0x20,0x13,
+0x4D,0x9D,0xF8,0xD1,0xE7,0x21,0xD5,0xEF,0x56,0xFF,0x5E,0x41,0xCE,0xD5,0x4C,0x6E,
+0xFA,0x45,0xC3,0x76,0x40,0x6E,0x1D,0xE7,0xFF,0xE6,0x50,0xC0,0x60,0x7C,0xEC,0x20,
+0x10,0x79,0xEE,0xF6,0xFF,0x62,0x98,0x80,0x42,0x10,0xBD,0x4C,0x70,0xFA,0x46,0x03,
+0x86,0x40,0x70,0x1D,0xE7,0xFF,0xE6,0x5E,0xC0,0x60,0x3E,0x68,0xE4,0x00,0x07,0xFD,
+0xD1,0xAA,0x0E,0xFE,0xEF,0x16,0xFF,0x5A,0x43,0x10,0xC5,0x4E,0xF8,0xFA,0x0F,0x16,
+0x88,0x44,0x77,0xC6,0x98,0x80,0x40,0x63,0xBD,0xE7,0xFF,0xE6,0x14,0x0C,0x76,0x8C,
+0xC0,0x60,0xAF,0x0C,0x20,0x00,0x69,0x40,0x6E,0x7D,0x4E,0xE3,0xFA,0x44,0x77,0x1E,
+0x40,0x63,0xBD,0xE7,0xFF,0xE5,0x98,0xC0,0x60,0xAF,0x08,0x20,0x00,0xF5,0xEF,0x36,
+0xFF,0x5E,0x88,0x6F,0x88,0x99,0x88,0xB3,0xE7,0xFF,0xEA,0x86,0x20,0x60,0x52,0xEF,
+0x56,0xFF,0x5E,0x88,0x6E,0x88,0x9A,0x88,0xB3,0xE7,0xFF,0xEA,0x64,0x20,0x60,0x6C,
+0xEE,0xF6,0xFF,0x5A,0xD6,0x17,0x00,0xA0,0x0C,0x76,0x8A,0x98,0x80,0xE7,0xFF,0xE5,
+0x6C,0xC0,0x60,0x32,0x0C,0x20,0x10,0x71,0xEF,0x16,0xFF,0x6E,0x42,0xF8,0xC3,0x42,
+0xB5,0xAB,0x42,0x94,0xA3,0x42,0x52,0x93,0x8E,0x95,0x8E,0x57,0xCE,0x94,0x00,0x64,
+0x4E,0xF2,0x18,0xD6,0x97,0x01,0xA1,0x40,0x6E,0x9D,0xE7,0xFF,0xE4,0xCA,0xC0,0x60,
+0x18,0xEC,0x20,0x00,0x95,0x12,0xEA,0x01,0x9E,0xF0,0x5E,0xF7,0x00,0x5E,0xE3,0xD3,
+0x20,0x00,0x5D,0xEF,0x36,0xFF,0x76,0x98,0x80,0x40,0x70,0xCD,0xE7,0xFF,0xE4,0xCE,
+0xC0,0x60,0x2B,0xCC,0x20,0x0F,0x35,0x12,0xAA,0x00,0x1E,0xF5,0xF8,0x5E,0xE6,0x13,
+0x20,0x00,0xAD,0xEF,0x56,0xFF,0x5E,0x40,0x7A,0x7D,0xE7,0xFF,0xE4,0x4A,0xC0,0x60,
+0xC7,0xEC,0x20,0x00,0x65,0x40,0x6F,0x9D,0xE7,0xFF,0xE4,0x2E,0xC0,0x60,0xC7,0xEC,
+0x20,0x00,0x2D,0xCE,0xF2,0x00,0x06,0xD6,0x97,0x1C,0xD5,0xCE,0x52,0x00,0x0C,0xD6,
+0x92,0x01,0x39,0x12,0xEA,0x01,0xD2,0xEF,0x01,0x05,0x0C,0x76,0x86,0x98,0x80,0xE7,
+0xFF,0xE4,0x28,0x5C,0x6C,0x91,0x20,0x00,0x41,0x40,0x6E,0x7D,0xE7,0xFF,0xE3,0xC6,
+0x5C,0x6C,0x99,0x20,0x0D,0xB9,0x1E,0xB5,0xDB,0x5E,0xA2,0x3B,0x20,0x00,0x85,0x12,
+0xEA,0x20,0x8E,0xEA,0x12,0xF7,0xFF,0x5E,0xE4,0x93,0x20,0x00,0x4D,0x5E,0xE6,0xDB,
+0x20,0x00,0x35,0x0E,0xF6,0x8E,0xC2,0xE0,0x7D,0x0C,0x20,0x0D,0x1D,0xEC,0x76,0xFF,
+0x7E,0xE7,0xFF,0xE3,0x5C,0xC0,0x60,0xBB,0x88,0x20,0x00,0x65,0xEF,0x16,0xFF,0x62,
+0xEF,0x36,0xFF,0x76,0x88,0x70,0x88,0x98,0x88,0xB9,0xE7,0xFF,0xE8,0x42,0xD0,0x60,
+0x19,0x1E,0x40,0x6E,0x7D,0x4E,0xE3,0xFA,0x44,0x77,0x1E,0x40,0x63,0xBD,0xE7,0xFF,
+0xE3,0x02,0xC0,0x60,0xBB,0x88,0x20,0x00,0x5D,0xEF,0x56,0xFF,0x5E,0xD5,0xFA,0x18,
+0x22,0xD5,0xF3,0x18,0x02,0xD5,0xDA,0x17,0xE2,0xD5,0xD3,0x17,0xC2,0x0E,0xF6,0x8E,
+0xC2,0xE0,0xBB,0x88,0x20,0x00,0x7D,0xEF,0x16,0xFF,0x5A,0xEF,0x36,0xFF,0x62,0xD7,
+0x19,0x17,0x12,0xEF,0x56,0xFF,0x76,0xD7,0x1A,0x16,0xD2,0xD6,0x19,0x16,0xB2,0xD6,
+0x1A,0x16,0x92,0xEE,0xF6,0xFF,0x62,0xEF,0x16,0xFF,0x5A,0x98,0x80,0x40,0x77,0xC5,
+0xE7,0xFF,0xE2,0xA6,0xC0,0x60,0xBB,0x8C,0x4A,0xE1,0x01,0xE4,0x00,0x04,0x49,0xC2,
+0xE0,0x10,0x01,0x1F,0x0D,0xFD,0xFE,0xF7,0x06,0x4A,0x27,0x04,0xE7,0x0B,0x17,0x03,
+0x0B,0x37,0x01,0xCF,0x18,0x01,0x2C,0x43,0x18,0xC8,0xD6,0x58,0x14,0xBC,0x0B,0x17,
+0x07,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x03,0x2A,0x12,0xF7,0x00,0x42,0xF8,0xBB,0x53,
+0x00,0x64,0x42,0xF7,0xC0,0x0F,0x0B,0x1A,0xD6,0xF8,0x13,0xCC,0x0E,0xEB,0x12,0xE4,
+0x00,0x01,0x51,0x1F,0x0D,0xFF,0xD3,0x01,0x05,0x65,0x13,0x4A,0x20,0x13,0x2A,0x00,
+0x23,0x44,0x98,0x13,0x0A,0x01,0x43,0x99,0xC5,0x8F,0x38,0x4F,0x7C,0xFA,0x4F,0x39,
+0x0A,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0x5F,0x7B,0x00,0x5F,0x63,0xFB,0x20,0x00,0x1B,
+0x1F,0x39,0x20,0x57,0x39,0x3F,0x9B,0x00,0x1F,0xB9,0x40,0x53,0xC0,0x40,0xE4,0x00,
+0x00,0x63,0x43,0x2A,0xC4,0x13,0x99,0x00,0x43,0x9D,0xE5,0x4F,0x7C,0xFA,0x4F,0x7B,
+0xD1,0x43,0x3C,0xDC,0x57,0x39,0x3F,0x43,0x39,0xDD,0x5F,0x39,0x00,0x5F,0x24,0x13,
+0x20,0x00,0x25,0x43,0x3E,0xCD,0x5F,0x39,0x00,0x9F,0x01,0xD3,0x24,0x10,0x35,0x5F,
+0x78,0x00,0xD7,0x5B,0xFE,0x85,0xE4,0x00,0x04,0x8D,0xC3,0x20,0x10,0x01,0xEF,0x19,
+0x03,0x26,0x13,0x38,0x00,0x0B,0x17,0x09,0x43,0x39,0xC3,0x53,0x00,0x64,0x43,0x39,
+0xC1,0x0B,0x17,0x03,0x43,0x39,0xC3,0x0B,0x17,0x01,0x42,0xF9,0xC0,0x0F,0x0B,0x1E,
+0xD6,0xF8,0x0E,0x8C,0x0E,0xEB,0x16,0xC2,0xE1,0x06,0x8C,0x20,0x07,0x19,0xE4,0x00,
+0x02,0x5F,0xD1,0xA9,0x02,0x46,0xC3,0x40,0x10,0x01,0xF6,0xFA,0x05,0x46,0xD2,0xE3,
+0x0D,0x9C,0xEE,0xF6,0xFF,0x5A,0x50,0x60,0x64,0x42,0x10,0xBD,0xE7,0xFF,0xDF,0xF0,
+0xD4,0x70,0x0D,0x0C,0x12,0xEA,0x20,0xD2,0xE5,0x08,0x31,0x13,0x0A,0x01,0x9F,0x10,
+0x5F,0x18,0x00,0x5F,0x03,0xDB,0x20,0x03,0xDD,0x8E,0xEA,0x12,0xF7,0xFE,0x9E,0xF0,
+0x5E,0xF7,0x00,0x5E,0xE3,0xD3,0xE4,0x00,0x01,0x35,0xD1,0xA5,0x01,0x16,0x40,0x6E,
+0x9D,0xE7,0xFF,0xDF,0xBC,0xC0,0x60,0xA2,0x88,0x20,0x03,0x51,0x12,0xEA,0x00,0x9E,
+0xF8,0x5E,0xF7,0x00,0xD2,0xEE,0x0A,0xE9,0xE4,0x00,0x01,0x8B,0xD1,0xA6,0x03,0xDE,
+0xEF,0x16,0xFF,0x5E,0x40,0x78,0x7D,0xE7,0xFF,0xDF,0x70,0xC0,0x60,0x9C,0x48,0x20,
+0x00,0x79,0x40,0x6E,0x9D,0xE7,0xFF,0xDF,0x54,0xC0,0x60,0x3E,0x6C,0x20,0x00,0x41,
+0x12,0xEA,0x00,0x1E,0xF7,0xD8,0x5E,0xF7,0x00,0xD2,0xEE,0x09,0x41,0xEF,0x36,0xFF,
+0x5E,0x40,0x79,0x75,0xE7,0xFF,0xDF,0x16,0xC0,0x60,0x7D,0x08,0x20,0x02,0x05,0x40,
+0x6F,0x9D,0xE7,0xFF,0xDE,0xFA,0xC0,0x60,0xE0,0xEC,0x20,0x01,0xCD,0x12,0xEA,0x20,
+0x8E,0xEA,0x13,0x17,0xFF,0xD3,0x07,0x00,0x7D,0x12,0xF7,0xFE,0xD2,0xE7,0x07,0xAD,
+0xE4,0x00,0x00,0xBB,0x5F,0x02,0xD3,0x20,0x03,0xA9,0x12,0xF7,0xFE,0x5E,0xE2,0xD3,
+0x20,0x03,0x85,0xE4,0x00,0x00,0x95,0x9A,0xE0,0xD1,0xAB,0x02,0x36,0xEF,0x56,0xFF,
+0x5A,0xD6,0x1A,0x00,0x40,0xD5,0xCF,0x06,0x64,0x41,0xCE,0x7D,0x4C,0x6E,0xFA,0x45,
+0xC3,0x76,0x40,0x6E,0x1D,0xE7,0xFF,0xDE,0x54,0xC0,0x60,0x25,0x6C,0x20,0x00,0x81,
+0xEE,0xF6,0xFF,0x5A,0x98,0x80,0x42,0x10,0xBD,0x4C,0x70,0xFA,0x46,0x03,0x86,0x40,
+0x70,0x1D,0xE7,0xFF,0xDE,0x62,0xC0,0x60,0x25,0x68,0x20,0x02,0x5D,0x9A,0xE0,0xEF,
+0x36,0xFF,0x6A,0x0F,0x11,0x02,0x0F,0x18,0x06,0x8F,0x19,0x0F,0x38,0x0A,0x23,0x25,
+0x92,0x0F,0x4B,0x12,0x23,0x41,0x78,0x0F,0x2B,0x16,0x23,0x21,0x60,0x11,0xD8,0x0C,
+0x13,0xD8,0x0D,0x97,0x63,0x11,0x18,0x0E,0xCB,0x7B,0x34,0x50,0x13,0xB8,0x0F,0x41,
+0xCE,0xDB,0xCF,0x9E,0x07,0xD0,0xCF,0x1D,0x07,0xD0,0xD1,0xAA,0x00,0xAE,0x22,0xE0,
+0x44,0xCF,0x9E,0x46,0x50,0xCF,0x1D,0x46,0x50,0x43,0x9C,0x69,0x43,0x18,0x69,0xCE,
+0xFA,0x07,0xD0,0xD6,0xEE,0x01,0xF5,0xCF,0x5A,0x00,0x14,0xD7,0x9A,0x01,0xB5,0xCE,
+0xF9,0x07,0xD0,0x43,0x68,0xDB,0xD6,0xFB,0x01,0x5D,0xCF,0x39,0x00,0x14,0xD7,0x19,
+0x01,0x1D,0x0E,0xF6,0x96,0x0F,0x56,0x9A,0x0F,0x16,0x92,0x8E,0xFA,0x4E,0xF7,0x0A,
+0xD6,0xF8,0x00,0x88,0x5E,0xF7,0x00,0x0D,0x96,0x80,0x0E,0xF6,0x90,0xEE,0xF6,0xFF,
+0x78,0x9D,0x81,0x5D,0x8C,0x00,0x0E,0xF1,0x02,0x0F,0x17,0x02,0x0B,0x18,0x01,0xD7,
+0x0C,0xC0,0xB5,0xC2,0xE0,0x10,0x01,0xEF,0x36,0xFF,0x7A,0x0C,0x36,0x9E,0xFB,0x37,
+0x05,0x43,0xE7,0xFF,0xE7,0x22,0x98,0x62,0xEF,0x56,0xFF,0x7A,0x23,0x41,0x14,0x0E,
+0xF1,0x02,0x0F,0x36,0x82,0x0F,0x17,0x06,0x0F,0x56,0xA2,0x4E,0xF9,0x20,0x98,0x61,
+0x8E,0xF8,0x12,0xF7,0x05,0x0E,0xFA,0x00,0xE4,0x00,0x00,0x53,0xEF,0x36,0xFF,0x6E,
+0x4F,0x19,0xFA,0x46,0x78,0xCE,0x42,0x73,0xC5,0x4F,0x12,0xFA,0x46,0x58,0x96,0x42,
+0x52,0xC5,0x4E,0x52,0x12,0xFE,0x52,0x01,0x2C,0xD6,0x72,0xFC,0xC4,0xE7,0xFF,0xFB,
+0x3B,0x0C,0x36,0xA6,0x0E,0xC1,0x72,0x0E,0xA1,0x76,0x0E,0x81,0x7A,0x0E,0x61,0x7E,
+0xEE,0x41,0x00,0x82,0xEE,0x21,0x00,0x86,0xEE,0x01,0x00,0x8A,0xED,0xE1,0x00,0x8E,
+0xED,0xC1,0x00,0x92,0xED,0xA1,0x00,0x96,0xED,0x81,0x00,0x9A,0xED,0x61,0x00,0x9E,
+0xED,0x41,0x00,0xA2,0xED,0x21,0x00,0xA6,0xFC,0x21,0x00,0xA8,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0x9C,0x38,0xEC,0x77,0x06,0x60,0x0D,0x21,0x04,0x0D,0x41,0x00,0x08,0x61,
+0x09,0xC1,0x40,0x10,0x01,0xEC,0x8A,0x06,0x4B,0xFD,0x4A,0x06,0x4A,0x0C,0xAA,0x03,
+0x0C,0xCA,0x07,0x0C,0xEA,0x09,0x19,0x0A,0x04,0xE7,0xFF,0xDA,0xF6,0x0D,0x21,0x06,
+0x0C,0x6A,0x0B,0x0D,0x41,0x02,0x9C,0x28,0x85,0x29,0x9C,0x30,0x5C,0x63,0x00,0x0D,
+0x41,0x08,0x0D,0x61,0x04,0x4C,0x63,0x08,0xC2,0xF8,0x00,0x21,0x0D,0x21,0x0C,0xFE,
+0xF7,0xB7,0x22,0x99,0x40,0x8E,0xE3,0x09,0x77,0x01,0x88,0x6A,0x88,0x8B,0x9D,0x41,
+0xE4,0x00,0xB7,0xC4,0x5D,0x4A,0x00,0xD1,0x44,0xFF,0x9E,0x0D,0x61,0x06,0x0D,0x41,
+0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,
+0x71,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0x76,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,
+0x6E,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0x72,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,
+0x79,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0x75,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,
+0x7C,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,0x71,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x06,0x6E,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,0x76,0xC2,0xE0,0x10,0x01,0xF8,
+0x77,0x06,0x72,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0x79,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x06,0x75,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0x7C,0x24,0x6C,0x1F,0xE7,0xFF,
+0xFE,0x99,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0x5C,0x63,0x04,0xEC,
+0x77,0x06,0x75,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0x7C,0xF3,0x78,0x06,0x6E,0xC3,
+0x40,0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,0x00,0x10,0x01,0xFF,0x5A,0x06,0x76,0xFF,
+0x39,0x06,0x72,0x23,0x60,0x2C,0xEB,0x78,0x06,0x79,0xD7,0x63,0x00,0xA1,0x13,0x5A,
+0x00,0xEC,0x78,0x06,0x79,0x1B,0x59,0x00,0x9B,0x01,0xEF,0x17,0x06,0x7C,0x85,0x29,
+0xC2,0xE0,0x10,0x01,0xEB,0x17,0x06,0x75,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x06,0x71,
+0x5E,0xF8,0x1F,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0x6E,
+0x5E,0xE0,0x5B,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x06,0x6E,
+0x27,0x08,0x7B,0x9F,0x01,0xFB,0x17,0x06,0x6E,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,
+0x76,0x9C,0x61,0x54,0x63,0x03,0xF8,0x77,0x06,0x76,0xE7,0xFF,0xFD,0x61,0x85,0x29,
+0x8B,0x03,0x56,0xE3,0x03,0x22,0xE0,0x98,0x9B,0x04,0x42,0xF8,0xBD,0x5F,0x44,0x00,
+0x5E,0xE5,0x17,0x4B,0x37,0x28,0x9A,0xE0,0xE4,0x00,0x00,0x13,0x1B,0x58,0x00,0x9E,
+0xE1,0x43,0x03,0xBC,0xD6,0xF9,0xFF,0xC6,0x40,0xA5,0xBD,0x4E,0xE4,0x80,0x4F,0x64,
+0xC0,0x47,0x7B,0xBD,0x4E,0xE4,0x40,0x47,0x7B,0x25,0x4F,0x45,0x11,0x47,0x7B,0xBD,
+0x9A,0xE0,0xE4,0x00,0x00,0x17,0x8F,0x38,0x9E,0xE1,0x0F,0x79,0x00,0x4F,0x37,0x10,
+0xD6,0xFA,0xFF,0xB6,0x8F,0x19,0x9A,0xE0,0x54,0xA5,0x03,0x5C,0x84,0x00,0xE4,0x00,
+0x00,0x19,0x43,0x37,0xC4,0x9E,0xE1,0x18,0x99,0x00,0xD4,0xB7,0xFF,0xC5,0x85,0x29,
+0x46,0xE4,0x1D,0x56,0xF7,0x03,0x22,0xE0,0x82,0x9A,0xFC,0x47,0x45,0xBC,0x9A,0xE0,
+0xE4,0x00,0x00,0x51,0x43,0x03,0xBC,0x43,0x24,0xBC,0x9E,0xE1,0x13,0x39,0x00,0x1B,
+0x38,0x00,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0xD6,0xE5,0xFF,0x66,0xE4,0x00,0x00,0x63,
+0x0F,0x39,0x02,0x9E,0xE4,0x0F,0x38,0x00,0x43,0x03,0xBC,0x43,0x24,0xBC,0xD6,0xFA,
+0xFF,0x96,0x9A,0xE0,0x54,0xA5,0x03,0xE4,0x00,0x00,0x25,0x43,0x57,0xC4,0x43,0x77,
+0xCC,0x9E,0xE1,0x13,0x7B,0x00,0x1B,0x7A,0x00,0xD4,0xB7,0xFF,0x95,0x85,0x29,0x9C,
+0x30,0x0D,0x41,0x08,0x0D,0x61,0x04,0x0D,0x21,0x0C,0x89,0x63,0x99,0x40,0xE4,0x00,
+0x20,0xCA,0x20,0x64,0xD2,0xE4,0x00,0x22,0xF6,0x20,0x64,0x82,0xE4,0x00,0x22,0xD4,
+0xC2,0xE0,0x10,0x01,0xFF,0x20,0xFF,0x7F,0xEB,0x17,0x08,0x87,0x99,0x41,0x47,0x18,
+0xCC,0xEF,0x17,0x08,0x87,0xE4,0x00,0x00,0x23,0xE4,0x00,0x22,0xEA,0x20,0x67,0x7C,
+0x88,0x6B,0xE4,0x00,0x22,0x4A,0x88,0x6A,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,
+0x0E,0x1C,0x21,0x10,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x21,0x2C,0x0D,0x41,0x28,0x0D,
+0x61,0x24,0x0D,0x81,0x20,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,0x0D,0xE1,0x14,0x0E,0x01,
+0x10,0x0E,0x21,0x0C,0x0E,0x41,0x08,0x0E,0x61,0x04,0xE4,0x00,0x68,0x1A,0xC1,0x80,
+0x10,0x01,0xC0,0x60,0x00,0x21,0xFD,0x4C,0x00,0xD4,0xFC,0x63,0xB0,0xE4,0xC0,0x80,
+0x10,0x01,0xC0,0xA0,0x10,0x01,0xFC,0x84,0x00,0x00,0xFC,0xA5,0x03,0x80,0x40,0xA5,
+0x25,0xE4,0x00,0x63,0x5E,0x0C,0x0A,0x01,0x0C,0x0A,0x03,0x0C,0x0A,0x05,0x0C,0x0A,
+0x08,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x00,0xC3,0x0C,0x0A,0x0C,0x9A,0xEA,0xC1,0xC0,
+0x10,0x01,0x0E,0xEA,0x11,0xEC,0x0E,0x06,0x8C,0x50,0x60,0x26,0xE4,0x00,0x22,0xE4,
+0xC8,0x80,0xE1,0x00,0x98,0x60,0xE4,0x00,0x31,0x9C,0x98,0x63,0xE4,0x00,0x30,0x24,
+0xE4,0x00,0x07,0x2A,0xC2,0xE0,0x10,0x01,0x9B,0x3C,0xF3,0x17,0x08,0x19,0x47,0x18,
+0xCC,0xFC,0x60,0x0B,0xB8,0xFB,0x17,0x08,0x19,0x05,0x60,0x5B,0xC9,0x6B,0x8D,0x80,
+0x88,0x8B,0xE4,0x00,0x30,0x5C,0x98,0x61,0xC2,0x58,0x00,0x21,0x8A,0x6B,0xC1,0x80,
+0x10,0x01,0xC1,0xA0,0x10,0x01,0xC1,0x60,0x10,0x01,0xE4,0x00,0x30,0x34,0xC2,0x00,
+0x10,0x01,0xC1,0xE0,0x10,0x01,0xC2,0x20,0x10,0x01,0xFE,0x52,0xB7,0x2C,0xFD,0x8C,
+0x06,0x86,0xFD,0xAD,0x08,0x86,0xFD,0x6B,0x06,0x80,0xE4,0x00,0x2F,0xE4,0x0E,0xEA,
+0x0E,0x22,0xE5,0xA0,0x22,0xE0,0x2C,0xD2,0xE2,0x18,0x9E,0xE4,0x00,0x02,0x5F,0xE4,
+0x00,0x62,0x0A,0xE4,0x00,0x2F,0xFA,0x0C,0x6A,0x13,0xE4,0x00,0x2F,0xEC,0x0C,0x6A,
+0x17,0xE4,0x00,0x2F,0xDE,0x0C,0x6A,0x1B,0xE4,0x00,0x2F,0xD0,0x0C,0x6A,0x19,0x0A,
+0xEC,0x01,0xC6,0xF7,0xFF,0xDF,0x0E,0xEC,0x01,0x0A,0xEC,0x01,0xC6,0xF7,0xFF,0x7F,
+0x0E,0xEC,0x01,0x9A,0xE1,0x0E,0xEA,0x0C,0x0A,0xED,0x01,0x52,0xF7,0x80,0xEC,0x0E,
+0x06,0x8C,0x0E,0xED,0x01,0x98,0x61,0xE4,0x00,0x1D,0x3A,0x98,0x60,0xE4,0x00,0x37,
+0x1A,0xE4,0x00,0x31,0xEA,0xE4,0x00,0x05,0x6B,0xEE,0xF0,0x06,0x8A,0x22,0xE4,0x4E,
+0x9A,0xE2,0x0E,0xEA,0x0C,0x0C,0x0B,0x00,0xEC,0x10,0x06,0x88,0xE4,0x00,0x05,0x3D,
+0xEE,0xEE,0x06,0x8E,0x22,0xE0,0x2C,0xD2,0xE1,0x14,0x9E,0xE4,0x00,0x00,0x3D,0x98,
+0x61,0xE7,0xFF,0xFC,0x5C,0xD0,0x61,0x14,0x2E,0xEC,0x0F,0x08,0x60,0xEC,0x6E,0x06,
+0x8C,0xE4,0x00,0x69,0x6E,0xE4,0x00,0x02,0xBB,0x0A,0xEA,0x01,0xC6,0xF7,0x01,0x00,
+0xD2,0xE0,0x13,0x52,0xE4,0x00,0x2E,0xB8,0x0A,0xEA,0x13,0x0B,0x0A,0x11,0x40,0x63,
+0xBD,0x5E,0xE3,0x04,0xD7,0x17,0x12,0xB5,0xE4,0x00,0x2E,0x90,0x0C,0x6A,0x13,0x0A,
+0xEA,0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0xE4,0x00,0x63,0x44,0xE4,0x00,0x69,
+0x66,0xE4,0x00,0x68,0x96,0xEE,0xEF,0x08,0x62,0xEE,0xF1,0x08,0x8C,0xE4,0x00,0x64,
+0x30,0x98,0x61,0xE4,0x00,0x98,0x5A,0xE4,0x00,0x64,0xA8,0x98,0x61,0xE4,0x00,0x65,
+0x00,0xE4,0x00,0x66,0x40,0xE4,0x00,0x88,0x52,0x0A,0xED,0x01,0x56,0xF7,0x80,0xD2,
+0xE0,0x10,0x5A,0x0A,0xEA,0x01,0xC6,0xF7,0x01,0x00,0x22,0xE3,0xE4,0x0A,0xEA,0x01,
+0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0x9A,0xE1,0x0E,0xEA,0x0C,0xEC,0x0E,0x06,0x8C,
+0x98,0x61,0xE4,0x00,0x1B,0x84,0xE4,0x00,0x03,0xC9,0x0E,0xEB,0x02,0xD2,0xE4,0x0E,
+0xED,0x4E,0xF7,0x10,0x8E,0xF2,0x0E,0xF7,0x02,0x86,0xE9,0x0A,0xEC,0x01,0xC6,0xF7,
+0xFF,0xDF,0x0E,0xEC,0x01,0x0A,0xEC,0x01,0xC6,0xF7,0xFF,0x7F,0xFF,0x00,0xFF,0x7F,
+0x0E,0xEC,0x01,0x0A,0xED,0x01,0x46,0xF7,0xC4,0x0E,0xED,0x01,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x48,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x9C,0xC2,0xE0,0x10,0x01,
+0xEC,0x17,0x08,0x33,0xC2,0xE0,0x10,0x01,0x9B,0x3E,0xF3,0x17,0x08,0x1A,0x47,0x18,
+0xCC,0xFB,0x17,0x08,0x1A,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x50,0xE4,0x00,0x59,
+0x4A,0xE4,0x00,0x66,0x28,0x98,0x62,0xE4,0x00,0x2C,0x52,0x50,0x60,0x40,0xE4,0x00,
+0x2C,0x64,0x50,0x60,0x19,0xE4,0x00,0x63,0x80,0xE4,0x00,0x04,0x04,0x50,0x60,0xC8,
+0xE4,0x00,0x2C,0xC4,0xE4,0x00,0x6B,0xA6,0x50,0x60,0x40,0xE4,0x00,0x63,0x4C,0xC8,
+0x80,0x7D,0x00,0xFC,0x60,0x0B,0xB8,0xE4,0x00,0x2C,0x32,0xFC,0x60,0x06,0x00,0xE4,
+0x00,0x63,0x34,0xE4,0x00,0x03,0xC0,0xE4,0x00,0x02,0x5D,0x98,0x60,0xE7,0xFF,0xF9,
+0xA4,0xD0,0x61,0x09,0x4E,0x9A,0xE2,0xEC,0x0F,0x08,0x60,0x0E,0xEB,0x00,0xE4,0x00,
+0x67,0x14,0xE4,0x00,0x66,0x54,0xE4,0x00,0x02,0x29,0x0A,0xEA,0x01,0xC6,0xF7,0x01,
+0x00,0xD2,0xE0,0x05,0x8A,0x0A,0xEA,0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0xE4,
+0x00,0x03,0x48,0x98,0x60,0x98,0x80,0xE4,0x00,0x2B,0x3A,0xFC,0x60,0x0B,0xB8,0xC8,
+0x80,0x7D,0x00,0xE4,0x00,0x2B,0x7A,0xE4,0x00,0x2B,0xA2,0xFC,0x60,0x0B,0xB8,0x88,
+0x93,0xE4,0x00,0x2B,0x5E,0x98,0x81,0x98,0x60,0xE4,0x00,0x2A,0xF6,0xE4,0x00,0x02,
+0xE4,0x98,0x62,0xE4,0x00,0x2B,0x72,0xE4,0x00,0x2B,0x72,0x0C,0x6A,0x13,0x0A,0xEA,
+0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0xE4,0x00,0x60,0x26,0xE4,0x00,0x61,0x32,
+0xE4,0x00,0x95,0xAA,0x98,0x80,0x98,0x64,0xE4,0x00,0x48,0xEC,0xE4,0x00,0x65,0x60,
+0xEE,0xEF,0x08,0x62,0xEE,0xF1,0x08,0x8C,0xE4,0x00,0x61,0x86,0x98,0x60,0xE4,0x00,
+0x61,0xDE,0xE4,0x00,0x63,0x1E,0xE4,0x00,0x85,0x30,0x0A,0xED,0x01,0x56,0xF7,0x80,
+0x22,0xE0,0x88,0x0A,0xEA,0x01,0xC6,0xF7,0x01,0x00,0x22,0xE3,0xE4,0x0A,0xEA,0x01,
+0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0x9A,0xE1,0x98,0x60,0x0E,0xEB,0x00,0xE4,0x00,
+0x18,0x6C,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x31,0x5E,0xEB,0x01,0x20,0x00,0x29,
+0x1E,0xF7,0xA0,0xD2,0xEB,0x02,0x3D,0x9A,0xE3,0xE4,0x00,0x00,0x7D,0x98,0x63,0xE4,
+0x00,0x32,0x16,0xE4,0x00,0x2C,0xE6,0xE4,0x00,0x2A,0x52,0x9A,0xE4,0x0C,0x6A,0x17,
+0xE4,0x00,0x00,0x4F,0xE4,0x00,0x2A,0x38,0x0A,0xEA,0x17,0x40,0x63,0xBD,0x5E,0xE3,
+0x04,0xC2,0xE0,0x7C,0xEA,0x20,0x00,0x55,0x98,0x60,0xE4,0x00,0x29,0x32,0xE4,0x00,
+0x2A,0x04,0x0C,0x6A,0x17,0x9A,0xE2,0x0E,0xEB,0x00,0x0E,0xEA,0x0A,0xFC,0x60,0x1E,
+0x7F,0x9E,0xE1,0x0E,0xEA,0x08,0x0C,0x8A,0x0A,0xE4,0x00,0x2B,0xA6,0xE4,0x00,0x2A,
+0x76,0xE7,0xFF,0xF9,0x93,0xE4,0x00,0xAB,0xCB,0x9C,0x38,0x0D,0x21,0x04,0x0D,0x41,
+0x00,0xE4,0x00,0xAD,0x26,0x98,0x6D,0xE4,0x00,0x9D,0xA0,0x98,0x60,0xFC,0x80,0x3E,
+0x0C,0xE4,0x00,0x9F,0xE4,0x98,0x61,0xFC,0x80,0x3E,0x0C,0xE4,0x00,0x9F,0xD0,0x98,
+0x60,0x50,0x80,0x14,0xE4,0x00,0xA4,0xCA,0x98,0x60,0x98,0x8C,0xE4,0x00,0xA3,0xEC,
+0x98,0x61,0x50,0x80,0x14,0xE4,0x00,0xA4,0xA8,0x98,0x61,0x98,0x8C,0x99,0x40,0xE4,
+0x00,0xA3,0xC6,0x88,0x6A,0x98,0x80,0x9D,0x41,0xE4,0x00,0xAA,0x32,0x5D,0x4A,0x00,
+0xD1,0x44,0xFF,0x9E,0x98,0x60,0x05,0x40,0xFF,0xC9,0x4A,0xFF,0xFF,0x88,0x8A,0xE4,
+0x00,0xA2,0x20,0x88,0x8A,0x98,0x60,0xE4,0x00,0x9F,0xA8,0x88,0x8A,0x0D,0x21,0x06,
+0x0D,0x41,0x02,0x98,0x60,0x9C,0x28,0xE4,0x00,0xA0,0x89,0xE4,0x00,0xAC,0x75,0xE4,
+0x00,0xAE,0x19,0xE4,0x00,0xAF,0x45,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0x9C,0x1C,
+0x21,0xB0,0x0E,0xE1,0x10,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x06,0x90,0x0D,0x41,0x4C,
+0x0D,0x61,0x48,0x0D,0x81,0x44,0x0D,0xE1,0x38,0x0E,0x01,0x34,0x0E,0x21,0x30,0x0E,
+0x41,0x2C,0x0E,0x61,0x28,0x0E,0x81,0x24,0x0D,0xA1,0x40,0x0D,0xC1,0x3C,0x0E,0xA1,
+0x20,0x0E,0xC1,0x1C,0x0E,0xE1,0x0C,0xC2,0x60,0x10,0x01,0xC2,0x40,0x10,0x01,0xFE,
+0x73,0x06,0xB0,0xFE,0x52,0x06,0xA8,0xC2,0x20,0x10,0x01,0xC2,0x00,0x10,0x01,0xFE,
+0x31,0x06,0xA0,0xFE,0x10,0x06,0xB4,0xC1,0xE0,0x10,0x01,0xC1,0x8F,0xFF,0xE1,0xFD,
+0xEF,0x06,0xAC,0x9B,0x80,0xC2,0x98,0x00,0x21,0xC0,0xD8,0x00,0x21,0x13,0x53,0x00,
+0x0E,0xF2,0x02,0x0D,0x51,0x02,0x0F,0xB0,0x02,0x0F,0x6F,0x02,0x99,0x60,0xC9,0x8C,
+0xFF,0xFF,0x88,0xFC,0x53,0x20,0xFF,0xFE,0x94,0xB8,0xA6,0xFC,0xC6,0xB8,0xAC,0xE4,
+0x00,0x01,0xC5,0x41,0x14,0xC4,0x9F,0x01,0x11,0x08,0x00,0x8D,0xA8,0x5D,0xAD,0x00,
+0xE4,0x00,0x00,0x11,0x9B,0x00,0x89,0xB8,0x5D,0x18,0x00,0xD7,0xC8,0xFF,0x45,0xC3,
+0x18,0x00,0x21,0xFF,0x18,0xB8,0xA6,0x8F,0x0B,0x99,0x00,0x12,0xB8,0x00,0xCF,0x0D,
+0x00,0x0A,0x1E,0xD5,0xFF,0x8F,0x06,0x0E,0xC1,0x08,0x0F,0x01,0x14,0xE4,0x00,0x01,
+0x37,0x0F,0x01,0x16,0xCD,0xE8,0x00,0x0A,0x8D,0xF8,0x0A,0xCF,0x00,0x0E,0xC1,0x04,
+0x0F,0x01,0x0E,0x0E,0xC1,0x0A,0xD5,0x16,0x00,0x3A,0x0B,0x0F,0x0A,0x0D,0xE1,0x06,
+0xD5,0xE4,0x03,0xB4,0xD4,0x98,0x03,0x94,0x8D,0xCD,0x5D,0xCE,0x00,0xCF,0x0E,0x00,
+0x0A,0x8F,0x06,0x09,0xF8,0x06,0x0B,0x18,0x08,0x4F,0x18,0x50,0x41,0xEF,0x23,0x8D,
+0xF8,0xFD,0xEF,0x02,0x00,0x4D,0xEF,0x52,0x5D,0xEF,0x06,0x41,0xEF,0x7B,0x43,0x03,
+0x7D,0x4E,0xD8,0xFA,0x47,0x16,0xC6,0x43,0x18,0xB5,0xD7,0x0C,0x01,0x4C,0xC3,0x20,
+0x1F,0xE4,0x20,0x00,0x2D,0x89,0x5D,0x89,0x97,0x8B,0x3A,0x88,0xFC,0x8B,0xAA,0x8A,
+0xEC,0x8B,0x59,0x8B,0x87,0x8B,0x78,0x89,0x4F,0x89,0x98,0x88,0xEE,0x8B,0x3E,0xE4,
+0x00,0x00,0x2F,0xC3,0x40,0x1F,0xE0,0x20,0x00,0x1D,0xD6,0xF8,0x00,0x60,0x8B,0xAF,
+0x8A,0xF8,0x8B,0x5E,0x8B,0x8E,0x9D,0x01,0x5D,0xC8,0x00,0xD6,0xAE,0xFB,0x35,0x9D,
+0x61,0x5F,0xCB,0x00,0x0E,0xC1,0x12,0xD6,0xDE,0xF9,0x6D,0xC3,0x00,0x10,0x01,0x1B,
+0x53,0x00,0xFF,0x18,0x06,0xAC,0x0E,0xF2,0x00,0x0D,0x51,0x00,0x0F,0xB0,0x00,0x0F,
+0x78,0x00,0xC3,0x20,0x1F,0xE0,0x20,0x01,0x55,0xCF,0x9C,0x00,0x0A,0xCC,0xE7,0x00,
+0x0A,0x8C,0xE6,0x0B,0x07,0x04,0x4F,0x18,0x50,0x8C,0xDC,0x08,0x67,0x02,0x0B,0x86,
+0x02,0x40,0x63,0x23,0x0B,0x46,0x04,0x8C,0x78,0x43,0x1B,0xBC,0xFC,0x63,0x02,0x00,
+0x4C,0x63,0x52,0x23,0x00,0xA8,0xC2,0xE0,0x1F,0xE0,0x20,0x00,0x8D,0x40,0x63,0xBB,
+0x40,0x9C,0x23,0x4E,0xFA,0x50,0x8E,0xE4,0xFE,0xF7,0x02,0x00,0x4E,0xF7,0x52,0x43,
+0x77,0xDB,0x8C,0x7B,0x40,0x63,0xC0,0xE4,0x00,0x00,0x0D,0x88,0x64,0x0E,0xC1,0x1E,
+0x0E,0xA1,0x22,0x0E,0x81,0x26,0x0E,0x61,0x2A,0x0E,0x41,0x2E,0x0E,0x21,0x32,0x0E,
+0x01,0x36,0x0D,0xE1,0x3A,0x0D,0xC1,0x3E,0x0D,0xA1,0x42,0x0D,0x81,0x46,0x0D,0x61,
+0x4A,0x0D,0x41,0x4E,0x1B,0x25,0x00,0x1C,0x21,0x50,0x85,0x29,0x8B,0x23,0xC2,0xE0,
+0x10,0x01,0x5C,0xA5,0x00,0xF2,0xF7,0x06,0x9C,0x98,0x60,0xD6,0xE5,0x0C,0xB9,0xD3,
+0x3F,0x0C,0x98,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,0x01,0xF2,
+0xF7,0x06,0x95,0xFF,0x18,0x06,0x93,0xFF,0x7B,0x06,0x94,0x22,0xE8,0x42,0x13,0x18,
+0x00,0x5F,0x08,0x9B,0x20,0x00,0x51,0xE4,0x00,0x01,0x3B,0xD2,0xE1,0x04,0xCE,0x13,
+0x18,0x00,0x5F,0x05,0x93,0x20,0x02,0x3D,0x24,0xA4,0x4B,0x9B,0x43,0x43,0x5A,0x2D,
+0x4F,0x5A,0x08,0x5F,0x5A,0x00,0xE4,0x00,0x00,0x37,0x20,0xA8,0x54,0x9B,0x44,0x43,
+0x5A,0x2D,0x4F,0x5A,0x08,0x5F,0x5A,0x00,0x20,0xAC,0xEE,0xE4,0x00,0x00,0x51,0x9B,
+0x43,0x9A,0xE0,0x13,0x9B,0x00,0x8B,0x17,0xE4,0x00,0x00,0x27,0x4F,0xB8,0x08,0x9F,
+0x01,0x8F,0xBC,0x5F,0x18,0x00,0x8E,0xFD,0x5E,0xF7,0x00,0xD7,0x05,0xFF,0x8E,0xE4,
+0x00,0x00,0x49,0x5E,0xE0,0x21,0x53,0x00,0x1D,0x52,0xE0,0x2F,0x4A,0xF8,0xB8,0xE4,
+0x00,0x00,0x4B,0x5E,0xE0,0x29,0x53,0x00,0x41,0x52,0xE0,0x29,0x4A,0xF8,0xB8,0xE4,
+0x00,0x00,0x2B,0x27,0x04,0x33,0x9F,0x9F,0x4F,0x18,0x08,0xE4,0x00,0x00,0x8B,0x9B,
+0x0A,0x20,0xA9,0x10,0x13,0x1B,0x00,0x9C,0xBF,0x9F,0x1F,0x4C,0xA5,0x08,0x8F,0x05,
+0xE4,0x00,0x00,0x65,0x9B,0x43,0x13,0xBB,0x00,0x43,0x5A,0x2D,0x9A,0xE0,0x4F,0x5A,
+0x08,0x8B,0x77,0x5F,0x5A,0x00,0xE4,0x00,0x00,0x21,0x8F,0x9D,0x9F,0x61,0x8E,0xFC,
+0x5F,0x7B,0x00,0x5E,0xF7,0x00,0x4F,0x9B,0x08,0xD7,0x65,0xFF,0x8E,0x1F,0x1D,0xFF,
+0x8F,0x1C,0x5F,0x18,0x00,0x4F,0x5A,0x08,0xC3,0xB8,0x00,0x21,0xFF,0xBD,0xB7,0x40,
+0x8F,0xBA,0x9B,0x40,0xE4,0x00,0x01,0x0B,0x4F,0x7A,0x08,0x8F,0x7D,0x0B,0x9B,0x00,
+0xD7,0x3C,0x03,0xBC,0x0B,0x7B,0x02,0xD7,0x79,0x03,0x84,0x8E,0xFA,0xC3,0xB8,0x00,
+0x21,0xCF,0x17,0x00,0x06,0xFF,0xBD,0xB7,0x5C,0x8F,0x1D,0x1F,0x57,0x01,0x14,0xD8,
+0x00,0xCF,0x5A,0x00,0x06,0x09,0x18,0x02,0x8F,0x5D,0x98,0x60,0x0B,0xB8,0x04,0x14,
+0xBA,0x00,0x0B,0xDA,0x02,0x0B,0x1A,0x04,0xD7,0x9B,0x02,0x52,0x42,0xF9,0xDD,0x40,
+0x77,0x33,0x43,0x3C,0xCD,0x43,0x59,0x2B,0x43,0xD9,0xF3,0x8F,0x43,0x40,0x77,0x43,
+0x43,0x5A,0x23,0x8C,0x7E,0x8C,0x7A,0x42,0xF7,0xEB,0x40,0x83,0x23,0x97,0x41,0x43,
+0x39,0xC3,0xCB,0x5A,0x86,0xA0,0x8F,0x37,0x40,0x64,0xD0,0x43,0x7C,0xDD,0x8C,0x79,
+0x40,0x63,0xD8,0xE4,0x00,0x00,0x1F,0x9F,0x41,0x5F,0x7A,0x00,0xD7,0x1B,0xFB,0xE5,
+0x98,0x60,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x06,0x95,0xC2,0xE0,0x10,0x01,
+0xF8,0x97,0x06,0x92,0xC2,0xE0,0x10,0x01,0xF8,0xB7,0x06,0x93,0xC2,0xE0,0x10,0x01,
+0xF8,0xD7,0x06,0x94,0xC2,0xE0,0x10,0x01,0xEC,0xF7,0x06,0x91,0x85,0x29,0x9A,0xFF,
+0x1C,0x21,0xD8,0x0D,0xE1,0x0C,0x1A,0xE1,0x07,0xC1,0xE0,0x10,0x01,0xFD,0xEF,0x06,
+0xB0,0x1A,0xEF,0x00,0x52,0xE0,0xFF,0xC3,0x00,0x10,0x01,0x0D,0x41,0x20,0x0D,0x61,
+0x1C,0x0D,0xA1,0x14,0x0D,0xC1,0x10,0xCB,0x20,0xFF,0xFF,0xC1,0xC0,0x10,0x01,0xEF,
+0x38,0x06,0xB8,0xFD,0xCE,0x06,0xAC,0xC1,0xA0,0x10,0x01,0x0E,0xEE,0x00,0xFD,0xAD,
+0x06,0xA8,0x0D,0x21,0x24,0x0E,0xED,0x00,0x0D,0x81,0x18,0xC2,0xE0,0x10,0x01,0x0E,
+0x01,0x08,0x89,0x63,0xF3,0x17,0x06,0x95,0x89,0x44,0x88,0x65,0xC2,0xE0,0x10,0x01,
+0x23,0x08,0x56,0xC3,0x00,0x10,0x01,0xF3,0x18,0x06,0x93,0x5F,0x08,0x9B,0x20,0x00,
+0x61,0xE4,0x00,0x00,0x37,0x23,0x04,0x5E,0xC3,0x00,0x10,0x01,0xF3,0x18,0x06,0x93,
+0x5F,0x05,0x93,0x20,0x00,0x25,0x9B,0x05,0xE4,0x00,0x00,0x0D,0x9B,0x04,0xFB,0x17,
+0x06,0x9C,0xC2,0x00,0x10,0x01,0x0E,0xEB,0x02,0xEE,0xF0,0x06,0xB8,0x0A,0xE6,0x06,
+0x0C,0x8B,0x02,0xD4,0x97,0x04,0xCC,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x71,0x53,
+0x18,0x01,0x1C,0xA1,0x07,0xEF,0x17,0x08,0x71,0xE7,0xFF,0xF6,0x9C,0x0C,0x6B,0x00,
+0x0C,0x8A,0x02,0xED,0x90,0x06,0xBA,0x10,0xAF,0x00,0x88,0x6C,0xE7,0xFF,0xFA,0xC0,
+0xC2,0xE0,0x10,0x01,0x89,0x63,0xEC,0x77,0x06,0x98,0x10,0xA1,0x07,0x0C,0x8A,0x02,
+0x88,0x6C,0xE7,0xFF,0xFA,0x94,0xC3,0x00,0x10,0x01,0xEC,0x78,0x06,0xA4,0x0F,0x6E,
+0x02,0x0F,0x2D,0x02,0x0F,0x4A,0x02,0x43,0x1B,0xCC,0x23,0x00,0xEC,0xC3,0x20,0x1F,
+0xE0,0x20,0x00,0xD1,0xC3,0x80,0x10,0x01,0xEF,0xBC,0x06,0xA2,0xC3,0x80,0x10,0x01,
+0xEF,0x9C,0x06,0xB6,0x43,0xBD,0xE5,0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,0x9D,0xE5,
+0xD7,0x1C,0x00,0xAC,0x41,0x6B,0xDB,0x42,0xE3,0xCB,0x8E,0xEB,0x43,0x17,0xC0,0x8F,
+0x58,0xE4,0x00,0x01,0x55,0x42,0xFA,0x1C,0xE4,0x00,0x01,0x5B,0xC9,0x80,0x07,0xFF,
+0x42,0xEC,0xBD,0xD6,0xE4,0x05,0x2C,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x71,0x53,
+0x18,0x01,0x40,0x8C,0x25,0xEF,0x17,0x08,0x71,0x1C,0xA1,0x07,0xE7,0xFF,0xF5,0x56,
+0x40,0x6C,0x1D,0x0C,0x6B,0x00,0xEE,0xF0,0x06,0xBA,0x0C,0x8A,0x02,0x41,0x8C,0xBD,
+0x10,0xAF,0x00,0x88,0x6C,0xE7,0xFF,0xF9,0x6E,0xC2,0xE0,0x10,0x01,0x89,0x63,0xEC,
+0x77,0x06,0x98,0x10,0xA1,0x07,0x0C,0x8A,0x02,0x88,0x6C,0xE7,0xFF,0xF9,0x42,0xC3,
+0x00,0x10,0x01,0xEC,0x78,0x06,0xA4,0x0F,0x6E,0x02,0x0F,0x2D,0x02,0x0F,0x4A,0x02,
+0x43,0x1B,0xCC,0x23,0x00,0xFC,0xC3,0x20,0x1F,0xE0,0x20,0x00,0xE1,0xC3,0x80,0x10,
+0x01,0xEF,0xBC,0x06,0xA2,0xC3,0x80,0x10,0x01,0xEF,0x9C,0x06,0xB6,0x43,0xBD,0xE5,
+0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,0x9D,0xE5,0xD7,0x1C,0x00,0xCC,0x41,0x6B,0xDB,
+0x42,0xE3,0xCB,0x8E,0xEB,0x43,0x17,0xC0,0x43,0x5A,0xC5,0x0F,0x4A,0x00,0xE4,0x00,
+0x00,0x15,0x42,0xFA,0x1D,0x0E,0xEA,0x00,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,
+0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,
+0x1C,0x21,0x28,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,0x61,0x24,0x0D,0x81,
+0x20,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,0x0D,0xE1,0x14,0x0E,0x01,0x10,0x0E,0x21,0x0C,
+0x0E,0x41,0x08,0x5E,0x23,0x00,0x0E,0x61,0x04,0x56,0x11,0x03,0x4E,0xF1,0x11,0x5E,
+0x00,0x09,0x99,0xC0,0x4A,0x41,0x01,0x99,0x80,0x9A,0x64,0x0D,0x21,0x2C,0x8E,0x57,
+0x89,0x44,0x89,0xAE,0x89,0x6C,0x99,0xE0,0x42,0x73,0x25,0xE4,0x00,0x00,0xF3,0x42,
+0xF3,0x54,0xD6,0xF1,0x01,0xD8,0x22,0x04,0x4A,0x51,0xC0,0x10,0x11,0x6A,0x00,0x89,
+0xAE,0x51,0x80,0x10,0xE4,0x00,0x00,0x6B,0x22,0x08,0x4A,0x51,0xC0,0x10,0x11,0x6A,
+0x00,0x11,0x8A,0x01,0x89,0xAE,0xE4,0x00,0x00,0x47,0x22,0x0C,0x7E,0x11,0x6A,0x00,
+0x11,0x8A,0x01,0x11,0xAA,0x02,0x51,0xC0,0x10,0xE4,0x00,0x00,0x21,0x11,0x6A,0x00,
+0x11,0x8A,0x01,0x11,0xAA,0x02,0x11,0xCA,0x03,0x4E,0xEC,0x80,0x4C,0x8C,0xC0,0x8C,
+0x97,0x4E,0xEE,0x80,0x4F,0x0B,0x40,0x4C,0xAE,0xC0,0x8C,0xB7,0x4E,0xED,0x40,0x88,
+0x6F,0x8C,0x8B,0x8C,0xAD,0x8C,0x98,0x8C,0xB7,0x9D,0xE1,0xE4,0x00,0x90,0x48,0x5D,
+0xEF,0x00,0x9D,0x44,0xD5,0xF2,0xFC,0x5E,0x0E,0x61,0x06,0x0E,0x41,0x0A,0x0E,0x21,
+0x0E,0x0E,0x01,0x12,0x0D,0xE1,0x16,0x0D,0xC1,0x1A,0x0D,0xA1,0x1E,0x0D,0x81,0x22,
+0x0D,0x61,0x26,0x0D,0x41,0x2A,0x0D,0x21,0x2E,0x1C,0x21,0x30,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0xEE,0xF7,0x00,0xE2,0x5E,0xE0,0x41,0x1C,0x21,0xE8,0x0D,0x61,0x0C,0x0D,
+0x81,0x08,0x0D,0xA1,0x04,0x0D,0x21,0x14,0x0D,0x41,0x10,0x89,0x63,0x5D,0x84,0x00,
+0x49,0xA1,0x01,0xE4,0x00,0x54,0xDE,0xC3,0x14,0x00,0x01,0xCB,0x18,0x7A,0x30,0x0A,
+0xF8,0x01,0xC6,0xF7,0x01,0x00,0x5E,0xF7,0x04,0x22,0xE3,0xD8,0xFC,0x60,0x01,0x00,
+0x99,0x40,0xE4,0x00,0x19,0xEC,0xE4,0x00,0x00,0x31,0x88,0x6A,0x98,0x81,0x88,0xAD,
+0x9D,0x41,0xE4,0x00,0xA5,0x16,0x5D,0x4A,0x00,0x0C,0x6B,0x01,0x9D,0x62,0xD5,0x4C,
+0xFF,0x66,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,
+0x16,0x1C,0x21,0x18,0x85,0x29,0xFC,0x21,0xFD,0xF0,0xED,0x41,0x02,0x08,0xED,0xE1,
+0x01,0xF4,0xEE,0x01,0x01,0xF0,0xED,0x21,0x02,0x0C,0xED,0x61,0x02,0x04,0xED,0x81,
+0x02,0x00,0xED,0xA1,0x01,0xFC,0xED,0xC1,0x01,0xF8,0xEE,0x21,0x01,0xEC,0xEE,0x41,
+0x01,0xE8,0xEE,0x61,0x01,0xE4,0xC2,0x00,0x10,0x01,0xC1,0xE0,0x10,0x01,0x89,0x43,
+0xFE,0x10,0x07,0xE8,0xFD,0xEF,0x08,0x06,0x20,0x60,0x30,0x20,0x68,0x88,0x20,0x64,
+0x30,0x24,0x64,0x63,0x99,0x80,0xE4,0x00,0x00,0x0D,0x99,0x81,0xCD,0x8C,0x00,0x1A,
+0x51,0x60,0x1A,0x8D,0x90,0xE4,0x00,0x00,0x29,0xD0,0x64,0x00,0x62,0x99,0x80,0x89,
+0x6C,0xE4,0x00,0x00,0x11,0x89,0x8F,0x99,0x63,0x9A,0xE0,0x89,0xC1,0x53,0x20,0x10,
+0xE4,0x00,0x00,0x19,0x43,0x0E,0xBC,0x9E,0xE1,0x1B,0x38,0x00,0x5F,0x17,0x00,0xD5,
+0x78,0xFF,0xAD,0x88,0x6B,0x88,0x81,0x99,0xA3,0xE7,0xFF,0xFC,0x18,0x89,0xC1,0xFE,
+0x20,0xFE,0xB0,0xCA,0x40,0x01,0x50,0x52,0x60,0x3F,0x1C,0x61,0x60,0x88,0x8B,0xE7,
+0xFF,0xFD,0xBE,0x1F,0x21,0x60,0x8B,0x01,0x9B,0x41,0xE4,0x00,0x00,0x93,0x0A,0xF9,
+0x00,0xC2,0xFF,0xD5,0xEC,0x20,0x00,0x39,0x43,0x71,0xBD,0xC3,0x60,0x2A,0x0C,0xE4,
+0x00,0x00,0x0F,0x5E,0xE0,0x19,0x4B,0x61,0x01,0x23,0x60,0x98,0xFE,0xF7,0x01,0x50,
+0x13,0x58,0x00,0x42,0xF7,0x90,0x8E,0xFA,0x5E,0xF7,0x06,0x26,0xFC,0x34,0x5E,0xE7,
+0xF1,0x4A,0xF7,0x98,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0x1A,0xF8,0x00,0x9B,0x40,0x9F,
+0x01,0x9F,0x22,0x42,0xF8,0x75,0x5E,0xF7,0x00,0xD5,0x77,0xFD,0xAD,0x23,0x40,0x24,
+0x9A,0xE0,0xE4,0x00,0x00,0x51,0x88,0x6B,0x88,0x81,0x9D,0xBF,0xE7,0xFF,0xFB,0x12,
+0x5D,0xAD,0x00,0x21,0xA2,0x1E,0xE7,0xFF,0xFF,0xD5,0x43,0x0C,0xBC,0x1F,0x21,0x00,
+0x8F,0x37,0x9E,0xE1,0x13,0x39,0x00,0x1B,0x38,0x00,0x5F,0x17,0x00,0xD5,0x78,0xFF,
+0x6D,0x21,0x40,0x64,0x21,0x48,0x28,0x21,0x44,0x8C,0xD1,0x44,0x01,0xCA,0x99,0x60,
+0x99,0x80,0x88,0x8B,0x89,0x4C,0xE4,0x00,0x00,0x77,0xC1,0x80,0x10,0x01,0x99,0x60,
+0x88,0x90,0xFD,0x8C,0x0A,0x9C,0xE4,0x00,0x00,0x2D,0xC0,0x80,0x10,0x01,0xC1,0x80,
+0x10,0x01,0x99,0x61,0xFC,0x84,0x08,0x02,0xFD,0x8C,0x0B,0x04,0x51,0x40,0x1A,0xE4,
+0x00,0x00,0x25,0xC1,0x80,0x10,0x01,0x99,0x68,0x88,0x8F,0xFD,0x8C,0x0B,0x28,0x99,
+0x43,0x88,0x6A,0xE7,0xFF,0xFA,0x24,0xFD,0xA1,0x01,0x20,0x88,0x8A,0x88,0x6D,0xE7,
+0xFF,0xFB,0xDE,0x9A,0xE0,0xE4,0x00,0x00,0x33,0x4F,0x17,0x10,0x4F,0x37,0x08,0x8F,
+0x0C,0x8F,0x2D,0x9E,0xE1,0x0B,0x39,0x00,0x4F,0x39,0x40,0x0F,0x38,0x00,0x5F,0x17,
+0x00,0xD5,0x58,0xFF,0x45,0x88,0x6B,0xE4,0x00,0x52,0x3C,0xED,0x21,0x02,0x0E,0xEE,
+0x61,0x01,0xE6,0xEE,0x41,0x01,0xEA,0xEE,0x21,0x01,0xEE,0xEE,0x01,0x01,0xF2,0xED,
+0xE1,0x01,0xF6,0xED,0xC1,0x01,0xFA,0xED,0xA1,0x01,0xFE,0xED,0x81,0x02,0x02,0xED,
+0x61,0x02,0x06,0xED,0x41,0x02,0x0A,0xFC,0x21,0x02,0x10,0x85,0x29,0x9C,0x38,0xC2,
+0xE0,0x10,0x01,0x0D,0x21,0x04,0xFE,0xF7,0x07,0xE8,0x9B,0x00,0x13,0x37,0x00,0x4F,
+0x39,0x08,0x9E,0xE1,0x8F,0x19,0xC3,0x20,0x10,0x01,0xFF,0x39,0x08,0x02,0xD6,0xF9,
+0xFF,0x76,0xC2,0xE0,0x10,0x01,0xF3,0x57,0x08,0x06,0xFE,0xF7,0x08,0x06,0x13,0x37,
+0x02,0x13,0x77,0x01,0x98,0x60,0x42,0xFB,0xD4,0x98,0x80,0x8E,0xF9,0x53,0x20,0x37,
+0x4E,0xF7,0x08,0x8E,0xF8,0x97,0x03,0x4E,0xF7,0x09,0xCB,0x18,0xD0,0x8F,0xCE,0xF7,
+0x03,0x5B,0x42,0xF7,0xC9,0xCE,0xF7,0x00,0x1D,0xD6,0xF8,0x00,0xA1,0x97,0x2F,0x98,
+0x60,0xCB,0x39,0x42,0x3F,0x98,0x82,0xD6,0xF9,0x00,0x31,0x98,0x87,0xE4,0x00,0x9A,
+0x14,0x0D,0x21,0x06,0x98,0x61,0x98,0x80,0x9C,0x28,0xE4,0x00,0x99,0xFB,0x9C,0x38,
+0x98,0x80,0x0D,0x21,0x04,0x98,0x66,0xE4,0x00,0x2E,0x6A,0x98,0x60,0xE7,0xFF,0xFA,
+0xF2,0x98,0x66,0x98,0x87,0xE4,0x00,0x2E,0x4E,0x0D,0x21,0x06,0x98,0x64,0x9C,0x28,
+0xE7,0xFF,0xFA,0xCD,0xC2,0xE0,0x10,0x01,0x5C,0xA0,0x29,0xF3,0x37,0x0B,0x1A,0x53,
+0x40,0x40,0x52,0xE0,0x20,0xC3,0x60,0x10,0x01,0x4B,0x5A,0xB8,0xFF,0x7B,0x09,0x0C,
+0x20,0x60,0x6C,0xE4,0x00,0x00,0x55,0x4F,0x17,0x08,0x9E,0xE1,0x8F,0x1B,0x0B,0x18,
+0x00,0xD7,0x58,0x00,0x78,0x98,0x61,0xE4,0x00,0x00,0xD9,0x9A,0xE0,0x43,0x40,0xD5,
+0x5F,0x17,0x00,0xD7,0x38,0xFF,0x25,0x98,0x60,0xE4,0x00,0x00,0xB5,0x20,0x67,0xEA,
+0x9A,0xE0,0x20,0x80,0xA6,0x9A,0xE0,0x43,0x80,0xD5,0xE4,0x00,0x00,0x7D,0x4F,0x17,
+0x08,0x8F,0x1B,0x0B,0x18,0x00,0x4F,0x98,0xFA,0x47,0x1C,0xC6,0x43,0x18,0xE5,0x0B,
+0x84,0x00,0xD7,0x1C,0x00,0x38,0x0F,0x04,0x01,0x9E,0xE1,0x5F,0x17,0x00,0xD7,0x38,
+0xFF,0x05,0xE7,0xFF,0xFF,0xA7,0x4F,0x17,0x08,0x8F,0x1B,0x0B,0x18,0x00,0xD7,0x98,
+0xFD,0x3C,0x9E,0xE1,0xD7,0x1A,0xFD,0x0C,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x5D,0xE7,
+0xFF,0xFF,0x51,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xF3,0xB7,0x0B,
+0x1A,0xC3,0xC0,0x10,0x01,0x9A,0xE0,0xFF,0x18,0x06,0xC0,0x8B,0x37,0xFF,0xDE,0x09,
+0x0C,0xE4,0x00,0x00,0x5B,0x4F,0x57,0x08,0x0B,0x98,0x00,0x8F,0x5E,0x0B,0x5A,0x00,
+0x43,0x9A,0xE5,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0x5F,0x66,0x11,0x20,
+0x00,0x21,0x9F,0x21,0x5F,0x39,0x00,0x0F,0x58,0x01,0x9E,0xE1,0x9F,0x02,0x5F,0x57,
+0x00,0xD7,0xBA,0xFE,0xA5,0x5F,0x20,0x93,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,
+0x01,0xC3,0x40,0x10,0x01,0xF3,0x37,0x0B,0x1A,0xC3,0x60,0x10,0x01,0x9A,0xE0,0xFF,
+0x5A,0x06,0xC0,0xFF,0x7B,0x09,0x0C,0xE4,0x00,0x00,0x29,0x4F,0x17,0x08,0x9E,0xE1,
+0x43,0x9A,0xC4,0x8F,0x1B,0x0B,0x18,0x01,0x0F,0x1C,0x01,0x5F,0x17,0x00,0xD7,0x38,
+0xFF,0x6D,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x8A,0xC2,0xE0,0x10,0x01,
+0x9C,0x38,0xF8,0x17,0x08,0x83,0x0D,0x21,0x04,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,
+0x9D,0x20,0x64,0x26,0x98,0x60,0xE4,0x00,0x00,0x0D,0x98,0x64,0x98,0x80,0xE4,0x00,
+0x2F,0xA0,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEC,0x17,0x06,0xBC,0x9C,0x28,0xE4,
+0x00,0x4B,0xFB,0x1C,0x21,0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0xEB,0x17,0x00,
+0xD5,0x0D,0x21,0x14,0x0D,0x61,0x0C,0x0C,0x01,0x07,0x89,0x43,0xC7,0x18,0x01,0x00,
+0x98,0x60,0xD3,0x00,0x06,0x3A,0xEB,0x17,0x00,0xD5,0xC7,0x18,0xFE,0xFF,0xEF,0x17,
+0x00,0xD5,0xE4,0x00,0x46,0x32,0xE4,0x00,0x47,0x3E,0x21,0x44,0x36,0x98,0x61,0xE4,
+0x00,0x7B,0x62,0xE4,0x00,0x00,0x11,0xE4,0x00,0x7B,0x9C,0xC2,0xE0,0x10,0x01,0xED,
+0x77,0x06,0xBE,0x5D,0x60,0x01,0x0C,0x01,0x07,0x98,0x61,0x1C,0x81,0x06,0x98,0xA1,
+0x48,0x84,0x00,0x88,0xCA,0xE7,0xFF,0xFC,0x5E,0xC2,0xE0,0x10,0x01,0x20,0x60,0xE6,
+0xF3,0x17,0x08,0x8A,0x9F,0x01,0xFB,0x17,0x08,0x8A,0x0A,0xE1,0x06,0xD2,0xEF,0x00,
+0x94,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x08,0x83,0x9F,0x01,0xFB,0x17,0x08,0x83,0x98,
+0x63,0x21,0x44,0x36,0x98,0x81,0xE4,0x00,0x78,0x06,0xE4,0x00,0x00,0x6B,0xE4,0x00,
+0x78,0x5C,0xE4,0x00,0x00,0x5B,0xF8,0x17,0x08,0x8A,0xC2,0xE0,0x10,0x01,0xF8,0x17,
+0x08,0x83,0x21,0x63,0x76,0x0A,0xE1,0x06,0x5E,0xEC,0x11,0x23,0xFF,0x51,0x21,0x44,
+0x36,0x98,0x61,0xE4,0x00,0x4F,0xEA,0xE4,0x00,0x00,0x11,0xE4,0x00,0x50,0x24,0x9B,
+0x01,0xC2,0xE0,0x10,0x01,0x98,0x61,0xEF,0x17,0x06,0xBC,0xC2,0xE0,0x10,0x01,0xF3,
+0x17,0x08,0x9D,0x9F,0x01,0xFB,0x17,0x08,0x9D,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,
+0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0x9C,0x38,0x0D,0x21,0x04,0x20,0x64,0x26,0x98,
+0x60,0xE4,0x00,0x00,0x0D,0x98,0x64,0x98,0x80,0xE4,0x00,0x2D,0x6A,0x0D,0x21,0x06,
+0x9C,0x28,0xE4,0x00,0x49,0xD5,0x98,0x81,0x98,0x60,0x88,0xA4,0xE7,0xFF,0xA7,0xEB,
+0xC2,0xE0,0x10,0x01,0x98,0x61,0xF2,0xF7,0x08,0x8A,0xD2,0xEA,0x00,0x95,0xC2,0xE0,
+0x10,0x01,0xF2,0xF7,0x08,0x83,0x5E,0xE0,0xBB,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0xF2,0xF7,0x08,0x9D,0x5E,0xE1,0xDB,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x00,0x00,0x0C,0x17,0x00,0x0C,0x17,0x19,0x0C,0x17,0x1B,0xEC,
+0x17,0x00,0xA1,0xEC,0x17,0x00,0xA3,0xEC,0x17,0x00,0xA5,0xEC,0x17,0x00,0xA7,0xF8,
+0x17,0x00,0xA8,0xEC,0x17,0x00,0xAC,0x1F,0x17,0x08,0xEC,0x17,0x00,0xA1,0x0F,0x17,
+0x04,0x1F,0x17,0x20,0x0F,0x17,0x1C,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD9,0x53,
+0x18,0x02,0xEF,0x17,0x00,0xD9,0x85,0x29,0xC3,0x20,0x10,0x01,0xFF,0x19,0x00,0x00,
+0x1E,0xF8,0x20,0x5C,0x63,0x04,0x0E,0xF8,0x1C,0x9A,0xE0,0xE4,0x00,0x00,0x29,0x0F,
+0x38,0x1E,0x43,0x44,0xBC,0x8F,0x37,0x13,0x5A,0x00,0x9E,0xE1,0x1B,0x59,0x00,0x5F,
+0x37,0x04,0xD4,0x79,0xFF,0x6D,0x9A,0xE1,0xEE,0xF8,0x00,0xAC,0x85,0x29,0x9C,0x38,
+0x0D,0x21,0x04,0x0D,0x41,0x00,0x5D,0x43,0x00,0xE7,0xFF,0xFE,0xEA,0x88,0x6A,0xE4,
+0x00,0x95,0xF0,0x0D,0x21,0x06,0x0D,0x41,0x02,0x9C,0x28,0x85,0x29,0x1C,0x21,0xE0,
+0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xC1,0x08,0x0D,
+0xE1,0x04,0x0D,0x21,0x1C,0x0E,0x01,0x00,0xC1,0xA0,0x10,0x01,0xE4,0x00,0x97,0x62,
+0xC1,0x80,0x10,0x01,0xC1,0xC0,0x10,0x01,0xC1,0xE0,0x10,0x01,0x5C,0x63,0x00,0xFD,
+0xAD,0x00,0xC8,0xFD,0x8C,0x08,0x1A,0xFD,0x6E,0x00,0xC0,0xFD,0x4F,0x00,0x00,0xD0,
+0x60,0x23,0xFA,0xE4,0x00,0x97,0x60,0x5C,0x63,0x00,0x20,0x60,0xDC,0x0C,0x0A,0x19,
+0xE4,0x00,0x97,0xEC,0xE4,0x00,0x0D,0x38,0xEC,0x6A,0x00,0xA5,0xE4,0x00,0x00,0x4B,
+0x0E,0xEA,0x06,0x0A,0x0A,0x19,0x8E,0x17,0xE4,0x00,0x97,0xF0,0x18,0x70,0x00,0x0A,
+0xEA,0x19,0xD2,0xEE,0x00,0x8D,0x0A,0xEA,0x19,0x9E,0xE1,0x5E,0xF7,0x04,0x0E,0xEA,
+0x19,0x99,0xC0,0xE4,0x00,0x96,0x6E,0x5C,0x63,0x00,0x20,0x63,0x5A,0x0E,0xEA,0x06,
+0x13,0x17,0x00,0x5F,0x0A,0x09,0x20,0x00,0x65,0x0A,0xEA,0x19,0xD2,0xE4,0x04,0x0E,
+0xE4,0x00,0x97,0x18,0x0A,0xEA,0x19,0xD2,0xE0,0x04,0x4E,0xE4,0x00,0x0B,0x0B,0x13,
+0x17,0x00,0x23,0x08,0x36,0x0A,0xEA,0x19,0x22,0xE9,0x96,0xE7,0xFF,0xFF,0xCB,0x13,
+0x17,0x00,0x23,0x04,0x36,0x0A,0xEA,0x19,0x22,0xE5,0x56,0xE7,0xFF,0xFF,0xAB,0x13,
+0x17,0x00,0x5F,0x0A,0x29,0x20,0x01,0x0B,0x13,0x17,0x00,0x5F,0x0A,0x49,0x23,0xFE,
+0xEF,0x13,0x17,0x00,0x5F,0x0A,0x69,0x20,0x00,0xC3,0x13,0x17,0x00,0x5F,0x0A,0x89,
+0x20,0x00,0x9F,0x13,0x17,0x00,0x5F,0x0B,0x09,0x20,0x00,0x7B,0x13,0x17,0x00,0x5F,
+0x0B,0x29,0x23,0xFE,0x5F,0x13,0x17,0x00,0x5F,0x04,0x09,0x20,0x00,0x33,0x12,0xF7,
+0x00,0x5E,0xE4,0x29,0x20,0x00,0x25,0x0A,0xEA,0x19,0x22,0xEE,0x18,0x98,0x61,0xE4,
+0x00,0xA7,0x5E,0x9D,0xC1,0xC1,0xC4,0xE2,0x0E,0x23,0xFD,0x6B,0xE7,0xFF,0xFE,0xE9,
+0x0E,0xEA,0x06,0x13,0x17,0x00,0xD3,0x00,0x27,0xD2,0x13,0x17,0x00,0x5F,0x0B,0x9B,
+0x20,0x13,0xC1,0x13,0x17,0x00,0x5F,0x0A,0x49,0x07,0x00,0x80,0x20,0x00,0xA5,0x0B,
+0x2A,0x19,0xD3,0x24,0x1B,0x16,0x13,0x37,0x01,0x13,0x57,0x02,0x12,0xF7,0x03,0x4F,
+0x39,0x40,0x47,0x39,0xD5,0xC3,0x22,0x7F,0xEE,0x20,0x0D,0x2D,0x8F,0x19,0x1A,0xF8,
+0x00,0xE4,0x00,0x06,0x87,0x13,0x37,0x00,0x5F,0x2A,0x69,0x20,0x02,0xCD,0x0B,0x2A,
+0x19,0xD3,0x23,0x25,0x7E,0x13,0x57,0x01,0x13,0x37,0x02,0x4E,0xFA,0x40,0x46,0xF7,
+0xCD,0xCB,0x20,0x14,0x00,0xC2,0xE2,0x80,0x0A,0x4A,0xF7,0xC8,0x8E,0xF8,0x0E,0xEA,
+0x1C,0xFE,0xE0,0x08,0x00,0xEE,0xEA,0x00,0xA1,0xE4,0x00,0x00,0x1D,0xE4,0x00,0x0A,
+0x3E,0x98,0x61,0xE4,0x00,0x0A,0x72,0xE4,0x00,0x93,0xE0,0x5C,0x63,0x00,0x20,0x63,
+0xBC,0xEC,0x0A,0x00,0xA3,0xE4,0x00,0x94,0xE8,0xE4,0x00,0x94,0x7A,0xEB,0x0A,0x00,
+0xA3,0xEA,0xEA,0x00,0xA1,0xD7,0x17,0x01,0x26,0xEA,0xEA,0x00,0xA3,0xEA,0xEA,0x00,
+0xA1,0xE4,0x00,0x94,0x70,0xE4,0x00,0x94,0xDC,0xE4,0x00,0x94,0xA0,0xEC,0x0A,0x00,
+0xA3,0xEC,0x0A,0x00,0xA1,0xE4,0x00,0x08,0x77,0xE4,0x00,0x93,0xCE,0x5C,0x63,0x00,
+0x20,0x63,0x66,0xE4,0x00,0x93,0x22,0x5C,0x63,0x00,0x20,0x63,0x0C,0xEA,0xEA,0x00,
+0xA3,0x0F,0x0A,0x1E,0x8E,0xF8,0x10,0x77,0x00,0xE4,0x00,0x92,0x9C,0xEA,0xEA,0x00,
+0xA3,0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xEA,0x00,0xA3,0xE7,0xFF,0xFF,0x47,0x13,0x17,
+0x00,0xD3,0x01,0x04,0x26,0x0A,0xEA,0x19,0xD2,0xE1,0x13,0xE6,0xFE,0xEA,0x00,0xB4,
+0xEE,0xEA,0x00,0xB0,0x12,0xEB,0x00,0x22,0xE0,0x4A,0x9A,0xE8,0x53,0x00,0x52,0xFA,
+0xEA,0x00,0xBC,0x9A,0xE8,0xE4,0x00,0x00,0x21,0x9A,0xE8,0x53,0x00,0x62,0xFA,0xEA,
+0x00,0xBC,0x52,0xE0,0x80,0x1F,0x20,0x81,0xFB,0x2A,0x00,0xB4,0x13,0x2B,0x00,0xFB,
+0x2A,0x00,0xB5,0xFB,0x0A,0x00,0xB6,0xF8,0x0A,0x00,0xB7,0x5E,0xF7,0x00,0xFA,0xEA,
+0x00,0xB8,0xF8,0x0A,0x00,0xB9,0xF8,0x0A,0x00,0xBA,0xC2,0xE0,0x10,0x01,0xF8,0x0A,
+0x00,0xBB,0xEB,0x17,0x00,0xD9,0xC7,0x18,0xFF,0xFD,0xEF,0x17,0x00,0xD9,0x12,0xEC,
+0x00,0x52,0xF7,0x01,0x9B,0x01,0x1A,0xEC,0x00,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,
+0x33,0xE4,0x00,0x04,0x07,0x13,0x17,0x00,0x23,0x09,0x4A,0x0B,0x0A,0x19,0xD3,0x02,
+0x0F,0xB6,0x12,0xF7,0x01,0x22,0xE0,0x4A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF9,
+0x18,0x17,0x00,0xE4,0x00,0x00,0x29,0x22,0xE4,0x5E,0xC2,0xF4,0x00,0x01,0x9B,0x01,
+0xCA,0xF7,0x3D,0xF9,0x1B,0x17,0x00,0x12,0xF7,0x00,0xE4,0x00,0x00,0x2D,0xD2,0xE2,
+0x0E,0x36,0xC3,0x14,0x00,0x01,0xCB,0x18,0x3D,0xF9,0x1A,0xF8,0x00,0x12,0xF8,0x00,
+0x5E,0xF7,0x00,0x1A,0xEB,0x00,0xE4,0x00,0x03,0x5D,0x13,0x17,0x00,0x5F,0x0B,0x01,
+0x20,0x00,0x31,0x13,0x17,0x00,0x5F,0x0B,0x29,0x20,0x04,0xB5,0x0B,0x0A,0x19,0x23,
+0x0C,0xB6,0xC3,0x00,0x10,0x01,0x9B,0x21,0xEF,0x38,0x06,0x88,0x13,0x17,0x01,0x12,
+0xF7,0x02,0x4F,0x18,0x40,0x47,0x18,0xBD,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x20,
+0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x34,0xE4,0x00,0x02,0xD9,0x0B,0x0A,0x19,0xD3,
+0x04,0x0B,0x2E,0xC3,0x00,0x10,0x01,0xEF,0x18,0x06,0xFE,0x23,0x00,0x68,0xEB,0x2A,
+0x00,0xA5,0xEB,0x0A,0x00,0xA7,0x43,0x19,0xC5,0xD3,0x0A,0x00,0x60,0xF3,0x0A,0x00,
+0xA8,0xF8,0x0A,0x00,0xA8,0x11,0xD7,0x01,0xC1,0xA0,0x10,0x01,0x13,0x57,0x02,0xFD,
+0x6D,0x07,0x00,0x13,0x17,0x03,0x4E,0xEE,0x08,0x43,0x2B,0xBC,0x9E,0xE1,0x1B,0x59,
+0x00,0x8E,0xEB,0x1B,0x17,0x00,0xC2,0xE0,0x10,0x01,0x99,0x81,0xED,0x97,0x06,0xFC,
+0xE4,0x00,0x06,0xA0,0xEC,0x6A,0x00,0xA7,0xF2,0xEA,0x00,0xA8,0x4D,0xCC,0x74,0x45,
+0xCE,0xBD,0x5D,0xCE,0x00,0xF9,0xCA,0x00,0xA8,0xF2,0xEA,0x00,0xA8,0x56,0xF7,0x01,
+0xD2,0xE0,0x07,0xA2,0xF2,0xEA,0x00,0xA8,0x56,0xF7,0x02,0xD2,0xE0,0x07,0x4A,0xF2,
+0xEA,0x00,0xA8,0x56,0xF7,0x04,0xD2,0xE0,0x06,0xF2,0xF2,0xEA,0x00,0xA8,0x56,0xF7,
+0x08,0xD2,0xE0,0x06,0x9A,0xF3,0x4D,0x07,0x00,0x13,0x0B,0x01,0x12,0xEB,0x02,0x4E,
+0xF7,0x40,0x13,0x2B,0x03,0x4F,0x5A,0xC0,0x4F,0x18,0x80,0x47,0x1A,0xC5,0x47,0x18,
+0xCD,0x47,0x18,0xBD,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x34,0x13,0x4B,0x04,0x13,
+0x0B,0x05,0x12,0xEB,0x06,0x4E,0xF7,0x40,0x13,0x2B,0x07,0x4F,0x5A,0xC0,0x4F,0x18,
+0x80,0x47,0x1A,0xC5,0x47,0x18,0xCD,0x47,0x18,0xBD,0xC2,0xE0,0x10,0x01,0xEF,0x17,
+0x08,0x20,0xF2,0xEA,0x00,0xA8,0xF8,0x0A,0x00,0xA8,0xC2,0xE0,0x10,0x01,0xED,0x97,
+0x06,0x88,0xE4,0x00,0x00,0xE5,0x13,0x17,0x00,0x5F,0x04,0x09,0x20,0x00,0x99,0x0B,
+0x0A,0x19,0x23,0x0D,0x8A,0x13,0x37,0x01,0x13,0x17,0x02,0x4E,0xF9,0x40,0x46,0xF7,
+0xC5,0xC2,0xEB,0x54,0xA4,0x20,0x01,0x3D,0x12,0xED,0x00,0x52,0xF7,0x03,0xE4,0x00,
+0x00,0x87,0x13,0x17,0x00,0x5F,0x04,0x29,0x20,0x06,0xE1,0x0B,0x0A,0x19,0x23,0x0C,
+0xDA,0x13,0x37,0x01,0x13,0x17,0x02,0x4E,0xF9,0x40,0x46,0xF7,0xC5,0xC3,0x00,0x10,
+0x01,0xEE,0xF8,0x00,0xCC,0x12,0xED,0x00,0x57,0x37,0x01,0x23,0x20,0x64,0xEF,0x18,
+0x00,0xCE,0x23,0x00,0x32,0x9B,0x1B,0x46,0xF7,0xC4,0xE4,0x00,0x00,0x0F,0x52,0xF7,
+0x04,0x1A,0xED,0x00,0x0C,0x0A,0x00,0x0C,0x0A,0x19,0xE4,0x00,0x02,0xED,0xE4,0x00,
+0x8D,0xD2,0x5C,0x63,0x00,0xD0,0x60,0x0B,0x5A,0xE4,0x00,0x8F,0x14,0xE4,0x00,0x8E,
+0xD8,0x50,0x60,0x20,0xE4,0x00,0x03,0xD0,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF9,
+0x12,0xF7,0x00,0x1A,0xEB,0x00,0x12,0xEB,0x00,0x22,0xE0,0x42,0xC2,0xE0,0x10,0x01,
+0x99,0xC6,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0xD8,0x12,0xEB,0x00,0x22,0xE0,0x4E,0x12,
+0xED,0x00,0x56,0xF7,0x01,0x5E,0xE0,0x09,0x49,0xC4,0x43,0xE4,0x00,0x00,0x43,0x12,
+0xEB,0x00,0x22,0xE4,0x2A,0x51,0xC0,0x80,0xE4,0x00,0x00,0x29,0x12,0xEB,0x00,0x22,
+0xEB,0xD8,0x12,0xEB,0x00,0x22,0xEF,0xC0,0xC9,0xC0,0xFF,0xFF,0xEE,0xEA,0x00,0xAE,
+0x22,0xE4,0x2E,0xED,0xCA,0x00,0xA1,0xEC,0x0A,0x00,0xAC,0xE4,0x00,0x8D,0xFC,0xEA,
+0xEA,0x00,0xA1,0xD5,0xD7,0x00,0x71,0x12,0xEC,0x00,0x56,0xF7,0x01,0xD2,0xE0,0x05,
+0x22,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x08,0x50,0x23,0x00,0x24,0x9F,0x1F,0xFB,0x17,
+0x08,0x50,0xEC,0x0A,0x00,0xA3,0x12,0xEC,0x00,0x56,0xF7,0x01,0x22,0xE0,0x2C,0xF1,
+0xAA,0x00,0xBC,0xE4,0x00,0x00,0xAD,0xE9,0xAA,0x00,0xA1,0xE4,0x00,0x00,0x9D,0x12,
+0xEB,0x00,0x22,0xE0,0x42,0x12,0xEC,0x00,0x56,0xF7,0x01,0x22,0xE0,0x56,0xE4,0x00,
+0x00,0x3D,0xE4,0x00,0x8B,0xDE,0x5C,0x63,0x00,0x20,0x63,0xE4,0xE7,0xFF,0xFF,0xD3,
+0xEA,0xEA,0x00,0xA3,0xEF,0x0A,0x00,0xB2,0xE4,0x00,0x00,0x17,0xEA,0xEA,0x00,0xA3,
+0x0F,0x0A,0x1E,0x8E,0xF8,0x10,0x77,0x00,0xE4,0x00,0x8B,0x5E,0xEA,0xEA,0x00,0xA3,
+0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xEA,0x00,0xA3,0xEA,0xEA,0x00,0xA3,0xD6,0xED,0xFD,
+0x96,0xE4,0x00,0x8D,0x04,0xE4,0x00,0x8C,0xC8,0xEC,0x0A,0x00,0xA1,0xEC,0x0A,0x00,
+0xA3,0xE4,0x00,0x00,0x45,0x98,0x60,0x9D,0x61,0xE4,0x00,0x8A,0xFC,0xE4,0x00,0x00,
+0x0D,0x99,0x60,0xD5,0xCB,0xFF,0x95,0xE4,0x00,0x8C,0xB8,0xE4,0x00,0x8C,0x7C,0xEC,
+0x0A,0x00,0xA1,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD9,0x53,0x18,0x02,0xEF,0x17,
+0x00,0xD9,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x33,0xC3,0x00,0x32,0x0A,0x20,0x00,
+0x49,0x13,0x0C,0x00,0x9B,0x3E,0xEC,0x17,0x08,0x33,0x47,0x18,0xCC,0x1B,0x0C,0x00,
+0x0E,0x01,0x02,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,0x0D,
+0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0x9C,0x38,0x0D,
+0x21,0x04,0xE4,0x00,0x93,0x30,0x98,0x60,0x88,0x83,0xE4,0x00,0x90,0x62,0x98,0x61,
+0x98,0x82,0xE4,0x00,0x90,0x52,0x98,0x60,0xFC,0x80,0x3E,0x0C,0xE4,0x00,0x8C,0x3E,
+0x98,0x61,0xFC,0x80,0x3E,0x0C,0xE4,0x00,0x8D,0xA4,0x0D,0x21,0x06,0x9C,0x28,0xE4,
+0x00,0x95,0xFB,0x20,0x64,0x1E,0xE4,0x00,0x97,0x25,0xE4,0x00,0x97,0x43,0x9C,0x38,
+0x0D,0x21,0x04,0xE4,0x00,0x97,0x58,0x0D,0x21,0x06,0x9C,0x28,0xE4,0x00,0x97,0x1F,
+0xE4,0x00,0x99,0x17,0xE4,0x00,0x98,0xAD,0xE4,0x00,0x99,0x77,0xE4,0x00,0x99,0xD3,
+0xE4,0x00,0x9D,0xB1,0xE4,0x00,0x9B,0x1B,0xE4,0x00,0x9A,0x1F,0xE4,0x00,0x9A,0x55,
+0xE4,0x00,0x9A,0x8B,0xE4,0x00,0x9A,0xAF,0xE4,0x00,0x9A,0xD3,0xE4,0x00,0x99,0x09,
+0xE4,0x00,0x9B,0x01,0x20,0x60,0x28,0x20,0x64,0x3E,0xE4,0x00,0x00,0x11,0xE4,0x00,
+0x9B,0x9D,0xE4,0x00,0x9B,0xB7,0x85,0x29,0xE4,0x00,0x9E,0x55,0xE4,0x00,0x9B,0xC5,
+0xC2,0xE0,0x10,0x01,0xE8,0x77,0x00,0xC3,0xEB,0x17,0x00,0xC3,0xD4,0x78,0xFF,0xC6,
+0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0D,0x61,0x04,0x0D,0x21,0x0C,0x5D,0x43,0x04,
+0xE7,0xFF,0xFF,0xC0,0xC2,0xE0,0x10,0x01,0xFF,0x17,0x00,0xE6,0x89,0x77,0x0C,0x78,
+0x03,0xE7,0xFF,0xFF,0x9E,0xFF,0x0B,0x00,0xE6,0x0B,0x18,0x03,0x40,0x63,0xC5,0x5F,
+0x03,0x04,0xD5,0x58,0xFF,0x7D,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,
+0x21,0x10,0x85,0x29,0xE4,0x00,0x9E,0x71,0xC3,0x34,0x00,0x01,0xCA,0xF9,0x23,0xFC,
+0x0A,0xF7,0x00,0xD2,0xFF,0x04,0x3C,0xC3,0x00,0x10,0x01,0xF2,0xF8,0x07,0x08,0x9E,
+0xE1,0x5E,0xF7,0x00,0xFA,0xF8,0x07,0x08,0x22,0xE1,0xCA,0xC3,0x00,0x10,0x01,0xC3,
+0x60,0x10,0x01,0xFF,0x18,0x03,0x72,0xCA,0xE0,0x11,0x7D,0xCB,0x39,0x22,0x00,0xFF,
+0x7B,0x09,0x0C,0x1F,0x57,0xFD,0x57,0x5A,0xFF,0x4F,0x5A,0x10,0x8F,0x59,0x0B,0x9A,
+0x01,0x4F,0x97,0x08,0x8F,0x9B,0xEB,0x9C,0xDD,0x3B,0x0F,0x9A,0x01,0x5F,0x57,0x00,
+0x5F,0x4F,0xE9,0x57,0x57,0xFF,0x4F,0x5A,0x10,0x8F,0x59,0x0B,0x9A,0x01,0x20,0x00,
+0x6D,0xFF,0xA0,0x80,0x00,0x5F,0x9C,0x04,0x47,0x9C,0xEC,0x0B,0xB8,0x01,0xC7,0xBD,
+0x7F,0xFF,0x47,0x9C,0xED,0xE4,0x00,0x00,0x0F,0x0B,0x98,0x01,0x0F,0x9A,0x01,0x9E,
+0xE1,0x9F,0x02,0xC2,0xE2,0x30,0x04,0x23,0xFE,0xB1,0x85,0x29,0x5C,0x63,0x04,0xE4,
+0x00,0x9D,0x43,0x9A,0xE0,0x8B,0x17,0xE4,0x00,0x00,0x1D,0x43,0x23,0xBC,0x9E,0xE1,
+0x13,0x39,0x00,0x8F,0x19,0xD4,0x97,0xFF,0xB4,0x40,0x60,0xC5,0x85,0x29,0x9C,0x38,
+0x98,0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFC,0xFC,0x98,0x61,0xE7,0xFF,0xFC,0xF0,0xC2,
+0xE0,0x10,0x01,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0x3A,0x50,0x60,0xC8,0xE7,0xFF,0xFD,
+0xCA,0xE4,0x00,0x00,0x15,0x98,0x6F,0xE7,0xFF,0xFD,0x8A,0x0D,0x21,0x06,0x98,0x60,
+0x9C,0x28,0xE7,0xFF,0xFC,0xA3,0x9C,0x38,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x04,0xEC,
+0x17,0x08,0x31,0x0D,0x41,0x00,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x00,0xC0,0x23,0x00,
+0x42,0xC3,0x00,0x10,0x01,0x98,0x66,0xEF,0x18,0x00,0xE2,0x23,0x08,0x78,0xF2,0xF7,
+0x00,0xC0,0x50,0x60,0x80,0x22,0xE0,0x52,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x00,0xC8,
+0x56,0xF7,0x01,0x5E,0xE0,0x09,0x48,0x64,0x43,0xC1,0x40,0x10,0x01,0xEA,0xEA,0x00,
+0xD9,0x56,0xF7,0x02,0x22,0xE0,0x6C,0xC0,0x80,0x10,0x01,0xFC,0x84,0x07,0x0A,0xE7,
+0xFF,0xEE,0x32,0xEA,0xEA,0x00,0xD9,0xC6,0xF7,0xFF,0xFD,0xEE,0xEA,0x00,0xD9,0x0D,
+0x41,0x02,0x0D,0x21,0x06,0x9C,0x28,0xE7,0xFF,0xFE,0xAF,0x9C,0x30,0xC3,0x00,0x10,
+0x01,0x0D,0x21,0x0C,0xFC,0x98,0x07,0x0A,0x0D,0x41,0x08,0x8A,0xE4,0x8B,0x24,0x18,
+0x17,0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0x8C,0xD6,0xF8,0xFF,0x9E,
+0x52,0xE0,0x62,0x1F,0x19,0x1F,0x1A,0xE4,0x00,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x07,
+0x0B,0x18,0x17,0x00,0x9E,0xE1,0xD7,0x17,0xFF,0xDE,0x1E,0xE0,0x9E,0xC3,0x60,0x10,
+0x01,0x1A,0xE4,0x1F,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF8,0x12,0xF7,0x00,0xFA,
+0xFB,0x07,0x09,0xF2,0xFB,0x07,0x09,0x22,0xEC,0xCC,0xC2,0xE0,0x10,0x01,0xC3,0x40,
+0x10,0x01,0xF3,0xB7,0x0B,0x1A,0x9B,0x00,0xC2,0xE0,0x10,0x01,0xC3,0xC0,0x10,0x01,
+0xC1,0x00,0x10,0x01,0xFE,0xF7,0x07,0x2A,0xFF,0x5A,0x09,0x48,0x8B,0x38,0xFF,0xDE,
+0x0C,0x96,0xFD,0x08,0x09,0x0C,0xE4,0x00,0x01,0x09,0xC3,0x80,0x10,0x01,0x9A,0xE0,
+0xFF,0x9C,0x0B,0x04,0x8B,0x64,0x43,0x17,0xE4,0x0B,0x38,0x00,0x43,0x17,0xDC,0x4F,
+0x59,0x42,0x1B,0x38,0x21,0x1B,0x58,0x20,0x9E,0xE2,0x5E,0xE2,0x09,0x23,0xFF,0xA5,
+0x0C,0x81,0x04,0x50,0x60,0x20,0xE7,0xFF,0xFA,0xBC,0xC1,0x40,0x10,0x01,0xEA,0xEA,
+0x00,0xD9,0x0C,0x81,0x06,0x56,0xF7,0x02,0x22,0xE1,0x74,0xE4,0x00,0x00,0x8F,0xF3,
+0x9B,0x07,0x09,0x23,0x84,0x34,0x23,0x88,0x68,0x43,0x98,0x44,0xE4,0x00,0x00,0x0F,
+0x43,0x98,0xF4,0x15,0x5C,0x01,0x19,0x57,0x00,0x0B,0x9C,0x01,0xE4,0x00,0x00,0x21,
+0x0F,0x9A,0x02,0x4D,0x5C,0x82,0x4F,0x9C,0x42,0x19,0x57,0x00,0x1B,0x97,0x01,0x9F,
+0x21,0x9F,0x02,0x5F,0x39,0x04,0x9E,0xE2,0x9F,0x44,0xD7,0xB9,0xFE,0x2D,0xE7,0xFF,
+0xFF,0x45,0x50,0x60,0x80,0xE7,0xFF,0xEB,0xC6,0xEA,0xEA,0x00,0xD9,0xC6,0xF7,0xFF,
+0xFD,0xEE,0xEA,0x00,0xD9,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0xE7,0xFF,
+0xFC,0x41,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xF0,0x77,0x0B,0x90,0xC3,0x20,
+0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x0B,0xA2,0xFE,0xF7,0x07,0x90,0xFF,0x39,
+0x07,0x98,0x9B,0x60,0x98,0x81,0xE4,0x00,0x01,0x7D,0x0B,0x57,0x01,0xC3,0x4F,0xFF,
+0xE0,0x20,0x00,0x35,0x0B,0x57,0x03,0xC3,0x4F,0xFF,0xE4,0x20,0x00,0x49,0x0B,0x58,
+0x01,0x18,0x19,0x00,0x0F,0x57,0x01,0x0B,0x58,0x03,0x0F,0x57,0x03,0x13,0x59,0x00,
+0x23,0x41,0x22,0x0B,0x98,0x03,0x0B,0x57,0x03,0x43,0x5C,0xD5,0x5F,0x5A,0x06,0x4F,
+0xDA,0xFA,0x0B,0xB8,0x01,0x47,0x5E,0xD6,0x09,0x17,0x01,0x43,0x5A,0xF5,0x41,0x1D,
+0x45,0x5D,0x08,0x06,0x4F,0xC8,0xFA,0x45,0x1E,0x46,0x43,0xC8,0xF5,0x8F,0xDA,0x5F,
+0xCC,0x99,0x20,0x00,0x25,0x5F,0x46,0x51,0x20,0x01,0x11,0x18,0x99,0x00,0x0F,0xB7,
+0x01,0x0F,0x97,0x03,0xE4,0x00,0x00,0x71,0x0B,0x98,0x01,0x0B,0xD7,0x01,0x43,0xDC,
+0xF5,0x5F,0xDE,0x06,0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x0B,0x58,0x03,0x41,0x1E,0xED,
+0x0B,0xD7,0x03,0x43,0xDA,0xF5,0x5F,0xDE,0x06,0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x43,
+0xBD,0xF5,0xD7,0xA8,0x00,0x52,0x0F,0x97,0x01,0x0F,0x57,0x03,0x0B,0x57,0x01,0x9F,
+0x61,0x0F,0x58,0x01,0x5F,0x7B,0x00,0x0B,0x57,0x03,0x9F,0x21,0x0F,0x58,0x03,0x9E,
+0xE4,0x1F,0x18,0x30,0xD7,0x63,0xFA,0x36,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,
+0x3D,0xF9,0x1C,0x21,0xD8,0xCA,0xF7,0x3D,0xF8,0x0D,0x41,0x20,0x0D,0x61,0x1C,0x0D,
+0x81,0x18,0x0D,0xA1,0x14,0x0D,0xC1,0x10,0x0D,0xE1,0x0C,0x0E,0x01,0x08,0x0E,0x21,
+0x04,0x0D,0x21,0x24,0xC1,0x80,0x10,0x01,0xFD,0x8C,0x08,0x86,0x0A,0x2C,0x01,0xC6,
+0x31,0x7F,0xFF,0x0E,0x2C,0x01,0x13,0x38,0x00,0xC3,0x00,0x10,0x01,0xFB,0x38,0x00,
+0xC0,0x13,0x37,0x00,0xC2,0xE0,0x10,0x01,0xFB,0x37,0x07,0x09,0xC1,0xE0,0x10,0x01,
+0xC1,0xC0,0x10,0x01,0xC3,0x60,0x10,0x01,0xC3,0x40,0x10,0x01,0x5D,0xA3,0x00,0xFD,
+0xEF,0x09,0x0C,0xFD,0xCE,0x07,0x8C,0xFE,0x00,0x80,0x00,0xFD,0x5B,0x07,0x0A,0xFD,
+0x7A,0x0B,0x90,0xD1,0xA1,0x12,0x8E,0x0B,0x2B,0x16,0x0A,0xEB,0x18,0x46,0x11,0x85,
+0x0E,0xEB,0x17,0x0E,0x0C,0x01,0x0F,0x2B,0x19,0x13,0x0B,0x00,0xD3,0x01,0x1F,0x79,
+0x0B,0x6B,0x46,0x0B,0x0B,0x48,0x0F,0x6B,0x49,0x0F,0x0B,0x47,0xD7,0x17,0x1F,0x4C,
+0x0E,0xEB,0x47,0x0F,0x0B,0x17,0x0F,0x2B,0x49,0x0F,0x6B,0x19,0xE4,0x00,0x07,0xB3,
+0xC2,0xE0,0x10,0x01,0x5F,0x98,0x04,0xEA,0xF7,0x0B,0x21,0x5F,0x17,0x15,0x4A,0xFC,
+0xB8,0x0E,0xEB,0x13,0xCF,0x39,0x00,0x30,0x9A,0xE0,0x8F,0x2B,0x0B,0x19,0x18,0x27,
+0x1C,0x50,0xC2,0xE0,0x10,0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,0x23,0x5F,0x17,0x15,
+0x4A,0xF9,0xB8,0x0E,0xEB,0x15,0xCE,0xFB,0x00,0x30,0x8E,0xEB,0x0B,0x17,0x16,0x9A,
+0xE0,0x27,0x1C,0x50,0xC2,0xE0,0x10,0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,0x21,0x5F,
+0x17,0x15,0x4A,0xF9,0xB8,0x0E,0xEB,0x43,0xCF,0x7B,0x00,0x30,0x9A,0xE0,0x8F,0x6B,
+0x0B,0x1B,0x18,0x27,0x1C,0x50,0xC2,0xE0,0x10,0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,
+0x23,0x5F,0x17,0x15,0x4A,0xF9,0xB8,0x0E,0xEB,0x45,0xE4,0x00,0x00,0x63,0xC3,0x00,
+0x10,0x01,0x5F,0x77,0x04,0xEB,0x18,0x0B,0x21,0x5E,0xF8,0x15,0x4B,0x1B,0xC0,0x0F,
+0x0B,0x13,0x9A,0xE0,0x27,0x3C,0x50,0xC2,0xE0,0x10,0x01,0x5F,0x19,0x04,0xEA,0xF7,
+0x0B,0x23,0x5F,0x37,0x15,0x4A,0xF8,0xB8,0x0E,0xEB,0x15,0xE7,0xFF,0xFB,0x6E,0x12,
+0xEB,0x00,0x26,0xE4,0x7D,0x0B,0x2B,0x43,0x0B,0x0B,0x13,0x43,0x19,0xC5,0x0B,0x2B,
+0x45,0x0F,0x0B,0x1B,0x0B,0x0B,0x15,0x43,0x19,0xC5,0x0F,0x0B,0x1D,0xE4,0x00,0x00,
+0x15,0x0C,0x0B,0x1B,0x0C,0x0B,0x1D,0xC3,0x00,0x10,0x01,0xF3,0x18,0x00,0xC0,0x23,
+0x01,0x9E,0x53,0x00,0x52,0x0B,0x2B,0x13,0x1B,0x0A,0x00,0x4F,0x79,0x41,0x0B,0x0B,
+0x15,0x4F,0x7B,0x20,0x4F,0x58,0x41,0x1B,0x2A,0x02,0x57,0x5A,0x0F,0x1B,0x0A,0x03,
+0x47,0x5B,0xD5,0x1B,0x4A,0x01,0x26,0xE4,0xA1,0x0B,0x0B,0x1A,0x0A,0xEB,0x1C,0x4F,
+0x38,0x42,0x4F,0x57,0x42,0x5F,0x39,0x04,0x57,0x5A,0x0F,0x4F,0x39,0x20,0x1B,0x0A,
+0x05,0x47,0x39,0xD5,0x1A,0xEA,0x06,0x1B,0x2A,0x04,0xE4,0x00,0x00,0x1B,0x18,0x0A,
+0x04,0x18,0x0A,0x05,0x18,0x0A,0x06,0x88,0x6A,0x98,0x87,0xE7,0xFF,0xF6,0x50,0x18,
+0x6A,0x07,0xE4,0x00,0x01,0x8B,0x8B,0x0A,0x18,0x18,0x00,0xC3,0x20,0x10,0x01,0x9F,
+0x01,0xFF,0x39,0x07,0x8C,0xD7,0x19,0xFF,0x9E,0x53,0x00,0x62,0x1B,0x0A,0x00,0x0B,
+0x0B,0x13,0x4F,0x38,0x41,0x1B,0x0A,0x02,0x0B,0x0B,0x15,0x1B,0x2A,0x01,0x1B,0x0A,
+0x04,0x4F,0x38,0x41,0x57,0x17,0x01,0x4E,0xF7,0x20,0x53,0x18,0x20,0x52,0xF7,0x02,
+0x1B,0x0A,0x11,0x1A,0xEA,0x12,0x0A,0xEB,0x1A,0x4F,0x17,0x42,0x1A,0xEA,0x0E,0x1B,
+0x0A,0x0D,0x0A,0xEB,0x1C,0x4F,0x17,0x42,0x1B,0x2A,0x03,0x1B,0x0A,0x0F,0x1A,0xEA,
+0x10,0x88,0x6A,0x50,0x80,0x1F,0xE7,0xFF,0xF5,0x7A,0xC2,0xE0,0x10,0x01,0xC3,0x20,
+0x10,0x01,0xC3,0x80,0x10,0x01,0x18,0x6A,0x1F,0xFE,0xF7,0x07,0x2A,0xFF,0x39,0x09,
+0x48,0x9B,0x00,0xC3,0x60,0x10,0x01,0xFF,0x9C,0x0C,0x96,0xF3,0x5B,0x07,0x09,0x23,
+0x44,0x34,0x23,0x48,0x68,0x43,0x58,0x7C,0xE4,0x00,0x00,0x0F,0x43,0x58,0xE4,0x17,
+0xBA,0x01,0x1B,0xB7,0x00,0x0B,0x5A,0x01,0xE4,0x00,0x00,0x21,0x0F,0x59,0x02,0x4F,
+0xBA,0x82,0x4F,0x5A,0x42,0x1B,0xB7,0x00,0x1B,0x57,0x01,0x9F,0x02,0x9E,0xE2,0x9F,
+0x24,0x5F,0x07,0x49,0x23,0xFF,0x1D,0x0A,0xEC,0x00,0xD2,0xFF,0x0F,0x6C,0x9A,0xE1,
+0xE4,0x00,0x02,0xF5,0xD1,0xA0,0x05,0x66,0xFE,0xE0,0x7F,0xFF,0xC3,0x20,0x10,0x01,
+0xC3,0x40,0x10,0x01,0xEE,0xF9,0x07,0x91,0xF8,0x1A,0x07,0x98,0xFF,0x39,0x07,0x90,
+0xFF,0x5A,0x07,0x98,0x0E,0xF9,0x03,0x0E,0xF9,0x05,0x0E,0xF9,0x07,0x18,0x1A,0x01,
+0xF2,0xF8,0x00,0xC0,0x22,0xE0,0xB2,0x52,0xE0,0x52,0x1A,0xEA,0x00,0x9A,0xFF,0x88,
+0x6A,0x1A,0xEA,0x01,0x1A,0xEA,0x02,0x1A,0xEA,0x03,0x1A,0xEA,0x04,0x1A,0xEA,0x05,
+0x1A,0xEA,0x06,0x98,0x87,0xE7,0xFF,0xF3,0xFC,0x18,0x6A,0x07,0xE4,0x00,0x00,0x89,
+0x8A,0xEA,0x18,0x17,0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0x8C,0xD6,
+0xF8,0xFF,0x9E,0x52,0xE0,0x62,0x9B,0x1F,0x1A,0xEA,0x00,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x07,0x0B,0x1B,0x17,0x00,0xC3,0x20,0x10,0x01,0x9E,0xE1,0xFF,0x39,0x07,0x29,
+0xD6,0xF9,0xFF,0x9E,0x88,0x6A,0x50,0x80,0x1F,0xE7,0xFF,0xF3,0x74,0x18,0x6A,0x1F,
+0x0A,0xEC,0x01,0x0C,0x0E,0x00,0x46,0x10,0xBD,0x0E,0x0C,0x01,0xE4,0x00,0x02,0x77,
+0xD1,0xA2,0x06,0x8E,0xF2,0xF8,0x00,0xC0,0x22,0xE0,0xD2,0x52,0xE0,0x52,0xC3,0x00,
+0x10,0x01,0x1A,0xEA,0x00,0xEB,0x18,0x08,0x31,0x9A,0xFF,0x1B,0x0A,0x05,0x1A,0xEA,
+0x01,0x1A,0xEA,0x02,0x1A,0xEA,0x03,0x1A,0xEA,0x04,0x1A,0xEA,0x06,0x88,0x6A,0x98,
+0x87,0xE7,0xFF,0xF2,0xE4,0x18,0x6A,0x07,0xE4,0x00,0x01,0x15,0x8A,0xEA,0x18,0x17,
+0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0x8C,0xD6,0xF8,0xFF,0x9E,0x52,
+0xE0,0x62,0x1A,0xEA,0x00,0x0A,0xEB,0x13,0x4F,0x17,0x41,0x1A,0xEA,0x02,0x1B,0x0A,
+0x01,0x0A,0xEB,0x15,0x4F,0x17,0x41,0x1A,0xEA,0x04,0x1B,0x0A,0x03,0x12,0xEB,0x00,
+0x57,0x17,0x01,0x4E,0xF7,0x20,0x53,0x18,0x20,0x52,0xF7,0x02,0x1B,0x0A,0x11,0x1A,
+0xEA,0x12,0x0A,0xEB,0x1A,0x4F,0x17,0x42,0x1A,0xEA,0x0E,0x1B,0x0A,0x0D,0x0A,0xEB,
+0x1C,0x4F,0x17,0x42,0x1A,0xEA,0x10,0x1B,0x0A,0x0F,0x88,0x6A,0x50,0x80,0x1F,0xE7,
+0xFF,0xF2,0x08,0x9A,0xE0,0x18,0x6A,0x1F,0x43,0x17,0x7C,0x0B,0x38,0x00,0x43,0x17,
+0x54,0x4F,0x59,0x42,0x1B,0x38,0x21,0x1B,0x58,0x20,0x9E,0xE2,0x5E,0xE7,0x49,0x23,
+0xFF,0xA5,0x46,0x11,0x85,0x9A,0xE2,0x0E,0x0C,0x01,0x0E,0xEE,0x00,0xE4,0x00,0x00,
+0xD5,0x21,0xAD,0x9A,0x1E,0xE0,0xA7,0x1A,0xEA,0x00,0x9A,0xE6,0x1A,0xEA,0x02,0x52,
+0xE0,0x50,0x1A,0xEA,0x03,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x31,0x46,0x11,0x85,
+0x18,0x0A,0x01,0x0E,0x0C,0x01,0x1A,0xEA,0x04,0x88,0x6A,0x98,0x85,0xE7,0xFF,0xF1,
+0x4C,0x0D,0xAE,0x00,0x18,0x6A,0x05,0xE4,0x00,0x00,0x61,0x9B,0x00,0xD2,0xFF,0xE6,
+0x10,0xE7,0xFF,0xF9,0x5B,0x0A,0xEB,0x46,0x0B,0x0B,0x16,0x5E,0xF8,0x15,0x4B,0x21,
+0x01,0xCE,0xF9,0x00,0x30,0x8E,0xEB,0x4B,0x60,0x0A,0x0B,0x17,0x16,0x9A,0xE0,0xD3,
+0x1F,0xE0,0x8C,0xE7,0xFF,0xF8,0x3D,0x0E,0x21,0x06,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,
+0x0D,0xC1,0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,
+0x21,0x26,0x1C,0x21,0x28,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,0x81,0x20,
+0x5D,0x43,0x00,0x5D,0x84,0x00,0x42,0xEC,0x55,0x9E,0xE1,0x5E,0xF7,0x00,0x57,0x17,
+0x03,0x4E,0xF7,0x11,0x5F,0x00,0x09,0x0D,0x61,0x24,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,
+0x49,0xA1,0x01,0x0D,0x21,0x2C,0x8D,0xB7,0xC1,0xD8,0x00,0x21,0xE4,0x00,0x60,0xE2,
+0x99,0x60,0xFD,0xCE,0xBA,0xA7,0xE4,0x00,0x00,0xE3,0x88,0x61,0x50,0x80,0x22,0x50,
+0xA0,0x18,0xE7,0xFF,0xB9,0xDC,0x9A,0xE4,0x43,0x0E,0x54,0x13,0x58,0x00,0x1F,0x01,
+0x18,0x4F,0x3A,0x09,0x57,0x5A,0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,
+0x50,0x7B,0x47,0x5A,0xC4,0x5F,0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,
+0x02,0x1F,0x61,0x18,0x47,0x18,0xD5,0x8F,0x3B,0x1B,0x19,0xE8,0x9D,0x41,0x5D,0x4A,
+0x00,0xD5,0x4C,0x00,0xE1,0x06,0xE0,0x81,0xCC,0x6B,0x00,0x18,0x88,0x81,0x8C,0x77,
+0x50,0xA0,0x18,0x9D,0x61,0xE7,0xFF,0xBA,0x16,0xE4,0x00,0x00,0x1D,0x9E,0xE1,0xD2,
+0xE8,0xFD,0x4E,0xE7,0xFF,0xFF,0xC5,0x5E,0xEB,0x00,0xD5,0xB7,0xFC,0x85,0xE4,0x00,
+0x60,0x04,0x0D,0x21,0x2E,0x0D,0xC1,0x1A,0x0D,0xA1,0x1E,0x0D,0x81,0x22,0x0D,0x61,
+0x26,0x0D,0x41,0x2A,0x1C,0x21,0x30,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x03,
+0x2E,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x07,0xE6,0x85,0x29,0x1C,0x21,0xD0,
+0x0D,0x21,0x2C,0x0D,0x41,0x28,0x0D,0x61,0x24,0xD0,0x69,0x0C,0x95,0x4F,0x03,0x10,
+0xC2,0xF8,0x00,0x21,0xC1,0x78,0x00,0x21,0xFE,0xF7,0xBA,0x40,0xFD,0x6B,0xBA,0xA7,
+0x8E,0xF8,0x0E,0xF7,0x02,0x86,0xE9,0x1C,0x83,0x01,0xCC,0x63,0x00,0x1A,0xCC,0x84,
+0x00,0x1A,0x9C,0x9F,0xE7,0xFF,0xFD,0xC6,0xE4,0x00,0x02,0xC7,0x0C,0x61,0x04,0xE4,
+0x00,0x5E,0xFC,0x0C,0x61,0x06,0x99,0x40,0x9C,0x7E,0x5C,0x63,0x00,0xCC,0x63,0x00,
+0x1A,0x8D,0x63,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,0xFF,0xB7,0xE8,
+0x8B,0x2A,0x9A,0xE4,0x5F,0x23,0x39,0x20,0x00,0xDD,0x43,0x0B,0xCC,0x13,0x98,0x00,
+0x4F,0x7C,0x09,0x57,0x9C,0x01,0x5F,0x80,0x01,0x4B,0x50,0x7B,0x1F,0x01,0x20,0x8F,
+0x1B,0x17,0x18,0xE8,0x47,0x1A,0xC4,0x5F,0x57,0x02,0x20,0x00,0x25,0x4F,0x57,0x20,
+0x5F,0x5A,0x02,0x1F,0x81,0x20,0x47,0x5A,0xC5,0x8F,0x7C,0x1B,0x5B,0xE8,0x9F,0x21,
+0x9E,0xE1,0xD2,0xE8,0xFE,0x16,0x06,0xE0,0x81,0xCC,0x6A,0x00,0x06,0x1C,0x81,0x08,
+0x8C,0x77,0x50,0xA0,0x18,0xE7,0xFF,0xB8,0x16,0x9D,0x44,0x5D,0x43,0x89,0x23,0xFE,
+0x55,0xE4,0x00,0x01,0xAD,0xE4,0x00,0x5D,0xF0,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,
+0xA0,0x18,0xE7,0xFF,0xB6,0xFC,0xC3,0x78,0x00,0x21,0x9A,0xE4,0xFF,0x7B,0xBA,0xA4,
+0xD2,0xE7,0x01,0xC2,0x43,0x1B,0xBC,0x13,0x58,0xFC,0x1F,0x01,0x20,0x4F,0x3A,0x09,
+0x57,0x5A,0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,0x50,0x7B,0x47,0x5A,
+0xC4,0x5F,0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,0x02,0x1F,0x81,0x20,
+0x47,0x18,0xD5,0x8F,0x3C,0x1B,0x19,0xE8,0x9E,0xE1,0xD2,0xE8,0xFE,0x36,0xE4,0x00,
+0x00,0xD9,0xE4,0x00,0x5D,0x36,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,
+0xFF,0xB6,0x42,0x8B,0x0B,0xE4,0x00,0x00,0x9F,0x43,0x38,0xBC,0x13,0x79,0xFC,0x1F,
+0x21,0x20,0x4F,0x5B,0x09,0x57,0x7B,0x01,0x8F,0x3A,0x13,0x39,0xE8,0x5F,0x60,0x01,
+0x4B,0x70,0x7B,0x47,0x7B,0xCC,0x5F,0x37,0x02,0x5F,0x7B,0x02,0x20,0x00,0x25,0x4F,
+0x37,0x20,0x5F,0x39,0x02,0x1F,0x81,0x20,0x47,0x39,0xDD,0x8F,0x5C,0x1B,0x3A,0xE8,
+0x9E,0xE1,0xD2,0xE8,0xFE,0x3E,0xC2,0xF8,0x00,0x21,0x9F,0x04,0xFE,0xF7,0xBA,0xBF,
+0xD7,0x17,0x00,0x52,0x9A,0xE4,0xE7,0xFF,0xFF,0x67,0x04,0x60,0x81,0x1C,0x81,0x08,
+0x50,0xA0,0x18,0xE7,0xFF,0xB6,0x5A,0xE4,0x00,0x5C,0x72,0x0D,0x61,0x26,0x0D,0x41,
+0x2A,0x0D,0x21,0x2E,0x1C,0x21,0x30,0x85,0x29,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x0D,
+0x21,0x14,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x0D,0xA1,0x04,0x89,0x43,0xD0,0x67,0x06,
+0x3A,0xD0,0x67,0x00,0x65,0xD0,0x61,0x0B,0x1D,0xE4,0x00,0x00,0x19,0xD0,0x69,0x0A,
+0xDE,0xE4,0x00,0x02,0x19,0xC1,0xA0,0x10,0x01,0xCD,0x63,0x00,0x1A,0xFD,0xAD,0x07,
+0xE8,0x99,0x80,0x8D,0x6D,0x13,0x4B,0x01,0x13,0x2B,0x00,0x13,0x0B,0x03,0x12,0xEB,
+0x02,0x4C,0x9A,0xC0,0x4C,0xB8,0xC0,0x4F,0x5A,0x80,0x4F,0x18,0x80,0x8C,0x9A,0x8C,
+0xB8,0x8C,0x99,0x8C,0xB7,0x4F,0x39,0x40,0x4E,0xF7,0x40,0x88,0x6C,0x8C,0x99,0x8C,
+0xB7,0x9D,0x81,0xE4,0x00,0x5D,0xD8,0x5D,0x8C,0x00,0x9D,0x64,0xD1,0x86,0xFE,0x4E,
+0x98,0x66,0x98,0x80,0x98,0xA0,0xCD,0x4A,0x00,0x1A,0x8D,0x4D,0x10,0xCA,0x18,0xE4,
+0x00,0x5E,0x08,0x98,0x66,0x98,0x80,0x98,0xA1,0x10,0xCA,0x18,0xE4,0x00,0x5D,0xEE,
+0x98,0x66,0x98,0x81,0x98,0xA0,0x10,0xCA,0x19,0xE4,0x00,0x5D,0xD4,0x98,0x66,0x98,
+0x81,0x98,0xA1,0x10,0xCA,0x19,0xE4,0x00,0x5D,0xBA,0x98,0x66,0x98,0x82,0x98,0xA0,
+0x98,0xC0,0xE4,0x00,0x5D,0xA2,0x98,0x66,0x98,0x82,0x98,0xA1,0x98,0xC0,0xE4,0x00,
+0x5D,0x8A,0x98,0x66,0x98,0x83,0x98,0xA0,0x98,0xC0,0xE4,0x00,0x5D,0x72,0x98,0x66,
+0xE4,0x00,0x00,0x83,0xC1,0xA0,0x10,0x01,0x99,0x40,0xFD,0xAD,0x08,0x06,0x5D,0x8A,
+0x00,0x41,0x6A,0x6C,0x98,0x60,0x88,0x8C,0x98,0xA0,0x10,0xCB,0x00,0xE4,0x00,0x5D,
+0x2C,0x98,0x60,0x88,0x8C,0x98,0xA1,0x10,0xCB,0x00,0x9D,0x41,0xE4,0x00,0x5D,0x0E,
+0x21,0x4F,0x7A,0x98,0x60,0x98,0x83,0x98,0xA0,0x98,0xC0,0xE4,0x00,0x5C,0xF0,0x98,
+0x60,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,
+0x98,0x83,0x98,0xA1,0x98,0xC0,0x1C,0x21,0x18,0xE4,0x00,0x5C,0xB5,0xC3,0x00,0x10,
+0x01,0x0D,0xA1,0x06,0xFE,0xF8,0x08,0x02,0xF3,0x38,0x08,0x02,0x13,0x57,0x01,0x13,
+0x17,0x03,0x4C,0x9A,0xC0,0x12,0xF7,0x02,0x4C,0xB8,0xC0,0x4F,0x5A,0x80,0x4F,0x18,
+0x80,0x8C,0x9A,0x8C,0xB8,0x8C,0x99,0x8C,0xB7,0x4F,0x39,0x40,0x4E,0xF7,0x40,0x0D,
+0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x98,0x60,0x8C,0x99,0x8C,
+0xB7,0x1C,0x21,0x18,0xE4,0x00,0x5B,0xB7,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,
+0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0x1C,0x21,0xE0,0x0D,
+0xC1,0x08,0x0D,0x21,0x1C,0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,
+0x0C,0x0D,0xE1,0x04,0x89,0xC4,0xD0,0x66,0x00,0xB5,0xC2,0xF8,0x00,0x21,0xFE,0xF7,
+0xBA,0x68,0x4C,0x63,0x10,0x8C,0x77,0x0E,0xE3,0x02,0x86,0xE9,0x99,0xED,0xC9,0x80,
+0x3E,0x0C,0xE4,0x00,0x01,0xC9,0xD0,0x81,0x04,0x41,0x1E,0xE4,0xFE,0xD2,0xE1,0x04,
+0x89,0x5C,0x80,0xE1,0xCA,0xE0,0x3E,0x0C,0xC9,0x80,0x10,0x06,0x49,0xE1,0x6B,0x49,
+0x8C,0xB8,0x99,0xA2,0x99,0x41,0x99,0x60,0x48,0x60,0x1A,0xE4,0x00,0x01,0x87,0xD0,
+0x81,0x04,0x09,0x1E,0xE4,0xFE,0xD2,0xE1,0x04,0x51,0x5C,0x80,0xE1,0xCA,0xE0,0x3E,
+0x0C,0xC9,0x80,0x10,0x06,0x99,0xA0,0x49,0xE1,0x6B,0x49,0x8C,0xB8,0x89,0x4D,0x99,
+0x60,0x48,0x61,0x1B,0xE4,0x00,0x01,0x35,0x24,0x85,0xE9,0x5C,0x80,0xE1,0xCA,0xE0,
+0x3E,0x0C,0xC9,0x80,0x08,0x03,0x49,0xE1,0x6B,0x49,0x8C,0xB8,0xE4,0x00,0x00,0xD9,
+0x24,0x85,0xC1,0x5C,0x80,0xE1,0xCA,0xE0,0x3E,0x0C,0xC9,0x80,0x10,0x06,0x49,0xE1,
+0x6B,0x49,0x8C,0xB8,0xE4,0x00,0x00,0xC5,0x99,0xE1,0xE4,0x00,0x00,0x95,0x99,0xE7,
+0xC9,0x80,0x3E,0x0C,0x99,0xA2,0x99,0x41,0x99,0x60,0xE4,0x00,0x00,0x21,0x99,0xE7,
+0xC9,0x80,0x3E,0x0C,0x99,0xA2,0x99,0x41,0x99,0x63,0x98,0x60,0xE4,0x00,0x00,0x85,
+0x99,0xA0,0x99,0xE7,0xC9,0x80,0x3E,0x0C,0x89,0x4D,0x99,0x60,0xE4,0x00,0x00,0x21,
+0x99,0xA0,0x99,0xE7,0xC9,0x80,0x3E,0x0C,0x89,0x4D,0x99,0x63,0x98,0x61,0xE4,0x00,
+0x00,0x41,0x99,0xE7,0xC9,0x80,0x08,0x03,0x99,0xA0,0x89,0x4D,0xE4,0x00,0x00,0x1D,
+0x99,0xE7,0xC9,0x80,0x10,0x06,0x99,0xA2,0x99,0x41,0x99,0x60,0x98,0x63,0xE7,0xFF,
+0x7E,0x28,0x88,0x6A,0x88,0x8D,0xE4,0x00,0x73,0x4A,0x88,0x6A,0x88,0x8C,0xE4,0x00,
+0x5A,0x6A,0x21,0xA0,0x3E,0x88,0x6A,0x88,0x8C,0xE4,0x00,0x6F,0x24,0xE4,0x00,0x00,
+0x1F,0x21,0xA0,0x2C,0x88,0x6A,0x88,0x8C,0xE4,0x00,0x70,0x80,0x88,0x6A,0x05,0x80,
+0xFF,0xC9,0x8C,0xFF,0xFF,0x88,0x8C,0xE4,0x00,0x5C,0xF0,0x88,0x8C,0x88,0x6A,0xE4,
+0x00,0x5A,0x78,0x98,0x62,0xE4,0x00,0x57,0xF8,0xC2,0xE0,0x10,0x01,0x98,0x60,0xEC,
+0x17,0x07,0xDC,0xC1,0xA0,0x10,0x01,0xEC,0x0D,0x07,0xE0,0xE4,0x00,0x64,0x34,0x98,
+0x60,0xE4,0x00,0x5C,0x34,0x98,0x60,0x88,0x8C,0xE4,0x00,0x5B,0x24,0x88,0x6F,0xE4,
+0x00,0x57,0x50,0x98,0x60,0xE4,0x00,0x5D,0x74,0x21,0x64,0x5E,0xED,0x6D,0x07,0xE0,
+0x98,0x61,0xE4,0x00,0x63,0xE6,0x98,0x63,0xE4,0x00,0x5B,0xE6,0xE4,0x00,0x00,0x2B,
+0x21,0x6C,0x46,0x98,0x61,0x88,0x8C,0xE4,0x00,0x5A,0xC8,0x98,0x61,0xE4,0x00,0x5D,
+0x24,0xE4,0x00,0x61,0x08,0x1C,0x63,0x13,0x5C,0x83,0x00,0x88,0x6A,0x5C,0x82,0x93,
+0x20,0x00,0x1B,0x50,0x80,0x14,0xE4,0x00,0x5E,0x26,0x88,0x6A,0x98,0x8C,0xE4,0x00,
+0x5D,0x48,0xC2,0xE0,0x10,0x01,0x88,0x6E,0xED,0xD7,0x07,0xE4,0xE7,0xFF,0xF5,0xA2,
+0x88,0x6E,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,0x0D,0x61,
+0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0xE7,0xFF,0xF8,0xBF,0xC2,0xE0,
+0x10,0x01,0x9C,0x38,0xEC,0x77,0x03,0x2C,0x0D,0x41,0x00,0x0D,0x21,0x04,0x89,0x43,
+0xE7,0xFF,0xFB,0xB8,0x25,0x44,0xD3,0x99,0x40,0x88,0x6A,0x98,0x80,0x9D,0x41,0xE4,
+0x00,0x63,0x26,0x5D,0x4A,0x00,0xD1,0x44,0xFF,0x9E,0xE7,0xFF,0xE1,0xEC,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x00,0xE6,0x0C,0x77,0x0B,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x06,
+0x87,0x53,0x18,0x20,0xEF,0x17,0x06,0x87,0x0D,0x41,0x02,0x0D,0x21,0x06,0x9C,0x28,
+0x85,0x29,0x1C,0x21,0xD8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x20,0x0D,0xC1,0x10,0xEE,
+0xF7,0x00,0xE2,0x0D,0x21,0x24,0x0D,0x61,0x1C,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x0D,
+0xE1,0x0C,0x0E,0x01,0x08,0x0E,0x21,0x04,0x0E,0x41,0x00,0x5E,0xE0,0x41,0x89,0x43,
+0x49,0xC1,0x01,0x24,0x64,0x59,0x1E,0xE3,0xFE,0xD2,0xE1,0x04,0x11,0xD0,0x67,0x04,
+0x2A,0xD0,0x69,0x04,0x3A,0xE4,0x00,0x00,0xED,0x51,0x60,0x1A,0x9A,0xE0,0x20,0x60,
+0x5C,0x9A,0xE0,0xD1,0x45,0x00,0x92,0x9A,0xE1,0x21,0x44,0x30,0x21,0x4C,0x24,0xD1,
+0x46,0x00,0x32,0x9A,0xE0,0xCE,0xF7,0x00,0x34,0xC1,0xE0,0x10,0x01,0xC2,0x00,0x10,
+0x01,0xFD,0xEF,0x08,0xD8,0xFE,0x10,0x07,0xA8,0x99,0x80,0xC2,0x40,0x10,0x01,0x8D,
+0xF7,0x8E,0x17,0x89,0xAC,0x1E,0x2A,0xFE,0xFE,0x52,0x08,0x4A,0x88,0x6D,0x98,0x81,
+0x88,0xAE,0xE4,0x00,0x6B,0x76,0x42,0xEF,0x64,0x25,0x44,0x41,0x42,0xF0,0x64,0x26,
+0x24,0x29,0xD1,0x47,0x00,0x56,0x42,0xEC,0x94,0x0C,0x77,0x01,0x9D,0xA1,0x9D,0x82,
+0x5D,0xAD,0x00,0xD5,0x6D,0xFE,0xCD,0xE4,0x00,0x00,0x41,0x51,0x60,0x1A,0xE4,0x00,
+0x00,0x21,0x99,0x63,0xE7,0xFF,0xFF,0x3F,0x99,0x64,0xE7,0xFF,0xFF,0x33,0x9A,0xE0,
+0x21,0x4A,0x06,0xE7,0xFF,0xFF,0x25,0x0E,0x41,0x02,0x0E,0x21,0x06,0x0E,0x01,0x0A,
+0x0D,0xE1,0x0E,0x0D,0xC1,0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,
+0x41,0x22,0x0D,0x21,0x26,0x1C,0x21,0x28,0x85,0x29,0x1C,0x21,0xB8,0x0D,0x41,0x40,
+0x0D,0x21,0x44,0x0D,0x61,0x3C,0x0D,0x81,0x38,0x89,0x44,0xD0,0x67,0x04,0xAD,0xC2,
+0xF8,0x00,0x21,0xFE,0xF7,0xBA,0x84,0x4C,0x63,0x10,0xC1,0x60,0x10,0x01,0x8C,0x77,
+0xC1,0x80,0x10,0x01,0x0E,0xE3,0x02,0xFD,0x6B,0x0A,0x9C,0xFD,0x8C,0x08,0xD8,0x86,
+0xE9,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x06,0x87,0xC7,0x18,0xFF,0xDF,0xEF,0x17,0x06,
+0x87,0xD0,0x88,0x02,0xFD,0x9A,0xE1,0x4E,0xF7,0x24,0xC6,0xF7,0x01,0x83,0x22,0xE1,
+0x48,0xE4,0x00,0x00,0x93,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x06,0x87,0xC7,0x18,0xFF,
+0xDF,0xEF,0x17,0x06,0x87,0xD1,0x47,0x01,0xDD,0x9A,0xE1,0x4E,0xF7,0x54,0x57,0x17,
+0x8C,0x23,0x00,0xA6,0x56,0xF7,0x03,0x22,0xE0,0xA4,0x88,0x6A,0xE7,0xFF,0xFD,0x0C,
+0xCC,0x8A,0x00,0x34,0xCC,0xAA,0x00,0x68,0x1C,0x61,0x04,0x8C,0x8C,0x8C,0xAB,0x50,
+0xC0,0x1A,0xE4,0x00,0x18,0x54,0xE4,0x00,0x00,0x15,0x88,0x6A,0xE7,0xFF,0xFC,0xCC,
+0x0D,0x81,0x3A,0x0D,0x61,0x3E,0x0D,0x41,0x42,0x0D,0x21,0x46,0x1C,0x21,0x48,0x85,
+0x29,0xC2,0xE0,0x10,0x01,0x98,0x60,0xFE,0xF7,0x07,0xA8,0xCB,0x40,0xFF,0xFE,0x0B,
+0x37,0x00,0x4F,0x19,0xFA,0x47,0x38,0xCE,0x43,0x19,0xC5,0x8C,0x78,0x5F,0x03,0x04,
+0xCB,0x20,0xFF,0xFE,0x9E,0xE2,0x5C,0x79,0x17,0x48,0x78,0xD0,0xC3,0x00,0x10,0x01,
+0xFF,0x18,0x07,0xDC,0xD6,0xF8,0xFE,0xDE,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x17,
+0x07,0x9C,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x07,0xA0,0xC2,0xE0,0x10,0x01,0x9B,0x04,
+0xEC,0x17,0x07,0xA4,0x98,0x64,0xC2,0xE0,0x10,0x01,0x98,0x80,0xEF,0x17,0x03,0x2C,
+0xE7,0xFF,0xF7,0x19,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0x9E,0xE4,
+0x00,0x00,0x41,0x20,0x68,0x3E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0xA2,0xE4,0x00,
+0x00,0x23,0x9A,0xE0,0x20,0x6C,0x2E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0xA6,0x88,
+0x77,0x85,0x29,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x07,0x9C,0xE4,0x00,
+0x00,0x3D,0x20,0x68,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x07,0xA0,0xE4,0x00,0x00,
+0x1F,0x20,0x6C,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x07,0xA4,0x85,0x29,0x1C,0x21,
+0xE0,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,
+0x0C,0x0D,0xC1,0x08,0x0D,0xE1,0x04,0xEE,0xF7,0x08,0x22,0x0D,0x21,0x1C,0xC1,0x80,
+0x10,0x01,0xC1,0x60,0x10,0x01,0x5D,0xE3,0x06,0x5D,0xC4,0x06,0x89,0x45,0x89,0xA6,
+0x56,0xF7,0x01,0xFD,0x8C,0x08,0x44,0xFD,0x6B,0x08,0x14,0x22,0xE0,0xE0,0x98,0xA2,
+0x25,0x44,0x43,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBB,0x94,0x8E,0xEA,0x10,0xB7,0x00,
+0x0E,0xEB,0x02,0x5E,0xE0,0x29,0x88,0x6F,0x88,0x8E,0x48,0xA5,0x12,0xE7,0xFF,0x87,
+0x58,0x5C,0x63,0x00,0x20,0x60,0x3C,0x0C,0x0C,0x00,0x0C,0x0D,0x00,0x98,0x61,0xE4,
+0x00,0x00,0xED,0x21,0x45,0x38,0x21,0x40,0x28,0x21,0x4D,0x8E,0xE4,0x00,0x00,0xA7,
+0x0E,0xEB,0x02,0x22,0xE4,0x36,0xE7,0xFF,0x8A,0x5A,0x98,0x62,0xE4,0x00,0x00,0x5D,
+0x0E,0xEC,0x02,0x22,0xE4,0x86,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x08,0x36,0xC2,0xE0,
+0x10,0x01,0xEC,0x97,0x08,0x22,0xE7,0xFF,0x90,0x76,0x88,0x6D,0xE7,0xFF,0x90,0x8E,
+0xE4,0x00,0x00,0x15,0xE7,0xFF,0x89,0xFE,0x98,0x60,0x0C,0x0B,0x00,0xE4,0x00,0x00,
+0x4B,0x88,0x6F,0x88,0x8E,0xE7,0xFF,0x8A,0x00,0x98,0x60,0xE4,0x00,0x00,0x2F,0xE7,
+0xFF,0x89,0xC8,0x9A,0xE1,0x0E,0xEB,0x00,0xE4,0x00,0x00,0x11,0xE7,0xFF,0x89,0xAE,
+0x98,0x62,0x0D,0x4C,0x00,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,
+0x12,0x0D,0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0xC3,
+0x80,0x10,0x01,0xC3,0x60,0x10,0x01,0xC3,0x40,0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,
+0x00,0x10,0x01,0xFF,0x9C,0x08,0x28,0xFF,0x7B,0x08,0x78,0xFF,0x5A,0x08,0x19,0xFF,
+0x39,0x0B,0x70,0xFF,0x18,0x08,0x68,0x20,0x69,0x7A,0x0A,0xFC,0x04,0x0B,0xD9,0x09,
+0x43,0xD7,0xF5,0x5F,0xDE,0x06,0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x43,0xBE,0xED,0x5F,
+0xAC,0x99,0x20,0x00,0x7D,0x0B,0xBC,0x07,0x0B,0x99,0x0B,0x43,0xBD,0xE5,0x5F,0xBD,
+0x06,0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,0x9D,0xE5,0xC3,0x80,0x10,0xE8,0x20,0x05,
+0x19,0x0E,0xF8,0x01,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x2F,0x0B,0x99,0x0B,0x0E,
+0xF8,0x03,0x0B,0x39,0x0F,0x12,0xFA,0x00,0x0F,0x9B,0x01,0x0F,0x3B,0x03,0x52,0xF7,
+0x02,0xE4,0x00,0x01,0x57,0xC3,0xA0,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0xBD,0x08,
+0x11,0xFE,0xF7,0x0B,0x90,0x20,0x6D,0x92,0x0B,0x79,0x01,0x0B,0xDC,0x01,0x43,0xDE,
+0xDD,0x5F,0xDE,0x06,0x4F,0x7E,0xFA,0x47,0xDB,0xF6,0x43,0x7E,0xDD,0x5F,0x6C,0x99,
+0x20,0x00,0x7D,0x0B,0x39,0x03,0x0B,0x7C,0x03,0x43,0x7B,0xCD,0x5F,0x7B,0x06,0x4F,
+0x3B,0xFA,0x47,0x79,0xDE,0x43,0x3B,0xCD,0xC3,0x20,0x10,0xE8,0x20,0x03,0x61,0x0B,
+0x37,0x17,0x0F,0x38,0x01,0x0B,0x37,0x19,0x0F,0x38,0x03,0x0B,0x37,0x47,0x0A,0xF7,
+0x49,0x0E,0xF8,0x07,0x12,0xFA,0x00,0x52,0xF7,0x01,0x0F,0x38,0x05,0x1A,0xFA,0x00,
+0x9A,0xE2,0x1A,0xFD,0x00,0xE4,0x00,0x01,0x5F,0xD0,0x64,0x01,0xD6,0x0B,0x3B,0x00,
+0x0B,0x7B,0x02,0x43,0x79,0xDD,0x9F,0x6E,0x5F,0x63,0x9B,0x20,0x00,0x2F,0xC3,0x20,
+0x10,0x01,0xEB,0x39,0x08,0x6B,0x0B,0x18,0x01,0x0F,0x17,0x47,0x9B,0x02,0x0F,0x37,
+0x49,0x1B,0x17,0x00,0x12,0xFA,0x00,0x9B,0x1D,0x46,0xF7,0xC4,0x1A,0xFA,0x00,0xE4,
+0x00,0x00,0xEB,0xD0,0x65,0x03,0x8E,0x13,0x7D,0x00,0x23,0x68,0xFE,0x0B,0x98,0x00,
+0x0B,0x59,0x00,0x8F,0x5C,0x43,0x5A,0xD8,0x0B,0x98,0x02,0x0F,0x57,0x17,0x0B,0x59,
+0x02,0x8F,0x5C,0x43,0x5A,0xD8,0x0B,0x98,0x04,0x0F,0x57,0x19,0x0B,0x59,0x08,0x8F,
+0x5C,0x43,0x5A,0xD8,0x0F,0x57,0x47,0x0B,0x58,0x06,0x0B,0x19,0x0A,0x8F,0x1A,0x43,
+0x78,0xD8,0x0F,0x77,0x49,0xE4,0x00,0x00,0x55,0x23,0x64,0x9A,0x0B,0x38,0x01,0x0F,
+0x37,0x17,0x0B,0x38,0x03,0x0F,0x37,0x19,0x0B,0x38,0x05,0x0B,0x18,0x07,0x0F,0x37,
+0x47,0x0F,0x17,0x49,0x9B,0x3E,0x13,0x1A,0x00,0x47,0x18,0xCC,0x1B,0x1A,0x00,0x9B,
+0x02,0x1B,0x17,0x00,0x85,0x29,0xC3,0x00,0x10,0x01,0xFF,0x18,0x08,0x28,0xFE,0xE0,
+0x7F,0xFF,0x0E,0xF8,0x01,0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0x9B,0x01,
+0xC3,0x20,0x10,0x01,0xFF,0x39,0x03,0x6C,0x1B,0x19,0x01,0xC3,0x00,0x10,0x01,0xFF,
+0x18,0x08,0x94,0x0E,0xF8,0x01,0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0xC3,
+0x00,0x10,0x01,0xF8,0x18,0x08,0x84,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,0x70,0x0E,
+0xF8,0x01,0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0x0E,0xF8,0x09,0x0E,0xF8,
+0x0B,0x0E,0xF8,0x0D,0x0E,0xF8,0x0F,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xA1,0xC2,
+0xE0,0x10,0x01,0x18,0x19,0x00,0xF3,0x17,0x08,0x19,0x9B,0x3C,0x47,0x18,0xCC,0xFB,
+0x17,0x08,0x19,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x11,0x85,0x29,0xC3,0x00,0x10,
+0x01,0xC3,0x40,0x10,0x01,0x5C,0x63,0x00,0xFF,0x18,0x09,0x0C,0x9A,0xE0,0xFF,0x5A,
+0x09,0xBC,0xE4,0x00,0x00,0x31,0x4F,0x37,0x10,0x0B,0x98,0x00,0x0B,0x78,0x02,0x8F,
+0x3A,0x8F,0x7C,0x9E,0xE1,0x0F,0x79,0x00,0x9F,0x04,0x5F,0x37,0x00,0xD4,0x79,0xFF,
+0x4D,0x85,0x29,0x1C,0x21,0xE0,0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0xC1,0x08,0x0D,
+0x21,0x1C,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x18,0x01,0x07,0xC1,0x40,0x10,0x01,0xC1,
+0x60,0x10,0x01,0x5D,0xC3,0x00,0xFD,0x4A,0x08,0x13,0xFD,0x6B,0x08,0x12,0x21,0xC8,
+0x36,0x18,0x0A,0x00,0x18,0x0B,0x00,0xE4,0x00,0x00,0x15,0x21,0xCC,0x1A,0x18,0x0A,
+0x00,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x1A,0x10,0x77,0x01,0x12,0xF7,0x04,0xC1,
+0xA0,0x10,0x01,0x40,0x63,0xBB,0xC1,0x80,0x10,0x01,0xE7,0xFF,0xFE,0xE6,0xFD,0xAD,
+0x08,0x18,0xFD,0x8C,0x0B,0x90,0xD1,0xC1,0x04,0x2E,0x12,0xEA,0x00,0x22,0xE1,0xFA,
+0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x09,0xBC,0x0F,0x17,0x02,0xC3,0x00,0x29,0xA8,0x20,
+0x00,0x39,0x13,0x01,0x07,0x9F,0x01,0x5F,0x18,0x00,0x1B,0x01,0x07,0xC3,0x00,0x10,
+0x01,0x9E,0xE4,0xFF,0x18,0x09,0xF0,0xD6,0xF8,0xFF,0x0E,0x12,0xE1,0x07,0xD2,0xE4,
+0x01,0x49,0xE7,0xFF,0xE7,0xAE,0x20,0x68,0x84,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,
+0x3C,0xD2,0xE9,0x00,0xB5,0x12,0xEC,0x00,0x26,0xE4,0x3D,0x12,0xEB,0x00,0x9E,0xE1,
+0x1A,0xEB,0x00,0xE4,0x00,0x00,0x0F,0x18,0x0B,0x00,0x12,0xEB,0x00,0x26,0xE5,0x01,
+0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0x2A,0x18,0x0D,0x00,0xE4,0x00,
+0x00,0x59,0x9A,0xE1,0x1A,0xEA,0x00,0xE4,0x00,0x00,0x47,0x12,0xEA,0x00,0x22,0xE4,
+0x7E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0x2A,0x18,0x0D,0x00,0xE4,
+0x00,0x00,0x1D,0xE7,0xFF,0xE6,0xEC,0x20,0x68,0x18,0x18,0x0C,0x00,0x12,0xED,0x00,
+0x22,0xE0,0x2C,0x9E,0xFF,0x18,0x0C,0x00,0x1A,0xED,0x00,0x0D,0xC1,0x0A,0x0D,0xA1,
+0x0E,0x0D,0x81,0x12,0x0D,0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,
+0x85,0x29,0x98,0x62,0xE7,0xFF,0xFD,0x9F,0xC3,0x00,0x10,0x01,0x5C,0x84,0x00,0xFF,
+0x18,0x09,0x0C,0x20,0xA0,0x6C,0xE4,0x00,0x00,0x4B,0x4F,0x37,0x08,0x9E,0xE1,0x43,
+0x59,0xC4,0x8F,0x23,0x0B,0x5A,0x00,0x0F,0x59,0x01,0xE4,0x00,0x00,0x0D,0x9A,0xE0,
+0x5F,0x37,0x00,0xD4,0x99,0xFF,0x3D,0xE4,0x00,0x00,0x7B,0x20,0xA4,0xE6,0xE4,0x00,
+0x00,0x31,0x4F,0x37,0x08,0x9E,0xE1,0x43,0x43,0xCC,0x8F,0x38,0x0B,0x5A,0x00,0x0F,
+0x59,0x01,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0x5F,0x37,0x00,0xD4,0x99,0xFF,0x3D,0xC2,
+0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x1A,0x10,0x77,0x01,0x12,0xF7,0x04,0x40,0x63,0xBB,
+0xE7,0xFF,0xFC,0x5B,0x85,0x29,0x9C,0x38,0x98,0x63,0x0D,0x21,0x04,0xE7,0xFF,0x6C,
+0xAA,0x0D,0x21,0x06,0x9C,0x28,0xE4,0x00,0x72,0xAD,0x9A,0xED,0x1C,0x21,0xE8,0x0D,
+0x41,0x10,0x0D,0x61,0x0C,0xC1,0x60,0x10,0x01,0xFD,0x4B,0x0B,0x1A,0x1A,0xEA,0x04,
+0x9A,0xE1,0x1A,0xEA,0x01,0xFE,0xE0,0x07,0xFF,0x0E,0xEA,0x07,0x0E,0xEA,0x09,0xC2,
+0xE0,0x10,0x01,0x9B,0x02,0xFB,0x17,0x08,0x72,0x52,0xE0,0xAA,0x0D,0x21,0x14,0x0E,
+0xEA,0x0B,0x50,0x60,0x19,0x98,0x80,0xE7,0xFF,0x2C,0x66,0x52,0xE0,0x1D,0xFA,0xEB,
+0x0B,0x1A,0x9A,0xE4,0x1A,0xEA,0x0C,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x00,0xD5,0xC2,
+0xE0,0x10,0x01,0xEC,0x17,0x08,0x60,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x8C,0xC2,
+0xE0,0x10,0x01,0xEC,0x17,0x08,0x87,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x54,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x5C,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x8A,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x83,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x48,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x9C,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x76,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x67,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x65,0xC2,
+0xE0,0x10,0x01,0xEC,0x17,0x08,0x58,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x31,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0x77,0xC2,0xE0,0x10,0x01,0x9B,0x03,0xFB,0x17,0x08,
+0x66,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x07,0x8C,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,
+0x84,0xC2,0xE0,0x10,0x01,0xFF,0x00,0x01,0xF4,0xEF,0x17,0x06,0x85,0xC2,0xE0,0x10,
+0x01,0x50,0x60,0x14,0xF8,0x17,0x08,0x9D,0x50,0x80,0x50,0xE7,0xFF,0x7B,0xB8,0x52,
+0xE0,0x64,0x50,0x80,0x35,0x0E,0xE1,0x01,0x50,0xA0,0x59,0xFC,0xC0,0x07,0xFF,0xFC,
+0xE0,0x07,0xFF,0x99,0x00,0xC0,0x60,0x10,0x01,0xFC,0x63,0x01,0x88,0xE7,0xFF,0x98,
+0xE2,0xC0,0x60,0x10,0x01,0x98,0x80,0xFC,0x63,0x09,0xBC,0x50,0xA0,0x3C,0xE7,0xFF,
+0x9B,0xE4,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x90,0x18,0x17,0x04,0x18,0x17,0x05,
+0x18,0x17,0x06,0x18,0x17,0x34,0x18,0x17,0x35,0x18,0x17,0x36,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x50,0xC2,0xE0,0x10,0x01,0xF3,0x37,0x00,0xC0,0xC2,0xF4,0x00,0x01,
+0xCB,0x17,0x3D,0xF9,0xCA,0xF7,0x3D,0xF8,0x1B,0x38,0x00,0xC3,0x00,0x10,0x01,0xF3,
+0x18,0x07,0x09,0x1B,0x17,0x00,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x3F,0x53,0x18,
+0x04,0xEF,0x17,0x08,0x3F,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x00,0x01,0xFF,0x18,0x1D,
+0x58,0xEF,0x17,0x03,0xE4,0xC2,0xE0,0x10,0x01,0x53,0x00,0xDF,0xEF,0x17,0x08,0x93,
+0xC2,0xE0,0x10,0x01,0x53,0x00,0xCA,0xEF,0x17,0x08,0x25,0xC2,0xE0,0x10,0x01,0xC3,
+0x00,0x00,0x01,0xFF,0x18,0x1B,0xCF,0xEF,0x17,0x03,0xF8,0xC2,0xE0,0x10,0x01,0xC3,
+0x00,0x00,0x01,0xFF,0x18,0x19,0x89,0xEF,0x17,0x04,0x18,0xC2,0xE0,0x10,0x01,0xC3,
+0x00,0x00,0x01,0xFF,0x18,0x1A,0x62,0xEF,0x17,0x04,0x14,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x0B,0x40,0xFE,0xF7,0x0B,0x40,0xC3,0x60,0x10,0x01,0x18,0x17,0x01,0x18,0x17,
+0x02,0x18,0x17,0x03,0x0C,0x17,0x05,0x0C,0x17,0x07,0x0C,0x17,0x0B,0x0C,0x17,0x09,
+0xC3,0x40,0x10,0x01,0xC3,0x20,0x10,0x01,0x9A,0xE0,0xFF,0x7B,0x09,0x0C,0xFF,0x5A,
+0x0C,0x96,0xFF,0x39,0x09,0x48,0x43,0x17,0xDC,0x0C,0x18,0x01,0x43,0x17,0xD4,0x0C,
+0x18,0x01,0x4F,0x17,0x08,0x8F,0x19,0x0C,0x18,0x00,0x9E,0xE2,0x5E,0xE7,0x49,0x23,
+0xFF,0x9D,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,
+0xE4,0x00,0x6A,0xF1,0x1C,0x21,0xE8,0x0D,0x21,0x14,0xE7,0xFF,0xCD,0x74,0xE7,0xFF,
+0xA4,0x36,0xE7,0xFF,0xCC,0x96,0xE7,0xFF,0xF0,0x08,0x98,0x60,0x98,0x81,0xE7,0xFF,
+0x66,0x0C,0x98,0x81,0x98,0x60,0x88,0xA4,0xE7,0xFF,0x66,0x12,0x98,0x81,0x98,0x60,
+0x88,0xA4,0xE7,0xFF,0x66,0x28,0x98,0x80,0x98,0x61,0x88,0xA4,0xE7,0xFF,0x66,0x14,
+0x98,0xA0,0x98,0x62,0x98,0x81,0xE7,0xFF,0x66,0x00,0x98,0x62,0x98,0x80,0xE7,0xFF,
+0x66,0x76,0x98,0x60,0x50,0x80,0x66,0xE7,0xFF,0x66,0x7E,0x98,0x61,0x50,0x80,0x66,
+0xE7,0xFF,0x66,0x6C,0x98,0x62,0x50,0x80,0xF3,0xE7,0xFF,0x66,0x5A,0x98,0x60,0xFC,
+0x80,0xA0,0x00,0xE7,0xFF,0x66,0xA2,0x98,0x61,0xFC,0x80,0xA0,0x00,0xE7,0xFF,0x66,
+0x8E,0x98,0x62,0xFC,0x80,0xA0,0x00,0xE7,0xFF,0x66,0x7A,0xFC,0x80,0x01,0x26,0x98,
+0x62,0xE7,0xFF,0x66,0xC2,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x96,0x60,0xE7,0xFF,0xFA,
+0x3A,0x98,0x61,0xE7,0xFF,0x45,0xCA,0xE7,0xFF,0x31,0xFE,0x50,0x60,0x1B,0xE7,0xFF,
+0x6A,0xB0,0x9A,0xEE,0x0E,0xE1,0x00,0x52,0xE0,0x14,0x0E,0xE1,0x04,0xCA,0xE0,0x07,
+0xD0,0x98,0xC8,0x0E,0xE1,0x08,0x98,0xAE,0x88,0xE6,0x99,0x0A,0x98,0x6A,0x98,0x8C,
+0xE7,0xFF,0x26,0x0E,0x98,0x81,0x98,0x60,0xE7,0xFF,0xCB,0xB0,0x50,0x60,0x10,0xE7,
+0xFF,0xCB,0xE2,0xE4,0x00,0x3F,0x22,0xE7,0xFF,0xF9,0x7E,0x98,0x80,0x98,0x60,0xE7,
+0xFF,0x23,0xD0,0xE7,0xFF,0xB7,0x36,0xE7,0xFF,0xB6,0x2C,0xC2,0xE0,0x10,0x01,0xF0,
+0x77,0x03,0x6E,0xE7,0xFF,0xCB,0x7A,0x9B,0x00,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0D,0xC3,0x17,0x00,0x0F,0x53,0x18,0x04,0xC3,0x17,0x00,0x0D,0xC3,0x17,0x00,0x0F,
+0x53,0x18,0x08,0xC3,0x17,0x00,0x0D,0xC2,0xE0,0x01,0x1F,0x52,0xF7,0x06,0xC2,0xE0,
+0x01,0x1D,0xFC,0x60,0x01,0x40,0xE7,0xFF,0xCB,0x24,0x50,0x60,0x20,0xE7,0xFF,0xCB,
+0x2E,0x98,0x61,0x50,0x80,0x13,0x50,0xA0,0x37,0x98,0xC8,0xFC,0xE0,0x01,0x0D,0xE7,
+0xFF,0xAA,0x6A,0xC3,0x00,0x00,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x46,0xAE,0x0D,
+0x21,0x16,0xEF,0x17,0x03,0xD0,0x1C,0x21,0x18,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEF,
+0x17,0x00,0xE2,0x23,0x05,0x08,0xEE,0xF7,0x00,0xE2,0x22,0xE8,0xEC,0xC3,0x00,0x10,
+0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x08,0x4A,0xFE,0xF7,0x08,0x7C,0x0B,0x38,0x01,
+0xC3,0x60,0x10,0x01,0x0F,0x37,0x01,0xC3,0x40,0x10,0x01,0x0B,0x38,0x03,0xFF,0x7B,
+0x0A,0x8C,0x0F,0x37,0x03,0x0B,0x18,0x05,0xFF,0x5A,0x0B,0x80,0x0F,0x17,0x05,0x9A,
+0xE0,0xE4,0x00,0x00,0x5D,0xC3,0x60,0x10,0x01,0xC3,0x40,0x10,0x01,0x9A,0xE0,0xFF,
+0x7B,0x08,0xA4,0xFF,0x5A,0x08,0xD8,0x43,0x17,0xDC,0x43,0x37,0xD4,0x0B,0x39,0x01,
+0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xBD,0xE7,0xFF,0xFF,0x45,0x43,
+0x17,0xDC,0x43,0x37,0xD4,0x0B,0x39,0x01,0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE2,0x09,
+0x23,0xFF,0xBD,0x85,0x29,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,0x01,0x9A,0xE0,0xFF,
+0x18,0x0C,0x96,0xFF,0x7B,0x08,0xA4,0x43,0x37,0xC4,0x43,0x57,0xDC,0x0B,0x5A,0x01,
+0x0F,0x59,0x01,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xBD,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x08,0x7C,0x0B,0x37,0x01,0x0F,0x38,0x35,0x0B,0x37,0x03,0x0A,0xF7,0x05,0x0F,
+0x38,0x37,0x0E,0xF8,0x39,0x85,0x29,0xE4,0x00,0x68,0xED,0xC2,0xE0,0x10,0x01,0xFF,
+0x20,0xDF,0x9F,0xEB,0x17,0x08,0x87,0x47,0x18,0xCC,0x9B,0x3E,0xEF,0x17,0x08,0x87,
+0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x71,0x47,0x18,0xCC,0xEF,0x17,0x08,0x71,0x85,
+0x29,0xE4,0x00,0x71,0x9D,0xE4,0x00,0x71,0x3B,0xE4,0x00,0x71,0xCB,0xC2,0xE0,0x10,
+0x01,0x88,0xC3,0xF3,0x17,0x00,0xC0,0x23,0x08,0x4A,0xF2,0xF7,0x00,0xC0,0x22,0xE8,
+0x2E,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,0x09,0xC3,0x00,0x10,0x01,0x9A,0xE0,0xFF,
+0x18,0x09,0x0C,0x8B,0x38,0x5F,0x57,0x00,0x27,0x44,0x3D,0x5E,0xE3,0x01,0x20,0x00,
+0x25,0x5E,0xE3,0x29,0x20,0x00,0x31,0x0B,0x59,0x01,0x4F,0x5A,0x08,0x0F,0x59,0x01,
+0x9E,0xE1,0x9F,0x22,0x5E,0xE3,0x49,0x23,0xFF,0x79,0xC2,0xE0,0x10,0x01,0xC3,0x40,
+0x10,0x01,0xF3,0x77,0x0B,0x1A,0xFF,0x5A,0x08,0x86,0x1F,0xBB,0xFF,0x0A,0xFA,0x01,
+0x9B,0x20,0xE4,0x00,0x00,0x57,0xD7,0xB9,0x00,0xB8,0x0B,0xD8,0x00,0x0B,0x98,0x02,
+0x8F,0x9E,0xCB,0xD7,0x20,0x00,0xC3,0x80,0x1B,0xCC,0x4A,0xFE,0xB8,0x0B,0x98,0x00,
+0x53,0xD7,0x40,0x5F,0x84,0x19,0x9F,0x21,0x4A,0xFE,0xB8,0x9F,0x02,0x5F,0x99,0x04,
+0xD7,0x7C,0xFE,0xB5,0x98,0x60,0x0E,0xFA,0x01,0x88,0x83,0x98,0xA0,0xE7,0xFF,0xB3,
+0x4F,0x9C,0x38,0x0D,0x41,0x00,0x0D,0x21,0x04,0xC1,0x40,0x10,0x01,0x20,0x64,0x62,
+0xE7,0xFF,0xB4,0x6A,0x20,0x64,0x56,0xF2,0xEA,0x08,0x48,0x9E,0xE1,0xFA,0xEA,0x08,
+0x48,0xE4,0x00,0x00,0x19,0xE7,0xFF,0xB4,0xF0,0xF8,0x0A,0x08,0x48,0xE7,0xFF,0xDA,
+0x78,0x9A,0xE3,0x20,0x64,0x34,0xE7,0xFF,0xDA,0x66,0x5C,0x60,0x49,0x4A,0xE3,0x4B,
+0xC3,0x00,0x10,0x01,0xF3,0x38,0x08,0x48,0xD6,0xF9,0x02,0x1D,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x9C,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x8A,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x83,0xC2,0xE0,0x10,0x01,0xF8,0x18,0x08,0x48,0xF8,0x17,0x08,0x9D,
+0x0D,0x41,0x02,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEB,0x17,0x08,0x87,0x9C,0x28,
+0x53,0x18,0x80,0xEF,0x17,0x08,0x87,0xE7,0xFF,0x64,0xF3,0x0D,0x41,0x02,0x0D,0x21,
+0x06,0x9C,0x28,0x85,0x29,0x9C,0x38,0xC3,0x14,0x00,0x01,0x0D,0x21,0x04,0xCA,0xF8,
+0x22,0x00,0x0B,0x37,0x01,0xCB,0x18,0x26,0x18,0x9B,0x3F,0x0F,0x37,0x01,0x0B,0x38,
+0x01,0x53,0x39,0x02,0x0F,0x38,0x01,0x0B,0x17,0x01,0xFC,0x60,0x01,0x00,0x0C,0x17,
+0x01,0xE7,0xFF,0xC6,0x0E,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEB,0x17,0x00,0xD5,
+0x9C,0x28,0xC7,0x18,0xFE,0xFF,0xEF,0x17,0x00,0xD5,0x85,0x29,0x5C,0xC6,0x00,0x9A,
+0xE0,0xE4,0x00,0x00,0x45,0x4F,0x17,0x08,0x4F,0x57,0x10,0x43,0x23,0xC4,0x8F,0x45,
+0x8F,0x04,0x0F,0x5A,0x02,0x0B,0x18,0x01,0x4F,0x5A,0x42,0x9E,0xE1,0x43,0x18,0xD5,
+0x0F,0x19,0x01,0x5F,0x17,0x00,0xD4,0xD8,0xFE,0xFD,0x85,0x29,0x9C,0x38,0x0D,0x21,
+0x04,0xE4,0x00,0x38,0x32,0x0D,0x21,0x06,0xFC,0x60,0x01,0x00,0x9C,0x28,0xE7,0xFF,
+0xC5,0x45,0x9C,0x38,0x0D,0x21,0x04,0xE4,0x00,0x38,0x06,0x0D,0x21,0x06,0xFC,0x60,
+0x01,0x00,0x9C,0x28,0xE7,0xFF,0xC5,0x09,0x9C,0x38,0x98,0x80,0x0D,0x21,0x04,0x98,
+0x61,0xE7,0xFF,0xE3,0x1A,0x98,0x60,0xE7,0xFF,0x63,0x2A,0x98,0x61,0x98,0x80,0xE7,
+0xFF,0xE8,0x28,0x98,0x62,0x98,0x80,0xE7,0xFF,0xE8,0x18,0x0D,0x21,0x06,0x98,0x63,
+0x98,0x80,0x9C,0x28,0xE7,0xFF,0xE7,0xFF,0x98,0x64,0x98,0x80,0xE7,0xFF,0xE2,0xC5,
+0x9C,0x38,0x0D,0x21,0x04,0xE7,0xFF,0xD7,0xE8,0x24,0x64,0x29,0x20,0x69,0x8A,0xE4,
+0x00,0x00,0x19,0xE7,0xFF,0xD7,0xCC,0xE4,0x00,0x00,0x57,0xE7,0xFF,0xC4,0xCA,0xC2,
+0xE0,0x10,0x01,0xFE,0xF7,0x00,0xE6,0x0A,0xF7,0x09,0x40,0x63,0xBD,0x5E,0xE3,0x04,
+0xC2,0xE1,0x76,0xEA,0x20,0x00,0x7D,0x98,0x62,0xE7,0xFF,0xE7,0x16,0x20,0x60,0x5A,
+0x98,0x61,0x98,0x80,0xE7,0xFF,0xE2,0x34,0x0D,0x21,0x06,0x98,0x60,0x9C,0x28,0xE7,
+0xFF,0x62,0x3B,0x98,0x62,0x98,0x80,0xE7,0xFF,0xE2,0x0E,0xFC,0x60,0x01,0x5E,0xE7,
+0xFF,0x8E,0x48,0x0D,0x21,0x06,0x98,0x60,0x9C,0x28,0xE7,0xFF,0x61,0xBD,0x0D,0x21,
+0x06,0x9C,0x28,0x85,0x29,0xD0,0x69,0x06,0x2D,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,
+0xFE,0xF7,0xBA,0xC4,0x8E,0xF8,0xC3,0x00,0x10,0x01,0x0F,0x37,0x02,0xFF,0x18,0x09,
+0x48,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x09,0xF8,0x87,0x29,0xC3,0x00,0x10,0x01,0xFF,
+0x18,0x0B,0x34,0x0F,0x38,0x02,0x0F,0x37,0x68,0x0F,0x38,0x06,0x0F,0x18,0x0A,0x0F,
+0x37,0x6C,0x0F,0x17,0x70,0xE4,0x00,0x01,0x0B,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,
+0x28,0x0F,0x37,0x02,0x0F,0x38,0x68,0x0F,0x37,0x06,0x0E,0xF7,0x0A,0x0F,0x38,0x6C,
+0x0E,0xF8,0x70,0xE4,0x00,0x00,0xCF,0xCE,0xE3,0x00,0x68,0xC3,0x60,0x10,0x01,0xCC,
+0x63,0x00,0x1A,0xFF,0x7B,0x0A,0x9C,0x4C,0x63,0x10,0x8F,0x77,0x8F,0x03,0x9A,0xE0,
+0x43,0x38,0xBC,0x43,0x5B,0xBC,0x0F,0x5A,0x02,0x0F,0x59,0x00,0x9E,0xE4,0x5E,0xED,
+0x09,0x23,0xFF,0xBD,0xE4,0x00,0x00,0x6D,0x9C,0x7E,0xC3,0x40,0x10,0x01,0x5C,0x63,
+0x00,0xFF,0x5A,0x0B,0xF4,0xCF,0x03,0x00,0x68,0xCC,0x63,0x00,0x1A,0x8F,0x58,0x4C,
+0x63,0x10,0x8C,0x77,0x9A,0xE0,0x43,0x03,0xBC,0x43,0x3A,0xBC,0x0F,0x39,0x02,0x0F,
+0x38,0x00,0x9E,0xE4,0x5E,0xED,0x09,0x23,0xFF,0xBD,0x85,0x29,0xD0,0x69,0x06,0x3D,
+0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBA,0xEC,0x8E,0xF8,0xC3,0x00,0x10,
+0x01,0x0F,0x37,0x02,0xFF,0x18,0x08,0xA4,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x08,0x7C,
+0x87,0x29,0x0B,0x37,0x00,0xC3,0x00,0x10,0x01,0x4F,0x39,0x40,0xFF,0x18,0x0B,0x34,
+0xE4,0x00,0x00,0x25,0x0B,0x37,0x00,0xC3,0x00,0x10,0x01,0x4F,0x39,0x40,0xFF,0x18,
+0x0B,0x28,0x0F,0x38,0x00,0x0B,0x37,0x02,0x0A,0xF7,0x04,0x4F,0x39,0x40,0x4E,0xF7,
+0x40,0x0F,0x38,0x04,0x0E,0xF8,0x08,0xE4,0x00,0x00,0xD9,0xCE,0xE3,0x00,0x34,0x8F,
+0x17,0xCE,0xE3,0x00,0x68,0xC3,0x60,0x10,0x01,0xFF,0x7B,0x0A,0x9C,0x8F,0x77,0x9A,
+0xE0,0x4F,0x37,0x08,0x43,0x58,0xBC,0x8F,0x3B,0x0B,0x5A,0x00,0x4F,0x5A,0x40,0x0F,
+0x59,0x00,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xA9,0xE4,0x00,0x00,0x73,0x1E,0xE3,
+0xFE,0x5E,0xF7,0x00,0xCF,0x37,0x00,0x34,0xCE,0xF7,0x00,0x68,0xC3,0x60,0x10,0x01,
+0x8F,0x19,0xFF,0x7B,0x0B,0xF4,0x8F,0x77,0x9A,0xE0,0x4F,0x37,0x08,0x43,0x58,0xBC,
+0x8F,0x3B,0x0B,0x5A,0x00,0x4F,0x5A,0x40,0x0F,0x59,0x00,0x9E,0xE2,0x5E,0xE6,0x89,
+0x23,0xFF,0xA9,0xE7,0xFF,0xFC,0xE5,0x9C,0x38,0x98,0x64,0x0D,0x41,0x00,0x0D,0x21,
+0x04,0x98,0x80,0xE7,0xFF,0xDE,0x96,0xC1,0x40,0x10,0x01,0xEA,0xEA,0x00,0xD5,0xC6,
+0xF7,0xFE,0xFF,0xEE,0xEA,0x00,0xD5,0xE7,0xFF,0xFA,0xEA,0xEA,0xEA,0x00,0xD5,0xC6,
+0xF7,0x01,0x00,0x22,0xE3,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xC0,0x3C,0xFC,0x60,
+0x01,0x00,0xE7,0xFF,0xC0,0x0C,0xE7,0xFF,0xF5,0x4A,0x0D,0x21,0x06,0x0D,0x41,0x02,
+0x98,0x60,0x9C,0x28,0xE7,0xFF,0xFD,0xD1,0x9C,0x38,0x0D,0x21,0x04,0x20,0x64,0x3E,
+0x98,0x60,0xE7,0xFF,0xFD,0xB4,0x98,0x68,0xE4,0x00,0x00,0x19,0x98,0x62,0xE7,0xFF,
+0xFD,0x9C,0x98,0x69,0x0D,0x21,0x06,0x9C,0x28,0xE7,0xFF,0xFD,0x87,0x9C,0x38,0x98,
+0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFD,0x70,0x0D,0x21,0x06,0x98,0x68,0x9C,0x28,0xE7,
+0xFF,0xFD,0x5B,0x20,0x80,0x64,0xD0,0x84,0x00,0xFA,0x20,0x88,0x90,0x20,0x8C,0xA8,
+0x5C,0x80,0x21,0x4B,0x0A,0x01,0x8A,0xF8,0xE4,0x00,0x00,0x49,0x53,0x00,0x19,0x8A,
+0xF8,0xE4,0x00,0x00,0x37,0x53,0x00,0x19,0x9A,0xE1,0xE4,0x00,0x00,0x25,0x53,0x00,
+0x32,0x8A,0xF8,0xE4,0x00,0x00,0x13,0x53,0x00,0x50,0x8A,0xF8,0xD0,0x69,0x0A,0xE5,
+0x4F,0x43,0x10,0xC3,0x38,0x00,0x21,0xFF,0x39,0xBB,0x14,0x8F,0x3A,0xC3,0x40,0x10,
+0x01,0x0F,0x79,0x02,0xFF,0x5A,0x08,0xA4,0xC3,0x20,0x10,0x01,0xFF,0x39,0x08,0x7C,
+0x87,0x69,0xCF,0x23,0x00,0x68,0xCC,0xA3,0x00,0x34,0xC0,0x80,0x10,0x01,0x8C,0xBA,
+0xFC,0x84,0x0A,0x9C,0x99,0x02,0x8C,0x99,0xCB,0xA0,0x01,0xF4,0x9B,0x20,0x43,0x65,
+0xCC,0x0B,0x9B,0x00,0x4F,0x79,0x08,0x4F,0x9C,0x40,0x8F,0x64,0x0F,0x5B,0x02,0x5F,
+0x5C,0x1D,0x4B,0xD8,0xB8,0x43,0x9C,0xD5,0x43,0x9E,0xE3,0xCF,0xDA,0x01,0xF4,0x43,
+0x9C,0x40,0x8F,0x9E,0x43,0x9C,0xE8,0x0F,0x9B,0x00,0x9F,0x22,0x5F,0x26,0x89,0x23,
+0xFF,0x3D,0xE4,0x00,0x01,0xCD,0x1F,0x23,0xFE,0x5F,0x39,0x00,0xCC,0xB9,0x00,0x34,
+0xCF,0x39,0x00,0x68,0xC0,0x80,0x10,0x01,0x8C,0xBA,0xFC,0x84,0x0B,0xF4,0x99,0x02,
+0x8C,0x99,0xCB,0xA0,0x01,0xF4,0x9B,0x20,0x43,0x65,0xCC,0x0B,0x9B,0x00,0x4F,0x79,
+0x08,0x4F,0x9C,0x40,0x8F,0x64,0x0F,0x5B,0x02,0x5F,0x5C,0x1D,0x4B,0xD8,0xB8,0x43,
+0x9C,0xD5,0x43,0x9E,0xE3,0xCF,0xDA,0x01,0xF4,0x43,0x9C,0x40,0x8F,0x9E,0x43,0x9C,
+0xE8,0x0F,0x9B,0x00,0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x3D,0xE4,0x00,0x01,0x19,
+0xC3,0x40,0x10,0x01,0x9B,0xC2,0xFF,0x5A,0x0B,0x28,0xCB,0xA0,0x01,0xF4,0x0F,0x7A,
+0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,0x1D,0x43,0x9C,0xDD,0x49,0x18,0xB8,
+0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,0x8F,0x7C,0x43,0x7B,0xE8,0x0F,
+0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,0x44,0xFF,0x7B,0x08,0x82,0xD7,0x3B,
+0xFE,0x86,0xE4,0x00,0x00,0x8D,0xC3,0x40,0x10,0x01,0x9B,0xC2,0xFF,0x5A,0x0B,0x34,
+0xCB,0xA0,0x01,0xF4,0x0F,0x7A,0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,0x1D,
+0x43,0x9C,0xDD,0x49,0x18,0xB8,0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,
+0x8F,0x7C,0x43,0x7B,0xE8,0x0F,0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,0x44,
+0xFF,0x7B,0x08,0x82,0xD7,0x3B,0xFE,0x86,0xE7,0xFF,0xF8,0x9B,0x9C,0x38,0x0D,0x21,
+0x04,0x0D,0x41,0x00,0x89,0x43,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xFC,0xB2,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xFC,0x93,0x1C,0x21,
+0xC8,0x0D,0x41,0x30,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,0xE1,0x1C,0x0E,0x01,0x18,
+0x0D,0x21,0x34,0x0D,0x61,0x2C,0x0D,0x81,0x28,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,
+0x61,0x0C,0x0E,0x81,0x08,0x0E,0xA1,0x04,0xC1,0xC0,0x10,0x01,0xFD,0xCE,0x08,0x86,
+0x0A,0xEE,0x01,0xC7,0x17,0x7F,0xFF,0x0F,0x0E,0x01,0xC2,0x00,0x10,0x01,0xC1,0xA0,
+0x10,0x01,0xC1,0xE0,0x10,0x01,0xC1,0x40,0x10,0x01,0x56,0xF7,0x08,0xFE,0x10,0x08,
+0x54,0xFD,0xAD,0x08,0x60,0xFD,0xEF,0x08,0x5C,0xFD,0x4A,0x0B,0x90,0x22,0xE1,0x6C,
+0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0x8E,0x22,0xE5,0x40,0xC3,0x00,0x10,0x01,0x0A,
+0xEA,0x18,0xFF,0x18,0x01,0x64,0x0B,0x58,0x0A,0xD7,0x57,0x01,0x04,0xCB,0x20,0x07,
+0xFF,0x43,0x59,0xD5,0xD6,0xFA,0x00,0xAC,0x0A,0xEA,0x16,0x0B,0x18,0x06,0xD7,0x17,
+0x00,0x5C,0x43,0x19,0xC5,0xD6,0xF8,0x01,0x18,0xE7,0xFF,0xE3,0xBA,0x9A,0xE3,0x0E,
+0xED,0x00,0xC2,0xE0,0x10,0x01,0x18,0x10,0x00,0xF8,0x17,0x08,0x76,0x18,0x0F,0x00,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x67,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0x50,
+0x22,0xE0,0x24,0x98,0x60,0xE7,0xFF,0xC2,0x8A,0x0E,0xED,0x02,0x22,0xE0,0x96,0x0A,
+0xEE,0x01,0x56,0xF7,0x40,0xD2,0xE0,0x4B,0x62,0x98,0x63,0xE7,0xFF,0xE4,0xB0,0xE7,
+0xFF,0x1C,0x40,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x76,0x9A,0xE1,0xE4,0x00,0x14,
+0x21,0x22,0xE5,0x0E,0x0A,0xEE,0x01,0x57,0x17,0x08,0x23,0x00,0x2C,0xE7,0xFF,0xE2,
+0xF2,0xE4,0x00,0x12,0xEF,0x57,0x17,0x40,0x23,0x00,0x94,0xC6,0xF7,0x20,0x00,0x22,
+0xE0,0x7A,0xC2,0xE0,0x10,0x01,0x98,0x62,0xF3,0x17,0x08,0x76,0xC3,0x00,0x19,0x0A,
+0x20,0x24,0x8F,0x9F,0x01,0xFB,0x17,0x08,0x76,0xE4,0x00,0x13,0xAF,0x0C,0x0D,0x00,
+0xE4,0x00,0x13,0xA1,0xC2,0x20,0x10,0x01,0xFE,0x31,0x08,0x64,0x22,0xE8,0xAA,0x0A,
+0xEE,0x01,0x56,0xF7,0x08,0x22,0xE0,0x68,0x12,0xF0,0x00,0x9E,0xE1,0x1A,0xF0,0x00,
+0xE7,0xFF,0x1B,0x9E,0x12,0xF0,0x00,0xD2,0xE1,0x4D,0x49,0xE4,0x00,0x0E,0x75,0x18,
+0x10,0x00,0xE4,0x00,0x11,0x25,0xC1,0x80,0x10,0x01,0xC1,0x60,0x10,0x01,0xFD,0x8C,
+0x0B,0x70,0xFD,0x6B,0x08,0x28,0xD2,0xE3,0x38,0x96,0xE7,0xFF,0xCC,0x5E,0xC3,0x00,
+0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x20,0x03,0xE8,0x20,0x68,0x1C,0xFF,0x20,0x01,
+0xF4,0xEF,0x37,0x03,0x7B,0xEF,0x38,0x03,0x79,0x0A,0xEE,0x01,0x56,0xF7,0x08,0xD2,
+0xE0,0x37,0x02,0xC1,0xC0,0x10,0x01,0xC2,0x00,0x10,0x01,0x12,0xEA,0x00,0xFD,0xCE,
+0x08,0x94,0xFE,0x10,0x03,0x6C,0xD2,0xE1,0x0F,0xB9,0x0B,0x8B,0x04,0xC3,0x8F,0xFF,
+0xE0,0x20,0x06,0x6D,0x08,0xAA,0x48,0x0B,0x2B,0x06,0x0B,0x6B,0x00,0x43,0xA5,0xCD,
+0x08,0xCA,0x46,0x0B,0x4B,0x02,0x43,0xC6,0xE5,0x0B,0x0A,0x18,0x08,0x8A,0x16,0x42,
+0xFA,0xC5,0x41,0x04,0xDD,0x42,0xFE,0xBB,0x41,0x3D,0x43,0x8E,0xE9,0x22,0xE1,0x84,
+0x42,0x7C,0xDD,0x41,0x3A,0xCD,0x42,0x9D,0x9B,0x42,0x5E,0x4B,0x8E,0x92,0x22,0x80,
+0x40,0x26,0x80,0x28,0x26,0xE0,0x2A,0xE4,0x00,0x00,0x8F,0x26,0xFD,0x0E,0x4E,0xB7,
+0xFA,0x46,0x55,0xBE,0x42,0x52,0xAD,0x4E,0xB4,0xFA,0x46,0x95,0xA6,0x42,0xB4,0xAD,
+0xD6,0xB2,0x01,0x74,0x42,0x98,0xD5,0x41,0x28,0x4B,0x42,0x74,0x9B,0x8E,0x69,0x22,
+0x60,0x40,0x26,0x60,0x28,0x26,0xE0,0x2A,0xE4,0x00,0x00,0x2D,0x26,0xFC,0x4A,0x4E,
+0xF3,0xFA,0x46,0x77,0x9E,0x42,0x73,0xBD,0x9A,0xE1,0xD6,0x72,0x06,0x18,0x42,0x45,
+0xD5,0x42,0x66,0xDD,0x42,0x84,0xE5,0x42,0xF9,0xC5,0x41,0x32,0xA3,0x42,0xF3,0xBB,
+0x8E,0xE9,0x22,0xE0,0xDC,0x43,0x9B,0xE5,0x41,0x39,0xD5,0x40,0xF2,0xE3,0x42,0xB3,
+0x4B,0x8C,0xF5,0x20,0xE0,0x40,0x24,0xE0,0x28,0x26,0xE0,0x2A,0xE4,0x00,0x00,0x3B,
+0x26,0xFC,0x66,0x4E,0xB7,0xFA,0x44,0x75,0xBE,0x40,0x63,0xAD,0x4E,0xA7,0xFA,0x44,
+0xF5,0x3E,0x42,0xA7,0xAD,0xD6,0xA3,0x01,0xA0,0x43,0x58,0xD5,0x41,0x08,0x43,0x43,
+0x5A,0xD3,0x43,0x38,0xCD,0x42,0x94,0xA3,0x43,0x39,0xCB,0x8F,0x48,0x8E,0x99,0x9A,
+0xE0,0xD6,0x9A,0x00,0x45,0x8B,0x54,0x9A,0xE1,0x42,0x73,0x9B,0x42,0x52,0x93,0x8E,
+0x53,0xD6,0x5A,0x01,0xB1,0xE4,0x00,0x00,0x6F,0x42,0xB8,0xCD,0x41,0x34,0x4B,0x43,
+0x95,0xE3,0x8F,0x89,0x23,0x80,0x40,0x27,0x80,0x28,0x26,0xE0,0x2A,0xE7,0xFF,0xFF,
+0x79,0x26,0xFE,0xE2,0x4E,0xFC,0xFA,0x47,0x97,0xE6,0x43,0x9C,0xBD,0x9A,0xE0,0xD7,
+0x83,0x00,0xF0,0xE7,0xFF,0xFF,0x4D,0x8B,0x52,0x52,0xE0,0x10,0x43,0xDE,0xF3,0x43,
+0xBD,0xEB,0x53,0x20,0x11,0x8F,0xBE,0x5F,0xBA,0x1F,0x4A,0xF7,0xC8,0x4F,0x37,0x21,
+0x46,0xF7,0xCE,0x56,0xF7,0x0F,0xD2,0xE0,0x3B,0x5A,0x0C,0xCA,0x17,0x0C,0xAA,0x19,
+0x0C,0x8A,0x47,0x0F,0x0A,0x49,0xE4,0x00,0x0E,0xB7,0xC2,0xE0,0x10,0x01,0x9B,0x3E,
+0xF3,0x17,0x08,0x19,0x47,0x18,0xCC,0x98,0x63,0xFB,0x17,0x08,0x19,0xE7,0xFF,0xDB,
+0x24,0x12,0xF0,0x00,0x1A,0xEA,0x10,0x12,0xF0,0x01,0x1A,0xEA,0x40,0xE7,0xFF,0x17,
+0xA4,0x12,0xEA,0x00,0xD2,0xE1,0x3B,0xD6,0xE4,0x00,0x02,0x73,0x0A,0xEB,0x00,0xC2,
+0xEF,0xFF,0xE4,0x23,0xFF,0x7B,0x0B,0xCB,0x02,0x0B,0x2A,0x16,0x0B,0x0A,0x18,0x43,
+0xB9,0xBD,0x43,0x98,0xF5,0x0B,0x6A,0x46,0x0B,0x4A,0x48,0x42,0xFB,0xBD,0x43,0xDA,
+0xF5,0x42,0xF7,0xBB,0x43,0xDE,0xF3,0x8E,0xFE,0x43,0xBD,0xEB,0x43,0x9C,0xE3,0x8F,
+0x9D,0x5E,0xFC,0x1F,0x52,0xE0,0x10,0x4A,0xE0,0xB8,0x22,0xE2,0x9C,0x0F,0x6A,0x17,
+0x0F,0x4A,0x19,0x0F,0x2A,0x47,0x0F,0x0A,0x49,0xE7,0xFF,0xFF,0x31,0x22,0xE6,0x52,
+0x0A,0xEB,0x04,0xC2,0xEF,0xFF,0xE0,0x23,0xFE,0x29,0x0B,0xCA,0x16,0x0B,0xAA,0x18,
+0x0B,0x0B,0x00,0x0B,0x2B,0x02,0x43,0x9E,0xC5,0x43,0x7D,0xCD,0x43,0xDE,0xBD,0x0B,
+0x4B,0x06,0x43,0xDE,0xF3,0x43,0xBD,0xD5,0x43,0x9C,0xE3,0x43,0xBD,0xEB,0x43,0x7B,
+0xDB,0x8F,0xBE,0x8F,0x7C,0xD7,0xBB,0x35,0x39,0xE4,0x00,0x0D,0x7F,0x0B,0x8C,0x03,
+0x43,0x99,0xE5,0x5F,0x9C,0x06,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0xC3,
+0x60,0x10,0xE8,0x20,0x00,0xD9,0x0B,0x8C,0x03,0xC3,0x60,0x10,0x01,0xEF,0x9B,0x08,
+0x79,0xFF,0x7B,0x08,0x78,0x0B,0x8C,0x07,0x0F,0x9B,0x03,0xC3,0x60,0x10,0x01,0xEF,
+0x1B,0x08,0x69,0xC3,0x00,0x10,0x01,0xFF,0x7B,0x08,0x68,0x0F,0x3B,0x03,0xF3,0x38,
+0x08,0x19,0x53,0x39,0x02,0xFB,0x38,0x08,0x19,0x0B,0x0E,0x05,0x0F,0x0E,0x01,0x0B,
+0x0E,0x07,0x0F,0x0E,0x03,0x0B,0x0C,0x09,0x0F,0x0C,0x01,0x0B,0x0C,0x0B,0x0F,0x0C,
+0x03,0x0B,0x0C,0x0D,0x0E,0xEB,0x01,0x0F,0x0C,0x05,0xFE,0xE0,0x7F,0xFF,0x0B,0x0C,
+0x0F,0x0E,0xEB,0x05,0x0E,0xEB,0x07,0x0E,0xEE,0x05,0x0E,0xEE,0x07,0x0E,0xEC,0x09,
+0x0E,0xEC,0x0B,0x0F,0x0C,0x07,0x0E,0xEC,0x0D,0x0E,0xEC,0x0F,0x9B,0x01,0x12,0xF0,
+0x01,0x0F,0x4B,0x03,0x1A,0xF0,0x00,0x42,0xF8,0xBD,0x1A,0xF0,0x01,0xE7,0xFF,0xFD,
+0x69,0x0A,0xEA,0x17,0x0B,0x0B,0x01,0x43,0x18,0xBD,0x5F,0x18,0x06,0x4E,0xF8,0xFA,
+0x47,0x17,0xC6,0x42,0xF8,0xBD,0xC3,0x00,0x10,0x01,0xEB,0x38,0x03,0x78,0xD6,0xF9,
+0x01,0x2C,0x0A,0xEA,0x19,0x0B,0x0B,0x03,0x43,0x18,0xBD,0x5F,0x18,0x06,0x4E,0xF8,
+0xFA,0x47,0x17,0xC6,0x42,0xF8,0xBD,0xC3,0x00,0x10,0x01,0xEB,0x38,0x03,0x7A,0xD6,
+0xF9,0x2F,0xF8,0xE7,0xFF,0x15,0x60,0xD0,0x60,0x2F,0xBA,0xE7,0xFF,0xDB,0x36,0xC2,
+0xE0,0x10,0x01,0xEF,0x17,0x07,0x8E,0xD3,0x01,0x2F,0x3E,0xE4,0x00,0x0B,0xEF,0x9A,
+0xFE,0x0E,0xF1,0x01,0xC1,0xA0,0x10,0x01,0x13,0x2A,0x00,0xFD,0xAD,0x0B,0xA6,0x9B,
+0x00,0x8A,0xED,0xE4,0x00,0x00,0x35,0x0B,0x57,0x01,0x9F,0x01,0x0F,0x4B,0x01,0x5F,
+0x18,0x00,0x0B,0x57,0x03,0x1E,0xF7,0x30,0x0F,0x4B,0x03,0x9D,0x64,0xD7,0x19,0xFF,
+0x56,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x08,0x3A,0x22,0xE4,0x26,0x99,0x60,0xE4,0x00,
+0x00,0x5F,0xE7,0xFF,0xC4,0xEE,0x20,0x6B,0xD8,0xE7,0xFF,0xC4,0xE0,0x20,0x6C,0xAE,
+0xE7,0xFF,0xFF,0xD9,0xCC,0x8B,0x00,0x30,0x88,0xCB,0x1C,0x84,0x10,0x9D,0x61,0x8C,
+0x8A,0x5D,0x6B,0x00,0x1C,0x64,0x06,0x9C,0x88,0xE7,0xFF,0x50,0x5E,0x10,0xAA,0x00,
+0xD4,0xAB,0xFF,0x25,0xE4,0x00,0x00,0x11,0xE7,0xFF,0x4F,0xB0,0xE7,0xFF,0xC4,0x7A,
+0xC3,0x20,0x10,0x01,0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0x20,0x68,0xD6,0x53,
+0x40,0x4B,0xEF,0x58,0x08,0x89,0xEF,0x59,0x08,0x53,0x53,0x00,0x25,0xEF,0x17,0x08,
+0x9F,0xC2,0x20,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFE,0x31,0x08,0x40,0xEF,0x17,0x08,
+0x75,0x99,0x60,0xC2,0x60,0x10,0x01,0xC2,0x80,0x10,0x01,0x8A,0x51,0xE4,0x00,0x03,
+0x19,0x53,0x40,0x32,0xEF,0x58,0x08,0x89,0xEF,0x59,0x08,0x53,0x53,0x00,0x19,0xE7,
+0xFF,0xFF,0x9D,0x4E,0xEB,0x10,0x8E,0xEE,0x0B,0x17,0x00,0xC3,0x0F,0xFF,0xE4,0x20,
+0x05,0x3B,0x0B,0x37,0x02,0xC3,0x2F,0xFF,0xE0,0x20,0x05,0x11,0xCE,0xEB,0x00,0x30,
+0x8E,0xEA,0x0A,0x17,0x17,0x42,0x18,0x85,0x5E,0x10,0x06,0x4F,0x10,0xFA,0x0A,0xF7,
+0x19,0x46,0x18,0x86,0x42,0xF9,0xBD,0x42,0x10,0xC5,0x5E,0xF7,0x06,0x4F,0x17,0xFA,
+0x5E,0x10,0x06,0x46,0xF8,0xBE,0xE9,0xF3,0x08,0x89,0x42,0xF7,0xC5,0x43,0x11,0x5C,
+0x5E,0xF7,0x06,0x13,0x58,0x00,0xD6,0xEF,0x00,0xE4,0xC3,0x00,0x10,0x01,0xEB,0x18,
+0x08,0x53,0xD6,0x18,0x00,0x84,0x9B,0x03,0x27,0x48,0x57,0x1F,0x1A,0x01,0xE4,0x00,
+0x00,0x19,0x9B,0x00,0x23,0x40,0x24,0x1F,0x1A,0xFF,0x5F,0x18,0x00,0x43,0x52,0x5C,
+0x1B,0x1A,0x00,0x43,0x11,0x5C,0x13,0x18,0x00,0xD3,0x02,0x06,0xA1,0xEB,0x14,0x08,
+0x75,0xD6,0xF8,0x00,0x8C,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0F,0x37,0x19,0xE4,0x00,
+0x00,0x9B,0xD6,0xEF,0x02,0x4C,0x43,0x2F,0xC5,0x40,0x77,0xC5,0x43,0x39,0xCB,0x42,
+0xF8,0xBD,0x43,0x4F,0x7B,0x40,0x63,0xBB,0x8C,0x79,0x40,0x63,0xD3,0x40,0x63,0xC8,
+0xE7,0xFF,0x10,0xD0,0x4E,0xEB,0x10,0x8E,0xEE,0x5C,0x63,0x06,0x0B,0x17,0x02,0x41,
+0xEF,0x1D,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0B,0x37,0x18,0xD7,0x19,0x00,0x58,0x41,
+0xF8,0x7D,0xE4,0x00,0x00,0x0D,0x8D,0xF8,0x0D,0xF7,0x19,0xC2,0xE0,0x10,0x01,0xEA,
+0xF7,0x08,0x9F,0xD6,0x17,0x00,0xCC,0xCE,0xEB,0x00,0x30,0x4F,0x0B,0x10,0x8E,0xEA,
+0x8F,0x0E,0x0B,0x18,0x01,0x0F,0x17,0x17,0xE4,0x00,0x00,0xAB,0xC3,0x00,0x10,0x01,
+0xE9,0xF8,0x08,0x53,0xD6,0x0F,0x02,0x4C,0x43,0x0F,0xBD,0x43,0x2F,0x7B,0x43,0x18,
+0xC3,0x40,0x70,0xBD,0x42,0x17,0x85,0x40,0x63,0x83,0x8C,0x78,0x40,0x63,0xCB,0x40,
+0x63,0xC0,0xE7,0xFF,0x0F,0xEC,0x4E,0xEB,0x10,0x8E,0xEE,0x5C,0x63,0x06,0x0B,0x17,
+0x00,0x41,0xEF,0x1D,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0B,0x37,0x16,0xD7,0x19,0x00,
+0x58,0x41,0xF8,0x7D,0xE4,0x00,0x00,0x0D,0x8D,0xF8,0x0D,0xF7,0x17,0x4E,0xEB,0x10,
+0xCF,0x0B,0x00,0x30,0x8E,0xEE,0x8F,0x0A,0x9D,0x61,0x0B,0x38,0x17,0x5D,0x6B,0x00,
+0x0B,0x18,0x19,0x0F,0x37,0x01,0x0F,0x17,0x03,0x12,0xEA,0x00,0xD6,0xEB,0xF4,0x3D,
+0xE7,0xFF,0xC0,0xD2,0x20,0x68,0x36,0x9B,0x08,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x03,
+0x71,0xC2,0xE0,0x10,0x01,0x13,0x2A,0x00,0xF3,0x77,0x08,0x84,0x8B,0x0D,0xC2,0xE0,
+0x10,0x01,0x9B,0x80,0xFE,0xF7,0x0B,0x74,0xFF,0x40,0x7F,0xFF,0xE4,0x00,0x00,0x9F,
+0xD7,0x79,0x00,0x92,0x0F,0x57,0xFD,0x0F,0x57,0xFF,0x0F,0x57,0x01,0x0F,0x57,0x03,
+0x8B,0x79,0x0B,0xB7,0x00,0xC3,0xAF,0xFF,0xE0,0x20,0x00,0x41,0x0B,0xB7,0xFD,0x0F,
+0xB7,0x01,0x0B,0xB7,0xFF,0xE4,0x00,0x00,0x1B,0x0B,0xB8,0x01,0x0F,0xB7,0x01,0x0B,
+0xB8,0x03,0x0F,0xB7,0x03,0x0B,0xB8,0x01,0x9F,0x81,0x0F,0xB7,0xFD,0x5F,0x9C,0x00,
+0x0B,0xB8,0x03,0x1F,0x18,0x30,0x0F,0xB7,0xFF,0x9E,0xE8,0xD7,0x99,0xFD,0xAE,0xC2,
+0xE0,0x10,0x01,0xFB,0x77,0x08,0x84,0xC2,0xE0,0x10,0x01,0x23,0x24,0x7A,0x9B,0x02,
+0xFB,0x17,0x08,0xA1,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x03,0x70,0x9B,0x0A,0x9B,0x4A,
+0x43,0x18,0xBD,0x9A,0xE0,0xE4,0x00,0x00,0x8F,0xF8,0x17,0x08,0xA1,0xE7,0xFF,0xFF,
+0xCF,0x0B,0x6C,0x04,0x0B,0x8C,0x00,0x0B,0xAC,0x06,0x43,0x9C,0xDD,0x9E,0xE1,0x43,
+0x98,0xE3,0x5E,0xF7,0x00,0x43,0x9C,0xD0,0x8F,0x9B,0x0B,0x6C,0x02,0x0F,0x8D,0x01,
+0x43,0x7B,0xED,0x0F,0x8C,0x01,0x43,0x78,0xDB,0x43,0x7B,0xD0,0x8F,0x7D,0x5F,0x7B,
+0x06,0x0F,0x6D,0x03,0x0F,0x6C,0x03,0x1D,0xAD,0x30,0x9D,0x88,0xD6,0xF9,0xFE,0x2E,
+0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0x19,0x56,0xF7,0x02,0x22,0xE0,0x24,0x98,0x64,
+0xE7,0xFF,0xD1,0x1E,0x13,0x0A,0x00,0xC2,0xE0,0x10,0x01,0x0E,0xA1,0x06,0x0E,0x81,
+0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,
+0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,
+0x21,0x36,0xFB,0x17,0x08,0x26,0x98,0x61,0x1C,0x21,0x38,0xE7,0xFF,0xB3,0x1F,0x18,
+0x0F,0x00,0x9A,0xE4,0xE4,0x00,0x04,0xF3,0xD2,0xE4,0x01,0xA6,0x0A,0xEE,0x01,0x56,
+0xF7,0x08,0x22,0xE0,0x3C,0x9A,0xE3,0x0C,0x11,0x01,0x0E,0xED,0x00,0xE4,0x00,0x04,
+0xC7,0x12,0xEF,0x00,0x9E,0xE1,0x5E,0xF7,0x00,0x1A,0xEF,0x00,0xD2,0xE1,0x12,0xA1,
+0x9A,0xE5,0x18,0x0F,0x00,0x0E,0xED,0x00,0xE4,0x00,0x04,0x91,0xD2,0xE5,0x09,0xF6,
+0x12,0xEF,0x00,0x9E,0xE1,0x1A,0xEF,0x00,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0x84,
+0x22,0xE9,0x4A,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0x19,0x56,0xF7,0x01,0x22,0xE1,
+0x10,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xA1,0xC1,0x40,0x10,0x01,0xF2,0xEA,0x08,
+0x11,0x22,0xE8,0x66,0x98,0x65,0xE7,0xFF,0xCF,0xB2,0x98,0x61,0xE7,0xFF,0xB2,0x1C,
+0x9A,0xE1,0xFA,0xEA,0x08,0x11,0xE4,0x00,0x01,0x75,0xD2,0xE1,0x05,0x8E,0x98,0x65,
+0xE7,0xFF,0xCF,0x7E,0x98,0x61,0xE7,0xFF,0xB1,0xE8,0xF8,0x0A,0x08,0x11,0xE4,0x00,
+0x01,0x45,0x0B,0x0B,0x00,0x0B,0x4C,0x00,0x43,0x38,0xD5,0x5F,0x39,0x06,0x4E,0xF9,
+0xFA,0x47,0x37,0xCE,0x42,0xF9,0xBD,0x5E,0xEC,0x99,0x20,0x00,0x7D,0x0A,0xEC,0x03,
+0x0B,0x2B,0x03,0x43,0x39,0xBD,0x5F,0x39,0x06,0x4E,0xF9,0xFA,0x47,0x37,0xCE,0x42,
+0xF9,0xBD,0xC2,0xE0,0x10,0xE8,0x20,0x01,0x95,0xC3,0x20,0x10,0x01,0xF2,0xF9,0x08,
+0xA1,0x22,0xE8,0xB6,0x8F,0x1A,0x43,0x18,0xB8,0x0F,0x0A,0x17,0xC3,0x00,0x10,0x01,
+0xEB,0x58,0x08,0x2A,0xC3,0x00,0x10,0x01,0xEB,0x18,0x0B,0x72,0x8F,0x1A,0x42,0xF8,
+0xB8,0x0E,0xEA,0x19,0x9A,0xE1,0xFA,0xF9,0x08,0xA1,0xE4,0x00,0x00,0x45,0x22,0xE4,
+0x66,0xC2,0xE0,0x10,0x01,0x0F,0x0A,0x17,0xEA,0xF7,0x08,0x2B,0xF8,0x19,0x08,0xA1,
+0x0E,0xEA,0x19,0xE4,0x00,0x00,0x13,0x9A,0xE3,0x1A,0xEF,0x00,0x9A,0xE1,0x98,0x61,
+0x1A,0xEA,0x00,0xE7,0xFF,0xB0,0xAE,0xE4,0x00,0x00,0x13,0x9A,0xE3,0x1A,0xEF,0x00,
+0x12,0xEF,0x00,0xD2,0xE2,0x09,0xE9,0x98,0x62,0x0C,0x11,0x01,0xE7,0xFF,0xD2,0xCE,
+0xE7,0xFF,0x0A,0x5E,0xC2,0xE0,0x10,0x01,0x9B,0x03,0xFB,0x17,0x08,0x50,0xE7,0xFF,
+0xD1,0x30,0xE7,0xFF,0x46,0xBC,0x98,0x60,0xE7,0xFF,0xB0,0x44,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x67,0x9A,0xE6,0xE4,0x00,0x02,0x0F,0xD2,0xE6,0x08,0x36,0x0A,0xEE,
+0x01,0x56,0xF7,0x40,0x22,0xE0,0x26,0x98,0x64,0xE7,0xFF,0xEB,0xA6,0xC3,0x00,0x10,
+0x01,0xF2,0xF8,0x08,0x67,0x9E,0xE1,0x5E,0xF7,0x00,0xFA,0xF8,0x08,0x67,0x5E,0xE6,
+0x53,0x0A,0xEE,0x01,0x20,0x01,0x35,0x56,0xF7,0x40,0x22,0xE0,0x50,0x9A,0xE1,0x0E,
+0xED,0x00,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x76,0xE4,0x00,0x01,0x8D,0x0C,0x0D,
+0x00,0x98,0x60,0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,
+0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,
+0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0xE7,0xFF,0xEA,
+0xDF,0x56,0xF7,0x08,0xD2,0xE0,0x04,0x62,0x18,0x10,0x00,0x9A,0xE2,0xE4,0x00,0x01,
+0x01,0xC3,0x6F,0xFF,0xE4,0x23,0xE2,0x95,0xE7,0xFF,0xF1,0x73,0x0B,0x8C,0x01,0x43,
+0x98,0xE5,0x5F,0x9C,0x06,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0x5F,0x6C,
+0x99,0x23,0xE5,0x33,0xE7,0xFF,0xF2,0xC5,0x98,0x62,0xE7,0xFF,0xCC,0x4A,0xFE,0xE0,
+0x7F,0xFF,0x0E,0xEB,0x05,0x0E,0xEB,0x07,0x0E,0xEE,0x05,0x0E,0xEE,0x07,0x0E,0xEC,
+0x09,0x0E,0xEC,0x0B,0x0E,0xEC,0x0D,0x0E,0xEC,0x0F,0xE7,0xFF,0xF0,0xEF,0x0A,0xF1,
+0x01,0xCB,0x00,0xFF,0xFD,0x9E,0xE1,0x5E,0xF7,0x04,0xD6,0xF8,0xD0,0xAD,0xE7,0xFF,
+0xF4,0x27,0xFE,0xE0,0x7F,0xFF,0x18,0x0F,0x00,0x0E,0xEB,0x01,0x0E,0xEB,0x03,0x0E,
+0xEB,0x05,0x0E,0xEB,0x07,0x18,0x10,0x00,0x1B,0x10,0x01,0x9A,0xE5,0x0E,0xED,0x00,
+0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,
+0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,
+0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0x9C,0x38,0x0D,0x21,
+0x04,0x0D,0x41,0x00,0x89,0x43,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xE6,0x12,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xE5,0xF3,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x3D,0xF9,0x1C,0x21,0xC8,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,
+0x61,0x2C,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,0xE1,0x1C,0x0E,0x01,
+0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,0x61,0x0C,0x0E,0x81,0x08,0x13,0x17,0x00,
+0xC2,0xE0,0x10,0x01,0xFB,0x17,0x00,0xC0,0xF3,0x17,0x00,0xC0,0x23,0x00,0x2C,0xF2,
+0xF7,0x00,0xC0,0xD2,0xE1,0x30,0x2E,0xC1,0x80,0x10,0x01,0xC1,0xE0,0x10,0x01,0xFD,
+0x8C,0x08,0x86,0xFD,0xEF,0x00,0xE0,0x0A,0xEC,0x01,0x56,0xF7,0x80,0xD2,0xE0,0x2E,
+0x1E,0xC2,0xE0,0x10,0x01,0xC1,0xA0,0x10,0x01,0xF3,0x17,0x00,0xC0,0xFD,0xAD,0x09,
+0x0C,0x23,0x08,0xB2,0xF2,0xF7,0x00,0xC0,0x22,0xE8,0x68,0x0B,0x2D,0x02,0x9B,0x42,
+0xCF,0x19,0x00,0x03,0x0A,0xED,0x00,0x43,0x18,0xD0,0xD6,0xF8,0x02,0x14,0xE4,0x00,
+0x00,0x9B,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,0x09,0x22,0xE3,0x86,0x8B,0x0D,0x9A,
+0xE0,0x9B,0x22,0x5F,0x57,0x00,0x27,0x44,0x3D,0x5E,0xE3,0x01,0x20,0x00,0x25,0x5E,
+0xE3,0x29,0x20,0x00,0x31,0x0B,0x58,0x00,0x43,0x5A,0xC8,0x0F,0x58,0x01,0x9E,0xE1,
+0x9F,0x02,0x5E,0xE3,0x49,0x23,0xFF,0x79,0xE7,0xFF,0xFF,0x67,0x42,0xF7,0xC5,0x43,
+0x57,0xD0,0x8F,0x1A,0x0F,0x0D,0x01,0xE4,0x00,0x00,0x43,0x4E,0xF7,0x08,0x9B,0x1D,
+0x43,0x17,0xC0,0x8F,0x38,0x9B,0x0B,0xCF,0x39,0x00,0x0A,0x43,0x39,0xC0,0x9B,0x03,
+0x42,0xF7,0xC0,0x8E,0xF9,0x0E,0xED,0x03,0x0A,0xED,0x30,0x0B,0x0D,0x32,0x4F,0x37,
+0x08,0xD7,0x19,0x00,0xC0,0xCE,0xF7,0xFF,0xFE,0x9B,0x43,0x8F,0x17,0x43,0x18,0xD0,
+0x8F,0x38,0x0F,0x2D,0x33,0xE4,0x00,0x00,0x37,0x9B,0x22,0x43,0x18,0xC8,0x53,0x20,
+0x14,0x42,0xF7,0xC5,0xCE,0xF7,0x00,0x13,0x42,0xF7,0xC8,0x8F,0x17,0x0F,0x0D,0x31,
+0xC1,0x40,0x10,0x01,0xFD,0x4A,0x0B,0x1A,0x12,0xEA,0x04,0x10,0x6A,0x01,0x40,0x63,
+0xBB,0xE7,0xFF,0xCC,0xD8,0x13,0x0A,0x01,0xC3,0x20,0x10,0x01,0x13,0x4A,0x04,0xEA,
+0xF9,0x09,0xBC,0x43,0x5A,0xC3,0xFF,0x79,0x09,0xBC,0x9B,0x00,0xE4,0x00,0x00,0x35,
+0x4F,0x38,0x10,0x9F,0x01,0x8F,0x3B,0x5F,0x18,0x00,0x0F,0x39,0x02,0x5F,0x99,0x06,
+0x5F,0x37,0x1D,0x4A,0xFC,0xB8,0xD7,0x58,0xFF,0x54,0xC1,0x40,0x10,0x01,0xC2,0xE2,
+0x32,0x88,0xFD,0x4A,0x01,0x64,0x20,0x00,0x35,0x4E,0xF7,0x0A,0x0E,0xEA,0x19,0xE4,
+0x00,0x00,0x2F,0x53,0x00,0xDF,0xC2,0xE0,0x6F,0x68,0x20,0x00,0x25,0x4E,0xF7,0x12,
+0x5F,0x17,0x06,0x0F,0x0A,0x19,0x88,0x6A,0xE7,0xFF,0x14,0xEE,0xC1,0x60,0x10,0x01,
+0x89,0xCD,0xFD,0x6B,0x0B,0x90,0x8A,0xED,0x12,0x2B,0x00,0x53,0x20,0x14,0x0B,0x17,
+0x00,0xCF,0x18,0x00,0x19,0x43,0x18,0xC8,0x0F,0x17,0x01,0xC3,0x00,0x10,0x01,0x9E,
+0xE2,0xFF,0x18,0x09,0x40,0xD6,0xF8,0xFF,0x4E,0x88,0x6A,0xE7,0xFF,0x14,0x88,0xC2,
+0x00,0x10,0x01,0x9A,0xE0,0xFE,0x10,0x08,0x26,0x22,0x20,0x4A,0x13,0x0B,0x00,0x27,
+0x04,0x33,0x12,0xF0,0x00,0x5E,0xE0,0x01,0x4A,0xE1,0x01,0x13,0x0B,0x00,0x23,0x09,
+0x2E,0x13,0x10,0x00,0x23,0x05,0x3A,0x13,0x2B,0x07,0x13,0x0B,0x37,0xD7,0x38,0x02,
+0x2A,0x0F,0x0B,0x0A,0x23,0x04,0xFA,0x0F,0x0B,0x3A,0x23,0x04,0xE2,0xC3,0x00,0x10,
+0x01,0xEB,0x38,0x0B,0x72,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0xA5,0xFF,0x39,0xFC,0x01,
+0x4F,0x19,0xFA,0x47,0x38,0xCE,0x43,0x19,0xC5,0xC3,0x20,0x10,0x01,0xEB,0x59,0x0B,
+0x25,0xD7,0x1A,0x00,0xA4,0xE4,0x00,0x00,0x1B,0x23,0x04,0x26,0x13,0x10,0x00,0x23,
+0x00,0x18,0x22,0xE0,0x9C,0x53,0x00,0x19,0x0A,0xEE,0x00,0xCE,0xF7,0x00,0x14,0x42,
+0xF7,0xC0,0x0E,0xEE,0x01,0xC3,0x40,0x10,0x01,0x9D,0xC2,0xFF,0x5A,0x09,0x40,0xD5,
+0xDA,0xFF,0x4E,0x88,0x6A,0xE7,0xFF,0x13,0x54,0x0E,0xEF,0x02,0x22,0xE4,0x26,0x98,
+0x61,0xE7,0xFF,0xCA,0xC4,0x12,0xEB,0x00,0x22,0xE0,0x5A,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x08,0x38,0x13,0x2B,0x00,0xD3,0x20,0x09,0x86,0xE4,0x00,0x02,0x93,0x98,0x61,
+0x98,0x81,0x88,0xAA,0xE7,0xFF,0x0E,0x1C,0x0A,0xEA,0x10,0x0B,0x0A,0x06,0x0B,0x2A,
+0x12,0x5D,0xD7,0x04,0x42,0x38,0xBD,0x40,0xB8,0xCD,0xCA,0xE0,0x07,0xFF,0x43,0x37,
+0xCD,0x0B,0x4A,0x02,0x0B,0x6A,0x08,0x40,0x97,0xC5,0x5C,0xF9,0x04,0x13,0xCB,0x00,
+0x0B,0x2A,0x0A,0x40,0x78,0xD5,0x42,0x77,0xCD,0x40,0xDA,0xC5,0xC2,0xE0,0x10,0x01,
+0x42,0x59,0xDD,0x42,0x9B,0xCD,0xFE,0xF7,0x0B,0xA8,0x9B,0xA0,0xC9,0x00,0x07,0xFF,
+0xE4,0x00,0x00,0xC5,0x0B,0x97,0xFE,0xD7,0x1C,0x00,0x98,0x43,0x9C,0xD5,0x43,0x9C,
+0x8B,0x43,0x9C,0x18,0x8F,0x8E,0xE4,0x00,0x00,0x2D,0xD7,0x84,0x00,0xA8,0x43,0x88,
+0xE5,0x43,0x9C,0xD5,0x43,0x9C,0x2B,0x43,0x9C,0x30,0x8F,0x87,0x0F,0x97,0xFF,0x0B,
+0x97,0x00,0xD7,0x3C,0x00,0x88,0x43,0x9C,0xDD,0x43,0x9C,0xCB,0x43,0x9C,0x90,0xE4,
+0x00,0x00,0x31,0xD7,0x93,0x00,0xB8,0x43,0x88,0xE5,0x43,0x9C,0xDD,0x43,0x9C,0xCB,
+0x43,0x9C,0xA0,0xFF,0x9C,0x07,0xFF,0x0F,0x97,0x01,0x9F,0xA1,0x1E,0xF7,0x30,0x5F,
+0xBD,0x00,0xD7,0xBE,0xFD,0x16,0x0B,0x0A,0x12,0xCA,0xE0,0x07,0xFF,0x0B,0x2A,0x10,
+0x0B,0x4A,0x0C,0x43,0x77,0xCD,0x42,0xF7,0xD5,0x43,0x7B,0xC5,0x0B,0x0A,0x0E,0x43,
+0x97,0xC5,0xC2,0xE0,0x10,0x01,0x9B,0x00,0xFE,0xF7,0x0B,0xA6,0xE4,0x00,0x00,0x59,
+0x0B,0xB7,0x00,0x43,0xBD,0xCD,0xCF,0xBD,0x07,0xFF,0x43,0xBD,0xD8,0x9F,0x01,0x0F,
+0xB7,0x01,0x5F,0x18,0x00,0x0B,0xB7,0x02,0x43,0xBD,0xD5,0xCF,0xBD,0x07,0xFF,0x43,
+0xBD,0xE0,0x0F,0xB7,0x03,0x1E,0xF7,0x30,0xD7,0x1E,0xFE,0xC6,0xE7,0xFF,0xFD,0xBF,
+0xCF,0x57,0x00,0x30,0x9E,0xE1,0x8F,0x4B,0x0F,0x5A,0x0E,0xC3,0x40,0x95,0xEC,0x4B,
+0x18,0x0A,0xE4,0x00,0x00,0x11,0x9A,0xE0,0x8B,0x17,0x5F,0x57,0x00,0xD7,0x3A,0xFF,
+0x1D,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x38,0x0A,0xEC,0x01,0x52,0xF7,0x08,0xE4,
+0x00,0x00,0x33,0x9B,0x07,0xC2,0xE0,0x10,0x01,0x18,0x10,0x00,0xEF,0x17,0x03,0x71,
+0x0A,0xEC,0x01,0x9B,0x17,0x46,0xF7,0xC4,0x0E,0xEC,0x01,0xC1,0xC0,0x10,0x01,0x0E,
+0xEF,0x02,0xFD,0x4E,0x08,0x30,0xD2,0xE1,0x0A,0x6E,0xE7,0xFF,0xE1,0x48,0xC2,0xE0,
+0x10,0x01,0x99,0x60,0xEE,0xF7,0x07,0x8E,0x22,0xE5,0x6A,0xE4,0x00,0x02,0x29,0x1C,
+0x61,0x01,0x88,0x8F,0x98,0xA3,0xE7,0xFF,0x6A,0x14,0x1E,0xE1,0x08,0x8E,0xEB,0x12,
+0xF7,0xF9,0x1F,0x17,0x1A,0x4E,0xF7,0x08,0x4F,0x18,0x08,0x8E,0xF0,0x8F,0x0D,0x0A,
+0xF7,0x01,0x0B,0x18,0x00,0xD7,0x17,0x00,0x98,0x9A,0xE1,0x0B,0x0A,0x01,0x4E,0xF7,
+0x5C,0x46,0xF7,0xC5,0xE4,0x00,0x00,0x25,0x9A,0xE1,0x0B,0x0A,0x01,0x4E,0xF7,0x5C,
+0x46,0xF7,0xBF,0x46,0xF7,0xC4,0x9D,0x61,0x0E,0xEA,0x01,0x5D,0x6B,0x00,0xE4,0x00,
+0x00,0x31,0xC1,0xF8,0x00,0x21,0xC2,0x00,0x10,0x01,0xC1,0xC0,0x10,0x01,0xFD,0xEF,
+0xB4,0xBA,0xFE,0x10,0x03,0x72,0xF2,0xEE,0x08,0x66,0xD6,0xEB,0xFC,0xAD,0x0A,0xEA,
+0x01,0x22,0xE0,0x34,0x0A,0xEC,0x01,0x52,0xF7,0x10,0xE4,0x00,0x00,0x3B,0x0A,0xEC,
+0x01,0x57,0x17,0x10,0x23,0x00,0x34,0x9B,0x21,0xC3,0x00,0x10,0x01,0xFB,0x38,0x08,
+0x50,0x1F,0x40,0xEF,0x46,0xF7,0xD4,0x0E,0xEC,0x01,0xC1,0x40,0x10,0x01,0xC3,0x00,
+0x10,0x01,0xEE,0xEA,0x08,0x5A,0xFF,0x18,0x08,0x77,0x22,0xE0,0x56,0x18,0x18,0x00,
+0x0A,0xEC,0x01,0x56,0xF7,0x10,0x22,0xE1,0x64,0x9A,0xE1,0xE4,0x00,0x00,0x41,0x22,
+0xE4,0x92,0x12,0xF8,0x00,0x9E,0xE1,0x5E,0xF7,0x00,0x1A,0xF8,0x00,0x0B,0x0C,0x01,
+0x57,0x18,0x10,0x23,0x00,0xE0,0x26,0xE4,0xE5,0x9A,0xE2,0xEE,0xEA,0x08,0x58,0xE4,
+0x00,0x00,0x61,0x22,0xE8,0x7E,0x18,0x18,0x00,0x0A,0xEC,0x01,0x56,0xF7,0x10,0x22,
+0xE0,0x34,0x98,0x62,0xE7,0xFF,0xA3,0x4C,0xE4,0x00,0x00,0x2F,0x9A,0xE3,0xE7,0xFF,
+0xFF,0xBB,0x22,0xEC,0x36,0x98,0x60,0xE7,0xFF,0xA3,0x26,0xEC,0x0A,0x08,0x58,0x0B,
+0x0C,0x00,0xC2,0xE0,0x10,0x01,0x27,0x1C,0x56,0xF3,0x17,0x08,0x3C,0xD3,0x09,0x08,
+0x1D,0x9F,0x01,0xFB,0x17,0x08,0x3C,0xE4,0x00,0x01,0xF3,0xF8,0x17,0x08,0x3C,0xE4,
+0x00,0x01,0xFB,0x0E,0xEF,0x02,0xD2,0xE2,0x07,0xB6,0x0A,0xEC,0x01,0x56,0xF7,0x40,
+0x22,0xE0,0x26,0x98,0x63,0xE7,0xFF,0xF4,0xEE,0x12,0xEB,0x00,0x22,0xE0,0x36,0x98,
+0x60,0x98,0x80,0x98,0xA0,0xE4,0x00,0x00,0x3B,0x22,0xE4,0x3E,0x08,0x6B,0x17,0x08,
+0x8B,0x19,0x98,0xA1,0xE4,0x00,0x00,0x1D,0xD2,0xE1,0x06,0x21,0x98,0x60,0x98,0x80,
+0x98,0xA2,0x1C,0xC1,0x04,0xE7,0xFF,0xBD,0xD2,0xD0,0x61,0x05,0x9E,0x0E,0xE1,0x06,
+0x22,0xE0,0x2A,0x52,0xE0,0x58,0xE4,0x00,0x00,0xD9,0x9E,0xFF,0xD2,0xEB,0x03,0x6D,
+0x4E,0xF7,0x10,0xC3,0x18,0x00,0x21,0xFF,0x18,0xBB,0x3C,0x8E,0xF8,0x0E,0xF7,0x02,
+0x86,0xE9,0x52,0xE0,0x60,0xE4,0x00,0x00,0x9B,0x52,0xE0,0x61,0xE4,0x00,0x00,0x8D,
+0x52,0xE0,0x62,0xE4,0x00,0x00,0x7F,0x52,0xE0,0x63,0xE4,0x00,0x00,0x71,0x52,0xE0,
+0x64,0xE4,0x00,0x00,0x63,0x52,0xE0,0x65,0xE4,0x00,0x00,0x55,0x52,0xE0,0x66,0xE4,
+0x00,0x00,0x47,0x52,0xE0,0x67,0xE4,0x00,0x00,0x39,0x52,0xE0,0x68,0xE4,0x00,0x00,
+0x2B,0x52,0xE0,0x69,0xE4,0x00,0x00,0x1D,0x52,0xE0,0x6A,0xE4,0x00,0x00,0x0F,0x52,
+0xE0,0x6B,0x0E,0xEA,0x01,0xE4,0x00,0x00,0x6F,0x0C,0x0A,0x01,0xE4,0x00,0x00,0x61,
+0x0E,0xEF,0x02,0x22,0xE4,0xA6,0x9B,0x05,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x60,
+0x9B,0x03,0xC2,0xE0,0x10,0x01,0x98,0x60,0xFB,0x17,0x08,0x50,0xE7,0xFF,0xA0,0xFC,
+0xE7,0xFF,0x9B,0xCC,0xE4,0x00,0x00,0x11,0xE7,0xFF,0x9C,0xA6,0xC2,0xE0,0x10,0x01,
+0xEB,0x17,0x08,0x33,0xC3,0x00,0x7D,0x0A,0x20,0x00,0x61,0xC3,0x00,0x10,0x01,0x9B,
+0x5E,0xF3,0x38,0x08,0x1A,0xEC,0x17,0x08,0x33,0x47,0x39,0xD4,0xFB,0x38,0x08,0x1A,
+0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,
+0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,
+0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0x9C,0x38,0x0D,0x41,0x00,0x0D,0x21,
+0x04,0x89,0x43,0x20,0x84,0x46,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xD8,0x92,0x98,0x68,
+0xE4,0x00,0x00,0x1D,0x98,0x62,0x88,0x8A,0xE7,0xFF,0xD8,0x76,0x98,0x69,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x9C,0x28,0xE7,0xFF,0xD8,0x57,0x9C,0x38,0x0D,0x21,
+0x04,0x0D,0x41,0x00,0x89,0x43,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xD8,0x32,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xD8,0x13,0xD0,0x69,
+0x08,0x05,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBB,0x6C,0x8E,0xF8,0xC3,
+0x20,0x10,0x01,0x0F,0x77,0x02,0xC3,0x40,0x10,0x01,0xC3,0x00,0x10,0x01,0xC2,0xE0,
+0x10,0x01,0xFF,0x39,0x09,0xF8,0xFF,0x5A,0x09,0x48,0xFF,0x18,0x0C,0x96,0xFE,0xF7,
+0x09,0x0C,0x87,0x69,0xCC,0x63,0x00,0x1A,0x5C,0x63,0x00,0x4F,0x23,0x08,0x4C,0x63,
+0x10,0x8F,0x19,0x8E,0xF9,0x8F,0x43,0x9B,0x20,0x43,0x77,0xCC,0x43,0xB8,0xCC,0x4F,
+0x99,0x08,0x0B,0xBD,0x01,0x8F,0x9A,0x0F,0x9C,0x02,0x4F,0x9C,0x42,0x43,0x9D,0xE5,
+0x0F,0x9B,0x01,0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x85,0xE4,0x00,0x01,0x27,0x9C,
+0x7E,0xCC,0x63,0x00,0x1A,0x5C,0x63,0x00,0x4F,0x43,0x08,0x4C,0x63,0x10,0x8F,0x1A,
+0x8C,0x79,0x8E,0xFA,0x9B,0x20,0x43,0x77,0xCC,0x43,0xB8,0xCC,0x4F,0x99,0x08,0x0B,
+0xBD,0x01,0x8F,0x83,0x0F,0x9C,0x02,0x4F,0x9C,0x42,0x43,0x9D,0xE5,0x0F,0x9B,0x01,
+0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x85,0xE4,0x00,0x00,0xAD,0x0B,0x78,0x35,0x0F,
+0x3A,0x6A,0x4F,0x39,0x42,0x43,0x3B,0xCD,0x0B,0x78,0x37,0x0F,0x37,0x35,0x0F,0x3A,
+0x6E,0x4F,0x39,0x42,0x43,0x3B,0xCD,0x0F,0x37,0x37,0x0F,0x3A,0x72,0xE4,0x00,0x00,
+0x4B,0x0F,0x59,0x6A,0x0B,0x78,0x35,0x4F,0x5A,0x42,0x43,0x5B,0xD5,0x0B,0x78,0x37,
+0x0F,0x57,0x35,0x0F,0x59,0x6E,0x0F,0x39,0x72,0x4F,0x5A,0x42,0x43,0x5B,0xD5,0x0F,
+0x57,0x37,0x4F,0x39,0x42,0x0B,0x18,0x39,0x43,0x18,0xCD,0x0F,0x17,0x39,0x85,0x29,
+0x9C,0x38,0x0D,0x21,0x04,0x20,0x64,0x3E,0x98,0x60,0xE7,0xFF,0xFD,0xE8,0x98,0x68,
+0xE4,0x00,0x00,0x19,0x98,0x62,0xE7,0xFF,0xFD,0xD0,0x98,0x69,0x0D,0x21,0x06,0x9C,
+0x28,0xE7,0xFF,0xFD,0xBB,0x9C,0x38,0x98,0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFD,0xA4,
+0x0D,0x21,0x06,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xFD,0x8F,0x9C,0x38,0x0D,0x21,0x04,
+0xE7,0xFF,0xA8,0x66,0x20,0x60,0x5E,0xE7,0xFF,0xA8,0x44,0x98,0x80,0xE7,0xFF,0xB5,
+0x9A,0xE7,0xFF,0xA8,0x30,0x98,0x82,0xE4,0x00,0x00,0x37,0xE7,0xFF,0xA8,0x30,0x20,
+0x64,0x86,0xE7,0xFF,0xA8,0x0E,0x98,0x81,0xE7,0xFF,0xB5,0x64,0xE7,0xFF,0xA7,0xFA,
+0x98,0x83,0xE7,0xFF,0xB2,0xB8,0xE7,0xFF,0xCF,0x2C,0x9A,0xE0,0xE4,0x00,0x00,0x8D,
+0xE7,0xFF,0xA7,0xE6,0x20,0x68,0x36,0xE7,0xFF,0xA7,0xC4,0x98,0x82,0xE4,0x00,0x00,
+0x23,0xE7,0xFF,0xA7,0xC4,0x20,0x6C,0x5E,0xE7,0xFF,0xA7,0xA2,0x98,0x83,0xE7,0xFF,
+0xB4,0xF8,0xE7,0xFF,0xA7,0x8E,0x98,0x87,0xE7,0xFF,0xFF,0x95,0xE7,0xFF,0xA7,0x8E,
+0x9A,0xE0,0xD0,0x67,0x00,0x86,0xE7,0xFF,0xA7,0x66,0x98,0x87,0xE7,0xFF,0xB4,0xBC,
+0x9A,0xE1,0x88,0x77,0x0D,0x21,0x06,0x9C,0x28,0x85,0x29,0x1C,0x21,0xE8,0x0D,0x21,
+0x14,0x0D,0x41,0x10,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x80,0x01,0x80,0x01,0x80,0x01,
+0x80,0x01,0xE7,0xFF,0x93,0x8C,0x0C,0x61,0x00,0xE7,0xFF,0x93,0x86,0x0C,0x61,0x04,
+0x0E,0xE1,0x02,0xD2,0xE0,0x14,0xA2,0x0E,0xE1,0x02,0xC1,0x60,0x10,0x01,0xC1,0x40,
+0x10,0x01,0x57,0x17,0x10,0xFD,0x6B,0x00,0xE6,0xFD,0x4A,0x00,0xD4,0xD3,0x00,0x06,
+0xCA,0x50,0x60,0x10,0xE7,0xFF,0x93,0x68,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xC3,
+0x9F,0x01,0x5F,0x18,0x04,0xEF,0x17,0x00,0xC3,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,
+0x33,0x23,0x00,0x24,0x9F,0x01,0xEF,0x17,0x08,0x33,0xE7,0xFF,0x93,0x6C,0x0A,0xEB,
+0x0B,0x40,0x63,0xBD,0x5E,0xE3,0x04,0x5E,0xE3,0xBB,0x20,0x02,0x3F,0xC2,0xE0,0x10,
+0x01,0xEA,0xF7,0x06,0x87,0x56,0xF7,0x20,0xD2,0xE0,0x04,0x0A,0x98,0x61,0xE7,0xFF,
+0xB5,0xAC,0x20,0x61,0xDE,0xE7,0xFF,0xA6,0x08,0x20,0x64,0x56,0xC2,0xE0,0x10,0x01,
+0xF2,0xF7,0x00,0xC8,0x56,0xF7,0x01,0x22,0xE1,0x8A,0xE4,0x00,0x00,0x1F,0xE7,0xFF,
+0xA5,0xD6,0x20,0x63,0xA8,0xE4,0x00,0x00,0xA9,0xE7,0xFF,0xCC,0x18,0xC2,0xE0,0x10,
+0x01,0xEB,0x17,0x06,0x87,0xC7,0x18,0xFF,0xDF,0xEF,0x17,0x06,0x87,0xE7,0xFF,0xA5,
+0x98,0x20,0x60,0x5E,0x98,0x81,0x98,0xA0,0xE7,0xFF,0x2A,0xF2,0x98,0x60,0x88,0x83,
+0xE7,0xFF,0xB0,0x3C,0xE4,0x00,0x00,0x43,0x98,0x80,0x98,0x62,0xE7,0xFF,0xB0,0x24,
+0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x5C,0x5E,0x98,0x60,0xE7,0xFF,0x2F,0xDC,0xE7,0xFF,
+0x92,0x44,0x0C,0x6B,0x09,0xE7,0xFF,0xCC,0x6E,0x0A,0xEA,0x01,0x52,0xF7,0x10,0x0E,
+0xEA,0x01,0xE4,0x00,0x03,0xEF,0x57,0x17,0x40,0x23,0x00,0x38,0x50,0x60,0x40,0xE7,
+0xFF,0x91,0xB2,0xE4,0x00,0x03,0xCD,0xC6,0xF7,0x01,0x00,0xD2,0xE0,0x0E,0xF2,0x98,
+0x60,0xE7,0xFF,0x91,0x5E,0xFC,0x60,0x01,0x00,0xE7,0xFF,0x91,0x5E,0xFC,0x60,0x01,
+0x00,0xE7,0xFF,0x91,0x6E,0xE7,0xFF,0xA4,0xA8,0xD0,0x67,0x0D,0xA5,0xC2,0xF8,0x00,
+0x21,0xFE,0xF7,0xBB,0x98,0x4C,0x63,0x10,0x8C,0x77,0x0E,0xE3,0x02,0x86,0xE9,0xE7,
+0xFF,0xA4,0x88,0x20,0x60,0x46,0x98,0x80,0xE7,0xFF,0xB1,0xC4,0x98,0x60,0x98,0x87,
+0xE4,0x00,0x02,0x77,0xE7,0xFF,0xA4,0x5E,0xD0,0x67,0x0C,0x2E,0x98,0x60,0x98,0x87,
+0xE4,0x00,0x01,0xFF,0xE7,0xFF,0xFB,0xCE,0xD0,0x60,0x0B,0xAA,0xE7,0xFF,0xB2,0xEA,
+0x5D,0x83,0x04,0x98,0x61,0xE7,0xFF,0xB3,0x9E,0xD0,0x60,0x07,0x56,0xC1,0x80,0x19,
+0x0A,0x20,0x03,0x89,0xE7,0xFF,0x2E,0xE4,0xE7,0xFF,0x2E,0xB4,0x5C,0x63,0x00,0x24,
+0x64,0x33,0x98,0x61,0xC1,0x80,0x32,0x0A,0x20,0x01,0xE9,0x98,0x80,0x98,0x62,0xE7,
+0xFF,0xAE,0x7E,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x5A,0xB8,0x98,0x60,0xE7,0xFF,0x2E,
+0x36,0xE7,0xFF,0x90,0x9E,0x0C,0x6B,0x09,0xE4,0x00,0x01,0xAF,0xE7,0xFF,0xFB,0x1E,
+0xD0,0x60,0x08,0xEA,0xE7,0xFF,0xB2,0x3A,0xE7,0xFF,0x5A,0xF8,0xE7,0xFF,0x5B,0x88,
+0xD0,0x61,0x04,0x9A,0xE7,0xFF,0x5B,0xA8,0x20,0x64,0xD2,0xE7,0xFF,0x2D,0xC6,0x5C,
+0x63,0x00,0xC0,0x60,0x18,0xEE,0x20,0x00,0x1D,0xE7,0xFF,0x2D,0xD2,0xE7,0xFF,0x2D,
+0xA2,0x98,0x80,0x5D,0x43,0x00,0x98,0x62,0xE7,0xFF,0xAD,0xCC,0xCC,0x6A,0x00,0x64,
+0xFC,0x63,0x01,0x5E,0xE7,0xFF,0x59,0xFE,0xE4,0x00,0x01,0x0F,0xE7,0xFF,0x5B,0x58,
+0x98,0x62,0x98,0x80,0xE4,0x00,0x00,0xEF,0xE7,0xFF,0xA2,0xD6,0x20,0x64,0x3E,0xE7,
+0xFF,0xA2,0xC8,0x88,0x83,0x98,0x64,0xE4,0x00,0x00,0x71,0xE7,0xFF,0xA2,0xB0,0x20,
+0x63,0xC0,0xE7,0xFF,0xA2,0xA2,0xD0,0x60,0x05,0x3E,0x98,0x64,0x98,0x80,0xE7,0xFF,
+0xAF,0xD8,0x98,0x64,0xE4,0x00,0x00,0x8B,0x98,0x64,0x98,0x89,0xE4,0x00,0x00,0x27,
+0xE7,0xFF,0xA2,0x66,0x20,0x64,0x76,0xE7,0xFF,0xA2,0x58,0x88,0x83,0x98,0x67,0xE7,
+0xFF,0xAF,0x96,0x0A,0xEA,0x01,0xCA,0xF7,0x01,0x00,0x0E,0xEA,0x01,0xE4,0x00,0x00,
+0xE1,0xE7,0xFF,0xA2,0x24,0x20,0x63,0x88,0xE7,0xFF,0xA2,0x16,0x20,0x61,0x86,0x98,
+0x67,0x98,0x80,0xE7,0xFF,0xAF,0x4E,0x98,0x67,0x98,0x81,0xE7,0xFF,0xAC,0xA6,0xE7,
+0xFF,0xC9,0x1A,0xE4,0x00,0x00,0x95,0x0E,0xE1,0x06,0x22,0xE1,0x3C,0x0E,0xE1,0x06,
+0x56,0xF7,0x20,0x22,0xE1,0x18,0x98,0x60,0xE7,0xFF,0x8E,0x30,0x50,0x60,0x20,0xE7,
+0xFF,0x8E,0x3A,0xE7,0xFF,0x80,0xB4,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD9,0xC7,
+0x18,0xFF,0xFE,0x50,0x60,0x20,0xEF,0x17,0x00,0xD9,0xE7,0xFF,0x8E,0x14,0xC2,0xE0,
+0x10,0x01,0xEB,0x17,0x00,0xD7,0x53,0x18,0x20,0xEF,0x17,0x00,0xD7,0xC2,0xE0,0x10,
+0x01,0xF0,0x77,0x03,0x6E,0xE7,0xFF,0x8D,0xB6,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,
+0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x0C,0x63,0x02,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x0C,0x83,0x00,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x24,0x14,0x0B,0x17,0x01,0x53,0x18,0x01,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xDF,0x0F,
+0x17,0x01,0x85,0x29,0x9C,0x30,0x0D,0x21,0x0C,0x0D,0x41,0x08,0x0D,0x61,0x04,0x0D,
+0x81,0x00,0xC1,0x54,0x00,0x01,0xC9,0x8A,0x22,0x28,0x0A,0xEC,0x01,0xC6,0xF7,0xFF,
+0xFB,0xC9,0x6A,0x22,0x04,0x0E,0xEC,0x01,0xFF,0x00,0x80,0x00,0x0A,0xEB,0x01,0x46,
+0xF7,0xC5,0x5E,0xF7,0x04,0xC9,0x4A,0x24,0xA8,0x0E,0xEB,0x01,0x0A,0xEA,0x01,0xCA,
+0xF7,0x30,0x00,0x50,0x60,0x64,0x0E,0xEA,0x01,0xE4,0x00,0x28,0x4A,0x0A,0xEC,0x01,
+0x52,0xF7,0x04,0x50,0x60,0x1E,0x0E,0xEC,0x01,0xE4,0x00,0x28,0x2A,0x0A,0xEB,0x01,
+0xC6,0xF7,0x7F,0xFF,0x0E,0xEB,0x01,0x0A,0xEA,0x01,0xC6,0xF7,0xCF,0xFF,0x0E,0xEA,
+0x01,0x0D,0x81,0x02,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,
+0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x2C,0x08,0x77,0x01,0x4C,0x63,0x09,
+0x54,0x63,0x1F,0x9C,0x61,0x85,0x29,0x9C,0x7F,0x5C,0x63,0x00,0x5C,0x62,0xFB,0x20,
+0x00,0x81,0xC2,0xF4,0x00,0x01,0x4C,0x63,0x08,0xCA,0xF7,0x24,0x2C,0x54,0x63,0x3E,
+0x0B,0x17,0x01,0x1F,0x20,0xC1,0x47,0x18,0xCC,0x44,0x63,0xC5,0x0C,0x77,0x01,0x85,
+0x29,0x9B,0x19,0x20,0x60,0x62,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x37,
+0x01,0x47,0x19,0xC4,0x53,0x18,0x04,0xE4,0x00,0x00,0x87,0x20,0x64,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x17,0x01,0x53,0x18,0x06,0xE4,0x00,0x00,0x5D,
+0x20,0x68,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x17,0x01,0xC7,0x18,
+0xFF,0xF9,0xE4,0x00,0x00,0x31,0x20,0x6C,0x5E,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,
+0x10,0x0B,0x37,0x01,0x47,0x19,0xC4,0x53,0x18,0x02,0x0F,0x17,0x01,0x85,0x29,0x5C,
+0x63,0x00,0x9C,0x30,0x0D,0x21,0x0C,0x0D,0x41,0x08,0x0C,0xA1,0x04,0x95,0x50,0xC9,
+0x4A,0x20,0x80,0x8D,0x43,0x4D,0x4A,0x18,0x88,0x6A,0xE7,0xFF,0xFC,0xE0,0x0C,0xA1,
+0x06,0x1C,0x6A,0x04,0x0D,0x21,0x0E,0x0D,0x41,0x0A,0x88,0x85,0x1C,0x21,0x10,0xE7,
+0xFF,0xFC,0xB7,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x5D,0x44,0x00,0x4E,0xEA,0x08,0x0D,
+0x61,0x0C,0x0D,0x81,0x08,0x5D,0x65,0x00,0x5C,0x63,0x00,0x4D,0x83,0x18,0x8D,0x8B,
+0x8D,0x97,0x06,0xE0,0x81,0xCA,0xF7,0x04,0x00,0x0D,0x21,0x14,0x0D,0xA1,0x04,0xC5,
+0x8C,0x1F,0xFC,0x5D,0xA6,0x00,0x8D,0x97,0x88,0x6C,0xE7,0xFF,0xFC,0x00,0x55,0x4A,
+0x01,0x50,0x80,0xFF,0x4D,0x4A,0x08,0x8D,0x6A,0x4D,0x6B,0x18,0x4C,0x84,0x5C,0x4D,
+0x6D,0x5C,0x44,0x84,0x27,0x0D,0xA1,0x06,0x44,0x83,0x24,0x0D,0x41,0x12,0x88,0x6C,
+0x44,0x84,0x5D,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x21,0x16,0x1C,0x21,0x18,0xE7,
+0xFF,0xFB,0xD7,0x5C,0x84,0x04,0x20,0x60,0x28,0x20,0x64,0xC2,0xE4,0x00,0x00,0x33,
+0x4C,0x84,0x41,0xC2,0xF4,0x00,0x01,0x9C,0x9F,0xCA,0xF7,0x24,0x34,0xC4,0x84,0x01,
+0xFF,0xE4,0x00,0x00,0x2B,0x4C,0x84,0x41,0xC2,0xF4,0x00,0x01,0x9C,0x9F,0xCA,0xF7,
+0x24,0x38,0xC4,0x84,0x01,0xFF,0x0C,0x97,0x01,0x85,0x29,0x07,0x00,0xFF,0xCB,0x18,
+0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,0x00,0x7D,0xC2,0xF4,0x00,0x01,
+0x47,0x64,0x27,0xCB,0x37,0x24,0x3C,0x0B,0x59,0x01,0x47,0x5A,0xDC,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x40,0x47,0x04,0xC4,0x0B,0x37,0x01,0x4F,0x18,0x81,0x44,0x84,0x27,
+0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,
+0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,0xF4,0x00,0x01,0x47,0x9A,0xD7,
+0xCB,0x37,0x24,0x3C,0x0B,0x79,0x01,0x47,0x7B,0xE4,0x47,0x5A,0xDD,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x40,0x44,0x84,0xC4,0x0B,0x57,0x01,0x4C,0x84,0x81,0x47,0x24,0x27,
+0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0x07,0x00,0xFF,0xCB,0x18,
+0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,0x00,0x7D,0xC2,0xF4,0x00,0x01,
+0x47,0x64,0x27,0xCB,0x37,0x24,0x1C,0x0B,0x59,0x01,0x47,0x5A,0xDC,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x20,0x47,0x04,0xC4,0x0B,0x37,0x01,0x4F,0x18,0x81,0x44,0x84,0x27,
+0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,
+0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,0xF4,0x00,0x01,0x47,0x9A,0xD7,
+0xCB,0x37,0x24,0x1C,0x0B,0x79,0x01,0x47,0x7B,0xE4,0x47,0x5A,0xDD,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x20,0x44,0x84,0xC4,0x0B,0x57,0x01,0x4C,0x84,0x81,0x47,0x24,0x27,
+0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,
+0x17,0x24,0x80,0x0B,0x38,0x01,0x5F,0x23,0x04,0x0F,0x38,0x01,0x07,0x20,0xFF,0xCB,
+0x39,0xFF,0xFF,0xCA,0xF7,0x24,0x84,0x44,0x63,0xCC,0x0B,0x17,0x01,0x4C,0x63,0x81,
+0xFF,0x20,0xFF,0x00,0x47,0x18,0xCC,0x44,0x63,0xC5,0x0C,0x77,0x01,0x85,0x29,0x07,
+0x00,0xFF,0xCB,0x18,0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,0x00,0x7D,
+0xC2,0xF4,0x00,0x01,0x47,0x64,0x27,0xCB,0x37,0x24,0x24,0x0B,0x59,0x01,0x47,0x5A,
+0xDC,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x28,0x47,0x04,0xC4,0x0B,0x37,0x01,0x4F,0x18,
+0x81,0x44,0x84,0x27,0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,0x19,0xC4,
+0x47,0x04,0xC5,0x0F,0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,0xF4,0x00,
+0x01,0x47,0x9A,0xD7,0xCB,0x37,0x24,0x24,0x0B,0x79,0x01,0x47,0x7B,0xE4,0x47,0x5A,
+0xDD,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x28,0x44,0x84,0xC4,0x0B,0x57,0x01,0x4C,0x84,
+0x81,0x47,0x24,0x27,0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0xC3,
+0x14,0x00,0x01,0xCA,0xF8,0x22,0x08,0x20,0x64,0x3A,0x0B,0x37,0x01,0xCB,0x39,0x10,
+0x00,0xE4,0x00,0x00,0x1D,0x20,0x60,0x36,0x0B,0x37,0x01,0xC7,0x39,0xEF,0xFF,0x0F,
+0x37,0x01,0xCA,0xF8,0x22,0x08,0x0B,0x17,0x01,0xCB,0x18,0x20,0x00,0x0F,0x17,0x01,
+0x85,0x29,0x5C,0x84,0x00,0x1F,0x00,0x80,0x20,0x60,0x28,0x20,0x64,0xAA,0xE4,0x00,
+0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x54,0xE4,0x00,0x00,0x19,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0x64,0x0B,0x37,0x01,0x54,0x84,0x7F,0x47,0x19,0xC4,0x47,
+0x04,0xC5,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0x20,0x60,0x28,0x20,0x64,0xAA,
+0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x50,0xE4,0x00,0x00,0x19,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x61,0x13,0x17,0x00,0x54,0x84,0x1F,0x57,0x18,
+0xE0,0x44,0x84,0xC5,0x18,0x97,0x00,0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0D,0x61,
+0x04,0x0D,0x21,0x0C,0x5D,0x44,0x00,0x89,0x63,0x1C,0x8A,0xF1,0x4C,0x84,0x08,0x5C,
+0x83,0xF3,0x20,0x00,0x19,0x50,0x80,0x1F,0x88,0x6B,0xE7,0xFF,0xFF,0x5A,0x1F,0x00,
+0x80,0x21,0x60,0x28,0x21,0x64,0xAA,0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x24,0x4C,0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x60,0x0B,
+0x37,0x01,0x55,0x4A,0x7F,0x47,0x19,0xC4,0x47,0x0A,0xC5,0x0F,0x17,0x01,0x0D,0x61,
+0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0x20,0x64,0x8E,0xC2,
+0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,0x01,0x53,0x39,
+0xF0,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xF0,0xE4,0x00,0x00,0x47,0x20,
+0x60,0x8A,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,
+0x01,0xC7,0x39,0xFF,0x0F,0x0F,0x38,0x01,0x0B,0x17,0x01,0x53,0x18,0x0F,0x0F,0x17,
+0x01,0x85,0x29,0x20,0x64,0x8E,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,
+0x22,0x60,0x0B,0x38,0x01,0x53,0x39,0x08,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,
+0xFE,0xFF,0xE4,0x00,0x00,0x49,0x20,0x60,0x8E,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,
+0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,0x01,0xC7,0x39,0xFF,0xF7,0x0F,0x38,0x01,0x0B,
+0x17,0x01,0xCB,0x18,0x01,0x00,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x22,0x60,0x0B,0x17,0x01,0xCB,0x18,0x02,0x00,0xE4,0x00,0x00,
+0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x60,0x0B,0x17,0x01,0xC7,
+0x18,0xFD,0xFF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x54,0x63,0x7F,0xCA,
+0xF7,0x24,0xA0,0x1F,0x20,0x80,0x0B,0x17,0x01,0x47,0x18,0xCC,0x47,0x03,0xC5,0x0F,
+0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x4C,0x63,0x40,0xCA,0xF7,0x24,0xA0,0xC4,
+0x63,0x7F,0x00,0x0B,0x17,0x01,0xFF,0x20,0x80,0xFF,0x47,0x18,0xCC,0x47,0x03,0xC5,
+0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA1,0x10,0x77,0x00,
+0x54,0x63,0x7F,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA0,
+0x0B,0x17,0x01,0xC7,0x18,0xFF,0x7F,0xE4,0x00,0x00,0x2B,0x20,0x60,0x52,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0x53,0x18,0x80,0x0F,0x17,0x01,0x85,
+0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0xC7,
+0x18,0x7F,0xFF,0xE4,0x00,0x00,0x39,0x20,0x60,0x6E,0xC2,0xF4,0x00,0x01,0xFF,0x20,
+0x80,0x00,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0x0F,
+0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x5C,0x63,0x00,0xCA,0xF7,0x22,0x0C,0xFF,
+0x20,0xFF,0x00,0x0B,0x17,0x01,0x47,0x18,0xCC,0x47,0x03,0xC5,0x0F,0x17,0x01,0x85,
+0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xFF,0x40,0xFF,0x00,0xCA,0xF7,0x22,0xF0,
+0x47,0x03,0xD4,0x0B,0x37,0x01,0x5F,0x39,0x00,0x47,0x18,0xCD,0x0F,0x17,0x01,0x85,
+0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x38,0x0B,0x17,0x01,0x0C,
+0x77,0x01,0x85,0x29,0x20,0x64,0x6A,0xC2,0xF4,0x00,0x01,0x9B,0x3C,0xCA,0xF7,0x25,
+0xC0,0x0B,0x17,0x01,0x47,0x18,0xCC,0x53,0x18,0x01,0xE4,0x00,0x00,0x3F,0x20,0x60,
+0x7A,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x38,0xCA,0xF7,0x25,0xC0,0x0B,0x38,0x01,
+0x0C,0x18,0x01,0x0B,0x17,0x01,0x53,0x18,0x03,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,
+0x00,0x20,0x64,0x62,0x4C,0x63,0x24,0xC2,0xF4,0x00,0x01,0x5C,0x63,0x04,0xCA,0xF7,
+0x22,0xCC,0x0C,0x77,0x01,0xE4,0x00,0x00,0x25,0x20,0x60,0x3A,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x22,0xCC,0x0C,0x17,0x01,0x85,0x29,0x20,0x60,0x5A,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFE,0xE4,0x00,0x00,0x2B,0x20,
+0x64,0x52,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0x53,0x18,0x01,
+0x0F,0x17,0x01,0x85,0x29,0x20,0x60,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xE8,
+0x0B,0x17,0x01,0xC7,0x18,0xF0,0xFF,0xE4,0x00,0x00,0x2D,0x20,0x64,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0xCB,0x18,0x0F,0x00,0x0F,0x17,0x01,
+0x85,0x29,0x5C,0x63,0x00,0xC4,0x84,0x03,0xFF,0x20,0x64,0x70,0x20,0x60,0x34,0x20,
+0x68,0x88,0x20,0x6C,0xDA,0xE4,0x00,0x00,0x51,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,
+0x68,0xE4,0x00,0x00,0x49,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x6C,0xE4,0x00,0x00,
+0x31,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x70,0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x24,0x74,0x0C,0x97,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x5C,0x63,0x00,0x07,0x00,
+0x20,0xCB,0x18,0x41,0x00,0x44,0x63,0xC5,0x4C,0x63,0x10,0x0C,0x83,0x00,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0xFC,0x21,0xFE,0x88,0x50,0xA0,
+0x96,0xED,0x21,0x01,0x74,0xED,0x41,0x01,0x70,0xED,0x61,0x01,0x6C,0x88,0x61,0xC1,
+0x78,0x00,0x21,0xFD,0x6B,0xB4,0xBE,0x88,0x8B,0xE7,0xFF,0x4A,0x4E,0xFD,0x41,0x00,
+0x96,0xFC,0x8B,0x00,0x96,0x88,0x6A,0x50,0xA0,0xD2,0xE7,0xFF,0x4A,0x2C,0x8A,0xE1,
+0xC3,0x54,0x00,0x01,0xFF,0x60,0xFF,0x00,0x0B,0x37,0x01,0x47,0x19,0xDC,0x5F,0x39,
+0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,0x03,0x47,0xB9,0xCF,0x8F,
+0x1A,0x0B,0x98,0x01,0x47,0x9C,0xEC,0x0B,0xB7,0x05,0x47,0x39,0xEC,0x47,0x3C,0xCD,
+0x0F,0x38,0x01,0x9E,0xE6,0xD5,0x57,0xFE,0x9E,0xFE,0xE1,0x00,0x96,0xFF,0x81,0x01,
+0x68,0x0B,0x37,0x01,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,
+0x8F,0x19,0x0B,0x37,0x03,0x47,0xD9,0xCF,0x8F,0x1A,0x0B,0xB8,0x01,0x47,0xBD,0xF4,
+0x0B,0xD7,0x05,0x47,0x39,0xF4,0x47,0x3D,0xCD,0x0F,0x38,0x01,0x9E,0xE6,0xD7,0x97,
+0xFE,0x9E,0xED,0x61,0x01,0x6E,0xED,0x41,0x01,0x72,0xED,0x21,0x01,0x76,0xFC,0x21,
+0x01,0x78,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x00,0x0C,0x18,0x01,0xCA,
+0xF7,0x24,0x14,0xFF,0x20,0xFF,0x07,0x0B,0x17,0x01,0x47,0x18,0xCC,0x53,0x18,0x30,
+0x0F,0x17,0x01,0x85,0x29,0x1C,0x21,0xD8,0xC3,0x54,0x00,0x01,0x0D,0x21,0x24,0xCA,
+0xE0,0x11,0x50,0xCB,0x5A,0x22,0x00,0x57,0x37,0xFF,0x4F,0x39,0x10,0x8F,0x3A,0x0C,
+0x19,0x01,0x9E,0xE1,0xC3,0x14,0x00,0x01,0xC2,0xE2,0x2B,0x84,0x23,0xFF,0xAD,0xCA,
+0xF8,0x23,0x70,0x0C,0x17,0x01,0xCA,0xF8,0x23,0x74,0xCB,0x18,0x23,0x78,0x0C,0x17,
+0x01,0x0C,0x18,0x01,0x1C,0x61,0x02,0xC0,0x98,0x00,0x21,0x50,0xA0,0x1E,0xFC,0x84,
+0xB4,0xBE,0xFC,0x84,0x01,0x68,0xE7,0xFF,0x48,0x34,0x1E,0xE1,0x02,0x1F,0x41,0x20,
+0x0B,0x37,0x01,0xFF,0x60,0xFF,0x00,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,
+0x4F,0x18,0x08,0x8F,0x19,0xC3,0x34,0x00,0x01,0x8F,0x19,0x0B,0x37,0x03,0x47,0x99,
+0xCF,0x0B,0x78,0x01,0x47,0x7B,0xE4,0x0B,0x97,0x05,0x47,0x39,0xE4,0x47,0x3B,0xCD,
+0x0F,0x38,0x01,0x9E,0xE6,0xD7,0x57,0xFE,0x5E,0x0D,0x21,0x26,0xFC,0x60,0x01,0xF4,
+0x1C,0x21,0x28,0xE4,0x00,0x16,0xB7,0x5C,0x84,0x00,0x9B,0x10,0x20,0x60,0x28,0x20,
+0x64,0xAA,0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x10,0xE4,0x00,
+0x00,0x19,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x14,0x0B,0x37,0x01,0x54,0x84,0x0F,
+0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,0x17,0x01,0x85,0x29,0x1C,0x21,0xE0,0xC0,0x98,
+0x00,0x21,0x0D,0x21,0x1C,0x88,0x61,0xFC,0x84,0xB4,0xBE,0x50,0xA0,0x18,0xFC,0x84,
+0x01,0x86,0xE7,0xFF,0x46,0xFC,0x8A,0xE1,0x1F,0x41,0x18,0x0B,0x37,0x01,0xFF,0x60,
+0xFF,0x00,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,
+0xC3,0x34,0x00,0x01,0x8F,0x19,0x0B,0x37,0x03,0x47,0x99,0xCF,0x0B,0x78,0x01,0x47,
+0x7B,0xE4,0x0B,0x97,0x05,0x47,0x39,0xE4,0x47,0x3B,0xCD,0x0F,0x38,0x01,0x9E,0xE6,
+0xD7,0x57,0xFE,0x5E,0xC3,0x54,0x00,0x01,0xCA,0xE0,0x11,0x50,0xCB,0x5A,0x22,0x00,
+0x57,0x37,0xFF,0x4F,0x39,0x10,0x8F,0x3A,0x0C,0x19,0x01,0x9E,0xE1,0xC3,0x14,0x00,
+0x01,0xC2,0xE2,0x2B,0x84,0x23,0xFF,0xAD,0xCA,0xF8,0x23,0x70,0x0C,0x17,0x01,0xCA,
+0xF8,0x23,0x74,0x0C,0x17,0x01,0xCB,0x18,0x23,0x78,0x0C,0x18,0x01,0x0D,0x21,0x1E,
+0x1C,0x21,0x20,0x85,0x29,0x1C,0x21,0xE0,0xC0,0x98,0x00,0x21,0x0D,0x21,0x1C,0x1C,
+0x61,0x06,0xFC,0x84,0xB4,0xBE,0x50,0xA0,0x12,0xFC,0x84,0x01,0x9E,0xE7,0xFF,0x45,
+0xC6,0x1E,0xE1,0x06,0x1F,0x41,0x18,0x0B,0x37,0x01,0xFF,0x60,0xFF,0x00,0x47,0x19,
+0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0xC3,0x34,0x00,0x01,
+0x8F,0x19,0x0B,0x37,0x03,0x47,0x99,0xCF,0x0B,0x78,0x01,0x47,0x7B,0xE4,0x0B,0x97,
+0x05,0x47,0x39,0xE4,0x47,0x3B,0xCD,0x0F,0x38,0x01,0x9E,0xE6,0xD7,0x57,0xFE,0x5E,
+0xC3,0x74,0x00,0x01,0xCA,0xE0,0x11,0x50,0xCB,0x7B,0x22,0x00,0xFF,0x40,0x11,0x11,
+0x57,0x37,0xFF,0x4F,0x39,0x10,0x8F,0x3B,0x0F,0x59,0x01,0x9E,0xE1,0xC3,0x14,0x00,
+0x01,0xC2,0xE2,0x2B,0x84,0x23,0xFF,0xAD,0xCB,0x38,0x23,0x70,0x9A,0xFF,0x0E,0xF9,
+0x01,0xCB,0x38,0x23,0x74,0x0E,0xF9,0x01,0xCB,0x18,0x23,0x78,0x0E,0xF8,0x01,0x0D,
+0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x74,0xD8,0x18,
+0x18,0x00,0xCB,0x37,0x74,0x10,0x5C,0x63,0x00,0x18,0x79,0x00,0xCB,0x37,0x76,0x30,
+0x18,0x19,0x00,0x53,0x40,0x24,0xCB,0x37,0x74,0x00,0x1B,0x59,0x00,0xCB,0x77,0x74,
+0x28,0x53,0x20,0x60,0x1B,0x3B,0x00,0xCB,0x77,0x74,0x30,0x1B,0x3B,0x00,0xCB,0x77,
+0x74,0x38,0x53,0x20,0x1C,0x1B,0x3B,0x00,0xCB,0x77,0x74,0x40,0x1B,0x3B,0x00,0xCB,
+0x37,0x74,0xA8,0x13,0x39,0x00,0xCB,0x37,0x74,0x78,0x9B,0x69,0x1B,0x79,0x00,0xCB,
+0x37,0x74,0x70,0x18,0x19,0x00,0xCB,0x37,0x74,0x60,0x13,0x79,0x00,0x1B,0x59,0x00,
+0xCA,0xF7,0x74,0x61,0x13,0x37,0x00,0x18,0x17,0x00,0x98,0x61,0x12,0xF8,0x00,0x52,
+0xF7,0x01,0x1A,0xF8,0x00,0x85,0x29,0x5C,0x63,0x00,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x74,0x20,0x18,0x77,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFE,0xFF,0x0F,0x17,0x01,0x85,
+0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x10,0x77,0x00,0x4C,0x63,0x21,0x54,
+0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xE0,0x10,0x77,0x00,0x4C,
+0x63,0x09,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x10,
+0x77,0x00,0x4C,0x63,0x29,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x74,0xE0,0x10,0x77,0x00,0x4C,0x63,0x19,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x74,0x68,0x10,0x77,0x00,0x4C,0x63,0x11,0x54,0x63,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x08,0x77,0x01,0x4C,0x63,0x49,0x54,0x63,
+0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x08,0x77,0x01,0x4C,0x63,
+0x51,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x61,0x13,0x17,
+0x00,0x57,0x18,0xFD,0x1B,0x17,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,
+0x61,0x13,0x17,0x00,0x53,0x18,0x02,0x1B,0x17,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x74,0xC0,0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,
+0xA8,0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xC8,0x12,0xF7,
+0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xA0,0x12,0xF7,0x00,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x20,0x10,0x77,0x00,0x85,0x29,0x5C,0x63,0x00,
+0xC3,0x14,0x00,0x01,0x4E,0xE3,0x10,0xCB,0x18,0x2A,0x00,0x8E,0xF8,0x08,0x77,0x00,
+0x9A,0xE8,0xCC,0x63,0x00,0x03,0x40,0x63,0xB8,0x85,0x29,0x5C,0x84,0x04,0x5E,0xE4,
+0x00,0xD2,0xEF,0x05,0xAD,0x4E,0xF7,0x10,0xC3,0x18,0x00,0x21,0xFF,0x18,0xBD,0x1C,
+0x8E,0xF8,0xC3,0x34,0x00,0x01,0x0F,0x17,0x02,0xCA,0xF9,0x26,0x18,0x0B,0x57,0x01,
+0xC7,0x5A,0xFF,0xF3,0x1F,0x60,0xCF,0x0F,0x57,0x01,0x0B,0x57,0x01,0x47,0x5A,0xDC,
+0x53,0x5A,0x10,0x4C,0x84,0x49,0x0F,0x57,0x01,0x9A,0xE1,0xCB,0x59,0x26,0x20,0xE4,
+0x00,0x00,0x31,0x4F,0x37,0x08,0x9E,0xE1,0x8F,0x38,0x5E,0xF7,0x04,0x0B,0x39,0x01,
+0xC7,0x39,0x3F,0xFF,0x0F,0x3A,0x01,0xC3,0x34,0x00,0x01,0xD6,0xE4,0xFF,0x40,0x20,
+0x60,0x96,0xCB,0x39,0x26,0x38,0x0B,0x18,0x01,0x0A,0xF9,0x01,0x4F,0x18,0x60,0xFF,
+0x40,0x8F,0xFF,0xC7,0x18,0x70,0x00,0x46,0xF7,0xD4,0x46,0xF8,0xBD,0x0E,0xF9,0x01,
+0xE4,0x00,0x00,0x4B,0x20,0x64,0x86,0xCA,0xF9,0x26,0x38,0xFF,0x60,0xF8,0xFF,0x0B,
+0x38,0x01,0x0B,0x57,0x01,0x4F,0x39,0x40,0x47,0x1A,0xDC,0xC7,0x39,0x07,0x00,0x47,
+0x19,0xC5,0x0F,0x17,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x18,0x0B,0x17,0x01,
+0x53,0x18,0x30,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0xD0,0x8F,0x03,0x9D,0xC2,
+0xF8,0x00,0x21,0xFE,0xF7,0xBC,0x44,0x4C,0x84,0x10,0xC3,0x14,0x00,0x01,0x8C,0x97,
+0xCB,0x38,0x26,0x34,0x0E,0xE4,0x02,0x0B,0x59,0x01,0x0B,0x77,0x03,0xFF,0x80,0xC0,
+0x00,0xC7,0x7B,0x3F,0xFF,0x47,0x5A,0xE4,0x47,0x5B,0xD5,0x0F,0x59,0x01,0x20,0x60,
+0x7E,0x0B,0x37,0x01,0xCB,0x18,0x26,0x38,0x4F,0x39,0x60,0x0B,0x58,0x01,0xFF,0x60,
+0x8F,0xFF,0xC7,0x39,0x70,0x00,0x46,0xFA,0xDC,0xE4,0x00,0x00,0x3F,0x20,0x64,0x86,
+0x0B,0x37,0x01,0xCB,0x18,0x26,0x38,0x4F,0x39,0x40,0x0B,0x58,0x01,0xFF,0x80,0xF8,
+0xFF,0xC7,0x39,0x07,0x00,0x46,0xFA,0xE4,0x46,0xF9,0xBD,0x0E,0xF8,0x01,0x85,0x29,
+0x5C,0x84,0x00,0xD0,0x8C,0x04,0x1D,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBC,0x44,0x4C,
+0x84,0x10,0xFF,0x40,0xC0,0x00,0x8C,0x97,0x0E,0xE4,0x02,0x20,0x60,0xD6,0xC3,0x14,
+0x00,0x01,0x0B,0x77,0x03,0xCB,0x38,0x26,0xC4,0xC7,0x7B,0x3F,0xFF,0x0B,0x99,0x01,
+0x47,0x5C,0xD4,0x47,0x5B,0xD5,0xCB,0x18,0x26,0x38,0x0F,0x59,0x01,0x1F,0x60,0x8F,
+0x0B,0x37,0x01,0x0B,0x58,0x01,0x4F,0x39,0x20,0x57,0x39,0x70,0xE4,0x00,0x00,0x63,
+0x20,0x64,0xDA,0xC3,0x14,0x00,0x01,0x0B,0x77,0x03,0xCB,0x38,0x26,0xC8,0xC7,0x7B,
+0x3F,0xFF,0x0B,0x99,0x01,0x47,0x5C,0xD4,0x47,0x5B,0xD5,0xCB,0x18,0x26,0x38,0x0F,
+0x59,0x01,0x9B,0x78,0x0B,0x37,0x01,0x0B,0x58,0x01,0x57,0x39,0x07,0x46,0xFA,0xDC,
+0x46,0xF9,0xBD,0x0E,0xF8,0x01,0x85,0x29,0x5C,0x84,0x04,0x20,0x60,0x28,0x20,0x64,
+0xEE,0xE4,0x00,0x00,0x39,0xC2,0xF4,0x00,0x01,0x4C,0x84,0x41,0xCA,0xF7,0x26,0xC0,
+0x54,0x84,0x3F,0x0B,0x17,0x01,0x1F,0x20,0xC0,0xE4,0x00,0x00,0x2F,0xC2,0xF4,0x00,
+0x01,0xC4,0x84,0x3F,0x00,0xCA,0xF7,0x26,0xC0,0xFF,0x20,0xC0,0xFF,0x0B,0x17,0x01,
+0x47,0x18,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0x20,0x61,0x52,0x20,0x84,
+0x84,0x20,0x80,0x2C,0xD0,0x82,0x04,0xD6,0xE4,0x00,0x00,0x5D,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,0x18,0x3F,0xFF,0xE4,0x00,0x01,0x01,0xC2,
+0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,0x18,
+0x3F,0xFF,0xE4,0x00,0x00,0x27,0xC2,0xF4,0x00,0x01,0xFF,0x20,0xC0,0x00,0xCA,0xF7,
+0x26,0x30,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0xE4,0x00,0x00,0xA1,0x20,
+0x65,0x3E,0x20,0x84,0x80,0x20,0x80,0x28,0x20,0x89,0x1A,0xE4,0x00,0x00,0x63,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,0x18,0xCF,0xFF,0xE4,0x00,
+0x00,0x5B,0xC2,0xF4,0x00,0x01,0xFF,0x20,0xCF,0xFF,0xCA,0xF7,0x26,0x30,0x0B,0x17,
+0x01,0x47,0x18,0xCC,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,0x27,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xCB,0x18,0x30,0x00,0x0F,0x17,0x01,0x85,0x29,
+0x20,0x64,0x72,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x26,0x24,0x0B,
+0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,0x18,0x7F,0xFF,0x0F,0x17,
+0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,
+0x01,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,0x18,0xDF,0xFF,0x0F,0x17,0x01,0x85,0x29,
+0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xCB,0x18,
+0x40,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,
+0x24,0x0B,0x17,0x01,0xC7,0x18,0xBF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xCB,0x18,0x10,0x00,0xE4,
+0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,
+0x01,0xC7,0x18,0xEF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x9C,0x38,0xC2,0xF4,0x00,0x01,
+0x0D,0x21,0x04,0xCA,0xF7,0x26,0x18,0x0B,0x17,0x01,0xCB,0x18,0x40,0x00,0x98,0x60,
+0x0F,0x17,0x01,0xE7,0xFF,0xFF,0x1A,0x0D,0x21,0x06,0x98,0x60,0x9C,0x28,0xE7,0xFF,
+0xFF,0x5F,0x20,0x64,0x72,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x26,
+0x00,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0xE4,0x00,0x00,0x2D,0x20,0x60,
+0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0x7F,0xFF,
+0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,
+0x0B,0x17,0x01,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xDF,0xFF,0x0F,0x17,0x01,
+0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,
+0xCB,0x18,0x40,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xBF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,
+0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x10,
+0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,
+0x0B,0x17,0x01,0xC7,0x18,0xEF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x08,0x00,0xE4,0x00,
+0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,
+0xC7,0x18,0xF7,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x04,0x00,0xE4,0x00,0x00,0x2D,0x20,
+0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFB,
+0xFF,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x00,0xC2,0xF4,0x00,0x01,0x4F,0x23,0x40,
+0xCA,0xF7,0x26,0x14,0x4C,0x63,0x60,0x0B,0x17,0x01,0x44,0x79,0x1D,0x5F,0x18,0x00,
+0x44,0x63,0xC5,0x5C,0x63,0x04,0x0C,0x77,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xFF,
+0x20,0xF0,0x00,0xCB,0x17,0x26,0x0C,0xC4,0x63,0x0F,0xFF,0x0B,0x58,0x01,0x5C,0x63,
+0x06,0x47,0x5A,0xCC,0x47,0x43,0xD5,0x0F,0x58,0x01,0xCA,0xF7,0x26,0x10,0x0B,0x17,
+0x01,0x47,0x38,0xCC,0x44,0x63,0xCD,0x0C,0x77,0x01,0x85,0x29,0x9C,0x38,0xFF,0x00,
+0xE0,0x00,0x0D,0x21,0x04,0x0D,0x41,0x00,0xC1,0x54,0x00,0x01,0xCA,0xEA,0x26,0x04,
+0x0B,0x37,0x01,0x47,0x39,0xC4,0xCB,0x39,0x0F,0xA0,0x0F,0x37,0x01,0xCA,0xEA,0x26,
+0x08,0x0B,0x37,0x01,0x47,0x19,0xC4,0xCB,0x18,0x10,0x60,0x98,0x60,0x0F,0x17,0x01,
+0xFC,0x80,0x08,0x03,0xE7,0xFF,0xF9,0x28,0xCA,0xEA,0x26,0xC0,0xFF,0x20,0xC0,0xFF,
+0x0B,0x17,0x01,0x47,0x18,0xCC,0xCB,0x18,0x08,0x00,0x98,0x60,0x0F,0x17,0x01,0xFC,
+0x80,0x08,0x03,0xE7,0xFF,0xF7,0xDA,0x98,0x61,0xFC,0x80,0x08,0x03,0xE7,0xFF,0xF7,
+0xC6,0xCA,0xEA,0x26,0x00,0x0B,0x17,0x01,0x53,0x18,0x0F,0x0F,0x17,0x01,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0x7F,0x0F,0x17,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xBF,0x98,
+0x68,0x0F,0x17,0x01,0xE7,0xFF,0xFE,0x44,0x0D,0x21,0x06,0x0D,0x41,0x02,0xFC,0x60,
+0x01,0x2C,0x9C,0x28,0xE7,0xFF,0xFE,0x6F,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0x00,
+0x0B,0x17,0x01,0x53,0x18,0x02,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x78,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFD,0x0F,0x17,0x01,0x85,0x29,0x9C,
+0x7F,0x5C,0x63,0x00,0xD0,0x64,0x05,0x15,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBE,0xDC,
+0x4C,0x63,0x10,0xFF,0x00,0xFC,0xFF,0x8C,0x77,0xC2,0xF4,0x00,0x01,0x0F,0x23,0x02,
+0x87,0x29,0xCB,0x17,0x3D,0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x38,0x01,0x53,0x39,0x01,
+0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFC,0xFF,0xE4,0x00,0x00,0xD3,0xCB,0x37,
+0x3D,0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x59,0x01,0x53,0x5A,0x01,0x0F,0x59,0x01,0x0B,
+0x37,0x01,0x47,0x19,0xC4,0xCB,0x18,0x01,0x00,0xE4,0x00,0x00,0x95,0xCB,0x37,0x3D,
+0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x59,0x01,0x53,0x5A,0x01,0x0F,0x59,0x01,0x0B,0x37,
+0x01,0x47,0x19,0xC4,0xCB,0x18,0x02,0x00,0xE4,0x00,0x00,0x57,0xCA,0xF7,0x3D,0x3C,
+0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFE,0xE4,0x00,0x00,0x39,0xCB,0x17,0x3C,0x10,0xCA,
+0xF7,0x3C,0x14,0x0B,0x38,0x01,0x53,0x39,0x01,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,
+0x18,0xFF,0xFD,0x0F,0x17,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0x00,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xFB,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x00,0x5C,0x84,0x00,
+0x9A,0xE0,0x24,0x64,0x43,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBE,0xF0,0x8C,0x77,0x12,
+0xE3,0x00,0xC3,0x14,0x00,0x01,0xCB,0x18,0x78,0x01,0x4E,0xF7,0x10,0x5C,0x80,0x29,
+0x46,0xF7,0xC5,0x4B,0x00,0x1A,0x1B,0x17,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0x5C,
+0x84,0x04,0xCB,0x17,0x79,0x04,0xCC,0x84,0x17,0x70,0x4F,0x24,0x81,0x5C,0x84,0x04,
+0x0F,0x38,0x01,0xCA,0xF7,0x79,0x00,0x0C,0x97,0x01,0x98,0x81,0xE7,0xFF,0xFF,0x5D,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xCC,0x0B,0x17,0x01,0x53,0x18,0x02,0x0F,0x17,
+0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x7A,0x30,0xCB,0x37,0x7A,0x34,0xCB,
+0x57,0x7A,0x10,0xCA,0xF7,0x7A,0x14,0x0B,0x18,0x01,0x0B,0x39,0x01,0x0B,0x5A,0x01,
+0x08,0x77,0x01,0x4E,0xF9,0x80,0x4C,0x63,0x80,0x8E,0xF8,0x8C,0x7A,0x44,0x63,0x1F,
+0x44,0x63,0xBC,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x7A,0x70,0xCB,0x37,0x7A,
+0x74,0xCB,0x57,0x7A,0x50,0xCA,0xF7,0x7A,0x54,0x0B,0x18,0x01,0x0B,0x39,0x01,0x0B,
+0x5A,0x01,0x08,0x77,0x01,0x4E,0xF9,0x80,0x4C,0x63,0x80,0x8E,0xF8,0x8C,0x7A,0x44,
+0x63,0x1F,0x44,0x63,0xBC,0x85,0x29,0x5C,0x63,0x06,0xC2,0xF4,0x00,0x01,0x47,0x23,
+0x1F,0xCA,0xF7,0x7A,0x10,0x0B,0x17,0x01,0x47,0x19,0xC4,0x44,0x63,0xC5,0x5C,0x63,
+0x04,0x0C,0x77,0x01,0x85,0x29,0x5C,0x63,0x06,0xC2,0xF4,0x00,0x01,0x47,0x23,0x1F,
+0xCA,0xF7,0x7A,0x50,0x0B,0x17,0x01,0x47,0x19,0xC4,0x44,0x63,0xC5,0x5C,0x63,0x04,
+0x0C,0x77,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x44,0x63,0x1F,0xCA,0xF7,0x7A,0x10,
+0x0B,0x17,0x01,0x47,0x18,0x1C,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x44,
+0x63,0x1F,0xCA,0xF7,0x7A,0x50,0x0B,0x17,0x01,0x47,0x18,0x1C,0x0F,0x17,0x01,0x85,
+0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x7A,0x30,0x0C,0x77,0x01,0x85,
+0x29,0x9B,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x7A,0x70,0x0F,0x17,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xFF,0x20,0xAA,0x55,0xCB,0x17,0x78,0xC0,0x0F,0x38,0x01,0x5F,
+0x03,0x04,0x27,0x08,0x17,0x98,0x63,0xCA,0xF7,0x78,0xC4,0x5C,0x63,0x04,0xCB,0x00,
+0x03,0xE8,0x43,0x04,0xC1,0x40,0x63,0xC3,0x4C,0x63,0x81,0x44,0x63,0x1F,0x0C,0x77,
+0x01,0x06,0xE0,0x5B,0xCA,0xF7,0x8D,0x80,0x5C,0x97,0x0D,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x3C,0x44,0x0B,0x17,0x01,0x20,0x00,0x2D,0xC7,0x18,0xFF,0xBF,0xE4,0x00,0x00,
+0x15,0x5F,0x18,0x04,0x53,0x18,0x40,0x0F,0x17,0x01,0x85,0x29,0xFF,0x00,0xAA,0x55,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xC0,0x0F,0x17,0x01,0x85,0x29,0xFF,0x00,0x55,
+0xAA,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xC0,0x0F,0x17,0x01,0x85,0x29,0xCA,0xE0,
+0x03,0x20,0xC3,0x14,0x00,0x01,0x5C,0x63,0x04,0xC0,0x60,0x63,0xEA,0x48,0x63,0xB8,
+0xCA,0xF8,0x79,0x10,0x0B,0x37,0x01,0x53,0x39,0x01,0x0F,0x37,0x01,0xCB,0x58,0x79,
+0x00,0xCB,0x38,0x79,0x08,0x9C,0x38,0x0A,0xF9,0x01,0xCB,0x18,0x3C,0x44,0x0B,0x7A,
+0x01,0x0B,0x39,0x01,0x0F,0x21,0x07,0x0B,0x18,0x01,0x57,0x18,0x40,0x5F,0x18,0x04,
+0x23,0x00,0x40,0x4C,0x63,0x29,0x5C,0x60,0x09,0x48,0x63,0x0A,0xE4,0x00,0x00,0x3F,
+0xCC,0x63,0x00,0x06,0x5C,0x63,0x04,0xE4,0x00,0x00,0x29,0x0A,0xF8,0x01,0x52,0xF7,
+0x01,0x0E,0xF8,0x01,0x0A,0xF9,0x01,0xE4,0x00,0x00,0x21,0xC3,0x34,0x00,0x01,0xCB,
+0x19,0x79,0x10,0xCB,0x39,0x79,0x08,0x0B,0x41,0x07,0x43,0x57,0xD5,0xD4,0x7A,0x00,
+0xB8,0x0B,0x41,0x07,0xD7,0x57,0xFE,0xB9,0x0B,0x41,0x07,0x43,0x5B,0xD5,0x8E,0xFA,
+0xD4,0x77,0xFE,0x5C,0x9C,0x28,0x85,0x29,0x5C,0x63,0x04,0xE4,0x00,0x00,0x2D,0x42,
+0xE4,0x2C,0xC3,0x38,0x00,0x01,0x43,0x05,0xCC,0x8F,0x03,0x13,0x18,0x00,0x1B,0x17,
+0x00,0x9C,0xBF,0x20,0xBF,0xB2,0x85,0x29,0x5C,0x63,0x00,0xC2,0xF4,0x00,0x01,0x20,
+0x60,0xCE,0xCA,0xF7,0x2C,0x30,0x0B,0x17,0x01,0xCB,0x18,0x02,0x00,0x0F,0x17,0x01,
+0x80,0x01,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3C,0x44,0xCA,0xF7,0x3C,0xA8,0x0B,0x38,
+0x01,0xC7,0x39,0xFF,0xF3,0x0F,0x38,0x01,0x0B,0x17,0x01,0x53,0x18,0x01,0xE4,0x00,
+0x00,0x9F,0xCB,0x17,0x3C,0xA8,0x0B,0x38,0x01,0x53,0x39,0x01,0xCA,0xF7,0x3C,0x5C,
+0x0F,0x38,0x01,0x1F,0x00,0xC0,0x0B,0x37,0x00,0x47,0x39,0xC4,0x9B,0x02,0x24,0x64,
+0x25,0x54,0x63,0x3F,0x5F,0x03,0x06,0x47,0x18,0xCD,0x5C,0x78,0x04,0xC3,0x14,0x00,
+0x01,0x0C,0x77,0x01,0xCA,0xF8,0x3C,0xA8,0x0B,0x37,0x01,0xC7,0x39,0xFF,0xFE,0x0F,
+0x37,0x01,0xCA,0xF8,0x2C,0x30,0x0B,0x17,0x01,0xCB,0x18,0x01,0x00,0x0F,0x17,0x01,
+0x85,0x29,0x80,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x1E,0xB0,0x0B,0x17,0x01,0x53,
+0x18,0x03,0x0F,0x17,0x01,0x80,0x01,0x9B,0x1F,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0D,0xCA,0xE0,0x48,0x04,0xC3,0x17,0x00,0x0D,0x80,0x01,0xCA,0xE0,0x40,0x00,0xC3,
+0x17,0x00,0x0F,0x53,0x18,0x40,0xC3,0x17,0x00,0x0D,0xC3,0x17,0x00,0x0F,0x1F,0x20,
+0xBF,0x47,0x18,0xCC,0xC3,0x17,0x00,0x0D,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,
+0x3D,0x80,0x0B,0x38,0x01,0xCB,0x39,0x08,0x00,0x0F,0x38,0x01,0xCA,0xF7,0x3D,0x84,
+0x0B,0x17,0x01,0xCB,0x18,0x08,0x00,0x0F,0x17,0x01,0x85,0x29,0xE7,0xFF,0xFF,0xBD,
+0x56,0xE3,0xFF,0x4E,0xF7,0x08,0x5C,0x84,0x04,0xC4,0x63,0xFF,0x00,0x8C,0x77,0xC2,
+0xF4,0x00,0x01,0x4C,0x63,0x08,0x8C,0x77,0x0C,0x83,0x01,0x85,0x29,0x1C,0x21,0xC8,
+0xC0,0x98,0x00,0x21,0x0D,0x21,0x34,0x1C,0x61,0x06,0xFC,0x84,0xB6,0x6E,0x50,0xA0,
+0x2A,0xE7,0xFF,0x2D,0x1E,0x1E,0xE1,0x06,0x1F,0x41,0x30,0x0B,0x37,0x01,0xFF,0x60,
+0xFF,0x00,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,
+0xC3,0x34,0x00,0x01,0x8F,0x19,0x0B,0x37,0x03,0x47,0x99,0xCF,0x0B,0x78,0x01,0x47,
+0x7B,0xE4,0x0B,0x97,0x05,0x47,0x39,0xE4,0x47,0x3B,0xCD,0x0F,0x38,0x01,0x9E,0xE6,
+0xD7,0x57,0xFE,0x5E,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0xFC,0x21,0xFF,0x38,
+0x50,0xA0,0x3C,0xED,0x21,0x00,0xC4,0xED,0x41,0x00,0xC0,0xED,0x61,0x00,0xBC,0xED,
+0x81,0x00,0xB8,0xED,0xA1,0x00,0xB4,0xED,0xC1,0x00,0xB0,0xED,0xE1,0x00,0xAC,0xEE,
+0x01,0x00,0xA8,0xC1,0x58,0x00,0x21,0x1C,0x61,0x6C,0xFD,0x4A,0xB6,0x6E,0x1C,0x8A,
+0x2A,0xE7,0xFF,0x2C,0x1E,0x50,0xA0,0x24,0x1C,0x8A,0x66,0x1C,0x61,0x48,0xE7,0xFF,
+0x2C,0x04,0x98,0x61,0x98,0x82,0xE7,0xFF,0xEE,0x8A,0x98,0x61,0xFC,0x80,0x3E,0x0C,
+0xE7,0xFF,0xD5,0xA6,0x98,0x61,0xFC,0x80,0x3E,0x0C,0xE7,0xFF,0xEB,0xDC,0x98,0x61,
+0x88,0x83,0xE7,0xFF,0xD8,0x5A,0x98,0x61,0x88,0x83,0xE7,0xFF,0xD5,0xE2,0x98,0x60,
+0x98,0x81,0xE7,0xFF,0xD6,0xD2,0x98,0x60,0x05,0x4F,0x0F,0xC9,0x4A,0x0F,0x0F,0x88,
+0x8A,0xE7,0xFF,0xE0,0x92,0x98,0x61,0x88,0x8A,0xE7,0xFF,0xE0,0x82,0xC3,0x54,0x00,
+0x01,0xCA,0xE0,0x11,0x50,0xCB,0x5A,0x22,0x00,0x57,0x17,0xFF,0x4F,0x18,0x10,0x8F,
+0x1A,0x1F,0x61,0x2A,0x0B,0x38,0x01,0x4F,0x17,0x08,0x8F,0x1B,0xEF,0x38,0xDD,0x61,
+0x9E,0xE1,0xC2,0xE2,0x2B,0xE4,0x23,0xFF,0x8D,0x1E,0xE1,0x6C,0xFF,0x41,0x00,0xA8,
+0xC1,0x94,0x00,0x01,0xFD,0xA0,0xFF,0x00,0x0B,0x37,0x01,0x47,0x19,0x6C,0x5F,0x39,
+0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,0x03,0x8F,0x0C,0x0F,0x38,
+0x01,0x9E,0xE4,0xD7,0x57,0xFF,0x2E,0x1E,0xE1,0x48,0x1F,0x41,0x6C,0x0B,0x37,0x01,
+0x47,0x19,0x6C,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,
+0x03,0x8F,0x0C,0x0F,0x38,0x01,0x9E,0xE4,0xD7,0x57,0xFF,0x2E,0xE7,0xFF,0xD1,0xAC,
+0x99,0xE0,0x89,0xC3,0x98,0x61,0xE7,0xFF,0xD1,0xC2,0xD1,0xE0,0x05,0xBE,0x98,0x60,
+0x1D,0x61,0x0A,0xE7,0xFF,0xD1,0xFC,0x99,0x40,0xE4,0x00,0x01,0x45,0x98,0x61,0x88,
+0x8A,0x22,0x01,0x0A,0xE7,0xFF,0xDD,0x94,0x98,0x60,0xE7,0xFF,0xDD,0xDE,0xFC,0x60,
+0x01,0x00,0xE7,0xFF,0xF7,0x86,0xE7,0xFF,0xCF,0xC8,0xE7,0xFF,0xF6,0x32,0xC4,0x63,
+0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0xDC,0xFC,0x60,0x01,
+0x00,0xE7,0xFF,0xF7,0xA0,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE8,0x04,0xE4,
+0x00,0x00,0x8B,0xE7,0xFF,0xDD,0x16,0x98,0x61,0xE7,0xFF,0xDD,0x60,0xFC,0x60,0x01,
+0x00,0xE7,0xFF,0xF7,0x08,0xE7,0xFF,0xCF,0x4A,0xE7,0xFF,0xF5,0xB4,0xC4,0x63,0x01,
+0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0x5E,0xFC,0x60,0x01,0x00,
+0xE7,0xFF,0xF7,0x22,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE7,0x86,0x0A,0xEB,
+0x01,0x40,0x63,0xBD,0x0C,0x6B,0x01,0x9E,0x01,0x5E,0x10,0x00,0xD2,0x02,0xFB,0x8E,
+0x9D,0x41,0x9D,0x62,0x5D,0x4A,0x00,0xD1,0x44,0x05,0xEA,0x9A,0x00,0xE7,0xFF,0xFE,
+0xC1,0x98,0x61,0x1D,0x61,0x12,0xE7,0xFF,0xD0,0x96,0x99,0x40,0xE4,0x00,0x01,0x45,
+0x98,0x61,0x88,0x8A,0x22,0x01,0x0A,0xE7,0xFF,0xDC,0x2E,0x98,0x60,0xE7,0xFF,0xDC,
+0x78,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0x20,0xE7,0xFF,0xCE,0x62,0xE7,0xFF,0xF4,
+0xCC,0xC4,0x63,0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF5,0x76,
+0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0x3A,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,
+0xE6,0x9E,0xE4,0x00,0x00,0x8B,0xE7,0xFF,0xDB,0xB0,0x98,0x61,0xE7,0xFF,0xDB,0xFA,
+0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF5,0xA2,0xE7,0xFF,0xCD,0xE4,0xE7,0xFF,0xF4,0x4E,
+0xC4,0x63,0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF4,0xF8,0xFC,
+0x60,0x01,0x00,0xE7,0xFF,0xF5,0xBC,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE6,
+0x20,0x0A,0xEB,0x01,0x40,0x63,0xBD,0x0C,0x6B,0x01,0x9E,0x01,0x5E,0x10,0x00,0xD2,
+0x02,0xFB,0x8E,0x9D,0x41,0x9D,0x62,0x5D,0x4A,0x00,0xD1,0x44,0x00,0x52,0x9A,0x00,
+0xE7,0xFF,0xFE,0xC1,0x9D,0xE1,0x5D,0xEF,0x00,0xD1,0xE2,0xF4,0x8E,0x0B,0x21,0x0A,
+0x0B,0x01,0x12,0x0F,0x21,0x07,0x1E,0xE1,0x0C,0x1F,0x81,0x12,0x0B,0x77,0x01,0x8B,
+0x59,0x5F,0xBB,0x06,0xD7,0x3D,0x00,0x30,0x8B,0x5B,0x5F,0x3A,0x06,0x0B,0x77,0x09,
+0x8B,0x58,0x5F,0xBB,0x06,0xD7,0x1D,0x00,0x30,0x8B,0x5B,0x5F,0x1A,0x06,0x9E,0xE2,
+0xD7,0x97,0xFE,0xE6,0x0F,0x21,0x07,0x9A,0xE0,0x0F,0x01,0x09,0x1F,0x21,0x1A,0x8B,
+0x57,0xFD,0x00,0x3F,0xFF,0xE4,0x00,0x00,0x69,0x43,0x7E,0xC4,0x0B,0x9B,0x00,0x43,
+0x79,0xC4,0x23,0x80,0x32,0x0D,0x1B,0x01,0x9B,0x41,0xE4,0x00,0x00,0x23,0x09,0x5D,
+0x00,0xCD,0x4A,0x1F,0xFF,0x43,0x8A,0xE0,0x0F,0x9B,0x01,0x9F,0x02,0xD3,0x08,0xFE,
+0xE6,0x9F,0x28,0x9E,0xE2,0xD2,0xE4,0x00,0xBA,0x1F,0x01,0x0A,0x4F,0xD7,0x10,0x1F,
+0xA1,0x06,0x8F,0xD8,0x8F,0xB7,0x9B,0x00,0xE7,0xFF,0xFF,0x83,0xC3,0x94,0x00,0x01,
+0x9A,0xE0,0xCB,0x9C,0x24,0x00,0xE4,0x00,0x00,0x47,0x43,0xB9,0xC4,0x43,0xDB,0xC4,
+0x57,0xBD,0xFF,0x0B,0xDE,0x01,0x4F,0xBD,0x10,0x8F,0xBC,0x0F,0xDD,0x01,0x9F,0x02,
+0xD3,0x08,0xFF,0x56,0x9E,0xE1,0x22,0xE8,0x54,0x1F,0x21,0x1A,0x4F,0x77,0x18,0x9B,
+0x00,0x8F,0x79,0xFF,0x37,0x12,0x46,0xE7,0xFF,0xFF,0xA7,0x9A,0xE0,0x4F,0x17,0x08,
+0x1F,0x61,0x6C,0x8F,0x1B,0x0B,0x38,0x01,0x47,0x19,0x6C,0x5F,0x39,0x00,0x4F,0x39,
+0x10,0x4F,0x18,0x08,0x8F,0x19,0x1F,0x21,0x2A,0x8F,0x0C,0x8F,0x37,0x0B,0x39,0x01,
+0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE3,0xC9,0x23,0xFF,0x55,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x25,0x38,0x0B,0x17,0x01,0x23,0x40,0x34,0x5F,0x18,0x04,0x53,0x18,0x0F,0xE4,
+0x00,0x00,0x11,0xC7,0x18,0xFF,0xF0,0x0F,0x17,0x01,0x98,0x60,0x98,0x80,0xE7,0xFF,
+0xDA,0x38,0x98,0x80,0x98,0x61,0xE7,0xFF,0xDA,0x28,0x98,0x60,0xE7,0xFF,0xD8,0xDA,
+0x98,0x60,0x98,0x80,0xE7,0xFF,0xD8,0x74,0x88,0x6E,0xEE,0x01,0x00,0xAA,0xED,0xE1,
+0x00,0xAE,0xED,0xC1,0x00,0xB2,0xED,0xA1,0x00,0xB6,0xED,0x81,0x00,0xBA,0xED,0x61,
+0x00,0xBE,0xED,0x41,0x00,0xC2,0xED,0x21,0x00,0xC6,0xFC,0x21,0x00,0xC8,0xE7,0xFF,
+0xCC,0x13,0xC2,0xF4,0x00,0x01,0x53,0x20,0x1F,0xCB,0x17,0x3C,0x30,0x0F,0x38,0x01,
+0xCC,0x63,0x61,0xA8,0xCB,0x17,0x3C,0x90,0xCA,0xF7,0x3C,0x38,0x0B,0x18,0x01,0x43,
+0x03,0xC1,0x4F,0x18,0x29,0x9F,0x1F,0x5F,0x18,0x04,0x0F,0x17,0x01,0x85,0x29,0xC2,
+0xF4,0x00,0x01,0x54,0x63,0x62,0xCA,0xF7,0x3C,0x94,0x50,0x63,0x02,0x0B,0x17,0x01,
+0x1F,0x20,0x9D,0x47,0x18,0xCC,0x47,0x03,0xC5,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,
+0x04,0xC6,0xE3,0x02,0x00,0x5E,0xF7,0x04,0x22,0xE0,0x70,0xC2,0xF4,0x00,0x01,0xFF,
+0x20,0xFC,0xFF,0xCA,0xF7,0x2C,0x54,0x0B,0x17,0x01,0x47,0x18,0xCC,0xCB,0x18,0x01,
+0x00,0x0F,0x17,0x01,0xC6,0xE3,0x04,0x00,0x5E,0xF7,0x04,0x22,0xE0,0xB8,0xC2,0xF4,
+0x00,0x01,0xFF,0x00,0xA5,0x5A,0xCB,0x37,0x30,0xCC,0x0F,0x19,0x01,0xCB,0x37,0x30,
+0xD0,0x0F,0x19,0x01,0xCA,0xF7,0x31,0x04,0xFF,0x40,0x8F,0xFF,0x0B,0x17,0x01,0x47,
+0x18,0xD4,0xCB,0x18,0x30,0x00,0x0F,0x17,0x01,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3C,
+0x98,0x0B,0x38,0x01,0xFF,0x20,0x01,0x01,0x0F,0x38,0x01,0xCB,0x17,0x3C,0xA0,0x0B,
+0x58,0x01,0x0F,0x38,0x01,0x1F,0x40,0x88,0xCB,0x17,0x3C,0xB4,0x0B,0x38,0x01,0x47,
+0x39,0xD4,0x53,0x39,0x33,0x0F,0x38,0x01,0xCB,0x17,0x3C,0xB0,0x0B,0x38,0x01,0x5F,
+0x39,0x00,0xCB,0x39,0x03,0x00,0x0F,0x38,0x01,0xCA,0xF7,0x3C,0x94,0xC4,0x63,0x07,
+0x00,0x0B,0x17,0x01,0xFF,0x20,0xF8,0xFF,0x47,0x18,0xCC,0x44,0x63,0xC5,0x0C,0x77,
+0x01,0x85,0x29,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xC8,0x80,
+0xAA,0x55,0xC0,0x74,0x00,0x01,0xC8,0x63,0x78,0xC0,0x0C,0x83,0x00,0xC0,0x74,0x00,
+0x01,0xC8,0x63,0x1F,0xDC,0x50,0x80,0x80,0x0C,0x83,0x00,0x04,0x20,0x80,0xC8,0x21,
+0x17,0xFC,0x1C,0x40,0xFD,0x44,0x21,0x14,0x28,0x00,0x74,0xC0,0x40,0x00,0x01,0xC8,
+0x42,0x3E,0x06,0x84,0x49,0x0C,0x41,0x0C,0x0C,0x61,0x10,0x0C,0x81,0x14,0x0C,0xA1,
+0x18,0x0C,0xC1,0x1C,0x0C,0xE1,0x20,0x0D,0x01,0x24,0x0D,0x21,0x28,0x0D,0x41,0x2C,
+0x0D,0x61,0x30,0x0D,0x81,0x34,0x0D,0xA1,0x38,0x0D,0xC1,0x3C,0x0D,0xE1,0x40,0x0E,
+0x01,0x44,0x0E,0x21,0x48,0x0E,0x41,0x4C,0x0E,0x61,0x50,0x0E,0x81,0x54,0x0E,0xA1,
+0x58,0x0E,0xC1,0x5C,0x0E,0xE1,0x60,0x0F,0x01,0x64,0x0F,0x21,0x68,0x0F,0x41,0x6C,
+0x0F,0x61,0x70,0x0F,0x81,0x74,0x0F,0xA1,0x78,0x0F,0xC1,0x7C,0x1C,0x61,0x00,0xC1,
+0x00,0x00,0x01,0xC9,0x08,0xAD,0x50,0x85,0x08,0x90,0x23,0x00,0xC0,0x40,0x10,0x01,
+0xC8,0x42,0x03,0xB0,0xC0,0x60,0x10,0x01,0xC8,0x63,0x0D,0x04,0x5C,0x43,0x1F,0x20,
+0x00,0x2D,0x0C,0x02,0x00,0x1C,0x42,0x04,0x93,0xF4,0x85,0x29,0xC0,0x80,0x01,0x1F,
+0xC0,0x7F,0xFF,0xE1,0xC8,0x63,0xFF,0xF9,0x44,0x84,0x1C,0xC0,0x80,0x01,0x1D,0x0C,
+0x61,0x02,0xC0,0x60,0x02,0x0D,0x0C,0x61,0x06,0xC0,0x60,0x04,0x0D,0x0C,0x41,0x0E,
+0x0C,0x61,0x12,0x0C,0x81,0x16,0x0C,0xA1,0x1A,0x0C,0xC1,0x1E,0x0C,0xE1,0x22,0x0D,
+0x01,0x26,0x0D,0x21,0x2A,0x0D,0x41,0x2E,0x0D,0x61,0x32,0x0D,0x81,0x36,0x0D,0xA1,
+0x3A,0x0D,0xC1,0x3E,0x0D,0xE1,0x42,0x0E,0x01,0x46,0x0E,0x21,0x4A,0x0E,0x41,0x4E,
+0x0E,0x61,0x52,0x0E,0x81,0x56,0x0E,0xA1,0x5A,0x0E,0xC1,0x5E,0x0E,0xE1,0x62,0x0F,
+0x01,0x66,0x0F,0x21,0x6A,0x0F,0x41,0x6E,0x0F,0x61,0x72,0x0F,0x81,0x76,0x0F,0xA1,
+0x7A,0x0F,0xC1,0x7E,0xEF,0xE1,0x00,0x82,0x0C,0x21,0x0A,0x84,0x00,0x00,0x00,0x00,
+0x9C,0x30,0xCA,0xE0,0x48,0x02,0x0D,0x41,0x08,0x0D,0x21,0x0C,0x89,0x43,0xC2,0xF7,
+0x00,0x0F,0x9B,0x1C,0x46,0xF7,0xC4,0x0E,0xE1,0x04,0x0E,0xE1,0x06,0x56,0xF7,0x04,
+0x22,0xE0,0xE0,0xCA,0xE0,0x48,0x00,0xC3,0x37,0x00,0x0F,0x9B,0x1B,0x47,0x39,0xC4,
+0xC3,0x37,0x00,0x0D,0xCA,0xE0,0x48,0x02,0xC3,0x37,0x00,0x0F,0x47,0x19,0xC4,0xC3,
+0x17,0x00,0x0D,0x98,0x82,0xE7,0xFF,0xBE,0x8C,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0F,0x53,0x18,0x04,0xC3,0x17,0x00,0x0D,0x0E,0xE1,0x06,0x56,0xF7,0x08,0x22,0xE0,
+0xE8,0xCA,0xE0,0x48,0x00,0xC3,0x37,0x00,0x0F,0x9B,0x17,0x47,0x39,0xC4,0xC3,0x37,
+0x00,0x0D,0xCA,0xE0,0x48,0x02,0xC3,0x37,0x00,0x0F,0x47,0x19,0xC4,0xC3,0x17,0x00,
+0x0D,0x98,0x83,0x88,0x6A,0xE7,0xFF,0xBE,0x0C,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0F,0x53,0x18,0x08,0xC3,0x17,0x00,0x0D,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,
+0x10,0x85,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x1B,0x00,0x00,0x00,0x00,0xA0,0x26,0x01,
+0x66,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xA0,0x66,0x00,
+0x01,0x00,0x00,0x00,0xF3,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0x00,0x00,
+0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0x00,0x2F,0x00,0x07,0x00,0x0D,0x01,
+0xE0,0xFF,0x5C,0x00,0x00,0x00,0x00,0x00,0x1B,0x00,0x1B,0x00,0x01,0x00,0x10,0x00,
+0xDF,0x00,0x9E,0x00,0x5B,0x00,0x5B,0x00,0x1A,0x00,0x32,0x00,0x90,0x01,0x80,0x00,
+0x94,0x01,0x80,0x00,0x19,0x00,0x32,0x00,0x98,0xB9,0x00,0xC0,0x02,0x01,0x00,0x00,
+0x00,0x00,0x00,0x00,0x14,0x14,0x14,0x14,0xF5,0xB9,0x00,0xC0,0x02,0x02,0x00,0x00,
+0x00,0x00,0x00,0x00,0x14,0x14,0x14,0x14,0xD7,0xB9,0x00,0xC0,0x02,0x03,0x00,0x00,
+0x00,0x00,0x00,0x00,0x14,0x14,0x14,0x14,0xCD,0xB9,0x00,0xC0,0x02,0x04,0x00,0x00,
+0x00,0x00,0x00,0x00,0x14,0x14,0x14,0x14,0x08,0xBA,0x00,0xC0,0x0B,0x05,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x64,0x2C,0x9A,0xB9,0x00,0xC0,0x0D,0x06,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x5A,0x2C,0xA7,0xB9,0x00,0xC0,0x0B,0x07,0x00,0x00,
+0x01,0x00,0x00,0x00,0x28,0x14,0x28,0x14,0xE7,0xB9,0x00,0xC0,0x0E,0x08,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1E,0x37,0x19,0xD9,0xB9,0x00,0xC0,0x06,0x09,0x00,0x00,
+0x01,0x00,0x00,0x00,0x1E,0x14,0x30,0x1E,0x13,0xBA,0x00,0xC0,0x0E,0x0A,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1C,0x3C,0x22,0x27,0xBA,0x00,0xC0,0x0F,0x0B,0x00,0x00,
+0x01,0x00,0x00,0x00,0x46,0x19,0x28,0x14,0x6A,0xB9,0x00,0xC0,0x06,0x0C,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1E,0x28,0x14,0x82,0xB9,0x00,0xC0,0x0E,0x0A,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1C,0x3C,0x22,0xCF,0xB9,0x00,0xC0,0x08,0x05,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x78,0x2C,0xFD,0xB9,0x00,0xC0,0x0B,0x05,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x78,0x2C,0xDF,0xB9,0x00,0xC0,0x08,0x06,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x5A,0x2C,0xB2,0xB9,0x00,0xC0,0x0C,0x08,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1E,0x37,0x19,0xF7,0xB9,0x00,0xC0,0x06,0x07,0x00,0x00,
+0x01,0x00,0x00,0x00,0x28,0x14,0x28,0x14,0xC6,0xB9,0x00,0xC0,0x07,0x07,0x00,0x00,
+0x01,0x00,0x00,0x00,0x28,0x14,0x28,0x14,0x90,0xB9,0x00,0xC0,0x08,0x0B,0x00,0x00,
+0x01,0x00,0x00,0x00,0x46,0x19,0x28,0x14,0x21,0xBA,0x00,0xC0,0x06,0x09,0x00,0x00,
+0x01,0x00,0x00,0x00,0x1E,0x14,0x30,0x1E,0xBE,0xB9,0x00,0xC0,0x08,0x0C,0x00,0x00,
+0x01,0x00,0x00,0x00,0x3C,0x1E,0x28,0x14,0x36,0xBA,0x00,0xC0,0x09,0x09,0x00,0x00,
+0x01,0x00,0x00,0x00,0x1E,0x14,0x30,0x1E,0x70,0xB9,0x00,0xC0,0x0A,0x06,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x5A,0x2C,0x7A,0xB9,0x00,0xC0,0x08,0x06,0x00,0x00,
+0x01,0x00,0x00,0x00,0x37,0x14,0x5A,0x2C,0x92,0x01,0x80,0x00,0x86,0x01,0x80,0x00,
+0x01,0x00,0x00,0x00,0x64,0x00,0x14,0x00,0x14,0x00,0x06,0x00,0x06,0x00,0x5A,0x00,
+0x14,0x00,0x14,0x00,0x06,0x00,0x06,0x00,0x64,0x00,0x01,0x00,0x5F,0x00,0x01,0x00,
+0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x50,0x00,0x96,0x00,0x40,0x06,0x00,0x00,0x80,0x0C,0x00,0x00,0x01,0x03,0x07,0x00,
+0x00,0x01,0x02,0x00,0x07,0x00,0xC8,0x00,0xC8,0x00,0xC8,0x00,0xF4,0x01,0xF4,0x01,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x02,0x00,0x04,0x00,0x06,0x00,
+0x08,0x00,0x0A,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x20,0x00,0x28,0x00,
+0x32,0x00,0x3E,0x00,0x40,0x00,0x64,0x00,0x80,0x00,0x00,0x01,0x02,0x00,0x00,0x11,
+0xFF,0xFF,0xFF,0xFF,0x01,0x11,0xFF,0xFF,0x18,0x50,0x02,0x11,0xFF,0x7F,0xFF,0x0E,
+0x03,0x11,0xFF,0x00,0x66,0x00,0x04,0x11,0xFF,0x0F,0x72,0x07,0x05,0x11,0xFF,0x0F,
+0x72,0x07,0x06,0x11,0xFF,0x00,0x00,0x00,0x07,0x11,0x03,0x00,0x00,0x00,0x08,0x11,
+0x73,0x00,0x00,0x00,0x09,0x11,0xFF,0xFF,0x00,0x00,0x09,0x11,0xFF,0x7F,0x00,0x00,
+0x0A,0x11,0xFF,0x7F,0x87,0x10,0x0E,0x11,0xFF,0xFF,0x00,0x00,0x0F,0x11,0xFF,0xFF,
+0x00,0x00,0x17,0x11,0x0F,0xFF,0x00,0x00,0x18,0x11,0xFF,0xFF,0x00,0x02,0x19,0x11,
+0xFF,0x00,0x0E,0x00,0x1E,0x11,0xFF,0xFF,0x00,0x00,0x1F,0x11,0xFF,0x00,0x00,0x00,
+0x33,0x11,0x0F,0x00,0x00,0x00,0x3A,0x11,0x37,0x0F,0x00,0x00,0x3B,0x11,0x77,0x00,
+0x77,0x00,0x3C,0x11,0x00,0xFF,0x00,0xA0,0x3D,0x11,0x77,0x00,0x00,0x00,0x3E,0x11,
+0xFF,0x00,0x00,0x00,0x04,0x12,0x06,0x00,0x00,0x00,0x05,0x12,0xFF,0x00,0x00,0x00,
+0x07,0x12,0xFF,0xFF,0x00,0x00,0x08,0x12,0xFF,0x00,0x00,0x00,0x09,0x12,0xFF,0xFF,
+0x00,0x00,0x0A,0x12,0xFF,0x00,0x00,0x00,0x0B,0x12,0x3F,0x00,0x2E,0x00,0x0D,0x12,
+0x1F,0x00,0x05,0x00,0x0E,0x12,0x1F,0x00,0x05,0x00,0x0F,0x12,0xFF,0xFF,0x00,0x00,
+0x10,0x12,0xFF,0x00,0x00,0x00,0x11,0x12,0xFF,0x0F,0x00,0x00,0x12,0x12,0x87,0x1F,
+0x00,0x00,0x13,0x12,0x7F,0x0F,0x14,0x00,0x14,0x12,0x9F,0xFF,0x0A,0x09,0x15,0x12,
+0x7F,0x0F,0x0C,0x0F,0x16,0x12,0xFF,0x0F,0x00,0x07,0x17,0x12,0x1F,0xFF,0x0A,0x5C,
+0x18,0x12,0x7F,0x1F,0x14,0x0A,0x19,0x12,0xFF,0xFF,0x8C,0x21,0x1A,0x12,0xFF,0x03,
+0x00,0x00,0x1B,0x12,0xFF,0x03,0x00,0x00,0x1C,0x12,0xFF,0x03,0x00,0x00,0x1D,0x12,
+0xFF,0x03,0x00,0x00,0x1E,0x12,0x1F,0x1F,0x12,0x07,0x1F,0x12,0x3F,0x3F,0x00,0x00,
+0x20,0x12,0xFF,0xFF,0x00,0x00,0x21,0x12,0xFF,0x00,0x00,0x00,0x23,0x12,0x3F,0x3F,
+0x02,0x00,0x24,0x12,0x3F,0x00,0x00,0x00,0x28,0x12,0xFF,0xFF,0x83,0x81,0x2D,0x12,
+0x01,0x00,0x01,0x00,0x50,0x12,0xFF,0xFF,0x00,0x00,0x51,0x12,0xFF,0x00,0x00,0x00,
+0x70,0x12,0x03,0x00,0x03,0x00,0x01,0x11,0x06,0x00,0x02,0x00,0x02,0x11,0x00,0x08,
+0x00,0x08,0x2A,0x12,0x00,0xFF,0x00,0xBA,0x2B,0x12,0xFF,0x30,0xF0,0x20,0x01,0x11,
+0x06,0x00,0x00,0x00,0x2A,0x12,0x00,0xFF,0x00,0x00,0x2B,0x12,0xFF,0x30,0x00,0x00,
+0x01,0x11,0x00,0x50,0x00,0x50,0x02,0x11,0x3F,0x06,0x2F,0x06,0x01,0x11,0x00,0x50,
+0x00,0x00,0x02,0x11,0x3F,0x06,0x00,0x00,0x2A,0x12,0x00,0x30,0x00,0x20,0x11,0x1E,
+0xFF,0x7F,0x00,0x00,0x12,0x1E,0xFF,0x00,0x00,0x00,0x13,0x1E,0x0F,0x00,0x00,0x00,
+0x15,0x1E,0x73,0x07,0x00,0x00,0x16,0x1E,0x0F,0x00,0x00,0x00,0x18,0x1E,0x3F,0x00,
+0x08,0x00,0x2A,0x1E,0x05,0x00,0x01,0x00,0x50,0x11,0x11,0x11,0x51,0x11,0x11,0x11,
+0x52,0x11,0x11,0x11,0x53,0x11,0x11,0x11,0x54,0x11,0x11,0x11,0x55,0x11,0x11,0x11,
+0x56,0x11,0x11,0x11,0x57,0x11,0x11,0x11,0x58,0x11,0x11,0x11,0x59,0x11,0x11,0x11,
+0x5A,0x11,0x11,0x11,0x5B,0x11,0x11,0x11,0x5C,0x11,0xFF,0xFF,0x5D,0x11,0xFF,0xFF,
+0x5E,0x11,0xFF,0xFF,0x46,0x12,0x00,0x00,0x47,0x12,0x00,0x00,0x48,0x12,0x00,0x00,
+0x49,0x12,0x00,0x00,0x4A,0x12,0x00,0x00,0x4B,0x12,0x00,0x00,0x4C,0x12,0x00,0x00,
+0x4D,0x12,0x00,0x00,0x4E,0x12,0x0F,0x00,0x02,0x03,0x5C,0x54,0x47,0x37,0x00,0x00,
+0x31,0x00,0x94,0x00,0xFA,0x00,0x66,0x01,0xD9,0x01,0x57,0x02,0xE6,0x02,0x8A,0x03,
+0x4F,0x04,0x44,0x05,0x84,0x06,0x42,0x08,0xEB,0x0A,0x98,0x0F,0x55,0x1A,0xF3,0x07,
+0xFF,0xFF,0x0F,0x00,0x52,0x00,0x69,0x00,0xD9,0x00,0x00,0x00,0x3B,0x40,0x00,0x00,
+0xDB,0x40,0x00,0x00,0xFA,0x40,0x00,0x00,0xCD,0x41,0x00,0x00,0xE4,0x41,0x00,0x00,
+0x95,0x00,0x89,0x00,0x7E,0x00,0x72,0x00,0x67,0x00,0x5B,0x00,0x50,0x00,0x44,0x00,
+0x39,0x00,0x2D,0x00,0x22,0x00,0x16,0x00,0x0B,0x00,0x00,0x00,0xFF,0x00,0x8D,0x09,
+0x1A,0x00,0xFE,0x00,0x1B,0x07,0x3F,0x00,0xFE,0x00,0x9D,0x0A,0x78,0x00,0xFD,0x00,
+0xEC,0x12,0xA8,0x00,0xFC,0x00,0x6B,0x18,0xD0,0x00,0xFB,0x00,0x7C,0x19,0x0A,0x01,
+0xF9,0x00,0x55,0x20,0x4E,0x01,0xF8,0x00,0x85,0x26,0x86,0x01,0xFF,0x00,0x48,0x0D,
+0x09,0x00,0xFE,0x00,0x9E,0x0B,0x1E,0x00,0xFE,0x00,0x34,0x0E,0x44,0x00,0xFD,0x00,
+0x35,0x14,0x66,0x00,0xFD,0x00,0x1A,0x18,0x7F,0x00,0xFC,0x00,0x11,0x19,0x9C,0x00,
+0xFB,0x00,0x3C,0x1C,0xBF,0x00,0xFB,0x00,0x94,0x21,0xDB,0x00,0xFA,0x00,0xE6,0x24,
+0xF7,0x00,0xF9,0x00,0xFB,0x24,0x29,0x01,0xFE,0x00,0xE0,0x0D,0x04,0x00,0xFE,0x00,
+0xF6,0x10,0x18,0x00,0xFE,0x00,0xC8,0x12,0x30,0x00,0xFD,0x00,0xEB,0x14,0x4A,0x00,
+0xFD,0x00,0x74,0x16,0x69,0x00,0xFC,0x00,0xB9,0x1C,0x7E,0x00,0xFC,0x00,0x68,0x20,
+0x8E,0x00,0xFB,0x00,0xCE,0x21,0xA6,0x00,0xFB,0x00,0x52,0x23,0xC8,0x00,0xFA,0x00,
+0x0A,0x29,0xE2,0x00,0xF9,0x00,0x4D,0x2C,0xFC,0x00,0xFE,0x00,0x85,0x13,0xF8,0xFF,
+0xFE,0x00,0xF6,0x12,0x07,0x00,0xFD,0x00,0xC9,0x13,0x24,0x00,0xFD,0x00,0x6E,0x18,
+0x3E,0x00,0xFC,0x00,0x47,0x1C,0x4E,0x00,0xFC,0x00,0x83,0x1D,0x5E,0x00,0xFC,0x00,
+0xFB,0x1F,0x74,0x00,0xFB,0x00,0xF7,0x25,0x86,0x00,0xFA,0x00,0xB8,0x29,0x93,0x00,
+0xFA,0x00,0xA4,0x29,0xAB,0x00,0xF9,0x00,0x13,0x2B,0xCB,0x00,0xF9,0x00,0x37,0x30,
+0xE5,0x00,0xFD,0x00,0x0D,0x1F,0xDC,0xFF,0xFD,0x00,0x3D,0x1E,0xE7,0xFF,0xFD,0x00,
+0xD0,0x1C,0x02,0x00,0xFC,0x00,0xCD,0x1E,0x1B,0x00,0xFC,0x00,0x4B,0x22,0x29,0x00,
+0xFC,0x00,0x4F,0x25,0x33,0x00,0xFB,0x00,0x83,0x27,0x43,0x00,0xFA,0x00,0xE6,0x2C,
+0x4F,0x00,0xFA,0x00,0x48,0x30,0x57,0x00,0xFA,0x00,0x0E,0x31,0x62,0x00,0xF9,0x00,
+0x76,0x31,0x77,0x00,0xF9,0x00,0x65,0x36,0x87,0x00,0xF8,0x00,0xB3,0x38,0x94,0x00,
+0xF8,0x00,0x27,0x37,0xAC,0x00,0x05,0x03,0x03,0x04,0x04,0x00,0x11,0x00,0xC1,0x09,
+0xD9,0xFF,0x36,0x01,0x0E,0x00,0x1C,0x00,0xDD,0x03,0x03,0x00,0x40,0x00,0x14,0x00,
+0x4C,0x00,0x95,0x03,0x05,0x00,0x07,0x00,0x18,0x00,0xA5,0x00,0x4B,0x06,0x9B,0xFF,
+0x03,0x00,0x19,0x00,0xC8,0x00,0x14,0x03,0x3B,0x00,0x00,0x00,0x1A,0x00,0x16,0x00,
+0x40,0x05,0xE4,0xFF,0xA2,0x00,0x14,0x00,0x3B,0x00,0x67,0x04,0xF0,0xFF,0x3B,0x00,
+0x1A,0x00,0x6F,0x00,0x22,0x04,0xF8,0xFF,0x03,0x00,0x20,0x00,0x1C,0x00,0x48,0x05,
+0xDB,0xFF,0x98,0x00,0x16,0x00,0x57,0x00,0x90,0x04,0xEC,0xFF,0x19,0x00,0x21,0x00,
+0x95,0x00,0x08,0x04,0xFE,0xFF,0x02,0x00,0x24,0x00,0x23,0x00,0xC4,0x05,0xCC,0xFF,
+0xA6,0x00,0x17,0x00,0x62,0x00,0x9C,0x04,0xEC,0xFF,0x17,0x00,0x25,0x00,0xA0,0x00,
+0x0E,0x04,0xFB,0xFF,0x02,0x00,0x28,0x00,0x0D,0x01,0x7D,0x04,0xE1,0xFF,0xFC,0xFF,
+0x2A,0x00,0x33,0x00,0x30,0x07,0xA2,0xFF,0xD3,0x00,0x18,0x00,0x6F,0x00,0xAD,0x04,
+0xED,0xFF,0x23,0x00,0x2B,0x00,0x9C,0x00,0x14,0x03,0x27,0x00,0x03,0x00,0x2F,0x00,
+0xE1,0x00,0x53,0x05,0xAB,0xFF,0x02,0x00,0x30,0x00,0x00,0x00,0x13,0x1A,0x05,0x00,
+0x30,0x34,0x38,0x0C,0x10,0x34,0x30,0x0E,0x30,0x0A,0x35,0x02,0x09,0x10,0x35,0x10,
+0x0A,0x34,0x1E,0x18,0x14,0x0E,0x0B,0x07,0x01,0x3C,0x37,0x34,0x30,0x2A,0x26,0x23,
+0x1C,0x17,0x0E,0x05,0x03,0x10,0x19,0x1B,0x2F,0x2F,0x10,0x0E,0x0A,0x05,0x00,0x39,
+0x33,0x30,0x10,0x0B,0x04,0x35,0x30,0x28,0x22,0x1E,0x19,0x13,0x10,0x0B,0x07,0x02,
+0x3D,0x39,0x00,0x3C,0x38,0x34,0x2E,0x23,0x1D,0x16,0x10,0x0B,0x05,0x01,0x3F,0x00,
+0x0A,0x17,0x1A,0x10,0x02,0x3F,0x21,0x1D,0x19,0x14,0x0E,0x04,0x01,0x00,0x00,0x32,
+0x33,0x05,0x0D,0x3D,0x35,0x09,0x10,0x1F,0x1F,0x0D,0x0D,0x0D,0x0D,0x35,0x35,0x0E,
+0x0D,0x36,0x32,0x09,0x0D,0x37,0x33,0x00,0x3C,0x36,0x2A,0x23,0x1E,0x1A,0x15,0x10,
+0x0B,0x08,0x03,0x3C,0x39,0x0F,0x0F,0x1D,0x18,0x12,0x0A,0x04,0x01,0x10,0x10,0x32,
+0x3E,0x0D,0x10,0x33,0x38,0x01,0x0D,0x10,0x30,0x34,0x00,0x0D,0x10,0x32,0x34,0x3A,
+0x07,0x0D,0x10,0x01,0x05,0x0B,0x0E,0x13,0x1A,0x1F,0x25,0x29,0x2E,0x34,0x36,0x3B,
+0x00,0x10,0x0E,0x07,0x3C,0x33,0x30,0x28,0x22,0x1D,0x19,0x14,0x10,0x0A,0x05,0x0B,
+0x13,0x1A,0x1D,0x22,0x26,0x2B,0x3D,0x02,0x10,0x09,0x3D,0x34,0x30,0x0B,0x04,0x00,
+0xB7,0x60,0x00,0x00,0xB7,0x60,0x00,0x00,0xCC,0x60,0x00,0x00,0xCC,0x60,0x00,0x00,
+0x2B,0x62,0x00,0x00,0x2B,0x62,0x00,0x00,0x2B,0x62,0x00,0x00,0x55,0x61,0x00,0x00,
+0x2B,0x62,0x00,0x00,0xB2,0x61,0x00,0x00,0x06,0x64,0x00,0x00,0x06,0x64,0x00,0x00,
+0x2F,0x64,0x00,0x00,0xFC,0x63,0x00,0x00,0x58,0x64,0x00,0x00,0x88,0x64,0x00,0x00,
+0x70,0x64,0x00,0x00,0x61,0x67,0x00,0x00,0x85,0x67,0x00,0x00,0x95,0x67,0x00,0x00,
+0xD0,0x67,0x00,0x00,0xCA,0x67,0x00,0x00,0xCA,0x67,0x00,0x00,0xD0,0x67,0x00,0x00,
+0xCA,0x67,0x00,0x00,0x0A,0x0B,0x2C,0x1B,0x09,0x07,0x1C,0x1A,0x25,0x05,0x1D,0x19,
+0x26,0x00,0x1E,0x18,0x27,0x04,0x1F,0x17,0x28,0x06,0x20,0x0D,0x29,0x08,0x2B,0x0C,
+0x2A,0x00,0x00,0x00,0x57,0x75,0x00,0x00,0x57,0x75,0x00,0x00,0x88,0x75,0x00,0x00,
+0x88,0x75,0x00,0x00,0xBA,0x75,0x00,0x00,0xBA,0x75,0x00,0x00,0xBA,0x75,0x00,0x00,
+0xBA,0x75,0x00,0x00,0x39,0x75,0x00,0x00,0x1B,0x75,0x00,0x00,0x1B,0x76,0x00,0x00,
+0x1B,0x76,0x00,0x00,0x4E,0x76,0x00,0x00,0x4E,0x76,0x00,0x00,0x83,0x76,0x00,0x00,
+0x83,0x76,0x00,0x00,0x83,0x76,0x00,0x00,0x83,0x76,0x00,0x00,0xF4,0x75,0x00,0x00,
+0xE2,0x75,0x00,0x00,0x72,0x77,0x00,0x00,0x72,0x77,0x00,0x00,0xC6,0x77,0x00,0x00,
+0xC6,0x77,0x00,0x00,0xA8,0x78,0x00,0x00,0xA8,0x78,0x00,0x00,0xA8,0x78,0x00,0x00,
+0xA8,0x78,0x00,0x00,0x20,0x78,0x00,0x00,0x66,0x78,0x00,0x00,0xE2,0x89,0x00,0x00,
+0xE9,0x89,0x00,0x00,0xF0,0x89,0x00,0x00,0xF7,0x89,0x00,0x00,0xFE,0x89,0x00,0x00,
+0x05,0x8A,0x00,0x00,0x0C,0x8A,0x00,0x00,0x13,0x8A,0x00,0x00,0x1A,0x8A,0x00,0x00,
+0x21,0x8A,0x00,0x00,0x28,0x8A,0x00,0x00,0x2F,0x8A,0x00,0x00,0x44,0x8B,0x00,0x00,
+0x44,0x8B,0x00,0x00,0x7F,0x8B,0x00,0x00,0x7F,0x8B,0x00,0x00,0x0E,0x8C,0x00,0x00,
+0x0E,0x8C,0x00,0x00,0x0E,0x8C,0x00,0x00,0x0E,0x8C,0x00,0x00,0xBC,0x8B,0x00,0x00,
+0xE1,0x8B,0x00,0x00,0x00,0x01,0x00,0x00,0x3F,0x8E,0x00,0x00,0x64,0x8E,0x00,0x00,
+0xBC,0x8E,0x00,0x00,0xDD,0x8F,0x00,0x00,0x18,0x8F,0x00,0x00,0x48,0x8F,0x00,0x00,
+0xDD,0x8F,0x00,0x00,0x50,0x8F,0x00,0x00,0x04,0x00,0x1D,0x00,0x2E,0x00,0x50,0x00,
+0x82,0x00,0xC7,0x00,0x23,0x01,0x9B,0x01,0x32,0x02,0xEE,0x02,0xD0,0x03,0xDE,0x04,
+0x19,0x06,0x82,0x07,0x1A,0x09,0xE0,0x0A,0xD0,0x0C,0xE7,0x0E,0x1F,0x11,0x71,0x13,
+0xD3,0x15,0x3D,0x18,0xA2,0x1A,0xF9,0x1C,0x34,0x1F,0x47,0x21,0x28,0x23,0xCB,0x24,
+0x27,0x26,0x33,0x27,0xEA,0x27,0x46,0x28,0x04,0x00,0x1C,0x00,0x2B,0x00,0x4B,0x00,
+0x78,0x00,0xB7,0x00,0x0A,0x01,0x75,0x01,0xFC,0x01,0xA3,0x02,0x6D,0x03,0x5E,0x04,
+0x76,0x05,0xB9,0x06,0x26,0x08,0xBE,0x09,0x7D,0x0B,0x61,0x0D,0x67,0x0F,0x87,0x11,
+0xBB,0x13,0xFC,0x15,0x3F,0x18,0x7B,0x1A,0xA6,0x1C,0xB6,0x1E,0x9F,0x20,0x57,0x22,
+0xD7,0x23,0x14,0x25,0x08,0x26,0xAF,0x26,0x03,0x27,0x05,0x00,0x08,0x21,0x05,0x00,
+0x00,0x20,0x00,0x00,0x80,0xBD,0x00,0xC0,0x90,0xBD,0x00,0xC0,0xA2,0xBD,0x00,0xC0,
+0xA6,0xBD,0x00,0xC0,0x18,0xBD,0x00,0xC0,0x60,0xBD,0x00,0xC0,0xC0,0xBD,0x00,0xC0,
+0xDE,0xBD,0x00,0xC0,0xE2,0xBD,0x00,0xC0,0x08,0xBE,0x00,0xC0,0x96,0xBE,0x00,0xC0,
+0xD8,0xBE,0x00,0xC0,0x3A,0xBC,0x00,0xC0,0x3E,0xBC,0x00,0xC0,0x14,0xBD,0x00,0xC0,
+0x5C,0xBD,0x00,0xC0,0x05,0x00,0x2A,0x00,0x2A,0x00,0x3E,0x00,0x58,0x00,0x79,0x00,
+0xA1,0x00,0xD3,0x00,0x0F,0x01,0x56,0x01,0xAA,0x01,0x0C,0x02,0x7D,0x02,0xFE,0x02,
+0x91,0x03,0x37,0x04,0xF0,0x04,0xBE,0x05,0xA0,0x06,0x99,0x07,0xA7,0x08,0xCC,0x09,
+0x06,0x0B,0x56,0x0C,0xBB,0x0D,0x34,0x0F,0xC0,0x10,0x5D,0x12,0x0A,0x14,0xC5,0x15,
+0x8A,0x17,0x59,0x19,0x2D,0x1B,0x05,0x1D,0xDC,0x1E,0xB0,0x20,0x7D,0x22,0x40,0x24,
+0xF5,0x25,0x98,0x27,0x27,0x29,0x9E,0x2A,0xF9,0x2B,0x37,0x2D,0x53,0x2E,0x4B,0x2F,
+0x1E,0x30,0xC9,0x30,0x4A,0x31,0xA1,0x31,0xCD,0x31,0x04,0x00,0x2D,0x00,0x6D,0x00,
+0xE7,0x00,0xAD,0x01,0xD8,0x02,0x81,0x04,0xBE,0x06,0xA0,0x09,0x30,0x0D,0x6D,0x11,
+0x47,0x16,0xA3,0x1B,0x56,0x21,0x29,0x27,0xDC,0x2C,0x2A,0x32,0xCF,0x36,0x8B,0x3A,
+0x29,0x3D,0x81,0x3E,0x06,0x00,0xF5,0x28,0x03,0x00,0x33,0x33,0x64,0xBD,0x00,0xC0,
+0x7A,0xBD,0x00,0xC0,0x0C,0xBE,0x00,0xC0,0x9A,0xBE,0x00,0xC0,0x84,0xBD,0x00,0xC0,
+0x94,0xBD,0x00,0xC0,0x68,0xBD,0x00,0xC0,0xAA,0xBD,0x00,0xC0,0xC4,0xBD,0x00,0xC0,
+0xE6,0xBD,0x00,0xC0,0xEA,0xBC,0x00,0xC0,0xA4,0xBE,0x00,0xC0,0xB8,0xBB,0x00,0xC0,
+0xF8,0xBB,0x00,0xC0,0x84,0xBC,0x00,0xC0,0x14,0xBE,0x00,0xC0,0x06,0x00,0x00,0x20,
+0x03,0x00,0xAA,0x2A,0x00,0x00,0x00,0x20,0x02,0x00,0x45,0x00,0x5D,0x01,0x1B,0x04,
+0x31,0x09,0xA2,0x10,0x55,0x19,0x32,0x21,0xE5,0x25,0x01,0x00,0x10,0x10,0xEF,0x2F,
+0x00,0x00,0x00,0x20,0x02,0x00,0x49,0x01,0x6C,0x07,0xB1,0x15,0x60,0x29,0x38,0x38,
+0x01,0x00,0x00,0x20,0x02,0x00,0xAC,0x00,0xCB,0x03,0x95,0x0B,0x6B,0x18,0xE0,0x26,
+0xA6,0x30,0x02,0x00,0xAA,0x2A,0x02,0x00,0x00,0x20,0x03,0x00,0x4D,0x00,0x51,0x01,
+0xBD,0x03,0x48,0x08,0x6B,0x0F,0x0D,0x19,0x47,0x24,0x73,0x2F,0x86,0x38,0x9F,0x3D,
+0x03,0x00,0x00,0x20,0x03,0x00,0x33,0x00,0xC4,0x00,0x08,0x02,0x5B,0x04,0x11,0x08,
+0x55,0x0D,0x0D,0x14,0xCC,0x1B,0xCF,0x23,0x1E,0x2B,0xB5,0x30,0xBD,0x33,0x04,0x00,
+0x33,0x33,0x04,0x00,0xAA,0x2A,0x03,0x00,0x1F,0x00,0x5B,0x00,0xD6,0x00,0xAB,0x01,
+0xF6,0x02,0xD5,0x04,0x59,0x07,0x87,0x0A,0x52,0x0E,0x96,0x12,0x1C,0x17,0x9B,0x1B,
+0xC0,0x1F,0x37,0x23,0xB6,0x25,0x05,0x27,0x04,0x00,0x00,0x20,0x01,0x00,0x65,0x04,
+0x5D,0x14,0x3D,0x27,0x05,0x00,0x26,0x00,0x1D,0x00,0x28,0x00,0x36,0x00,0x47,0x00,
+0x5A,0x00,0x72,0x00,0x8D,0x00,0xAE,0x00,0xD3,0x00,0xFD,0x00,0x2D,0x01,0x64,0x01,
+0xA2,0x01,0xE6,0x01,0x33,0x02,0x87,0x02,0xE5,0x02,0x4B,0x03,0xBA,0x03,0x33,0x04,
+0xB6,0x04,0x43,0x05,0xDB,0x05,0x7C,0x06,0x29,0x07,0xDF,0x07,0xA1,0x08,0x6C,0x09,
+0x41,0x0A,0x21,0x0B,0x09,0x0C,0xFA,0x0C,0xF4,0x0D,0xF5,0x0E,0xFE,0x0F,0x0C,0x11,
+0x20,0x12,0x38,0x13,0x53,0x14,0x71,0x15,0x90,0x16,0xAF,0x17,0xCD,0x18,0xE8,0x19,
+0x00,0x1B,0x12,0x1C,0x1E,0x1D,0x23,0x1E,0x1F,0x1F,0x10,0x20,0xF7,0x20,0xD0,0x21,
+0x9C,0x22,0x59,0x23,0x07,0x24,0xA3,0x24,0x2E,0x25,0xA7,0x25,0x0C,0x26,0x5E,0x26,
+0x9C,0x26,0xC6,0x26,0xDA,0x26,0x05,0x00,0x33,0x33,0x01,0x00,0x7E,0x01,0x41,0x08,
+0x4A,0x15,0xF4,0x20,0x04,0x00,0x23,0x00,0x45,0x00,0x84,0x00,0xE4,0x00,0x6F,0x01,
+0x2F,0x02,0x2F,0x03,0x76,0x04,0x0F,0x06,0xFD,0x07,0x45,0x0A,0xE6,0x0C,0xDA,0x0F,
+0x19,0x13,0x93,0x16,0x37,0x1A,0xEF,0x1D,0xA0,0x21,0x2F,0x25,0x80,0x28,0x77,0x2B,
+0xFA,0x2D,0xF2,0x2F,0x4D,0x31,0xFD,0x31,0x05,0x00,0xF5,0x28,0x72,0xA2,0x00,0x00,
+0x8E,0xA2,0x00,0x00,0xAD,0xA2,0x00,0x00,0xCC,0xA2,0x00,0x00,0xDB,0xA2,0x00,0x00,
+0x44,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x0F,0x70,0x8A,0xF7,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x03,0x00,
+0x00,0x00,0x56,0x30,0x31,0x2E,0x30,0x30,0x37,0x2E,0x30,0x34,0x46,0xC9,0xF5,0x89
+};
diff --git a/drivers/input/touchscreen/msg2233/msg22xx_xxxx_update_bin.h b/drivers/input/touchscreen/msg2233/msg22xx_xxxx_update_bin.h new file mode 100755 index 00000000..c61f10a7 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/msg22xx_xxxx_update_bin.h @@ -0,0 +1,3106 @@ +u8 msg22xx_xxxx_update_bin[49664]={
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x52,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xFD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xEF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xD3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xC5,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x1C,0x40,0x00,0x1C,
+0x60,0x00,0x1C,0x80,0x00,0x1C,0xA0,0x00,0x1C,0xC0,0x00,0x1C,0xE0,0x00,0x1D,0x00,
+0x00,0x1D,0x20,0x00,0x1D,0x40,0x00,0x1D,0x60,0x00,0x1D,0x80,0x00,0x1D,0xA0,0x00,
+0x1D,0xC0,0x00,0x1D,0xE0,0x00,0x1E,0x00,0x00,0x1E,0x20,0x00,0x1E,0x40,0x00,0x1E,
+0x60,0x00,0x1E,0x80,0x00,0x1E,0xA0,0x00,0x1E,0xC0,0x00,0x1E,0xE0,0x00,0x1F,0x00,
+0x00,0x1F,0x20,0x00,0x1F,0x40,0x00,0x1F,0x60,0x00,0x1F,0x80,0x00,0x1F,0xA0,0x00,
+0x1F,0xC0,0x00,0x1F,0xE0,0x00,0xC0,0x60,0x00,0x01,0xC8,0x63,0x9D,0xFC,0x84,0x69,
+0x80,0x01,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,
+0xFC,0x21,0xFF,0x60,0xEF,0xE1,0x00,0x80,0xFF,0xE1,0x00,0xA0,0x0F,0xE1,0x08,0xC3,
+0xE0,0x02,0x0F,0x0F,0xE1,0x00,0xC3,0xE0,0x04,0x0F,0x0F,0xE1,0x04,0xC3,0xE0,0x03,
+0x0F,0xEF,0xE1,0x00,0x84,0xC3,0xE0,0x05,0x0F,0xEF,0xE1,0x00,0x88,0xC3,0xE0,0x05,
+0x1F,0xEF,0xE1,0x00,0x8C,0xE4,0x01,0x37,0x31,0x90,0x00,0x90,0x00,0x90,0x00,0x90,
+0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x30,0x44,0x0B,
+0x17,0x01,0x98,0x60,0x56,0xF8,0x01,0x4F,0x18,0x79,0x22,0xE0,0x14,0x98,0x62,0x23,
+0x00,0x18,0x58,0x77,0x01,0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0C,0x81,0x04,0x0D,
+0x21,0x0C,0x5D,0x43,0x00,0xE7,0xFF,0xFF,0xA4,0x0C,0x81,0x06,0x5C,0x63,0x00,0x20,
+0x60,0x66,0x9B,0x00,0x21,0x40,0x30,0x21,0x44,0x24,0x5D,0x40,0x41,0x4B,0x01,0x01,
+0xD0,0x81,0x04,0x66,0xE4,0x00,0x01,0x17,0xE7,0xFF,0xFF,0x5E,0x5C,0x63,0x00,0x20,
+0x64,0x4E,0xD1,0x40,0x05,0xD2,0xD1,0x41,0x05,0xB2,0xD1,0x42,0x05,0x96,0xE4,0x00,
+0x00,0xE3,0xE7,0xFF,0xFF,0x2A,0x5C,0x63,0x00,0xD0,0x62,0x05,0x1E,0x9B,0x01,0x21,
+0x40,0x24,0x5D,0x40,0x21,0x4B,0x01,0x01,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,
+0xCB,0x57,0x23,0x78,0x0B,0x7A,0x01,0x47,0x79,0xDD,0x5F,0x7B,0x04,0x0F,0x7A,0x01,
+0xCB,0x57,0x23,0x6C,0x0B,0x7A,0x01,0xC7,0x7B,0x8F,0xFF,0x0F,0x7A,0x01,0xCB,0x57,
+0x3C,0xD4,0x0B,0x7A,0x01,0x47,0x79,0xDD,0x5F,0x7B,0x04,0x0F,0x7A,0x01,0xCB,0x57,
+0x3C,0xE0,0x0B,0x7A,0x01,0xC7,0x7B,0x7F,0xFF,0x0F,0x7A,0x01,0xCA,0xF7,0x3C,0xEC,
+0x0B,0x57,0x01,0x47,0x39,0xD5,0x5F,0x39,0x04,0x0F,0x37,0x01,0x23,0x01,0x00,0xC2,
+0xF4,0x00,0x01,0xCB,0x17,0x3D,0xE8,0x0B,0x38,0x01,0xFF,0x20,0x11,0x11,0x0F,0x38,
+0x01,0xCB,0x17,0x3D,0xEC,0x0B,0x38,0x01,0xFF,0x20,0x22,0x22,0x0F,0x38,0x01,0xCB,
+0x17,0x3D,0xF0,0x0B,0x38,0x01,0xFF,0x20,0x33,0x33,0x0F,0x38,0x01,0xCA,0xF7,0x78,
+0xC0,0xFF,0x00,0xAA,0x55,0x0F,0x17,0x01,0xE4,0x00,0x00,0x01,0x0D,0x41,0x0A,0x0D,
+0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x03,0xF0,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x03,0xE8,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x03,0xEC,0xC2,
+0xE0,0x10,0x01,0xEC,0xD7,0x04,0x04,0xC2,0xE0,0x10,0x01,0xEC,0xF7,0x03,0xFC,0xC2,
+0xE0,0x10,0x01,0x0F,0x01,0x02,0xED,0x17,0x04,0x00,0xC2,0xE0,0x10,0x01,0xEF,0x17,
+0x04,0x10,0xC2,0xE0,0x10,0x01,0x0F,0x01,0x06,0xEF,0x17,0x03,0xD4,0xC2,0xE0,0x10,
+0x01,0x0F,0x01,0x0A,0xEF,0x17,0x03,0xF4,0x85,0x29,0x5C,0x84,0x00,0xC2,0xE0,0x10,
+0x01,0x4C,0x84,0x10,0xFE,0xF7,0x04,0x08,0x8E,0xE4,0x0C,0x77,0x00,0x85,0x29,0x5C,
+0x63,0x00,0x9B,0x00,0x24,0x68,0x25,0x1F,0x03,0xFE,0x5F,0x18,0x00,0xC2,0xE0,0x10,
+0x01,0xF3,0x57,0x0B,0x7A,0x1E,0xE3,0x01,0x1F,0x9A,0xFF,0x5F,0x3C,0x00,0xD7,0x97,
+0x00,0x50,0x1F,0x23,0x02,0x5F,0x39,0x00,0xC2,0xEF,0xFF,0xE1,0xCA,0xF7,0xFF,0xFF,
+0xE4,0x00,0x00,0x2F,0x4F,0x78,0x10,0x9F,0x01,0x8F,0x64,0x5F,0x18,0x00,0x0F,0x7B,
+0x02,0x5E,0xFB,0x15,0x4A,0xF7,0xD8,0xD7,0x19,0xFF,0x69,0x4F,0x03,0x10,0xC3,0x20,
+0x10,0x01,0x8F,0x04,0xEF,0x39,0x03,0xF6,0x0F,0x18,0x02,0xD7,0x38,0x01,0x41,0xC3,
+0x20,0x10,0x01,0xEF,0x79,0x03,0xF2,0xC3,0x20,0x10,0x01,0xEF,0xB9,0x03,0xEA,0xC3,
+0x20,0x10,0x01,0xEF,0xD9,0x03,0xEE,0xC3,0x20,0x10,0x01,0xEF,0x39,0x04,0x06,0xE4,
+0x00,0x00,0x49,0xC3,0x20,0x10,0x01,0xEF,0x79,0x03,0xFE,0xC3,0x20,0x10,0x01,0xEF,
+0xB9,0x04,0x02,0xC3,0x20,0x10,0x01,0xEF,0xD9,0x04,0x12,0xC3,0x20,0x10,0x01,0xEF,
+0x39,0x03,0xD6,0x20,0x60,0xDE,0x0F,0x44,0x02,0x0F,0x84,0x06,0xCF,0x5A,0x00,0x32,
+0x40,0xE7,0xE3,0xD7,0x47,0x05,0xDC,0x42,0xF7,0x2D,0x40,0xA5,0xCB,0x43,0x77,0xDB,
+0x43,0x3B,0x2C,0xCC,0xC6,0x00,0x0A,0x9B,0x4A,0x8C,0xD9,0x98,0x61,0x40,0xC6,0xD0,
+0xD7,0x06,0x04,0xF4,0x98,0x60,0xE4,0x00,0x01,0x31,0x20,0x64,0x6A,0x0F,0x44,0x02,
+0x0F,0x64,0x06,0xCF,0x5A,0x00,0x32,0x40,0xE7,0xDB,0x98,0x60,0xD7,0x47,0x04,0x14,
+0xE4,0x00,0x00,0x55,0x1C,0xFA,0xFE,0xD4,0x67,0x01,0x9E,0x4C,0x63,0x10,0x9F,0x5F,
+0x4F,0x5A,0x10,0x8F,0x44,0x8C,0x83,0x0F,0x5A,0x02,0x0F,0x64,0x02,0xCF,0x5A,0x00,
+0x32,0x41,0x08,0xDB,0x98,0x60,0xD7,0x48,0x02,0xC4,0x42,0xF7,0x2D,0x40,0xA5,0xCB,
+0x43,0xB7,0xEB,0x43,0x3D,0x2C,0xE7,0xFF,0xFF,0x3B,0xD4,0x7C,0x01,0x3E,0x9F,0x5F,
+0x4C,0xE7,0x10,0x4F,0x5A,0x10,0x98,0x60,0x8F,0x44,0x8C,0x87,0x0F,0x5A,0x02,0x0F,
+0x84,0x02,0xCF,0x5A,0x00,0x32,0x41,0x08,0xE3,0xD7,0x48,0x01,0x2C,0xE7,0xFF,0xFE,
+0xD5,0x42,0xF7,0x2D,0xCC,0xC6,0x00,0x0A,0x43,0xD7,0xF3,0x40,0xA5,0xCB,0x9B,0x4A,
+0x43,0x3E,0x2C,0x8C,0xD9,0x40,0xC6,0xD0,0xD7,0x06,0xFB,0x60,0x98,0x61,0x85,0x29,
+0xC2,0xE0,0x10,0x01,0x9B,0x21,0xEA,0xF7,0x01,0x51,0x9E,0xFF,0x5E,0xF7,0x04,0x26,
+0xE4,0x43,0xC3,0x18,0x00,0x21,0xFF,0x18,0xB6,0xF8,0x8E,0xF8,0x13,0x37,0x00,0xC3,
+0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x0B,0x76,0xFE,0xF7,0x09,0x68,0xD0,
+0x60,0x05,0x16,0x13,0x58,0x04,0x13,0xD8,0x01,0x1F,0x7A,0xFF,0x9F,0xC1,0x43,0xDE,
+0xD3,0x4F,0x5A,0x08,0xCD,0x1B,0x00,0x03,0x5C,0x9A,0x00,0x4F,0x7B,0x08,0x9B,0x40,
+0x5C,0x7B,0x00,0xE4,0x00,0x00,0x73,0x43,0x9A,0xDC,0x4F,0xBC,0x08,0x8F,0xB7,0x08,
+0xBD,0x01,0x40,0xB9,0x2B,0x0C,0xBD,0x01,0x9F,0x81,0x8F,0x63,0x4F,0x9C,0x08,0x5F,
+0x7B,0x00,0x8F,0x97,0x0B,0xBC,0x01,0x43,0xB9,0xEB,0x0F,0xBC,0x01,0xE4,0x00,0x00,
+0x0D,0x9B,0x60,0xD5,0x1B,0xFE,0xA4,0x8F,0x44,0x5F,0x5A,0x00,0xD7,0xDA,0xFF,0xAC,
+0x0B,0x37,0x02,0x0B,0x57,0x00,0x8F,0x59,0xC3,0x20,0x10,0x01,0xFF,0x39,0x0A,0x18,
+0x0F,0x59,0x00,0x13,0x58,0x04,0x1F,0xBA,0xFF,0x4F,0xBD,0x10,0x43,0xDD,0xCC,0x8F,
+0xB7,0x4F,0x9A,0x08,0x09,0x1D,0x00,0x1F,0x7C,0xFF,0x4F,0xBB,0x08,0x8F,0xB7,0x0B,
+0xBD,0x00,0x8F,0xA8,0x0F,0xBE,0x00,0x13,0x18,0x01,0x27,0x05,0xAF,0xE4,0x00,0x01,
+0x45,0x20,0x66,0xFE,0x13,0x58,0x04,0x13,0xD8,0x01,0x1F,0x7A,0xFF,0x9F,0xC1,0x43,
+0xDE,0xD3,0x4F,0x5A,0x08,0xCD,0x1B,0x00,0x03,0x5C,0x9A,0x00,0x4F,0x7B,0x08,0x9B,
+0x40,0x5C,0x7B,0x00,0xE4,0x00,0x00,0x73,0x43,0x9A,0xDC,0x4F,0xBC,0x08,0x8F,0xB7,
+0x08,0xBD,0x00,0x40,0xA5,0xC8,0x0C,0xBD,0x01,0x9F,0x81,0x8F,0x63,0x4F,0x9C,0x08,
+0x5F,0x7B,0x00,0x8F,0x97,0x0B,0xBC,0x00,0x43,0xBD,0xC8,0x0F,0xBC,0x01,0xE4,0x00,
+0x00,0x0D,0x9B,0x60,0xD5,0x1B,0xFE,0xA4,0x8F,0x44,0x5F,0x5A,0x00,0xD7,0xDA,0xFF,
+0xAC,0xE7,0xFF,0xFE,0xBF,0x4F,0x1A,0x10,0x9F,0x81,0x43,0x58,0xCC,0x43,0xB8,0xBC,
+0x4F,0x9C,0x08,0x0B,0xBD,0x00,0x8F,0x97,0x0B,0x9C,0x00,0x8F,0x9D,0x0F,0x9A,0x00,
+0x4F,0x7B,0x10,0x1F,0x58,0xFE,0x8F,0x3B,0x4F,0x5A,0x08,0x9F,0x1F,0x8F,0x57,0x4F,
+0x18,0x08,0x0B,0x5A,0x00,0x8E,0xF8,0x0A,0xF7,0x00,0x8E,0xFA,0x0E,0xF9,0x00,0x85,
+0x29,0x5C,0xE7,0x00,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x0B,0x7A,0x42,0xE7,0xBB,0x5E,
+0xF7,0x00,0x9B,0x00,0x8C,0xB7,0x8C,0xD7,0xC3,0x80,0x10,0x01,0xC3,0x40,0x10,0x01,
+0x5C,0xC6,0x00,0x5C,0xA5,0x00,0x8B,0x38,0x9A,0xE0,0xFF,0x9C,0x0A,0x18,0xFF,0x5A,
+0x09,0x68,0xE4,0x00,0x00,0x49,0x4F,0x65,0x10,0x43,0xBB,0xE4,0x0F,0xBD,0x02,0x9C,
+0xA1,0x8E,0xFD,0x5C,0xA5,0x00,0x8B,0xBB,0x8F,0x7A,0x8F,0xBA,0x0B,0x7B,0x00,0x0B,
+0xBD,0x02,0x8F,0x1B,0x8F,0x3D,0xD4,0xA6,0xFF,0x01,0x26,0xE0,0xE8,0x27,0x20,0xDC,
+0x27,0x00,0xD0,0xC3,0x40,0x10,0x01,0xFF,0x5A,0x04,0x08,0x4C,0xE7,0x10,0xCF,0x18,
+0xFF,0xF6,0x8C,0xFA,0x0F,0x47,0x02,0x43,0x3A,0xCB,0x9F,0x56,0x8F,0x19,0x43,0x58,
+0xD0,0xCF,0x5A,0x07,0xFF,0x43,0x5A,0xB8,0x0F,0x43,0x01,0x0E,0xE4,0x00,0x98,0x61,
+0xE4,0x00,0x00,0x0D,0x98,0x60,0x85,0x29,0x9A,0xE3,0x9B,0x01,0xE4,0x00,0x00,0x11,
+0x8F,0x17,0x9E,0xE2,0xD7,0x03,0xFF,0xE1,0x4C,0x77,0x09,0x9C,0x7F,0x85,0x29,0xFF,
+0x00,0x7F,0xFF,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x03,0xD8,0x0F,0x17,0x01,0x0F,0x17,
+0x03,0x0F,0x17,0x05,0x0F,0x17,0x07,0x0F,0x17,0x09,0x0F,0x17,0x0B,0x85,0x29,0xC3,
+0x00,0x10,0x01,0xFE,0xF8,0x03,0xD8,0xC3,0x00,0x10,0x01,0x0B,0x37,0x08,0xFF,0x18,
+0x0B,0xEC,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0x41,0x0B,0x37,0x05,0x0F,0x37,0x09,0x0B,
+0x37,0x07,0xE4,0x00,0x00,0x1B,0x0B,0x38,0x17,0x0F,0x37,0x09,0x0B,0x38,0x19,0x0F,
+0x37,0x0B,0x0B,0x37,0x04,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0x41,0x0B,0x37,0x01,0x0F,
+0x37,0x05,0x0B,0x37,0x03,0xE4,0x00,0x00,0x1B,0x0B,0x38,0x17,0x0F,0x37,0x05,0x0B,
+0x38,0x19,0x0F,0x37,0x07,0x0B,0x38,0x17,0x0B,0x18,0x19,0x0F,0x37,0x01,0x0F,0x17,
+0x03,0x85,0x29,0x1C,0x21,0xD8,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x24,0x0D,0x41,0x20,
+0x0D,0x61,0x1C,0xFD,0x57,0x03,0xD8,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x0D,0xC1,0x10,
+0x09,0xAA,0x07,0x0B,0x0A,0x03,0x43,0x18,0x6D,0x5F,0x18,0x06,0x0F,0x01,0x0B,0x43,
+0x18,0xC3,0xE9,0x97,0x03,0xD9,0x09,0xCA,0x05,0x41,0x8C,0x75,0x5D,0x8C,0x06,0x40,
+0x6C,0x63,0x8C,0x78,0xE7,0xFF,0xFE,0x48,0x0A,0xEA,0x09,0x41,0xCE,0xBD,0x0A,0xEA,
+0x0B,0x42,0xED,0xBD,0x5E,0xF7,0x06,0x0E,0xE1,0x0F,0x42,0xF7,0xBB,0x5D,0x63,0x06,
+0x5D,0x4E,0x06,0x40,0x6A,0x53,0x8C,0x77,0xE7,0xFF,0xFE,0x00,0x5E,0xE3,0x06,0x98,
+0x61,0x21,0x60,0xAC,0x22,0xE0,0xA0,0x43,0x0B,0xB8,0xD3,0x05,0x01,0x14,0x41,0x4C,
+0x53,0x0B,0x01,0x0E,0x09,0x81,0x0A,0x41,0x6B,0xBB,0x43,0x0C,0xC3,0x8D,0x58,0xCD,
+0x4A,0x00,0x64,0x42,0xEA,0x58,0x5E,0xE8,0xB1,0x48,0x61,0x01,0x0D,0xC1,0x12,0x0D,
+0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,0x1C,0x21,
+0x28,0x85,0x29,0x1C,0x21,0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0x0D,0x61,0x0C,
+0x0D,0x81,0x08,0x0D,0xC1,0x00,0xF1,0x97,0x08,0xCE,0xC1,0x40,0x10,0x01,0x1D,0x6C,
+0xFF,0x0D,0x21,0x14,0x0D,0xA1,0x04,0x5D,0xC3,0x00,0x5D,0x6B,0x00,0xFD,0x4A,0x0B,
+0xEC,0x4E,0xEE,0x5D,0x56,0xF7,0x01,0x22,0xE0,0xD4,0x8A,0xEB,0xE4,0x00,0x00,0x43,
+0xCC,0x77,0x00,0x30,0x1D,0xB7,0x01,0x8C,0x6A,0xCC,0x8D,0x00,0x30,0x9C,0x64,0x8C,
+0x8A,0x50,0xA0,0x30,0x9C,0x84,0xE4,0x00,0x50,0x46,0x5E,0xED,0x00,0xD5,0x97,0xFF,
+0x1D,0x12,0xEA,0x00,0x22,0xE0,0x20,0x9E,0xFF,0x1A,0xEA,0x00,0x21,0x60,0x30,0x9D,
+0x7F,0x5D,0x6B,0x00,0xE7,0xFF,0xFF,0x7B,0x12,0xEA,0x00,0x22,0xE0,0x52,0xC2,0xE0,
+0x10,0x01,0x9B,0x37,0xEB,0x17,0x08,0xE3,0x47,0x18,0xCC,0xEF,0x17,0x08,0xE3,0x0D,
+0xC1,0x02,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,
+0x16,0x1C,0x21,0x18,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xEB,0x37,
+0x01,0x50,0xFF,0x18,0x04,0x1C,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x76,0x23,0x24,
+0xA6,0x13,0x37,0x04,0x9A,0xE0,0x9F,0x21,0xE4,0x00,0x00,0x2F,0x4F,0x57,0x08,0x1F,
+0x77,0xFF,0x8F,0x58,0x4F,0x7B,0x10,0x9E,0xE1,0x0F,0x7A,0x01,0x5E,0xF7,0x00,0xD6,
+0xF9,0xFF,0x68,0xE4,0x00,0x00,0x9D,0x23,0x28,0x38,0x13,0x37,0x04,0x9A,0xE0,0x9F,
+0x21,0xE4,0x00,0x00,0x79,0x13,0x37,0x04,0x9A,0xE0,0x9F,0x21,0xE4,0x00,0x00,0x2F,
+0x4F,0x57,0x08,0xCF,0x77,0x00,0x06,0x8F,0x58,0x9F,0x79,0x9E,0xE1,0x0F,0x7A,0x01,
+0x5E,0xF7,0x00,0xD6,0xF9,0xFF,0x68,0xE4,0x00,0x00,0x35,0x4F,0x57,0x08,0x4F,0x77,
+0x08,0x8F,0x58,0x9F,0x7F,0x9E,0xE1,0x0F,0x7A,0x01,0x5E,0xF7,0x00,0xD6,0xF9,0xFF,
+0x70,0x85,0x29,0x9C,0x30,0x5C,0xC6,0x00,0x0D,0x61,0x08,0x0D,0x81,0x04,0x0D,0xA1,
+0x00,0x0D,0x41,0x0C,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,0x76,0x13,0xD8,0x04,0x40,
+0xC6,0xF3,0x5E,0xE6,0x00,0x5F,0xA3,0x06,0x8C,0x97,0x8C,0xB7,0x5F,0x7D,0x04,0x0A,
+0xF8,0x0B,0x11,0x58,0x0C,0x40,0xFB,0xBC,0x41,0x9B,0xBD,0xC1,0xA0,0x10,0x01,0xC3,
+0x00,0x10,0x01,0x5C,0xA5,0x00,0x4D,0x77,0x08,0x5C,0xE7,0x04,0x5D,0x8C,0x04,0x5C,
+0x84,0x00,0xFD,0xAD,0x04,0x1C,0xFF,0x18,0x09,0x68,0x53,0x20,0x64,0xE4,0x00,0x01,
+0x21,0x43,0x44,0x35,0x9F,0x41,0x4F,0x5A,0x08,0x8F,0x4D,0x09,0x1A,0x00,0x41,0x08,
+0xBB,0x41,0x08,0x50,0x5F,0x88,0x04,0x43,0x5C,0xDD,0x5F,0x5A,0x06,0x4C,0x7A,0xFA,
+0x47,0x43,0xD6,0x43,0x5A,0x1D,0xD6,0xFA,0x03,0x14,0xD5,0x7A,0x02,0x70,0x5D,0x08,
+0x06,0xD5,0x1D,0x00,0x58,0x43,0x9C,0x3D,0xE4,0x00,0x00,0x0F,0x43,0x8C,0xE5,0x5F,
+0x9C,0x06,0x4F,0x44,0x10,0x43,0x97,0xE5,0x8F,0x58,0xCF,0x9C,0x00,0x64,0x09,0x1A,
+0x00,0x43,0x9C,0xB8,0xC7,0x9C,0xFF,0xFF,0x41,0x1C,0x43,0x41,0x08,0xC8,0x0D,0x1A,
+0x01,0x4F,0x44,0x10,0x9F,0x42,0x8F,0x58,0x09,0x1A,0x00,0x43,0x9C,0x43,0x43,0x9C,
+0xC8,0x0F,0x9A,0x01,0xE4,0x00,0x00,0x29,0x4F,0x44,0x10,0x8F,0x58,0x0C,0x1A,0x01,
+0x4F,0x44,0x10,0x8F,0x58,0x0C,0x1A,0x03,0x9C,0x81,0x5C,0x84,0x00,0xD4,0x85,0xFB,
+0xA0,0xC2,0xE0,0x10,0x01,0x0D,0xA1,0x02,0xF0,0x77,0x0B,0x77,0x0D,0x81,0x06,0x0D,
+0x61,0x0A,0x0D,0x41,0x0E,0x40,0x7E,0x1B,0x1C,0x21,0x10,0xE4,0x00,0xA4,0xF9,0x5C,
+0x63,0x00,0x5C,0x84,0x00,0xC2,0xE0,0x10,0x01,0x43,0x64,0x1D,0xF2,0xF7,0x0B,0x7A,
+0x9F,0x61,0x40,0xA5,0xBB,0x5F,0x7B,0x00,0x5C,0xA5,0x00,0x20,0xE4,0x3E,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x0D,0x2C,0xE4,0x00,0x00,0x19,0xC2,0xE0,0x10,0x01,0xFE,0xF7,
+0x09,0x68,0x43,0x23,0x2C,0x9B,0x00,0x4F,0x39,0x10,0x9F,0x22,0x8F,0x37,0xC2,0xEF,
+0xFF,0xE1,0xCA,0xF7,0xFF,0xFF,0xE4,0x00,0x00,0x3D,0x0B,0x99,0xFE,0x0B,0x59,0x00,
+0x9F,0x24,0x8F,0x5C,0x4F,0x98,0x10,0x5E,0xFA,0x15,0x8F,0x86,0x4A,0xF7,0xD0,0x0F,
+0x5C,0x00,0x9F,0x01,0x5F,0x58,0x00,0xD7,0x7A,0xFF,0x1D,0x9B,0x00,0xE4,0x00,0x00,
+0x29,0x0F,0x26,0x02,0x9F,0x01,0x43,0x39,0xBD,0x5F,0x18,0x00,0x0F,0x26,0x00,0x9C,
+0xC4,0xD7,0x78,0xFF,0x85,0x85,0x29,0x1C,0x21,0x88,0x0D,0x41,0x70,0x0D,0x61,0x6C,
+0x5D,0x44,0x00,0x0D,0x81,0x68,0x5C,0x85,0x00,0x0D,0xA1,0x64,0x88,0xA6,0x41,0xA4,
+0x55,0x0D,0x21,0x74,0x89,0x83,0x88,0xC1,0x88,0x6A,0xE7,0xFF,0xFE,0xAA,0xC2,0xE0,
+0x10,0x01,0x9D,0xA1,0xEB,0x57,0x01,0x50,0x9B,0x20,0x5D,0xAD,0x00,0x8B,0x19,0x9A,
+0xE0,0x89,0x61,0xE4,0x00,0x00,0x5B,0x4F,0x79,0x10,0x43,0x99,0x54,0x8F,0x6B,0x0F,
+0x7B,0x02,0x8E,0xFB,0x23,0x44,0x54,0x23,0x48,0x36,0xCF,0x9C,0x00,0x06,0x9F,0x9F,
+0xE4,0x00,0x00,0x13,0x4F,0x9C,0x08,0x9F,0x81,0x43,0x7C,0xDB,0x9F,0x21,0x8F,0x1B,
+0x5F,0x79,0x00,0xD5,0xBB,0xFE,0xA5,0x26,0xE1,0x34,0xC3,0x20,0x10,0x01,0xEB,0x39,
+0x0B,0x81,0x43,0x18,0xCB,0x23,0x44,0x32,0x4F,0x37,0x0A,0x8F,0x19,0xE4,0x00,0x00,
+0x35,0x23,0x48,0x46,0xCF,0x37,0x00,0x03,0xCE,0xF7,0x00,0x06,0x8F,0x19,0xE4,0x00,
+0x00,0x13,0x8F,0x17,0x4E,0xF7,0x08,0x42,0xF8,0xB8,0xC2,0xE0,0xFF,0xE8,0xCB,0x00,
+0x07,0xFF,0x98,0x61,0x4A,0xF7,0xC0,0x5E,0xFF,0xF9,0x4A,0xF7,0x00,0x0E,0xEC,0x01,
+0xE4,0x00,0x00,0x0D,0x98,0x60,0x0D,0xA1,0x66,0x0D,0x81,0x6A,0x0D,0x61,0x6E,0x0D,
+0x41,0x72,0x0D,0x21,0x76,0x1C,0x21,0x78,0x85,0x29,0xFC,0x21,0xFF,0x78,0xED,0x41,
+0x00,0x80,0x0D,0x81,0x78,0x0D,0xA1,0x74,0x0D,0xC1,0x70,0x0D,0xE1,0x6C,0x0E,0x01,
+0x68,0x0E,0xC1,0x64,0xED,0x21,0x00,0x84,0x0D,0x61,0x7C,0xC1,0x40,0x10,0x01,0xFD,
+0x4A,0x0B,0x76,0x11,0x6A,0x04,0x4E,0xEB,0x08,0x9E,0xE8,0xC6,0xF7,0x03,0xF8,0xFE,
+0xC1,0x00,0x88,0x5D,0xC4,0x00,0x5D,0xA5,0x00,0x8A,0x03,0x5C,0xA6,0x00,0x89,0xE1,
+0x41,0x65,0x5B,0x40,0x21,0xBD,0x88,0x6E,0x88,0x8D,0xFC,0xD6,0xFF,0x78,0xE7,0xFF,
+0xFC,0xA2,0xC3,0x40,0x10,0x01,0x89,0x81,0x5D,0x6B,0x00,0x13,0x2A,0x04,0x9A,0xE0,
+0xFF,0x5A,0x04,0x1C,0xE4,0x00,0x00,0x29,0x4F,0x17,0x08,0x9E,0xE1,0x43,0x6C,0xC4,
+0x8F,0x1A,0x0B,0x18,0x03,0x0F,0x1B,0x01,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x6D,0x43,
+0x4B,0x74,0x8D,0xAB,0x5F,0x5A,0x00,0x5D,0xAD,0x00,0x9A,0xE0,0x1F,0x2D,0x01,0x43,
+0x39,0xD5,0x5F,0x39,0x00,0xE4,0x00,0x00,0x33,0x4F,0x77,0x10,0xFF,0x96,0xFF,0x78,
+0x8F,0x7C,0x0F,0x7B,0x02,0x27,0x60,0x4A,0xD5,0xB8,0x03,0x19,0x9E,0xE1,0x5F,0x17,
+0x00,0xD7,0x38,0xFF,0x45,0x8B,0x1A,0x1F,0x36,0xD8,0x1F,0x76,0xD8,0x4E,0xF8,0x10,
+0x8E,0xF9,0x0F,0x37,0xA2,0x1E,0xF8,0x01,0x43,0x39,0xCB,0x4E,0xF7,0x10,0x8E,0xFB,
+0x0E,0xF7,0xA2,0x42,0xF7,0xBB,0x5F,0x37,0x15,0x4B,0x77,0xC8,0x27,0x60,0xBC,0x8F,
+0x1A,0x0B,0x6A,0x0B,0x41,0x78,0x5D,0x13,0x4A,0x0C,0x4D,0x6B,0x08,0x98,0x61,0x8D,
+0x8B,0x0B,0x0C,0x00,0x43,0x18,0xDB,0x43,0x77,0xDB,0x43,0x18,0xD0,0x8E,0xF9,0x42,
+0xFB,0xB8,0x8E,0xF8,0x0E,0xF0,0x01,0xE4,0x00,0x00,0x0D,0x98,0x60,0x88,0x2F,0x0E,
+0xC1,0x66,0x0E,0x01,0x6A,0x0D,0xE1,0x6E,0x0D,0xC1,0x72,0x0D,0xA1,0x76,0x0D,0x81,
+0x7A,0x0D,0x61,0x7E,0xED,0x41,0x00,0x82,0xED,0x21,0x00,0x86,0xFC,0x21,0x00,0x88,
+0x85,0x29,0x1C,0x21,0xB8,0x0D,0x41,0x40,0xC1,0x40,0x10,0x01,0x0D,0x61,0x3C,0x0D,
+0x81,0x38,0x0D,0xC1,0x30,0x0E,0x41,0x20,0x0E,0x61,0x1C,0x0E,0x81,0x18,0x0E,0xA1,
+0x14,0x0E,0xC1,0x10,0x0D,0x21,0x44,0x0D,0xA1,0x34,0x0D,0xE1,0x2C,0x0E,0x01,0x28,
+0x0E,0x21,0x24,0x5E,0x63,0x00,0x5E,0x44,0x00,0xC1,0xC0,0x10,0x01,0xF0,0x8A,0x0B,
+0x76,0xFD,0xCE,0x0C,0xB8,0x98,0xA0,0x88,0x6E,0x99,0x80,0x8A,0xCA,0xE4,0x00,0x9F,
+0xA0,0xC1,0x40,0x10,0x01,0x89,0x6C,0xC2,0xA0,0x10,0x01,0x9A,0x81,0xFD,0x4A,0x0B,
+0xEC,0xE4,0x00,0x01,0x19,0xCC,0x6B,0x00,0x30,0xEA,0xF5,0x08,0x9F,0x41,0xA3,0x54,
+0x56,0xF7,0x02,0x12,0x2D,0x04,0x12,0x0D,0x05,0x11,0xED,0x07,0x22,0xE1,0x0C,0x1C,
+0x61,0x04,0x88,0x91,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFA,0xDA,0x20,0x61,
+0x14,0x1C,0x61,0x06,0x88,0x91,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFC,0x5C,
+0x20,0x60,0xCC,0x0B,0x01,0x04,0xCF,0x18,0x00,0x07,0x0A,0xE1,0x06,0xCE,0xF7,0x00,
+0x03,0x8E,0xF8,0x9B,0x0A,0x42,0xF7,0xC0,0x0E,0xED,0x17,0xE4,0x00,0x00,0x43,0x8C,
+0x6A,0x88,0x91,0x1C,0x63,0x16,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFA,0x56,
+0x20,0x60,0x32,0x4E,0xF4,0x5C,0x45,0x8C,0xBD,0x5D,0x8C,0x00,0x88,0x6E,0xF0,0x96,
+0x0B,0x76,0x98,0xA1,0x9D,0x61,0xE4,0x00,0x9E,0x6E,0x5D,0x6B,0x00,0x12,0xEA,0x00,
+0xD6,0xEB,0xFB,0xAD,0x88,0x6C,0xE7,0xFF,0xF4,0x7A,0x12,0xEA,0x00,0x22,0xE0,0x6C,
+0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x8B,0x56,0xF7,0x40,0x22,0xE0,0x34,0xC2,0xE0,
+0x10,0x01,0xEE,0xF7,0x03,0xE6,0x86,0xE8,0xC2,0xE0,0x10,0x01,0x88,0x6E,0xF0,0x97,
+0x0B,0x76,0x98,0xA1,0xE4,0x00,0x9D,0xF2,0xC2,0xE0,0x10,0x01,0x99,0x80,0xEA,0xF7,
+0x08,0x8B,0x89,0x6C,0x56,0xF7,0x80,0x99,0xA1,0x22,0xE0,0xFC,0xC2,0xE0,0x10,0x01,
+0xEE,0xF7,0x03,0xFA,0x86,0xE8,0xE4,0x00,0x00,0x7F,0xCE,0xEB,0x00,0x30,0x40,0x6A,
+0xBC,0x8A,0xE3,0x88,0x83,0x10,0xB7,0x04,0x1C,0x63,0x18,0x9C,0x8C,0x10,0xD7,0x05,
+0x10,0xF7,0x07,0xE7,0xFF,0xEF,0xDC,0x20,0x60,0x32,0x4E,0xED,0x5C,0x45,0x8C,0xBD,
+0x5D,0x8C,0x00,0x9D,0x61,0x5D,0x6B,0x00,0x12,0xEA,0x00,0xD6,0xEB,0xFE,0x7D,0x88,
+0x6C,0xE7,0xFF,0xF3,0x64,0x22,0x61,0x5C,0x22,0x40,0xFE,0xE4,0x00,0x00,0xA3,0xCD,
+0x6C,0x00,0x30,0x8D,0x6A,0x0A,0xEB,0x16,0x0E,0xE1,0x08,0x0A,0xEB,0x18,0x1C,0x61,
+0x08,0x0E,0xE1,0x0C,0x1C,0x81,0x0C,0xEE,0xED,0x03,0xD2,0x0C,0xAB,0x0E,0x88,0xCE,
+0x86,0xE8,0x0E,0xE1,0x0A,0x9D,0x81,0x0E,0xEB,0x17,0x5D,0x8C,0x00,0x0E,0xE1,0x0E,
+0x0E,0xEB,0x19,0xE4,0x00,0x00,0x25,0xC1,0xC0,0x10,0x01,0x99,0x80,0xC1,0xA0,0x10,
+0x01,0xFD,0xCE,0x01,0x3C,0x12,0xEA,0x00,0xD6,0xEC,0xFD,0xBD,0xC2,0xE0,0x10,0x01,
+0x13,0x6A,0x00,0xEB,0x97,0x08,0x9F,0x9B,0x20,0xC2,0xE0,0x10,0x01,0x57,0x9C,0x01,
+0xFE,0xF7,0x0C,0x04,0xCB,0xA0,0x07,0xFF,0xE4,0x00,0x00,0x89,0x0B,0x57,0x01,0x13,
+0xD7,0xEF,0x5F,0x1A,0x06,0x47,0x18,0xC7,0x4F,0x18,0xFA,0x47,0x1A,0xC4,0x5F,0x58,
+0x06,0xC3,0x40,0xFF,0xE8,0x20,0x00,0x1D,0xFF,0x00,0x07,0xFF,0x0F,0x17,0x01,0x5F,
+0x58,0x06,0x23,0x80,0x48,0xCF,0x1A,0x03,0xFF,0x4F,0x5E,0x50,0x43,0x18,0xE8,0x8F,
+0x1A,0x0F,0x17,0x01,0x9F,0x21,0x1E,0xF7,0x30,0x5F,0x39,0x00,0xD7,0x3B,0xFE,0x06,
+0x0E,0xC1,0x12,0x0E,0xA1,0x16,0x0E,0x81,0x1A,0x0E,0x61,0x1E,0x0E,0x41,0x22,0x0E,
+0x21,0x26,0x0E,0x01,0x2A,0x0D,0xE1,0x2E,0x0D,0xC1,0x32,0x0D,0xA1,0x36,0x0D,0x81,
+0x3A,0x0D,0x61,0x3E,0x0D,0x41,0x42,0x0D,0x21,0x46,0x1C,0x21,0x48,0x85,0x29,0x1C,
+0x21,0xC8,0xC2,0xE0,0x10,0x01,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0E,0x61,0x0C,0x0E,
+0xC1,0x00,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,0x61,0x2C,0x0D,0xC1,0x20,0x0D,0xE1,
+0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,0x81,0x08,0x0E,0xA1,0x04,
+0xC1,0x80,0x10,0x01,0xF3,0x57,0x08,0xCE,0xFD,0x8C,0x0B,0xEC,0xC2,0xE0,0x10,0x01,
+0x1E,0xC1,0x38,0x89,0xA3,0x8A,0x61,0x18,0x0C,0x00,0xFE,0xF7,0x0B,0xF4,0x9B,0x00,
+0x9B,0x3F,0xE4,0x00,0x00,0x2B,0x0C,0x17,0x00,0x1B,0x37,0xFE,0x1B,0x37,0xFF,0x9F,
+0x01,0x1E,0xF7,0x30,0x5F,0x18,0x00,0xD7,0x1A,0xFF,0x7E,0xC1,0xE0,0x10,0x01,0xFD,
+0xEF,0x0B,0x76,0x12,0xEF,0x04,0x10,0x6F,0x01,0x40,0x63,0xBB,0xE4,0x00,0x99,0xF6,
+0x13,0x2F,0x04,0x4E,0xF9,0x10,0x9E,0xEA,0xC6,0xF7,0x07,0xF8,0xC3,0x60,0x10,0x01,
+0x40,0x21,0xBD,0x0A,0x0D,0x18,0x89,0x61,0x9B,0x00,0xCA,0xE0,0x20,0x00,0xFF,0x7B,
+0x0A,0x18,0xE4,0x00,0x00,0x3B,0x4F,0x58,0x10,0x9F,0x01,0x43,0x9A,0xDC,0x8F,0x4B,
+0x0E,0x3C,0x02,0x5E,0x37,0x15,0x0E,0x3A,0x00,0x4A,0xF1,0xB8,0x5E,0xF7,0x06,0x5F,
+0x58,0x00,0xD7,0x3A,0xFF,0x25,0x46,0x37,0xBF,0x99,0x40,0x4E,0x31,0xFA,0x89,0xCA,
+0x46,0x31,0xBC,0xC2,0x80,0x10,0x01,0x9A,0x42,0x8A,0xAC,0xE4,0x00,0x04,0x4B,0x0B,
+0x0D,0x18,0x21,0x41,0x32,0x0E,0xEB,0x02,0xD7,0x17,0x0E,0xEC,0x0F,0x0B,0x06,0xD6,
+0xF8,0x00,0x7C,0xD6,0xF8,0x0E,0x96,0x0F,0x0B,0x0A,0xD6,0xF8,0x0E,0x58,0x98,0x60,
+0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,0xFF,0xE5,0xE6,
+0xD0,0x60,0x0D,0xAA,0x12,0xEC,0x00,0x99,0x41,0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,
+0xEC,0x18,0x17,0x04,0x18,0x17,0x06,0x1A,0x57,0x05,0xE4,0x00,0x03,0x4F,0x21,0x45,
+0x56,0x0E,0xEB,0x06,0xD7,0x17,0x0C,0x8C,0x0F,0x0B,0x02,0xD7,0x17,0x0C,0x54,0x0F,
+0x0B,0x0A,0xD6,0xF8,0x00,0x7C,0xD6,0xF8,0x0B,0xFE,0x0F,0x0B,0x0E,0xD6,0xF8,0x0B,
+0xC0,0x98,0x61,0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,
+0xFF,0xE5,0x40,0xD0,0x60,0x0B,0x12,0x12,0xEC,0x00,0x9B,0x01,0x8E,0xEE,0x99,0x42,
+0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x18,0x17,0x04,0x1B,0x17,0x06,0x1A,0x57,0x05,0xE4,
+0x00,0x02,0xA5,0x25,0x45,0xC5,0x1F,0x37,0xFE,0xD7,0x2A,0x03,0x58,0x4E,0xEA,0x10,
+0x8E,0xEB,0x0E,0xF7,0x02,0xD7,0x17,0x09,0x84,0x1F,0x0A,0xFF,0x4F,0x18,0x10,0x8F,
+0x0B,0x0F,0x18,0x02,0xD6,0xF8,0x01,0x34,0xD6,0xF8,0x08,0xEE,0x1F,0x2A,0xFE,0x4F,
+0x39,0x10,0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x08,0x70,0x1F,0x4A,0x01,0x4F,0x5A,
+0x10,0x8F,0x4B,0x0F,0x5A,0x02,0xD7,0x59,0x07,0xF8,0x1F,0x2A,0x01,0x4F,0x39,0x10,
+0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x03,0x2C,0xD6,0xF9,0x07,0x66,0x1F,0x2A,0x02,
+0x4F,0x39,0x10,0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x06,0xE8,0xD7,0x19,0x06,0xC8,
+0xE4,0x00,0x00,0x95,0x4F,0x0A,0x10,0x1F,0x57,0xFE,0x0B,0x2D,0x18,0x8F,0x0B,0xD5,
+0x5A,0x03,0x6E,0x0F,0x18,0x02,0xD7,0x38,0x05,0xFC,0x1F,0x37,0xFF,0x4F,0x39,0x10,
+0x8F,0x2B,0x0F,0x39,0x02,0xD7,0x38,0x05,0x84,0x1F,0x37,0xFD,0x4F,0x39,0x10,0x8F,
+0x2B,0x0F,0x39,0x02,0xD7,0x19,0x00,0xB4,0xD7,0x19,0x04,0xEE,0x9E,0xFC,0x4E,0xF7,
+0x10,0x8E,0xEB,0x0E,0xF7,0x02,0xD7,0x17,0x04,0x78,0x88,0x6A,0x88,0x8B,0x88,0xB1,
+0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,0xFF,0xE3,0x6E,0x20,0x61,0xE4,0x12,
+0xEC,0x00,0x1F,0x0A,0xFF,0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x19,0x57,0x06,
+0x1B,0x17,0x04,0x9D,0x41,0x5D,0x4A,0x00,0xE4,0x00,0x00,0xAD,0x0E,0xF8,0x02,0xD7,
+0x37,0x02,0xB4,0x1F,0x0A,0xFF,0x4F,0x18,0x10,0x8F,0x0B,0x0F,0x18,0x02,0xD6,0xF8,
+0x00,0xBC,0xD6,0xF8,0x02,0x1E,0x1F,0x0A,0xFE,0x4F,0x18,0x10,0x8F,0x0B,0x0F,0x18,
+0x02,0xD6,0xF8,0x01,0xA0,0x88,0x6A,0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,
+0x09,0x0D,0x1E,0xE7,0xFF,0xE2,0xB8,0x20,0x60,0x78,0x12,0xEC,0x00,0x1F,0x0A,0xFE,
+0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x1B,0x17,0x04,0x19,0x57,0x06,0x19,0x57,
+0x05,0xE4,0x00,0x00,0x21,0x9D,0x41,0x5D,0x4A,0x00,0x12,0xEF,0x04,0xD6,0xEA,0xF0,
+0x95,0x12,0xEF,0x04,0xD6,0xEA,0x01,0x61,0x12,0xEC,0x00,0x8E,0xEE,0xCE,0xF7,0x00,
+0x30,0x43,0x17,0x64,0x13,0x18,0x05,0xD5,0x58,0x00,0x55,0x1D,0x58,0x01,0x5D,0x4A,
+0x00,0x8E,0xF5,0x9B,0x01,0x9D,0xC1,0x18,0x17,0x07,0x0F,0x17,0x08,0x5D,0xCE,0x00,
+0x12,0xEF,0x04,0xD6,0xEA,0x00,0x61,0xF2,0xF4,0x08,0xCE,0xD6,0xEE,0xFD,0xFC,0x12,
+0xEC,0x00,0x8D,0xD7,0x19,0xCC,0x00,0x88,0x33,0x0E,0xC1,0x02,0x0E,0xA1,0x06,0x0E,
+0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,
+0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,
+0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,
+0xF8,0x77,0x04,0x64,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x0B,0x81,0xEE,0xF8,0x04,0x5D,
+0xC3,0x00,0x10,0x01,0xCF,0x37,0x00,0x05,0x4E,0xF7,0x10,0xEF,0x38,0x04,0x5B,0xC3,
+0x00,0x10,0x01,0xEE,0xF8,0x04,0x59,0x85,0x29,0x5C,0x63,0x06,0x20,0x84,0x5A,0x0B,
+0x05,0x00,0x0B,0x25,0x02,0x0B,0x45,0x04,0x0B,0x85,0x06,0x0B,0x65,0x08,0xE4,0x00,
+0x00,0x27,0x0B,0x05,0x0A,0x0B,0x25,0x0C,0x0B,0x45,0x0E,0x0B,0x85,0x10,0x0B,0x65,
+0x12,0xC2,0xE0,0x10,0x01,0x9B,0xA2,0xEA,0xF7,0x0B,0x81,0x43,0x9C,0xBB,0x43,0x9C,
+0xE8,0x43,0x80,0xE5,0xFF,0x9C,0x03,0xFF,0xD4,0x7C,0x00,0xC8,0x43,0x9B,0xBB,0x43,
+0xBC,0xE8,0xFF,0xBD,0x03,0xFF,0xD7,0xA3,0x01,0x08,0x5C,0x78,0x04,0xE4,0x00,0x00,
+0xE3,0x24,0x7C,0x58,0x43,0x03,0xC3,0x40,0x7C,0x1D,0x43,0x43,0xD3,0x40,0x78,0xD4,
+0x40,0x63,0xE0,0xE4,0x00,0x00,0xB1,0x9B,0x82,0x43,0x7B,0xBB,0x43,0x7B,0xE0,0xFF,
+0x9B,0x03,0xFF,0xD7,0x83,0x01,0x7C,0xC0,0x60,0xFF,0xEC,0x20,0x00,0xCD,0x43,0x60,
+0xDD,0xFE,0xFB,0xFC,0x01,0x8E,0xE3,0x43,0x37,0xCB,0xCA,0xE0,0x07,0xFF,0x40,0x77,
+0x1D,0xFF,0x7B,0x04,0x00,0x43,0x03,0xC3,0x40,0x79,0xC4,0x40,0x63,0xD8,0xE4,0x00,
+0x00,0x3B,0x24,0x7C,0x32,0x8C,0x77,0x40,0x63,0xD3,0xE4,0x00,0x00,0x1D,0xFF,0x17,
+0x07,0xFF,0x40,0x78,0x1D,0x40,0x63,0xCB,0x40,0x63,0xB8,0x5C,0x63,0x04,0x85,0x29,
+0x9C,0x38,0x0C,0x01,0x04,0xC3,0x00,0x10,0x01,0xC3,0x40,0x10,0x01,0xFF,0x18,0x0B,
+0x76,0xFF,0x9A,0x04,0x1C,0x0B,0x38,0x0B,0x0B,0xBC,0x00,0x13,0x18,0x0C,0x5F,0x79,
+0x06,0x5E,0xE3,0x06,0x43,0x7D,0xDB,0x43,0x7B,0xC0,0xD6,0xFB,0x00,0x4C,0x9B,0x41,
+0x0F,0x41,0x04,0x0F,0x41,0x06,0x98,0x7F,0x23,0x40,0x5E,0x0B,0x5C,0x02,0x43,0x5A,
+0xCB,0x43,0x5A,0xC0,0xD7,0x57,0x00,0x58,0x9B,0x41,0x98,0x60,0x0F,0x41,0x04,0x0F,
+0x41,0x06,0x23,0x41,0x1E,0xC3,0x40,0x10,0x01,0xC3,0x60,0x10,0x01,0xF3,0xBA,0x0B,
+0x7A,0xFF,0x7B,0x04,0x20,0x9B,0x41,0xE4,0x00,0x00,0x57,0x0B,0xDB,0xFE,0x43,0xDE,
+0xCB,0x43,0xDE,0xC0,0xD7,0xD7,0x00,0xD4,0x0B,0xDB,0x00,0x43,0xDE,0xCB,0x43,0xDE,
+0xC0,0xD7,0xD7,0x00,0x68,0x9B,0x41,0x0F,0x41,0x04,0xE4,0x00,0x00,0x1F,0x9F,0x41,
+0x9F,0x62,0x5C,0x7A,0x02,0xD7,0x5D,0xFE,0xB0,0x0F,0x41,0x06,0x23,0x40,0x9E,0xC3,
+0x40,0x10,0x01,0xF3,0x5A,0x0B,0x7A,0x9F,0x41,0x4F,0x7A,0x08,0x8F,0x9B,0x0B,0x7C,
+0x00,0x43,0x3B,0xCB,0x43,0x19,0xC0,0xD7,0x17,0x00,0x64,0x9A,0xE1,0x5C,0x7A,0x02,
+0x0E,0xE1,0x04,0x9C,0x28,0x85,0x29,0xC3,0x20,0x10,0x01,0x5C,0x63,0x06,0x5C,0xC6,
+0x02,0x5C,0xE7,0x00,0xFF,0x39,0x09,0x68,0x24,0xC0,0x98,0xC2,0xE0,0x10,0x01,0xF3,
+0x17,0x0B,0x7A,0xD4,0xD8,0x00,0xDC,0x43,0x18,0x3B,0x1E,0xE6,0xFF,0x8E,0xF8,0x4F,
+0x17,0x10,0x8F,0x19,0x0B,0x78,0x02,0x0B,0x58,0x00,0xE4,0x00,0x00,0x11,0x9B,0x40,
+0x8B,0x7A,0xC2,0xE0,0x10,0x01,0xF3,0x97,0x0B,0x7A,0xD7,0x86,0x01,0x08,0xD0,0xDF,
+0x04,0x28,0x42,0xFC,0x3B,0x8E,0xE6,0x4F,0x17,0x10,0x4E,0xF7,0x10,0x8F,0x19,0x8F,
+0x37,0x0B,0x18,0x02,0x0B,0xD9,0x00,0xE4,0x00,0x00,0x17,0x24,0xDD,0xA0,0x9B,0xC0,
+0x8B,0x1E,0xD4,0xDC,0x03,0x0C,0x4E,0xE6,0x08,0xC0,0xE0,0x10,0x01,0xFC,0xE7,0x04,
+0x1C,0x8E,0xE7,0x9C,0xC1,0x09,0x17,0x00,0x4C,0xC6,0x08,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x0B,0x76,0x8C,0xE6,0x0B,0x97,0x0B,0x13,0x37,0x0C,0x0A,0xE7,0x00,0x40,0xD7,
+0xE3,0x42,0xF7,0x45,0x43,0xA8,0xE3,0x40,0xC6,0xC8,0x43,0xBD,0xC8,0x43,0x97,0xE3,
+0x43,0xA3,0xED,0x43,0x3C,0xC8,0x40,0x66,0x1D,0x43,0x18,0xEB,0x43,0x7B,0x1B,0x42,
+0xFE,0xEB,0x8F,0x1B,0x40,0x7A,0x1B,0x43,0x18,0xC8,0x8E,0xE3,0x42,0xF7,0xC8,0xE4,
+0x00,0x00,0x11,0x9A,0xE0,0x8B,0x17,0x0F,0x04,0x01,0x0E,0xE5,0x01,0x85,0x29,0x1C,
+0x21,0xD8,0x0D,0x41,0x20,0x0D,0x61,0x1C,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x5D,0x84,
+0x00,0x0D,0xC1,0x10,0x0D,0xE1,0x0C,0x0E,0x01,0x08,0x5D,0xA5,0x00,0x5D,0x63,0x04,
+0x0C,0xC1,0x04,0x0D,0x21,0x24,0x89,0xE8,0x0D,0xC1,0x2A,0xC1,0x40,0x10,0x01,0x9A,
+0x02,0xFD,0x4A,0x0B,0x76,0x0C,0xE1,0x00,0x08,0x6A,0x0B,0x40,0x6C,0x1B,0x40,0x63,
+0x80,0x40,0x6B,0x1D,0xE7,0xFF,0xFC,0x38,0x0C,0x81,0x06,0x88,0xC3,0x5E,0xE3,0x02,
+0x0C,0xA1,0x02,0x26,0xFC,0x36,0x0C,0x04,0x01,0x0C,0x05,0x01,0xE4,0x00,0x00,0x2D,
+0x0A,0xEA,0x0B,0x42,0xEC,0xBB,0x88,0xED,0x40,0x77,0x80,0x40,0x6B,0x1D,0xE7,0xFF,
+0xFD,0x72,0x08,0x6A,0x0B,0x40,0x6C,0x1B,0x4C,0x63,0x0A,0x8C,0x6B,0xE7,0xFF,0xFB,
+0xC6,0x12,0xEA,0x04,0x88,0xC3,0x5F,0x03,0x02,0xD7,0x17,0x00,0x70,0x0C,0x0F,0x01,
+0x0C,0x0E,0x01,0xE4,0x00,0x00,0x69,0x08,0x6A,0x0B,0x41,0x8C,0x1B,0x88,0x8F,0x4C,
+0x6C,0x0A,0x88,0xAE,0x8C,0x6B,0x88,0xED,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,
+0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,
+0x1C,0x21,0x28,0xE7,0xFF,0xFC,0xC9,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,0x12,
+0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,0x1C,
+0x21,0x28,0x85,0x29,0x1C,0x21,0x90,0x0D,0x41,0x68,0x0D,0x81,0x60,0x0D,0xA1,0x5C,
+0x0D,0xE1,0x54,0x0E,0x01,0x50,0x0E,0x21,0x4C,0x0D,0x21,0x6C,0xC2,0x20,0x10,0x01,
+0x0D,0x61,0x64,0x0D,0xC1,0x58,0x0E,0x41,0x48,0x0E,0x61,0x44,0x0E,0x81,0x40,0x0E,
+0xA1,0x3C,0x0E,0xC1,0x38,0x89,0xA3,0x8A,0x04,0x89,0x85,0x5D,0xE6,0x00,0x99,0x40,
+0xFE,0x31,0x0B,0xEC,0xE4,0x00,0x00,0xA1,0xCF,0x0A,0x00,0x30,0x8F,0x11,0x1E,0xE1,
+0x20,0x10,0xB8,0x07,0x0B,0x98,0x17,0x43,0x2D,0x2C,0x4D,0x05,0x08,0x13,0x59,0x00,
+0x1F,0x61,0x38,0x8D,0x1A,0x9F,0x41,0x4D,0x08,0x08,0x1B,0x59,0x00,0x8F,0x68,0x08,
+0x78,0x17,0x0F,0x9B,0xD9,0x1F,0x01,0x30,0x8F,0x08,0x88,0x8F,0x0F,0x01,0x00,0x1C,
+0xC1,0x18,0x1C,0xE1,0x28,0x8C,0xC8,0x8C,0xE8,0x9D,0x41,0x8D,0x17,0x5D,0x4A,0x00,
+0xE7,0xFF,0xFD,0x1E,0x12,0xF1,0x00,0xD6,0xEA,0xFD,0x8D,0xC2,0xE0,0x10,0x01,0x8B,
+0x10,0xF2,0x57,0x04,0x64,0x9B,0x41,0x8A,0xED,0xE4,0x00,0x00,0x23,0x13,0x37,0x00,
+0x27,0x24,0x19,0x0F,0x58,0x00,0x9E,0xE1,0x9F,0x04,0x43,0x37,0x6D,0x5F,0x39,0x00,
+0xD6,0x59,0xFF,0x6D,0x99,0x60,0xC2,0x60,0x10,0x01,0x89,0x4B,0xC2,0x80,0x10,0x01,
+0xE4,0x00,0x03,0x07,0x42,0xF0,0x5C,0x0E,0xF7,0x02,0x22,0xE0,0x48,0x1E,0xE1,0x10,
+0x8E,0xEB,0x0B,0x57,0x00,0x0B,0x77,0x02,0xE4,0x00,0x01,0x5D,0x42,0xED,0x54,0x12,
+0xF7,0x00,0x22,0xE1,0xE0,0x1E,0xE1,0x18,0x8E,0xEB,0x0B,0x17,0x00,0x1E,0xE1,0x28,
+0x8E,0xEB,0x0A,0xF7,0x00,0x8E,0xF8,0x1F,0x01,0x30,0x8F,0x0B,0x0B,0x18,0x00,0x8E,
+0xF8,0x1F,0x01,0x20,0x8F,0x0B,0x0B,0x18,0x00,0x8E,0xF8,0x9B,0x04,0x42,0xF7,0xC0,
+0x0E,0xEC,0x00,0xE4,0x00,0x02,0x55,0xCE,0xEE,0x00,0x30,0x8E,0xF1,0x41,0x0E,0xCC,
+0x08,0x77,0x17,0x4D,0x08,0x08,0x1E,0xE1,0x30,0x8E,0xE8,0x0E,0xE1,0x00,0x1E,0xE1,
+0x20,0x0F,0x01,0x0C,0x0F,0x21,0x08,0x88,0x8F,0x88,0xB5,0x1C,0xC1,0x18,0x1C,0xE1,
+0x28,0x8C,0xC8,0x8C,0xE8,0x8D,0x17,0xE7,0xFF,0xFB,0x90,0x9D,0xC1,0x0F,0x01,0x0E,
+0x5D,0xCE,0x00,0x0F,0x21,0x0A,0xE4,0x00,0x00,0x23,0x9A,0xC1,0x99,0xC0,0x42,0xD6,
+0x55,0x4F,0x2A,0x08,0x43,0x0D,0xB4,0x12,0xF8,0x00,0xD6,0xEE,0xFD,0x6D,0x4E,0xD6,
+0x10,0x43,0x10,0xB4,0x0F,0x18,0x02,0xD3,0x00,0x05,0x0A,0x1F,0x01,0x38,0x8E,0xD8,
+0x0B,0x56,0xD8,0x0B,0x76,0xDA,0x43,0x3A,0xDD,0x5F,0x39,0x06,0x4E,0xF9,0xFA,0xEB,
+0x93,0x04,0x5B,0x47,0x37,0xCE,0x43,0x39,0xBD,0x52,0xE0,0x64,0x5F,0x39,0x06,0xD7,
+0x3C,0x00,0xF4,0xEB,0x14,0x04,0x59,0x9A,0xE0,0xD7,0x19,0x00,0xA4,0x42,0xF9,0xC5,
+0x43,0x1C,0xC5,0xCE,0xF7,0x00,0x64,0x42,0xF7,0xC0,0x5E,0xF7,0x00,0x5F,0x7A,0x15,
+0x4B,0x81,0x01,0x4F,0x2A,0x08,0x4B,0x00,0x0A,0x8F,0x19,0x8F,0x3C,0x1F,0x81,0x38,
+0x1F,0x41,0x38,0x53,0x60,0xC8,0x4F,0x39,0x08,0x43,0x7B,0xBD,0x8F,0x3C,0x0B,0x99,
+0xE0,0x4F,0x18,0x08,0x8F,0x1A,0x0B,0xB8,0xE8,0x0B,0x58,0xF8,0x8F,0x5D,0x8F,0x5C,
+0x0B,0x99,0xF0,0x8F,0x5C,0x43,0x5B,0xD3,0x0B,0x79,0xE8,0x0B,0x39,0xF8,0x8F,0x79,
+0x0B,0x38,0xE0,0x8F,0x79,0x0B,0x38,0xF0,0x43,0x1B,0xCC,0x42,0xF7,0xC3,0xCB,0x00,
+0x03,0x20,0x8E,0xFA,0xE7,0xFF,0xFD,0xF3,0x22,0xE0,0x88,0x1F,0x01,0x38,0x4E,0xEA,
+0x10,0x8E,0xF8,0x0B,0x17,0xF0,0x0B,0x37,0xE0,0x8F,0x38,0x0B,0x17,0xF8,0x8F,0x38,
+0x0B,0x17,0xE8,0x42,0xF9,0xC4,0xE7,0xFF,0xFD,0xAB,0x0C,0x0C,0x00,0x9D,0x41,0x9D,
+0x84,0x9D,0x64,0x5E,0xAA,0x00,0xD6,0x55,0xF3,0xF5,0x0E,0xC1,0x3A,0x0E,0xA1,0x3E,
+0x0E,0x81,0x42,0x0E,0x61,0x46,0x0E,0x41,0x4A,0x0E,0x21,0x4E,0x0E,0x01,0x52,0x0D,
+0xE1,0x56,0x0D,0xC1,0x5A,0x0D,0xA1,0x5E,0x0D,0x81,0x62,0x0D,0x61,0x66,0x0D,0x41,
+0x6A,0x0D,0x21,0x6E,0x1C,0x21,0x70,0x85,0x29,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x0D,
+0x61,0x0C,0x0D,0x81,0x08,0x0D,0xA1,0x04,0x0D,0x21,0x14,0x89,0xA3,0xC2,0xE0,0x10,
+0x01,0x5C,0x64,0x06,0xEA,0xF7,0x08,0x9F,0x5D,0x85,0x00,0x5D,0x66,0x00,0x5D,0x47,
+0x00,0x56,0xF7,0x04,0x22,0xE0,0x34,0x88,0x8C,0x88,0xAB,0x88,0xCA,0xE7,0xFF,0xE0,
+0xEC,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x0B,0x7A,0x43,0x0A,0xC3,0x5F,0x18,0x00,0x9B,
+0x20,0x42,0xF8,0x64,0x8D,0x78,0xC3,0x40,0x10,0x01,0x5D,0x6B,0x00,0x5E,0xF7,0x00,
+0x8B,0x19,0xFF,0x5A,0x09,0x68,0xE4,0x00,0x00,0x3B,0x4F,0x77,0x10,0x8F,0x7A,0x0B,
+0x7B,0x02,0x8F,0x1B,0x4F,0x77,0x10,0x9E,0xE1,0x8F,0x7A,0x5E,0xF7,0x00,0x0B,0x7B,
+0x00,0x8F,0x3B,0xD6,0xEB,0xFF,0x38,0x27,0x21,0x14,0x27,0x01,0x08,0xC2,0xE0,0x10,
+0x01,0xFE,0xF7,0x01,0x64,0x4F,0x39,0x40,0x9D,0x44,0x4D,0x4A,0x10,0x8D,0x57,0x0A,
+0xEA,0x06,0x43,0x19,0xC0,0x9B,0x4A,0xFF,0x18,0xFF,0x00,0x53,0x20,0x64,0x43,0x18,
+0xBB,0x0A,0xEA,0x04,0x43,0x18,0xD0,0x4E,0xF7,0x40,0x42,0xF7,0xC8,0x8E,0xF8,0x5E,
+0xE0,0x09,0x0E,0xED,0x00,0x48,0x61,0x01,0xE4,0x00,0x00,0x0D,0x98,0x60,0x0D,0xA1,
+0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,
+0x85,0x29,0xCA,0xE0,0x01,0x00,0xFC,0x21,0xFF,0x80,0x5C,0xE7,0x00,0x0D,0x41,0x78,
+0x0D,0x61,0x74,0x0D,0x81,0x70,0x0E,0x21,0x5C,0x0E,0x41,0x58,0x0E,0x61,0x54,0x0E,
+0x81,0x50,0x0E,0xA1,0x4C,0x0E,0xC1,0x48,0x0D,0x21,0x7C,0x0D,0xA1,0x6C,0x0D,0xC1,
+0x68,0x0D,0xE1,0x64,0x0E,0x01,0x60,0xCE,0x44,0x00,0x0A,0x42,0x52,0x1B,0x42,0x52,
+0xB8,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x76,0x11,0xD7,0x04,0x41,0x87,0x73,0x5F,
+0x0C,0x00,0xCC,0x84,0x0A,0x00,0x8C,0xB8,0x8C,0xD8,0xC2,0xA0,0x10,0x01,0xC2,0x20,
+0x10,0x01,0xC1,0x60,0x10,0x01,0xC3,0x00,0x10,0x01,0xFD,0x6B,0x09,0x68,0x42,0x64,
+0x18,0x5E,0x86,0x00,0x09,0xF7,0x0B,0x12,0x17,0x0C,0x5D,0x45,0x00,0xFE,0xB5,0x01,
+0x64,0xFE,0x31,0x04,0x1C,0x8A,0xCB,0xFF,0x18,0x0A,0x18,0xE4,0x00,0x01,0x61,0x0F,
+0x01,0x04,0x88,0x95,0x50,0xA0,0x3C,0x1C,0x61,0x08,0xE4,0x00,0x2C,0xFE,0x41,0xAA,
+0x65,0x1E,0xED,0x01,0x4E,0xF7,0x08,0x8E,0xF1,0x98,0x82,0x08,0x77,0x00,0x1C,0xA1,
+0x08,0x40,0x63,0x7B,0x40,0x63,0x80,0xE7,0xFF,0xF1,0x44,0x0F,0x01,0x06,0x5C,0x63,
+0x04,0xD5,0x4C,0x00,0x5E,0x1E,0xEE,0xFF,0xD5,0xB7,0x01,0x92,0xCB,0x20,0x03,0xE8,
+0x43,0x43,0x9B,0x4E,0xEA,0x10,0x43,0x63,0x93,0x9E,0xE2,0x43,0x7B,0xC8,0x8E,0xEB,
+0x0B,0x97,0x01,0x43,0x7C,0xDD,0x0F,0x77,0x01,0x43,0x3A,0xC8,0x4E,0xEA,0x10,0x8E,
+0xEB,0x0B,0x57,0x01,0x43,0x3A,0xCD,0x0F,0x37,0x01,0x4E,0xEA,0x08,0x1F,0x37,0x01,
+0x4F,0x59,0x08,0x8F,0x4B,0x0B,0x7A,0x00,0x27,0x7C,0x1A,0x0C,0x1A,0x01,0x4F,0x57,
+0x08,0x8F,0x56,0x0B,0x7A,0x00,0x27,0x7C,0x1A,0x0C,0x1A,0x01,0x4E,0xF7,0x08,0x8E,
+0xEB,0x4F,0x4A,0x10,0x0B,0x77,0x00,0x8F,0x58,0x4F,0x39,0x08,0x9D,0x41,0x8F,0x2B,
+0x5D,0x4A,0x00,0x0A,0xF9,0x00,0x8E,0xFB,0x0E,0xFA,0x00,0xD5,0x54,0xFA,0xA0,0x0E,
+0xC1,0x4A,0x0E,0xA1,0x4E,0x0E,0x81,0x52,0x0E,0x61,0x56,0x0E,0x41,0x5A,0x0E,0x21,
+0x5E,0x0E,0x01,0x62,0x0D,0xE1,0x66,0x0D,0xC1,0x6A,0x0D,0xA1,0x6E,0x0D,0x81,0x72,
+0x0D,0x61,0x76,0x0D,0x41,0x7A,0x0D,0x21,0x7E,0xFC,0x21,0x00,0x80,0x85,0x29,0x1C,
+0x21,0xB8,0x98,0x60,0x0D,0x21,0x44,0x0D,0x41,0x40,0x0D,0x61,0x3C,0x0D,0x81,0x38,
+0x0D,0xA1,0x34,0x0D,0xC1,0x30,0x0D,0xE1,0x2C,0x0E,0x01,0x28,0x0E,0x21,0x24,0x0E,
+0x41,0x20,0x0E,0x61,0x1C,0x0E,0x81,0x18,0x0C,0x01,0x08,0x0C,0x01,0x0C,0x18,0x01,
+0x02,0x18,0x01,0x03,0x0C,0x01,0x10,0x0C,0x01,0x14,0xE7,0xFF,0xD3,0x4C,0x1C,0x61,
+0x02,0x1C,0x81,0x10,0x1C,0xA1,0x08,0x98,0xC4,0xE7,0xFF,0xF5,0xD6,0xC2,0xE0,0x10,
+0x01,0xF3,0x97,0x04,0x64,0xC2,0xE0,0x10,0x01,0xEB,0xB7,0x08,0x87,0xC2,0xE0,0x10,
+0x01,0xEF,0x77,0x04,0x56,0xC2,0xE0,0x10,0x01,0x57,0xBD,0x20,0xEF,0xD7,0x04,0x62,
+0xC3,0x20,0x10,0x01,0x4F,0xBD,0x29,0x1E,0xE1,0x08,0xFF,0x39,0x01,0x84,0x9B,0x40,
+0xE4,0x00,0x00,0x63,0x0F,0x17,0x02,0x09,0x19,0xFC,0x0F,0x19,0x00,0x43,0x18,0x45,
+0x5F,0x1F,0xF9,0x4B,0x18,0x00,0x0F,0x17,0x00,0x23,0xA0,0x3C,0x23,0x60,0x30,0x43,
+0x18,0xF3,0x43,0x18,0xD8,0x0F,0x17,0x00,0x9F,0x41,0x9E,0xE4,0x5F,0x5A,0x00,0x9F,
+0x28,0xD7,0x5C,0xFE,0x9E,0x98,0x61,0x99,0x60,0xC2,0x20,0x10,0x01,0xC2,0x80,0x10,
+0x01,0xE7,0xFF,0xD2,0x3E,0x89,0x4B,0xFD,0xB1,0x0B,0xEC,0x9A,0x41,0xC2,0x60,0x10,
+0x01,0xFE,0x94,0x0C,0xB8,0xE4,0x00,0x00,0xF9,0xCE,0x0A,0x00,0x30,0x42,0xF0,0x6C,
+0x1C,0x61,0x04,0x11,0xF7,0x04,0x11,0xD7,0x05,0x11,0x97,0x07,0x08,0x97,0x17,0x88,
+0xAF,0x88,0xCE,0x88,0xEC,0xE7,0xFF,0xF9,0x88,0x20,0x60,0xF8,0x98,0x60,0xE7,0xFF,
+0xD1,0xC4,0x1F,0x01,0x18,0x4E,0xEC,0x10,0x8E,0xF8,0x88,0xAF,0x0C,0x97,0xF2,0x88,
+0xCE,0x88,0xEC,0x0C,0x61,0x06,0xE7,0xFF,0xFA,0xF8,0x98,0x61,0xE7,0xFF,0xD1,0x88,
+0x40,0x6D,0x84,0x88,0xAF,0x88,0x83,0x88,0xCE,0x1C,0x63,0x18,0x9C,0x8C,0x88,0xEC,
+0xE7,0xFF,0xD4,0x42,0x20,0x60,0x32,0x4E,0xF2,0x54,0x45,0x6B,0xBD,0x5D,0x6B,0x00,
+0x88,0x74,0xF0,0x93,0x0B,0x76,0x98,0xA1,0x9D,0x41,0xE4,0x00,0x81,0xA6,0x5D,0x4A,
+0x00,0xF2,0xF1,0x0B,0xEC,0xD6,0xEA,0xFC,0x25,0x88,0x6B,0xE7,0xFF,0xD7,0xB0,0x0D,
+0x21,0x46,0x0E,0x81,0x1A,0x0E,0x61,0x1E,0x0E,0x41,0x22,0x0E,0x21,0x26,0x0E,0x01,
+0x2A,0x0D,0xE1,0x2E,0x0D,0xC1,0x32,0x0D,0xA1,0x36,0x0D,0x81,0x3A,0x0D,0x61,0x3E,
+0x0D,0x41,0x42,0x1C,0x21,0x48,0x85,0x29,0xFC,0x21,0xFF,0x00,0x98,0xA0,0xED,0x41,
+0x00,0xF8,0xED,0x61,0x00,0xF4,0xED,0xC1,0x00,0xE8,0xED,0xE1,0x00,0xE4,0xEE,0x01,
+0x00,0xE0,0xEE,0x21,0x00,0xDC,0xEE,0x41,0x00,0xD8,0xEE,0x61,0x00,0xD4,0xED,0x21,
+0x00,0xFC,0xED,0x81,0x00,0xF0,0xED,0xA1,0x00,0xEC,0xEE,0x81,0x00,0xD0,0xEE,0xA1,
+0x00,0xCC,0xEE,0xC1,0x00,0xC8,0xC2,0x20,0x10,0x01,0xC2,0x60,0x10,0x01,0xFE,0x31,
+0x0C,0xB8,0xFD,0x73,0x0B,0x76,0x88,0x71,0x10,0x8B,0x00,0xE4,0x00,0x80,0x84,0xC2,
+0xE0,0x10,0x01,0xEA,0xF7,0x08,0x8B,0xC6,0xF7,0x02,0x00,0xC2,0x40,0x10,0x01,0x5E,
+0xE0,0x01,0xC1,0xE0,0x10,0x01,0x4A,0xE1,0x13,0xC1,0x40,0x10,0x01,0xC1,0xC0,0x10,
+0x01,0x0E,0xE1,0x0C,0x9A,0x00,0xFE,0x52,0x01,0x64,0xFD,0xEF,0x09,0x68,0xFD,0x4A,
+0x0A,0x18,0xFD,0xCE,0x0B,0xEC,0x98,0x60,0x0C,0x01,0x58,0x0C,0x01,0x5C,0x18,0x01,
+0x56,0x18,0x01,0x57,0x0C,0x01,0x60,0x0C,0x01,0x64,0xE7,0xFF,0xCF,0x6C,0x1C,0x61,
+0x56,0x1C,0x81,0x60,0x1C,0xA1,0x58,0x98,0xC3,0xE7,0xFF,0xF1,0xF6,0xC2,0xE0,0x10,
+0x01,0xEB,0x97,0x08,0x87,0xC2,0xE0,0x10,0x01,0xC3,0x20,0x10,0x01,0xEF,0x77,0x04,
+0x56,0xC2,0xE0,0x10,0x01,0xF3,0x59,0x04,0x64,0x57,0x9C,0x20,0xEF,0xB7,0x04,0x62,
+0x4F,0x9C,0x29,0x1E,0xE1,0x58,0x9B,0x20,0xE4,0x00,0x00,0x5D,0x0F,0xD7,0x02,0x4F,
+0x19,0x18,0x8F,0x12,0x0B,0x18,0x1C,0x43,0x1E,0xC5,0x5F,0x1F,0xF9,0x4B,0x18,0x00,
+0x0F,0x17,0x00,0x23,0x80,0x3C,0x23,0x60,0x30,0x43,0x18,0xEB,0x43,0x18,0xD8,0x0F,
+0x17,0x00,0x9F,0x21,0x9E,0xE4,0x5F,0x19,0x00,0xD7,0x58,0xFE,0x9D,0x13,0x0B,0x04,
+0x09,0xAB,0x0B,0x12,0x8B,0x0C,0x9A,0xA0,0xE4,0x00,0x01,0xA1,0xFE,0xE1,0x00,0xC8,
+0x8E,0xF5,0x12,0xF7,0x8E,0x22,0xE0,0x72,0xFF,0x61,0x00,0xC8,0x9A,0xE1,0x42,0xF7,
+0xAD,0x4E,0xF7,0x10,0x8E,0xFB,0x0F,0x37,0x92,0x4E,0xF5,0x10,0x8E,0xFB,0x0F,0x37,
+0x90,0x41,0x95,0xC3,0x1F,0xB5,0x01,0x5E,0xCC,0x00,0x43,0xBD,0xC3,0xE4,0x00,0x01,
+0x25,0x0F,0x01,0x00,0x0F,0x41,0x04,0x0F,0xA1,0x08,0x88,0x92,0x50,0xA0,0x3C,0x1C,
+0x61,0x10,0xE4,0x00,0x25,0x6E,0x42,0xF6,0x65,0xC3,0x80,0x10,0x01,0x9E,0xE1,0xFF,
+0x9C,0x04,0x1C,0x4E,0xF7,0x08,0x8E,0xFC,0x98,0x81,0x08,0x77,0x00,0x1C,0xA1,0x10,
+0x40,0x63,0x6B,0x40,0x63,0xA0,0xE7,0xFF,0xE9,0xA6,0x53,0x60,0x64,0x4E,0xF6,0x10,
+0x5C,0x63,0x04,0x4F,0x35,0x10,0xFD,0x21,0x00,0xC8,0x9E,0xE2,0x8F,0x29,0x8E,0xEF,
+0x0F,0x39,0x92,0x43,0x23,0xCB,0x43,0x39,0xD8,0x0B,0x77,0x01,0x5F,0x39,0x04,0x43,
+0x7B,0xCD,0x0F,0x77,0x01,0x0F,0xA1,0x0A,0x4F,0x76,0x10,0x0F,0x41,0x06,0x43,0x9B,
+0x7C,0x9E,0xC1,0x0B,0xDC,0x01,0x8F,0x6A,0x43,0x3E,0xCD,0x5E,0xD6,0x00,0x5F,0x39,
+0x06,0x0F,0x01,0x02,0x0F,0x3C,0x01,0x0A,0xF7,0x00,0x8F,0x37,0x0F,0x3B,0x00,0xD7,
+0xB6,0xFB,0x94,0x9E,0xA1,0x5E,0xB5,0x00,0xD7,0x55,0xF9,0xA5,0x98,0x61,0xE7,0xFF,
+0xCC,0xC4,0x13,0x6B,0x04,0x13,0x4B,0x01,0xC3,0x00,0x10,0x01,0x43,0x5A,0xDB,0x9A,
+0xE0,0xFF,0x18,0x0D,0x2C,0xE4,0x00,0x00,0x4F,0x4F,0x37,0x10,0x43,0x99,0xC4,0x8F,
+0x2F,0x0B,0x39,0x01,0x0F,0x3C,0x01,0x4F,0x37,0x10,0x9E,0xE1,0x9F,0x22,0x5E,0xF7,
+0x00,0x43,0x99,0xC4,0x8F,0x2F,0x0B,0x39,0x01,0x0F,0x3C,0x01,0xD7,0x57,0xFE,0xEC,
+0xC3,0x20,0x10,0x01,0x12,0x8E,0x00,0xFF,0x39,0x0B,0xF2,0x9B,0xA0,0x8B,0x19,0x8B,
+0xCA,0xE4,0x00,0x01,0x3D,0x1F,0x98,0x02,0x12,0xF8,0xFE,0x12,0xB8,0xFF,0x11,0x98,
+0x01,0x13,0x58,0x00,0x0D,0x1C,0x02,0x21,0x04,0x5E,0x43,0x8C,0xDB,0x8F,0x9A,0x4F,
+0x9C,0x10,0x8F,0x8A,0x0F,0x9C,0x02,0x41,0x8C,0xDB,0xE4,0x00,0x00,0xCD,0x4D,0xBA,
+0x10,0x43,0x9A,0xDC,0x8D,0xAA,0x4F,0x9C,0x10,0x0D,0xAD,0x02,0x8F,0x8A,0x0F,0x9C,
+0x02,0x8F,0x8D,0xE7,0xFF,0xFF,0xC9,0x21,0x04,0x5A,0x41,0xB7,0x64,0x4D,0xAD,0x10,
+0x8D,0xAA,0x0D,0xAD,0x02,0xD5,0xBC,0x01,0x94,0xE4,0x00,0x00,0x65,0x4D,0xB7,0x10,
+0x42,0xD7,0xDC,0x8D,0xBE,0x4E,0xD6,0x10,0x0D,0xAD,0x02,0x8E,0xDE,0x0E,0xD6,0x02,
+0x8E,0xCD,0xD6,0xDC,0x00,0xC8,0x43,0x57,0x64,0x4F,0x5A,0x10,0x8F,0x5E,0x0F,0x9A,
+0x02,0x8F,0x8D,0xE4,0x00,0x00,0x0D,0x8B,0x8D,0x8B,0x57,0x9E,0xE1,0x5E,0xF7,0x00,
+0xD6,0xF5,0xFD,0xB8,0x1B,0x58,0x00,0x9F,0xA1,0x1F,0x18,0x30,0x5F,0xBD,0x00,0xD7,
+0xB4,0xFB,0x36,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x0B,0x7A,0xC2,0xE0,0x10,0x01,0x1F,
+0x98,0xFF,0xF3,0x57,0x04,0x50,0x1F,0xB8,0xFD,0xC2,0xE0,0x10,0x01,0x1E,0xB8,0xFC,
+0x11,0x8E,0x00,0x5D,0x1C,0x00,0x1D,0xB8,0xFE,0xFE,0xF7,0x0B,0xF1,0x9B,0x60,0x8A,
+0x9C,0x5F,0xBD,0x00,0x5E,0xB5,0x00,0x9A,0xC2,0x1C,0x78,0xFD,0xE4,0x00,0x00,0xEB,
+0x13,0x17,0x01,0xD7,0x1C,0x00,0x76,0x19,0x17,0x00,0x18,0x77,0xFF,0xE4,0x00,0x00,
+0xB9,0x23,0x00,0x36,0x1A,0xD7,0x00,0x18,0x17,0xFF,0xE4,0x00,0x00,0x9F,0x23,0x04,
+0x56,0x5F,0x40,0x29,0x9F,0x1F,0x4B,0xC2,0x1B,0x1B,0x17,0xFF,0x1B,0xD7,0x00,0xE4,
+0x00,0x00,0x75,0xD7,0x0D,0x00,0x8E,0x5F,0x40,0x29,0x1A,0x97,0x00,0x4B,0xDD,0xA8,
+0xE4,0x00,0x00,0x4D,0x1F,0xD8,0x01,0x5F,0xDE,0x00,0x23,0x44,0x22,0x9F,0x02,0x5F,
+0xD8,0x00,0x1B,0xD7,0x00,0x13,0xD7,0x01,0x23,0x44,0x26,0x9F,0xDE,0xE4,0x00,0x00,
+0x0D,0x9F,0xDF,0x5F,0xDE,0x00,0x1B,0xD7,0xFF,0x9F,0x61,0x1E,0xF7,0x30,0x5F,0x7B,
+0x00,0xD7,0x6C,0xFC,0x7E,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x8B,0x56,0xF7,0x08,
+0xD2,0xE0,0x08,0x6A,0xC2,0xE0,0x10,0x01,0x9B,0x00,0xF3,0x57,0x0B,0x7A,0x9B,0xA0,
+0xC2,0xE0,0x10,0x01,0x1E,0xDA,0xFE,0xEA,0x97,0x01,0x56,0x8B,0x78,0x8B,0x9D,0x98,
+0x60,0x9A,0xA1,0xE4,0x00,0x01,0xBF,0x12,0xF9,0x00,0xD2,0xE1,0x06,0x99,0xD6,0xD7,
+0x06,0x78,0x1D,0x17,0xFF,0x1D,0xB7,0x01,0x1D,0x39,0x02,0x5D,0x08,0x00,0x5D,0xAD,
+0x00,0x0F,0xC9,0x02,0x23,0xC4,0xDE,0x13,0x79,0x01,0x43,0x7A,0xDB,0x5F,0x7B,0x00,
+0x8D,0xBB,0x8D,0x1B,0x8E,0xFB,0x4D,0xAD,0x10,0x4D,0x08,0x10,0x8D,0xAA,0x8D,0x0A,
+0x0F,0xAD,0x02,0x0F,0x88,0x02,0x4E,0xF7,0x10,0x5F,0xBC,0x15,0x8E,0xEA,0x4B,0x9D,
+0xE0,0x0F,0x77,0x02,0x5F,0x9C,0x06,0xE4,0x00,0x00,0xCD,0x23,0xC9,0xA2,0x13,0x79,
+0x01,0x43,0xBB,0xD3,0x5F,0xBD,0x00,0x43,0x8D,0xEC,0x4F,0x9C,0x10,0x8F,0x8A,0x43,
+0x75,0xDD,0x0F,0xDC,0x02,0x43,0x7A,0xDB,0x5F,0x7B,0x00,0x8D,0xBB,0x4D,0xAD,0x10,
+0x8D,0xAA,0x0F,0x8D,0x02,0x8F,0xDC,0x43,0x88,0xEC,0x4F,0x9C,0x10,0x8F,0x8A,0x8D,
+0x1B,0x0D,0xBC,0x02,0x8F,0xB7,0x4D,0x08,0x10,0x8E,0xFB,0x8D,0x0A,0x4F,0xBD,0x10,
+0x0F,0x88,0x02,0x8F,0xAA,0x8F,0x8D,0x4E,0xF7,0x10,0x5F,0xDC,0x15,0x8E,0xEA,0x4B,
+0x9E,0xE0,0x0F,0x7D,0x02,0x0E,0xF7,0x02,0x5F,0x9C,0x06,0x8F,0x77,0x8B,0xB4,0xE4,
+0x00,0x00,0x0F,0x23,0xC0,0x68,0xC3,0x60,0x7C,0xEC,0x20,0x00,0x4D,0x42,0xFB,0xE5,
+0xD7,0xB7,0x00,0x68,0x4E,0xF5,0xC4,0x44,0x63,0xBD,0x5C,0x63,0x00,0x9F,0x01,0x1F,
+0x39,0x30,0x5E,0xF8,0x00,0xD5,0x97,0xF9,0x15,0xE7,0xFF,0xCD,0xF4,0x1E,0xC1,0x68,
+0x10,0x8B,0x00,0x88,0x76,0x98,0xA0,0x99,0xA0,0xE4,0x00,0x77,0xA8,0x89,0x8D,0xC2,
+0x80,0x10,0x01,0xE4,0x00,0x01,0x3F,0xCC,0x6C,0x00,0x30,0xEB,0x74,0x08,0x9F,0x42,
+0xA3,0x74,0x57,0x7B,0x02,0x13,0x55,0x04,0x13,0x35,0x05,0x13,0x15,0x07,0x23,0x61,
+0x54,0x88,0x9A,0x88,0xB9,0x88,0xD8,0x0F,0x01,0x00,0x0F,0x21,0x08,0x0F,0x41,0x04,
+0x1C,0x61,0x52,0x98,0xE1,0xE7,0xFF,0xD2,0xE4,0x0F,0x01,0x02,0x0F,0x21,0x0A,0x0F,
+0x41,0x06,0x20,0x61,0x14,0x1C,0x61,0x54,0x88,0x9A,0x88,0xB9,0x88,0xD8,0x98,0xE1,
+0xE7,0xFF,0xD4,0x54,0x20,0x60,0xCC,0x0B,0x21,0x52,0x0B,0x01,0x54,0xCF,0x39,0x00,
+0x07,0xCF,0x18,0x00,0x03,0x9A,0xEA,0x8F,0x19,0x43,0x18,0xB8,0x0F,0x15,0x17,0xE4,
+0x00,0x00,0x47,0x8C,0x6E,0x88,0x9A,0x1C,0x63,0x16,0x88,0xB9,0x88,0xD8,0x98,0xE1,
+0xE7,0xFF,0xD2,0x4E,0x20,0x60,0x3A,0x9A,0xE1,0x4E,0xF7,0x64,0x45,0xAD,0xBD,0x5D,
+0xAD,0x00,0x88,0x76,0x10,0x8B,0x00,0x98,0xA1,0x9D,0x81,0xE4,0x00,0x76,0x64,0x5D,
+0x8C,0x00,0x12,0xEE,0x00,0xD6,0xEC,0xFB,0x15,0x88,0x6D,0xE7,0xFF,0xCC,0x70,0x9E,
+0x01,0x0F,0x21,0x0E,0x5E,0x10,0x00,0xD7,0x30,0xD8,0x7D,0x88,0x71,0x10,0x8B,0x00,
+0x98,0xA1,0xE4,0x00,0x76,0x16,0xED,0x21,0x00,0xFE,0xEE,0xC1,0x00,0xCA,0xEE,0xA1,
+0x00,0xCE,0xEE,0x81,0x00,0xD2,0xEE,0x61,0x00,0xD6,0xEE,0x41,0x00,0xDA,0xEE,0x21,
+0x00,0xDE,0xEE,0x01,0x00,0xE2,0xED,0xE1,0x00,0xE6,0xED,0xC1,0x00,0xEA,0xED,0xA1,
+0x00,0xEE,0xED,0x81,0x00,0xF2,0xED,0x61,0x00,0xF6,0xED,0x41,0x00,0xFA,0xFC,0x21,
+0x01,0x00,0x85,0x29,0xC2,0xE0,0x10,0x01,0x1C,0x21,0xA0,0xF3,0x37,0x06,0xA8,0x0D,
+0x41,0x5C,0x9A,0xE0,0xE4,0x00,0x00,0x23,0x4F,0x17,0x10,0x1D,0x41,0x00,0x9E,0xE1,
+0x8F,0x0A,0x0C,0x18,0x00,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x85,0xC2,0xE0,0x10,0x01,
+0xC3,0x60,0x10,0x01,0xEB,0x57,0x04,0x93,0x1D,0x19,0xFF,0x9A,0xE0,0xFF,0x7B,0x04,
+0xC8,0xE4,0x00,0x00,0xFB,0x9B,0x80,0xD6,0xE8,0x00,0x4A,0x9F,0x01,0x5F,0x98,0x00,
+0x9B,0x00,0x4F,0xB7,0x28,0x4F,0x9C,0x28,0xE4,0x00,0x00,0x5B,0x4F,0xD8,0x08,0x40,
+0xDD,0xC4,0x40,0xBC,0xC4,0x1D,0x41,0x58,0x4C,0xC6,0x08,0x8F,0xCA,0x8C,0xDB,0x4C,
+0xA5,0x08,0x08,0xC6,0x01,0x8C,0xBB,0x9F,0x01,0x08,0xA5,0x01,0x5F,0x18,0x00,0x40,
+0xA6,0x2D,0x0C,0xBE,0xC1,0xD7,0x58,0xFE,0xBD,0x4F,0x97,0x10,0x1F,0xA1,0x58,0x9B,
+0x00,0x8F,0x9D,0xE4,0x00,0x00,0x4B,0x4F,0xB8,0x08,0x1F,0xC1,0x58,0x8F,0xBE,0x0C,
+0xBC,0xAA,0x0B,0xDD,0xC0,0x9F,0x01,0x4F,0xBE,0xFA,0x5F,0x18,0x00,0x47,0xDD,0xF6,
+0x43,0xBE,0xED,0x8F,0xA5,0x0F,0xBC,0xA8,0xD7,0x58,0xFE,0xFD,0x9E,0xE1,0x5F,0x17,
+0x00,0xD7,0x38,0xFC,0x25,0x0F,0x41,0x02,0x1F,0x61,0x04,0x9B,0x01,0x9A,0xE0,0xE4,
+0x00,0x00,0x39,0x0F,0x9B,0x02,0xD7,0x5C,0x00,0x55,0x8B,0x9A,0xE4,0x00,0x00,0x0D,
+0x8A,0xF8,0x9F,0x01,0x9F,0x64,0x5F,0x18,0x00,0x8B,0x5C,0xD7,0x38,0xFF,0x45,0x9F,
+0x3F,0xD6,0xF9,0x00,0x76,0x1A,0xE3,0x00,0x18,0x04,0x00,0xE4,0x00,0x00,0x21,0xD7,
+0x37,0x00,0x60,0x1A,0xE3,0x00,0x9E,0xE1,0x1A,0xE4,0x00,0x0D,0x41,0x5E,0x1C,0x21,
+0x60,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0xB7,0x06,0xA8,0xC2,0xE0,0x10,0x01,0xF3,
+0xD7,0x04,0x88,0xC2,0xE0,0x10,0x01,0xC3,0x40,0x10,0x01,0xE9,0x17,0x04,0x93,0xC3,
+0x20,0x10,0x01,0x9A,0xE0,0xFF,0x5A,0x04,0xC8,0xFF,0x39,0x06,0x48,0xE4,0x00,0x00,
+0xAB,0x4C,0x78,0x08,0x4C,0x98,0x18,0x8C,0x7B,0x8C,0x9C,0x9F,0x01,0x08,0x84,0x01,
+0x0C,0x83,0x01,0x5C,0x78,0x00,0xD7,0xC3,0xFF,0x5D,0x9B,0x00,0x4F,0x97,0x28,0x4C,
+0x77,0x18,0xE4,0x00,0x00,0x4F,0x43,0x7C,0xC4,0x4C,0x98,0x11,0x4F,0x7B,0x08,0x8C,
+0x83,0x8F,0x7A,0x4C,0x84,0x08,0x08,0xBB,0x01,0x8C,0x99,0x9F,0x01,0x08,0x84,0x01,
+0x5F,0x18,0x00,0x40,0x85,0x25,0x0C,0x9B,0x01,0xD5,0x18,0xFE,0xED,0x9E,0xE1,0x5E,
+0xF7,0x00,0xD6,0xFD,0x00,0xA2,0x4F,0x97,0x30,0x4F,0x77,0x20,0x8F,0x9A,0x8F,0x79,
+0x9B,0x00,0xE7,0xFF,0xFF,0x63,0x85,0x29,0xC2,0xE0,0x10,0x01,0x5C,0x63,0x00,0x5C,
+0x84,0x00,0xEB,0x97,0x04,0x93,0xC3,0x00,0x10,0x01,0x4F,0xA3,0x28,0xC3,0x20,0x10,
+0x01,0x4F,0xC4,0x28,0x9A,0xE0,0xFF,0x18,0x04,0xC8,0xFF,0x39,0x06,0x48,0x4C,0x63,
+0x18,0x4C,0x84,0x18,0xE4,0x00,0x00,0x83,0x4F,0x77,0x11,0x41,0x03,0xDC,0x4D,0x08,
+0x08,0x8D,0x19,0x43,0x5D,0xBC,0x08,0xA8,0x01,0x4F,0x5A,0x08,0x8F,0x64,0x8F,0x58,
+0x4F,0x7B,0x08,0x09,0x1A,0x01,0x8F,0x79,0x8D,0x05,0x0D,0x1A,0x01,0x43,0x5E,0xBC,
+0x09,0x1B,0x01,0x4F,0x5A,0x08,0x9E,0xE1,0x8F,0x58,0x5E,0xF7,0x00,0x0B,0x7A,0x01,
+0x8F,0x68,0x0F,0x7A,0x01,0xD7,0x97,0xFE,0x1D,0x85,0x29,0x20,0x60,0x2E,0xC2,0xE0,
+0x10,0x01,0xEC,0x97,0x01,0x2C,0x85,0x29,0x20,0x60,0x4E,0xC2,0xE0,0x10,0x01,0xEC,
+0x97,0x00,0xF4,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x01,0x28,0x85,0x29,0x20,0x60,0x5E,
+0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0x98,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x04,0x9C,
+0xE4,0x00,0x00,0x5D,0x20,0x64,0x5E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x06,0xB4,0xC2,
+0xE0,0x10,0x01,0xEC,0xB7,0x04,0xC4,0xE4,0x00,0x00,0x2F,0x20,0x68,0x4E,0xC2,0xE0,
+0x10,0x01,0xEC,0x97,0x04,0xBC,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x04,0x8C,0x85,0x29,
+0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0xB8,0x85,0x29,0x5C,0x84,0x04,
+0x20,0x60,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x33,0xE4,0x00,0x00,0x3D,0x20,
+0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x15,0xE4,0x00,0x00,0x1F,0x20,0x68,
+0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x39,0x85,0x29,0x5C,0x84,0x04,0x20,0x60,
+0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x00,0xF9,0xE4,0x00,0x00,0x3D,0x20,0x64,0x3E,
+0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x31,0xE4,0x00,0x00,0x1F,0x20,0x68,0x2E,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x01,0x11,0x85,0x29,0x5C,0x84,0x04,0x20,0x68,0x2E,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x01,0x13,0x85,0x29,0x1C,0x21,0xC8,0x0D,0x21,0x34,0x0D,
+0x41,0x30,0x0D,0x61,0x2C,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,0xE1,
+0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,0x61,0x0C,0x0E,0x81,0x08,
+0x0E,0xA1,0x04,0x0E,0xC1,0x00,0x20,0x65,0x70,0x20,0x60,0x4C,0xD0,0x62,0x04,0x42,
+0x99,0xC0,0x89,0xEE,0xD0,0x63,0x06,0x66,0xE4,0x00,0x01,0x71,0xC2,0xE0,0x10,0x01,
+0xEE,0xD7,0x00,0xF6,0xC2,0xE0,0x10,0x01,0xEE,0xB7,0x01,0x2A,0xC2,0xE0,0x10,0x01,
+0xEE,0x97,0x04,0x9A,0xC2,0xE0,0x10,0x01,0xEE,0x77,0x04,0x9E,0xC2,0xE0,0x10,0x01,
+0xE9,0xF7,0x01,0x33,0xC2,0xE0,0x10,0x01,0x9A,0x00,0xE9,0xD7,0x00,0xF9,0x99,0xA0,
+0xC2,0xE0,0x10,0x01,0x9A,0x21,0xED,0x77,0x01,0x2E,0x9A,0x45,0x89,0x90,0xE4,0x00,
+0x00,0xD9,0xC2,0xE0,0x10,0x01,0xEE,0x97,0x06,0xB6,0xC2,0xE0,0x10,0x01,0xEE,0x77,
+0x04,0xC6,0xC2,0xE0,0x10,0x01,0x99,0xA0,0xE9,0xF7,0x01,0x15,0x9A,0x00,0xC2,0xE0,
+0x10,0x01,0x8A,0x2D,0xE9,0xD7,0x01,0x31,0x9A,0x40,0x99,0x61,0x89,0x90,0x9A,0xA0,
+0xE4,0x00,0x00,0x71,0xC2,0xE0,0x10,0x01,0xEE,0x97,0x04,0xBE,0xC2,0xE0,0x10,0x01,
+0xEE,0x17,0x04,0xBA,0xC2,0xE0,0x10,0x01,0xE9,0xF7,0x01,0x39,0xC2,0xE0,0x10,0x01,
+0x99,0x81,0xE9,0xD7,0x01,0x11,0x9A,0x21,0xC2,0xE0,0x10,0x01,0x9A,0x40,0xE9,0xB7,
+0x01,0x13,0x99,0x61,0x9A,0x60,0x8A,0xAC,0x9A,0xC1,0x99,0x41,0xE4,0x00,0x00,0x55,
+0xC2,0xE0,0x10,0x01,0xE9,0xF7,0x01,0x33,0xC2,0xE0,0x10,0x01,0xE9,0xD7,0x00,0xF9,
+0x99,0xA0,0x9A,0x40,0x9A,0x00,0x9A,0x80,0x9A,0xA0,0x8A,0x2D,0x89,0x72,0x8A,0x70,
+0x89,0x94,0x8A,0xD5,0x99,0x40,0x88,0x6A,0xE4,0x00,0xC6,0x08,0x88,0x6A,0xE4,0x00,
+0xC6,0x8A,0x88,0x76,0xE4,0x00,0xD6,0x7C,0x88,0x75,0xE4,0x00,0xD6,0xD6,0x88,0x74,
+0xE4,0x00,0xC7,0xEA,0x88,0x73,0xE4,0x00,0xC8,0x36,0x88,0x72,0xE4,0x00,0xC7,0x38,
+0x88,0x71,0xE4,0x00,0xC7,0x64,0x88,0x6A,0xE4,0x00,0xD7,0xF8,0x88,0x70,0xE4,0x00,
+0xD8,0x52,0x98,0x60,0xE4,0x00,0xD8,0xA0,0x98,0x60,0xE4,0x00,0xD8,0xEE,0x98,0x60,
+0xE4,0x00,0xD9,0x3C,0x98,0x60,0xE4,0x00,0xD9,0x8A,0x88,0x6F,0xE4,0x00,0xC8,0x30,
+0x88,0x6E,0xE4,0x00,0xC8,0x5E,0x88,0x6D,0xE4,0x00,0xC8,0x92,0x88,0x6C,0xE4,0x00,
+0xC8,0xAC,0x88,0x6B,0x0E,0xC1,0x02,0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,
+0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,
+0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,
+0x38,0xE4,0x00,0xC5,0xF5,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x04,0xB4,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xF8,0x77,0x04,0xB4,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x04,
+0xB4,0x9F,0x01,0xFB,0x17,0x04,0xB4,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,
+0xA9,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x06,0xA9,0x85,0x29,0xC2,0xE0,0x10,
+0x01,0xF3,0x17,0x06,0xA9,0x9F,0x01,0xFB,0x17,0x06,0xA9,0x85,0x29,0xC2,0xE0,0x10,
+0x01,0xEC,0x77,0x01,0x0C,0x85,0x29,0xC3,0x40,0x10,0x01,0xFF,0x5A,0x00,0xFC,0x0C,
+0x1A,0x00,0x9A,0xE1,0xC3,0x20,0x10,0x01,0xFF,0x39,0x01,0x18,0x0E,0xF9,0x00,0xC3,
+0x00,0x10,0x01,0xFF,0x18,0x04,0xA0,0x0C,0x18,0x00,0x0C,0x1A,0x04,0x0E,0xF9,0x04,
+0x0C,0x18,0x04,0x0C,0x1A,0x08,0x0E,0xF9,0x08,0x0C,0x18,0x08,0x0C,0x1A,0x0C,0x0E,
+0xF9,0x0C,0x0C,0x18,0x0C,0xC3,0x00,0x10,0x01,0xEE,0xF8,0x01,0x34,0x85,0x29,0x9C,
+0x38,0x0D,0x41,0x04,0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0x5C,0xA5,0x00,0x5C,
+0xC6,0x00,0xF3,0x38,0x06,0xAA,0xFE,0xF7,0x01,0x34,0xD7,0x25,0x00,0x6A,0xF8,0xB8,
+0x06,0xAA,0x9B,0x01,0x0F,0x17,0x00,0xC3,0x80,0x10,0x01,0xC3,0x00,0x10,0x01,0x0F,
+0x37,0x02,0xFF,0x9C,0x01,0x18,0xFF,0x18,0x00,0xFC,0x23,0x24,0x9A,0x0B,0xA3,0x00,
+0x4F,0x46,0x18,0x43,0x78,0xD4,0x0F,0xBB,0x00,0x0B,0xA4,0x00,0x0F,0xBB,0x04,0x8F,
+0x5C,0x0F,0x3A,0x00,0x0F,0x3A,0x04,0x40,0xA5,0x35,0x20,0xA4,0x1A,0x0C,0x17,0x00,
+0x4E,0xE6,0x18,0x8E,0xF8,0x0C,0xF7,0x02,0x08,0xA3,0x00,0x0D,0x17,0x02,0x0F,0xB7,
+0x06,0x0F,0x37,0x06,0x42,0xE7,0x2D,0x4C,0xF7,0xFA,0x46,0xE7,0xBE,0x0B,0x44,0x00,
+0x40,0xF7,0x3D,0x43,0x39,0xD5,0x4E,0xF9,0xFA,0x47,0x37,0xCE,0x42,0xF9,0xBD,0x41,
+0x08,0x2D,0x43,0xBD,0xD5,0x4F,0xC8,0xFA,0x4F,0x7D,0xFA,0x45,0x1E,0x46,0x47,0xBB,
+0xEE,0x43,0xC8,0xF5,0x43,0x7D,0xDD,0x43,0xC7,0xF3,0x43,0x7B,0xBB,0x9B,0x21,0x8F,
+0x7E,0x9A,0xE3,0xE4,0x00,0x00,0x11,0x8F,0x37,0x9E,0xE2,0xD7,0x3B,0xFF,0xE1,0xC3,
+0x20,0x10,0x01,0x4E,0xF7,0x09,0x53,0x40,0x1E,0x9E,0xFF,0x5E,0xF7,0x06,0xEE,0xF9,
+0x06,0xB8,0xC3,0x20,0x10,0x01,0x42,0xF7,0xD1,0xEF,0x39,0x01,0x0E,0x42,0xF7,0xBB,
+0x43,0x39,0xBD,0xC2,0xE0,0x10,0x01,0x5F,0x23,0x11,0x20,0x00,0x1B,0x53,0x20,0x19,
+0xEF,0x37,0x04,0xC0,0xC3,0xA0,0x10,0x01,0xEC,0xB7,0x04,0xC2,0x4C,0xC6,0x08,0x9A,
+0xE0,0xFF,0xBD,0x04,0xA0,0xCB,0x40,0x10,0x00,0x43,0x26,0xBC,0x4F,0x39,0x10,0x43,
+0x7C,0xCC,0xC9,0x40,0xA0,0x00,0x0D,0x1B,0x02,0x0F,0xDB,0x02,0x43,0x68,0x53,0xCF,
+0xDE,0x00,0x0A,0x8F,0xC5,0x43,0xDB,0xF0,0x43,0x7D,0xCC,0x0F,0xDB,0x00,0x5F,0xD7,
+0x00,0x23,0xC0,0x92,0x43,0xD8,0xCC,0x0D,0x1E,0x02,0x0F,0x7B,0x02,0x0F,0x3E,0x02,
+0x0B,0xC3,0x00,0x43,0x3E,0xCD,0x43,0x3B,0xCB,0x43,0x39,0xD0,0x8F,0x28,0x0F,0x23,
+0x01,0xE4,0x00,0x00,0x43,0x43,0xD8,0xCC,0x0D,0x1E,0x02,0x0F,0x7B,0x02,0x0F,0x3E,
+0x02,0x0B,0xC4,0x00,0x43,0x3E,0xCD,0x43,0x3B,0xCB,0x43,0x39,0xD0,0x8F,0x28,0x0F,
+0x24,0x01,0x43,0x66,0xBC,0x4F,0x7B,0x10,0x43,0xD8,0xDC,0x0F,0x3E,0x00,0x43,0x3C,
+0xDC,0x8F,0x7D,0x0F,0xD9,0x02,0x0D,0x1B,0x02,0x0F,0x79,0x02,0x43,0x68,0xDB,0x43,
+0x7B,0xD0,0x43,0x7E,0xDD,0x0F,0x79,0x00,0x9E,0xE1,0xD2,0xE2,0xFB,0x7E,0x0D,0x41,
+0x06,0x9C,0x28,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0x95,0xC2,0xE0,0x10,
+0x01,0x5C,0x63,0x04,0xEC,0x77,0x04,0x93,0x56,0xE3,0x03,0x5E,0xE0,0x09,0x4A,0xE1,
+0x01,0x4C,0x63,0x11,0x8C,0x77,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x04,0x88,0xC2,0xE0,
+0x10,0x01,0xF8,0xB7,0x06,0xA8,0xC2,0xE0,0x10,0x01,0xEC,0xD7,0x04,0xB0,0xC2,0xE0,
+0x10,0x01,0xEC,0xF7,0x06,0xAD,0xC2,0xE0,0x10,0x01,0x0B,0x01,0x01,0xED,0x17,0x06,
+0xB1,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x04,0x91,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x06,0xAE,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x06,0xAE,0xC2,0xE0,0x10,
+0x01,0xF2,0xF7,0x06,0xA8,0x9E,0xFF,0x5E,0xF8,0x15,0x48,0x61,0x01,0x85,0x29,0x9C,
+0x38,0x0D,0x21,0x04,0xE7,0xFF,0xFF,0xC2,0x9A,0xE0,0x20,0x60,0x4E,0xC2,0xE0,0x10,
+0x01,0xF3,0x17,0x06,0xAE,0x9F,0x01,0xFB,0x17,0x06,0xAE,0x9A,0xE1,0x88,0x77,0x0D,
+0x21,0x06,0x9C,0x28,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x04,0x93,0xC2,0xE0,
+0x10,0x01,0xC3,0x20,0x10,0x01,0xF3,0x57,0x06,0xAE,0xFF,0x39,0x04,0xC8,0x9A,0xE0,
+0x4F,0x5A,0x28,0xE4,0x00,0x00,0x39,0x4F,0x77,0x08,0x8F,0x63,0x0B,0x9B,0x00,0x43,
+0x7A,0xBC,0x9E,0xE1,0x4F,0x7B,0x08,0x5E,0xF7,0x00,0x8F,0x79,0x0F,0x9B,0x01,0xD7,
+0x17,0xFF,0x45,0x85,0x29,0x9C,0x30,0x0D,0x21,0x0C,0x0D,0x41,0x08,0x18,0x01,0x06,
+0x89,0x43,0x18,0x01,0x07,0xE7,0xFF,0xF2,0x5C,0x1C,0x61,0x06,0x1C,0x81,0x07,0xE7,
+0xFF,0xF0,0x2A,0x10,0x61,0x06,0x10,0x81,0x07,0xE7,0xFF,0xF3,0x5E,0xC2,0xE0,0x10,
+0x01,0x13,0x41,0x06,0xEB,0x37,0x04,0x93,0x13,0x61,0x07,0xC3,0x00,0x10,0x01,0x9A,
+0xE0,0xFF,0x18,0x04,0xC8,0x4F,0x5A,0x28,0x4F,0x7B,0x28,0x9B,0x82,0xE4,0x00,0x00,
+0x59,0x43,0xDA,0xBC,0x4F,0xDE,0x08,0x8F,0xD8,0x4F,0xB7,0x08,0x09,0x1E,0x00,0x8F,
+0xAA,0x43,0xDB,0xBC,0x9E,0xE1,0x4F,0xDE,0x08,0x5E,0xF7,0x00,0x8F,0xD8,0x0B,0xDE,
+0x00,0x8F,0xC8,0x43,0xDE,0xE0,0x0F,0xDD,0x01,0xD7,0x37,0xFE,0xC5,0x0D,0x41,0x0A,
+0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0x1C,0x21,0xC8,0x0D,0x41,0x30,0x0D,0x61,
+0x2C,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x5D,0xA5,0x04,0x0D,0x21,0x34,0x50,0xA0,0x20,
+0x0D,0x81,0x28,0x89,0x43,0x89,0x64,0x5D,0xC6,0x04,0x88,0x61,0xC0,0x98,0x00,0x21,
+0xFC,0x84,0xB4,0x94,0x9C,0x86,0xE4,0x00,0x0B,0xA6,0xC2,0xE0,0x10,0x01,0xC3,0x00,
+0x10,0x01,0xEB,0x77,0x06,0xAD,0xC2,0xE0,0x10,0x01,0xF3,0x58,0x04,0x88,0xEB,0x97,
+0x06,0xB1,0x9F,0x61,0x9F,0x81,0x5F,0x7B,0x04,0x5F,0x9C,0x04,0xCC,0xAD,0x00,0x18,
+0xC2,0xE0,0x10,0x01,0x43,0xDB,0xE4,0xEA,0xF7,0x04,0x91,0x4F,0xDE,0x18,0x0B,0x01,
+0x01,0x8F,0xD7,0x43,0xDE,0xD3,0x43,0xC5,0xF0,0x5F,0xDE,0x04,0xD7,0x1E,0x00,0x69,
+0x0F,0x0A,0x01,0x9B,0x20,0xE4,0x00,0x00,0x4D,0x9B,0x00,0x89,0x81,0x8B,0x38,0x4F,
+0xB8,0x08,0x5D,0x18,0x00,0x8F,0xAC,0x0B,0xBD,0x01,0xD7,0xBE,0x00,0x8D,0x0F,0xAA,
+0x01,0x9F,0x01,0x8B,0x28,0x5F,0x02,0x09,0x23,0xFF,0x9D,0x43,0x1C,0xDC,0x0B,0x6A,
+0x01,0x4F,0x18,0x18,0x43,0x5B,0xD3,0xCC,0xCE,0x00,0x18,0x43,0x78,0xBC,0x43,0x7A,
+0xDB,0xD4,0xDB,0x01,0x11,0xE4,0x00,0x00,0x2F,0x43,0x77,0xC4,0x43,0x7B,0xD3,0xD7,
+0x66,0x00,0x41,0xD4,0xBB,0x00,0x85,0x9E,0xE1,0x5E,0xF7,0x04,0xC2,0xE0,0x7F,0xEA,
+0x23,0xFF,0xA5,0x0E,0xEB,0x01,0x0D,0xC1,0x22,0x0A,0xEA,0x01,0x0D,0xA1,0x26,0x4E,
+0xF7,0x40,0x0D,0x81,0x2A,0x47,0x39,0xBD,0x0D,0x61,0x2E,0x0F,0x2A,0x01,0x0D,0x21,
+0x36,0x0D,0x41,0x32,0x1C,0x21,0x38,0x85,0x29,0x9C,0x30,0x5C,0x63,0x00,0x0D,0x41,
+0x08,0x0D,0x61,0x04,0x4C,0x63,0x08,0xC2,0xF8,0x00,0x21,0x0D,0x21,0x0C,0xFE,0xF7,
+0xB6,0xFA,0x99,0x40,0x8E,0xE3,0x09,0x77,0x01,0x88,0x6A,0x88,0x8B,0x9D,0x41,0xE4,
+0x00,0xC0,0x26,0x5D,0x4A,0x00,0xD1,0x44,0xFF,0x9E,0x0D,0x61,0x06,0x0D,0x41,0x0A,
+0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,0xDD,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0xF0,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0xD8,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0xE4,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF3,
+0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xE9,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF8,
+0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,0xDD,0xC2,0xE0,0x10,0x01,0xF8,0x17,
+0x06,0xD8,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,0xF0,0xC2,0xE0,0x10,0x01,0xF8,0x77,
+0x06,0xE4,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF3,0xC2,0xE0,0x10,0x01,0xEC,0x17,
+0x06,0xE9,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF8,0x24,0x6C,0x1F,0xE7,0xFF,0xFE,
+0x99,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0x5C,0x63,0x04,0xEC,0x77,
+0x06,0xE9,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF8,0xF3,0x78,0x06,0xD8,0xC3,0x40,
+0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,0x00,0x10,0x01,0xFF,0x5A,0x06,0xF0,0xFF,0x39,
+0x06,0xE4,0x23,0x60,0x2C,0xEB,0x78,0x06,0xF3,0xD7,0x63,0x00,0xA1,0x13,0x5A,0x00,
+0xEC,0x78,0x06,0xF3,0x1B,0x59,0x00,0x9B,0x01,0xEF,0x17,0x06,0xF8,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xEB,0x17,0x06,0xE9,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x06,0xDD,0x5E,
+0xF8,0x1F,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0xD8,0x5E,
+0xE0,0x5B,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x06,0xD8,0x27,
+0x08,0x7B,0x9F,0x01,0xFB,0x17,0x06,0xD8,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,0xF0,
+0x9C,0x61,0x54,0x63,0x03,0xF8,0x77,0x06,0xF0,0xE7,0xFF,0xFD,0x61,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xF8,0x77,0x01,0x3A,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x06,0xE0,0xC2,
+0xE0,0x10,0x01,0xEC,0xB7,0x06,0xD4,0xC2,0xE0,0x10,0x01,0xEC,0xD7,0x06,0xEC,0x85,
+0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xEF,0x18,0x06,0xEE,0x5C,0x63,0x04,
+0xEC,0x77,0x06,0xDB,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0xF4,0x4E,0xF7,0x08,0x8E,
+0xF8,0xC3,0x00,0x10,0x01,0xEF,0x18,0x06,0xD6,0x0A,0xF7,0x01,0xCB,0x20,0xFF,0xFF,
+0x4E,0xF7,0x08,0x8E,0xF8,0x0B,0x17,0x01,0xD7,0x19,0x00,0x5E,0x0C,0x77,0x01,0xE4,
+0x00,0x00,0x4B,0xC3,0x20,0x10,0x01,0xEB,0x39,0x08,0xE3,0xC7,0x39,0x20,0x00,0x23,
+0x20,0x54,0xCF,0x18,0x00,0x07,0xCC,0x63,0x00,0x03,0x9B,0x2A,0x8F,0x03,0x43,0x18,
+0xC8,0x0F,0x17,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0x9C,0x38,0xC3,0x20,0x10,0x01,
+0x0E,0xC1,0x04,0xF3,0x17,0x01,0x3A,0x4E,0xF8,0x08,0x9E,0xE8,0xC6,0xF7,0x03,0xF8,
+0x1E,0xC1,0x08,0x88,0x81,0xEF,0xB9,0x06,0xD6,0x40,0x21,0xBD,0x9B,0x20,0x8A,0xE1,
+0x8B,0x59,0xE4,0x00,0x00,0x43,0x4F,0x99,0x08,0x43,0x7D,0xE4,0x8F,0x97,0x0B,0x7B,
+0x01,0x0F,0x7C,0x01,0xCB,0x80,0xFF,0xFF,0xD7,0x7C,0x00,0x4E,0x9F,0x41,0x5F,0x5A,
+0x00,0x9F,0x21,0x5F,0x79,0x00,0xD7,0x1B,0xFF,0x05,0xC3,0x60,0x10,0x01,0xFF,0x7B,
+0x06,0xE6,0x0C,0x1B,0x01,0x9B,0x20,0x23,0x40,0xE0,0xE4,0x00,0x00,0x8F,0x1F,0x99,
+0x01,0x4F,0x39,0x08,0x5F,0x9C,0x00,0x8F,0x37,0x8B,0x5C,0xE4,0x00,0x00,0x3D,0x4F,
+0xBA,0x08,0x0B,0xD9,0x01,0x8F,0xB7,0x09,0x1D,0x01,0xD7,0xC8,0x00,0x51,0x0D,0x19,
+0x01,0x0F,0xDD,0x01,0x9F,0x41,0x5F,0x5A,0x00,0xD7,0x58,0xFF,0x36,0x8B,0x3C,0xD7,
+0x38,0xFE,0x7E,0x0B,0x17,0x01,0x0A,0xF7,0x03,0x8E,0xF8,0x4E,0xF7,0x0A,0x0E,0xFB,
+0x01,0x08,0x7B,0x01,0x88,0x24,0x0E,0xC1,0x06,0x9C,0x28,0x85,0x29,0x5C,0x63,0x04,
+0xC3,0x00,0x10,0x01,0xEF,0x18,0x06,0xEE,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0xF4,
+0x4E,0xF7,0x08,0x8E,0xF8,0xC3,0x00,0x10,0x01,0x0A,0xF7,0x01,0xEF,0x18,0x06,0xD6,
+0x4E,0xF7,0x08,0x8E,0xF8,0x0A,0xF7,0x01,0x5E,0xE3,0x1F,0x48,0x61,0x01,0x85,0x29,
+0x5C,0x63,0x04,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x06,0xDB,0x5E,0xE3,0x1F,0x48,0x61,
+0x01,0x85,0x29,0x1C,0x21,0xE0,0x0D,0x61,0x14,0x0E,0xC1,0x04,0x0D,0x21,0x1C,0x0D,
+0x41,0x18,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xC1,0x08,0xC3,0x20,0x10,0x01,0xC2,
+0xE0,0x10,0x01,0xF3,0x59,0x06,0xF4,0xF2,0xF7,0x01,0x3A,0x9F,0x41,0x5F,0x5A,0x00,
+0x43,0x1A,0xB9,0x43,0x18,0xBB,0x43,0x1A,0xC5,0x5F,0x18,0x00,0xFB,0x19,0x06,0xF4,
+0x1E,0xC1,0x20,0x89,0x61,0xD3,0x00,0x04,0xA6,0x4F,0x17,0x08,0x9F,0x08,0xC7,0x18,
+0x03,0xF8,0x89,0x81,0x40,0x21,0xC5,0xC3,0x00,0x10,0x01,0x8B,0x61,0xEF,0x58,0x06,
+0xD6,0x9B,0x00,0xE4,0x00,0x00,0x29,0x4F,0x38,0x08,0x9F,0x01,0x43,0x9B,0xCC,0x8F,
+0x3A,0x0B,0x39,0x01,0x0F,0x3C,0x01,0x5F,0x38,0x00,0xD6,0xF9,0xFF,0x6D,0xC3,0x00,
+0x10,0x01,0xEF,0x98,0x06,0xEE,0x9B,0x00,0x8B,0x3C,0xE4,0x00,0x00,0x93,0x1F,0xB8,
+0x01,0x4F,0x18,0x08,0x5F,0xBD,0x00,0x8F,0x1B,0x8B,0x5D,0xE4,0x00,0x00,0x61,0x4F,
+0xDA,0x08,0x09,0x58,0x01,0x41,0x1B,0xF4,0x08,0x68,0x01,0xD5,0x43,0x00,0xD9,0x0C,
+0x78,0x01,0x0D,0x48,0x01,0x8F,0xDC,0x09,0x19,0x01,0x09,0x5E,0x01,0x0D,0x59,0x01,
+0x55,0x08,0xFF,0x0D,0x1E,0x01,0x9F,0x41,0x5F,0x5A,0x00,0xD7,0x57,0xFE,0xA6,0x9F,
+0x22,0x8B,0x1D,0xD7,0x17,0xFD,0xDE,0x88,0x2C,0x99,0x40,0xC1,0x80,0x10,0x01,0xC1,
+0xA0,0x10,0x01,0xC1,0xC0,0x10,0x01,0xEF,0x0D,0x06,0xEE,0xF2,0xEE,0x06,0xF4,0x4E,
+0xF7,0x08,0x8E,0xF8,0xEF,0x0C,0x06,0xE2,0x0A,0xF7,0x01,0x4E,0xF7,0x08,0x8E,0xF8,
+0x88,0x6A,0x08,0x97,0x01,0x9D,0x41,0xE4,0x00,0xB8,0xB6,0x5D,0x4A,0x00,0xD1,0x44,
+0xFE,0xCE,0x88,0x2B,0x0E,0xC1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,
+0x0D,0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0x1C,0x21,
+0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x0D,0xA1,
+0x04,0x0D,0x21,0x14,0xF8,0x17,0x06,0xF4,0x99,0x40,0xC1,0x60,0x10,0x01,0xC1,0x80,
+0x10,0x01,0x89,0xB7,0xEF,0x0C,0x06,0xEE,0xF2,0xED,0x06,0xF4,0x4E,0xF7,0x08,0x8E,
+0xF8,0xEF,0x0B,0x06,0xE2,0x0A,0xF7,0x01,0x4E,0xF7,0x08,0x8E,0xF8,0x88,0x6A,0x08,
+0x97,0x01,0x9D,0x41,0xE4,0x00,0xB7,0xDC,0x5D,0x4A,0x00,0xD1,0x44,0xFE,0xCE,0xC2,
+0xE0,0x10,0x01,0xF3,0x37,0x01,0x3A,0xC2,0xE0,0x10,0x01,0x9B,0x5F,0xEF,0x17,0x06,
+0xD6,0x9A,0xE0,0xE4,0x00,0x00,0x1D,0x0F,0x58,0x01,0x9E,0xE1,0x9F,0x02,0x5E,0xF7,
+0x00,0xD6,0xF9,0xFF,0xB6,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,
+0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0x8B,0x03,0x56,0xE3,0x03,0x22,0xE0,
+0x98,0x9B,0x04,0x42,0xF8,0xBD,0x5F,0x44,0x00,0x5E,0xE5,0x17,0x4B,0x37,0x28,0x9A,
+0xE0,0xE4,0x00,0x00,0x13,0x1B,0x58,0x00,0x9E,0xE1,0x43,0x03,0xBC,0xD6,0xF9,0xFF,
+0xC6,0x40,0xA5,0xBD,0x4E,0xE4,0x80,0x4F,0x64,0xC0,0x47,0x7B,0xBD,0x4E,0xE4,0x40,
+0x47,0x7B,0x25,0x4F,0x45,0x11,0x47,0x7B,0xBD,0x9A,0xE0,0xE4,0x00,0x00,0x17,0x8F,
+0x38,0x9E,0xE1,0x0F,0x79,0x00,0x4F,0x37,0x10,0xD6,0xFA,0xFF,0xB6,0x8F,0x19,0x9A,
+0xE0,0x54,0xA5,0x03,0x5C,0x84,0x00,0xE4,0x00,0x00,0x19,0x43,0x37,0xC4,0x9E,0xE1,
+0x18,0x99,0x00,0xD4,0xB7,0xFF,0xC5,0x85,0x29,0x46,0xE4,0x1D,0x56,0xF7,0x03,0x22,
+0xE0,0x82,0x9A,0xFC,0x47,0x45,0xBC,0x9A,0xE0,0xE4,0x00,0x00,0x51,0x43,0x03,0xBC,
+0x43,0x24,0xBC,0x9E,0xE1,0x13,0x39,0x00,0x1B,0x38,0x00,0xE4,0x00,0x00,0x0D,0x9A,
+0xE0,0xD6,0xE5,0xFF,0x66,0xE4,0x00,0x00,0x63,0x0F,0x39,0x02,0x9E,0xE4,0x0F,0x38,
+0x00,0x43,0x03,0xBC,0x43,0x24,0xBC,0xD6,0xFA,0xFF,0x96,0x9A,0xE0,0x54,0xA5,0x03,
+0xE4,0x00,0x00,0x25,0x43,0x57,0xC4,0x43,0x77,0xCC,0x9E,0xE1,0x13,0x7B,0x00,0x1B,
+0x7A,0x00,0xD4,0xB7,0xFF,0x95,0x85,0x29,0x1C,0x21,0xE0,0x0D,0x21,0x1C,0x0D,0x41,
+0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xC1,0x08,0x0D,0xE1,0x04,
+0x0E,0x01,0x00,0xE4,0x00,0x62,0x06,0xC1,0x60,0x10,0x01,0xC0,0x60,0x00,0x21,0xFD,
+0x4B,0x00,0xCC,0xFC,0x63,0xB0,0xE4,0xC0,0x80,0x10,0x01,0xC0,0xA0,0x10,0x01,0xFC,
+0x84,0x00,0x00,0xFC,0xA5,0x01,0xD8,0x40,0xA5,0x25,0xE4,0x00,0x5C,0xDC,0x0C,0x0A,
+0x01,0x0C,0x0A,0x03,0x0C,0x0A,0x05,0x0C,0x0A,0x08,0xC2,0xE0,0x10,0x01,0xEC,0x17,
+0x00,0xBB,0x0C,0x0A,0x0C,0x9A,0xEA,0xC1,0xA0,0x10,0x01,0x0E,0xEA,0x11,0xEC,0x0D,
+0x07,0x00,0x50,0x60,0x26,0xE4,0x00,0x1F,0x86,0xC8,0x80,0xE1,0x00,0x98,0x60,0xE4,
+0x00,0x2A,0xD6,0x98,0x63,0xE4,0x00,0x29,0xF2,0xE4,0x00,0x03,0x54,0xC2,0xE0,0x10,
+0x01,0x9B,0x3C,0xF3,0x17,0x08,0x83,0x47,0x18,0xCC,0xFC,0x60,0x0B,0xB8,0xFB,0x17,
+0x08,0x83,0x04,0x80,0x5B,0xC8,0x84,0x8D,0x80,0xE4,0x00,0x2A,0x26,0x98,0x61,0xC1,
+0x80,0x10,0x01,0xE4,0x00,0x2A,0x1A,0x99,0xC1,0xC1,0x60,0x10,0x01,0xC1,0xE0,0x10,
+0x01,0xC2,0x00,0x10,0x01,0xE4,0x00,0x29,0xE6,0x0E,0xEA,0x0E,0x22,0xE0,0x2C,0xD2,
+0xE1,0x0A,0x4E,0xE4,0x00,0x00,0xC5,0xE4,0x00,0x5B,0xCA,0xE4,0x00,0x29,0xFA,0x0C,
+0x6A,0x13,0xE4,0x00,0x29,0xEC,0x0C,0x6A,0x17,0xE4,0x00,0x29,0xDE,0x0C,0x6A,0x1B,
+0xE4,0x00,0x29,0xD0,0x0C,0x6A,0x19,0xEA,0xEC,0x06,0xFF,0xC6,0xF7,0xFF,0xDF,0xEE,
+0xEC,0x06,0xFF,0xEA,0xEC,0x06,0xFF,0xC6,0xF7,0xFF,0x7F,0xEE,0xEC,0x06,0xFF,0x0D,
+0xCA,0x0C,0xEA,0xEB,0x08,0xE3,0x52,0xF7,0x80,0xEC,0x0D,0x07,0x00,0xEE,0xEB,0x08,
+0xE3,0x98,0x61,0xE4,0x00,0x1A,0x06,0x98,0x60,0xE4,0x00,0x30,0x3A,0xE4,0x00,0x2B,
+0x32,0xE4,0x00,0x01,0xCF,0xEE,0xED,0x07,0x02,0x22,0xE0,0x2C,0xD2,0xE1,0x06,0xE6,
+0xE4,0x00,0x00,0x9B,0x98,0x61,0xE4,0x00,0x1A,0x3E,0xD0,0x61,0x06,0x76,0xE4,0x00,
+0x1C,0x90,0x20,0x64,0xAA,0xE4,0x00,0x1C,0x6E,0xEA,0xEB,0x08,0xE3,0xFF,0x00,0xFF,
+0x7F,0x46,0xF7,0xC4,0xEC,0x0F,0x08,0xBC,0xEE,0xEB,0x08,0xE3,0xED,0xCD,0x07,0x00,
+0xE4,0x00,0x64,0x14,0xE4,0x00,0x63,0xB4,0xE4,0x00,0x01,0x41,0xE4,0x00,0x1C,0x70,
+0x20,0x67,0x54,0x98,0x61,0xE4,0x00,0x1B,0xD0,0xE4,0x00,0x01,0x1F,0x0A,0xEA,0x01,
+0xC6,0xF7,0x01,0x00,0xD2,0xE0,0x04,0x22,0xE4,0x00,0x28,0x80,0x0A,0xEA,0x13,0x0B,
+0x0A,0x11,0x40,0x63,0xBD,0x5E,0xE3,0x04,0xD7,0x17,0x03,0x85,0xE4,0x00,0x28,0x58,
+0x0C,0x6A,0x13,0x0A,0xEA,0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0xE4,0x00,0x5D,
+0x3A,0xE4,0x00,0x64,0x1E,0xE4,0x00,0x63,0x12,0xEE,0xEF,0x08,0xBE,0xEE,0xF0,0x08,
+0xE8,0xE4,0x00,0x5E,0x26,0x98,0x61,0xE4,0x00,0x8A,0x06,0xE4,0x00,0x5E,0x9E,0x98,
+0x61,0xE4,0x00,0x5E,0xDE,0xE4,0x00,0x60,0x92,0xE4,0x00,0x8B,0x66,0xEA,0xEB,0x08,
+0xE3,0x56,0xF7,0x80,0x22,0xE0,0x90,0x0A,0xEA,0x01,0xC6,0xF7,0x01,0x00,0x22,0xE3,
+0xE4,0x0A,0xEA,0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0x0D,0xCA,0x0C,0xEC,0x0D,
+0x07,0x00,0x98,0x61,0xE4,0x00,0x18,0x24,0x0E,0xEA,0x0A,0xFC,0x60,0x1E,0x7F,0x9E,
+0xE1,0x0E,0xEA,0x08,0x0C,0x8A,0x0A,0xE4,0x00,0x28,0xB6,0xE4,0x00,0x27,0x86,0xE7,
+0xFF,0xFD,0x2D,0xE4,0x00,0xB2,0x4F,0x9C,0x38,0x0D,0x21,0x04,0x0D,0x41,0x00,0xE4,
+0x00,0xB3,0xAA,0x98,0x6D,0xE4,0x00,0xA4,0x24,0x98,0x60,0xFC,0x80,0x3E,0x0C,0xE4,
+0x00,0xA6,0x68,0x98,0x61,0xFC,0x80,0x3E,0x0C,0xE4,0x00,0xA6,0x54,0x98,0x60,0x50,
+0x80,0x14,0xE4,0x00,0xAB,0x4E,0x98,0x60,0x98,0x8C,0xE4,0x00,0xAA,0x70,0x98,0x61,
+0x50,0x80,0x14,0xE4,0x00,0xAB,0x2C,0x98,0x61,0x98,0x8C,0x99,0x40,0xE4,0x00,0xAA,
+0x4A,0x88,0x6A,0x98,0x80,0x9D,0x41,0xE4,0x00,0xB0,0xB6,0x5D,0x4A,0x00,0xD1,0x44,
+0xFF,0x9E,0x98,0x60,0x05,0x40,0xFF,0xC9,0x4A,0xFF,0xFF,0x88,0x8A,0xE4,0x00,0xA8,
+0xA4,0x88,0x8A,0x98,0x60,0xE4,0x00,0xA6,0x2C,0x88,0x8A,0x0D,0x21,0x06,0x0D,0x41,
+0x02,0x98,0x60,0x9C,0x28,0xE4,0x00,0xA7,0x0D,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,
+0x10,0x1C,0x21,0xB0,0x0E,0xE1,0x10,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x07,0x04,0x0D,
+0x41,0x4C,0x0D,0x61,0x48,0x0D,0x81,0x44,0x0D,0xE1,0x38,0x0E,0x01,0x34,0x0E,0x21,
+0x30,0x0E,0x41,0x2C,0x0E,0x61,0x28,0x0E,0x81,0x24,0x0D,0xA1,0x40,0x0D,0xC1,0x3C,
+0x0E,0xA1,0x20,0x0E,0xC1,0x1C,0x0E,0xE1,0x0C,0xC2,0x60,0x10,0x01,0xC2,0x40,0x10,
+0x01,0xFE,0x73,0x07,0x24,0xFE,0x52,0x07,0x1C,0xC2,0x20,0x10,0x01,0xC2,0x00,0x10,
+0x01,0xFE,0x31,0x07,0x14,0xFE,0x10,0x07,0x28,0xC1,0xE0,0x10,0x01,0xC1,0x8F,0xFF,
+0xE1,0xFD,0xEF,0x07,0x20,0x9B,0x80,0xC2,0x98,0x00,0x21,0xC0,0xD8,0x00,0x21,0x13,
+0x53,0x00,0x0E,0xF2,0x02,0x0D,0x51,0x02,0x0F,0xB0,0x02,0x0F,0x6F,0x02,0x99,0x60,
+0xC9,0x8C,0xFF,0xFF,0x88,0xFC,0x53,0x20,0xFF,0xFE,0x94,0xB8,0x68,0xFC,0xC6,0xB8,
+0x6E,0xE4,0x00,0x01,0xC5,0x41,0x14,0xC4,0x9F,0x01,0x11,0x08,0x00,0x8D,0xA8,0x5D,
+0xAD,0x00,0xE4,0x00,0x00,0x11,0x9B,0x00,0x89,0xB8,0x5D,0x18,0x00,0xD7,0xC8,0xFF,
+0x45,0xC3,0x18,0x00,0x21,0xFF,0x18,0xB8,0x68,0x8F,0x0B,0x99,0x00,0x12,0xB8,0x00,
+0xCF,0x0D,0x00,0x0A,0x1E,0xD5,0xFF,0x8F,0x06,0x0E,0xC1,0x08,0x0F,0x01,0x14,0xE4,
+0x00,0x01,0x37,0x0F,0x01,0x16,0xCD,0xE8,0x00,0x0A,0x8D,0xF8,0x0A,0xCF,0x00,0x0E,
+0xC1,0x04,0x0F,0x01,0x0E,0x0E,0xC1,0x0A,0xD5,0x16,0x00,0x3A,0x0B,0x0F,0x0A,0x0D,
+0xE1,0x06,0xD5,0xE4,0x03,0xB4,0xD4,0x98,0x03,0x94,0x8D,0xCD,0x5D,0xCE,0x00,0xCF,
+0x0E,0x00,0x0A,0x8F,0x06,0x09,0xF8,0x06,0x0B,0x18,0x08,0x4F,0x18,0x50,0x41,0xEF,
+0x23,0x8D,0xF8,0xFD,0xEF,0x02,0x00,0x4D,0xEF,0x52,0x5D,0xEF,0x06,0x41,0xEF,0x7B,
+0x43,0x03,0x7D,0x4E,0xD8,0xFA,0x47,0x16,0xC6,0x43,0x18,0xB5,0xD7,0x0C,0x01,0x4C,
+0xC3,0x20,0x1F,0xE4,0x20,0x00,0x2D,0x89,0x5D,0x89,0x97,0x8B,0x3A,0x88,0xFC,0x8B,
+0xAA,0x8A,0xEC,0x8B,0x59,0x8B,0x87,0x8B,0x78,0x89,0x4F,0x89,0x98,0x88,0xEE,0x8B,
+0x3E,0xE4,0x00,0x00,0x2F,0xC3,0x40,0x1F,0xE0,0x20,0x00,0x1D,0xD6,0xF8,0x00,0x60,
+0x8B,0xAF,0x8A,0xF8,0x8B,0x5E,0x8B,0x8E,0x9D,0x01,0x5D,0xC8,0x00,0xD6,0xAE,0xFB,
+0x35,0x9D,0x61,0x5F,0xCB,0x00,0x0E,0xC1,0x12,0xD6,0xDE,0xF9,0x6D,0xC3,0x00,0x10,
+0x01,0x1B,0x53,0x00,0xFF,0x18,0x07,0x20,0x0E,0xF2,0x00,0x0D,0x51,0x00,0x0F,0xB0,
+0x00,0x0F,0x78,0x00,0xC3,0x20,0x1F,0xE0,0x20,0x01,0x55,0xCF,0x9C,0x00,0x0A,0xCC,
+0xE7,0x00,0x0A,0x8C,0xE6,0x0B,0x07,0x04,0x4F,0x18,0x50,0x8C,0xDC,0x08,0x67,0x02,
+0x0B,0x86,0x02,0x40,0x63,0x23,0x0B,0x46,0x04,0x8C,0x78,0x43,0x1B,0xBC,0xFC,0x63,
+0x02,0x00,0x4C,0x63,0x52,0x23,0x00,0xA8,0xC2,0xE0,0x1F,0xE0,0x20,0x00,0x8D,0x40,
+0x63,0xBB,0x40,0x9C,0x23,0x4E,0xFA,0x50,0x8E,0xE4,0xFE,0xF7,0x02,0x00,0x4E,0xF7,
+0x52,0x43,0x77,0xDB,0x8C,0x7B,0x40,0x63,0xC0,0xE4,0x00,0x00,0x0D,0x88,0x64,0x0E,
+0xC1,0x1E,0x0E,0xA1,0x22,0x0E,0x81,0x26,0x0E,0x61,0x2A,0x0E,0x41,0x2E,0x0E,0x21,
+0x32,0x0E,0x01,0x36,0x0D,0xE1,0x3A,0x0D,0xC1,0x3E,0x0D,0xA1,0x42,0x0D,0x81,0x46,
+0x0D,0x61,0x4A,0x0D,0x41,0x4E,0x1B,0x25,0x00,0x1C,0x21,0x50,0x85,0x29,0x8B,0x23,
+0xC2,0xE0,0x10,0x01,0x5C,0xA5,0x00,0xF2,0xF7,0x07,0x10,0x98,0x60,0xD6,0xE5,0x0C,
+0xB9,0xD3,0x3F,0x0C,0x98,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,
+0x01,0xF2,0xF7,0x07,0x09,0xFF,0x18,0x07,0x07,0xFF,0x7B,0x07,0x08,0x22,0xE8,0x42,
+0x13,0x18,0x00,0x5F,0x08,0x9B,0x20,0x00,0x51,0xE4,0x00,0x01,0x3B,0xD2,0xE1,0x04,
+0xCE,0x13,0x18,0x00,0x5F,0x05,0x93,0x20,0x02,0x3D,0x24,0xA4,0x4B,0x9B,0x43,0x43,
+0x5A,0x2D,0x4F,0x5A,0x08,0x5F,0x5A,0x00,0xE4,0x00,0x00,0x37,0x20,0xA8,0x54,0x9B,
+0x44,0x43,0x5A,0x2D,0x4F,0x5A,0x08,0x5F,0x5A,0x00,0x20,0xAC,0xEE,0xE4,0x00,0x00,
+0x51,0x9B,0x43,0x9A,0xE0,0x13,0x9B,0x00,0x8B,0x17,0xE4,0x00,0x00,0x27,0x4F,0xB8,
+0x08,0x9F,0x01,0x8F,0xBC,0x5F,0x18,0x00,0x8E,0xFD,0x5E,0xF7,0x00,0xD7,0x05,0xFF,
+0x8E,0xE4,0x00,0x00,0x49,0x5E,0xE0,0x21,0x53,0x00,0x1D,0x52,0xE0,0x2F,0x4A,0xF8,
+0xB8,0xE4,0x00,0x00,0x4B,0x5E,0xE0,0x29,0x53,0x00,0x41,0x52,0xE0,0x29,0x4A,0xF8,
+0xB8,0xE4,0x00,0x00,0x2B,0x27,0x04,0x33,0x9F,0x9F,0x4F,0x18,0x08,0xE4,0x00,0x00,
+0x8B,0x9B,0x0A,0x20,0xA9,0x10,0x13,0x1B,0x00,0x9C,0xBF,0x9F,0x1F,0x4C,0xA5,0x08,
+0x8F,0x05,0xE4,0x00,0x00,0x65,0x9B,0x43,0x13,0xBB,0x00,0x43,0x5A,0x2D,0x9A,0xE0,
+0x4F,0x5A,0x08,0x8B,0x77,0x5F,0x5A,0x00,0xE4,0x00,0x00,0x21,0x8F,0x9D,0x9F,0x61,
+0x8E,0xFC,0x5F,0x7B,0x00,0x5E,0xF7,0x00,0x4F,0x9B,0x08,0xD7,0x65,0xFF,0x8E,0x1F,
+0x1D,0xFF,0x8F,0x1C,0x5F,0x18,0x00,0x4F,0x5A,0x08,0xC3,0xB8,0x00,0x21,0xFF,0xBD,
+0xB7,0x02,0x8F,0xBA,0x9B,0x40,0xE4,0x00,0x01,0x0B,0x4F,0x7A,0x08,0x8F,0x7D,0x0B,
+0x9B,0x00,0xD7,0x3C,0x03,0xBC,0x0B,0x7B,0x02,0xD7,0x79,0x03,0x84,0x8E,0xFA,0xC3,
+0xB8,0x00,0x21,0xCF,0x17,0x00,0x06,0xFF,0xBD,0xB7,0x1E,0x8F,0x1D,0x1F,0x57,0x01,
+0x14,0xD8,0x00,0xCF,0x5A,0x00,0x06,0x09,0x18,0x02,0x8F,0x5D,0x98,0x60,0x0B,0xB8,
+0x04,0x14,0xBA,0x00,0x0B,0xDA,0x02,0x0B,0x1A,0x04,0xD7,0x9B,0x02,0x52,0x42,0xF9,
+0xDD,0x40,0x77,0x33,0x43,0x3C,0xCD,0x43,0x59,0x2B,0x43,0xD9,0xF3,0x8F,0x43,0x40,
+0x77,0x43,0x43,0x5A,0x23,0x8C,0x7E,0x8C,0x7A,0x42,0xF7,0xEB,0x40,0x83,0x23,0x97,
+0x41,0x43,0x39,0xC3,0xCB,0x5A,0x86,0xA0,0x8F,0x37,0x40,0x64,0xD0,0x43,0x7C,0xDD,
+0x8C,0x79,0x40,0x63,0xD8,0xE4,0x00,0x00,0x1F,0x9F,0x41,0x5F,0x7A,0x00,0xD7,0x1B,
+0xFB,0xE5,0x98,0x60,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x07,0x09,0xC2,0xE0,
+0x10,0x01,0xF8,0x97,0x07,0x06,0xC2,0xE0,0x10,0x01,0xF8,0xB7,0x07,0x07,0xC2,0xE0,
+0x10,0x01,0xF8,0xD7,0x07,0x08,0xC2,0xE0,0x10,0x01,0xEC,0xF7,0x07,0x05,0x85,0x29,
+0x9A,0xFF,0x1C,0x21,0xD8,0x0D,0xE1,0x0C,0x1A,0xE1,0x07,0xC1,0xE0,0x10,0x01,0xFD,
+0xEF,0x07,0x24,0x1A,0xEF,0x00,0x52,0xE0,0xFF,0xC3,0x00,0x10,0x01,0x0D,0x41,0x20,
+0x0D,0x61,0x1C,0x0D,0xA1,0x14,0x0D,0xC1,0x10,0xCB,0x20,0xFF,0xFF,0xC1,0xC0,0x10,
+0x01,0xEF,0x38,0x07,0x2C,0xFD,0xCE,0x07,0x20,0xC1,0xA0,0x10,0x01,0x0E,0xEE,0x00,
+0xFD,0xAD,0x07,0x1C,0x0D,0x21,0x24,0x0E,0xED,0x00,0x0D,0x81,0x18,0xC2,0xE0,0x10,
+0x01,0x0E,0x01,0x08,0x89,0x63,0xF3,0x17,0x07,0x09,0x89,0x44,0x88,0x65,0xC2,0xE0,
+0x10,0x01,0x23,0x08,0x56,0xC3,0x00,0x10,0x01,0xF3,0x18,0x07,0x07,0x5F,0x08,0x9B,
+0x20,0x00,0x61,0xE4,0x00,0x00,0x37,0x23,0x04,0x5E,0xC3,0x00,0x10,0x01,0xF3,0x18,
+0x07,0x07,0x5F,0x05,0x93,0x20,0x00,0x25,0x9B,0x05,0xE4,0x00,0x00,0x0D,0x9B,0x04,
+0xFB,0x17,0x07,0x10,0xC2,0x00,0x10,0x01,0x0E,0xEB,0x02,0xEE,0xF0,0x07,0x2C,0x0A,
+0xE6,0x06,0x0C,0x8B,0x02,0xD4,0x97,0x04,0xCC,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,
+0xCD,0x53,0x18,0x01,0x1C,0xA1,0x07,0xEF,0x17,0x08,0xCD,0xE7,0xFF,0xF6,0x9C,0x0C,
+0x6B,0x00,0x0C,0x8A,0x02,0xED,0x90,0x07,0x2E,0x10,0xAF,0x00,0x88,0x6C,0xE7,0xFF,
+0xFA,0xC0,0xC2,0xE0,0x10,0x01,0x89,0x63,0xEC,0x77,0x07,0x0C,0x10,0xA1,0x07,0x0C,
+0x8A,0x02,0x88,0x6C,0xE7,0xFF,0xFA,0x94,0xC3,0x00,0x10,0x01,0xEC,0x78,0x07,0x18,
+0x0F,0x6E,0x02,0x0F,0x2D,0x02,0x0F,0x4A,0x02,0x43,0x1B,0xCC,0x23,0x00,0xEC,0xC3,
+0x20,0x1F,0xE0,0x20,0x00,0xD1,0xC3,0x80,0x10,0x01,0xEF,0xBC,0x07,0x16,0xC3,0x80,
+0x10,0x01,0xEF,0x9C,0x07,0x2A,0x43,0xBD,0xE5,0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,
+0x9D,0xE5,0xD7,0x1C,0x00,0xAC,0x41,0x6B,0xDB,0x42,0xE3,0xCB,0x8E,0xEB,0x43,0x17,
+0xC0,0x8F,0x58,0xE4,0x00,0x01,0x55,0x42,0xFA,0x1C,0xE4,0x00,0x01,0x5B,0xC9,0x80,
+0x07,0xFF,0x42,0xEC,0xBD,0xD6,0xE4,0x05,0x2C,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,
+0xCD,0x53,0x18,0x01,0x40,0x8C,0x25,0xEF,0x17,0x08,0xCD,0x1C,0xA1,0x07,0xE7,0xFF,
+0xF5,0x56,0x40,0x6C,0x1D,0x0C,0x6B,0x00,0xEE,0xF0,0x07,0x2E,0x0C,0x8A,0x02,0x41,
+0x8C,0xBD,0x10,0xAF,0x00,0x88,0x6C,0xE7,0xFF,0xF9,0x6E,0xC2,0xE0,0x10,0x01,0x89,
+0x63,0xEC,0x77,0x07,0x0C,0x10,0xA1,0x07,0x0C,0x8A,0x02,0x88,0x6C,0xE7,0xFF,0xF9,
+0x42,0xC3,0x00,0x10,0x01,0xEC,0x78,0x07,0x18,0x0F,0x6E,0x02,0x0F,0x2D,0x02,0x0F,
+0x4A,0x02,0x43,0x1B,0xCC,0x23,0x00,0xFC,0xC3,0x20,0x1F,0xE0,0x20,0x00,0xE1,0xC3,
+0x80,0x10,0x01,0xEF,0xBC,0x07,0x16,0xC3,0x80,0x10,0x01,0xEF,0x9C,0x07,0x2A,0x43,
+0xBD,0xE5,0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,0x9D,0xE5,0xD7,0x1C,0x00,0xCC,0x41,
+0x6B,0xDB,0x42,0xE3,0xCB,0x8E,0xEB,0x43,0x17,0xC0,0x43,0x5A,0xC5,0x0F,0x4A,0x00,
+0xE4,0x00,0x00,0x15,0x42,0xFA,0x1D,0x0E,0xEA,0x00,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,
+0x0D,0xC1,0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,
+0x21,0x26,0x1C,0x21,0x28,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,0x61,0x24,
+0x0D,0x81,0x20,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,0x0D,0xE1,0x14,0x0E,0x01,0x10,0x0E,
+0x21,0x0C,0x0E,0x41,0x08,0x5E,0x23,0x00,0x0E,0x61,0x04,0x56,0x11,0x03,0x4E,0xF1,
+0x11,0x5E,0x00,0x09,0x99,0xC0,0x4A,0x41,0x01,0x99,0x80,0x9A,0x64,0x0D,0x21,0x2C,
+0x8E,0x57,0x89,0x44,0x89,0xAE,0x89,0x6C,0x99,0xE0,0x42,0x73,0x25,0xE4,0x00,0x00,
+0xF3,0x42,0xF3,0x54,0xD6,0xF1,0x01,0xD8,0x22,0x04,0x4A,0x51,0xC0,0x10,0x11,0x6A,
+0x00,0x89,0xAE,0x51,0x80,0x10,0xE4,0x00,0x00,0x6B,0x22,0x08,0x4A,0x51,0xC0,0x10,
+0x11,0x6A,0x00,0x11,0x8A,0x01,0x89,0xAE,0xE4,0x00,0x00,0x47,0x22,0x0C,0x7E,0x11,
+0x6A,0x00,0x11,0x8A,0x01,0x11,0xAA,0x02,0x51,0xC0,0x10,0xE4,0x00,0x00,0x21,0x11,
+0x6A,0x00,0x11,0x8A,0x01,0x11,0xAA,0x02,0x11,0xCA,0x03,0x4E,0xEC,0x80,0x4C,0x8C,
+0xC0,0x8C,0x97,0x4E,0xEE,0x80,0x4F,0x0B,0x40,0x4C,0xAE,0xC0,0x8C,0xB7,0x4E,0xED,
+0x40,0x88,0x6F,0x8C,0x8B,0x8C,0xAD,0x8C,0x98,0x8C,0xB7,0x9D,0xE1,0xE4,0x00,0x96,
+0xE4,0x5D,0xEF,0x00,0x9D,0x44,0xD5,0xF2,0xFC,0x5E,0x0E,0x61,0x06,0x0E,0x41,0x0A,
+0x0E,0x21,0x0E,0x0E,0x01,0x12,0x0D,0xE1,0x16,0x0D,0xC1,0x1A,0x0D,0xA1,0x1E,0x0D,
+0x81,0x22,0x0D,0x61,0x26,0x0D,0x41,0x2A,0x0D,0x21,0x2E,0x1C,0x21,0x30,0x85,0x29,
+0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x00,0xDA,0x5E,0xE0,0x41,0x1C,0x21,0xE8,0x0D,0x61,
+0x0C,0x0D,0x81,0x08,0x0D,0xA1,0x04,0x0D,0x21,0x14,0x0D,0x41,0x10,0x89,0x63,0x5D,
+0x84,0x00,0x49,0xA1,0x01,0xE4,0x00,0x53,0x3E,0xC3,0x14,0x00,0x01,0xCB,0x18,0x7A,
+0x30,0x0A,0xF8,0x01,0xC6,0xF7,0x01,0x00,0x5E,0xF7,0x04,0x22,0xE3,0xD8,0xFC,0x60,
+0x01,0x00,0x99,0x40,0xE4,0x00,0x17,0xA0,0xE4,0x00,0x00,0x31,0x88,0x6A,0x98,0x81,
+0x88,0xAD,0x9D,0x41,0xE4,0x00,0xA7,0xF6,0x5D,0x4A,0x00,0x0C,0x6B,0x01,0x9D,0x62,
+0xD5,0x4C,0xFF,0x66,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,
+0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0xFC,0x21,0xFD,0xF0,0xED,0x41,0x02,0x08,
+0xED,0xC1,0x01,0xF8,0xED,0xE1,0x01,0xF4,0xEE,0x01,0x01,0xF0,0xED,0x21,0x02,0x0C,
+0xED,0x61,0x02,0x04,0xED,0x81,0x02,0x00,0xED,0xA1,0x01,0xFC,0xEE,0x21,0x01,0xEC,
+0xEE,0x41,0x01,0xE8,0xEE,0x61,0x01,0xE4,0xEE,0x81,0x01,0xE0,0xC2,0x00,0x10,0x01,
+0xC1,0xC0,0x10,0x01,0xC1,0xE0,0x10,0x01,0x89,0x43,0xFE,0x10,0x08,0x54,0xFD,0xCE,
+0x08,0x75,0xFD,0xEF,0x08,0x72,0x20,0x60,0x30,0x20,0x68,0x98,0x20,0x64,0x30,0x24,
+0x64,0x63,0x99,0x80,0xE4,0x00,0x00,0x0D,0x99,0x81,0xCD,0x8C,0x00,0x1A,0x51,0x60,
+0x1A,0x8D,0x90,0xE4,0x00,0x00,0x41,0xD0,0x64,0x00,0x82,0xD0,0x65,0x00,0xA2,0x99,
+0x80,0x89,0x6C,0xE4,0x00,0x00,0x21,0x89,0x8F,0x99,0x63,0xE4,0x00,0x00,0x11,0x89,
+0x8E,0x99,0x68,0x9A,0xE0,0x8A,0x81,0x53,0x20,0x10,0xE4,0x00,0x00,0x19,0x43,0x14,
+0xBC,0x9E,0xE1,0x1B,0x38,0x00,0x5F,0x17,0x00,0xD5,0x78,0xFF,0xAD,0x88,0x6B,0x88,
+0x81,0x99,0xA3,0xE7,0xFF,0xFB,0xE8,0x8A,0x81,0xFE,0x20,0xFE,0xB0,0xCA,0x40,0x01,
+0x50,0x52,0x60,0x3F,0x1C,0x61,0x60,0x88,0x8B,0xE7,0xFF,0xFD,0x8E,0x1F,0x21,0x60,
+0x8B,0x01,0x9B,0x41,0xE4,0x00,0x00,0x93,0x0A,0xF9,0x00,0xC2,0xFF,0xD5,0xEC,0x20,
+0x00,0x39,0x43,0x71,0xBD,0xC3,0x60,0x2A,0x0C,0xE4,0x00,0x00,0x0F,0x5E,0xE0,0x19,
+0x4B,0x61,0x01,0x23,0x60,0x98,0xFE,0xF7,0x01,0x50,0x13,0x58,0x00,0x42,0xF7,0x90,
+0x8E,0xFA,0x5E,0xF7,0x06,0x26,0xFC,0x34,0x5E,0xE7,0xF1,0x4A,0xF7,0x98,0xE4,0x00,
+0x00,0x0D,0x9A,0xE0,0x1A,0xF8,0x00,0x9B,0x40,0x9F,0x01,0x9F,0x22,0x42,0xF8,0xA5,
+0x5E,0xF7,0x00,0xD5,0x77,0xFD,0xAD,0x23,0x40,0x24,0x9A,0xE0,0xE4,0x00,0x00,0x51,
+0x88,0x6B,0x88,0x81,0x9D,0xBF,0xE7,0xFF,0xFA,0xE2,0x5D,0xAD,0x00,0x21,0xA2,0x1E,
+0xE7,0xFF,0xFF,0xD5,0x43,0x0C,0xBC,0x1F,0x21,0x00,0x8F,0x37,0x9E,0xE1,0x13,0x39,
+0x00,0x1B,0x38,0x00,0x5F,0x17,0x00,0xD5,0x78,0xFF,0x6D,0x21,0x40,0x74,0x21,0x48,
+0x38,0x21,0x44,0x9C,0xD1,0x44,0x01,0xEA,0xD1,0x45,0x02,0x5A,0x99,0x60,0x99,0x80,
+0x88,0x8B,0x89,0x4C,0xE4,0x00,0x00,0x9B,0xC1,0x80,0x10,0x01,0x99,0x60,0x88,0x90,
+0xFD,0x8C,0x0A,0xF8,0xE4,0x00,0x00,0x2D,0xC0,0x80,0x10,0x01,0xC1,0x80,0x10,0x01,
+0x99,0x61,0xFC,0x84,0x08,0x6E,0xFD,0x8C,0x0B,0x60,0x51,0x40,0x1A,0xE4,0x00,0x00,
+0x49,0xC1,0x80,0x10,0x01,0x99,0x68,0x88,0x8F,0xFD,0x8C,0x0B,0x84,0x99,0x43,0xE4,
+0x00,0x00,0x25,0xC1,0x80,0x10,0x01,0x99,0x6D,0x88,0x8E,0xFD,0x8C,0x0B,0xAC,0x99,
+0x48,0x88,0x6A,0xE7,0xFF,0xF9,0xC8,0xFD,0xA1,0x01,0x20,0x88,0x8A,0x88,0x6D,0xE7,
+0xFF,0xFB,0x82,0x9A,0xE0,0xE4,0x00,0x00,0x33,0x4F,0x17,0x10,0x4F,0x37,0x08,0x8F,
+0x0C,0x8F,0x2D,0x9E,0xE1,0x0B,0x39,0x00,0x4F,0x39,0x40,0x0F,0x38,0x00,0x5F,0x17,
+0x00,0xD5,0x58,0xFF,0x45,0x88,0x6B,0xE4,0x00,0x51,0x4E,0xED,0x21,0x02,0x0E,0xEE,
+0x81,0x01,0xE2,0xEE,0x61,0x01,0xE6,0xEE,0x41,0x01,0xEA,0xEE,0x21,0x01,0xEE,0xEE,
+0x01,0x01,0xF2,0xED,0xE1,0x01,0xF6,0xED,0xC1,0x01,0xFA,0xED,0xA1,0x01,0xFE,0xED,
+0x81,0x02,0x02,0xED,0x61,0x02,0x06,0xED,0x41,0x02,0x0A,0xFC,0x21,0x02,0x10,0x85,
+0x29,0x9C,0x38,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x04,0xFE,0xF7,0x08,0x54,0x9B,0x00,
+0x13,0x37,0x00,0x4F,0x39,0x08,0x9E,0xE1,0x8F,0x19,0xC3,0x20,0x10,0x01,0xFF,0x39,
+0x08,0x6E,0xD6,0xF9,0xFF,0x76,0xC2,0xE0,0x10,0x01,0xF3,0x57,0x08,0x72,0xFE,0xF7,
+0x08,0x72,0x13,0x37,0x02,0x13,0x77,0x01,0x98,0x60,0x42,0xFB,0xD4,0x98,0x80,0x8E,
+0xF9,0x53,0x20,0x37,0x4E,0xF7,0x08,0x8E,0xF8,0x97,0x03,0x4E,0xF7,0x09,0xCB,0x18,
+0xD0,0x8F,0xCE,0xF7,0x03,0x5B,0x42,0xF7,0xC9,0xCE,0xF7,0x00,0x1D,0xD6,0xF8,0x00,
+0xA1,0x97,0x2F,0x98,0x60,0xCB,0x39,0x42,0x3F,0x98,0x82,0xD6,0xF9,0x00,0x31,0x98,
+0x87,0xE4,0x00,0x9F,0x08,0x0D,0x21,0x06,0x98,0x61,0x98,0x80,0x9C,0x28,0xE4,0x00,
+0x9E,0xEF,0x9C,0x38,0x98,0x80,0x0D,0x21,0x04,0x98,0x66,0xE4,0x00,0x2E,0x14,0x98,
+0x60,0xE7,0xFF,0xFA,0x8E,0x98,0x87,0x98,0x66,0xE4,0x00,0x2D,0xF8,0x98,0x64,0xE7,
+0xFF,0xFA,0x72,0x98,0x66,0x98,0x88,0xE4,0x00,0x2D,0xDC,0x0D,0x21,0x06,0x98,0x65,
+0x9C,0x28,0xE7,0xFF,0xFA,0x4D,0xC2,0xE0,0x10,0x01,0x5C,0xA0,0x29,0xF3,0x37,0x0B,
+0x76,0x53,0x40,0x40,0x52,0xE0,0x20,0xC3,0x60,0x10,0x01,0x4B,0x5A,0xB8,0xFF,0x7B,
+0x09,0x68,0x20,0x60,0x6C,0xE4,0x00,0x00,0x55,0x4F,0x17,0x08,0x9E,0xE1,0x8F,0x1B,
+0x0B,0x18,0x00,0xD7,0x58,0x00,0x78,0x98,0x61,0xE4,0x00,0x00,0xD9,0x9A,0xE0,0x43,
+0x40,0xD5,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x25,0x98,0x60,0xE4,0x00,0x00,0xB5,0x20,
+0x67,0xEA,0x9A,0xE0,0x20,0x80,0xA6,0x9A,0xE0,0x43,0x80,0xD5,0xE4,0x00,0x00,0x7D,
+0x4F,0x17,0x08,0x8F,0x1B,0x0B,0x18,0x00,0x4F,0x98,0xFA,0x47,0x1C,0xC6,0x43,0x18,
+0xE5,0x0B,0x84,0x00,0xD7,0x1C,0x00,0x38,0x0F,0x04,0x01,0x9E,0xE1,0x5F,0x17,0x00,
+0xD7,0x38,0xFF,0x05,0xE7,0xFF,0xFF,0xA7,0x4F,0x17,0x08,0x8F,0x1B,0x0B,0x18,0x00,
+0xD7,0x98,0xFD,0x3C,0x9E,0xE1,0xD7,0x1A,0xFD,0x0C,0x5F,0x17,0x00,0xD7,0x38,0xFF,
+0x5D,0xE7,0xFF,0xFF,0x51,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xF3,
+0xB7,0x0B,0x76,0xC3,0xC0,0x10,0x01,0x9A,0xE0,0xFF,0x18,0x07,0x34,0x8B,0x37,0xFF,
+0xDE,0x09,0x68,0xE4,0x00,0x00,0x5B,0x4F,0x57,0x08,0x0B,0x98,0x00,0x8F,0x5E,0x0B,
+0x5A,0x00,0x43,0x9A,0xE5,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0x5F,0x66,
+0x11,0x20,0x00,0x21,0x9F,0x21,0x5F,0x39,0x00,0x0F,0x58,0x01,0x9E,0xE1,0x9F,0x02,
+0x5F,0x57,0x00,0xD7,0xBA,0xFE,0xA5,0x5F,0x20,0x93,0x48,0x61,0x01,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xC3,0x40,0x10,0x01,0xF3,0x37,0x0B,0x76,0xC3,0x60,0x10,0x01,0x9A,
+0xE0,0xFF,0x5A,0x07,0x34,0xFF,0x7B,0x09,0x68,0xE4,0x00,0x00,0x29,0x4F,0x17,0x08,
+0x9E,0xE1,0x43,0x9A,0xC4,0x8F,0x1B,0x0B,0x18,0x01,0x0F,0x1C,0x01,0x5F,0x17,0x00,
+0xD7,0x38,0xFF,0x6D,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xE6,0xC2,0xE0,
+0x10,0x01,0x9C,0x38,0xF8,0x17,0x08,0xDF,0x0D,0x21,0x04,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x08,0xF9,0x20,0x64,0x26,0x98,0x60,0xE4,0x00,0x00,0x0D,0x98,0x64,0x98,0x80,
+0xE4,0x00,0x2F,0xE6,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEC,0x17,0x07,0x30,0x9C,
+0x28,0xE4,0x00,0x49,0xDB,0x1C,0x21,0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0xEB,
+0x17,0x00,0xCD,0x0D,0x21,0x14,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x0C,0x01,0x07,0x89,
+0x43,0xC7,0x18,0x01,0x00,0x98,0x60,0xD3,0x00,0x06,0xAA,0xEB,0x17,0x00,0xCD,0xC7,
+0x18,0xFE,0xFF,0xEF,0x17,0x00,0xCD,0xE4,0x00,0x43,0x86,0xE4,0x00,0x44,0x92,0x21,
+0x44,0x36,0x98,0x61,0xE4,0x00,0x70,0x6C,0xE4,0x00,0x00,0x11,0xE4,0x00,0x70,0xBE,
+0xC1,0x60,0x10,0x01,0xEE,0xEB,0x07,0x32,0x5E,0xE0,0x01,0x98,0x6A,0x98,0x83,0x0C,
+0x01,0x07,0x1D,0x81,0x06,0x49,0x8C,0x00,0xE4,0x00,0x4F,0x66,0x98,0x61,0x88,0x8C,
+0x98,0xA1,0x88,0xCA,0xE7,0xFF,0xFC,0x44,0xC2,0xE0,0x10,0x01,0x20,0x60,0xE6,0xF3,
+0x17,0x08,0xE6,0x9F,0x01,0xFB,0x17,0x08,0xE6,0x0A,0xE1,0x06,0xD2,0xEF,0x00,0x94,
+0xC2,0xE0,0x10,0x01,0xF3,0x17,0x08,0xDF,0x9F,0x01,0xFB,0x17,0x08,0xDF,0x98,0x63,
+0x21,0x44,0x36,0x98,0x81,0xE4,0x00,0x6C,0x1C,0xE4,0x00,0x00,0x73,0xE4,0x00,0x6C,
+0x72,0xE4,0x00,0x00,0x63,0xF8,0x17,0x08,0xE6,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,
+0xDF,0xEE,0xEB,0x07,0x32,0x22,0xE3,0x66,0x0A,0xE1,0x06,0x5E,0xEC,0x11,0x23,0xFF,
+0x41,0x21,0x44,0x36,0x98,0x61,0xE4,0x00,0x4E,0x14,0xE4,0x00,0x00,0x11,0xE4,0x00,
+0x4E,0x4E,0x9B,0x01,0xC2,0xE0,0x10,0x01,0x98,0x61,0xEF,0x17,0x07,0x30,0xC2,0xE0,
+0x10,0x01,0xF3,0x17,0x08,0xF9,0x9F,0x01,0xFB,0x17,0x08,0xF9,0x0D,0x81,0x0A,0x0D,
+0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0x9C,0x38,0x0D,
+0x21,0x04,0x20,0x64,0x26,0x98,0x60,0xE4,0x00,0x00,0x0D,0x98,0x64,0x98,0x80,0xE4,
+0x00,0x2D,0x88,0x0D,0x21,0x06,0x9C,0x28,0xE4,0x00,0x47,0x8D,0x98,0x60,0x98,0xA0,
+0x88,0x83,0xE7,0xFF,0xC7,0xCD,0xC2,0xE0,0x10,0x01,0x98,0x61,0xF2,0xF7,0x08,0xE6,
+0xD2,0xEA,0x00,0x95,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0xDF,0x5E,0xE0,0xBB,0x48,
+0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0xF9,0x5E,0xE1,0xDB,0x48,
+0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x00,0x00,0x0C,0x17,0x00,0x0C,
+0x17,0x19,0x0C,0x17,0x1B,0xEC,0x17,0x00,0xA1,0xEC,0x17,0x00,0xA3,0xEC,0x17,0x00,
+0xA4,0x1F,0x17,0x08,0xEC,0x17,0x00,0xA1,0x0F,0x17,0x04,0x1F,0x17,0x20,0x0F,0x17,
+0x1C,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD1,0x53,0x18,0x02,0xEF,0x17,0x00,0xD1,
+0x85,0x29,0xC3,0x20,0x10,0x01,0xFF,0x19,0x00,0x00,0x1E,0xF8,0x20,0x5C,0x63,0x04,
+0x0E,0xF8,0x1C,0x9A,0xE0,0xE4,0x00,0x00,0x29,0x0F,0x38,0x1E,0x43,0x44,0xBC,0x8F,
+0x37,0x13,0x5A,0x00,0x9E,0xE1,0x1B,0x59,0x00,0x5F,0x37,0x04,0xD4,0x79,0xFF,0x6D,
+0x9A,0xE1,0xEE,0xF8,0x00,0xA4,0x85,0x29,0x9C,0x38,0x0D,0x21,0x04,0x0D,0x41,0x00,
+0x5D,0x43,0x00,0xE7,0xFF,0xFF,0x02,0x88,0x6A,0xE4,0x00,0x98,0x40,0x0D,0x21,0x06,
+0x0D,0x41,0x02,0x9C,0x28,0x85,0x29,0x1C,0x21,0xE0,0x0D,0x41,0x18,0x0D,0x61,0x14,
+0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xE1,0x04,0x0D,0x21,0x1C,0x0D,0xC1,0x08,0x0E,
+0x01,0x00,0xC1,0xA0,0x10,0x01,0xE4,0x00,0x99,0xB2,0xC1,0x80,0x10,0x01,0xC1,0x60,
+0x10,0x01,0xC1,0xE0,0x10,0x01,0x5C,0x63,0x00,0xFD,0xAD,0x00,0xC0,0xFD,0x8C,0x08,
+0x85,0xFD,0x6B,0x00,0xB8,0xFD,0x4F,0x00,0x00,0xD0,0x60,0x19,0x42,0xE4,0x00,0x99,
+0xB0,0x5C,0x63,0x00,0x20,0x60,0xBC,0x0C,0x0A,0x19,0xE4,0x00,0x9A,0x3C,0xE4,0x00,
+0x00,0x4B,0x0E,0xEA,0x06,0x0A,0x0A,0x19,0x8E,0x17,0xE4,0x00,0x9A,0x50,0x18,0x70,
+0x00,0x0A,0xEA,0x19,0xD2,0xEE,0x00,0x8D,0x0A,0xEA,0x19,0x9E,0xE1,0x5E,0xF7,0x04,
+0x0E,0xEA,0x19,0x99,0xC0,0xE4,0x00,0x98,0xCE,0x5C,0x63,0x00,0x20,0x63,0x5A,0x0E,
+0xEA,0x06,0x13,0x17,0x00,0x5F,0x0A,0x09,0x20,0x00,0x61,0x0A,0xEA,0x19,0xD2,0xE4,
+0x03,0x76,0xE4,0x00,0x99,0x78,0x0A,0xEA,0x19,0x22,0xE1,0xDA,0xE4,0x00,0x08,0x49,
+0x13,0x17,0x00,0x23,0x08,0x36,0x0A,0xEA,0x19,0x22,0xE9,0x4E,0xE7,0xFF,0xFF,0xCD,
+0x13,0x17,0x00,0x23,0x04,0x36,0x0A,0xEA,0x19,0x22,0xE5,0x0E,0xE7,0xFF,0xFF,0xAD,
+0x13,0x17,0x00,0x5F,0x0A,0x29,0x20,0x00,0xC3,0x13,0x17,0x00,0x5F,0x0A,0x49,0x23,
+0xFE,0xF3,0x13,0x17,0x00,0x5F,0x0A,0x69,0x20,0x00,0x7B,0x13,0x17,0x00,0x5F,0x0A,
+0x89,0x20,0x00,0x57,0x13,0x17,0x00,0x5F,0x04,0x09,0x20,0x00,0x33,0x12,0xF7,0x00,
+0x5E,0xE4,0x29,0x20,0x00,0x25,0x0A,0xEA,0x19,0x22,0xEE,0x64,0x98,0x61,0xE4,0x00,
+0xA9,0xE4,0x9D,0xC1,0xC1,0xC4,0xE2,0x0E,0x23,0xFD,0xB7,0xE7,0xFF,0xFF,0x0F,0x0E,
+0xEA,0x06,0x13,0x17,0x00,0xD3,0x00,0x1D,0x5A,0x13,0x17,0x00,0x5F,0x0B,0x9B,0x20,
+0x0E,0x85,0x13,0x17,0x00,0x5F,0x0A,0x49,0x07,0x00,0x80,0x20,0x00,0xA5,0x0B,0x2A,
+0x19,0xD3,0x24,0x11,0x36,0x13,0x37,0x01,0x13,0x57,0x02,0x12,0xF7,0x03,0x4F,0x39,
+0x40,0x47,0x39,0xD5,0xC3,0x22,0x7F,0xEE,0x20,0x08,0x3D,0x8F,0x19,0x1A,0xF8,0x00,
+0xE4,0x00,0x04,0x0F,0x13,0x37,0x00,0x5F,0x2A,0x69,0x20,0x02,0xCD,0x0B,0x2A,0x19,
+0xD3,0x23,0x1B,0x06,0x13,0x57,0x01,0x13,0x37,0x02,0x4E,0xFA,0x40,0x46,0xF7,0xCD,
+0xCB,0x20,0x14,0x00,0xC2,0xE2,0x80,0x0A,0x4A,0xF7,0xC8,0x8E,0xF8,0x0E,0xEA,0x1C,
+0xFE,0xE0,0x08,0x00,0xEE,0xEA,0x00,0xA1,0xE4,0x00,0x00,0x1D,0xE4,0x00,0x07,0x98,
+0x98,0x61,0xE4,0x00,0x07,0xC4,0xE4,0x00,0x96,0x66,0x5C,0x63,0x00,0x20,0x63,0xBC,
+0xEC,0x0A,0x00,0xA3,0xE4,0x00,0x97,0x6E,0xE4,0x00,0x97,0x00,0xEB,0x0A,0x00,0xA3,
+0xEA,0xEA,0x00,0xA1,0xD7,0x17,0x01,0x26,0xEA,0xEA,0x00,0xA3,0xEA,0xEA,0x00,0xA1,
+0xE4,0x00,0x96,0xF6,0xE4,0x00,0x97,0x62,0xE4,0x00,0x97,0x26,0xEC,0x0A,0x00,0xA3,
+0xEC,0x0A,0x00,0xA1,0xE4,0x00,0x05,0xD9,0xE4,0x00,0x96,0x54,0x5C,0x63,0x00,0x20,
+0x63,0x66,0xE4,0x00,0x95,0xA8,0x5C,0x63,0x00,0x20,0x63,0x0C,0xEA,0xEA,0x00,0xA3,
+0x0F,0x0A,0x1E,0x8E,0xF8,0x10,0x77,0x00,0xE4,0x00,0x95,0x22,0xEA,0xEA,0x00,0xA3,
+0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xEA,0x00,0xA3,0xE7,0xFF,0xFF,0x47,0x13,0x17,0x00,
+0xD3,0x01,0x04,0x26,0x0A,0xEA,0x19,0xD2,0xE1,0x0A,0x06,0xFE,0xEA,0x00,0xAC,0xEE,
+0xEA,0x00,0xA8,0x12,0xEB,0x00,0x22,0xE0,0x4A,0x9A,0xE8,0x53,0x00,0x52,0xFA,0xEA,
+0x00,0xB4,0x9A,0xE8,0xE4,0x00,0x00,0x21,0x9A,0xE8,0x53,0x00,0x62,0xFA,0xEA,0x00,
+0xB4,0x52,0xE0,0x80,0x1F,0x20,0x81,0xFB,0x2A,0x00,0xAC,0x13,0x2B,0x00,0xFB,0x2A,
+0x00,0xAD,0xFB,0x0A,0x00,0xAE,0xF8,0x0A,0x00,0xAF,0x5E,0xF7,0x00,0xFA,0xEA,0x00,
+0xB0,0xF8,0x0A,0x00,0xB1,0xF8,0x0A,0x00,0xB2,0xC2,0xE0,0x10,0x01,0xF8,0x0A,0x00,
+0xB3,0xEB,0x17,0x00,0xD1,0xC7,0x18,0xFF,0xFD,0xEF,0x17,0x00,0xD1,0x12,0xEC,0x00,
+0x52,0xF7,0x01,0x9B,0x01,0x1A,0xEC,0x00,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x81,
+0xE4,0x00,0x01,0x8F,0x13,0x17,0x00,0x23,0x09,0x4A,0x0B,0x0A,0x19,0xD3,0x02,0x05,
+0xD6,0x12,0xF7,0x01,0x22,0xE0,0x4A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF9,0x18,
+0x17,0x00,0xE4,0x00,0x00,0x29,0x22,0xE4,0x5E,0xC2,0xF4,0x00,0x01,0x9B,0x01,0xCA,
+0xF7,0x3D,0xF9,0x1B,0x17,0x00,0x12,0xF7,0x00,0xE4,0x00,0x00,0x2D,0xD2,0xE2,0x04,
+0x56,0xC3,0x14,0x00,0x01,0xCB,0x18,0x3D,0xF9,0x1A,0xF8,0x00,0x12,0xF8,0x00,0x5E,
+0xF7,0x00,0x1A,0xEB,0x00,0xE4,0x00,0x00,0xE5,0x13,0x17,0x00,0x5F,0x04,0x09,0x20,
+0x00,0x99,0x0B,0x0A,0x19,0x23,0x0D,0x8A,0x13,0x37,0x01,0x13,0x17,0x02,0x4E,0xF9,
+0x40,0x46,0xF7,0xC5,0xC2,0xEB,0x54,0xA4,0x20,0x01,0x3D,0x12,0xED,0x00,0x52,0xF7,
+0x03,0xE4,0x00,0x00,0x87,0x13,0x17,0x00,0x5F,0x04,0x29,0x20,0x06,0x95,0x0B,0x0A,
+0x19,0x23,0x0C,0xDA,0x13,0x37,0x01,0x13,0x17,0x02,0x4E,0xF9,0x40,0x46,0xF7,0xC5,
+0xC3,0x00,0x10,0x01,0xEE,0xF8,0x00,0xC4,0x12,0xED,0x00,0x57,0x37,0x01,0x23,0x20,
+0x64,0xEF,0x18,0x00,0xC6,0x23,0x00,0x32,0x9B,0x1B,0x46,0xF7,0xC4,0xE4,0x00,0x00,
+0x0F,0x52,0xF7,0x04,0x1A,0xED,0x00,0x0C,0x0A,0x00,0x0C,0x0A,0x19,0xE4,0x00,0x02,
+0xC7,0xE4,0x00,0x92,0xD0,0x5C,0x63,0x00,0xD0,0x60,0x0A,0xC2,0xE4,0x00,0x94,0x12,
+0xE4,0x00,0x93,0xD6,0x50,0x60,0x20,0xE4,0x00,0x03,0xA2,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x3D,0xF9,0x12,0xF7,0x00,0x1A,0xEB,0x00,0x12,0xEB,0x00,0x22,0xE0,0x4E,0x12,
+0xED,0x00,0x56,0xF7,0x01,0x5E,0xE0,0x09,0x49,0xA4,0x43,0xE4,0x00,0x00,0x43,0x12,
+0xEB,0x00,0x22,0xE4,0x2A,0x51,0xA0,0x80,0xE4,0x00,0x00,0x29,0x12,0xEB,0x00,0x22,
+0xEB,0xD8,0x12,0xEB,0x00,0x22,0xEF,0xC0,0xC9,0xA0,0xFF,0xFF,0xEE,0xEA,0x00,0xA6,
+0x22,0xE4,0x2E,0xED,0xAA,0x00,0xA1,0xEC,0x0A,0x00,0xA4,0xE4,0x00,0x93,0x20,0xEA,
+0xEA,0x00,0xA1,0xD5,0xB7,0x00,0x71,0x12,0xEC,0x00,0x56,0xF7,0x01,0xD2,0xE0,0x05,
+0x22,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x08,0xAC,0x23,0x00,0x24,0x9F,0x1F,0xFB,0x17,
+0x08,0xAC,0xEC,0x0A,0x00,0xA3,0x12,0xEC,0x00,0x56,0xF7,0x01,0x22,0xE0,0x2C,0xF1,
+0xAA,0x00,0xB4,0xE4,0x00,0x00,0xAD,0xE9,0xAA,0x00,0xA1,0xE4,0x00,0x00,0x9D,0x12,
+0xEB,0x00,0x22,0xE0,0x42,0x12,0xEC,0x00,0x56,0xF7,0x01,0x22,0xE0,0x56,0xE4,0x00,
+0x00,0x3D,0xE4,0x00,0x91,0x02,0x5C,0x63,0x00,0x20,0x63,0xE4,0xE7,0xFF,0xFF,0xD3,
+0xEA,0xEA,0x00,0xA3,0xEF,0x0A,0x00,0xAA,0xE4,0x00,0x00,0x17,0xEA,0xEA,0x00,0xA3,
+0x0F,0x0A,0x1E,0x8E,0xF8,0x10,0x77,0x00,0xE4,0x00,0x90,0x82,0xEA,0xEA,0x00,0xA3,
+0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xEA,0x00,0xA3,0xEA,0xEA,0x00,0xA3,0xD6,0xED,0xFD,
+0x96,0xE4,0x00,0x92,0x28,0xE4,0x00,0x91,0xEC,0xEC,0x0A,0x00,0xA1,0xEC,0x0A,0x00,
+0xA3,0xE4,0x00,0x00,0x45,0x98,0x60,0x9D,0x61,0xE4,0x00,0x90,0x20,0xE4,0x00,0x00,
+0x0D,0x99,0x60,0xD5,0xAB,0xFF,0x95,0xE4,0x00,0x91,0xDC,0xE4,0x00,0x91,0xA0,0xEC,
+0x0A,0x00,0xA1,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD1,0x53,0x18,0x02,0xEF,0x17,
+0x00,0xD1,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x81,0xC3,0x00,0x32,0x0A,0x20,0x00,
+0x49,0x13,0x0C,0x00,0x9B,0x3E,0xEC,0x17,0x08,0x81,0x47,0x18,0xCC,0x1B,0x0C,0x00,
+0x0E,0x01,0x02,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,0x0D,
+0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0x9C,0x38,0x0D,
+0x21,0x04,0xE4,0x00,0x98,0x54,0x98,0x60,0x88,0x83,0xE4,0x00,0x95,0x86,0x98,0x61,
+0x98,0x82,0xE4,0x00,0x95,0x76,0x98,0x60,0xFC,0x80,0x3E,0x0C,0xE4,0x00,0x91,0x62,
+0x98,0x61,0xFC,0x80,0x3E,0x0C,0xE4,0x00,0x92,0xC8,0x0D,0x21,0x06,0x9C,0x28,0xE4,
+0x00,0x9B,0x1F,0x20,0x64,0x1E,0xE4,0x00,0x9C,0x49,0xE4,0x00,0x9C,0x67,0x9C,0x38,
+0x0D,0x21,0x04,0xE4,0x00,0x9C,0x7C,0x0D,0x21,0x06,0x9C,0x28,0xE4,0x00,0x9C,0x43,
+0xE4,0x00,0x9E,0x3B,0xE4,0x00,0x9E,0xA3,0xE4,0x00,0x9E,0xFF,0xE4,0x00,0xA2,0xDD,
+0xE4,0x00,0xA0,0x47,0xE4,0x00,0x9F,0x4B,0xE4,0x00,0x9F,0x81,0xE4,0x00,0x9F,0xB7,
+0xE4,0x00,0x9F,0xDB,0xE4,0x00,0x9F,0xFF,0xE4,0x00,0x9E,0x35,0xE4,0x00,0xA0,0x2D,
+0x20,0x60,0x28,0x20,0x64,0x3E,0xE4,0x00,0x00,0x11,0xE4,0x00,0xA0,0xC9,0xE4,0x00,
+0xA0,0xE3,0x85,0x29,0xE4,0x00,0xA0,0xF9,0xC2,0xE0,0x10,0x01,0xE8,0x77,0x00,0xBB,
+0xEB,0x17,0x00,0xBB,0xD4,0x78,0xFF,0xC6,0x85,0x29,0xE4,0x00,0xA3,0x99,0xC3,0x34,
+0x00,0x01,0xCA,0xF9,0x23,0xFC,0x0A,0xF7,0x00,0xD2,0xFF,0x04,0x3C,0xC3,0x00,0x10,
+0x01,0xF2,0xF8,0x07,0x6E,0x9E,0xE1,0x5E,0xF7,0x00,0xFA,0xF8,0x07,0x6E,0x22,0xE1,
+0xCA,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,0x01,0xFF,0x18,0x01,0xBE,0xCA,0xE0,0x11,
+0x7D,0xCB,0x39,0x22,0x00,0xFF,0x7B,0x09,0x68,0x1F,0x57,0xFD,0x57,0x5A,0xFF,0x4F,
+0x5A,0x10,0x8F,0x59,0x0B,0x9A,0x01,0x4F,0x97,0x08,0x8F,0x9B,0xEB,0x9C,0xDD,0x3B,
+0x0F,0x9A,0x01,0x5F,0x57,0x00,0x5F,0x4F,0xE9,0x57,0x57,0xFF,0x4F,0x5A,0x10,0x8F,
+0x59,0x0B,0x9A,0x01,0x20,0x00,0x6D,0xFF,0xA0,0x80,0x00,0x5F,0x9C,0x04,0x47,0x9C,
+0xEC,0x0B,0xB8,0x01,0xC7,0xBD,0x7F,0xFF,0x47,0x9C,0xED,0xE4,0x00,0x00,0x0F,0x0B,
+0x98,0x01,0x0F,0x9A,0x01,0x9E,0xE1,0x9F,0x02,0xC2,0xE2,0x30,0x04,0x23,0xFE,0xB1,
+0x85,0x29,0x5C,0x63,0x04,0xE4,0x00,0xA2,0x6B,0x9A,0xE0,0x8B,0x17,0xE4,0x00,0x00,
+0x1D,0x43,0x23,0xBC,0x9E,0xE1,0x13,0x39,0x00,0x8F,0x19,0xD4,0x97,0xFF,0xB4,0x40,
+0x60,0xC5,0x85,0x29,0x9C,0x38,0x98,0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFD,0x90,0x98,
+0x61,0xE7,0xFF,0xFD,0x84,0x98,0x6F,0xE7,0xFF,0xFE,0x3A,0x0D,0x21,0x06,0x98,0x60,
+0x9C,0x28,0xE7,0xFF,0xFD,0x63,0x9C,0x38,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x04,0xEC,
+0x17,0x08,0x7F,0x0D,0x41,0x00,0xC2,0xE0,0x10,0x01,0x50,0x60,0x80,0xF2,0xF7,0x00,
+0xB8,0x22,0xE0,0x52,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x00,0xC0,0x56,0xF7,0x01,0x5E,
+0xE0,0x09,0x48,0x64,0x43,0xC1,0x40,0x10,0x01,0xEA,0xEA,0x00,0xD1,0x56,0xF7,0x02,
+0x22,0xE0,0x6C,0xC0,0x80,0x10,0x01,0xFC,0x84,0x07,0x70,0xE7,0xFF,0xF1,0xEE,0xEA,
+0xEA,0x00,0xD1,0xC6,0xF7,0xFF,0xFD,0xEE,0xEA,0x00,0xD1,0x0D,0x41,0x02,0x0D,0x21,
+0x06,0x9C,0x28,0xE7,0xFF,0xFF,0x03,0x9C,0x30,0xC3,0x00,0x10,0x01,0x0D,0x21,0x0C,
+0xFC,0x98,0x07,0x70,0x0D,0x41,0x08,0x8A,0xE4,0x8B,0x24,0x18,0x17,0x00,0xC3,0x00,
+0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0xF2,0xD6,0xF8,0xFF,0x9E,0x52,0xE0,0x62,0x1F,
+0x19,0x1F,0x1A,0xE4,0x00,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x07,0x71,0x18,0x17,0x00,
+0x9E,0xE1,0xD7,0x17,0xFF,0xDE,0x1E,0xE0,0x9E,0xC3,0x60,0x10,0x01,0x1A,0xE4,0x1F,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF8,0x12,0xF7,0x00,0xFA,0xFB,0x07,0x6F,0xF2,
+0xFB,0x07,0x6F,0x22,0xEC,0xCC,0xC2,0xE0,0x10,0x01,0xC3,0x40,0x10,0x01,0xF3,0xB7,
+0x0B,0x76,0x9B,0x00,0xC2,0xE0,0x10,0x01,0xC3,0xC0,0x10,0x01,0xC1,0x00,0x10,0x01,
+0xFE,0xF7,0x07,0x90,0xFF,0x5A,0x09,0xA4,0x8B,0x38,0xFF,0xDE,0x0C,0xF2,0xFD,0x08,
+0x09,0x68,0xE4,0x00,0x01,0x09,0xC3,0x80,0x10,0x01,0x9A,0xE0,0xFF,0x9C,0x0B,0x60,
+0x8B,0x64,0x43,0x17,0xE4,0x0B,0x38,0x00,0x43,0x17,0xDC,0x4F,0x59,0x42,0x1B,0x38,
+0x21,0x1B,0x58,0x20,0x9E,0xE2,0x5E,0xE2,0x09,0x23,0xFF,0xA5,0x0C,0x81,0x04,0x50,
+0x60,0x20,0xE7,0xFF,0xFB,0x9C,0xC1,0x40,0x10,0x01,0xEA,0xEA,0x00,0xD1,0x0C,0x81,
+0x06,0x56,0xF7,0x02,0x22,0xE1,0x74,0xE4,0x00,0x00,0x8F,0xF3,0x9B,0x07,0x6F,0x23,
+0x84,0x34,0x23,0x88,0x68,0x43,0x98,0x44,0xE4,0x00,0x00,0x0F,0x43,0x98,0xF4,0x15,
+0x5C,0x01,0x19,0x57,0x00,0x0B,0x9C,0x01,0xE4,0x00,0x00,0x21,0x0F,0x9A,0x02,0x4D,
+0x5C,0x82,0x4F,0x9C,0x42,0x19,0x57,0x00,0x1B,0x97,0x01,0x9F,0x21,0x9F,0x02,0x5F,
+0x39,0x04,0x9E,0xE2,0x9F,0x44,0xD7,0xB9,0xFE,0x2D,0xE7,0xFF,0xFF,0x45,0x50,0x60,
+0x80,0xE7,0xFF,0xEF,0x82,0xEA,0xEA,0x00,0xD1,0xC6,0xF7,0xFF,0xFD,0xEE,0xEA,0x00,
+0xD1,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0xE7,0xFF,0xFC,0x95,0xC2,0xE0,
+0x10,0x01,0xC3,0x00,0x10,0x01,0xF0,0x77,0x0B,0xEC,0xC3,0x20,0x10,0x01,0xC2,0xE0,
+0x10,0x01,0xFF,0x18,0x0B,0xFE,0xFE,0xF7,0x07,0xF8,0xFF,0x39,0x08,0x00,0x9B,0x60,
+0x98,0x81,0xE4,0x00,0x01,0x7D,0x0B,0x57,0x01,0xC3,0x4F,0xFF,0xE0,0x20,0x00,0x35,
+0x0B,0x57,0x03,0xC3,0x4F,0xFF,0xE4,0x20,0x00,0x49,0x0B,0x58,0x01,0x18,0x19,0x00,
+0x0F,0x57,0x01,0x0B,0x58,0x03,0x0F,0x57,0x03,0x13,0x59,0x00,0x23,0x41,0x22,0x0B,
+0x98,0x03,0x0B,0x57,0x03,0x43,0x5C,0xD5,0x5F,0x5A,0x06,0x4F,0xDA,0xFA,0x0B,0xB8,
+0x01,0x47,0x5E,0xD6,0x09,0x17,0x01,0x43,0x5A,0xF5,0x41,0x1D,0x45,0x5D,0x08,0x06,
+0x4F,0xC8,0xFA,0x45,0x1E,0x46,0x43,0xC8,0xF5,0x8F,0xDA,0x5F,0xCC,0x99,0x20,0x00,
+0x25,0x5F,0x46,0x51,0x20,0x01,0x11,0x18,0x99,0x00,0x0F,0xB7,0x01,0x0F,0x97,0x03,
+0xE4,0x00,0x00,0x71,0x0B,0x98,0x01,0x0B,0xD7,0x01,0x43,0xDC,0xF5,0x5F,0xDE,0x06,
+0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x0B,0x58,0x03,0x41,0x1E,0xED,0x0B,0xD7,0x03,0x43,
+0xDA,0xF5,0x5F,0xDE,0x06,0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x43,0xBD,0xF5,0xD7,0xA8,
+0x00,0x52,0x0F,0x97,0x01,0x0F,0x57,0x03,0x0B,0x57,0x01,0x9F,0x61,0x0F,0x58,0x01,
+0x5F,0x7B,0x00,0x0B,0x57,0x03,0x9F,0x21,0x0F,0x58,0x03,0x9E,0xE4,0x1F,0x18,0x30,
+0xD7,0x63,0xFA,0x36,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3D,0xF9,0x1C,0x21,
+0xE0,0xCA,0xF7,0x3D,0xF8,0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,
+0x0C,0x0D,0xC1,0x08,0x0D,0xE1,0x04,0x0E,0x01,0x00,0x0D,0x21,0x1C,0xC1,0x80,0x10,
+0x01,0xFD,0x8C,0x08,0xE2,0x0A,0x0C,0x01,0xC6,0x10,0x7F,0xFF,0x0E,0x0C,0x01,0x13,
+0x38,0x00,0xC3,0x00,0x10,0x01,0xFB,0x38,0x00,0xB8,0x13,0x37,0x00,0xC2,0xE0,0x10,
+0x01,0xFB,0x37,0x07,0x6F,0xC1,0xA0,0x10,0x01,0xC1,0xC0,0x10,0x01,0xC3,0x60,0x10,
+0x01,0xC3,0x40,0x10,0x01,0x5C,0x63,0x00,0xFD,0xAD,0x07,0xF4,0xFD,0xCE,0x09,0x68,
+0xFD,0xE0,0x80,0x00,0xFD,0x5B,0x07,0x70,0xFD,0x7A,0x0B,0xEC,0xD0,0x61,0x14,0x46,
+0x0B,0x2B,0x16,0x0A,0xEB,0x18,0x45,0xF0,0x7D,0x0E,0xEB,0x17,0x0D,0xEC,0x01,0x0F,
+0x2B,0x19,0x13,0x0B,0x00,0xD3,0x01,0x1F,0x61,0x0B,0x6B,0x46,0x0B,0x0B,0x48,0x0F,
+0x6B,0x49,0x0F,0x0B,0x47,0xD7,0x17,0x1F,0x34,0x0E,0xEB,0x47,0x0F,0x0B,0x17,0x0F,
+0x2B,0x49,0x0F,0x6B,0x19,0xE4,0x00,0x07,0xAD,0xC2,0xE0,0x10,0x01,0x5F,0x98,0x04,
+0xEA,0xF7,0x0B,0x7D,0x5F,0x17,0x15,0x4A,0xFC,0xB8,0x0E,0xEB,0x13,0xCF,0x39,0x00,
+0x30,0x9A,0xE0,0x8F,0x2B,0x0B,0x19,0x18,0x27,0x1C,0x50,0xC2,0xE0,0x10,0x01,0x5F,
+0x38,0x04,0xEA,0xF7,0x0B,0x7F,0x5F,0x17,0x15,0x4A,0xF9,0xB8,0x0E,0xEB,0x15,0xCE,
+0xFB,0x00,0x30,0x8E,0xEB,0x0B,0x17,0x16,0x9A,0xE0,0x27,0x1C,0x50,0xC2,0xE0,0x10,
+0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,0x7D,0x5F,0x17,0x15,0x4A,0xF9,0xB8,0x0E,0xEB,
+0x43,0xCF,0x7B,0x00,0x30,0x9A,0xE0,0x8F,0x6B,0x0B,0x1B,0x18,0x27,0x1C,0x50,0xC2,
+0xE0,0x10,0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,0x7F,0x5F,0x17,0x15,0x4A,0xF9,0xB8,
+0x0E,0xEB,0x45,0xE4,0x00,0x00,0x63,0xC3,0x00,0x10,0x01,0x5F,0x77,0x04,0xEB,0x18,
+0x0B,0x7D,0x5E,0xF8,0x15,0x4B,0x1B,0xC0,0x0F,0x0B,0x13,0x9A,0xE0,0x27,0x3C,0x50,
+0xC2,0xE0,0x10,0x01,0x5F,0x19,0x04,0xEA,0xF7,0x0B,0x7F,0x5F,0x37,0x15,0x4A,0xF8,
+0xB8,0x0E,0xEB,0x15,0xE7,0xFF,0xFB,0x74,0xC2,0xE0,0x10,0x01,0x13,0x0B,0x00,0xFE,
+0xF7,0x0C,0x00,0x9B,0x20,0x9B,0x4C,0xFF,0x60,0x07,0xF9,0xE4,0x00,0x00,0x47,0x0B,
+0x97,0x01,0xD3,0x8B,0x00,0x3D,0x0F,0x57,0x01,0x0B,0x97,0x01,0xC3,0x80,0xFF,0x2A,
+0x20,0x00,0x19,0x0F,0x77,0x01,0x9F,0x21,0x1E,0xF7,0x30,0x5F,0x39,0x04,0xD7,0x19,
+0xFF,0x0D,0x27,0x04,0x7D,0x0B,0x2B,0x43,0x0A,0xEB,0x13,0x42,0xF9,0xBD,0x0B,0x2B,
+0x45,0x0E,0xEB,0x1B,0x0A,0xEB,0x15,0x42,0xF9,0xBD,0x0E,0xEB,0x1D,0xE4,0x00,0x00,
+0x15,0x0C,0x0B,0x1B,0x0C,0x0B,0x1D,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x00,0xB8,0x22,
+0xE1,0x9E,0x52,0xE0,0x52,0x0B,0x2B,0x13,0x1A,0xEA,0x00,0x4F,0x79,0x41,0x0A,0xEB,
+0x15,0x4F,0x7B,0x20,0x4F,0x57,0x41,0x1B,0x2A,0x02,0x57,0x5A,0x0F,0x1A,0xEA,0x03,
+0x47,0x5B,0xD5,0x1B,0x4A,0x01,0x27,0x04,0xA1,0x0B,0x0B,0x1A,0x0A,0xEB,0x1C,0x4F,
+0x38,0x42,0x4F,0x57,0x42,0x5F,0x39,0x04,0x57,0x5A,0x0F,0x4F,0x39,0x20,0x1B,0x0A,
+0x05,0x47,0x39,0xD5,0x1A,0xEA,0x06,0x1B,0x2A,0x04,0xE4,0x00,0x00,0x1B,0x18,0x0A,
+0x04,0x18,0x0A,0x05,0x18,0x0A,0x06,0x88,0x6A,0x98,0x87,0xE7,0xFF,0xF6,0x3C,0x18,
+0x6A,0x07,0xE4,0x00,0x01,0x8B,0x8A,0xEA,0x18,0x17,0x00,0xC3,0x20,0x10,0x01,0x9E,
+0xE1,0xFF,0x39,0x07,0xF2,0xD6,0xF9,0xFF,0x9E,0x52,0xE0,0x62,0x1A,0xEA,0x00,0x0A,
+0xEB,0x13,0x4F,0x37,0x41,0x1A,0xEA,0x02,0x0A,0xEB,0x15,0x1B,0x2A,0x01,0x1A,0xEA,
+0x04,0x4F,0x37,0x41,0x56,0xF8,0x01,0x4F,0x18,0x20,0x52,0xF7,0x20,0x53,0x18,0x02,
+0x1A,0xEA,0x11,0x1B,0x0A,0x12,0x0A,0xEB,0x1A,0x4F,0x17,0x42,0x1A,0xEA,0x0E,0x1B,
+0x0A,0x0D,0x0A,0xEB,0x1C,0x4F,0x17,0x42,0x1B,0x2A,0x03,0x1B,0x0A,0x0F,0x1A,0xEA,
+0x10,0x88,0x6A,0x50,0x80,0x1F,0xE7,0xFF,0xF5,0x66,0xC2,0xE0,0x10,0x01,0xC3,0x20,
+0x10,0x01,0xC3,0x80,0x10,0x01,0x18,0x6A,0x1F,0xFE,0xF7,0x07,0x90,0xFF,0x39,0x09,
+0xA4,0x9B,0x00,0xC3,0x60,0x10,0x01,0xFF,0x9C,0x0C,0xF2,0xF3,0x5B,0x07,0x6F,0x23,
+0x44,0x34,0x23,0x48,0x68,0x43,0x58,0x74,0xE4,0x00,0x00,0x0F,0x43,0x58,0xE4,0x17,
+0xBA,0x01,0x1B,0xB7,0x00,0x0B,0x5A,0x01,0xE4,0x00,0x00,0x21,0x0F,0x59,0x02,0x4F,
+0xBA,0x82,0x4F,0x5A,0x42,0x1B,0xB7,0x00,0x1B,0x57,0x01,0x9F,0x02,0x9E,0xE2,0x9F,
+0x24,0x5F,0x07,0x49,0x23,0xFF,0x1D,0x0A,0xEC,0x00,0xD2,0xFF,0x0D,0x9C,0x9A,0xE1,
+0xE4,0x00,0x02,0xF5,0xD0,0x60,0x05,0x66,0xFE,0xE0,0x7F,0xFF,0xC3,0x20,0x10,0x01,
+0xC3,0x40,0x10,0x01,0xEE,0xF9,0x07,0xF9,0xF8,0x1A,0x08,0x00,0xFF,0x39,0x07,0xF8,
+0xFF,0x5A,0x08,0x00,0x0E,0xF9,0x03,0x0E,0xF9,0x05,0x0E,0xF9,0x07,0x18,0x1A,0x01,
+0xF2,0xF8,0x00,0xB8,0x22,0xE0,0xB2,0x52,0xE0,0x52,0x1A,0xEA,0x00,0x9A,0xFF,0x88,
+0x6A,0x1A,0xEA,0x01,0x1A,0xEA,0x02,0x1A,0xEA,0x03,0x1A,0xEA,0x04,0x1A,0xEA,0x05,
+0x1A,0xEA,0x06,0x98,0x87,0xE7,0xFF,0xF3,0xE8,0x18,0x6A,0x07,0xE4,0x00,0x00,0x89,
+0x8A,0xEA,0x18,0x17,0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0xF2,0xD6,
+0xF8,0xFF,0x9E,0x52,0xE0,0x62,0x9B,0x1F,0x1A,0xEA,0x00,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x07,0x71,0x1B,0x17,0x00,0xC3,0x20,0x10,0x01,0x9E,0xE1,0xFF,0x39,0x07,0x8F,
+0xD6,0xF9,0xFF,0x9E,0x88,0x6A,0x50,0x80,0x1F,0xE7,0xFF,0xF3,0x60,0x18,0x6A,0x1F,
+0x0A,0xEC,0x01,0x0C,0x0D,0x00,0x45,0xEF,0xBD,0x0D,0xEC,0x01,0xE4,0x00,0x02,0x03,
+0xD0,0x62,0x07,0xEE,0xF2,0xF8,0x00,0xB8,0x22,0xE0,0xD2,0x52,0xE0,0x52,0xC3,0x00,
+0x10,0x01,0x1A,0xEA,0x00,0xEB,0x18,0x08,0x7F,0x9A,0xFF,0x1B,0x0A,0x05,0x1A,0xEA,
+0x01,0x1A,0xEA,0x02,0x1A,0xEA,0x03,0x1A,0xEA,0x04,0x1A,0xEA,0x06,0x88,0x6A,0x98,
+0x87,0xE7,0xFF,0xF2,0xD0,0x18,0x6A,0x07,0xE4,0x00,0x01,0x15,0x8A,0xEA,0x18,0x17,
+0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0xF2,0xD6,0xF8,0xFF,0x9E,0x52,
+0xE0,0x62,0x1A,0xEA,0x00,0x0A,0xEB,0x13,0x4F,0x17,0x41,0x1A,0xEA,0x02,0x1B,0x0A,
+0x01,0x0A,0xEB,0x15,0x4F,0x17,0x41,0x1A,0xEA,0x04,0x1B,0x0A,0x03,0x12,0xEB,0x00,
+0x57,0x17,0x01,0x4E,0xF7,0x20,0x53,0x18,0x20,0x52,0xF7,0x02,0x1B,0x0A,0x11,0x1A,
+0xEA,0x12,0x0A,0xEB,0x1A,0x4F,0x17,0x42,0x1A,0xEA,0x0E,0x1B,0x0A,0x0D,0x0A,0xEB,
+0x1C,0x4F,0x17,0x42,0x1A,0xEA,0x10,0x1B,0x0A,0x0F,0x88,0x6A,0x50,0x80,0x1F,0xE7,
+0xFF,0xF1,0xF4,0x9A,0xE0,0x18,0x6A,0x1F,0x43,0x17,0x74,0x0B,0x38,0x00,0x43,0x17,
+0x54,0x4F,0x59,0x42,0x1B,0x38,0x21,0x1B,0x58,0x20,0x9E,0xE2,0x5E,0xE7,0x49,0x23,
+0xFF,0xA5,0x45,0xF0,0x7D,0x9A,0xE2,0x0D,0xEC,0x01,0x0E,0xED,0x00,0xE4,0x00,0x00,
+0x61,0x9B,0x00,0xD2,0xFF,0xE6,0x28,0xE7,0xFF,0xF9,0x61,0x0A,0xEB,0x46,0x0B,0x0B,
+0x16,0x5E,0xF8,0x15,0x4B,0x21,0x01,0xCE,0xF9,0x00,0x30,0x8E,0xEB,0x4B,0x60,0x0A,
+0x0B,0x17,0x16,0x9A,0xE0,0xD3,0x1F,0xE0,0xA4,0xE7,0xFF,0xF8,0x43,0x0E,0x01,0x02,
+0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,0x0D,0x61,0x16,0x0D,
+0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0x5C,0x63,0x00,0xCF,0x03,0x00,
+0x34,0xCE,0xE3,0x00,0x68,0x1C,0x21,0xC0,0xC0,0x80,0x10,0x01,0x0D,0x21,0x3C,0x1C,
+0x61,0x04,0xFC,0x84,0x09,0x34,0xC0,0xA0,0x10,0x01,0x8C,0x98,0xFC,0xA5,0x0A,0xF8,
+0x50,0xC0,0x1A,0x8C,0xB7,0xE4,0x00,0x29,0xD2,0x0D,0x21,0x3E,0x1C,0x21,0x40,0x85,
+0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,0x81,0x20,0x5D,0x43,0x00,0x5D,0x84,0x00,
+0x42,0xEC,0x55,0x9E,0xE1,0x5E,0xF7,0x00,0x57,0x17,0x03,0x4E,0xF7,0x11,0x5F,0x00,
+0x09,0x0D,0x61,0x24,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,0x49,0xA1,0x01,0x0D,0x21,0x2C,
+0x8D,0xB7,0xC1,0xD8,0x00,0x21,0xE4,0x00,0x6A,0x4E,0x99,0x60,0xFD,0xCE,0xB9,0xDF,
+0xE4,0x00,0x00,0xE3,0x88,0x61,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,0xFF,0xC1,0x5A,
+0x9A,0xE4,0x43,0x0E,0x54,0x13,0x58,0x00,0x1F,0x01,0x18,0x4F,0x3A,0x09,0x57,0x5A,
+0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,0x50,0x7B,0x47,0x5A,0xC4,0x5F,
+0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,0x02,0x1F,0x61,0x18,0x47,0x18,
+0xD5,0x8F,0x3B,0x1B,0x19,0xE8,0x9D,0x41,0x5D,0x4A,0x00,0xD5,0x4C,0x00,0xE1,0x06,
+0xE0,0x81,0xCC,0x6B,0x00,0x18,0x88,0x81,0x8C,0x77,0x50,0xA0,0x18,0x9D,0x61,0xE7,
+0xFF,0xC1,0x94,0xE4,0x00,0x00,0x1D,0x9E,0xE1,0xD2,0xE8,0xFD,0x4E,0xE7,0xFF,0xFF,
+0xC5,0x5E,0xEB,0x00,0xD5,0xB7,0xFC,0x85,0xE4,0x00,0x69,0x70,0x0D,0x21,0x2E,0x0D,
+0xC1,0x1A,0x0D,0xA1,0x1E,0x0D,0x81,0x22,0x0D,0x61,0x26,0x0D,0x41,0x2A,0x1C,0x21,
+0x30,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x01,0x62,0x85,0x29,0xC2,0xE0,0x10,
+0x01,0xEC,0x77,0x08,0x52,0x85,0x29,0x1C,0x21,0xC8,0x0D,0x21,0x34,0x0D,0x41,0x30,
+0x0D,0x61,0x2C,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0xD0,0x69,0x15,0xE5,
+0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xC1,0x98,0x00,0x21,0xFE,0xF7,0xB9,0x2C,0xC1,
+0x78,0x00,0x21,0x8E,0xF8,0xFD,0x8C,0xB9,0xDC,0x0E,0xF7,0x02,0x05,0xA0,0x81,0xFD,
+0x6B,0xB9,0xDF,0x86,0xE9,0x1C,0x83,0x01,0xCC,0x63,0x00,0x1A,0xCC,0x84,0x00,0x1A,
+0x9C,0x9F,0xE7,0xFF,0xFD,0x9E,0xE4,0x00,0x05,0x05,0x0C,0x61,0x04,0xE4,0x00,0x68,
+0x40,0x0C,0x61,0x06,0x99,0x40,0x9C,0x7E,0x5C,0x63,0x00,0xCC,0x63,0x00,0x1A,0x8D,
+0x63,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,0xFF,0xBF,0x3E,0x8B,0x0A,
+0x9A,0xE4,0x5F,0x03,0x39,0x20,0x00,0xDD,0x43,0x2B,0xC4,0x13,0x79,0x00,0x1F,0x21,
+0x20,0x4F,0x5B,0x09,0x57,0x7B,0x01,0x8F,0x3A,0x17,0x39,0xE8,0x5F,0x60,0x01,0x4B,
+0x70,0x7B,0x47,0x7B,0xCC,0x5F,0x37,0x02,0x20,0x00,0x25,0x4F,0x37,0x20,0x5F,0x39,
+0x02,0x1D,0x01,0x20,0x47,0x39,0xDD,0x8F,0x48,0x1B,0x3A,0xE8,0x9F,0x01,0x9E,0xE1,
+0xD2,0xE8,0xFE,0x16,0xCC,0x6A,0x00,0x06,0x1C,0x81,0x08,0x8C,0x6D,0x50,0xA0,0x18,
+0xE7,0xFF,0xBF,0x72,0x9D,0x44,0x5D,0x43,0x89,0x23,0xFE,0x61,0xE4,0x00,0x01,0x99,
+0xE4,0x00,0x67,0x3A,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,0xFF,0xBE,
+0x58,0x9A,0xE4,0xD2,0xE7,0x01,0xC2,0x43,0x0C,0xBC,0x13,0x58,0xFC,0x1F,0x01,0x20,
+0x4F,0x3A,0x09,0x57,0x5A,0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,0x50,
+0x7B,0x47,0x5A,0xC4,0x5F,0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,0x02,
+0x1F,0x61,0x20,0x47,0x18,0xD5,0x8F,0x3B,0x1B,0x19,0xE8,0x9E,0xE1,0xD2,0xE8,0xFE,
+0x36,0xE4,0x00,0x00,0xD5,0xE4,0x00,0x66,0x90,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,
+0xA0,0x18,0xE7,0xFF,0xBD,0xAE,0xE4,0x00,0x00,0x9F,0x43,0x0B,0xBC,0x13,0x58,0xFC,
+0x1F,0x01,0x20,0x4F,0x3A,0x09,0x57,0x5A,0x01,0x8F,0x19,0x13,0x18,0xE8,0x5F,0x40,
+0x01,0x4B,0x50,0x7B,0x47,0x5A,0xC4,0x5F,0x17,0x02,0x5F,0x5A,0x02,0x20,0x00,0x25,
+0x4F,0x17,0x20,0x5F,0x18,0x02,0x1F,0x81,0x20,0x47,0x18,0xD5,0x8F,0x3C,0x1B,0x19,
+0xE8,0x9E,0xE1,0xD2,0xE8,0xFE,0x3E,0xC1,0x18,0x00,0x21,0x9D,0x64,0xFD,0x08,0xB9,
+0xF7,0xD5,0x68,0x00,0x52,0x9A,0xE4,0xE7,0xFF,0xFF,0x67,0x04,0x60,0x81,0x1C,0x81,
+0x08,0x50,0xA0,0x18,0xE7,0xFF,0xBD,0xCA,0xE4,0x00,0x65,0xD0,0xE4,0x00,0x02,0x59,
+0xE4,0x00,0x65,0x9A,0x99,0x40,0x51,0xC0,0x22,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,
+0xA0,0x18,0xE7,0xFF,0xBC,0xAE,0x5E,0xEA,0x00,0x22,0xE0,0xE6,0x12,0xE1,0x15,0x56,
+0xF7,0x0F,0x52,0xF7,0x40,0x1A,0xE1,0x15,0x12,0xE1,0x0C,0x56,0xF7,0x0F,0x52,0xF7,
+0x50,0x13,0x01,0x0E,0x1A,0xE1,0x0C,0x9A,0xF0,0x47,0x17,0xC4,0x53,0x18,0x06,0x1B,
+0x01,0x0E,0x13,0x01,0x1D,0x46,0xF7,0xC4,0x52,0xF7,0x07,0x1A,0xE1,0x1D,0xE4,0x00,
+0x01,0x49,0x9A,0xE4,0x43,0x0C,0xBC,0x13,0x58,0xFC,0x1F,0x01,0x20,0x4F,0x3A,0x09,
+0x57,0x5A,0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,0x50,0x7B,0x47,0x5A,
+0xC4,0x5F,0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,0x02,0x1F,0x61,0x20,
+0x47,0x18,0xD5,0x8F,0x3B,0x1B,0x19,0xE8,0x1F,0x77,0xFD,0x9E,0xE1,0x5F,0x7B,0x00,
+0xD2,0xE7,0xFE,0x26,0xE4,0x00,0x00,0xF7,0x5F,0x97,0x00,0x27,0x84,0x2B,0x11,0x1A,
+0x00,0xE4,0x00,0x00,0x0F,0x11,0x19,0x00,0x4F,0xA8,0x09,0x55,0x08,0x01,0x1F,0xC1,
+0x20,0x5D,0x00,0x01,0x8F,0xDD,0x49,0x10,0x7B,0x17,0x9E,0xE8,0x47,0x88,0xE4,0x1B,
+0x9E,0xE8,0x8B,0xDC,0x5F,0x98,0x02,0x20,0x00,0x31,0x43,0x9B,0xBC,0x4F,0x9C,0x20,
+0x5F,0x9C,0x02,0x47,0x9C,0xF5,0x1D,0x01,0x20,0x8F,0xA8,0x1B,0x9D,0xE8,0x9E,0xE1,
+0x9F,0x01,0x1F,0x5A,0x15,0x5F,0x18,0x00,0x1F,0x39,0x13,0x5F,0x97,0x00,0xD4,0x7C,
+0xFD,0x55,0xCC,0x6A,0x00,0x18,0x19,0xC1,0x1F,0x8C,0x6D,0x1C,0x81,0x08,0x50,0xA0,
+0x18,0x9D,0x41,0xE7,0xFF,0xBB,0xAC,0xD1,0x42,0xF7,0x8A,0xE7,0xFF,0xFD,0xFD,0x98,
+0x64,0x1F,0x4B,0x02,0x40,0x63,0xDD,0x1F,0x2B,0x03,0x9F,0x64,0x5C,0x63,0x00,0x5F,
+0x1B,0x00,0x9A,0xE0,0xE7,0xFF,0xFE,0xE9,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,
+0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0x1C,
+0x21,0xE8,0x0D,0x61,0x0C,0x0D,0x21,0x14,0x0D,0x41,0x10,0x0D,0x81,0x08,0x0D,0xA1,
+0x04,0x89,0x63,0xD0,0x69,0x0C,0xF5,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,
+0xB9,0x54,0x8E,0xF8,0x0E,0xF7,0x02,0x86,0xE9,0xCD,0x43,0x00,0x1A,0xC1,0xA0,0x10,
+0x01,0x99,0x80,0xFD,0xAD,0x08,0x54,0x8D,0x4D,0x13,0x4A,0x01,0x13,0x2A,0x00,0x13,
+0x0A,0x03,0x12,0xEA,0x02,0x4C,0x9A,0xC0,0x4C,0xB8,0xC0,0x4F,0x5A,0x80,0x4F,0x18,
+0x80,0x8C,0x9A,0x8C,0xB8,0x8C,0x99,0x8C,0xB7,0x4F,0x39,0x40,0x4E,0xF7,0x40,0x88,
+0x6C,0x8C,0x99,0x8C,0xB7,0x9D,0x81,0xE4,0x00,0x64,0xD0,0x5D,0x8C,0x00,0x9D,0x44,
+0xD1,0x86,0xFE,0x4E,0x98,0x66,0x98,0x80,0x98,0xA0,0xCD,0x4B,0x00,0x1A,0x8D,0x4D,
+0x10,0xCA,0x18,0xE4,0x00,0x65,0x00,0x98,0x66,0x98,0x80,0x98,0xA1,0x10,0xCA,0x18,
+0xE4,0x00,0x64,0xE6,0x98,0x66,0x98,0x81,0x98,0xA0,0x10,0xCA,0x19,0xE4,0x00,0x64,
+0xCC,0x98,0x66,0x98,0x81,0x98,0xA1,0x10,0xCA,0x19,0xE4,0x00,0x64,0xB2,0x98,0x66,
+0x98,0x82,0x98,0xA0,0x98,0xC0,0xE4,0x00,0x64,0x9A,0x98,0x66,0x98,0x82,0x98,0xA1,
+0x98,0xC0,0xE4,0x00,0x64,0x82,0x98,0x66,0x98,0x83,0x98,0xA0,0x98,0xC0,0xE4,0x00,
+0x64,0x6A,0x98,0x66,0xE4,0x00,0x00,0x83,0xC1,0xA0,0x10,0x01,0x99,0x40,0xFD,0xAD,
+0x08,0x72,0x5D,0x8A,0x00,0x41,0x6A,0x6C,0x98,0x60,0x88,0x8C,0x98,0xA0,0x10,0xCB,
+0x00,0xE4,0x00,0x64,0x24,0x98,0x60,0x88,0x8C,0x98,0xA1,0x10,0xCB,0x00,0x9D,0x41,
+0xE4,0x00,0x64,0x06,0x21,0x4F,0x7A,0x98,0x60,0x98,0x83,0x98,0xA0,0x98,0xC0,0xE4,
+0x00,0x63,0xE8,0x98,0x60,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,
+0x12,0x0D,0x21,0x16,0x98,0x83,0x98,0xA1,0x98,0xC0,0x1C,0x21,0x18,0xE4,0x00,0x63,
+0xAD,0xC3,0x00,0x10,0x01,0x0D,0xA1,0x06,0xFE,0xF8,0x08,0x6E,0xF3,0x38,0x08,0x6E,
+0x13,0x57,0x01,0x13,0x17,0x03,0x4C,0x9A,0xC0,0x12,0xF7,0x02,0x4C,0xB8,0xC0,0x4F,
+0x5A,0x80,0x4F,0x18,0x80,0x8C,0x9A,0x8C,0xB8,0x8C,0x99,0x8C,0xB7,0x4F,0x39,0x40,
+0x4E,0xF7,0x40,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x98,
+0x60,0x8C,0x99,0x8C,0xB7,0x1C,0x21,0x18,0xE4,0x00,0x62,0xAF,0xC1,0x60,0x10,0x01,
+0x99,0x40,0xFD,0x6B,0x08,0x75,0x4D,0xAA,0x11,0x55,0x8A,0x03,0x10,0xCB,0x00,0x88,
+0x6D,0x88,0x8C,0x98,0xA0,0xE4,0x00,0x62,0xDC,0x10,0xCB,0x00,0x88,0x6D,0x88,0x8C,
+0x98,0xA1,0x9D,0x41,0xE4,0x00,0x62,0xBE,0x5D,0x4A,0x00,0x9D,0x61,0xD1,0x48,0xFE,
+0xCE,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,
+0x1C,0x21,0x18,0x85,0x29,0x1C,0x21,0xE0,0x0D,0xC1,0x08,0x0D,0x21,0x1C,0x0D,0x41,
+0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xE1,0x04,0x89,0xC4,0xD0,
+0x66,0x00,0xB5,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xB9,0x7C,0x4C,0x63,0x10,0x8C,0x77,
+0x0E,0xE3,0x02,0x86,0xE9,0x99,0xED,0xC9,0x80,0x3E,0x0C,0xE4,0x00,0x02,0x81,0x24,
+0x84,0x47,0xC2,0xE0,0x10,0x01,0x99,0xE7,0xE9,0x97,0x01,0x5F,0xE4,0x00,0x01,0x6B,
+0x1E,0xE4,0xFE,0xD2,0xE1,0x04,0xC1,0xD0,0x87,0x05,0x22,0x5D,0xC1,0x01,0xCA,0xE0,
+0x3E,0x0C,0x49,0xE2,0x6B,0xC9,0x80,0x10,0x06,0xE4,0x00,0x00,0xDD,0xD0,0x81,0x05,
+0x01,0x1E,0xE4,0xFE,0xD2,0xE1,0x05,0x19,0xD0,0x87,0x05,0x7A,0x5C,0x81,0x01,0xCA,
+0xE0,0x3E,0x0C,0xC9,0x80,0x10,0x06,0x99,0xA0,0x49,0xE2,0x6B,0x49,0x8C,0xB8,0x89,
+0x4D,0xE4,0x00,0x00,0x9B,0xD0,0x81,0x05,0x21,0x1E,0xE4,0xFE,0xD2,0xE1,0x05,0x19,
+0xD0,0x87,0xFD,0xDE,0xE4,0x00,0x01,0x57,0xD0,0x81,0x05,0xC9,0x5C,0x80,0xE1,0xCA,
+0xE0,0x3E,0x0C,0xC9,0x80,0x08,0x03,0x49,0xE1,0x6B,0x49,0x8C,0xB8,0xE4,0x00,0x01,
+0x55,0xD0,0x81,0x05,0x71,0xD0,0x87,0x05,0x82,0x5C,0x81,0x01,0xCA,0xE0,0x3E,0x0C,
+0x49,0xE2,0x6B,0xC9,0x80,0x20,0x09,0x49,0x8C,0xB8,0x99,0xA2,0x99,0x41,0x49,0x61,
+0x01,0xE4,0x00,0x01,0x41,0x99,0xE1,0xE4,0x00,0x00,0xF9,0x99,0xE7,0xC9,0x80,0x3E,
+0x0C,0x99,0xA2,0x99,0x41,0x99,0x63,0xE4,0x00,0x00,0x21,0x99,0xE1,0xC9,0x80,0x32,
+0x0B,0x99,0xA2,0x99,0x41,0x99,0x60,0x98,0x60,0xE4,0x00,0x00,0xF5,0x99,0xE7,0xC9,
+0x80,0x3E,0x0C,0xE4,0x00,0x00,0x35,0x99,0xA0,0x99,0xE7,0xC9,0x80,0x3E,0x0C,0x89,
+0x4D,0x99,0x63,0xE4,0x00,0x00,0x21,0x99,0xE1,0xC9,0x80,0x32,0x0B,0x99,0xA0,0x99,
+0x60,0x89,0x4D,0x98,0x61,0xE4,0x00,0x00,0x9D,0x99,0xE7,0xE4,0x00,0x00,0x2D,0x99,
+0xE7,0xC9,0x80,0x3E,0x0C,0x99,0xA2,0x99,0x41,0x99,0x63,0xE4,0x00,0x00,0x21,0x99,
+0xE1,0xC9,0x80,0x32,0x0B,0x99,0xA2,0x99,0x41,0x99,0x60,0x98,0x62,0xE4,0x00,0x00,
+0x4D,0x99,0xE7,0xC9,0x80,0x08,0x03,0x99,0xA0,0x89,0x4D,0xE4,0x00,0x00,0x29,0x99,
+0xE7,0xE4,0x00,0x00,0x0D,0x99,0xE1,0xC9,0x80,0x10,0x06,0x99,0xA2,0x99,0x41,0x99,
+0x60,0x98,0x63,0xE7,0xFF,0x9D,0xEC,0x88,0x6A,0x88,0x8D,0xE4,0x00,0x75,0x64,0x88,
+0x6A,0x88,0x8C,0xE4,0x00,0x60,0x40,0x21,0xA0,0x3E,0x88,0x6A,0x88,0x8C,0xE4,0x00,
+0x71,0x3E,0xE4,0x00,0x00,0x1F,0x21,0xA0,0x2C,0x88,0x6A,0x88,0x8C,0xE4,0x00,0x72,
+0x9A,0x88,0x6A,0x05,0x80,0xFF,0xC9,0x8C,0xFF,0xFF,0x88,0x8C,0xE4,0x00,0x62,0xC6,
+0x88,0x8C,0x88,0x6A,0xE4,0x00,0x60,0x4E,0x98,0x62,0xE4,0x00,0x5D,0xCE,0xC2,0xE0,
+0x10,0x01,0x98,0x60,0xEC,0x17,0x08,0x48,0xC1,0xA0,0x10,0x01,0xEC,0x0D,0x08,0x4C,
+0xE4,0x00,0x6A,0x0A,0x98,0x60,0xE4,0x00,0x62,0x0A,0x98,0x60,0x88,0x8C,0xE4,0x00,
+0x60,0xFA,0x88,0x6F,0xE4,0x00,0x5D,0x26,0x98,0x60,0xE4,0x00,0x63,0x4A,0x21,0x64,
+0x5E,0xED,0x6D,0x08,0x4C,0x98,0x61,0xE4,0x00,0x69,0xBC,0x98,0x63,0xE4,0x00,0x61,
+0xBC,0xE4,0x00,0x00,0x2B,0x21,0x6C,0x46,0x98,0x61,0x88,0x8C,0xE4,0x00,0x60,0x9E,
+0x98,0x61,0xE4,0x00,0x62,0xFA,0xE4,0x00,0x66,0xDE,0x1C,0x63,0x13,0x5C,0x83,0x00,
+0x88,0x6A,0x5C,0x82,0x93,0x20,0x00,0x1B,0x50,0x80,0x14,0xE4,0x00,0x63,0xFC,0x88,
+0x6A,0x98,0x8C,0xE4,0x00,0x63,0x1E,0xC2,0xE0,0x10,0x01,0x88,0x6E,0xED,0xD7,0x08,
+0x50,0xE7,0xFF,0xF2,0x0C,0x88,0x6E,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,
+0x0D,0x81,0x12,0x0D,0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0xE7,
+0xFF,0xF7,0xA1,0xC2,0xE0,0x10,0x01,0x9C,0x30,0xEC,0x77,0x01,0x60,0x0D,0x41,0x08,
+0x0D,0x61,0x04,0x0D,0x21,0x0C,0x0D,0x81,0x00,0x89,0x43,0xC1,0x60,0x10,0x01,0xE7,
+0xFF,0xFA,0xEC,0xFD,0x6B,0x00,0xDE,0x25,0x44,0x29,0x21,0x4D,0x32,0xE4,0x00,0x00,
+0x67,0x99,0x40,0xC1,0x80,0x10,0x01,0x88,0x6A,0xE8,0x8C,0x08,0x11,0x9D,0x41,0xE4,
+0x00,0x68,0xC6,0x5D,0x4A,0x00,0xD1,0x44,0xFF,0x8E,0xE7,0xFF,0xDE,0x9C,0xC2,0xE0,
+0x10,0x01,0x0C,0x6B,0x0B,0xEB,0x17,0x06,0xFF,0x53,0x18,0x20,0xE4,0x00,0x00,0x2D,
+0xE7,0xFF,0xDE,0x70,0xC2,0xE0,0x10,0x01,0x0C,0x6B,0x0F,0xEB,0x17,0x06,0xFF,0x53,
+0x18,0x80,0xEF,0x17,0x06,0xFF,0x0D,0x81,0x02,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,
+0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0x1C,0x21,0xD0,0xC2,0xE0,0x10,0x01,0x0D,0x41,
+0x28,0x0D,0xC1,0x18,0xEE,0xF7,0x00,0xDA,0x0D,0x21,0x2C,0x0D,0x61,0x24,0x0D,0x81,
+0x20,0x0D,0xA1,0x1C,0x0D,0xE1,0x14,0x0E,0x01,0x10,0x0E,0x21,0x0C,0x0E,0x41,0x08,
+0x0E,0x61,0x04,0x5E,0xE0,0x41,0x89,0x43,0x49,0xC1,0x01,0x24,0x64,0x69,0x1E,0xE3,
+0xFE,0xD2,0xE1,0x04,0xA9,0xD0,0x67,0x04,0xC2,0xD0,0x69,0x04,0xD2,0xD0,0x68,0x04,
+0xE2,0xE4,0x00,0x01,0x0B,0x51,0x60,0x1A,0x9A,0xE0,0x20,0x60,0x5C,0x9A,0xE0,0xD1,
+0x45,0x00,0x92,0x9A,0xE1,0x21,0x44,0x30,0x21,0x4C,0x24,0xD1,0x46,0x00,0x32,0x9A,
+0xE0,0xCE,0xF7,0x00,0x34,0xC1,0xE0,0x10,0x01,0xC2,0x00,0x10,0x01,0xFD,0xEF,0x09,
+0x34,0xFE,0x10,0x08,0x12,0x99,0x80,0xC2,0x40,0x10,0x01,0xC2,0x60,0x10,0x01,0x8D,
+0xF7,0x8E,0x17,0x89,0xAC,0x1E,0x2A,0xFE,0xFE,0x52,0x0B,0xDC,0xFE,0x73,0x08,0xA6,
+0x88,0x6D,0x98,0x81,0x88,0xAE,0xE4,0x00,0x6D,0x12,0x42,0xEF,0x64,0x25,0x44,0x5D,
+0x42,0xF0,0x64,0x26,0x24,0x45,0x42,0xEC,0x9C,0xD1,0x47,0x00,0x5A,0xD1,0x48,0x00,
+0x56,0x42,0xEC,0x94,0x0C,0x77,0x01,0x9D,0xA1,0x9D,0x82,0x5D,0xAD,0x00,0xD5,0x6D,
+0xFE,0x95,0xE4,0x00,0x00,0x4F,0x51,0x60,0x1A,0xE4,0x00,0x00,0x2D,0x99,0x63,0xE7,
+0xFF,0xFF,0x21,0x99,0x64,0xE7,0xFF,0xFF,0x15,0x99,0x68,0xE7,0xFF,0xFF,0x09,0x9A,
+0xE0,0xD1,0x42,0xFB,0x66,0xE7,0xFF,0xFE,0xF9,0x0E,0x61,0x06,0x0E,0x41,0x0A,0x0E,
+0x21,0x0E,0x0E,0x01,0x12,0x0D,0xE1,0x16,0x0D,0xC1,0x1A,0x0D,0xA1,0x1E,0x0D,0x81,
+0x22,0x0D,0x61,0x26,0x0D,0x41,0x2A,0x0D,0x21,0x2E,0x1C,0x21,0x30,0x85,0x29,0x9C,
+0x30,0x0D,0x41,0x08,0x0D,0x21,0x0C,0x0D,0x61,0x04,0x89,0x44,0xD0,0x67,0x08,0x15,
+0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xB9,0x98,0x4C,0x63,0x10,0x8C,0x77,0xC2,0xE0,0x10,
+0x01,0x0F,0x03,0x02,0xFE,0xF7,0x06,0xFE,0x87,0x09,0x0B,0x17,0x01,0xC7,0x18,0xFF,
+0xDF,0x0F,0x17,0x01,0xD0,0x88,0x06,0xD5,0x9A,0xE1,0x4E,0xF7,0x24,0xC6,0xF7,0x01,
+0x83,0xD2,0xE0,0x06,0x6A,0xE4,0x00,0x01,0x6F,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xDF,
+0x0F,0x17,0x01,0xD0,0x88,0x05,0xDD,0x9A,0xE1,0x4E,0xF7,0x24,0xC7,0x17,0x01,0x8C,
+0xD3,0x00,0x04,0xE6,0x56,0xF7,0x03,0xD2,0xE0,0x05,0x3A,0x88,0x64,0xE7,0xFF,0xFC,
+0xF4,0xCE,0xEA,0x00,0x34,0xC1,0x60,0x10,0x01,0xFD,0x6B,0x09,0x34,0x8D,0x77,0x88,
+0x6B,0xE7,0xFF,0xA1,0x0A,0xE7,0xFF,0xA0,0x80,0xD0,0x60,0x04,0x2A,0x88,0x6B,0xE7,
+0xFF,0xA1,0x6C,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x01,0x62,0x22,0xE5,0xCE,0xE4,0x00,
+0x00,0x41,0xD0,0x88,0x03,0x65,0x9A,0xE1,0x4E,0xF7,0x24,0xC7,0x17,0x01,0x8C,0x23,
+0x01,0x36,0x56,0xF7,0x03,0x22,0xE1,0x64,0x88,0x6A,0xE7,0xFF,0xFC,0x5A,0x88,0x6A,
+0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0xE7,0xFF,0xEA,0xBD,
+0x0B,0x17,0x01,0xC7,0x18,0xFF,0x7F,0x0F,0x17,0x01,0xD0,0x88,0x01,0xA5,0x4F,0x04,
+0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xB9,0xB8,0x8E,0xF8,0x0E,0xF7,0x02,0x86,0xE9,
+0x98,0x67,0xE4,0x00,0x00,0x19,0x98,0x68,0xE4,0x00,0x00,0x0D,0x88,0x6A,0x0D,0x61,
+0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0xE7,0xFF,0xFB,0xBB,0x0D,0x61,
+0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xE0,0x10,0x01,
+0x98,0x60,0xFE,0xF7,0x08,0x12,0xCB,0x40,0xFF,0xFE,0x0B,0x37,0x00,0x4F,0x19,0xFA,
+0x47,0x38,0xCE,0x43,0x19,0xC5,0x8C,0x78,0x5F,0x03,0x04,0xCB,0x20,0xFF,0xFE,0x9E,
+0xE2,0x5C,0x79,0x17,0x48,0x78,0xD0,0xC3,0x00,0x10,0x01,0xFF,0x18,0x08,0x46,0xD6,
+0xF8,0xFE,0xDE,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x04,0xC2,0xE0,0x10,
+0x01,0xEC,0x17,0x08,0x08,0xC2,0xE0,0x10,0x01,0x9B,0x04,0xEC,0x17,0x08,0x0C,0x98,
+0x64,0xC2,0xE0,0x10,0x01,0x98,0x80,0xEF,0x17,0x01,0x60,0xE7,0xFF,0xF4,0xF5,0x20,
+0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x08,0x06,0xE4,0x00,0x00,0x41,0x20,0x68,
+0x3E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x08,0x0A,0xE4,0x00,0x00,0x23,0x9A,0xE0,0x20,
+0x6C,0x2E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x08,0x0E,0x88,0x77,0x85,0x29,0x20,0x64,
+0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x08,0x04,0xE4,0x00,0x00,0x3D,0x20,0x68,0x3E,
+0xC2,0xE0,0x10,0x01,0xEC,0x97,0x08,0x08,0xE4,0x00,0x00,0x1F,0x20,0x6C,0x2E,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x08,0x0C,0x85,0x29,0xC3,0x80,0x10,0x01,0xC3,0x60,0x10,
+0x01,0xC3,0x40,0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,0x00,0x10,0x01,0xFF,0x9C,0x08,
+0x8C,0xFF,0x7B,0x08,0xD4,0xFF,0x5A,0x08,0x83,0xFF,0x39,0x0B,0xCC,0xFF,0x18,0x08,
+0xC4,0x20,0x69,0x7A,0x0A,0xFC,0x04,0x0B,0xD9,0x09,0x43,0xD7,0xF5,0x5F,0xDE,0x06,
+0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x43,0xBE,0xED,0x5F,0xAC,0x99,0x20,0x00,0x7D,0x0B,
+0xBC,0x07,0x0B,0x99,0x0B,0x43,0xBD,0xE5,0x5F,0xBD,0x06,0x4F,0x9D,0xFA,0x47,0xBC,
+0xEE,0x43,0x9D,0xE5,0xC3,0x80,0x10,0xE8,0x20,0x05,0x19,0x0E,0xF8,0x01,0xC2,0xE0,
+0x10,0x01,0xEA,0xF7,0x08,0x93,0x0B,0x99,0x0B,0x0E,0xF8,0x03,0x0B,0x39,0x0F,0x12,
+0xFA,0x00,0x0F,0x9B,0x01,0x0F,0x3B,0x03,0x52,0xF7,0x02,0xE4,0x00,0x01,0x57,0xC3,
+0xA0,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0xBD,0x08,0x88,0xFE,0xF7,0x0B,0xEC,0x20,
+0x6D,0x92,0x0B,0x79,0x01,0x0B,0xDC,0x01,0x43,0xDE,0xDD,0x5F,0xDE,0x06,0x4F,0x7E,
+0xFA,0x47,0xDB,0xF6,0x43,0x7E,0xDD,0x5F,0x6C,0x99,0x20,0x00,0x7D,0x0B,0x39,0x03,
+0x0B,0x7C,0x03,0x43,0x7B,0xCD,0x5F,0x7B,0x06,0x4F,0x3B,0xFA,0x47,0x79,0xDE,0x43,
+0x3B,0xCD,0xC3,0x20,0x10,0xE8,0x20,0x03,0x61,0x0B,0x37,0x17,0x0F,0x38,0x01,0x0B,
+0x37,0x19,0x0F,0x38,0x03,0x0B,0x37,0x47,0x0A,0xF7,0x49,0x0E,0xF8,0x07,0x12,0xFA,
+0x00,0x52,0xF7,0x01,0x0F,0x38,0x05,0x1A,0xFA,0x00,0x9A,0xE2,0x1A,0xFD,0x00,0xE4,
+0x00,0x01,0x5F,0xD0,0x64,0x01,0xD6,0x0B,0x3B,0x00,0x0B,0x7B,0x02,0x43,0x79,0xDD,
+0x9F,0x6E,0x5F,0x63,0x9B,0x20,0x00,0x2F,0xC3,0x20,0x10,0x01,0xEB,0x39,0x08,0xC7,
+0x0B,0x18,0x01,0x0F,0x17,0x47,0x9B,0x02,0x0F,0x37,0x49,0x1B,0x17,0x00,0x12,0xFA,
+0x00,0x9B,0x1D,0x46,0xF7,0xC4,0x1A,0xFA,0x00,0xE4,0x00,0x00,0xEB,0xD0,0x65,0x03,
+0x8E,0x13,0x7D,0x00,0x23,0x68,0xFE,0x0B,0x98,0x00,0x0B,0x59,0x00,0x8F,0x5C,0x43,
+0x5A,0xD8,0x0B,0x98,0x02,0x0F,0x57,0x17,0x0B,0x59,0x02,0x8F,0x5C,0x43,0x5A,0xD8,
+0x0B,0x98,0x04,0x0F,0x57,0x19,0x0B,0x59,0x08,0x8F,0x5C,0x43,0x5A,0xD8,0x0F,0x57,
+0x47,0x0B,0x58,0x06,0x0B,0x19,0x0A,0x8F,0x1A,0x43,0x78,0xD8,0x0F,0x77,0x49,0xE4,
+0x00,0x00,0x55,0x23,0x64,0x9A,0x0B,0x38,0x01,0x0F,0x37,0x17,0x0B,0x38,0x03,0x0F,
+0x37,0x19,0x0B,0x38,0x05,0x0B,0x18,0x07,0x0F,0x37,0x47,0x0F,0x17,0x49,0x9B,0x3E,
+0x13,0x1A,0x00,0x47,0x18,0xCC,0x1B,0x1A,0x00,0x9B,0x02,0x1B,0x17,0x00,0x85,0x29,
+0xC3,0x00,0x10,0x01,0xFF,0x18,0x08,0x8C,0xFE,0xE0,0x7F,0xFF,0x0E,0xF8,0x01,0x0E,
+0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0x9B,0x01,0xC3,0x20,0x10,0x01,0xFF,0x39,
+0x01,0xAC,0x1B,0x19,0x01,0xC3,0x00,0x10,0x01,0xFF,0x18,0x08,0xF0,0x0E,0xF8,0x01,
+0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0xC3,0x00,0x10,0x01,0xF8,0x18,0x08,
+0xE0,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,0xCC,0x0E,0xF8,0x01,0x0E,0xF8,0x03,0x0E,
+0xF8,0x05,0x0E,0xF8,0x07,0x0E,0xF8,0x09,0x0E,0xF8,0x0B,0x0E,0xF8,0x0D,0x0E,0xF8,
+0x0F,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xFD,0xC2,0xE0,0x10,0x01,0x18,0x19,0x00,
+0xF3,0x17,0x08,0x83,0x9B,0x3C,0x47,0x18,0xCC,0xFB,0x17,0x08,0x83,0xC2,0xE0,0x10,
+0x01,0xF8,0x17,0x08,0x88,0x85,0x29,0xC3,0x00,0x10,0x01,0xC3,0x40,0x10,0x01,0x5C,
+0x63,0x00,0xFF,0x18,0x09,0x68,0x9A,0xE0,0xFF,0x5A,0x0A,0x18,0xE4,0x00,0x00,0x31,
+0x4F,0x37,0x10,0x0B,0x98,0x00,0x0B,0x78,0x02,0x8F,0x3A,0x8F,0x7C,0x9E,0xE1,0x0F,
+0x79,0x00,0x9F,0x04,0x5F,0x37,0x00,0xD4,0x79,0xFF,0x4D,0x85,0x29,0xC3,0x00,0x10,
+0x01,0x5C,0x84,0x00,0xFF,0x18,0x09,0x68,0x20,0xA0,0x6C,0xE4,0x00,0x00,0x4B,0x4F,
+0x37,0x08,0x9E,0xE1,0x43,0x59,0xC4,0x8F,0x23,0x0B,0x5A,0x00,0x0F,0x59,0x01,0xE4,
+0x00,0x00,0x0D,0x9A,0xE0,0x5F,0x37,0x00,0xD4,0x99,0xFF,0x3D,0xE4,0x00,0x00,0x7B,
+0x20,0xA4,0xE6,0xE4,0x00,0x00,0x31,0x4F,0x37,0x08,0x9E,0xE1,0x43,0x43,0xCC,0x8F,
+0x38,0x0B,0x5A,0x00,0x0F,0x59,0x01,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0x5F,0x37,0x00,
+0xD4,0x99,0xFF,0x3D,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x76,0x10,0x77,0x01,0x12,
+0xF7,0x04,0x40,0x63,0xBB,0xE7,0xFF,0xFE,0xC5,0x85,0x29,0x9C,0x38,0x98,0x63,0x0D,
+0x21,0x04,0xE7,0xFF,0x8F,0x6E,0x0D,0x21,0x06,0x9C,0x28,0xE4,0x00,0x77,0x37,0x9A,
+0xED,0x9C,0x30,0x0D,0x41,0x08,0x0D,0x61,0x04,0xC1,0x60,0x10,0x01,0xFD,0x4B,0x0B,
+0x76,0x1A,0xEA,0x04,0x9A,0xE1,0x1A,0xEA,0x01,0xFE,0xE0,0x07,0xFF,0x0E,0xEA,0x07,
+0x0E,0xEA,0x09,0xC2,0xE0,0x10,0x01,0x9B,0x02,0xFB,0x17,0x08,0xCE,0x52,0xE0,0xAA,
+0x0D,0x21,0x0C,0x0E,0xEA,0x0B,0x50,0x60,0x19,0x98,0x80,0xE7,0xFF,0x4A,0xFE,0x52,
+0xE0,0x1D,0xFA,0xEB,0x0B,0x76,0x9A,0xE4,0x1A,0xEA,0x0C,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x00,0xCD,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xBC,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x08,0xE8,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xE3,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x08,0xB0,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xB8,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x08,0xE6,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xDF,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x08,0xA4,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xF8,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x08,0xD2,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xC3,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x08,0xC1,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xB4,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x08,0x7F,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xD3,0xC2,0xE0,0x10,0x01,0x9B,
+0x03,0xFB,0x17,0x08,0xC2,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x07,0xF4,0xC2,0xE0,0x10,
+0x01,0xF8,0x17,0x08,0xE0,0xC2,0xE0,0x10,0x01,0xFF,0x00,0x01,0xF4,0xEF,0x17,0x06,
+0xFD,0xC2,0xE0,0x10,0x01,0xC0,0x60,0x10,0x01,0xF8,0x17,0x08,0xF9,0xFC,0x63,0x0A,
+0x18,0x98,0x80,0x50,0xA0,0x3C,0xE7,0xFF,0xA3,0x26,0xC2,0xE0,0x10,0x01,0xFE,0xF7,
+0x0B,0xEC,0x18,0x17,0x04,0x18,0x17,0x05,0x18,0x17,0x06,0x18,0x17,0x34,0x18,0x17,
+0x35,0x18,0x17,0x36,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xAC,0xC2,0xE0,0x10,0x01,
+0xF3,0x37,0x00,0xB8,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3D,0xF9,0xCA,0xF7,0x3D,0xF8,
+0x1B,0x38,0x00,0xC3,0x00,0x10,0x01,0xF3,0x18,0x07,0x6F,0x1B,0x17,0x00,0xC2,0xE0,
+0x10,0x01,0xEB,0x17,0x08,0x9F,0x53,0x18,0x04,0xEF,0x17,0x08,0x9F,0xC2,0xE0,0x10,
+0x01,0xC3,0x00,0x00,0x01,0xFF,0x18,0x1D,0x58,0xEF,0x17,0x03,0xE4,0xC2,0xE0,0x10,
+0x01,0x53,0x00,0xF0,0xEF,0x17,0x08,0xEF,0xC2,0xE0,0x10,0x01,0x53,0x00,0xCA,0xEF,
+0x17,0x08,0x8B,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x00,0x01,0xFF,0x18,0x1B,0xCF,0xEF,
+0x17,0x03,0xF8,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x00,0x01,0xFF,0x18,0x19,0x89,0xEF,
+0x17,0x04,0x18,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x00,0x01,0xFF,0x18,0x1A,0x62,0xEF,
+0x17,0x04,0x14,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x0B,0x9C,0xFE,0xF7,0x0B,0x9C,0xC3,
+0x60,0x10,0x01,0x18,0x17,0x01,0x18,0x17,0x02,0x18,0x17,0x03,0x0C,0x17,0x05,0x0C,
+0x17,0x07,0x0C,0x17,0x0B,0x0C,0x17,0x09,0xC3,0x40,0x10,0x01,0xC3,0x20,0x10,0x01,
+0x9A,0xE0,0xFF,0x7B,0x09,0x68,0xFF,0x5A,0x0C,0xF2,0xFF,0x39,0x09,0xA4,0x43,0x17,
+0xDC,0x0C,0x18,0x01,0x43,0x17,0xD4,0x0C,0x18,0x01,0x4F,0x17,0x08,0x8F,0x19,0x0C,
+0x18,0x00,0x9E,0xE2,0x5E,0xE7,0x49,0x23,0xFF,0x9D,0x0D,0x61,0x06,0x0D,0x41,0x0A,
+0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xE4,0x00,0x70,0x65,0x1C,0x21,0xE8,0x0D,
+0x21,0x14,0xE7,0xFF,0xCD,0xBC,0xE7,0xFF,0xA6,0xE2,0xE7,0xFF,0xCC,0xE6,0xE7,0xFF,
+0xF4,0xCE,0x50,0xE0,0x14,0x99,0x0C,0x0C,0x01,0x01,0x50,0x60,0x1A,0x50,0x80,0x1A,
+0x98,0xA4,0x04,0xC1,0x6E,0xC8,0xC6,0x36,0x00,0xE7,0xFF,0x92,0xB8,0xFC,0xC0,0x01,
+0x78,0xFC,0xA0,0x02,0xD6,0xC0,0x60,0x10,0x01,0xC0,0x80,0x10,0x01,0xFC,0x63,0x01,
+0x5E,0xFC,0x84,0x08,0x10,0xE7,0xFF,0x95,0x46,0x98,0x60,0x88,0x83,0xE7,0xFF,0x88,
+0xBC,0x98,0x60,0x98,0xA0,0x88,0x83,0xE7,0xFF,0x88,0xC2,0x98,0x60,0x98,0xA0,0x88,
+0x83,0xE7,0xFF,0x88,0xD8,0x98,0x80,0x98,0x61,0x88,0xA4,0xE7,0xFF,0x88,0xC4,0x98,
+0xA0,0x98,0x62,0x98,0x81,0xE7,0xFF,0x88,0xB0,0x98,0x62,0x98,0x80,0xE7,0xFF,0x89,
+0x26,0x98,0x60,0x50,0x80,0x66,0xE7,0xFF,0x89,0x2E,0x98,0x61,0x50,0x80,0x66,0xE7,
+0xFF,0x89,0x1C,0x98,0x62,0x50,0x80,0xF3,0xE7,0xFF,0x89,0x0A,0x98,0x60,0xFC,0x80,
+0xA0,0x00,0xE7,0xFF,0x89,0x52,0x98,0x61,0xFC,0x80,0xA0,0x00,0xE7,0xFF,0x89,0x3E,
+0x98,0x62,0xFC,0x80,0xA0,0x00,0xE7,0xFF,0x89,0x2A,0xFC,0x80,0x01,0x26,0x98,0x62,
+0xE7,0xFF,0x89,0x72,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x96,0xC0,0xE7,0xFF,0xFA,0x26,
+0x98,0x61,0xE7,0xFF,0x64,0x4C,0xE7,0xFF,0x50,0x80,0x50,0x60,0x1B,0xE7,0xFF,0x8D,
+0x60,0x9A,0xEE,0x0E,0xE1,0x00,0x52,0xE0,0x14,0x0E,0xE1,0x04,0xCA,0xE0,0x07,0xD0,
+0x98,0xC8,0x0E,0xE1,0x08,0x98,0xAE,0x88,0xE6,0x99,0x0A,0x98,0x6A,0x98,0x8C,0xE7,
+0xFF,0x44,0x90,0x98,0x81,0x98,0x60,0xE7,0xFF,0xCB,0x92,0x50,0x60,0x10,0xE7,0xFF,
+0xCB,0xBC,0xE4,0x00,0x47,0xE4,0xE7,0xFF,0xF9,0x6A,0x98,0x80,0x98,0x60,0xE7,0xFF,
+0x42,0x52,0xE7,0xFF,0xB9,0xC0,0xE7,0xFF,0xB8,0xB6,0xC2,0xE0,0x10,0x01,0xF0,0x77,
+0x01,0xAE,0xE7,0xFF,0xCB,0x54,0x9B,0x00,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,0x0D,
+0xC3,0x17,0x00,0x0F,0x53,0x18,0x04,0xC3,0x17,0x00,0x0D,0xC3,0x17,0x00,0x0F,0x53,
+0x18,0x08,0xC3,0x17,0x00,0x0D,0xC2,0xE0,0x01,0x1F,0x52,0xF7,0x06,0xC2,0xE0,0x01,
+0x1D,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xCA,0xFE,0x50,0x60,0x20,0xE7,0xFF,0xCB,0x08,
+0x98,0x61,0x50,0x80,0x13,0x50,0xA0,0x37,0x98,0xC8,0xFC,0xE0,0x01,0x0D,0xE7,0xFF,
+0xAC,0x90,0xC3,0x00,0x00,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x38,0x80,0x0D,0x21,
+0x16,0xEF,0x17,0x03,0xD0,0x1C,0x21,0x18,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEF,0x17,
+0x00,0xDA,0x23,0x05,0x08,0xEE,0xF7,0x00,0xDA,0x22,0xE8,0xEC,0xC3,0x00,0x10,0x01,
+0xC2,0xE0,0x10,0x01,0xFF,0x18,0x08,0xA6,0xFE,0xF7,0x08,0xD8,0x0B,0x38,0x01,0xC3,
+0x60,0x10,0x01,0x0F,0x37,0x01,0xC3,0x40,0x10,0x01,0x0B,0x38,0x03,0xFF,0x7B,0x0A,
+0xE8,0x0F,0x37,0x03,0x0B,0x18,0x05,0xFF,0x5A,0x0B,0xDC,0x0F,0x17,0x05,0x9A,0xE0,
+0xE4,0x00,0x00,0x5D,0xC3,0x60,0x10,0x01,0xC3,0x40,0x10,0x01,0x9A,0xE0,0xFF,0x7B,
+0x09,0x00,0xFF,0x5A,0x09,0x34,0x43,0x17,0xDC,0x43,0x37,0xD4,0x0B,0x39,0x01,0x0F,
+0x38,0x01,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xBD,0xE7,0xFF,0xFF,0x45,0x43,0x17,
+0xDC,0x43,0x37,0xD4,0x0B,0x39,0x01,0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE2,0x09,0x23,
+0xFF,0xBD,0x85,0x29,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,0x01,0x9A,0xE0,0xFF,0x18,
+0x0C,0xF2,0xFF,0x7B,0x09,0x00,0x43,0x37,0xC4,0x43,0x57,0xDC,0x0B,0x5A,0x01,0x0F,
+0x59,0x01,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xBD,0xC2,0xE0,0x10,0x01,0xFE,0xF7,
+0x08,0xD8,0x0B,0x37,0x01,0x0F,0x38,0x35,0x0B,0x37,0x03,0x0A,0xF7,0x05,0x0F,0x38,
+0x37,0x0E,0xF8,0x39,0x85,0x29,0xE4,0x00,0x6D,0x63,0xC2,0xE0,0x10,0x01,0xFF,0x20,
+0xDF,0x9F,0xEB,0x17,0x08,0xE3,0x47,0x18,0xCC,0x9B,0x3E,0xEF,0x17,0x08,0xE3,0xC2,
+0xE0,0x10,0x01,0xEB,0x17,0x08,0xCD,0x47,0x18,0xCC,0xEF,0x17,0x08,0xCD,0x85,0x29,
+0xC2,0xE0,0x10,0x01,0x88,0xC3,0xF3,0x17,0x00,0xB8,0x23,0x08,0x4A,0xF2,0xF7,0x00,
+0xB8,0x22,0xE8,0x2E,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,0x6F,0xC3,0x00,0x10,0x01,
+0x9A,0xE0,0xFF,0x18,0x09,0x68,0x8B,0x38,0x5F,0x57,0x00,0x27,0x44,0x3D,0x5E,0xE3,
+0x01,0x20,0x00,0x25,0x5E,0xE3,0x29,0x20,0x00,0x31,0x0B,0x59,0x01,0x4F,0x5A,0x08,
+0x0F,0x59,0x01,0x9E,0xE1,0x9F,0x22,0x5E,0xE3,0x49,0x23,0xFF,0x79,0xC2,0xE0,0x10,
+0x01,0xC3,0x80,0x10,0x01,0xF3,0xD7,0x0B,0x76,0xFF,0x5C,0x08,0xE2,0xC3,0xA0,0x10,
+0x01,0x1C,0x7E,0xFF,0xFF,0xBD,0x08,0xA4,0x0A,0xFA,0x01,0x13,0x7D,0x00,0x9B,0x20,
+0xE4,0x00,0x00,0x65,0xD4,0x79,0x00,0xF0,0x08,0x98,0x00,0x09,0x18,0x02,0x8D,0x04,
+0xC1,0x00,0x1D,0xE8,0x20,0x00,0x39,0xC1,0x00,0x59,0xE8,0xCA,0xF7,0x20,0x00,0x4B,
+0x7B,0x00,0x09,0x18,0x00,0x50,0x97,0x40,0x5D,0x04,0x19,0x9F,0x21,0x4A,0xE4,0xB8,
+0x9F,0x02,0x5D,0x19,0x04,0xD7,0xC8,0xFE,0x7D,0xC3,0x00,0x10,0x01,0x0E,0xFA,0x01,
+0x1B,0x7D,0x00,0xFF,0x18,0x0B,0x60,0x0B,0x38,0x00,0x53,0x77,0x20,0x5F,0x2C,0x99,
+0x9F,0x02,0xC3,0x20,0x10,0x01,0x4A,0xFB,0xB8,0xFF,0x39,0x0B,0x70,0xD7,0x19,0xFF,
+0x56,0x98,0x60,0x0E,0xFA,0x01,0x88,0x83,0x98,0xA0,0xE7,0xFF,0xB5,0x99,0x9C,0x38,
+0x0D,0x41,0x00,0x0D,0x21,0x04,0xC1,0x40,0x10,0x01,0x20,0x64,0x62,0xE7,0xFF,0xB6,
+0xB4,0x20,0x64,0x56,0xF2,0xEA,0x08,0xA4,0x9E,0xE1,0xFA,0xEA,0x08,0xA4,0xE4,0x00,
+0x00,0x19,0xE7,0xFF,0xB7,0x3A,0xF8,0x0A,0x08,0xA4,0xE7,0xFF,0xD9,0x72,0x20,0x64,
+0x26,0x99,0x43,0xE4,0x00,0x00,0x29,0xE7,0xFF,0xD9,0x58,0x99,0x49,0x20,0x68,0x28,
+0xE7,0xFF,0xD9,0x46,0x20,0x6F,0xB6,0xC2,0xE0,0x10,0x01,0xC3,0x20,0x10,0x01,0xF3,
+0x17,0x08,0xA4,0xF3,0x39,0x0B,0xEC,0x23,0x21,0x1A,0xD5,0x58,0x02,0x1D,0xF8,0x17,
+0x08,0xA4,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xE6,0xC2,0xE0,0x10,0x01,0xC3,0x00,
+0x10,0x01,0xF8,0x17,0x08,0xDF,0xC2,0xE0,0x10,0x01,0xF8,0x18,0x08,0xF8,0xF8,0x17,
+0x08,0xF9,0x0D,0x41,0x02,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEB,0x17,0x08,0xE3,
+0x9C,0x28,0x53,0x18,0x80,0xEF,0x17,0x08,0xE3,0xE7,0xFF,0x87,0x1D,0x0D,0x41,0x02,
+0x0D,0x21,0x06,0x9C,0x28,0x85,0x29,0x9C,0x38,0xC3,0x14,0x00,0x01,0x0D,0x21,0x04,
+0xCA,0xF8,0x22,0x00,0x0B,0x37,0x01,0xCB,0x18,0x26,0x18,0x9B,0x3F,0x0F,0x37,0x01,
+0x0B,0x38,0x01,0x53,0x39,0x02,0x0F,0x38,0x01,0x0B,0x17,0x01,0xFC,0x60,0x01,0x00,
+0x0C,0x17,0x01,0xE7,0xFF,0xC5,0x62,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEB,0x17,
+0x00,0xCD,0x9C,0x28,0xC7,0x18,0xFE,0xFF,0xEF,0x17,0x00,0xCD,0x85,0x29,0x5C,0xC6,
+0x00,0x9A,0xE0,0xE4,0x00,0x00,0x45,0x4F,0x17,0x08,0x4F,0x57,0x10,0x43,0x23,0xC4,
+0x8F,0x45,0x8F,0x04,0x0F,0x5A,0x02,0x0B,0x18,0x01,0x4F,0x5A,0x42,0x9E,0xE1,0x43,
+0x18,0xD5,0x0F,0x19,0x01,0x5F,0x17,0x00,0xD4,0xD8,0xFE,0xFD,0x85,0x29,0x9C,0x38,
+0x0D,0x21,0x04,0xE4,0x00,0x40,0x6E,0x0D,0x21,0x06,0xFC,0x60,0x01,0x00,0x9C,0x28,
+0xE7,0xFF,0xC4,0x99,0x9C,0x38,0x0D,0x21,0x04,0xE4,0x00,0x40,0x42,0x0D,0x21,0x06,
+0xFC,0x60,0x01,0x00,0x9C,0x28,0xE7,0xFF,0xC4,0x5D,0x9C,0x38,0x0D,0x21,0x04,0xE7,
+0xFF,0x8A,0x38,0x98,0x80,0x98,0x61,0xE7,0xFF,0xE5,0x78,0x98,0x60,0xE7,0xFF,0x85,
+0x4C,0x98,0x61,0x98,0x80,0xE7,0xFF,0xEB,0xF2,0x98,0x62,0x98,0x80,0xE7,0xFF,0xEB,
+0xE2,0x98,0x63,0x98,0x80,0xE7,0xFF,0xEB,0xD2,0x98,0x66,0xC0,0x80,0x10,0x01,0xC0,
+0xA0,0x10,0x01,0xFC,0x84,0x01,0xB0,0xFC,0xA5,0x01,0xC8,0xC0,0xC0,0x10,0x01,0xFC,
+0xC6,0x01,0xA0,0xE7,0xFF,0x90,0x78,0x0D,0x21,0x06,0x9C,0x28,0xE7,0xFF,0x95,0xC5,
+0x9C,0x38,0x0D,0x41,0x00,0x0D,0x21,0x04,0xC1,0x40,0x10,0x01,0xE7,0xFF,0xD6,0x6E,
+0xFD,0x4A,0x00,0xDE,0x20,0x68,0x68,0x24,0x64,0x2D,0xD0,0x63,0x05,0xD6,0xE4,0x00,
+0x00,0xCB,0xE7,0xFF,0x89,0x52,0xE7,0xFF,0xD6,0x3A,0xE4,0x00,0x00,0x4F,0xE7,0xFF,
+0xC3,0xB4,0x0A,0xEA,0x09,0x40,0x63,0xBD,0x5E,0xE3,0x04,0xC2,0xE1,0x76,0xEA,0x20,
+0x00,0x99,0x98,0x62,0xE7,0xFF,0xEA,0x96,0x20,0x60,0x76,0xE7,0xFF,0x89,0x00,0x98,
+0x61,0x98,0x80,0xE7,0xFF,0xE4,0x40,0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x60,0x9C,
+0x28,0xE7,0xFF,0x84,0x05,0x98,0x62,0x98,0x80,0xE7,0xFF,0xE4,0x14,0xFC,0x60,0x01,
+0x5E,0xE7,0xFF,0x8D,0xC2,0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x60,0x9C,0x28,0xE7,
+0xFF,0x83,0x81,0xE7,0xFF,0xC3,0x0A,0x0A,0xEA,0x0D,0x40,0x63,0xBD,0x5E,0xE3,0x04,
+0xC2,0xE0,0xBB,0x6A,0x20,0x00,0x31,0x98,0x63,0xE7,0xFF,0xE9,0xEC,0x20,0x62,0xB8,
+0xE7,0xFF,0xE9,0x18,0x5C,0x63,0x04,0xC0,0x60,0x19,0x0E,0x20,0x00,0x49,0xC2,0xE0,
+0x10,0x01,0xEA,0xF7,0x08,0xE3,0xC6,0xF7,0x20,0x00,0x22,0xE0,0x28,0xE7,0xFF,0xC2,
+0x96,0x0C,0x6A,0x0D,0x0D,0x41,0x02,0x0D,0x21,0x06,0x98,0x63,0x98,0x80,0x9C,0x28,
+0xE7,0xFF,0xE3,0x47,0x0D,0x41,0x02,0x0D,0x21,0x06,0x9C,0x28,0x85,0x29,0xD0,0x69,
+0x06,0x2D,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xB9,0xFC,0x8E,0xF8,0xC3,
+0x00,0x10,0x01,0x0F,0x37,0x02,0xFF,0x18,0x09,0xA4,0xC2,0xE0,0x10,0x01,0xFE,0xF7,
+0x0A,0x54,0x87,0x29,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,0x90,0x0F,0x38,0x02,0x0F,
+0x37,0x68,0x0F,0x38,0x06,0x0F,0x18,0x0A,0x0F,0x37,0x6C,0x0F,0x17,0x70,0xE4,0x00,
+0x01,0x0B,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x84,0x0F,0x37,0x02,0x0F,0x38,0x68,
+0x0F,0x37,0x06,0x0E,0xF7,0x0A,0x0F,0x38,0x6C,0x0E,0xF8,0x70,0xE4,0x00,0x00,0xCF,
+0xCE,0xE3,0x00,0x68,0xC3,0x60,0x10,0x01,0xCC,0x63,0x00,0x1A,0xFF,0x7B,0x0A,0xF8,
+0x4C,0x63,0x10,0x8F,0x77,0x8F,0x03,0x9A,0xE0,0x43,0x38,0xBC,0x43,0x5B,0xBC,0x0F,
+0x5A,0x02,0x0F,0x59,0x00,0x9E,0xE4,0x5E,0xED,0x09,0x23,0xFF,0xBD,0xE4,0x00,0x00,
+0x6D,0x9C,0x7E,0xC3,0x40,0x10,0x01,0x5C,0x63,0x00,0xFF,0x5A,0x0C,0x50,0xCF,0x03,
+0x00,0x68,0xCC,0x63,0x00,0x1A,0x8F,0x58,0x4C,0x63,0x10,0x8C,0x77,0x9A,0xE0,0x43,
+0x03,0xBC,0x43,0x3A,0xBC,0x0F,0x39,0x02,0x0F,0x38,0x00,0x9E,0xE4,0x5E,0xED,0x09,
+0x23,0xFF,0xBD,0x85,0x29,0xD0,0x69,0x06,0x3D,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,
+0xFE,0xF7,0xBA,0x24,0x8E,0xF8,0xC3,0x00,0x10,0x01,0x0F,0x37,0x02,0xFF,0x18,0x09,
+0x00,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x08,0xD8,0x87,0x29,0x0B,0x37,0x00,0xC3,0x00,
+0x10,0x01,0x4F,0x39,0x40,0xFF,0x18,0x0B,0x90,0xE4,0x00,0x00,0x25,0x0B,0x37,0x00,
+0xC3,0x00,0x10,0x01,0x4F,0x39,0x40,0xFF,0x18,0x0B,0x84,0x0F,0x38,0x00,0x0B,0x37,
+0x02,0x0A,0xF7,0x04,0x4F,0x39,0x40,0x4E,0xF7,0x40,0x0F,0x38,0x04,0x0E,0xF8,0x08,
+0xE4,0x00,0x00,0xD9,0xCE,0xE3,0x00,0x34,0x8F,0x17,0xCE,0xE3,0x00,0x68,0xC3,0x60,
+0x10,0x01,0xFF,0x7B,0x0A,0xF8,0x8F,0x77,0x9A,0xE0,0x4F,0x37,0x08,0x43,0x58,0xBC,
+0x8F,0x3B,0x0B,0x5A,0x00,0x4F,0x5A,0x40,0x0F,0x59,0x00,0x9E,0xE2,0x5E,0xE6,0x89,
+0x23,0xFF,0xA9,0xE4,0x00,0x00,0x73,0x1E,0xE3,0xFE,0x5E,0xF7,0x00,0xCF,0x37,0x00,
+0x34,0xCE,0xF7,0x00,0x68,0xC3,0x60,0x10,0x01,0x8F,0x19,0xFF,0x7B,0x0C,0x50,0x8F,
+0x77,0x9A,0xE0,0x4F,0x37,0x08,0x43,0x58,0xBC,0x8F,0x3B,0x0B,0x5A,0x00,0x4F,0x5A,
+0x40,0x0F,0x59,0x00,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xA9,0xE7,0xFF,0xFC,0xE5,
+0x9C,0x38,0x0D,0x21,0x04,0x20,0x64,0x3E,0x98,0x60,0xE7,0xFF,0xFE,0x56,0x98,0x68,
+0xE4,0x00,0x00,0x19,0x98,0x62,0xE7,0xFF,0xFE,0x3E,0x98,0x69,0x0D,0x21,0x06,0x9C,
+0x28,0xE7,0xFF,0xFE,0x29,0x9C,0x38,0x98,0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFE,0x12,
+0x0D,0x21,0x06,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xFD,0xFD,0x20,0x80,0x64,0xD0,0x84,
+0x00,0xFA,0x20,0x88,0x90,0x20,0x8C,0xA8,0x5C,0x80,0x21,0x4B,0x0A,0x01,0x8A,0xF8,
+0xE4,0x00,0x00,0x49,0x53,0x00,0x19,0x8A,0xF8,0xE4,0x00,0x00,0x37,0x53,0x00,0x19,
+0x9A,0xE1,0xE4,0x00,0x00,0x25,0x53,0x00,0x32,0x8A,0xF8,0xE4,0x00,0x00,0x13,0x53,
+0x00,0x50,0x8A,0xF8,0xD0,0x6B,0x0F,0xAD,0x4F,0x43,0x10,0xC3,0x38,0x00,0x21,0xFF,
+0x39,0xBA,0x4C,0x8F,0x3A,0xC3,0x60,0x10,0x01,0x0F,0x99,0x02,0xC3,0x40,0x10,0x01,
+0xC3,0x20,0x10,0x01,0xFF,0x7B,0x09,0x00,0xFF,0x5A,0x0A,0xE8,0xFF,0x39,0x08,0xD8,
+0x87,0x89,0xCF,0x23,0x00,0x34,0x8F,0x79,0xCF,0x23,0x00,0x68,0xC0,0xA0,0x10,0x01,
+0x99,0x02,0xFC,0xA5,0x0A,0xF8,0xCB,0xC0,0x01,0xF4,0x8C,0xB9,0x9B,0x20,0x43,0x5B,
+0xCC,0x4F,0x99,0x08,0x0B,0xBA,0x00,0x8F,0x85,0x4F,0xBD,0x40,0x0F,0x5C,0x02,0x5F,
+0x5D,0x1D,0x43,0xBD,0xD5,0x48,0x98,0xB8,0xCF,0x5A,0x01,0xF4,0x43,0xA4,0xEB,0x43,
+0xBD,0x40,0x8F,0x5D,0x43,0x5A,0xF0,0x0F,0x5C,0x00,0x9F,0x22,0x5F,0x26,0x89,0x23,
+0xFF,0x3D,0xE4,0x00,0x02,0xEF,0x1F,0x23,0xFE,0x5F,0x39,0x00,0xCC,0xB9,0x00,0x34,
+0xCF,0x39,0x00,0x68,0xC0,0x80,0x10,0x01,0x8C,0xBB,0xFC,0x84,0x0C,0x50,0x9B,0xC2,
+0x8C,0x99,0xCB,0xA0,0x01,0xF4,0x9B,0x20,0x43,0x45,0xCC,0x0B,0x9A,0x00,0x4F,0x59,
+0x08,0x4F,0x9C,0x40,0x43,0x64,0xD4,0x0F,0x5B,0x02,0x5F,0x5C,0x1D,0x43,0x9C,0xD5,
+0x49,0x18,0xB8,0xCF,0x5A,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,0x8F,0x5C,0x43,
+0x5A,0xE8,0x0F,0x5B,0x00,0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x39,0xE4,0x00,0x02,
+0x39,0xC3,0x40,0x10,0x01,0x9B,0xC2,0xFF,0x5A,0x0B,0x84,0xCB,0xA0,0x01,0xF4,0x0F,
+0x7A,0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,0x1D,0x43,0x9C,0xDD,0x49,0x18,
+0xB8,0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,0x8F,0x7C,0x43,0x7B,0xE8,
+0x0F,0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,0x44,0xFF,0x7B,0x08,0xDE,0xD7,
+0x3B,0xFE,0x86,0xE4,0x00,0x01,0xAD,0xC3,0x40,0x10,0x01,0x9B,0xC2,0xFF,0x5A,0x0B,
+0x90,0xCB,0xA0,0x01,0xF4,0x0F,0x7A,0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,
+0x1D,0x43,0x9C,0xDD,0x49,0x18,0xB8,0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,
+0xF0,0x8F,0x7C,0x43,0x7B,0xE8,0x0F,0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,
+0x44,0xFF,0x7B,0x08,0xDE,0xD7,0x3B,0xFE,0x86,0xE4,0x00,0x01,0x21,0x8B,0x3A,0x9B,
+0xC2,0xC3,0x40,0x10,0x01,0xCB,0xA0,0x01,0xF4,0xFF,0x5A,0x0B,0xAC,0x0F,0x7A,0x02,
+0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,0x1D,0x43,0x9C,0xDD,0x49,0x18,0xB8,0xCF,
+0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,0x8F,0x7C,0x43,0x7B,0xE8,0x0F,0x7A,
+0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,0x44,0xFF,0x7B,0x0A,0xF8,0xD7,0x3B,0xFE,
+0x86,0xE4,0x00,0x00,0x91,0x8B,0x3A,0x9B,0xC2,0xC3,0x40,0x10,0x01,0xCB,0xA0,0x01,
+0xF4,0xFF,0x5A,0x0A,0xC8,0x0F,0x7A,0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,
+0x1D,0x43,0x9C,0xDD,0x49,0x18,0xB8,0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,
+0xF0,0x8F,0x7C,0x43,0x7B,0xE8,0x0F,0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,
+0x44,0xFF,0x7B,0x0A,0xF8,0xD7,0x3B,0xFE,0x86,0xE7,0xFF,0xF8,0x0B,0x9C,0x38,0x0D,
+0x21,0x04,0x0D,0x41,0x00,0x89,0x43,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xFB,0x80,0x88,
+0x8A,0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xFB,0x61,0x1C,
+0x21,0xC8,0x0D,0xC1,0x20,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,0x61,0x2C,0x0D,0x81,
+0x28,0x0D,0xA1,0x24,0x0D,0xE1,0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,
+0x0E,0x61,0x0C,0x0E,0x81,0x08,0x0E,0xA1,0x04,0xC1,0xC0,0x10,0x01,0xFD,0xCE,0x08,
+0xE2,0x0B,0x6E,0x01,0xC6,0xFB,0x7F,0xFF,0x0E,0xEE,0x01,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x09,0x68,0x0B,0x57,0x34,0x0B,0x37,0x36,0x47,0x1A,0xD7,0x43,0x9A,0xCC,0x4F,
+0x18,0xFA,0x5F,0x9C,0x04,0x47,0x1A,0xC4,0x5E,0xF8,0x06,0xD7,0x37,0x00,0x30,0x8B,
+0x19,0xC2,0xE0,0x10,0x01,0x5F,0x38,0x06,0xEA,0xF7,0x09,0xA0,0xD6,0xF9,0x00,0x30,
+0x8B,0x17,0x8E,0xFC,0x5F,0x18,0x06,0x1E,0xF7,0xEB,0x5E,0xF7,0x04,0xC2,0xE0,0x18,
+0xCE,0x20,0x00,0xE9,0xC3,0x00,0x12,0xAC,0x20,0x00,0xCD,0xD3,0x0F,0x01,0x80,0xC2,
+0xE0,0x10,0x01,0xEB,0x37,0x09,0x68,0xFE,0xF7,0x09,0x68,0x0B,0x17,0x02,0x8F,0x19,
+0x0B,0x37,0x04,0x0A,0xF7,0x06,0x8E,0xF9,0xCE,0xF7,0x00,0x0B,0xD6,0xF8,0x00,0x78,
+0x53,0x00,0x64,0xC2,0xE0,0x10,0x01,0xE4,0x00,0x00,0x23,0xC2,0xE0,0x10,0x01,0xF3,
+0x17,0x08,0x89,0x23,0x00,0x24,0x9F,0x1F,0xFB,0x17,0x08,0x89,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0x95,0xC1,0xA0,0x10,0x01,0xC1,0xE0,0x10,0x01,0xC1,0x40,0x10,0x01,
+0x57,0x7B,0x08,0xFD,0xAD,0x08,0xBC,0xFD,0xEF,0x08,0xB8,0xFD,0x4A,0x0B,0xEC,0x23,
+0x61,0x48,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0xF6,0x22,0xE5,0x1C,0x0A,0xEA,0x19,
+0x1E,0xF7,0xCE,0x5E,0xF7,0x04,0xC2,0xE0,0xF3,0x6E,0x20,0x00,0x4D,0x0A,0xEA,0x16,
+0x5E,0xE9,0xF1,0x20,0x00,0x29,0xC2,0xE0,0xF5,0xE8,0x20,0x00,0x9D,0xE7,0xFF,0xE2,
+0xE6,0x9A,0xE3,0x0E,0xED,0x00,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xB0,0xC2,0xE0,
+0x10,0x01,0x18,0x0F,0x00,0xF8,0x17,0x08,0xD2,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,
+0xC3,0xC2,0xE0,0x10,0x01,0x9B,0x01,0xFB,0x17,0x08,0x95,0xC2,0xE0,0x10,0x01,0xF2,
+0xF7,0x08,0xAC,0x22,0xE0,0x24,0x98,0x60,0xE7,0xFF,0xBE,0x3C,0x0E,0xED,0x02,0x22,
+0xE1,0x82,0x0A,0xEE,0x01,0x56,0xF7,0x40,0x22,0xE0,0x54,0xE7,0xFF,0x37,0x88,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x08,0xD2,0x9A,0xE1,0xE4,0x00,0x14,0xFD,0x98,0x60,0xE7,
+0xFF,0xFC,0xBC,0x0A,0xEE,0x01,0x56,0xF7,0x20,0xD2,0xE0,0x54,0x76,0x0E,0xA1,0x06,
+0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,
+0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,
+0x32,0x0D,0x21,0x36,0x98,0x6A,0x98,0x82,0x1C,0x21,0x38,0xE7,0xFF,0xF7,0xE1,0x22,
+0xE5,0x0E,0x0A,0xEE,0x01,0x57,0x17,0x08,0x23,0x00,0x2C,0xE7,0xFF,0xE1,0x8A,0xE4,
+0x00,0x13,0x65,0x57,0x17,0x40,0x23,0x00,0x94,0xC6,0xF7,0x20,0x00,0x22,0xE0,0x7A,
+0xC2,0xE0,0x10,0x01,0x98,0x62,0xF3,0x17,0x08,0xD2,0xC3,0x00,0x19,0x0A,0x20,0x25,
+0x7B,0x9F,0x01,0xFB,0x17,0x08,0xD2,0xE4,0x00,0x14,0x41,0x0C,0x0D,0x00,0xE4,0x00,
+0x14,0x33,0xC2,0x40,0x10,0x01,0xFE,0x52,0x08,0x82,0x22,0xE8,0xCA,0x0A,0xEE,0x01,
+0xC1,0x40,0x10,0x01,0x56,0xF7,0x08,0x22,0xE0,0x74,0xF2,0xEA,0x08,0xB0,0x9E,0xE1,
+0xFA,0xEA,0x08,0xB0,0xE7,0xFF,0x36,0x56,0xF2,0xEA,0x08,0xB0,0xD2,0xE0,0x4F,0x5A,
+0xE4,0x00,0x0E,0xD9,0xF8,0x0A,0x08,0xB0,0xE4,0x00,0x11,0x8B,0xC2,0x00,0x10,0x01,
+0xC1,0x80,0x10,0x01,0xC1,0x60,0x10,0x01,0xFE,0x10,0x08,0x83,0xFD,0x8C,0x0B,0xCC,
+0xFD,0x6B,0x08,0x8C,0xD2,0xE3,0x39,0xDE,0x12,0xEA,0x00,0x22,0xE4,0x1A,0x18,0x12,
+0x00,0xE7,0xFF,0xC7,0xC4,0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x20,0x03,
+0xE8,0x20,0x68,0x1C,0xFF,0x20,0x01,0xF4,0xEF,0x37,0x01,0xC7,0xEF,0x38,0x01,0xC5,
+0x0A,0xEE,0x01,0x56,0xF7,0x08,0xD2,0xE0,0x38,0x02,0xC1,0xC0,0x10,0x01,0xC2,0x20,
+0x10,0x01,0x12,0xEA,0x00,0xFD,0xCE,0x08,0xF0,0xFE,0x31,0x01,0xAC,0xD2,0xE1,0x10,
+0xF1,0x0B,0x8B,0x04,0xC3,0x8F,0xFF,0xE0,0x20,0x05,0xF9,0x08,0x8A,0x48,0x0B,0x2B,
+0x06,0x0B,0x6B,0x00,0x43,0xA4,0xCD,0x08,0xAA,0x46,0x0B,0x4B,0x02,0x43,0xC5,0xE5,
+0x0B,0x0A,0x18,0x08,0x6A,0x16,0x42,0xFA,0xC5,0x41,0x03,0xDD,0x42,0xFE,0xBB,0x41,
+0x3D,0x43,0x8E,0xE9,0x22,0xE1,0x84,0x42,0x7C,0xDD,0x41,0x3A,0xCD,0x42,0x9D,0x9B,
+0x42,0x5E,0x4B,0x8E,0x92,0x22,0x80,0x40,0x26,0x80,0x28,0x26,0xE0,0x2A,0xE4,0x00,
+0x00,0x8F,0x26,0xFD,0x0E,0x4E,0xB7,0xFA,0x46,0x55,0xBE,0x42,0x52,0xAD,0x4E,0xB4,
+0xFA,0x46,0x95,0xA6,0x42,0xB4,0xAD,0xD6,0xB2,0x01,0x74,0x42,0x98,0xD5,0x41,0x28,
+0x4B,0x42,0x74,0x9B,0x8E,0x69,0x22,0x60,0x40,0x26,0x60,0x28,0x26,0xE0,0x2A,0xE4,
+0x00,0x00,0x2D,0x26,0xFC,0x4A,0x4E,0xF3,0xFA,0x46,0x77,0x9E,0x42,0x73,0xBD,0x9A,
+0xE1,0xD6,0x72,0x06,0x18,0x42,0x44,0xD5,0x42,0x65,0xDD,0x42,0x83,0xE5,0x42,0xF9,
+0xC5,0x41,0x32,0xA3,0x42,0xF3,0xBB,0x8E,0xE9,0x22,0xE0,0xDC,0x43,0x9B,0xE5,0x40,
+0xF9,0xD5,0x40,0xD2,0xE3,0x41,0x33,0x3B,0x8C,0xC9,0x20,0xC0,0x40,0x24,0xC0,0x28,
+0x26,0xE0,0x2A,0xE4,0x00,0x00,0x3B,0x26,0xFC,0x66,0x4D,0x37,0xFA,0x46,0xA9,0xBE,
+0x42,0xB5,0x4D,0x4D,0x26,0xFA,0x44,0xC9,0x36,0x41,0x26,0x4D,0xD5,0x35,0x01,0xA0,
+0x43,0x58,0xD5,0x41,0x08,0x43,0x43,0x5A,0xD3,0x43,0x38,0xCD,0x42,0x94,0xA3,0x43,
+0x39,0xCB,0x8F,0x48,0x8E,0x99,0x9A,0xE0,0xD6,0x9A,0x00,0x45,0x8B,0x54,0x9A,0xE1,
+0x42,0x73,0x9B,0x42,0x52,0x93,0x8E,0x53,0xD6,0x5A,0x01,0xB1,0xE4,0x00,0x00,0x6F,
+0x41,0x38,0xCD,0x40,0xF4,0x3B,0x43,0x89,0xE3,0x8F,0x87,0x23,0x80,0x40,0x27,0x80,
+0x28,0x26,0xE0,0x2A,0xE7,0xFF,0xFF,0x79,0x26,0xFE,0xE2,0x4E,0xFC,0xFA,0x47,0x97,
+0xE6,0x43,0x9C,0xBD,0x9A,0xE0,0xD7,0x95,0x00,0xF0,0xE7,0xFF,0xFF,0x4D,0x8B,0x52,
+0x52,0xE0,0x10,0x43,0xDE,0xF3,0x43,0xBD,0xEB,0x53,0x20,0x11,0x8F,0xBE,0x5F,0xBA,
+0x1F,0x4A,0xF7,0xC8,0x4F,0x37,0x21,0x46,0xF7,0xCE,0x56,0xF7,0x0F,0xD2,0xE0,0x3C,
+0x92,0x0C,0xAA,0x17,0x0C,0x8A,0x19,0x0C,0x6A,0x47,0x0F,0x0A,0x49,0xE4,0x00,0x0F,
+0x05,0x12,0xF0,0x00,0x9B,0x1E,0x46,0xF7,0xC4,0x98,0x63,0x1A,0xF0,0x00,0xE7,0xFF,
+0xD9,0x96,0xE4,0x00,0x00,0xEF,0x0B,0x0B,0x00,0xC3,0x0F,0xFF,0xE4,0x20,0x01,0xB3,
+0x13,0x32,0x00,0x0A,0x6B,0x02,0x9F,0x21,0x0B,0x6A,0x16,0x5F,0x39,0x00,0x41,0x1B,
+0xC5,0x0B,0x4A,0x18,0x0B,0xAA,0x46,0x43,0xDA,0x9D,0x43,0x1D,0xC5,0x0B,0x8A,0x48,
+0x43,0x18,0xC3,0x42,0x7C,0x9D,0x1B,0x32,0x00,0x42,0x73,0x9B,0x8F,0x13,0x41,0x08,
+0x43,0x43,0xDE,0xF3,0x8F,0xC8,0x5F,0x1E,0x1F,0x53,0x00,0x10,0x4B,0x00,0xC0,0x23,
+0x00,0x3C,0x0F,0xAA,0x17,0x0F,0x8A,0x19,0x0F,0x6A,0x47,0x0F,0x4A,0x49,0x27,0x28,
+0xDB,0x9E,0xFF,0x9B,0x3C,0x1A,0xEA,0x00,0x12,0xF0,0x00,0x46,0xF7,0xCC,0x1A,0xF0,
+0x00,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x88,0x12,0xF1,0x00,0x1A,0xEA,0x10,0x12,
+0xF1,0x01,0x1A,0xEA,0x40,0xE7,0xFF,0x31,0x54,0x12,0xEA,0x00,0xD2,0xE1,0x3A,0x96,
+0xE4,0x00,0x01,0xD9,0x18,0x12,0x00,0xE7,0xFF,0xFF,0xC5,0x22,0xE7,0x7A,0x18,0x12,
+0x00,0x0A,0xEB,0x04,0xC2,0xEF,0xFF,0xE0,0x23,0xFF,0x45,0x0B,0xCA,0x16,0x0B,0xAA,
+0x18,0x0B,0x2B,0x00,0x0B,0x0B,0x02,0x43,0x9E,0xCD,0x43,0x7D,0xC5,0x43,0xDE,0xBD,
+0x0B,0x4B,0x06,0x43,0xDE,0xF3,0x43,0xBD,0xD5,0x43,0x9C,0xE3,0x43,0xBD,0xEB,0x43,
+0x7B,0xDB,0x8F,0xBE,0x8F,0x7C,0xD7,0xBB,0x36,0x51,0xE4,0x00,0x0D,0x41,0x0B,0x8C,
+0x03,0x43,0x98,0xE5,0x5F,0x9C,0x06,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,
+0xC3,0x60,0x10,0xE8,0x20,0x00,0xC1,0x0B,0x8C,0x03,0xC3,0x60,0x10,0x01,0xEF,0x9B,
+0x08,0xD5,0xFF,0x7B,0x08,0xD4,0x0B,0x8C,0x07,0x0F,0x9B,0x03,0xC3,0x60,0x10,0x01,
+0xEF,0x3B,0x08,0xC5,0xFF,0x7B,0x08,0xC4,0x0F,0x1B,0x03,0x13,0x10,0x00,0x53,0x18,
+0x02,0x1B,0x10,0x00,0x0B,0x0E,0x05,0x0F,0x0E,0x01,0x0B,0x0E,0x07,0x0F,0x0E,0x03,
+0x0B,0x0C,0x09,0x0F,0x0C,0x01,0x0B,0x0C,0x0B,0x0F,0x0C,0x03,0x0B,0x0C,0x0D,0x0E,
+0xEB,0x01,0x0F,0x0C,0x05,0xFE,0xE0,0x7F,0xFF,0x0B,0x0C,0x0F,0x0E,0xEB,0x05,0x0E,
+0xEB,0x07,0x0E,0xEE,0x05,0x0E,0xEE,0x07,0x0E,0xEC,0x09,0x0E,0xEC,0x0B,0x0F,0x0C,
+0x07,0x0E,0xEC,0x0D,0x0E,0xEC,0x0F,0x9B,0x01,0x12,0xF1,0x01,0x0F,0x4B,0x03,0x1A,
+0xF1,0x00,0x42,0xF8,0xBD,0x1A,0xF1,0x01,0xE7,0xFF,0xFE,0x03,0x0A,0xEA,0x17,0x0B,
+0x0B,0x01,0x43,0x18,0xBD,0x5F,0x18,0x06,0x4E,0xF8,0xFA,0x47,0x17,0xC6,0x42,0xF8,
+0xBD,0xC3,0x00,0x10,0x01,0xEB,0x38,0x01,0xC4,0xD6,0xF9,0x01,0x2C,0x0A,0xEA,0x19,
+0x0B,0x0B,0x03,0x43,0x18,0xBD,0x5F,0x18,0x06,0x4E,0xF8,0xFA,0x47,0x17,0xC6,0x42,
+0xF8,0xBD,0xC3,0x00,0x10,0x01,0xEB,0x38,0x01,0xC6,0xD6,0xF9,0x31,0x20,0xE7,0xFF,
+0x2F,0xAA,0xD0,0x60,0x30,0xE2,0xE7,0xFF,0xD9,0x54,0xC2,0xE0,0x10,0x01,0xEF,0x17,
+0x07,0xF6,0xD3,0x01,0x30,0x66,0xE4,0x00,0x0B,0xCD,0x9B,0x1E,0xEF,0x17,0x08,0xC1,
+0xC1,0xA0,0x10,0x01,0x13,0x2A,0x00,0xFD,0xAD,0x0C,0x02,0x9B,0x00,0x8A,0xED,0xE4,
+0x00,0x00,0x35,0x0B,0x57,0x01,0x9F,0x01,0x0F,0x4B,0x01,0x5F,0x18,0x00,0x0B,0x57,
+0x03,0x1E,0xF7,0x30,0x0F,0x4B,0x03,0x9D,0x64,0xD7,0x19,0xFF,0x56,0xC2,0xE0,0x10,
+0x01,0xEE,0xF7,0x08,0x9A,0x22,0xE4,0x26,0x99,0x60,0xE4,0x00,0x00,0x5F,0xE7,0xFF,
+0xC0,0x0A,0x20,0x6B,0xD8,0xE7,0xFF,0xBF,0xFC,0x20,0x6C,0xAE,0xE7,0xFF,0xFF,0xD9,
+0xCC,0x8B,0x00,0x30,0x88,0xCB,0x1C,0x84,0x10,0x9D,0x61,0x8C,0x8A,0x5D,0x6B,0x00,
+0x1C,0x64,0x06,0x9C,0x88,0xE7,0xFF,0x6E,0xD4,0x10,0xAA,0x00,0xD4,0xAB,0xFF,0x25,
+0xE4,0x00,0x00,0x11,0xE7,0xFF,0x6E,0x26,0xE7,0xFF,0xBF,0x96,0xC3,0x20,0x10,0x01,
+0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0x20,0x68,0xD6,0x53,0x40,0x4B,0xEF,0x58,
+0x08,0xE5,0xEF,0x59,0x08,0xAF,0x53,0x00,0x25,0xEF,0x17,0x08,0xFB,0xC2,0xA0,0x10,
+0x01,0xC2,0xE0,0x10,0x01,0xFE,0xB5,0x08,0xA0,0xEF,0x17,0x08,0xD1,0x99,0x60,0xC2,
+0x60,0x10,0x01,0xC2,0x80,0x10,0x01,0x8A,0x55,0xE4,0x00,0x03,0x19,0x53,0x40,0x32,
+0xEF,0x58,0x08,0xE5,0xEF,0x59,0x08,0xAF,0x53,0x00,0x19,0xE7,0xFF,0xFF,0x9D,0x4E,
+0xEB,0x10,0x8E,0xEE,0x0B,0x17,0x00,0xC3,0x0F,0xFF,0xE4,0x20,0x05,0x3B,0x0B,0x37,
+0x02,0xC3,0x2F,0xFF,0xE0,0x20,0x05,0x11,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0A,0x37,
+0x17,0x42,0x38,0x8D,0x5E,0x31,0x06,0x4F,0x11,0xFA,0x0A,0xF7,0x19,0x46,0x38,0x8E,
+0x42,0xF9,0xBD,0x42,0x31,0xC5,0x5E,0xF7,0x06,0x4F,0x17,0xFA,0x5E,0x31,0x06,0x46,
+0xF8,0xBE,0xE9,0xF3,0x08,0xE5,0x42,0xF7,0xC5,0x43,0x15,0x5C,0x5E,0xF7,0x06,0x13,
+0x58,0x00,0xD6,0xEF,0x00,0xE4,0xC3,0x00,0x10,0x01,0xEB,0x18,0x08,0xAF,0xD6,0x38,
+0x00,0x84,0x9B,0x03,0x27,0x48,0x57,0x1F,0x1A,0x01,0xE4,0x00,0x00,0x19,0x9B,0x00,
+0x23,0x40,0x24,0x1F,0x1A,0xFF,0x5F,0x18,0x00,0x43,0x52,0x5C,0x1B,0x1A,0x00,0x43,
+0x15,0x5C,0x13,0x18,0x00,0xD3,0x02,0x06,0xA1,0xEB,0x14,0x08,0xD1,0xD6,0xF8,0x00,
+0x8C,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0F,0x37,0x19,0xE4,0x00,0x00,0x9B,0xD6,0xEF,
+0x02,0x4C,0x43,0x2F,0xC5,0x40,0x77,0xC5,0x43,0x39,0xCB,0x42,0xF8,0xBD,0x43,0x4F,
+0x7B,0x40,0x63,0xBB,0x8C,0x79,0x40,0x63,0xD3,0x40,0x63,0xC8,0xE7,0xFF,0x2B,0x18,
+0x4E,0xEB,0x10,0x8E,0xEE,0x5C,0x63,0x06,0x0B,0x17,0x02,0x41,0xEF,0x1D,0xCE,0xEB,
+0x00,0x30,0x8E,0xEA,0x0B,0x37,0x18,0xD7,0x19,0x00,0x58,0x41,0xF8,0x7D,0xE4,0x00,
+0x00,0x0D,0x8D,0xF8,0x0D,0xF7,0x19,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0xFB,0xD6,
+0x37,0x00,0xCC,0xCE,0xEB,0x00,0x30,0x4F,0x0B,0x10,0x8E,0xEA,0x8F,0x0E,0x0B,0x18,
+0x01,0x0F,0x17,0x17,0xE4,0x00,0x00,0xAB,0xC3,0x00,0x10,0x01,0xE9,0xF8,0x08,0xAF,
+0xD6,0x2F,0x02,0x4C,0x43,0x0F,0xBD,0x43,0x2F,0x7B,0x43,0x18,0xC3,0x40,0x71,0xBD,
+0x42,0x37,0x8D,0x40,0x63,0x8B,0x8C,0x78,0x40,0x63,0xCB,0x40,0x63,0xC0,0xE7,0xFF,
+0x2A,0x34,0x4E,0xEB,0x10,0x8E,0xEE,0x5C,0x63,0x06,0x0B,0x17,0x00,0x41,0xEF,0x1D,
+0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0B,0x37,0x16,0xD7,0x19,0x00,0x58,0x41,0xF8,0x7D,
+0xE4,0x00,0x00,0x0D,0x8D,0xF8,0x0D,0xF7,0x17,0x4E,0xEB,0x10,0xCF,0x0B,0x00,0x30,
+0x8E,0xEE,0x8F,0x0A,0x9D,0x61,0x0B,0x38,0x17,0x5D,0x6B,0x00,0x0B,0x18,0x19,0x0F,
+0x37,0x01,0x0F,0x17,0x03,0x12,0xEA,0x00,0xD6,0xEB,0xF4,0x3D,0xE7,0xFF,0xBB,0xEE,
+0x20,0x68,0x36,0x9B,0x08,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x01,0xBD,0xC2,0xE0,0x10,
+0x01,0x13,0x2A,0x00,0xF3,0x77,0x08,0xE0,0x8B,0x0D,0xC2,0xE0,0x10,0x01,0x9B,0x80,
+0xFE,0xF7,0x0B,0xD0,0xFF,0x40,0x7F,0xFF,0xE4,0x00,0x00,0x9F,0xD7,0x79,0x00,0x92,
+0x0F,0x57,0xFD,0x0F,0x57,0xFF,0x0F,0x57,0x01,0x0F,0x57,0x03,0x8B,0x79,0x0B,0xB7,
+0x00,0xC3,0xAF,0xFF,0xE0,0x20,0x00,0x41,0x0B,0xB7,0xFD,0x0F,0xB7,0x01,0x0B,0xB7,
+0xFF,0xE4,0x00,0x00,0x1B,0x0B,0xB8,0x01,0x0F,0xB7,0x01,0x0B,0xB8,0x03,0x0F,0xB7,
+0x03,0x0B,0xB8,0x01,0x9F,0x81,0x0F,0xB7,0xFD,0x5F,0x9C,0x00,0x0B,0xB8,0x03,0x1F,
+0x18,0x30,0x0F,0xB7,0xFF,0x9E,0xE8,0xD7,0x99,0xFD,0xAE,0xC2,0xE0,0x10,0x01,0xFB,
+0x77,0x08,0xE0,0xC2,0xE0,0x10,0x01,0x23,0x24,0x7A,0x9B,0x02,0xFB,0x17,0x08,0xFD,
+0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x01,0xBC,0x9B,0x0A,0x9B,0x4A,0x43,0x18,0xBD,0x9A,
+0xE0,0xE4,0x00,0x00,0x8F,0xF8,0x17,0x08,0xFD,0xE7,0xFF,0xFF,0xCF,0x0B,0x6C,0x04,
+0x0B,0x8C,0x00,0x0B,0xAC,0x06,0x43,0x9C,0xDD,0x9E,0xE1,0x43,0x98,0xE3,0x5E,0xF7,
+0x00,0x43,0x9C,0xD0,0x8F,0x9B,0x0B,0x6C,0x02,0x0F,0x8D,0x01,0x43,0x7B,0xED,0x0F,
+0x8C,0x01,0x43,0x78,0xDB,0x43,0x7B,0xD0,0x8F,0x7D,0x5F,0x7B,0x06,0x0F,0x6D,0x03,
+0x0F,0x6C,0x03,0x1D,0xAD,0x30,0x9D,0x88,0xD6,0xF9,0xFE,0x2E,0x12,0xF0,0x00,0x56,
+0xF7,0x02,0x22,0xE0,0x24,0x98,0x64,0xE7,0xFF,0xCF,0x44,0x13,0x0A,0x00,0xC2,0xE0,
+0x10,0x01,0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,
+0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,
+0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0xFB,0x17,0x08,0x84,0x98,0x61,0x1C,
+0x21,0x38,0xE7,0xFF,0xAD,0xE9,0x18,0x0F,0x00,0x9A,0xE4,0xE4,0x00,0x04,0xD9,0xD2,
+0xE4,0x01,0xE6,0x0A,0xEE,0x01,0x56,0xF7,0x08,0x22,0xE0,0x5C,0x9A,0xE3,0x18,0x12,
+0x00,0x0E,0xED,0x00,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xC1,0xE4,0x00,0x04,0xD7,
+0x12,0xEF,0x00,0x9E,0xE1,0x5E,0xF7,0x00,0x1A,0xEF,0x00,0xD2,0xE1,0x12,0xE1,0x9A,
+0xE5,0x18,0x0F,0x00,0x0E,0xED,0x00,0xE4,0x00,0x04,0xA1,0xD2,0xE5,0x09,0xC6,0x12,
+0xEF,0x00,0x9E,0xE1,0x1A,0xEF,0x00,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0xE0,0x22,
+0xE9,0x36,0x12,0xF0,0x00,0x56,0xF7,0x01,0x22,0xE1,0x10,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x08,0xFD,0xC1,0x40,0x10,0x01,0xF2,0xEA,0x08,0x88,0x22,0xE8,0x66,0x98,0x65,
+0xE7,0xFF,0xCD,0xD2,0x98,0x61,0xE7,0xFF,0xAC,0xE0,0x9A,0xE1,0xFA,0xEA,0x08,0x88,
+0xE4,0x00,0x01,0x75,0xD2,0xE1,0x05,0x8E,0x98,0x65,0xE7,0xFF,0xCD,0x9E,0x98,0x61,
+0xE7,0xFF,0xAC,0xAC,0xF8,0x0A,0x08,0x88,0xE4,0x00,0x01,0x45,0x0B,0x0B,0x00,0x0B,
+0x4C,0x00,0x43,0x38,0xD5,0x5F,0x39,0x06,0x4E,0xF9,0xFA,0x47,0x37,0xCE,0x42,0xF9,
+0xBD,0x5E,0xEC,0x99,0x20,0x00,0x7D,0x0A,0xEC,0x03,0x0B,0x2B,0x03,0x43,0x39,0xBD,
+0x5F,0x39,0x06,0x4E,0xF9,0xFA,0x47,0x37,0xCE,0x42,0xF9,0xBD,0xC2,0xE0,0x10,0xE8,
+0x20,0x01,0x95,0xC3,0x20,0x10,0x01,0xF2,0xF9,0x08,0xFD,0x22,0xE8,0xB6,0x8F,0x1A,
+0x43,0x18,0xB8,0x0F,0x0A,0x17,0xC3,0x00,0x10,0x01,0xEB,0x58,0x08,0x8E,0xC3,0x00,
+0x10,0x01,0xEB,0x18,0x0B,0xCE,0x8F,0x1A,0x42,0xF8,0xB8,0x0E,0xEA,0x19,0x9A,0xE1,
+0xFA,0xF9,0x08,0xFD,0xE4,0x00,0x00,0x45,0x22,0xE4,0x66,0xC2,0xE0,0x10,0x01,0x0F,
+0x0A,0x17,0xEA,0xF7,0x08,0x8F,0xF8,0x19,0x08,0xFD,0x0E,0xEA,0x19,0xE4,0x00,0x00,
+0x13,0x9A,0xE3,0x1A,0xEF,0x00,0x9A,0xE1,0x98,0x61,0x1A,0xEA,0x00,0xE7,0xFF,0xAB,
+0x72,0xE4,0x00,0x00,0x13,0x9A,0xE3,0x1A,0xEF,0x00,0x12,0xEF,0x00,0xD2,0xE2,0x0A,
+0x51,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xC1,0xE7,0xFF,0x24,0xAC,0xC2,0xE0,0x10,
+0x01,0x9B,0x03,0xFB,0x17,0x08,0xAC,0xE7,0xFF,0xCF,0x52,0xE7,0xFF,0x65,0x38,0x98,
+0x60,0xE7,0xFF,0xAB,0x0A,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xC3,0x9A,0xE6,0xE4,
+0x00,0x01,0xF1,0xD2,0xE6,0x08,0xA6,0x0A,0xEE,0x01,0x56,0xF7,0x40,0x22,0xE0,0x26,
+0x98,0x64,0xE7,0xFF,0xE9,0x96,0xC3,0x00,0x10,0x01,0xF2,0xF8,0x08,0xC3,0x9E,0xE1,
+0x5E,0xF7,0x00,0xFA,0xF8,0x08,0xC3,0x5E,0xE6,0x53,0x0A,0xEE,0x01,0x20,0x01,0x35,
+0x56,0xF7,0x40,0x22,0xE0,0x50,0x9A,0xE1,0x0E,0xED,0x00,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x08,0xD2,0xE4,0x00,0x01,0xA9,0x0C,0x0D,0x00,0x98,0x60,0x0E,0xA1,0x06,0x0E,
+0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,
+0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,
+0x0D,0x21,0x36,0x1C,0x21,0x38,0xE7,0xFF,0xE8,0xCF,0x56,0xF7,0x08,0xD2,0xE0,0x04,
+0xD2,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xB0,0x9A,0xE2,0xE4,0x00,0x00,0xD9,0xC3,
+0x6F,0xFF,0xE4,0x23,0xE1,0xF9,0xE7,0xFF,0xF2,0x07,0x98,0x62,0xE7,0xFF,0xCA,0x9A,
+0xFE,0xE0,0x7F,0xFF,0x0E,0xEB,0x05,0x0E,0xEB,0x07,0x0E,0xEE,0x05,0x0E,0xEE,0x07,
+0x0E,0xEC,0x09,0x0E,0xEC,0x0B,0x0E,0xEC,0x0D,0x0E,0xEC,0x0F,0xE7,0xFF,0xF1,0xBB,
+0x0B,0x8C,0x01,0x43,0x99,0xE5,0x5F,0x9C,0x06,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,
+0x7C,0xDD,0x5F,0x6C,0x99,0x23,0xE4,0xA7,0xE7,0xFF,0xF2,0x7F,0xFE,0xE0,0x7F,0xFF,
+0x18,0x0F,0x00,0x0E,0xEB,0x01,0x0E,0xEB,0x03,0x0E,0xEB,0x05,0x0E,0xEB,0x07,0x18,
+0x11,0x00,0x1B,0x11,0x01,0x9A,0xE5,0x0E,0xED,0x00,0xE4,0x00,0x00,0x3B,0xC2,0xE0,
+0x10,0x01,0xCB,0x20,0xFF,0xFD,0xEB,0x17,0x08,0xC1,0x9F,0x01,0x5F,0x18,0x04,0xD7,
+0x19,0xCF,0x5D,0xE7,0xFF,0xF3,0xD3,0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,
+0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,
+0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,
+0x38,0x85,0x29,0x9C,0x38,0x0D,0x41,0x00,0x0D,0x21,0x04,0x89,0x43,0x20,0x84,0x46,
+0x98,0x60,0x88,0x8A,0xE7,0xFF,0xE2,0xAE,0x98,0x68,0xE4,0x00,0x00,0x1D,0x98,0x62,
+0x88,0x8A,0xE7,0xFF,0xE2,0x92,0x98,0x69,0x88,0x8A,0x0D,0x21,0x06,0x0D,0x41,0x02,
+0x9C,0x28,0xE7,0xFF,0xE2,0x73,0x9C,0x38,0x0D,0x21,0x04,0x0D,0x41,0x00,0x89,0x43,
+0x98,0x60,0x88,0x8A,0xE7,0xFF,0xE2,0x4E,0x88,0x8A,0x0D,0x21,0x06,0x0D,0x41,0x02,
+0x98,0x68,0x9C,0x28,0xE7,0xFF,0xE2,0x2F,0xD0,0x6B,0x0B,0x85,0x4F,0x03,0x10,0xC2,
+0xF8,0x00,0x21,0xFE,0xF7,0xBA,0x7C,0x8E,0xF8,0xC3,0x40,0x10,0x01,0x0F,0xB7,0x02,
+0xC3,0x60,0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,0x80,0x10,0x01,0xC3,0x00,0x10,0x01,
+0xC2,0xE0,0x10,0x01,0xFF,0x5A,0x09,0xA4,0xFF,0x7B,0x0A,0xE8,0xFF,0x39,0x0A,0x54,
+0xFF,0x9C,0x0B,0x60,0xFF,0x18,0x0C,0xF2,0xFE,0xF7,0x09,0x68,0x87,0xA9,0xCC,0x63,
+0x00,0x1A,0x5C,0x63,0x00,0x4F,0x23,0x08,0x4C,0x63,0x10,0x8F,0x19,0x8E,0xF9,0x8F,
+0x43,0x9B,0x20,0x43,0x77,0xCC,0x43,0xB8,0xCC,0x4F,0x99,0x08,0x0B,0xBD,0x01,0x8F,
+0x9A,0x0F,0x9C,0x02,0x4F,0x9C,0x42,0x43,0x9D,0xE5,0x0F,0x9B,0x01,0x9F,0x22,0x5F,
+0x26,0x89,0x23,0xFF,0x85,0xE4,0x00,0x01,0xE7,0x9C,0x7E,0xCC,0x63,0x00,0x1A,0x5C,
+0x63,0x00,0x4F,0x43,0x08,0x4C,0x63,0x10,0x8F,0x1A,0x8C,0x79,0x8E,0xFA,0x9B,0x20,
+0x43,0x77,0xCC,0x43,0xB8,0xCC,0x4F,0x99,0x08,0x0B,0xBD,0x01,0x8F,0x83,0x0F,0x9C,
+0x02,0x4F,0x9C,0x42,0x43,0x9D,0xE5,0x0F,0x9B,0x01,0x9F,0x22,0x5F,0x26,0x89,0x23,
+0xFF,0x85,0xE4,0x00,0x01,0x6D,0x0B,0x78,0x35,0x0F,0x3A,0x6A,0x4F,0x39,0x42,0x43,
+0x3B,0xCD,0x0B,0x78,0x37,0x0F,0x37,0x35,0x0F,0x3A,0x6E,0x4F,0x39,0x42,0x43,0x3B,
+0xCD,0x0F,0x37,0x37,0x0F,0x3A,0x72,0xE4,0x00,0x00,0x4B,0x0F,0x59,0x6A,0x0B,0x78,
+0x35,0x4F,0x5A,0x42,0x43,0x5B,0xD5,0x0B,0x78,0x37,0x0F,0x57,0x35,0x0F,0x59,0x6E,
+0x0F,0x39,0x72,0x4F,0x5A,0x42,0x43,0x5B,0xD5,0x0F,0x57,0x37,0x4F,0x39,0x42,0x0B,
+0x18,0x39,0x43,0x18,0xCD,0x0F,0x17,0x39,0xE4,0x00,0x00,0xC1,0xC3,0xA0,0x10,0x01,
+0x9A,0xE0,0xFF,0xBD,0x0B,0xAC,0x43,0x17,0xE4,0x43,0x57,0xDC,0x4F,0x37,0x08,0x0B,
+0x5A,0x01,0x8F,0x3D,0x0F,0x39,0x02,0x4F,0x39,0x42,0x43,0x3A,0xCD,0x0F,0x38,0x01,
+0x9E,0xE2,0x5E,0xE2,0x09,0x23,0xFF,0x85,0xE4,0x00,0x00,0x61,0xC3,0xA0,0x10,0x01,
+0x9A,0xE0,0xFF,0xBD,0x0A,0xC8,0x43,0x17,0xE4,0x43,0x57,0xDC,0x4F,0x37,0x08,0x0B,
+0x5A,0x01,0x8F,0x3D,0x0F,0x39,0x02,0x4F,0x39,0x42,0x43,0x3A,0xCD,0x0F,0x38,0x01,
+0x9E,0xE2,0x5E,0xE2,0x09,0x23,0xFF,0x85,0x85,0x29,0x9C,0x38,0x0D,0x21,0x04,0x20,
+0x64,0x56,0x98,0x60,0xE7,0xFF,0xFD,0x08,0x98,0x68,0xE7,0xFF,0xFC,0xFC,0x98,0x6A,
+0xE4,0x00,0x00,0x25,0x98,0x62,0xE7,0xFF,0xFC,0xE4,0x98,0x69,0xE7,0xFF,0xFC,0xD8,
+0x98,0x6B,0x0D,0x21,0x06,0x9C,0x28,0xE7,0xFF,0xFC,0xC3,0x9C,0x38,0x98,0x60,0x0D,
+0x21,0x04,0xE7,0xFF,0xFC,0xAC,0x0D,0x21,0x06,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xFC,
+0x97,0xC2,0xE0,0x10,0x01,0xCB,0x00,0x7F,0xFF,0xFE,0xF7,0x0B,0x60,0x8B,0x37,0x0B,
+0x79,0x00,0x5F,0x1B,0x15,0x4B,0x58,0xD8,0x9F,0x22,0x5F,0x1A,0x06,0xC3,0x40,0x10,
+0x01,0xFF,0x5A,0x0B,0x70,0xD7,0x3A,0xFF,0x56,0x9B,0x20,0x0B,0x57,0x00,0x43,0x5A,
+0xC5,0x9E,0xE2,0xC3,0x40,0x3E,0x88,0xC3,0x40,0x10,0x01,0x4B,0x39,0x0A,0xFF,0x5A,
+0x0B,0x70,0xD6,0xFA,0xFF,0x4E,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0x23,0x20,
+0x64,0xEB,0x37,0x08,0x8B,0xCB,0x39,0x08,0x00,0xEF,0x37,0x08,0x8B,0x9A,0xE1,0xFA,
+0xF8,0x08,0x94,0xE4,0x00,0x00,0x2F,0xEB,0x37,0x08,0x8B,0xFF,0x40,0xF7,0xFF,0xF8,
+0x18,0x08,0x94,0x47,0x39,0xD4,0xEF,0x37,0x08,0x8B,0x85,0x29,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x3D,0xF9,0x1C,0x21,0xC8,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,0x61,0x2C,
+0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,0xE1,0x1C,0x0E,0x01,0x18,0x0E,
+0x21,0x14,0x0E,0x41,0x10,0x0E,0x61,0x0C,0x0E,0x81,0x08,0x13,0x17,0x00,0xC2,0xE0,
+0x10,0x01,0xFB,0x17,0x00,0xB8,0xF3,0x17,0x00,0xB8,0x23,0x00,0x2C,0xF2,0xF7,0x00,
+0xB8,0xD2,0xE1,0x2F,0xAE,0xC1,0xA0,0x10,0x01,0xC1,0xE0,0x10,0x01,0xFD,0xAD,0x08,
+0xE2,0xFD,0xEF,0x00,0xD8,0x0A,0xED,0x01,0x56,0xF7,0x80,0xD2,0xE0,0x2D,0x9E,0xC2,
+0xE0,0x10,0x01,0xC1,0x60,0x10,0x01,0xF3,0x17,0x00,0xB8,0xFD,0x6B,0x09,0x68,0x23,
+0x08,0xB2,0xF2,0xF7,0x00,0xB8,0x22,0xE8,0x68,0x0B,0x2B,0x02,0x9B,0x02,0xCF,0x59,
+0x00,0x03,0x0A,0xEB,0x00,0x43,0x1A,0xC0,0xD6,0xF8,0x02,0x14,0xE4,0x00,0x00,0xA9,
+0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,0x6F,0x22,0xE3,0x86,0x8B,0x0B,0x9A,0xE0,0x9B,
+0x22,0x5F,0x57,0x00,0x27,0x44,0x3D,0x5E,0xE3,0x01,0x20,0x00,0x25,0x5E,0xE3,0x29,
+0x20,0x00,0x31,0x0B,0x58,0x00,0x43,0x5A,0xC8,0x0F,0x58,0x01,0x9E,0xE1,0x9F,0x02,
+0x5E,0xE3,0x49,0x23,0xFF,0x79,0xE7,0xFF,0xFF,0x67,0x42,0xF7,0xC5,0x53,0x20,0x15,
+0xCE,0xF7,0x00,0x0A,0x42,0xF7,0xC8,0x8F,0x17,0x0F,0x0B,0x01,0xE4,0x00,0x00,0x43,
+0x4E,0xF7,0x08,0x9B,0x1D,0x43,0x17,0xC0,0x8F,0x38,0x9B,0x07,0xCF,0x39,0x00,0x06,
+0x43,0x39,0xC0,0x9B,0x03,0x42,0xF7,0xC0,0x8E,0xF9,0x0E,0xEB,0x03,0x0B,0x2B,0x30,
+0x0B,0x0B,0x32,0x4E,0xF9,0x08,0xD7,0x17,0x00,0xC0,0xCF,0x39,0xFF,0xFE,0x9B,0x4B,
+0x8F,0x19,0xCF,0x18,0x00,0x03,0x43,0x18,0xD0,0x8E,0xF8,0x0E,0xEB,0x33,0x0A,0xEB,
+0x32,0x9B,0x12,0x43,0x17,0xC0,0x8E,0xF8,0x53,0x00,0xF0,0x0E,0xEB,0x33,0xC2,0xE0,
+0x10,0x01,0xEF,0x17,0x01,0x55,0x0E,0xEF,0x02,0x22,0xE4,0x1E,0xE7,0xFF,0xFC,0x8A,
+0xC1,0x80,0x10,0x01,0xFD,0x8C,0x0B,0x76,0x12,0xEC,0x04,0x10,0x6C,0x01,0x40,0x63,
+0xBB,0xE7,0xFF,0xC5,0xEC,0xC1,0xC0,0x10,0x01,0x13,0x2C,0x04,0xFD,0xCE,0x0A,0x18,
+0x10,0x6C,0x01,0x0A,0xEE,0x00,0x43,0x79,0x1B,0x9B,0x00,0xE4,0x00,0x00,0x35,0x4F,
+0x58,0x10,0x9F,0x01,0x8F,0x4E,0x5F,0x18,0x00,0x0F,0x5A,0x02,0x5F,0x9A,0x06,0x5F,
+0x57,0x1D,0x4A,0xFC,0xB8,0xD7,0x78,0xFF,0x54,0xC1,0x40,0x10,0x01,0xC2,0xE2,0x32,
+0x88,0xFD,0x4A,0x01,0x3C,0x20,0x00,0x35,0x4E,0xF7,0x0A,0x0E,0xEA,0x19,0xE4,0x00,
+0x00,0x2F,0x53,0x00,0xF0,0xC2,0xE0,0x77,0xE8,0x20,0x00,0x25,0x4E,0xF7,0x12,0x5F,
+0x17,0x06,0x0F,0x0A,0x19,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0x94,0x22,0xE1,0x54,
+0x40,0x63,0xCB,0xE7,0xFF,0xC5,0x08,0x12,0xEC,0x01,0x13,0x6C,0x04,0x0B,0x2E,0x00,
+0x43,0x7B,0xBB,0x9A,0xE0,0x8B,0x17,0xE4,0x00,0x00,0x35,0x4F,0x58,0x10,0x8F,0x4E,
+0x0F,0x5A,0x02,0xD7,0x59,0x00,0x48,0x5F,0x3A,0x06,0x8A,0xF8,0x9F,0x01,0x5F,0x18,
+0x00,0xD7,0x78,0xFF,0x54,0x26,0xE8,0x3D,0xD2,0xEB,0x00,0x62,0xD2,0xEC,0x00,0x42,
+0xD2,0xEA,0x00,0x66,0xFE,0xE0,0x02,0x58,0xE4,0x00,0x00,0x0F,0x52,0xE0,0xC8,0x0E,
+0xEA,0x19,0x88,0x6A,0xE7,0xFF,0x29,0x76,0xC1,0x80,0x10,0x01,0x89,0xCB,0xFD,0x8C,
+0x0B,0xEC,0x8A,0xEB,0x12,0x2C,0x00,0x53,0x20,0x14,0x0B,0x17,0x00,0xCF,0x18,0x00,
+0x23,0x43,0x18,0xC8,0x0F,0x17,0x01,0xC3,0x00,0x10,0x01,0x9E,0xE2,0xFF,0x18,0x09,
+0x9C,0xD6,0xF8,0xFF,0x4E,0x88,0x6A,0xE7,0xFF,0x29,0x10,0xC2,0x00,0x10,0x01,0x9A,
+0xE0,0xFE,0x10,0x08,0x84,0x22,0x20,0x4A,0x13,0x0C,0x00,0x27,0x04,0x33,0x12,0xF0,
+0x00,0x5E,0xE0,0x01,0x4A,0xE1,0x01,0x13,0x0C,0x00,0x23,0x09,0x2E,0x13,0x10,0x00,
+0x23,0x05,0x3A,0x13,0x2C,0x07,0x13,0x0C,0x37,0xD7,0x38,0x02,0x2A,0x0F,0x0C,0x0A,
+0x23,0x04,0xFA,0x0F,0x0C,0x3A,0x23,0x04,0xE2,0xC3,0x00,0x10,0x01,0xEB,0x38,0x0B,
+0xCE,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0xA5,0xFF,0x39,0xFC,0x01,0x4F,0x19,0xFA,0x47,
+0x38,0xCE,0x43,0x19,0xC5,0xC3,0x20,0x10,0x01,0xEB,0x59,0x0B,0x81,0xD7,0x1A,0x00,
+0xA4,0xE4,0x00,0x00,0x1B,0x23,0x04,0x26,0x13,0x10,0x00,0x23,0x00,0x18,0x22,0xE0,
+0x9C,0x53,0x00,0x23,0x0A,0xEE,0x00,0xCE,0xF7,0x00,0x14,0x42,0xF7,0xC0,0x0E,0xEE,
+0x01,0xC3,0x40,0x10,0x01,0x9D,0xC2,0xFF,0x5A,0x09,0x9C,0xD5,0xDA,0xFF,0x4E,0x88,
+0x6A,0xE7,0xFF,0x27,0xDC,0x12,0xEC,0x00,0x22,0xE0,0x5A,0xC2,0xE0,0x10,0x01,0xEC,
+0x17,0x08,0x98,0x13,0x2C,0x00,0xD3,0x20,0x0A,0xBE,0xE4,0x00,0x02,0xE1,0x98,0x61,
+0x98,0x81,0x88,0xAA,0xE7,0xFF,0x22,0xBC,0x0A,0xEA,0x10,0x0B,0x0A,0x06,0x0B,0x2A,
+0x12,0x5D,0xD7,0x04,0x42,0x38,0xBD,0x40,0xB8,0xCD,0xCA,0xE0,0x07,0xFF,0x43,0x37,
+0xCD,0x0B,0x4A,0x02,0x0B,0x6A,0x08,0x40,0x97,0xC5,0x5C,0xF9,0x04,0x11,0x0C,0x00,
+0x0B,0x2A,0x0A,0x40,0x78,0xD5,0x42,0x59,0xDD,0x42,0x77,0xCD,0x40,0xDA,0xC5,0xC2,
+0xE0,0x10,0x01,0x9E,0x4A,0x42,0x9B,0xCD,0xFE,0xF7,0x0C,0x04,0x9B,0xA0,0xCB,0xC0,
+0x07,0xFF,0xE4,0x00,0x00,0xC9,0x0B,0x97,0xFE,0xD7,0x1C,0x00,0x98,0x43,0x9C,0xD5,
+0x43,0x9C,0x8B,0x43,0x9C,0x18,0x8F,0x8E,0xE4,0x00,0x00,0x2D,0xD7,0x84,0x00,0xA8,
+0x43,0x9E,0xE5,0x43,0x9C,0xD5,0x43,0x9C,0x2B,0x43,0x9C,0x30,0x8F,0x87,0x0F,0x97,
+0xFF,0x0B,0x97,0x00,0xD7,0x3C,0x00,0x98,0x43,0x9C,0xDD,0x9F,0x8A,0x43,0x9C,0xCB,
+0x43,0x9C,0x90,0xE4,0x00,0x00,0x31,0xD7,0x93,0x00,0xB8,0x43,0x9E,0xE5,0x43,0x9C,
+0xDD,0x43,0x9C,0xCB,0x43,0x9C,0xA0,0xFF,0x9C,0x07,0xFF,0x0F,0x97,0x01,0x9F,0xA1,
+0x1E,0xF7,0x30,0x5F,0xBD,0x00,0xD7,0xA8,0xFD,0x06,0xCA,0xE0,0x07,0xFF,0x0B,0x0A,
+0x12,0x0B,0x4A,0x10,0x0B,0x6A,0x0C,0x43,0xB7,0xD5,0x42,0xF7,0xDD,0x43,0xBD,0xC5,
+0x0B,0x0A,0x0E,0x43,0xD7,0xC5,0xC2,0xE0,0x10,0x01,0x9B,0x00,0xF1,0x17,0x08,0x94,
+0x12,0xEC,0x00,0xE4,0x00,0x00,0x93,0xCF,0x38,0x00,0x30,0x8F,0x2C,0x0B,0x99,0x16,
+0x09,0x59,0x18,0x43,0x9C,0xD5,0x41,0x4A,0xDD,0xCF,0x9C,0x07,0xFF,0xCD,0x4A,0x07,
+0xFF,0x43,0x9C,0xE8,0x41,0x4A,0xF0,0x0F,0x99,0x17,0x0D,0x59,0x19,0x1F,0x9C,0x9C,
+0x5F,0x9C,0x04,0xC3,0x80,0xE6,0xEA,0x20,0x00,0x41,0x21,0x00,0x34,0x8B,0x37,0x22,
+0xE0,0x14,0x9B,0x21,0x5E,0xF9,0x00,0x9F,0x01,0x5F,0x18,0x00,0xD6,0xF8,0xFD,0xDD,
+0x1A,0xEC,0x00,0xE7,0xFF,0xFD,0x71,0xCF,0x57,0x00,0x30,0x9E,0xE1,0x8F,0x4C,0x0F,
+0x5A,0x0E,0xC3,0x40,0x95,0xEC,0x4B,0x18,0x0A,0xE4,0x00,0x00,0x11,0x9A,0xE0,0x8B,
+0x17,0x5F,0x57,0x00,0xD7,0x3A,0xFF,0x1D,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x98,
+0x0A,0xED,0x01,0x52,0xF7,0x08,0xE4,0x00,0x00,0x33,0x9B,0x07,0xC2,0xE0,0x10,0x01,
+0x18,0x10,0x00,0xEF,0x17,0x01,0xBD,0x0A,0xED,0x01,0x9B,0x17,0x46,0xF7,0xC4,0x0E,
+0xED,0x01,0x0E,0xEF,0x02,0xD2,0xE1,0x0D,0xAE,0xE7,0xFF,0xD9,0x4C,0xC2,0xE0,0x10,
+0x01,0xEE,0xF7,0x07,0xF6,0xD2,0xE1,0x0A,0xAA,0x0B,0x2B,0x35,0x0A,0xEB,0x39,0x0B,
+0x0B,0x36,0x5F,0x77,0x06,0x5F,0x59,0x06,0xD7,0x5B,0x00,0x30,0x8A,0xF9,0x5F,0x37,
+0x06,0xC1,0xF8,0x00,0x21,0x47,0x39,0xCF,0xC2,0x00,0x10,0x01,0x4F,0x39,0xFA,0x99,
+0x40,0x46,0xF7,0xCC,0xC1,0xC0,0x10,0x01,0x5E,0xF7,0x06,0xFD,0xEF,0xB4,0xBA,0x4E,
+0xF7,0x08,0xFE,0x10,0x01,0xBE,0x5E,0xF8,0x15,0xC1,0x80,0x10,0x01,0x4A,0xF7,0xC0,
+0x43,0x18,0xBD,0x0F,0x0B,0x37,0xE4,0x00,0x00,0xAD,0x1C,0x61,0x05,0x88,0x8F,0x98,
+0xA3,0xE7,0xFF,0x66,0x30,0x1E,0xE1,0x08,0x8E,0xEA,0x12,0xF7,0xFD,0x1F,0x17,0x1A,
+0x4E,0xF7,0x08,0x4F,0x18,0x08,0x8E,0xF0,0x8F,0x0B,0x0A,0xF7,0x01,0x0B,0x18,0x00,
+0xD7,0x17,0x00,0xA0,0x9A,0xE1,0xEB,0x0C,0x08,0x7F,0x4E,0xF7,0x54,0x46,0xF7,0xC5,
+0xE4,0x00,0x00,0x27,0x9A,0xE1,0xEB,0x0C,0x08,0x7F,0x4E,0xF7,0x54,0x46,0xF7,0xBF,
+0x46,0xF7,0xC4,0x9D,0x41,0xEE,0xEC,0x08,0x7F,0x5D,0x4A,0x00,0xF2,0xEE,0x08,0xC2,
+0xD6,0xEA,0xFD,0x55,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x7F,0x22,0xE0,0x34,0x0A,
+0xED,0x01,0x52,0xF7,0x10,0xE4,0x00,0x00,0x3B,0x0A,0xED,0x01,0x57,0x17,0x10,0x23,
+0x00,0x34,0x9B,0x21,0xC3,0x00,0x10,0x01,0xFB,0x38,0x08,0xAC,0x1F,0x40,0xEF,0x46,
+0xF7,0xD4,0x0E,0xED,0x01,0xC1,0x40,0x10,0x01,0xC3,0x00,0x10,0x01,0xEE,0xEA,0x08,
+0xB6,0xFF,0x18,0x08,0xD3,0x22,0xE0,0x56,0x18,0x18,0x00,0x0A,0xED,0x01,0x56,0xF7,
+0x10,0x22,0xE1,0x64,0x9A,0xE1,0xE4,0x00,0x00,0x41,0x22,0xE4,0x92,0x12,0xF8,0x00,
+0x9E,0xE1,0x5E,0xF7,0x00,0x1A,0xF8,0x00,0x0B,0x0D,0x01,0x57,0x18,0x10,0x23,0x00,
+0xE0,0x26,0xE4,0xE5,0x9A,0xE2,0xEE,0xEA,0x08,0xB4,0xE4,0x00,0x00,0x61,0x22,0xE8,
+0x7E,0x18,0x18,0x00,0x0A,0xED,0x01,0x56,0xF7,0x10,0x22,0xE0,0x34,0x98,0x62,0xE7,
+0xFF,0x97,0xAE,0xE4,0x00,0x00,0x2F,0x9A,0xE3,0xE7,0xFF,0xFF,0xBB,0x22,0xEC,0x36,
+0x98,0x60,0xE7,0xFF,0x97,0x88,0xEC,0x0A,0x08,0xB4,0x0B,0x0D,0x00,0xC2,0xE0,0x10,
+0x01,0x27,0x1C,0x56,0xF3,0x17,0x08,0x9C,0xD3,0x09,0x01,0xB5,0x9F,0x01,0xFB,0x17,
+0x08,0x9C,0xE4,0x00,0x00,0x59,0xF8,0x17,0x08,0x9C,0xE4,0x00,0x00,0x61,0x0E,0xEF,
+0x02,0x22,0xE4,0xA6,0x9B,0x05,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0xBC,0x9B,0x03,
+0xC2,0xE0,0x10,0x01,0x98,0x60,0xFB,0x17,0x08,0xAC,0xE7,0xFF,0x96,0xF8,0xE7,0xFF,
+0x91,0xF0,0xE4,0x00,0x00,0x11,0xE7,0xFF,0x92,0xA2,0xC2,0xE0,0x10,0x01,0xEB,0x17,
+0x08,0x81,0xC3,0x00,0x7D,0x0A,0x20,0x00,0x61,0xC3,0x00,0x10,0x01,0x9B,0x5E,0xF3,
+0x38,0x08,0x85,0xEC,0x17,0x08,0x81,0x47,0x39,0xD4,0xFB,0x38,0x08,0x85,0x0E,0x81,
+0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,
+0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,
+0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0x9C,0x38,0x0D,0x21,0x04,0xE7,0xFF,0xA1,0xE2,
+0x20,0x60,0xE6,0xE7,0xFF,0xA1,0xC0,0x20,0x64,0x7A,0x98,0x80,0xE7,0xFF,0xB3,0x46,
+0xE7,0xFF,0x54,0xFE,0x20,0x60,0x26,0x98,0x61,0xE4,0x00,0x00,0x35,0x98,0x61,0x98,
+0x80,0xE4,0x00,0x00,0x7B,0xE7,0xFF,0xA1,0x7C,0x98,0x80,0xE7,0xFF,0xB3,0x08,0xE7,
+0xFF,0xA1,0x68,0x98,0x82,0xE4,0x00,0x00,0x53,0xE7,0xFF,0xA1,0x68,0x20,0x65,0x0E,
+0xE7,0xFF,0xA1,0x46,0x20,0x64,0xA2,0x98,0x81,0xE7,0xFF,0xB2,0xCC,0xE7,0xFF,0x54,
+0x84,0x20,0x60,0x26,0x98,0x61,0xE4,0x00,0x00,0x49,0x98,0x61,0x88,0x83,0xE7,0xFF,
+0xAF,0x6A,0xE7,0xFF,0xC9,0x78,0x9A,0xE0,0xE4,0x00,0x00,0xED,0xE7,0xFF,0xA0,0xEE,
+0x98,0x81,0xE7,0xFF,0xB2,0x7A,0xE7,0xFF,0xA0,0xDA,0x98,0x83,0xE7,0xFF,0xFF,0xC5,
+0xE7,0xFF,0xA0,0xDA,0x20,0x68,0x36,0xE7,0xFF,0xA0,0xB8,0x98,0x82,0xE4,0x00,0x00,
+0x23,0xE7,0xFF,0xA0,0xB8,0x20,0x6C,0x5E,0xE7,0xFF,0xA0,0x96,0x98,0x83,0xE7,0xFF,
+0xB2,0x22,0xE7,0xFF,0xA0,0x82,0x98,0x87,0xE7,0xFF,0xFF,0x6D,0xE7,0xFF,0xA0,0x82,
+0xD0,0x67,0x00,0xC6,0xE7,0xFF,0xA0,0x5E,0x98,0x87,0xE7,0xFF,0xB1,0xEA,0xE7,0xFF,
+0xA0,0x4A,0x98,0x88,0xE7,0xFF,0xFF,0x35,0xE7,0xFF,0xA0,0x4A,0x9A,0xE0,0xD0,0x68,
+0x00,0x86,0xE7,0xFF,0xA0,0x22,0x98,0x88,0xE7,0xFF,0xB1,0xAE,0x9A,0xE1,0x88,0x77,
+0x0D,0x21,0x06,0x9C,0x28,0x85,0x29,0x1C,0x21,0xE8,0x0D,0x21,0x14,0x0D,0x41,0x10,
+0x0D,0x61,0x0C,0x0D,0x81,0x08,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xE7,0xFF,
+0x8C,0xCC,0x0C,0x61,0x00,0xE7,0xFF,0x8C,0xC6,0x0C,0x61,0x04,0x0E,0xE1,0x02,0xD2,
+0xE0,0x1D,0x42,0x0E,0xE1,0x02,0xC1,0x80,0x10,0x01,0xC1,0x40,0x10,0x01,0x57,0x17,
+0x10,0xFD,0x8C,0x00,0xDE,0xFD,0x4A,0x00,0xCC,0xD3,0x00,0x0A,0x92,0x50,0x60,0x10,
+0xE7,0xFF,0x8C,0xA8,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xBB,0x9F,0x01,0x5F,0x18,
+0x04,0xEF,0x17,0x00,0xBB,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x81,0x23,0x00,0x24,
+0x9F,0x01,0xEF,0x17,0x08,0x81,0xE7,0xFF,0x8C,0xA4,0x0A,0xEC,0x0B,0xC1,0x60,0x10,
+0x01,0x40,0x63,0xBD,0xFD,0x6B,0x06,0xFE,0x5E,0xE3,0x04,0x5E,0xE3,0xBB,0x20,0x02,
+0x0F,0x0A,0xEB,0x01,0x56,0xF7,0x20,0x22,0xE1,0xE8,0x98,0x61,0xE7,0xFF,0xB3,0x66,
+0x20,0x61,0xC6,0xE7,0xFF,0x9E,0xC0,0x20,0x64,0x56,0xC2,0xE0,0x10,0x01,0xF2,0xF7,
+0x00,0xC0,0x56,0xF7,0x01,0x22,0xE1,0x72,0xE4,0x00,0x00,0x1F,0xE7,0xFF,0x9E,0x8E,
+0x20,0x63,0xA8,0xE4,0x00,0x00,0x9D,0xE7,0xFF,0xC6,0x00,0x0A,0xEB,0x01,0xC6,0xF7,
+0xFF,0xDF,0x0E,0xEB,0x01,0xE7,0xFF,0x9E,0x5C,0x20,0x60,0x5E,0x98,0x81,0x98,0xA0,
+0xE7,0xFF,0x47,0x10,0x98,0x60,0x88,0x83,0xE7,0xFF,0xAC,0x96,0xE4,0x00,0x00,0x43,
+0x98,0x80,0x98,0x62,0xE7,0xFF,0xAC,0x7E,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x56,0x2C,
+0x98,0x60,0xE7,0xFF,0x4B,0xFA,0xE7,0xFF,0x8B,0x84,0x0C,0x6C,0x09,0xE7,0xFF,0xC6,
+0x62,0xE7,0xFF,0x8B,0x6E,0x0A,0xEC,0x0F,0x40,0x63,0xBD,0x5E,0xE3,0x04,0xC2,0xE0,
+0x3E,0x6E,0x20,0x01,0xB3,0x0A,0xEB,0x01,0x56,0xF7,0x80,0x22,0xE1,0x8C,0xE7,0xFF,
+0x9D,0xAA,0x20,0x6D,0x72,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x00,0xC0,0x56,0xF7,0x01,
+0x22,0xE1,0x3A,0xC1,0x80,0x10,0x01,0xEA,0xEC,0x0D,0x63,0x9E,0xE1,0xEE,0xEC,0x0D,
+0x63,0xE7,0xFF,0xC4,0xEC,0x0A,0xEB,0x01,0xC6,0xF7,0xFF,0x7F,0x0E,0xEB,0x01,0xEA,
+0xEC,0x0D,0x63,0xD2,0xEC,0x00,0xF9,0x98,0x63,0xE7,0xFF,0xB1,0xCC,0x20,0x60,0x56,
+0x98,0x61,0x98,0x80,0xE7,0xFF,0xAB,0x7E,0x98,0x60,0xE7,0xFF,0x4B,0x52,0xE4,0x00,
+0x00,0x19,0x98,0x63,0x98,0x80,0xE7,0xFF,0xAB,0x5A,0xE7,0xFF,0xC5,0x68,0x0A,0xEA,
+0x01,0x52,0xF7,0x10,0x0E,0xEA,0x01,0xE4,0x00,0x05,0x25,0xC6,0xF7,0x01,0x00,0xD2,
+0xE0,0x14,0x52,0xC2,0xE0,0x10,0x01,0x98,0x60,0xEC,0x17,0x0D,0x63,0xE7,0xFF,0x89,
+0xBE,0xFC,0x60,0x01,0x00,0xE7,0xFF,0x89,0xBE,0xFC,0x60,0x01,0x00,0xE7,0xFF,0x89,
+0xCE,0xE7,0xFF,0x9C,0x84,0xD0,0x67,0x12,0xC5,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBA,
+0xAC,0x4C,0x63,0x10,0x8C,0x77,0x0E,0xE3,0x02,0x86,0xE9,0xE7,0xFF,0x9C,0x64,0x20,
+0x60,0x46,0x98,0x80,0xE7,0xFF,0xAD,0xD6,0x98,0x60,0x98,0x87,0xE4,0x00,0x03,0xBF,
+0xE7,0xFF,0x9C,0x3A,0xD0,0x67,0x11,0x4E,0x98,0x60,0x98,0x87,0xE4,0x00,0x03,0x47,
+0xE7,0xFF,0xFA,0x2E,0xD0,0x60,0x10,0xCA,0xE7,0xFF,0xAF,0xC8,0x5D,0x63,0x04,0x98,
+0x61,0xE7,0xFF,0xB0,0x7C,0xD0,0x60,0x0C,0x76,0xC1,0x60,0x19,0x0A,0x20,0x06,0x19,
+0xE7,0xFF,0x4A,0x1A,0xE7,0xFF,0x49,0xEA,0x5C,0x63,0x00,0x24,0x64,0x2B,0xC1,0x60,
+0x32,0x0A,0x20,0x00,0x91,0x98,0x80,0x98,0x62,0xE7,0xFF,0xA9,0xF4,0xFC,0x60,0x01,
+0x5E,0xE7,0xFF,0x53,0xA2,0x98,0x60,0xE7,0xFF,0x49,0x70,0xE7,0xFF,0x88,0xFA,0x0C,
+0x6C,0x09,0xE4,0x00,0x02,0xFB,0xE7,0xFF,0x4E,0x6A,0x98,0x61,0xE4,0x00,0x01,0xDF,
+0xE7,0xFF,0xF9,0x6E,0xD0,0x60,0x0D,0xCA,0xE7,0xFF,0xAF,0x08,0xE7,0xFF,0x53,0xCE,
+0xE7,0xFF,0x54,0x5E,0xD0,0x61,0x09,0x7A,0xE7,0xFF,0x54,0x7E,0x20,0x65,0x06,0xE7,
+0xFF,0x49,0x14,0x98,0x62,0xE7,0xFF,0xAF,0x94,0x20,0x60,0x82,0xE7,0xFF,0x48,0xD2,
+0x5C,0x63,0x00,0x20,0x60,0x58,0x98,0x63,0x98,0x80,0xE7,0xFF,0xA9,0x32,0xE7,0xFF,
+0x88,0x54,0x0C,0x6C,0x0D,0xE4,0x00,0x02,0x55,0x98,0x62,0x98,0x80,0xE7,0xFF,0xA9,
+0x0C,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x52,0xBA,0xE4,0x00,0x02,0x2D,0xE7,0xFF,0x54,
+0x14,0x98,0x62,0xE4,0x00,0x01,0x11,0xE7,0xFF,0xF8,0xA0,0xD0,0x60,0x0A,0x92,0xE7,
+0xFF,0xAE,0x3A,0xE7,0xFF,0x54,0x7C,0xE7,0xFF,0x55,0x3E,0xC1,0x80,0x10,0x01,0x89,
+0x63,0xFD,0x8C,0x0D,0x60,0x5E,0xEB,0x04,0xC2,0xE0,0x25,0x6E,0x20,0x00,0x1D,0xFC,
+0x60,0x01,0x2C,0xE7,0xFF,0x56,0x74,0x20,0x60,0x54,0x0A,0xEC,0x01,0x9E,0xE1,0x5E,
+0xF7,0x04,0x0E,0xEC,0x01,0x26,0xE4,0x8B,0xE4,0x00,0x00,0x55,0x5E,0xEB,0x04,0x88,
+0x6B,0xC2,0xE0,0x4A,0xEE,0x20,0x00,0x1D,0xFC,0x60,0x02,0x58,0xE7,0xFF,0x56,0x88,
+0x20,0x63,0x6A,0xE4,0x00,0x00,0x5D,0xE7,0xFF,0x56,0x98,0x0C,0x0C,0x01,0xE4,0x00,
+0x00,0x37,0x5E,0xEB,0x04,0x88,0x6B,0xC2,0xE0,0x4A,0xEE,0x20,0x00,0x1D,0xFC,0x60,
+0x02,0x58,0xE7,0xFF,0x56,0x3C,0x20,0x63,0x86,0x98,0x63,0x98,0x80,0xE4,0x00,0x00,
+0xFD,0x0C,0x0C,0x01,0xE4,0x00,0x00,0x9F,0xE7,0xFF,0x99,0x6A,0x20,0x64,0x3E,0xE7,
+0xFF,0x99,0x5C,0x88,0x83,0x98,0x64,0xE4,0x00,0x00,0x71,0xE7,0xFF,0x99,0x44,0x20,
+0x63,0xC0,0xE7,0xFF,0x99,0x36,0xD0,0x60,0x05,0x3E,0x98,0x64,0x98,0x80,0xE7,0xFF,
+0xAA,0xA2,0x98,0x64,0xE4,0x00,0x00,0x8B,0x98,0x64,0x98,0x89,0xE4,0x00,0x00,0x27,
+0xE7,0xFF,0x98,0xFA,0x20,0x64,0x76,0xE7,0xFF,0x98,0xEC,0x88,0x83,0x98,0x67,0xE7,
+0xFF,0xAA,0x60,0x0A,0xEA,0x01,0xCA,0xF7,0x01,0x00,0x0E,0xEA,0x01,0xE4,0x00,0x00,
+0xE1,0xE7,0xFF,0x98,0xB8,0x20,0x63,0x88,0xE7,0xFF,0x98,0xAA,0x20,0x61,0x86,0x98,
+0x67,0x98,0x80,0xE7,0xFF,0xAA,0x18,0x98,0x67,0x98,0x81,0xE7,0xFF,0xA6,0xD0,0xE7,
+0xFF,0xC0,0xDE,0xE4,0x00,0x00,0x95,0x0E,0xE1,0x06,0x22,0xE1,0x3C,0x0E,0xE1,0x06,
+0x56,0xF7,0x20,0x22,0xE1,0x18,0x98,0x60,0xE7,0xFF,0x85,0x48,0x50,0x60,0x20,0xE7,
+0xFF,0x85,0x52,0xE7,0xFF,0x7A,0xA8,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD1,0xC7,
+0x18,0xFF,0xFE,0x50,0x60,0x20,0xEF,0x17,0x00,0xD1,0xE7,0xFF,0x85,0x2C,0xC2,0xE0,
+0x10,0x01,0xEB,0x17,0x00,0xCF,0x53,0x18,0x20,0xEF,0x17,0x00,0xCF,0xC2,0xE0,0x10,
+0x01,0xF0,0x77,0x01,0xAE,0xE7,0xFF,0x84,0xCE,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,
+0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x0C,0x63,0x02,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x0C,0x83,0x00,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x24,0x14,0x0B,0x17,0x01,0x53,0x18,0x01,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xDF,0x0F,
+0x17,0x01,0x85,0x29,0x9C,0x30,0x0D,0x21,0x0C,0x0D,0x41,0x08,0x0D,0x61,0x04,0x0D,
+0x81,0x00,0xC1,0x54,0x00,0x01,0xC9,0x8A,0x22,0x28,0x0A,0xEC,0x01,0xC6,0xF7,0xFF,
+0xFB,0xC9,0x6A,0x22,0x04,0x0E,0xEC,0x01,0xFF,0x00,0x80,0x00,0x0A,0xEB,0x01,0x46,
+0xF7,0xC5,0x5E,0xF7,0x04,0xC9,0x4A,0x24,0xA8,0x0E,0xEB,0x01,0x0A,0xEA,0x01,0xCA,
+0xF7,0x30,0x00,0x50,0x60,0x64,0x0E,0xEA,0x01,0xE4,0x00,0x24,0x8E,0x0A,0xEC,0x01,
+0x52,0xF7,0x04,0x50,0x60,0x1E,0x0E,0xEC,0x01,0xE4,0x00,0x24,0x6E,0x0A,0xEB,0x01,
+0xC6,0xF7,0x7F,0xFF,0x0E,0xEB,0x01,0x0A,0xEA,0x01,0xC6,0xF7,0xCF,0xFF,0x0E,0xEA,
+0x01,0x0D,0x81,0x02,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,
+0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x2C,0x08,0x77,0x01,0x4C,0x63,0x09,
+0x54,0x63,0x1F,0x9C,0x61,0x85,0x29,0x9C,0x7F,0x5C,0x63,0x00,0x5C,0x62,0xFB,0x20,
+0x00,0x81,0xC2,0xF4,0x00,0x01,0x4C,0x63,0x08,0xCA,0xF7,0x24,0x2C,0x54,0x63,0x3E,
+0x0B,0x17,0x01,0x1F,0x20,0xC1,0x47,0x18,0xCC,0x44,0x63,0xC5,0x0C,0x77,0x01,0x85,
+0x29,0x9B,0x19,0x20,0x60,0x62,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x37,
+0x01,0x47,0x19,0xC4,0x53,0x18,0x04,0xE4,0x00,0x00,0x87,0x20,0x64,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x17,0x01,0x53,0x18,0x06,0xE4,0x00,0x00,0x5D,
+0x20,0x68,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x17,0x01,0xC7,0x18,
+0xFF,0xF9,0xE4,0x00,0x00,0x31,0x20,0x6C,0x5E,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,
+0x10,0x0B,0x37,0x01,0x47,0x19,0xC4,0x53,0x18,0x02,0x0F,0x17,0x01,0x85,0x29,0x5C,
+0x63,0x00,0x9C,0x30,0x0D,0x21,0x0C,0x0D,0x41,0x08,0x0C,0xA1,0x04,0x95,0x50,0xC9,
+0x4A,0x20,0x80,0x8D,0x43,0x4D,0x4A,0x18,0x88,0x6A,0xE7,0xFF,0xFC,0xE0,0x0C,0xA1,
+0x06,0x1C,0x6A,0x04,0x0D,0x21,0x0E,0x0D,0x41,0x0A,0x88,0x85,0x1C,0x21,0x10,0xE7,
+0xFF,0xFC,0xB7,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x5D,0x44,0x00,0x4E,0xEA,0x08,0x0D,
+0x61,0x0C,0x0D,0x81,0x08,0x5D,0x65,0x00,0x5C,0x63,0x00,0x4D,0x83,0x18,0x8D,0x8B,
+0x8D,0x97,0x06,0xE0,0x81,0xCA,0xF7,0x04,0x00,0x0D,0x21,0x14,0x0D,0xA1,0x04,0xC5,
+0x8C,0x1F,0xFC,0x5D,0xA6,0x00,0x8D,0x97,0x88,0x6C,0xE7,0xFF,0xFC,0x00,0x55,0x4A,
+0x01,0x50,0x80,0xFF,0x4D,0x4A,0x08,0x8D,0x6A,0x4D,0x6B,0x18,0x4C,0x84,0x5C,0x4D,
+0x6D,0x5C,0x44,0x84,0x27,0x0D,0xA1,0x06,0x44,0x83,0x24,0x0D,0x41,0x12,0x88,0x6C,
+0x44,0x84,0x5D,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x21,0x16,0x1C,0x21,0x18,0xE7,
+0xFF,0xFB,0xD7,0x5C,0x84,0x04,0x20,0x60,0x28,0x20,0x64,0xC2,0xE4,0x00,0x00,0x33,
+0x4C,0x84,0x41,0xC2,0xF4,0x00,0x01,0x9C,0x9F,0xCA,0xF7,0x24,0x34,0xC4,0x84,0x01,
+0xFF,0xE4,0x00,0x00,0x2B,0x4C,0x84,0x41,0xC2,0xF4,0x00,0x01,0x9C,0x9F,0xCA,0xF7,
+0x24,0x38,0xC4,0x84,0x01,0xFF,0x0C,0x97,0x01,0x85,0x29,0x07,0x00,0xFF,0xCB,0x18,
+0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,0x00,0x7D,0xC2,0xF4,0x00,0x01,
+0x47,0x64,0x27,0xCB,0x37,0x24,0x3C,0x0B,0x59,0x01,0x47,0x5A,0xDC,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x40,0x47,0x04,0xC4,0x0B,0x37,0x01,0x4F,0x18,0x81,0x44,0x84,0x27,
+0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,
+0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,0xF4,0x00,0x01,0x47,0x9A,0xD7,
+0xCB,0x37,0x24,0x3C,0x0B,0x79,0x01,0x47,0x7B,0xE4,0x47,0x5A,0xDD,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x40,0x44,0x84,0xC4,0x0B,0x57,0x01,0x4C,0x84,0x81,0x47,0x24,0x27,
+0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0x07,0x00,0xFF,0xCB,0x18,
+0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,0x00,0x7D,0xC2,0xF4,0x00,0x01,
+0x47,0x64,0x27,0xCB,0x37,0x24,0x1C,0x0B,0x59,0x01,0x47,0x5A,0xDC,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x20,0x47,0x04,0xC4,0x0B,0x37,0x01,0x4F,0x18,0x81,0x44,0x84,0x27,
+0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,
+0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,0xF4,0x00,0x01,0x47,0x9A,0xD7,
+0xCB,0x37,0x24,0x1C,0x0B,0x79,0x01,0x47,0x7B,0xE4,0x47,0x5A,0xDD,0x0F,0x59,0x01,
+0xCA,0xF7,0x24,0x20,0x44,0x84,0xC4,0x0B,0x57,0x01,0x4C,0x84,0x81,0x47,0x24,0x27,
+0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,
+0x17,0x24,0x80,0x0B,0x38,0x01,0x5F,0x23,0x04,0x0F,0x38,0x01,0x07,0x20,0xFF,0xCB,
+0x39,0xFF,0xFF,0xCA,0xF7,0x24,0x84,0x44,0x63,0xCC,0x0B,0x17,0x01,0x4C,0x63,0x81,
+0xFF,0x20,0xFF,0x00,0x47,0x18,0xCC,0x44,0x63,0xC5,0x0C,0x77,0x01,0x85,0x29,0x07,
+0x00,0xFF,0xCB,0x18,0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,0x00,0x7D,
+0xC2,0xF4,0x00,0x01,0x47,0x64,0x27,0xCB,0x37,0x24,0x24,0x0B,0x59,0x01,0x47,0x5A,
+0xDC,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x28,0x47,0x04,0xC4,0x0B,0x37,0x01,0x4F,0x18,
+0x81,0x44,0x84,0x27,0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,0x19,0xC4,
+0x47,0x04,0xC5,0x0F,0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,0xF4,0x00,
+0x01,0x47,0x9A,0xD7,0xCB,0x37,0x24,0x24,0x0B,0x79,0x01,0x47,0x7B,0xE4,0x47,0x5A,
+0xDD,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x28,0x44,0x84,0xC4,0x0B,0x57,0x01,0x4C,0x84,
+0x81,0x47,0x24,0x27,0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0xC3,
+0x14,0x00,0x01,0xCA,0xF8,0x22,0x08,0x20,0x64,0x3A,0x0B,0x37,0x01,0xCB,0x39,0x10,
+0x00,0xE4,0x00,0x00,0x1D,0x20,0x60,0x36,0x0B,0x37,0x01,0xC7,0x39,0xEF,0xFF,0x0F,
+0x37,0x01,0xCA,0xF8,0x22,0x08,0x0B,0x17,0x01,0xCB,0x18,0x20,0x00,0x0F,0x17,0x01,
+0x85,0x29,0x5C,0x84,0x00,0x1F,0x00,0x80,0x20,0x60,0x28,0x20,0x64,0xAA,0xE4,0x00,
+0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x54,0xE4,0x00,0x00,0x19,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0x64,0x0B,0x37,0x01,0x54,0x84,0x7F,0x47,0x19,0xC4,0x47,
+0x04,0xC5,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0x20,0x60,0x28,0x20,0x64,0xAA,
+0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x50,0xE4,0x00,0x00,0x19,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x61,0x13,0x17,0x00,0x54,0x84,0x1F,0x57,0x18,
+0xE0,0x44,0x84,0xC5,0x18,0x97,0x00,0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0D,0x61,
+0x04,0x0D,0x21,0x0C,0x5D,0x44,0x00,0x89,0x63,0x1C,0x8A,0xF1,0x4C,0x84,0x08,0x5C,
+0x83,0xF3,0x20,0x00,0x19,0x50,0x80,0x1F,0x88,0x6B,0xE7,0xFF,0xFF,0x5A,0x1F,0x00,
+0x80,0x21,0x60,0x28,0x21,0x64,0xAA,0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x24,0x4C,0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x60,0x0B,
+0x37,0x01,0x55,0x4A,0x7F,0x47,0x19,0xC4,0x47,0x0A,0xC5,0x0F,0x17,0x01,0x0D,0x61,
+0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0x20,0x64,0x8E,0xC2,
+0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,0x01,0x53,0x39,
+0xF0,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xF0,0xE4,0x00,0x00,0x47,0x20,
+0x60,0x8A,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,
+0x01,0xC7,0x39,0xFF,0x0F,0x0F,0x38,0x01,0x0B,0x17,0x01,0x53,0x18,0x0F,0x0F,0x17,
+0x01,0x85,0x29,0x20,0x64,0x8E,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,
+0x22,0x60,0x0B,0x38,0x01,0x53,0x39,0x08,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,
+0xFE,0xFF,0xE4,0x00,0x00,0x49,0x20,0x60,0x8E,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,
+0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,0x01,0xC7,0x39,0xFF,0xF7,0x0F,0x38,0x01,0x0B,
+0x17,0x01,0xCB,0x18,0x01,0x00,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x22,0x60,0x0B,0x17,0x01,0xCB,0x18,0x02,0x00,0xE4,0x00,0x00,
+0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x60,0x0B,0x17,0x01,0xC7,
+0x18,0xFD,0xFF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x54,0x63,0x7F,0xCA,
+0xF7,0x24,0xA0,0x1F,0x20,0x80,0x0B,0x17,0x01,0x47,0x18,0xCC,0x47,0x03,0xC5,0x0F,
+0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x4C,0x63,0x40,0xCA,0xF7,0x24,0xA0,0xC4,
+0x63,0x7F,0x00,0x0B,0x17,0x01,0xFF,0x20,0x80,0xFF,0x47,0x18,0xCC,0x47,0x03,0xC5,
+0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA1,0x10,0x77,0x00,
+0x54,0x63,0x7F,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA0,
+0x0B,0x17,0x01,0xC7,0x18,0xFF,0x7F,0xE4,0x00,0x00,0x2B,0x20,0x60,0x52,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0x53,0x18,0x80,0x0F,0x17,0x01,0x85,
+0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0xC7,
+0x18,0x7F,0xFF,0xE4,0x00,0x00,0x39,0x20,0x60,0x6E,0xC2,0xF4,0x00,0x01,0xFF,0x20,
+0x80,0x00,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0x0F,
+0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x5C,0x63,0x00,0xCA,0xF7,0x22,0x0C,0xFF,
+0x20,0xFF,0x00,0x0B,0x17,0x01,0x47,0x18,0xCC,0x47,0x03,0xC5,0x0F,0x17,0x01,0x85,
+0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xFF,0x40,0xFF,0x00,0xCA,0xF7,0x22,0xF0,
+0x47,0x03,0xD4,0x0B,0x37,0x01,0x5F,0x39,0x00,0x47,0x18,0xCD,0x0F,0x17,0x01,0x85,
+0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x38,0x0B,0x17,0x01,0x0C,
+0x77,0x01,0x85,0x29,0x20,0x64,0x6A,0xC2,0xF4,0x00,0x01,0x9B,0x3C,0xCA,0xF7,0x25,
+0xC0,0x0B,0x17,0x01,0x47,0x18,0xCC,0x53,0x18,0x01,0xE4,0x00,0x00,0x3F,0x20,0x60,
+0x7A,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x38,0xCA,0xF7,0x25,0xC0,0x0B,0x38,0x01,
+0x0C,0x18,0x01,0x0B,0x17,0x01,0x53,0x18,0x03,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,
+0x00,0x20,0x64,0x62,0x4C,0x63,0x24,0xC2,0xF4,0x00,0x01,0x5C,0x63,0x04,0xCA,0xF7,
+0x22,0xCC,0x0C,0x77,0x01,0xE4,0x00,0x00,0x25,0x20,0x60,0x3A,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x22,0xCC,0x0C,0x17,0x01,0x85,0x29,0x20,0x60,0x5A,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFE,0xE4,0x00,0x00,0x2B,0x20,
+0x64,0x52,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0x53,0x18,0x01,
+0x0F,0x17,0x01,0x85,0x29,0x20,0x60,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xE8,
+0x0B,0x17,0x01,0xC7,0x18,0xF0,0xFF,0xE4,0x00,0x00,0x2D,0x20,0x64,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0xCB,0x18,0x0F,0x00,0x0F,0x17,0x01,
+0x85,0x29,0x5C,0x63,0x00,0xC4,0x84,0x03,0xFF,0x20,0x64,0x70,0x20,0x60,0x34,0x20,
+0x68,0x88,0x20,0x6C,0xDA,0xE4,0x00,0x00,0x51,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,
+0x68,0xE4,0x00,0x00,0x49,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x6C,0xE4,0x00,0x00,
+0x31,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x70,0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x24,0x74,0x0C,0x97,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,0x01,0x5C,0x63,0x00,0x07,0x00,
+0x20,0xCB,0x18,0x41,0x00,0x44,0x63,0xC5,0x4C,0x63,0x10,0x0C,0x83,0x00,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0xFC,0x21,0xFE,0x88,0x50,0xA0,
+0x96,0xED,0x21,0x01,0x74,0xED,0x41,0x01,0x70,0xED,0x61,0x01,0x6C,0x88,0x61,0xC1,
+0x78,0x00,0x21,0xFD,0x6B,0xB4,0xBE,0x88,0x8B,0xE7,0xFF,0x48,0x60,0xFD,0x41,0x00,
+0x96,0xFC,0x8B,0x00,0x96,0x88,0x6A,0x50,0xA0,0xD2,0xE7,0xFF,0x48,0x3E,0x8A,0xE1,
+0xC3,0x54,0x00,0x01,0xFF,0x60,0xFF,0x00,0x0B,0x37,0x01,0x47,0x19,0xDC,0x5F,0x39,
+0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,0x03,0x47,0xB9,0xCF,0x8F,
+0x1A,0x0B,0x98,0x01,0x47,0x9C,0xEC,0x0B,0xB7,0x05,0x47,0x39,0xEC,0x47,0x3C,0xCD,
+0x0F,0x38,0x01,0x9E,0xE6,0xD5,0x57,0xFE,0x9E,0xFE,0xE1,0x00,0x96,0xFF,0x81,0x01,
+0x68,0x0B,0x37,0x01,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,
+0x8F,0x19,0x0B,0x37,0x03,0x47,0xD9,0xCF,0x8F,0x1A,0x0B,0xB8,0x01,0x47,0xBD,0xF4,
+0x0B,0xD7,0x05,0x47,0x39,0xF4,0x47,0x3D,0xCD,0x0F,0x38,0x01,0x9E,0xE6,0xD7,0x97,
+0xFE,0x9E,0xED,0x61,0x01,0x6E,0xED,0x41,0x01,0x72,0xED,0x21,0x01,0x76,0xFC,0x21,
+0x01,0x78,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x00,0x0C,0x18,0x01,0xCA,
+0xF7,0x24,0x14,0xFF,0x20,0xFF,0x07,0x0B,0x17,0x01,0x47,0x18,0xCC,0x53,0x18,0x30,
+0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0x9B,0x10,0x20,0x60,0x28,0x20,0x64,0xAA,
+0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x10,0xE4,0x00,0x00,0x19,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x14,0x0B,0x37,0x01,0x54,0x84,0x0F,0x47,0x19,
+0xC4,0x47,0x04,0xC5,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x74,
+0xD8,0x18,0x18,0x00,0xCB,0x37,0x74,0x10,0x5C,0x63,0x00,0x18,0x79,0x00,0xCB,0x37,
+0x76,0x30,0x18,0x19,0x00,0x53,0x40,0x24,0xCB,0x37,0x74,0x00,0x1B,0x59,0x00,0xCB,
+0x77,0x74,0x28,0x53,0x20,0x60,0x1B,0x3B,0x00,0xCB,0x77,0x74,0x30,0x1B,0x3B,0x00,
+0xCB,0x77,0x74,0x38,0x53,0x20,0x1C,0x1B,0x3B,0x00,0xCB,0x77,0x74,0x40,0x1B,0x3B,
+0x00,0xCB,0x37,0x74,0xA8,0x13,0x39,0x00,0xCB,0x37,0x74,0x78,0x9B,0x69,0x1B,0x79,
+0x00,0xCB,0x37,0x74,0x70,0x18,0x19,0x00,0xCB,0x37,0x74,0x60,0x13,0x79,0x00,0x1B,
+0x59,0x00,0xCA,0xF7,0x74,0x61,0x13,0x37,0x00,0x18,0x17,0x00,0x98,0x61,0x12,0xF8,
+0x00,0x52,0xF7,0x01,0x1A,0xF8,0x00,0x85,0x29,0x5C,0x63,0x00,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x74,0x20,0x18,0x77,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFE,0xFF,0x0F,0x17,
+0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x10,0x77,0x00,0x4C,0x63,
+0x21,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xE0,0x10,0x77,
+0x00,0x4C,0x63,0x09,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,
+0x68,0x10,0x77,0x00,0x4C,0x63,0x29,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x74,0xE0,0x10,0x77,0x00,0x4C,0x63,0x19,0x54,0x63,0x01,0x85,0x29,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x10,0x77,0x00,0x4C,0x63,0x11,0x54,0x63,0x01,
+0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x08,0x77,0x01,0x4C,0x63,0x49,
+0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x08,0x77,0x01,
+0x4C,0x63,0x51,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x61,
+0x13,0x17,0x00,0x57,0x18,0xFD,0x1B,0x17,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x74,0x61,0x13,0x17,0x00,0x53,0x18,0x02,0x1B,0x17,0x00,0x85,0x29,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x74,0xC0,0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x74,0xA8,0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xC8,
+0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xA0,0x12,0xF7,0x00,
+0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x20,0x10,0x77,0x00,0x85,0x29,0x5C,
+0x63,0x00,0xC3,0x14,0x00,0x01,0x4E,0xE3,0x10,0xCB,0x18,0x2A,0x00,0x8E,0xF8,0x08,
+0x77,0x00,0x9A,0xE8,0xCC,0x63,0x00,0x03,0x40,0x63,0xB8,0x85,0x29,0x5C,0x84,0x04,
+0x5E,0xE4,0x00,0xD2,0xEF,0x05,0xAD,0x4E,0xF7,0x10,0xC3,0x18,0x00,0x21,0xFF,0x18,
+0xBC,0x30,0x8E,0xF8,0xC3,0x34,0x00,0x01,0x0F,0x17,0x02,0xCA,0xF9,0x26,0x18,0x0B,
+0x57,0x01,0xC7,0x5A,0xFF,0xF3,0x1F,0x60,0xCF,0x0F,0x57,0x01,0x0B,0x57,0x01,0x47,
+0x5A,0xDC,0x53,0x5A,0x10,0x4C,0x84,0x49,0x0F,0x57,0x01,0x9A,0xE1,0xCB,0x59,0x26,
+0x20,0xE4,0x00,0x00,0x31,0x4F,0x37,0x08,0x9E,0xE1,0x8F,0x38,0x5E,0xF7,0x04,0x0B,
+0x39,0x01,0xC7,0x39,0x3F,0xFF,0x0F,0x3A,0x01,0xC3,0x34,0x00,0x01,0xD6,0xE4,0xFF,
+0x40,0x20,0x60,0x96,0xCB,0x39,0x26,0x38,0x0B,0x18,0x01,0x0A,0xF9,0x01,0x4F,0x18,
+0x60,0xFF,0x40,0x8F,0xFF,0xC7,0x18,0x70,0x00,0x46,0xF7,0xD4,0x46,0xF8,0xBD,0x0E,
+0xF9,0x01,0xE4,0x00,0x00,0x4B,0x20,0x64,0x86,0xCA,0xF9,0x26,0x38,0xFF,0x60,0xF8,
+0xFF,0x0B,0x38,0x01,0x0B,0x57,0x01,0x4F,0x39,0x40,0x47,0x1A,0xDC,0xC7,0x39,0x07,
+0x00,0x47,0x19,0xC5,0x0F,0x17,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x18,0x0B,
+0x17,0x01,0x53,0x18,0x30,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0xD0,0x8F,0x03,
+0x9D,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBB,0x58,0x4C,0x84,0x10,0xC3,0x14,0x00,0x01,
+0x8C,0x97,0xCB,0x38,0x26,0x34,0x0E,0xE4,0x02,0x0B,0x59,0x01,0x0B,0x77,0x03,0xFF,
+0x80,0xC0,0x00,0xC7,0x7B,0x3F,0xFF,0x47,0x5A,0xE4,0x47,0x5B,0xD5,0x0F,0x59,0x01,
+0x20,0x60,0x7E,0x0B,0x37,0x01,0xCB,0x18,0x26,0x38,0x4F,0x39,0x60,0x0B,0x58,0x01,
+0xFF,0x60,0x8F,0xFF,0xC7,0x39,0x70,0x00,0x46,0xFA,0xDC,0xE4,0x00,0x00,0x3F,0x20,
+0x64,0x86,0x0B,0x37,0x01,0xCB,0x18,0x26,0x38,0x4F,0x39,0x40,0x0B,0x58,0x01,0xFF,
+0x80,0xF8,0xFF,0xC7,0x39,0x07,0x00,0x46,0xFA,0xE4,0x46,0xF9,0xBD,0x0E,0xF8,0x01,
+0x85,0x29,0x5C,0x84,0x00,0xD0,0x8C,0x04,0x1D,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBB,
+0x58,0x4C,0x84,0x10,0xFF,0x40,0xC0,0x00,0x8C,0x97,0x0E,0xE4,0x02,0x20,0x60,0xD6,
+0xC3,0x14,0x00,0x01,0x0B,0x77,0x03,0xCB,0x38,0x26,0xC4,0xC7,0x7B,0x3F,0xFF,0x0B,
+0x99,0x01,0x47,0x5C,0xD4,0x47,0x5B,0xD5,0xCB,0x18,0x26,0x38,0x0F,0x59,0x01,0x1F,
+0x60,0x8F,0x0B,0x37,0x01,0x0B,0x58,0x01,0x4F,0x39,0x20,0x57,0x39,0x70,0xE4,0x00,
+0x00,0x63,0x20,0x64,0xDA,0xC3,0x14,0x00,0x01,0x0B,0x77,0x03,0xCB,0x38,0x26,0xC8,
+0xC7,0x7B,0x3F,0xFF,0x0B,0x99,0x01,0x47,0x5C,0xD4,0x47,0x5B,0xD5,0xCB,0x18,0x26,
+0x38,0x0F,0x59,0x01,0x9B,0x78,0x0B,0x37,0x01,0x0B,0x58,0x01,0x57,0x39,0x07,0x46,
+0xFA,0xDC,0x46,0xF9,0xBD,0x0E,0xF8,0x01,0x85,0x29,0x5C,0x84,0x04,0x20,0x60,0x28,
+0x20,0x64,0xEE,0xE4,0x00,0x00,0x39,0xC2,0xF4,0x00,0x01,0x4C,0x84,0x41,0xCA,0xF7,
+0x26,0xC0,0x54,0x84,0x3F,0x0B,0x17,0x01,0x1F,0x20,0xC0,0xE4,0x00,0x00,0x2F,0xC2,
+0xF4,0x00,0x01,0xC4,0x84,0x3F,0x00,0xCA,0xF7,0x26,0xC0,0xFF,0x20,0xC0,0xFF,0x0B,
+0x17,0x01,0x47,0x18,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,0x29,0x20,0x61,0x52,
+0x20,0x84,0x84,0x20,0x80,0x2C,0xD0,0x82,0x04,0xD6,0xE4,0x00,0x00,0x5D,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,0x18,0x3F,0xFF,0xE4,0x00,0x01,
+0x01,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,
+0xC7,0x18,0x3F,0xFF,0xE4,0x00,0x00,0x27,0xC2,0xF4,0x00,0x01,0xFF,0x20,0xC0,0x00,
+0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0xE4,0x00,0x00,
+0xA1,0x20,0x65,0x3E,0x20,0x84,0x80,0x20,0x80,0x28,0x20,0x89,0x1A,0xE4,0x00,0x00,
+0x63,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,0x18,0xCF,0xFF,
+0xE4,0x00,0x00,0x5B,0xC2,0xF4,0x00,0x01,0xFF,0x20,0xCF,0xFF,0xCA,0xF7,0x26,0x30,
+0x0B,0x17,0x01,0x47,0x18,0xCC,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,0x27,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xCB,0x18,0x30,0x00,0x0F,0x17,0x01,
+0x85,0x29,0x20,0x64,0x72,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x26,
+0x24,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0xE4,0x00,0x00,0x2D,0x20,0x60,
+0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,0x18,0x7F,0xFF,
+0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,
+0x0B,0x17,0x01,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,0x18,0xDF,0xFF,0x0F,0x17,0x01,
+0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,
+0xCB,0x18,0x40,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,0x18,0xBF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,
+0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xCB,0x18,0x10,
+0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,
+0x0B,0x17,0x01,0xC7,0x18,0xEF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x9C,0x38,0xC2,0xF4,
+0x00,0x01,0x0D,0x21,0x04,0xCA,0xF7,0x26,0x18,0x0B,0x17,0x01,0xCB,0x18,0x40,0x00,
+0x98,0x60,0x0F,0x17,0x01,0xE7,0xFF,0xFF,0x1A,0x0D,0x21,0x06,0x98,0x60,0x9C,0x28,
+0xE7,0xFF,0xFF,0x5F,0x20,0x64,0x72,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,
+0xF7,0x26,0x00,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,0xE4,0x00,0x00,0x2D,
+0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,
+0x7F,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xDF,0xFF,0x0F,
+0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,
+0x17,0x01,0xCB,0x18,0x40,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xBF,0xFF,0x0F,0x17,0x01,0x85,
+0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,
+0x18,0x10,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xEF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,
+0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x08,0x00,
+0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,
+0x17,0x01,0xC7,0x18,0xF7,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x04,0x00,0xE4,0x00,0x00,
+0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,
+0x18,0xFB,0xFF,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x00,0xC2,0xF4,0x00,0x01,0x4F,
+0x23,0x40,0xCA,0xF7,0x26,0x14,0x4C,0x63,0x60,0x0B,0x17,0x01,0x44,0x79,0x1D,0x5F,
+0x18,0x00,0x44,0x63,0xC5,0x5C,0x63,0x04,0x0C,0x77,0x01,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0xFF,0x20,0xF0,0x00,0xCB,0x17,0x26,0x0C,0xC4,0x63,0x0F,0xFF,0x0B,0x58,0x01,
+0x5C,0x63,0x06,0x47,0x5A,0xCC,0x47,0x43,0xD5,0x0F,0x58,0x01,0xCA,0xF7,0x26,0x10,
+0x0B,0x17,0x01,0x47,0x38,0xCC,0x44,0x63,0xCD,0x0C,0x77,0x01,0x85,0x29,0x9C,0x38,
+0xFF,0x00,0xE0,0x00,0x0D,0x21,0x04,0x0D,0x41,0x00,0xC1,0x54,0x00,0x01,0xCA,0xEA,
+0x26,0x04,0x0B,0x37,0x01,0x47,0x39,0xC4,0xCB,0x39,0x0F,0xA0,0x0F,0x37,0x01,0xCA,
+0xEA,0x26,0x08,0x0B,0x37,0x01,0x47,0x19,0xC4,0xCB,0x18,0x10,0x60,0x98,0x60,0x0F,
+0x17,0x01,0xFC,0x80,0x08,0x03,0xE7,0xFF,0xF9,0x28,0xCA,0xEA,0x26,0xC0,0xFF,0x20,
+0xC0,0xFF,0x0B,0x17,0x01,0x47,0x18,0xCC,0xCB,0x18,0x08,0x00,0x98,0x60,0x0F,0x17,
+0x01,0xFC,0x80,0x08,0x03,0xE7,0xFF,0xF7,0xDA,0x98,0x61,0xFC,0x80,0x08,0x03,0xE7,
+0xFF,0xF7,0xC6,0xCA,0xEA,0x26,0x00,0x0B,0x17,0x01,0x53,0x18,0x0F,0x0F,0x17,0x01,
+0x0B,0x17,0x01,0xC7,0x18,0xFF,0x7F,0x0F,0x17,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFF,
+0xBF,0x98,0x68,0x0F,0x17,0x01,0xE7,0xFF,0xFE,0x44,0x0D,0x21,0x06,0x0D,0x41,0x02,
+0xFC,0x60,0x01,0x2C,0x9C,0x28,0xE7,0xFF,0xFE,0x6F,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x78,0x00,0x0B,0x17,0x01,0x53,0x18,0x02,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x78,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFD,0x0F,0x17,0x01,0x85,
+0x29,0x9C,0x7F,0x5C,0x63,0x00,0xD0,0x64,0x05,0x15,0xC2,0xF8,0x00,0x21,0xFE,0xF7,
+0xBD,0xF0,0x4C,0x63,0x10,0xFF,0x00,0xFC,0xFF,0x8C,0x77,0xC2,0xF4,0x00,0x01,0x0F,
+0x23,0x02,0x87,0x29,0xCB,0x17,0x3D,0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x38,0x01,0x53,
+0x39,0x01,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFC,0xFF,0xE4,0x00,0x00,0xD3,
+0xCB,0x37,0x3D,0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x59,0x01,0x53,0x5A,0x01,0x0F,0x59,
+0x01,0x0B,0x37,0x01,0x47,0x19,0xC4,0xCB,0x18,0x01,0x00,0xE4,0x00,0x00,0x95,0xCB,
+0x37,0x3D,0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x59,0x01,0x53,0x5A,0x01,0x0F,0x59,0x01,
+0x0B,0x37,0x01,0x47,0x19,0xC4,0xCB,0x18,0x02,0x00,0xE4,0x00,0x00,0x57,0xCA,0xF7,
+0x3D,0x3C,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFE,0xE4,0x00,0x00,0x39,0xCB,0x17,0x3C,
+0x10,0xCA,0xF7,0x3C,0x14,0x0B,0x38,0x01,0x53,0x39,0x01,0x0F,0x38,0x01,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xFD,0x0F,0x17,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0x00,
+0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFB,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x00,0x5C,
+0x84,0x00,0x9A,0xE0,0x24,0x64,0x43,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBE,0x04,0x8C,
+0x77,0x12,0xE3,0x00,0xC3,0x14,0x00,0x01,0xCB,0x18,0x78,0x01,0x4E,0xF7,0x10,0x5C,
+0x80,0x29,0x46,0xF7,0xC5,0x4B,0x00,0x1A,0x1B,0x17,0x00,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0x5C,0x84,0x04,0xCB,0x17,0x79,0x04,0xCC,0x84,0x17,0x70,0x4F,0x24,0x81,0x5C,
+0x84,0x04,0x0F,0x38,0x01,0xCA,0xF7,0x79,0x00,0x0C,0x97,0x01,0x98,0x81,0xE7,0xFF,
+0xFF,0x5D,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xCC,0x0B,0x17,0x01,0x53,0x18,0x02,
+0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x7A,0x30,0xCB,0x37,0x7A,
+0x34,0xCB,0x57,0x7A,0x10,0xCA,0xF7,0x7A,0x14,0x0B,0x18,0x01,0x0B,0x39,0x01,0x0B,
+0x5A,0x01,0x08,0x77,0x01,0x4E,0xF9,0x80,0x4C,0x63,0x80,0x8E,0xF8,0x8C,0x7A,0x44,
+0x63,0x1F,0x44,0x63,0xBC,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x7A,0x70,0xCB,
+0x37,0x7A,0x74,0xCB,0x57,0x7A,0x50,0xCA,0xF7,0x7A,0x54,0x0B,0x18,0x01,0x0B,0x39,
+0x01,0x0B,0x5A,0x01,0x08,0x77,0x01,0x4E,0xF9,0x80,0x4C,0x63,0x80,0x8E,0xF8,0x8C,
+0x7A,0x44,0x63,0x1F,0x44,0x63,0xBC,0x85,0x29,0x5C,0x63,0x06,0xC2,0xF4,0x00,0x01,
+0x47,0x23,0x1F,0xCA,0xF7,0x7A,0x10,0x0B,0x17,0x01,0x47,0x19,0xC4,0x44,0x63,0xC5,
+0x5C,0x63,0x04,0x0C,0x77,0x01,0x85,0x29,0x5C,0x63,0x06,0xC2,0xF4,0x00,0x01,0x47,
+0x23,0x1F,0xCA,0xF7,0x7A,0x50,0x0B,0x17,0x01,0x47,0x19,0xC4,0x44,0x63,0xC5,0x5C,
+0x63,0x04,0x0C,0x77,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x44,0x63,0x1F,0xCA,0xF7,
+0x7A,0x10,0x0B,0x17,0x01,0x47,0x18,0x1C,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0x44,0x63,0x1F,0xCA,0xF7,0x7A,0x50,0x0B,0x17,0x01,0x47,0x18,0x1C,0x0F,0x17,
+0x01,0x85,0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x7A,0x30,0x0C,0x77,
+0x01,0x85,0x29,0x9B,0x01,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x7A,0x70,0x0F,0x17,0x01,
+0x85,0x29,0xC2,0xF4,0x00,0x01,0xFF,0x20,0xAA,0x55,0xCB,0x17,0x78,0xC0,0x0F,0x38,
+0x01,0x5F,0x03,0x04,0x27,0x08,0x17,0x98,0x63,0xCA,0xF7,0x78,0xC4,0x5C,0x63,0x04,
+0xCB,0x00,0x03,0xE8,0x43,0x04,0xC1,0x40,0x63,0xC3,0x4C,0x63,0x81,0x44,0x63,0x1F,
+0x0C,0x77,0x01,0x06,0xE0,0x5B,0xCA,0xF7,0x8D,0x80,0x5C,0x97,0x0D,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x3C,0x44,0x0B,0x17,0x01,0x20,0x00,0x2D,0xC7,0x18,0xFF,0xBF,0xE4,
+0x00,0x00,0x15,0x5F,0x18,0x04,0x53,0x18,0x40,0x0F,0x17,0x01,0x85,0x29,0xFF,0x00,
+0xAA,0x55,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xC0,0x0F,0x17,0x01,0x85,0x29,0xFF,
+0x00,0x55,0xAA,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xC0,0x0F,0x17,0x01,0x85,0x29,
+0xCA,0xE0,0x03,0x20,0xC3,0x14,0x00,0x01,0x5C,0x63,0x04,0xC0,0x60,0x63,0xEA,0x48,
+0x63,0xB8,0xCA,0xF8,0x79,0x10,0x0B,0x37,0x01,0x53,0x39,0x01,0x0F,0x37,0x01,0xCB,
+0x58,0x79,0x00,0xCB,0x38,0x79,0x08,0x9C,0x38,0x0A,0xF9,0x01,0xCB,0x18,0x3C,0x44,
+0x0B,0x7A,0x01,0x0B,0x39,0x01,0x0F,0x21,0x07,0x0B,0x18,0x01,0x57,0x18,0x40,0x5F,
+0x18,0x04,0x23,0x00,0x40,0x4C,0x63,0x29,0x5C,0x60,0x09,0x48,0x63,0x0A,0xE4,0x00,
+0x00,0x3F,0xCC,0x63,0x00,0x06,0x5C,0x63,0x04,0xE4,0x00,0x00,0x29,0x0A,0xF8,0x01,
+0x52,0xF7,0x01,0x0E,0xF8,0x01,0x0A,0xF9,0x01,0xE4,0x00,0x00,0x21,0xC3,0x34,0x00,
+0x01,0xCB,0x19,0x79,0x10,0xCB,0x39,0x79,0x08,0x0B,0x41,0x07,0x43,0x57,0xD5,0xD4,
+0x7A,0x00,0xB8,0x0B,0x41,0x07,0xD7,0x57,0xFE,0xB9,0x0B,0x41,0x07,0x43,0x5B,0xD5,
+0x8E,0xFA,0xD4,0x77,0xFE,0x5C,0x9C,0x28,0x85,0x29,0x5C,0x63,0x04,0xE4,0x00,0x00,
+0x2D,0x42,0xE4,0x2C,0xC3,0x38,0x00,0x01,0x43,0x05,0xCC,0x8F,0x03,0x13,0x18,0x00,
+0x1B,0x17,0x00,0x9C,0xBF,0x20,0xBF,0xB2,0x85,0x29,0x5C,0x63,0x00,0xC2,0xF4,0x00,
+0x01,0x20,0x60,0xCE,0xCA,0xF7,0x2C,0x30,0x0B,0x17,0x01,0xCB,0x18,0x02,0x00,0x0F,
+0x17,0x01,0x80,0x01,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3C,0x44,0xCA,0xF7,0x3C,0xA8,
+0x0B,0x38,0x01,0xC7,0x39,0xFF,0xF3,0x0F,0x38,0x01,0x0B,0x17,0x01,0x53,0x18,0x01,
+0xE4,0x00,0x00,0x9F,0xCB,0x17,0x3C,0xA8,0x0B,0x38,0x01,0x53,0x39,0x01,0xCA,0xF7,
+0x3C,0x5C,0x0F,0x38,0x01,0x1F,0x00,0xC0,0x0B,0x37,0x00,0x47,0x39,0xC4,0x9B,0x02,
+0x24,0x64,0x25,0x54,0x63,0x3F,0x5F,0x03,0x06,0x47,0x18,0xCD,0x5C,0x78,0x04,0xC3,
+0x14,0x00,0x01,0x0C,0x77,0x01,0xCA,0xF8,0x3C,0xA8,0x0B,0x37,0x01,0xC7,0x39,0xFF,
+0xFE,0x0F,0x37,0x01,0xCA,0xF8,0x2C,0x30,0x0B,0x17,0x01,0xCB,0x18,0x01,0x00,0x0F,
+0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3D,0x80,0x0B,0x38,0x01,0xCB,
+0x39,0x08,0x00,0x0F,0x38,0x01,0xCA,0xF7,0x3D,0x84,0x0B,0x17,0x01,0xCB,0x18,0x08,
+0x00,0x0F,0x17,0x01,0x85,0x29,0xE7,0xFF,0xFF,0xBD,0x56,0xE3,0xFF,0x4E,0xF7,0x08,
+0x5C,0x84,0x04,0xC4,0x63,0xFF,0x00,0x8C,0x77,0xC2,0xF4,0x00,0x01,0x4C,0x63,0x08,
+0x8C,0x77,0x0C,0x83,0x01,0x85,0x29,0x1C,0x21,0xC8,0xC0,0x98,0x00,0x21,0x0D,0x21,
+0x34,0x1C,0x61,0x06,0xFC,0x84,0xB6,0x6E,0x50,0xA0,0x2A,0xE7,0xFF,0x2F,0x7C,0x1E,
+0xE1,0x06,0x1F,0x41,0x30,0x0B,0x37,0x01,0xFF,0x60,0xFF,0x00,0x47,0x19,0xDC,0x5F,
+0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0xC3,0x34,0x00,0x01,0x8F,0x19,
+0x0B,0x37,0x03,0x47,0x99,0xCF,0x0B,0x78,0x01,0x47,0x7B,0xE4,0x0B,0x97,0x05,0x47,
+0x39,0xE4,0x47,0x3B,0xCD,0x0F,0x38,0x01,0x9E,0xE6,0xD7,0x57,0xFE,0x5E,0x0D,0x21,
+0x36,0x1C,0x21,0x38,0x85,0x29,0xFC,0x21,0xFF,0x38,0x50,0xA0,0x3C,0xED,0x21,0x00,
+0xC4,0xED,0x41,0x00,0xC0,0xED,0x61,0x00,0xBC,0xED,0x81,0x00,0xB8,0xED,0xA1,0x00,
+0xB4,0xED,0xC1,0x00,0xB0,0xED,0xE1,0x00,0xAC,0xEE,0x01,0x00,0xA8,0xC1,0x58,0x00,
+0x21,0x1C,0x61,0x6C,0xFD,0x4A,0xB6,0x6E,0x1C,0x8A,0x2A,0xE7,0xFF,0x2E,0x7C,0x50,
+0xA0,0x24,0x1C,0x8A,0x66,0x1C,0x61,0x48,0xE7,0xFF,0x2E,0x62,0x98,0x61,0x98,0x82,
+0xE7,0xFF,0xEF,0x1A,0x98,0x61,0xFC,0x80,0x3E,0x0C,0xE7,0xFF,0xD9,0xF2,0x98,0x61,
+0xFC,0x80,0x3E,0x0C,0xE7,0xFF,0xEC,0x6C,0x98,0x61,0x88,0x83,0xE7,0xFF,0xDC,0xA6,
+0x98,0x61,0x88,0x83,0xE7,0xFF,0xDA,0x2E,0x98,0x60,0x98,0x81,0xE7,0xFF,0xDB,0x1E,
+0x98,0x60,0x05,0x4F,0x0F,0xC9,0x4A,0x0F,0x0F,0x88,0x8A,0xE7,0xFF,0xE4,0xDE,0x98,
+0x61,0x88,0x8A,0xE7,0xFF,0xE4,0xCE,0xC3,0x54,0x00,0x01,0xCA,0xE0,0x11,0x50,0xCB,
+0x5A,0x22,0x00,0x57,0x17,0xFF,0x4F,0x18,0x10,0x8F,0x1A,0x1F,0x61,0x2A,0x0B,0x38,
+0x01,0x4F,0x17,0x08,0x8F,0x1B,0xEF,0x38,0xDD,0x61,0x9E,0xE1,0xC2,0xE2,0x2B,0xE4,
+0x23,0xFF,0x8D,0x1E,0xE1,0x6C,0xFF,0x41,0x00,0xA8,0xC1,0x94,0x00,0x01,0xFD,0xA0,
+0xFF,0x00,0x0B,0x37,0x01,0x47,0x19,0x6C,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,
+0x08,0x8F,0x19,0x0B,0x37,0x03,0x8F,0x0C,0x0F,0x38,0x01,0x9E,0xE4,0xD7,0x57,0xFF,
+0x2E,0x1E,0xE1,0x48,0x1F,0x41,0x6C,0x0B,0x37,0x01,0x47,0x19,0x6C,0x5F,0x39,0x00,
+0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,0x03,0x8F,0x0C,0x0F,0x38,0x01,
+0x9E,0xE4,0xD7,0x57,0xFF,0x2E,0xE7,0xFF,0xD5,0xF8,0x99,0xE0,0x89,0xC3,0x98,0x61,
+0xE7,0xFF,0xD6,0x0E,0xD1,0xE0,0x05,0xBE,0x98,0x60,0x1D,0x61,0x0A,0xE7,0xFF,0xD6,
+0x48,0x99,0x40,0xE4,0x00,0x01,0x45,0x98,0x61,0x88,0x8A,0x22,0x01,0x0A,0xE7,0xFF,
+0xE1,0xE0,0x98,0x60,0xE7,0xFF,0xE2,0x2A,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF8,0x16,
+0xE7,0xFF,0xD4,0x14,0xE7,0xFF,0xF6,0xC2,0xC4,0x63,0x01,0x00,0x20,0x63,0xE0,0xFC,
+0x60,0x01,0x00,0xE7,0xFF,0xF7,0x6C,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF8,0x30,0x88,
+0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE8,0x94,0xE4,0x00,0x00,0x8B,0xE7,0xFF,0xE1,
+0x62,0x98,0x61,0xE7,0xFF,0xE1,0xAC,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF7,0x98,0xE7,
+0xFF,0xD3,0x96,0xE7,0xFF,0xF6,0x44,0xC4,0x63,0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,
+0x01,0x00,0xE7,0xFF,0xF6,0xEE,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF7,0xB2,0x88,0x6A,
+0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE8,0x16,0x0A,0xEB,0x01,0x40,0x63,0xBD,0x0C,0x6B,
+0x01,0x9E,0x01,0x5E,0x10,0x00,0xD2,0x02,0xFB,0x8E,0x9D,0x41,0x9D,0x62,0x5D,0x4A,
+0x00,0xD1,0x44,0x05,0xEA,0x9A,0x00,0xE7,0xFF,0xFE,0xC1,0x98,0x61,0x1D,0x61,0x12,
+0xE7,0xFF,0xD4,0xE2,0x99,0x40,0xE4,0x00,0x01,0x45,0x98,0x61,0x88,0x8A,0x22,0x01,
+0x0A,0xE7,0xFF,0xE0,0x7A,0x98,0x60,0xE7,0xFF,0xE0,0xC4,0xFC,0x60,0x01,0x00,0xE7,
+0xFF,0xF6,0xB0,0xE7,0xFF,0xD2,0xAE,0xE7,0xFF,0xF5,0x5C,0xC4,0x63,0x01,0x00,0x20,
+0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0x06,0xFC,0x60,0x01,0x00,0xE7,0xFF,
+0xF6,0xCA,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE7,0x2E,0xE4,0x00,0x00,0x8B,
+0xE7,0xFF,0xDF,0xFC,0x98,0x61,0xE7,0xFF,0xE0,0x46,0xFC,0x60,0x01,0x00,0xE7,0xFF,
+0xF6,0x32,0xE7,0xFF,0xD2,0x30,0xE7,0xFF,0xF4,0xDE,0xC4,0x63,0x01,0x00,0x20,0x63,
+0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF5,0x88,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,
+0x4C,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE6,0xB0,0x0A,0xEB,0x01,0x40,0x63,
+0xBD,0x0C,0x6B,0x01,0x9E,0x01,0x5E,0x10,0x00,0xD2,0x02,0xFB,0x8E,0x9D,0x41,0x9D,
+0x62,0x5D,0x4A,0x00,0xD1,0x44,0x00,0x52,0x9A,0x00,0xE7,0xFF,0xFE,0xC1,0x9D,0xE1,
+0x5D,0xEF,0x00,0xD1,0xE2,0xF4,0x8E,0x0B,0x21,0x0A,0x0B,0x01,0x12,0x0F,0x21,0x07,
+0x1E,0xE1,0x0C,0x1F,0x81,0x12,0x0B,0x77,0x01,0x8B,0x59,0x5F,0xBB,0x06,0xD7,0x3D,
+0x00,0x30,0x8B,0x5B,0x5F,0x3A,0x06,0x0B,0x77,0x09,0x8B,0x58,0x5F,0xBB,0x06,0xD7,
+0x1D,0x00,0x30,0x8B,0x5B,0x5F,0x1A,0x06,0x9E,0xE2,0xD7,0x97,0xFE,0xE6,0x0F,0x21,
+0x07,0x9A,0xE0,0x0F,0x01,0x09,0x1F,0x21,0x1A,0x8B,0x57,0xFD,0x00,0x3F,0xFF,0xE4,
+0x00,0x00,0x69,0x43,0x7E,0xC4,0x0B,0x9B,0x00,0x43,0x79,0xC4,0x23,0x80,0x32,0x0D,
+0x1B,0x01,0x9B,0x41,0xE4,0x00,0x00,0x23,0x09,0x5D,0x00,0xCD,0x4A,0x1F,0xFF,0x43,
+0x8A,0xE0,0x0F,0x9B,0x01,0x9F,0x02,0xD3,0x08,0xFE,0xE6,0x9F,0x28,0x9E,0xE2,0xD2,
+0xE4,0x00,0xBA,0x1F,0x01,0x0A,0x4F,0xD7,0x10,0x1F,0xA1,0x06,0x8F,0xD8,0x8F,0xB7,
+0x9B,0x00,0xE7,0xFF,0xFF,0x83,0xC3,0x94,0x00,0x01,0x9A,0xE0,0xCB,0x9C,0x24,0x00,
+0xE4,0x00,0x00,0x47,0x43,0xB9,0xC4,0x43,0xDB,0xC4,0x57,0xBD,0xFF,0x0B,0xDE,0x01,
+0x4F,0xBD,0x10,0x8F,0xBC,0x0F,0xDD,0x01,0x9F,0x02,0xD3,0x08,0xFF,0x56,0x9E,0xE1,
+0x22,0xE8,0x54,0x1F,0x21,0x1A,0x4F,0x77,0x18,0x9B,0x00,0x8F,0x79,0xFF,0x37,0x12,
+0x46,0xE7,0xFF,0xFF,0xA7,0x9A,0xE0,0x4F,0x17,0x08,0x1F,0x61,0x6C,0x8F,0x1B,0x0B,
+0x38,0x01,0x47,0x19,0x6C,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,
+0x1F,0x21,0x2A,0x8F,0x0C,0x8F,0x37,0x0B,0x39,0x01,0x0F,0x38,0x01,0x9E,0xE2,0x5E,
+0xE3,0xC9,0x23,0xFF,0x55,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x25,0x38,0x0B,0x17,0x01,
+0x23,0x40,0x34,0x5F,0x18,0x04,0x53,0x18,0x0F,0xE4,0x00,0x00,0x11,0xC7,0x18,0xFF,
+0xF0,0x0F,0x17,0x01,0x98,0x60,0x98,0x80,0xE7,0xFF,0xDE,0x84,0x98,0x80,0x98,0x61,
+0xE7,0xFF,0xDE,0x74,0x98,0x60,0xE7,0xFF,0xDD,0x26,0x98,0x60,0x98,0x80,0xE7,0xFF,
+0xDC,0xC0,0x88,0x6E,0xEE,0x01,0x00,0xAA,0xED,0xE1,0x00,0xAE,0xED,0xC1,0x00,0xB2,
+0xED,0xA1,0x00,0xB6,0xED,0x81,0x00,0xBA,0xED,0x61,0x00,0xBE,0xED,0x41,0x00,0xC2,
+0xED,0x21,0x00,0xC6,0xFC,0x21,0x00,0xC8,0xE7,0xFF,0xD0,0x5F,0x80,0x01,0x80,0x01,
+0x80,0x01,0x80,0x01,0x80,0x01,0xC8,0x80,0xAA,0x55,0xC0,0x74,0x00,0x01,0xC8,0x63,
+0x78,0xC0,0x0C,0x83,0x00,0xC0,0x74,0x00,0x01,0xC8,0x63,0x1F,0xDC,0x50,0x80,0x80,
+0x0C,0x83,0x00,0x04,0x20,0x80,0xC8,0x21,0x17,0xFC,0x1C,0x40,0xFD,0x44,0x21,0x14,
+0x28,0x00,0x74,0xC0,0x40,0x00,0x01,0xC8,0x42,0x31,0xD8,0x84,0x49,0x0C,0x41,0x0C,
+0x0C,0x61,0x10,0x0C,0x81,0x14,0x0C,0xA1,0x18,0x0C,0xC1,0x1C,0x0C,0xE1,0x20,0x0D,
+0x01,0x24,0x0D,0x21,0x28,0x0D,0x41,0x2C,0x0D,0x61,0x30,0x0D,0x81,0x34,0x0D,0xA1,
+0x38,0x0D,0xC1,0x3C,0x0D,0xE1,0x40,0x0E,0x01,0x44,0x0E,0x21,0x48,0x0E,0x41,0x4C,
+0x0E,0x61,0x50,0x0E,0x81,0x54,0x0E,0xA1,0x58,0x0E,0xC1,0x5C,0x0E,0xE1,0x60,0x0F,
+0x01,0x64,0x0F,0x21,0x68,0x0F,0x41,0x6C,0x0F,0x61,0x70,0x0F,0x81,0x74,0x0F,0xA1,
+0x78,0x0F,0xC1,0x7C,0x1C,0x61,0x00,0xC1,0x00,0x00,0x01,0xC9,0x08,0x9F,0x48,0x85,
+0x08,0x90,0x23,0x00,0xC0,0x40,0x10,0x01,0xC8,0x42,0x03,0xB0,0xC0,0x60,0x10,0x01,
+0xC8,0x63,0x0D,0x64,0x5C,0x43,0x1F,0x20,0x00,0x2D,0x0C,0x02,0x00,0x1C,0x42,0x04,
+0x93,0xF4,0x85,0x29,0xC0,0x80,0x01,0x1F,0xC0,0x7F,0xFF,0xE1,0xC8,0x63,0xFF,0xF9,
+0x44,0x84,0x1C,0xC0,0x80,0x01,0x1D,0x0C,0x61,0x02,0xC0,0x60,0x02,0x0D,0x0C,0x61,
+0x06,0xC0,0x60,0x04,0x0D,0x0C,0x41,0x0E,0x0C,0x61,0x12,0x0C,0x81,0x16,0x0C,0xA1,
+0x1A,0x0C,0xC1,0x1E,0x0C,0xE1,0x22,0x0D,0x01,0x26,0x0D,0x21,0x2A,0x0D,0x41,0x2E,
+0x0D,0x61,0x32,0x0D,0x81,0x36,0x0D,0xA1,0x3A,0x0D,0xC1,0x3E,0x0D,0xE1,0x42,0x0E,
+0x01,0x46,0x0E,0x21,0x4A,0x0E,0x41,0x4E,0x0E,0x61,0x52,0x0E,0x81,0x56,0x0E,0xA1,
+0x5A,0x0E,0xC1,0x5E,0x0E,0xE1,0x62,0x0F,0x01,0x66,0x0F,0x21,0x6A,0x0F,0x41,0x6E,
+0x0F,0x61,0x72,0x0F,0x81,0x76,0x0F,0xA1,0x7A,0x0F,0xC1,0x7E,0xEF,0xE1,0x00,0x82,
+0x0C,0x21,0x0A,0x84,0x00,0x00,0x00,0x00,0x9C,0x30,0xCA,0xE0,0x48,0x02,0x0D,0x41,
+0x08,0x0D,0x21,0x0C,0x89,0x43,0xC2,0xF7,0x00,0x0F,0x9B,0x1C,0x46,0xF7,0xC4,0x0E,
+0xE1,0x04,0x0E,0xE1,0x06,0x56,0xF7,0x04,0x22,0xE0,0xE0,0xCA,0xE0,0x48,0x00,0xC3,
+0x37,0x00,0x0F,0x9B,0x1B,0x47,0x39,0xC4,0xC3,0x37,0x00,0x0D,0xCA,0xE0,0x48,0x02,
+0xC3,0x37,0x00,0x0F,0x47,0x19,0xC4,0xC3,0x17,0x00,0x0D,0x98,0x82,0xE7,0xFF,0xC2,
+0xB4,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,0x0F,0x53,0x18,0x04,0xC3,0x17,0x00,0x0D,
+0x0E,0xE1,0x06,0x56,0xF7,0x08,0x22,0xE0,0xE8,0xCA,0xE0,0x48,0x00,0xC3,0x37,0x00,
+0x0F,0x9B,0x17,0x47,0x39,0xC4,0xC3,0x37,0x00,0x0D,0xCA,0xE0,0x48,0x02,0xC3,0x37,
+0x00,0x0F,0x47,0x19,0xC4,0xC3,0x17,0x00,0x0D,0x98,0x83,0x88,0x6A,0xE7,0xFF,0xC2,
+0x34,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,0x0F,0x53,0x18,0x08,0xC3,0x17,0x00,0x0D,
+0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,
+0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x1B,0x00,0x00,0x00,0x00,0xA0,0x26,0x01,0x66,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x00,0xA0,0x66,0x00,0x01,0x00,0x00,0x00,0xF3,0x00,0x06,0x00,
+0xC4,0x00,0x2F,0x00,0x07,0x00,0x0D,0x01,0xF6,0xFF,0x5C,0x00,0xFB,0xFF,0x00,0x00,
+0x1B,0x00,0x1B,0x00,0x01,0x00,0x10,0x00,0xF0,0x00,0x9E,0x00,0x6F,0x00,0x6F,0x00,
+0x1A,0x00,0x0C,0x3E,0x01,0x00,0x00,0x00,0x64,0x00,0x14,0x00,0x14,0x00,0x06,0x00,
+0x06,0x00,0x5A,0x00,0x14,0x00,0x14,0x00,0x06,0x00,0x06,0x00,0x64,0x00,0x01,0x00,
+0x5F,0x00,0x01,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x50,0x00,0x96,0x00,0x40,0x06,0x00,0x00,0x80,0x0C,0x00,0x00,
+0x01,0x03,0x07,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x05,0x00,
+0x00,0x01,0x02,0x00,0x14,0x00,0x2D,0x00,0x46,0x00,0x5F,0x00,0x78,0x00,0x91,0x00,
+0x07,0x00,0xC8,0x00,0xC8,0x00,0xC8,0x00,0xF4,0x01,0xF4,0x01,0xFF,0xFF,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x02,0x00,0x04,0x00,0x06,0x00,
+0x08,0x00,0x0A,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x20,0x00,0x28,0x00,
+0x32,0x00,0x3E,0x00,0x40,0x00,0x64,0x00,0x80,0x00,0x00,0x01,0x02,0x00,0x00,0x11,
+0xFF,0xFF,0xFF,0xFF,0x01,0x11,0xFF,0xFF,0x18,0x50,0x02,0x11,0xFF,0x7F,0xFF,0x0E,
+0x03,0x11,0xFF,0x00,0x66,0x00,0x04,0x11,0xFF,0x0F,0x72,0x07,0x05,0x11,0xFF,0x0F,
+0x72,0x07,0x06,0x11,0xFF,0x00,0x00,0x00,0x07,0x11,0x03,0x00,0x00,0x00,0x08,0x11,
+0x73,0x00,0x00,0x00,0x09,0x11,0xFF,0xFF,0x00,0x00,0x09,0x11,0xFF,0x7F,0x00,0x00,
+0x0A,0x11,0xFF,0x7F,0x87,0x10,0x0E,0x11,0xFF,0xFF,0x00,0x00,0x0F,0x11,0xFF,0xFF,
+0x00,0x00,0x17,0x11,0x0F,0xFF,0x00,0x00,0x18,0x11,0xFF,0xFF,0x00,0x02,0x19,0x11,
+0xFF,0x00,0x0E,0x00,0x1E,0x11,0xFF,0xFF,0x00,0x00,0x1F,0x11,0xFF,0x00,0x00,0x00,
+0x33,0x11,0x0F,0x00,0x00,0x00,0x3A,0x11,0x37,0x0F,0x00,0x00,0x3B,0x11,0x77,0x00,
+0x77,0x00,0x3C,0x11,0x00,0xFF,0x00,0xA0,0x3D,0x11,0x77,0x00,0x00,0x00,0x3E,0x11,
+0xFF,0x00,0x00,0x00,0x04,0x12,0x06,0x00,0x00,0x00,0x05,0x12,0xFF,0x00,0x00,0x00,
+0x07,0x12,0xFF,0xFF,0x00,0x00,0x08,0x12,0xFF,0x00,0x00,0x00,0x09,0x12,0xFF,0xFF,
+0x00,0x00,0x0A,0x12,0xFF,0x00,0x00,0x00,0x0B,0x12,0x3F,0x00,0x2E,0x00,0x0D,0x12,
+0x1F,0x00,0x05,0x00,0x0E,0x12,0x1F,0x00,0x05,0x00,0x0F,0x12,0xFF,0xFF,0x00,0x00,
+0x10,0x12,0xFF,0x00,0x00,0x00,0x11,0x12,0xFF,0x0F,0x00,0x00,0x12,0x12,0x87,0x1F,
+0x00,0x00,0x13,0x12,0x7F,0x0F,0x14,0x00,0x14,0x12,0x9F,0xFF,0x0A,0x09,0x15,0x12,
+0x7F,0x0F,0x0C,0x0F,0x16,0x12,0xFF,0x0F,0x00,0x07,0x17,0x12,0x1F,0xFF,0x0A,0x5C,
+0x18,0x12,0x7F,0x1F,0x14,0x0A,0x19,0x12,0xFF,0xFF,0x8C,0x21,0x1A,0x12,0xFF,0x03,
+0x00,0x00,0x1B,0x12,0xFF,0x03,0x00,0x00,0x1C,0x12,0xFF,0x03,0x00,0x00,0x1D,0x12,
+0xFF,0x03,0x00,0x00,0x1E,0x12,0x1F,0x1F,0x12,0x07,0x1F,0x12,0x3F,0x3F,0x00,0x00,
+0x20,0x12,0xFF,0xFF,0x00,0x00,0x21,0x12,0xFF,0x00,0x00,0x00,0x23,0x12,0x3F,0x3F,
+0x02,0x00,0x24,0x12,0x3F,0x00,0x00,0x00,0x28,0x12,0xFF,0xFF,0x83,0x81,0x2D,0x12,
+0x01,0x00,0x01,0x00,0x50,0x12,0xFF,0xFF,0x00,0x00,0x51,0x12,0xFF,0x00,0x00,0x00,
+0x70,0x12,0x03,0x00,0x03,0x00,0x01,0x11,0x06,0x00,0x02,0x00,0x02,0x11,0x00,0x08,
+0x00,0x08,0x2A,0x12,0x00,0xFF,0x00,0xBA,0x2B,0x12,0xFF,0x30,0xF0,0x20,0x01,0x11,
+0x06,0x00,0x00,0x00,0x2A,0x12,0x00,0xFF,0x00,0x00,0x2B,0x12,0xFF,0x30,0x00,0x00,
+0x01,0x11,0x00,0x50,0x00,0x50,0x02,0x11,0x3F,0x06,0x2F,0x06,0x01,0x11,0x00,0x50,
+0x00,0x00,0x02,0x11,0x3F,0x06,0x00,0x00,0x2A,0x12,0x00,0x30,0x00,0x20,0x11,0x1E,
+0xFF,0x7F,0x00,0x00,0x12,0x1E,0xFF,0x00,0x00,0x00,0x13,0x1E,0x0F,0x00,0x00,0x00,
+0x15,0x1E,0x73,0x07,0x00,0x00,0x16,0x1E,0x0F,0x00,0x00,0x00,0x18,0x1E,0x3F,0x00,
+0x08,0x00,0x2A,0x1E,0x05,0x00,0x01,0x00,0x50,0x11,0x11,0x11,0x51,0x11,0x11,0x11,
+0x52,0x11,0x11,0x11,0x53,0x11,0x11,0x11,0x54,0x11,0x11,0x11,0x55,0x11,0x11,0x11,
+0x56,0x11,0x11,0x11,0x57,0x11,0x11,0x11,0x58,0x11,0x11,0x11,0x59,0x11,0x11,0x11,
+0x5A,0x11,0x11,0x11,0x5B,0x11,0x11,0x11,0x5C,0x11,0xFF,0xFF,0x5D,0x11,0xFF,0xFF,
+0x5E,0x11,0xFF,0xFF,0x46,0x12,0x00,0x00,0x47,0x12,0x00,0x00,0x48,0x12,0x00,0x00,
+0x49,0x12,0x00,0x00,0x4A,0x12,0x00,0x00,0x4B,0x12,0x00,0x00,0x4C,0x12,0x00,0x00,
+0x4D,0x12,0x00,0x00,0x4E,0x12,0x0F,0x00,0x02,0x03,0x0F,0x00,0x52,0x00,0x69,0x00,
+0xD9,0x00,0x95,0x00,0x89,0x00,0x7E,0x00,0x72,0x00,0x67,0x00,0x5B,0x00,0x50,0x00,
+0x44,0x00,0x39,0x00,0x2D,0x00,0x22,0x00,0x16,0x00,0x0B,0x00,0x00,0x00,0xFF,0x00,
+0x8D,0x09,0x1A,0x00,0xFE,0x00,0x1B,0x07,0x3F,0x00,0xFE,0x00,0x9D,0x0A,0x78,0x00,
+0xFD,0x00,0xEC,0x12,0xA8,0x00,0xFC,0x00,0x6B,0x18,0xD0,0x00,0xFB,0x00,0x7C,0x19,
+0x0A,0x01,0xF9,0x00,0x55,0x20,0x4E,0x01,0xF8,0x00,0x85,0x26,0x86,0x01,0xFF,0x00,
+0x48,0x0D,0x09,0x00,0xFE,0x00,0x9E,0x0B,0x1E,0x00,0xFE,0x00,0x34,0x0E,0x44,0x00,
+0xFD,0x00,0x35,0x14,0x66,0x00,0xFD,0x00,0x1A,0x18,0x7F,0x00,0xFC,0x00,0x11,0x19,
+0x9C,0x00,0xFB,0x00,0x3C,0x1C,0xBF,0x00,0xFB,0x00,0x94,0x21,0xDB,0x00,0xFA,0x00,
+0xE6,0x24,0xF7,0x00,0xF9,0x00,0xFB,0x24,0x29,0x01,0xFE,0x00,0xE0,0x0D,0x04,0x00,
+0xFE,0x00,0xF6,0x10,0x18,0x00,0xFE,0x00,0xC8,0x12,0x30,0x00,0xFD,0x00,0xEB,0x14,
+0x4A,0x00,0xFD,0x00,0x74,0x16,0x69,0x00,0xFC,0x00,0xB9,0x1C,0x7E,0x00,0xFC,0x00,
+0x68,0x20,0x8E,0x00,0xFB,0x00,0xCE,0x21,0xA6,0x00,0xFB,0x00,0x52,0x23,0xC8,0x00,
+0xFA,0x00,0x0A,0x29,0xE2,0x00,0xF9,0x00,0x4D,0x2C,0xFC,0x00,0xFE,0x00,0x85,0x13,
+0xF8,0xFF,0xFE,0x00,0xF6,0x12,0x07,0x00,0xFD,0x00,0xC9,0x13,0x24,0x00,0xFD,0x00,
+0x6E,0x18,0x3E,0x00,0xFC,0x00,0x47,0x1C,0x4E,0x00,0xFC,0x00,0x83,0x1D,0x5E,0x00,
+0xFC,0x00,0xFB,0x1F,0x74,0x00,0xFB,0x00,0xF7,0x25,0x86,0x00,0xFA,0x00,0xB8,0x29,
+0x93,0x00,0xFA,0x00,0xA4,0x29,0xAB,0x00,0xF9,0x00,0x13,0x2B,0xCB,0x00,0xF9,0x00,
+0x37,0x30,0xE5,0x00,0xFD,0x00,0x0D,0x1F,0xDC,0xFF,0xFD,0x00,0x3D,0x1E,0xE7,0xFF,
+0xFD,0x00,0xD0,0x1C,0x02,0x00,0xFC,0x00,0xCD,0x1E,0x1B,0x00,0xFC,0x00,0x4B,0x22,
+0x29,0x00,0xFC,0x00,0x4F,0x25,0x33,0x00,0xFB,0x00,0x83,0x27,0x43,0x00,0xFA,0x00,
+0xE6,0x2C,0x4F,0x00,0xFA,0x00,0x48,0x30,0x57,0x00,0xFA,0x00,0x0E,0x31,0x62,0x00,
+0xF9,0x00,0x76,0x31,0x77,0x00,0xF9,0x00,0x65,0x36,0x87,0x00,0xF8,0x00,0xB3,0x38,
+0x94,0x00,0xF8,0x00,0x27,0x37,0xAC,0x00,0x05,0x03,0x03,0x04,0x04,0x00,0x11,0x00,
+0xC1,0x09,0xD9,0xFF,0x36,0x01,0x0E,0x00,0x1C,0x00,0xDD,0x03,0x03,0x00,0x40,0x00,
+0x14,0x00,0x4C,0x00,0x95,0x03,0x05,0x00,0x07,0x00,0x18,0x00,0xA5,0x00,0x4B,0x06,
+0x9B,0xFF,0x03,0x00,0x19,0x00,0xC8,0x00,0x14,0x03,0x3B,0x00,0x00,0x00,0x1A,0x00,
+0x16,0x00,0x40,0x05,0xE4,0xFF,0xA2,0x00,0x14,0x00,0x3B,0x00,0x67,0x04,0xF0,0xFF,
+0x3B,0x00,0x1A,0x00,0x6F,0x00,0x22,0x04,0xF8,0xFF,0x03,0x00,0x20,0x00,0x1C,0x00,
+0x48,0x05,0xDB,0xFF,0x98,0x00,0x16,0x00,0x57,0x00,0x90,0x04,0xEC,0xFF,0x19,0x00,
+0x21,0x00,0x95,0x00,0x08,0x04,0xFE,0xFF,0x02,0x00,0x24,0x00,0x23,0x00,0xC4,0x05,
+0xCC,0xFF,0xA6,0x00,0x17,0x00,0x62,0x00,0x9C,0x04,0xEC,0xFF,0x17,0x00,0x25,0x00,
+0xA0,0x00,0x0E,0x04,0xFB,0xFF,0x02,0x00,0x28,0x00,0x0D,0x01,0x7D,0x04,0xE1,0xFF,
+0xFC,0xFF,0x2A,0x00,0x33,0x00,0x30,0x07,0xA2,0xFF,0xD3,0x00,0x18,0x00,0x6F,0x00,
+0xAD,0x04,0xED,0xFF,0x23,0x00,0x2B,0x00,0x9C,0x00,0x14,0x03,0x27,0x00,0x03,0x00,
+0x2F,0x00,0xE1,0x00,0x53,0x05,0xAB,0xFF,0x02,0x00,0x30,0x00,0x35,0x51,0x00,0x00,
+0x35,0x51,0x00,0x00,0x4A,0x51,0x00,0x00,0x4A,0x51,0x00,0x00,0xC8,0x53,0x00,0x00,
+0xC8,0x53,0x00,0x00,0xC8,0x53,0x00,0x00,0xD0,0x51,0x00,0x00,0xA0,0x52,0x00,0x00,
+0x25,0x52,0x00,0x00,0x09,0x54,0x00,0x00,0x09,0x54,0x00,0x00,0x91,0x55,0x00,0x00,
+0x91,0x55,0x00,0x00,0x91,0x55,0x00,0x00,0x91,0x55,0x00,0x00,0x91,0x55,0x00,0x00,
+0xB8,0x54,0x00,0x00,0x5C,0x55,0x00,0x00,0x11,0x55,0x00,0x00,0xDF,0x55,0x00,0x00,
+0xDF,0x55,0x00,0x00,0x0D,0x56,0x00,0x00,0x35,0x56,0x00,0x00,0x48,0x56,0x00,0x00,
+0x85,0x56,0x00,0x00,0x61,0x56,0x00,0x00,0xDA,0x59,0x00,0x00,0xF9,0x59,0x00,0x00,
+0x52,0x5A,0x00,0x00,0x80,0x5A,0x00,0x00,0xAC,0x5A,0x00,0x00,0xAC,0x5A,0x00,0x00,
+0xBE,0x5A,0x00,0x00,0xAC,0x5A,0x00,0x00,0x68,0x5A,0x00,0x00,0x68,0x5A,0x00,0x00,
+0xAC,0x5A,0x00,0x00,0xAC,0x5A,0x00,0x00,0xBE,0x5A,0x00,0x00,0xBE,0x5A,0x00,0x00,
+0xBE,0x5A,0x00,0x00,0xA0,0x5A,0x00,0x00,0xA6,0x5A,0x00,0x00,0x0A,0x0B,0x2C,0x1B,
+0x09,0x07,0x1C,0x1A,0x25,0x05,0x1D,0x19,0x26,0x00,0x1E,0x18,0x27,0x04,0x1F,0x17,
+0x28,0x06,0x20,0x0D,0x29,0x08,0x2B,0x0C,0x2A,0x00,0x00,0x00,0xE0,0x66,0x00,0x00,
+0xE0,0x66,0x00,0x00,0x11,0x67,0x00,0x00,0x11,0x67,0x00,0x00,0x43,0x67,0x00,0x00,
+0x43,0x67,0x00,0x00,0x43,0x67,0x00,0x00,0x43,0x67,0x00,0x00,0xC2,0x66,0x00,0x00,
+0xA4,0x66,0x00,0x00,0xA4,0x67,0x00,0x00,0xA4,0x67,0x00,0x00,0xD7,0x67,0x00,0x00,
+0xD7,0x67,0x00,0x00,0x0C,0x68,0x00,0x00,0x0C,0x68,0x00,0x00,0x0C,0x68,0x00,0x00,
+0x0C,0x68,0x00,0x00,0x7D,0x67,0x00,0x00,0x6B,0x67,0x00,0x00,0xB2,0x68,0x00,0x00,
+0xB2,0x68,0x00,0x00,0x06,0x69,0x00,0x00,0x06,0x69,0x00,0x00,0x79,0x6A,0x00,0x00,
+0x79,0x6A,0x00,0x00,0x79,0x6A,0x00,0x00,0x79,0x6A,0x00,0x00,0x61,0x69,0x00,0x00,
+0xA7,0x69,0x00,0x00,0xED,0x69,0x00,0x00,0x35,0x6A,0x00,0x00,0x7E,0x77,0x00,0x00,
+0x7E,0x77,0x00,0x00,0xB9,0x77,0x00,0x00,0xB9,0x77,0x00,0x00,0xA8,0x78,0x00,0x00,
+0xA8,0x78,0x00,0x00,0xA8,0x78,0x00,0x00,0xA8,0x78,0x00,0x00,0xF6,0x77,0x00,0x00,
+0x1B,0x78,0x00,0x00,0x4C,0x78,0x00,0x00,0x7C,0x78,0x00,0x00,0xBB,0x82,0x00,0x00,
+0xE0,0x82,0x00,0x00,0x40,0x83,0x00,0x00,0xA7,0x83,0x00,0x00,0x38,0x84,0x00,0x00,
+0x68,0x84,0x00,0x00,0xFD,0x84,0x00,0x00,0x70,0x84,0x00,0x00,0x04,0x00,0x1D,0x00,
+0x2E,0x00,0x50,0x00,0x82,0x00,0xC7,0x00,0x23,0x01,0x9B,0x01,0x32,0x02,0xEE,0x02,
+0xD0,0x03,0xDE,0x04,0x19,0x06,0x82,0x07,0x1A,0x09,0xE0,0x0A,0xD0,0x0C,0xE7,0x0E,
+0x1F,0x11,0x71,0x13,0xD3,0x15,0x3D,0x18,0xA2,0x1A,0xF9,0x1C,0x34,0x1F,0x47,0x21,
+0x28,0x23,0xCB,0x24,0x27,0x26,0x33,0x27,0xEA,0x27,0x46,0x28,0x04,0x00,0x1C,0x00,
+0x2B,0x00,0x4B,0x00,0x78,0x00,0xB7,0x00,0x0A,0x01,0x75,0x01,0xFC,0x01,0xA3,0x02,
+0x6D,0x03,0x5E,0x04,0x76,0x05,0xB9,0x06,0x26,0x08,0xBE,0x09,0x7D,0x0B,0x61,0x0D,
+0x67,0x0F,0x87,0x11,0xBB,0x13,0xFC,0x15,0x3F,0x18,0x7B,0x1A,0xA6,0x1C,0xB6,0x1E,
+0x9F,0x20,0x57,0x22,0xD7,0x23,0x14,0x25,0x08,0x26,0xAF,0x26,0x03,0x27,0x05,0x00,
+0x08,0x21,0x05,0x00,0x00,0x20,0x00,0x00,0x94,0xBC,0x00,0xC0,0xA4,0xBC,0x00,0xC0,
+0xB6,0xBC,0x00,0xC0,0xBA,0xBC,0x00,0xC0,0x2C,0xBC,0x00,0xC0,0x74,0xBC,0x00,0xC0,
+0xD4,0xBC,0x00,0xC0,0xF2,0xBC,0x00,0xC0,0xF6,0xBC,0x00,0xC0,0x1C,0xBD,0x00,0xC0,
+0xAA,0xBD,0x00,0xC0,0xEC,0xBD,0x00,0xC0,0x4E,0xBB,0x00,0xC0,0x52,0xBB,0x00,0xC0,
+0x28,0xBC,0x00,0xC0,0x70,0xBC,0x00,0xC0,0x05,0x00,0x2A,0x00,0x2A,0x00,0x3E,0x00,
+0x58,0x00,0x79,0x00,0xA1,0x00,0xD3,0x00,0x0F,0x01,0x56,0x01,0xAA,0x01,0x0C,0x02,
+0x7D,0x02,0xFE,0x02,0x91,0x03,0x37,0x04,0xF0,0x04,0xBE,0x05,0xA0,0x06,0x99,0x07,
+0xA7,0x08,0xCC,0x09,0x06,0x0B,0x56,0x0C,0xBB,0x0D,0x34,0x0F,0xC0,0x10,0x5D,0x12,
+0x0A,0x14,0xC5,0x15,0x8A,0x17,0x59,0x19,0x2D,0x1B,0x05,0x1D,0xDC,0x1E,0xB0,0x20,
+0x7D,0x22,0x40,0x24,0xF5,0x25,0x98,0x27,0x27,0x29,0x9E,0x2A,0xF9,0x2B,0x37,0x2D,
+0x53,0x2E,0x4B,0x2F,0x1E,0x30,0xC9,0x30,0x4A,0x31,0xA1,0x31,0xCD,0x31,0x04,0x00,
+0x2D,0x00,0x6D,0x00,0xE7,0x00,0xAD,0x01,0xD8,0x02,0x81,0x04,0xBE,0x06,0xA0,0x09,
+0x30,0x0D,0x6D,0x11,0x47,0x16,0xA3,0x1B,0x56,0x21,0x29,0x27,0xDC,0x2C,0x2A,0x32,
+0xCF,0x36,0x8B,0x3A,0x29,0x3D,0x81,0x3E,0x06,0x00,0xF5,0x28,0x03,0x00,0x33,0x33,
+0x78,0xBC,0x00,0xC0,0x8E,0xBC,0x00,0xC0,0x20,0xBD,0x00,0xC0,0xAE,0xBD,0x00,0xC0,
+0x98,0xBC,0x00,0xC0,0xA8,0xBC,0x00,0xC0,0x7C,0xBC,0x00,0xC0,0xBE,0xBC,0x00,0xC0,
+0xD8,0xBC,0x00,0xC0,0xFA,0xBC,0x00,0xC0,0xFE,0xBB,0x00,0xC0,0xB8,0xBD,0x00,0xC0,
+0xCC,0xBA,0x00,0xC0,0x0C,0xBB,0x00,0xC0,0x98,0xBB,0x00,0xC0,0x28,0xBD,0x00,0xC0,
+0x06,0x00,0x00,0x20,0x03,0x00,0xAA,0x2A,0x00,0x00,0x00,0x20,0x02,0x00,0x45,0x00,
+0x5D,0x01,0x1B,0x04,0x31,0x09,0xA2,0x10,0x55,0x19,0x32,0x21,0xE5,0x25,0x01,0x00,
+0x10,0x10,0xEF,0x2F,0x00,0x00,0x00,0x20,0x02,0x00,0x49,0x01,0x6C,0x07,0xB1,0x15,
+0x60,0x29,0x38,0x38,0x01,0x00,0x00,0x20,0x02,0x00,0xAC,0x00,0xCB,0x03,0x95,0x0B,
+0x6B,0x18,0xE0,0x26,0xA6,0x30,0x02,0x00,0xAA,0x2A,0x02,0x00,0x00,0x20,0x03,0x00,
+0x4D,0x00,0x51,0x01,0xBD,0x03,0x48,0x08,0x6B,0x0F,0x0D,0x19,0x47,0x24,0x73,0x2F,
+0x86,0x38,0x9F,0x3D,0x03,0x00,0x00,0x20,0x03,0x00,0x33,0x00,0xC4,0x00,0x08,0x02,
+0x5B,0x04,0x11,0x08,0x55,0x0D,0x0D,0x14,0xCC,0x1B,0xCF,0x23,0x1E,0x2B,0xB5,0x30,
+0xBD,0x33,0x04,0x00,0x33,0x33,0x04,0x00,0xAA,0x2A,0x03,0x00,0x1F,0x00,0x5B,0x00,
+0xD6,0x00,0xAB,0x01,0xF6,0x02,0xD5,0x04,0x59,0x07,0x87,0x0A,0x52,0x0E,0x96,0x12,
+0x1C,0x17,0x9B,0x1B,0xC0,0x1F,0x37,0x23,0xB6,0x25,0x05,0x27,0x04,0x00,0x00,0x20,
+0x01,0x00,0x65,0x04,0x5D,0x14,0x3D,0x27,0x05,0x00,0x26,0x00,0x1D,0x00,0x28,0x00,
+0x36,0x00,0x47,0x00,0x5A,0x00,0x72,0x00,0x8D,0x00,0xAE,0x00,0xD3,0x00,0xFD,0x00,
+0x2D,0x01,0x64,0x01,0xA2,0x01,0xE6,0x01,0x33,0x02,0x87,0x02,0xE5,0x02,0x4B,0x03,
+0xBA,0x03,0x33,0x04,0xB6,0x04,0x43,0x05,0xDB,0x05,0x7C,0x06,0x29,0x07,0xDF,0x07,
+0xA1,0x08,0x6C,0x09,0x41,0x0A,0x21,0x0B,0x09,0x0C,0xFA,0x0C,0xF4,0x0D,0xF5,0x0E,
+0xFE,0x0F,0x0C,0x11,0x20,0x12,0x38,0x13,0x53,0x14,0x71,0x15,0x90,0x16,0xAF,0x17,
+0xCD,0x18,0xE8,0x19,0x00,0x1B,0x12,0x1C,0x1E,0x1D,0x23,0x1E,0x1F,0x1F,0x10,0x20,
+0xF7,0x20,0xD0,0x21,0x9C,0x22,0x59,0x23,0x07,0x24,0xA3,0x24,0x2E,0x25,0xA7,0x25,
+0x0C,0x26,0x5E,0x26,0x9C,0x26,0xC6,0x26,0xDA,0x26,0x05,0x00,0x33,0x33,0x01,0x00,
+0x7E,0x01,0x41,0x08,0x4A,0x15,0xF4,0x20,0x04,0x00,0x23,0x00,0x45,0x00,0x84,0x00,
+0xE4,0x00,0x6F,0x01,0x2F,0x02,0x2F,0x03,0x76,0x04,0x0F,0x06,0xFD,0x07,0x45,0x0A,
+0xE6,0x0C,0xDA,0x0F,0x19,0x13,0x93,0x16,0x37,0x1A,0xEF,0x1D,0xA0,0x21,0x2F,0x25,
+0x80,0x28,0x77,0x2B,0xFA,0x2D,0xF2,0x2F,0x4D,0x31,0xFD,0x31,0x05,0x00,0xF5,0x28,
+0xB4,0x95,0x00,0x00,0xD0,0x95,0x00,0x00,0xEF,0x95,0x00,0x00,0x0E,0x96,0x00,0x00,
+0x1D,0x96,0x00,0x00,0x44,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x01,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x2D,0x40,0x5B,0x76,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01,0x00,0x08,0x00,
+0x00,0x00,0x56,0x30,0x31,0x2E,0x30,0x30,0x37,0x2E,0x30,0x34,0x56,0xFF,0xB2,0x89
+};
diff --git a/drivers/input/touchscreen/msg2233/msg22xx_yyyy_update_bin.h b/drivers/input/touchscreen/msg2233/msg22xx_yyyy_update_bin.h new file mode 100755 index 00000000..26c9c95f --- /dev/null +++ b/drivers/input/touchscreen/msg2233/msg22xx_yyyy_update_bin.h @@ -0,0 +1,3106 @@ +u8 msg22xx_yyyy_update_bin[49664]={
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xF2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x52,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x1A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x19,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x91,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xFD,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xEF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xD3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x90,0xC5,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x1C,0x40,0x00,0x1C,
+0x60,0x00,0x1C,0x80,0x00,0x1C,0xA0,0x00,0x1C,0xC0,0x00,0x1C,0xE0,0x00,0x1D,0x00,
+0x00,0x1D,0x20,0x00,0x1D,0x40,0x00,0x1D,0x60,0x00,0x1D,0x80,0x00,0x1D,0xA0,0x00,
+0x1D,0xC0,0x00,0x1D,0xE0,0x00,0x1E,0x00,0x00,0x1E,0x20,0x00,0x1E,0x40,0x00,0x1E,
+0x60,0x00,0x1E,0x80,0x00,0x1E,0xA0,0x00,0x1E,0xC0,0x00,0x1E,0xE0,0x00,0x1F,0x00,
+0x00,0x1F,0x20,0x00,0x1F,0x40,0x00,0x1F,0x60,0x00,0x1F,0x80,0x00,0x1F,0xA0,0x00,
+0x1F,0xC0,0x00,0x1F,0xE0,0x00,0xC0,0x60,0x00,0x01,0xC8,0x63,0x9E,0x34,0x84,0x69,
+0x80,0x01,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,0x90,0x00,
+0xFC,0x21,0xFF,0x60,0xEF,0xE1,0x00,0x80,0xFF,0xE1,0x00,0xA0,0x0F,0xE1,0x08,0xC3,
+0xE0,0x02,0x0F,0x0F,0xE1,0x00,0xC3,0xE0,0x04,0x0F,0x0F,0xE1,0x04,0xC3,0xE0,0x03,
+0x0F,0xEF,0xE1,0x00,0x84,0xC3,0xE0,0x05,0x0F,0xEF,0xE1,0x00,0x88,0xC3,0xE0,0x05,
+0x1F,0xEF,0xE1,0x00,0x8C,0xE4,0x01,0x37,0xA1,0x90,0x00,0x90,0x00,0x90,0x00,0x90,
+0x00,0x90,0x00,0x90,0x00,0x90,0x00,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x30,0x44,0x0B,
+0x17,0x01,0x98,0x60,0x56,0xF8,0x01,0x4F,0x18,0x79,0x22,0xE0,0x14,0x98,0x62,0x23,
+0x00,0x18,0x58,0x77,0x01,0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0C,0x81,0x04,0x0D,
+0x21,0x0C,0x5D,0x43,0x00,0xE7,0xFF,0xFF,0xA4,0x0C,0x81,0x06,0x5C,0x63,0x00,0x20,
+0x60,0x66,0x9B,0x00,0x21,0x40,0x30,0x21,0x44,0x24,0x5D,0x40,0x41,0x4B,0x01,0x01,
+0xD0,0x81,0x04,0x66,0xE4,0x00,0x01,0x17,0xE7,0xFF,0xFF,0x5E,0x5C,0x63,0x00,0x20,
+0x64,0x4E,0xD1,0x40,0x05,0xD2,0xD1,0x41,0x05,0xB2,0xD1,0x42,0x05,0x96,0xE4,0x00,
+0x00,0xE3,0xE7,0xFF,0xFF,0x2A,0x5C,0x63,0x00,0xD0,0x62,0x05,0x1E,0x9B,0x01,0x21,
+0x40,0x24,0x5D,0x40,0x21,0x4B,0x01,0x01,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,
+0xCB,0x57,0x23,0x78,0x0B,0x7A,0x01,0x47,0x79,0xDD,0x5F,0x7B,0x04,0x0F,0x7A,0x01,
+0xCB,0x57,0x23,0x6C,0x0B,0x7A,0x01,0xC7,0x7B,0x8F,0xFF,0x0F,0x7A,0x01,0xCB,0x57,
+0x3C,0xD4,0x0B,0x7A,0x01,0x47,0x79,0xDD,0x5F,0x7B,0x04,0x0F,0x7A,0x01,0xCB,0x57,
+0x3C,0xE0,0x0B,0x7A,0x01,0xC7,0x7B,0x7F,0xFF,0x0F,0x7A,0x01,0xCA,0xF7,0x3C,0xEC,
+0x0B,0x57,0x01,0x47,0x39,0xD5,0x5F,0x39,0x04,0x0F,0x37,0x01,0x23,0x01,0x00,0xC2,
+0xF4,0x00,0x01,0xCB,0x17,0x3D,0xE8,0x0B,0x38,0x01,0xFF,0x20,0x11,0x11,0x0F,0x38,
+0x01,0xCB,0x17,0x3D,0xEC,0x0B,0x38,0x01,0xFF,0x20,0x22,0x22,0x0F,0x38,0x01,0xCB,
+0x17,0x3D,0xF0,0x0B,0x38,0x01,0xFF,0x20,0x33,0x33,0x0F,0x38,0x01,0xCA,0xF7,0x78,
+0xC0,0xFF,0x00,0xAA,0x55,0x0F,0x17,0x01,0xE4,0x00,0x00,0x01,0x0D,0x41,0x0A,0x0D,
+0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x03,0xF0,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x03,0xE8,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x03,0xEC,0xC2,
+0xE0,0x10,0x01,0xEC,0xD7,0x04,0x04,0xC2,0xE0,0x10,0x01,0xEC,0xF7,0x03,0xFC,0xC2,
+0xE0,0x10,0x01,0x0F,0x01,0x02,0xED,0x17,0x04,0x00,0xC2,0xE0,0x10,0x01,0xEF,0x17,
+0x04,0x10,0xC2,0xE0,0x10,0x01,0x0F,0x01,0x06,0xEF,0x17,0x03,0xD4,0xC2,0xE0,0x10,
+0x01,0x0F,0x01,0x0A,0xEF,0x17,0x03,0xF4,0x85,0x29,0x5C,0x84,0x00,0xC2,0xE0,0x10,
+0x01,0x4C,0x84,0x10,0xFE,0xF7,0x04,0x08,0x8E,0xE4,0x0C,0x77,0x00,0x85,0x29,0x5C,
+0x63,0x00,0x9B,0x00,0x24,0x68,0x25,0x1F,0x03,0xFE,0x5F,0x18,0x00,0xC2,0xE0,0x10,
+0x01,0xF3,0x57,0x0B,0x7E,0x1E,0xE3,0x01,0x1F,0x9A,0xFF,0x5F,0x3C,0x00,0xD7,0x97,
+0x00,0x50,0x1F,0x23,0x02,0x5F,0x39,0x00,0xC2,0xEF,0xFF,0xE1,0xCA,0xF7,0xFF,0xFF,
+0xE4,0x00,0x00,0x2F,0x4F,0x78,0x10,0x9F,0x01,0x8F,0x64,0x5F,0x18,0x00,0x0F,0x7B,
+0x02,0x5E,0xFB,0x15,0x4A,0xF7,0xD8,0xD7,0x19,0xFF,0x69,0x4F,0x03,0x10,0xC3,0x20,
+0x10,0x01,0x8F,0x04,0xEF,0x39,0x03,0xF6,0x0F,0x18,0x02,0xD7,0x38,0x01,0x41,0xC3,
+0x20,0x10,0x01,0xEF,0x79,0x03,0xF2,0xC3,0x20,0x10,0x01,0xEF,0xB9,0x03,0xEA,0xC3,
+0x20,0x10,0x01,0xEF,0xD9,0x03,0xEE,0xC3,0x20,0x10,0x01,0xEF,0x39,0x04,0x06,0xE4,
+0x00,0x00,0x49,0xC3,0x20,0x10,0x01,0xEF,0x79,0x03,0xFE,0xC3,0x20,0x10,0x01,0xEF,
+0xB9,0x04,0x02,0xC3,0x20,0x10,0x01,0xEF,0xD9,0x04,0x12,0xC3,0x20,0x10,0x01,0xEF,
+0x39,0x03,0xD6,0x20,0x60,0xDE,0x0F,0x44,0x02,0x0F,0x84,0x06,0xCF,0x5A,0x00,0x32,
+0x40,0xE7,0xE3,0xD7,0x47,0x05,0xDC,0x42,0xF7,0x2D,0x40,0xA5,0xCB,0x43,0x77,0xDB,
+0x43,0x3B,0x2C,0xCC,0xC6,0x00,0x0A,0x9B,0x4A,0x8C,0xD9,0x98,0x61,0x40,0xC6,0xD0,
+0xD7,0x06,0x04,0xF4,0x98,0x60,0xE4,0x00,0x01,0x31,0x20,0x64,0x6A,0x0F,0x44,0x02,
+0x0F,0x64,0x06,0xCF,0x5A,0x00,0x32,0x40,0xE7,0xDB,0x98,0x60,0xD7,0x47,0x04,0x14,
+0xE4,0x00,0x00,0x55,0x1C,0xFA,0xFE,0xD4,0x67,0x01,0x9E,0x4C,0x63,0x10,0x9F,0x5F,
+0x4F,0x5A,0x10,0x8F,0x44,0x8C,0x83,0x0F,0x5A,0x02,0x0F,0x64,0x02,0xCF,0x5A,0x00,
+0x32,0x41,0x08,0xDB,0x98,0x60,0xD7,0x48,0x02,0xC4,0x42,0xF7,0x2D,0x40,0xA5,0xCB,
+0x43,0xB7,0xEB,0x43,0x3D,0x2C,0xE7,0xFF,0xFF,0x3B,0xD4,0x7C,0x01,0x3E,0x9F,0x5F,
+0x4C,0xE7,0x10,0x4F,0x5A,0x10,0x98,0x60,0x8F,0x44,0x8C,0x87,0x0F,0x5A,0x02,0x0F,
+0x84,0x02,0xCF,0x5A,0x00,0x32,0x41,0x08,0xE3,0xD7,0x48,0x01,0x2C,0xE7,0xFF,0xFE,
+0xD5,0x42,0xF7,0x2D,0xCC,0xC6,0x00,0x0A,0x43,0xD7,0xF3,0x40,0xA5,0xCB,0x9B,0x4A,
+0x43,0x3E,0x2C,0x8C,0xD9,0x40,0xC6,0xD0,0xD7,0x06,0xFB,0x60,0x98,0x61,0x85,0x29,
+0xC2,0xE0,0x10,0x01,0x9B,0x21,0xEA,0xF7,0x01,0x51,0x9E,0xFF,0x5E,0xF7,0x04,0x26,
+0xE4,0x43,0xC3,0x18,0x00,0x21,0xFF,0x18,0xB6,0xF8,0x8E,0xF8,0x13,0x37,0x00,0xC3,
+0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x0B,0x7A,0xFE,0xF7,0x09,0x6C,0xD0,
+0x60,0x05,0x16,0x13,0x58,0x04,0x13,0xD8,0x01,0x1F,0x7A,0xFF,0x9F,0xC1,0x43,0xDE,
+0xD3,0x4F,0x5A,0x08,0xCD,0x1B,0x00,0x03,0x5C,0x9A,0x00,0x4F,0x7B,0x08,0x9B,0x40,
+0x5C,0x7B,0x00,0xE4,0x00,0x00,0x73,0x43,0x9A,0xDC,0x4F,0xBC,0x08,0x8F,0xB7,0x08,
+0xBD,0x01,0x40,0xB9,0x2B,0x0C,0xBD,0x01,0x9F,0x81,0x8F,0x63,0x4F,0x9C,0x08,0x5F,
+0x7B,0x00,0x8F,0x97,0x0B,0xBC,0x01,0x43,0xB9,0xEB,0x0F,0xBC,0x01,0xE4,0x00,0x00,
+0x0D,0x9B,0x60,0xD5,0x1B,0xFE,0xA4,0x8F,0x44,0x5F,0x5A,0x00,0xD7,0xDA,0xFF,0xAC,
+0x0B,0x37,0x02,0x0B,0x57,0x00,0x8F,0x59,0xC3,0x20,0x10,0x01,0xFF,0x39,0x0A,0x1C,
+0x0F,0x59,0x00,0x13,0x58,0x04,0x1F,0xBA,0xFF,0x4F,0xBD,0x10,0x43,0xDD,0xCC,0x8F,
+0xB7,0x4F,0x9A,0x08,0x09,0x1D,0x00,0x1F,0x7C,0xFF,0x4F,0xBB,0x08,0x8F,0xB7,0x0B,
+0xBD,0x00,0x8F,0xA8,0x0F,0xBE,0x00,0x13,0x18,0x01,0x27,0x05,0xAF,0xE4,0x00,0x01,
+0x45,0x20,0x66,0xFE,0x13,0x58,0x04,0x13,0xD8,0x01,0x1F,0x7A,0xFF,0x9F,0xC1,0x43,
+0xDE,0xD3,0x4F,0x5A,0x08,0xCD,0x1B,0x00,0x03,0x5C,0x9A,0x00,0x4F,0x7B,0x08,0x9B,
+0x40,0x5C,0x7B,0x00,0xE4,0x00,0x00,0x73,0x43,0x9A,0xDC,0x4F,0xBC,0x08,0x8F,0xB7,
+0x08,0xBD,0x00,0x40,0xA5,0xC8,0x0C,0xBD,0x01,0x9F,0x81,0x8F,0x63,0x4F,0x9C,0x08,
+0x5F,0x7B,0x00,0x8F,0x97,0x0B,0xBC,0x00,0x43,0xBD,0xC8,0x0F,0xBC,0x01,0xE4,0x00,
+0x00,0x0D,0x9B,0x60,0xD5,0x1B,0xFE,0xA4,0x8F,0x44,0x5F,0x5A,0x00,0xD7,0xDA,0xFF,
+0xAC,0xE7,0xFF,0xFE,0xBF,0x4F,0x1A,0x10,0x9F,0x81,0x43,0x58,0xCC,0x43,0xB8,0xBC,
+0x4F,0x9C,0x08,0x0B,0xBD,0x00,0x8F,0x97,0x0B,0x9C,0x00,0x8F,0x9D,0x0F,0x9A,0x00,
+0x4F,0x7B,0x10,0x1F,0x58,0xFE,0x8F,0x3B,0x4F,0x5A,0x08,0x9F,0x1F,0x8F,0x57,0x4F,
+0x18,0x08,0x0B,0x5A,0x00,0x8E,0xF8,0x0A,0xF7,0x00,0x8E,0xFA,0x0E,0xF9,0x00,0x85,
+0x29,0x5C,0xE7,0x00,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x0B,0x7E,0x42,0xE7,0xBB,0x5E,
+0xF7,0x00,0x9B,0x00,0x8C,0xB7,0x8C,0xD7,0xC3,0x80,0x10,0x01,0xC3,0x40,0x10,0x01,
+0x5C,0xC6,0x00,0x5C,0xA5,0x00,0x8B,0x38,0x9A,0xE0,0xFF,0x9C,0x0A,0x1C,0xFF,0x5A,
+0x09,0x6C,0xE4,0x00,0x00,0x49,0x4F,0x65,0x10,0x43,0xBB,0xE4,0x0F,0xBD,0x02,0x9C,
+0xA1,0x8E,0xFD,0x5C,0xA5,0x00,0x8B,0xBB,0x8F,0x7A,0x8F,0xBA,0x0B,0x7B,0x00,0x0B,
+0xBD,0x02,0x8F,0x1B,0x8F,0x3D,0xD4,0xA6,0xFF,0x01,0x26,0xE0,0xE8,0x27,0x20,0xDC,
+0x27,0x00,0xD0,0xC3,0x40,0x10,0x01,0xFF,0x5A,0x04,0x08,0x4C,0xE7,0x10,0xCF,0x18,
+0xFF,0xF6,0x8C,0xFA,0x0F,0x47,0x02,0x43,0x3A,0xCB,0x9F,0x56,0x8F,0x19,0x43,0x58,
+0xD0,0xCF,0x5A,0x07,0xFF,0x43,0x5A,0xB8,0x0F,0x43,0x01,0x0E,0xE4,0x00,0x98,0x61,
+0xE4,0x00,0x00,0x0D,0x98,0x60,0x85,0x29,0x9A,0xE3,0x9B,0x01,0xE4,0x00,0x00,0x11,
+0x8F,0x17,0x9E,0xE2,0xD7,0x03,0xFF,0xE1,0x4C,0x77,0x09,0x9C,0x7F,0x85,0x29,0xFF,
+0x00,0x7F,0xFF,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x03,0xD8,0x0F,0x17,0x01,0x0F,0x17,
+0x03,0x0F,0x17,0x05,0x0F,0x17,0x07,0x0F,0x17,0x09,0x0F,0x17,0x0B,0x85,0x29,0xC3,
+0x00,0x10,0x01,0xFE,0xF8,0x03,0xD8,0xC3,0x00,0x10,0x01,0x0B,0x37,0x08,0xFF,0x18,
+0x0B,0xF0,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0x41,0x0B,0x37,0x05,0x0F,0x37,0x09,0x0B,
+0x37,0x07,0xE4,0x00,0x00,0x1B,0x0B,0x38,0x17,0x0F,0x37,0x09,0x0B,0x38,0x19,0x0F,
+0x37,0x0B,0x0B,0x37,0x04,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0x41,0x0B,0x37,0x01,0x0F,
+0x37,0x05,0x0B,0x37,0x03,0xE4,0x00,0x00,0x1B,0x0B,0x38,0x17,0x0F,0x37,0x05,0x0B,
+0x38,0x19,0x0F,0x37,0x07,0x0B,0x38,0x17,0x0B,0x18,0x19,0x0F,0x37,0x01,0x0F,0x17,
+0x03,0x85,0x29,0x1C,0x21,0xD8,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x24,0x0D,0x41,0x20,
+0x0D,0x61,0x1C,0xFD,0x57,0x03,0xD8,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x0D,0xC1,0x10,
+0x09,0xAA,0x07,0x0B,0x0A,0x03,0x43,0x18,0x6D,0x5F,0x18,0x06,0x0F,0x01,0x0B,0x43,
+0x18,0xC3,0xE9,0x97,0x03,0xD9,0x09,0xCA,0x05,0x41,0x8C,0x75,0x5D,0x8C,0x06,0x40,
+0x6C,0x63,0x8C,0x78,0xE7,0xFF,0xFE,0x48,0x0A,0xEA,0x09,0x41,0xCE,0xBD,0x0A,0xEA,
+0x0B,0x42,0xED,0xBD,0x5E,0xF7,0x06,0x0E,0xE1,0x0F,0x42,0xF7,0xBB,0x5D,0x63,0x06,
+0x5D,0x4E,0x06,0x40,0x6A,0x53,0x8C,0x77,0xE7,0xFF,0xFE,0x00,0x5E,0xE3,0x06,0x98,
+0x61,0x21,0x60,0xAC,0x22,0xE0,0xA0,0x43,0x0B,0xB8,0xD3,0x05,0x01,0x14,0x41,0x4C,
+0x53,0x0B,0x01,0x0E,0x09,0x81,0x0A,0x41,0x6B,0xBB,0x43,0x0C,0xC3,0x8D,0x58,0xCD,
+0x4A,0x00,0x64,0x42,0xEA,0x58,0x5E,0xE8,0xB1,0x48,0x61,0x01,0x0D,0xC1,0x12,0x0D,
+0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,0x1C,0x21,
+0x28,0x85,0x29,0x1C,0x21,0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0x0D,0x61,0x0C,
+0x0D,0x81,0x08,0x0D,0xC1,0x00,0xF1,0x97,0x08,0xD2,0xC1,0x40,0x10,0x01,0x1D,0x6C,
+0xFF,0x0D,0x21,0x14,0x0D,0xA1,0x04,0x5D,0xC3,0x00,0x5D,0x6B,0x00,0xFD,0x4A,0x0B,
+0xF0,0x4E,0xEE,0x5D,0x56,0xF7,0x01,0x22,0xE0,0xD4,0x8A,0xEB,0xE4,0x00,0x00,0x43,
+0xCC,0x77,0x00,0x30,0x1D,0xB7,0x01,0x8C,0x6A,0xCC,0x8D,0x00,0x30,0x9C,0x64,0x8C,
+0x8A,0x50,0xA0,0x30,0x9C,0x84,0xE4,0x00,0x50,0x46,0x5E,0xED,0x00,0xD5,0x97,0xFF,
+0x1D,0x12,0xEA,0x00,0x22,0xE0,0x20,0x9E,0xFF,0x1A,0xEA,0x00,0x21,0x60,0x30,0x9D,
+0x7F,0x5D,0x6B,0x00,0xE7,0xFF,0xFF,0x7B,0x12,0xEA,0x00,0x22,0xE0,0x52,0xC2,0xE0,
+0x10,0x01,0x9B,0x37,0xEB,0x17,0x08,0xE7,0x47,0x18,0xCC,0xEF,0x17,0x08,0xE7,0x0D,
+0xC1,0x02,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,
+0x16,0x1C,0x21,0x18,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xEB,0x37,
+0x01,0x50,0xFF,0x18,0x04,0x1C,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x7A,0x23,0x24,
+0xA6,0x13,0x37,0x04,0x9A,0xE0,0x9F,0x21,0xE4,0x00,0x00,0x2F,0x4F,0x57,0x08,0x1F,
+0x77,0xFF,0x8F,0x58,0x4F,0x7B,0x10,0x9E,0xE1,0x0F,0x7A,0x01,0x5E,0xF7,0x00,0xD6,
+0xF9,0xFF,0x68,0xE4,0x00,0x00,0x9D,0x23,0x28,0x38,0x13,0x37,0x04,0x9A,0xE0,0x9F,
+0x21,0xE4,0x00,0x00,0x79,0x13,0x37,0x04,0x9A,0xE0,0x9F,0x21,0xE4,0x00,0x00,0x2F,
+0x4F,0x57,0x08,0xCF,0x77,0x00,0x06,0x8F,0x58,0x9F,0x79,0x9E,0xE1,0x0F,0x7A,0x01,
+0x5E,0xF7,0x00,0xD6,0xF9,0xFF,0x68,0xE4,0x00,0x00,0x35,0x4F,0x57,0x08,0x4F,0x77,
+0x08,0x8F,0x58,0x9F,0x7F,0x9E,0xE1,0x0F,0x7A,0x01,0x5E,0xF7,0x00,0xD6,0xF9,0xFF,
+0x70,0x85,0x29,0x9C,0x30,0x5C,0xC6,0x00,0x0D,0x61,0x08,0x0D,0x81,0x04,0x0D,0xA1,
+0x00,0x0D,0x41,0x0C,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,0x7A,0x13,0xD8,0x04,0x40,
+0xC6,0xF3,0x5E,0xE6,0x00,0x5F,0xA3,0x06,0x8C,0x97,0x8C,0xB7,0x5F,0x7D,0x04,0x0A,
+0xF8,0x0B,0x11,0x58,0x0C,0x40,0xFB,0xBC,0x41,0x9B,0xBD,0xC1,0xA0,0x10,0x01,0xC3,
+0x00,0x10,0x01,0x5C,0xA5,0x00,0x4D,0x77,0x08,0x5C,0xE7,0x04,0x5D,0x8C,0x04,0x5C,
+0x84,0x00,0xFD,0xAD,0x04,0x1C,0xFF,0x18,0x09,0x6C,0x53,0x20,0x64,0xE4,0x00,0x01,
+0x21,0x43,0x44,0x35,0x9F,0x41,0x4F,0x5A,0x08,0x8F,0x4D,0x09,0x1A,0x00,0x41,0x08,
+0xBB,0x41,0x08,0x50,0x5F,0x88,0x04,0x43,0x5C,0xDD,0x5F,0x5A,0x06,0x4C,0x7A,0xFA,
+0x47,0x43,0xD6,0x43,0x5A,0x1D,0xD6,0xFA,0x03,0x14,0xD5,0x7A,0x02,0x70,0x5D,0x08,
+0x06,0xD5,0x1D,0x00,0x58,0x43,0x9C,0x3D,0xE4,0x00,0x00,0x0F,0x43,0x8C,0xE5,0x5F,
+0x9C,0x06,0x4F,0x44,0x10,0x43,0x97,0xE5,0x8F,0x58,0xCF,0x9C,0x00,0x64,0x09,0x1A,
+0x00,0x43,0x9C,0xB8,0xC7,0x9C,0xFF,0xFF,0x41,0x1C,0x43,0x41,0x08,0xC8,0x0D,0x1A,
+0x01,0x4F,0x44,0x10,0x9F,0x42,0x8F,0x58,0x09,0x1A,0x00,0x43,0x9C,0x43,0x43,0x9C,
+0xC8,0x0F,0x9A,0x01,0xE4,0x00,0x00,0x29,0x4F,0x44,0x10,0x8F,0x58,0x0C,0x1A,0x01,
+0x4F,0x44,0x10,0x8F,0x58,0x0C,0x1A,0x03,0x9C,0x81,0x5C,0x84,0x00,0xD4,0x85,0xFB,
+0xA0,0xC2,0xE0,0x10,0x01,0x0D,0xA1,0x02,0xF0,0x77,0x0B,0x7B,0x0D,0x81,0x06,0x0D,
+0x61,0x0A,0x0D,0x41,0x0E,0x40,0x7E,0x1B,0x1C,0x21,0x10,0xE4,0x00,0xA5,0x63,0x5C,
+0x63,0x00,0x5C,0x84,0x00,0xC2,0xE0,0x10,0x01,0x43,0x64,0x1D,0xF2,0xF7,0x0B,0x7E,
+0x9F,0x61,0x40,0xA5,0xBB,0x5F,0x7B,0x00,0x5C,0xA5,0x00,0x20,0xE4,0x3E,0xC2,0xE0,
+0x10,0x01,0xFE,0xF7,0x0D,0x30,0xE4,0x00,0x00,0x19,0xC2,0xE0,0x10,0x01,0xFE,0xF7,
+0x09,0x6C,0x43,0x23,0x2C,0x9B,0x00,0x4F,0x39,0x10,0x9F,0x22,0x8F,0x37,0xC2,0xEF,
+0xFF,0xE1,0xCA,0xF7,0xFF,0xFF,0xE4,0x00,0x00,0x3D,0x0B,0x99,0xFE,0x0B,0x59,0x00,
+0x9F,0x24,0x8F,0x5C,0x4F,0x98,0x10,0x5E,0xFA,0x15,0x8F,0x86,0x4A,0xF7,0xD0,0x0F,
+0x5C,0x00,0x9F,0x01,0x5F,0x58,0x00,0xD7,0x7A,0xFF,0x1D,0x9B,0x00,0xE4,0x00,0x00,
+0x29,0x0F,0x26,0x02,0x9F,0x01,0x43,0x39,0xBD,0x5F,0x18,0x00,0x0F,0x26,0x00,0x9C,
+0xC4,0xD7,0x78,0xFF,0x85,0x85,0x29,0x1C,0x21,0x88,0x0D,0x41,0x70,0x0D,0x61,0x6C,
+0x5D,0x44,0x00,0x0D,0x81,0x68,0x5C,0x85,0x00,0x0D,0xA1,0x64,0x88,0xA6,0x41,0xA4,
+0x55,0x0D,0x21,0x74,0x89,0x83,0x88,0xC1,0x88,0x6A,0xE7,0xFF,0xFE,0xAA,0xC2,0xE0,
+0x10,0x01,0x9D,0xA1,0xEB,0x57,0x01,0x50,0x9B,0x20,0x5D,0xAD,0x00,0x8B,0x19,0x9A,
+0xE0,0x89,0x61,0xE4,0x00,0x00,0x5B,0x4F,0x79,0x10,0x43,0x99,0x54,0x8F,0x6B,0x0F,
+0x7B,0x02,0x8E,0xFB,0x23,0x44,0x54,0x23,0x48,0x36,0xCF,0x9C,0x00,0x06,0x9F,0x9F,
+0xE4,0x00,0x00,0x13,0x4F,0x9C,0x08,0x9F,0x81,0x43,0x7C,0xDB,0x9F,0x21,0x8F,0x1B,
+0x5F,0x79,0x00,0xD5,0xBB,0xFE,0xA5,0x26,0xE1,0x34,0xC3,0x20,0x10,0x01,0xEB,0x39,
+0x0B,0x85,0x43,0x18,0xCB,0x23,0x44,0x32,0x4F,0x37,0x0A,0x8F,0x19,0xE4,0x00,0x00,
+0x35,0x23,0x48,0x46,0xCF,0x37,0x00,0x03,0xCE,0xF7,0x00,0x06,0x8F,0x19,0xE4,0x00,
+0x00,0x13,0x8F,0x17,0x4E,0xF7,0x08,0x42,0xF8,0xB8,0xC2,0xE0,0xFF,0xE8,0xCB,0x00,
+0x07,0xFF,0x98,0x61,0x4A,0xF7,0xC0,0x5E,0xFF,0xF9,0x4A,0xF7,0x00,0x0E,0xEC,0x01,
+0xE4,0x00,0x00,0x0D,0x98,0x60,0x0D,0xA1,0x66,0x0D,0x81,0x6A,0x0D,0x61,0x6E,0x0D,
+0x41,0x72,0x0D,0x21,0x76,0x1C,0x21,0x78,0x85,0x29,0xFC,0x21,0xFF,0x78,0xED,0x41,
+0x00,0x80,0x0D,0x81,0x78,0x0D,0xA1,0x74,0x0D,0xC1,0x70,0x0D,0xE1,0x6C,0x0E,0x01,
+0x68,0x0E,0xC1,0x64,0xED,0x21,0x00,0x84,0x0D,0x61,0x7C,0xC1,0x40,0x10,0x01,0xFD,
+0x4A,0x0B,0x7A,0x11,0x6A,0x04,0x4E,0xEB,0x08,0x9E,0xE8,0xC6,0xF7,0x03,0xF8,0xFE,
+0xC1,0x00,0x88,0x5D,0xC4,0x00,0x5D,0xA5,0x00,0x8A,0x03,0x5C,0xA6,0x00,0x89,0xE1,
+0x41,0x65,0x5B,0x40,0x21,0xBD,0x88,0x6E,0x88,0x8D,0xFC,0xD6,0xFF,0x78,0xE7,0xFF,
+0xFC,0xA2,0xC3,0x40,0x10,0x01,0x89,0x81,0x5D,0x6B,0x00,0x13,0x2A,0x04,0x9A,0xE0,
+0xFF,0x5A,0x04,0x1C,0xE4,0x00,0x00,0x29,0x4F,0x17,0x08,0x9E,0xE1,0x43,0x6C,0xC4,
+0x8F,0x1A,0x0B,0x18,0x03,0x0F,0x1B,0x01,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x6D,0x43,
+0x4B,0x74,0x8D,0xAB,0x5F,0x5A,0x00,0x5D,0xAD,0x00,0x9A,0xE0,0x1F,0x2D,0x01,0x43,
+0x39,0xD5,0x5F,0x39,0x00,0xE4,0x00,0x00,0x33,0x4F,0x77,0x10,0xFF,0x96,0xFF,0x78,
+0x8F,0x7C,0x0F,0x7B,0x02,0x27,0x60,0x4A,0xD5,0xB8,0x03,0x19,0x9E,0xE1,0x5F,0x17,
+0x00,0xD7,0x38,0xFF,0x45,0x8B,0x1A,0x1F,0x36,0xD8,0x1F,0x76,0xD8,0x4E,0xF8,0x10,
+0x8E,0xF9,0x0F,0x37,0xA2,0x1E,0xF8,0x01,0x43,0x39,0xCB,0x4E,0xF7,0x10,0x8E,0xFB,
+0x0E,0xF7,0xA2,0x42,0xF7,0xBB,0x5F,0x37,0x15,0x4B,0x77,0xC8,0x27,0x60,0xBC,0x8F,
+0x1A,0x0B,0x6A,0x0B,0x41,0x78,0x5D,0x13,0x4A,0x0C,0x4D,0x6B,0x08,0x98,0x61,0x8D,
+0x8B,0x0B,0x0C,0x00,0x43,0x18,0xDB,0x43,0x77,0xDB,0x43,0x18,0xD0,0x8E,0xF9,0x42,
+0xFB,0xB8,0x8E,0xF8,0x0E,0xF0,0x01,0xE4,0x00,0x00,0x0D,0x98,0x60,0x88,0x2F,0x0E,
+0xC1,0x66,0x0E,0x01,0x6A,0x0D,0xE1,0x6E,0x0D,0xC1,0x72,0x0D,0xA1,0x76,0x0D,0x81,
+0x7A,0x0D,0x61,0x7E,0xED,0x41,0x00,0x82,0xED,0x21,0x00,0x86,0xFC,0x21,0x00,0x88,
+0x85,0x29,0x1C,0x21,0xB8,0x0D,0x41,0x40,0xC1,0x40,0x10,0x01,0x0D,0x61,0x3C,0x0D,
+0x81,0x38,0x0D,0xC1,0x30,0x0E,0x41,0x20,0x0E,0x61,0x1C,0x0E,0x81,0x18,0x0E,0xA1,
+0x14,0x0E,0xC1,0x10,0x0D,0x21,0x44,0x0D,0xA1,0x34,0x0D,0xE1,0x2C,0x0E,0x01,0x28,
+0x0E,0x21,0x24,0x5E,0x63,0x00,0x5E,0x44,0x00,0xC1,0xC0,0x10,0x01,0xF0,0x8A,0x0B,
+0x7A,0xFD,0xCE,0x0C,0xBC,0x98,0xA0,0x88,0x6E,0x99,0x80,0x8A,0xCA,0xE4,0x00,0xA0,
+0x0A,0xC1,0x40,0x10,0x01,0x89,0x6C,0xC2,0xA0,0x10,0x01,0x9A,0x81,0xFD,0x4A,0x0B,
+0xF0,0xE4,0x00,0x01,0x19,0xCC,0x6B,0x00,0x30,0xEA,0xF5,0x08,0xA3,0x41,0xA3,0x54,
+0x56,0xF7,0x02,0x12,0x2D,0x04,0x12,0x0D,0x05,0x11,0xED,0x07,0x22,0xE1,0x0C,0x1C,
+0x61,0x04,0x88,0x91,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFA,0xDA,0x20,0x61,
+0x14,0x1C,0x61,0x06,0x88,0x91,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFC,0x5C,
+0x20,0x60,0xCC,0x0B,0x01,0x04,0xCF,0x18,0x00,0x07,0x0A,0xE1,0x06,0xCE,0xF7,0x00,
+0x03,0x8E,0xF8,0x9B,0x0A,0x42,0xF7,0xC0,0x0E,0xED,0x17,0xE4,0x00,0x00,0x43,0x8C,
+0x6A,0x88,0x91,0x1C,0x63,0x16,0x88,0xB0,0x88,0xCF,0x98,0xE0,0xE7,0xFF,0xFA,0x56,
+0x20,0x60,0x32,0x4E,0xF4,0x5C,0x45,0x8C,0xBD,0x5D,0x8C,0x00,0x88,0x6E,0xF0,0x96,
+0x0B,0x7A,0x98,0xA1,0x9D,0x61,0xE4,0x00,0x9E,0xD8,0x5D,0x6B,0x00,0x12,0xEA,0x00,
+0xD6,0xEB,0xFB,0xAD,0x88,0x6C,0xE7,0xFF,0xF4,0x7A,0x12,0xEA,0x00,0x22,0xE0,0x6C,
+0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x8F,0x56,0xF7,0x40,0x22,0xE0,0x34,0xC2,0xE0,
+0x10,0x01,0xEE,0xF7,0x03,0xE6,0x86,0xE8,0xC2,0xE0,0x10,0x01,0x88,0x6E,0xF0,0x97,
+0x0B,0x7A,0x98,0xA1,0xE4,0x00,0x9E,0x5C,0xC2,0xE0,0x10,0x01,0x99,0x80,0xEA,0xF7,
+0x08,0x8F,0x89,0x6C,0x56,0xF7,0x80,0x99,0xA1,0x22,0xE0,0xFC,0xC2,0xE0,0x10,0x01,
+0xEE,0xF7,0x03,0xFA,0x86,0xE8,0xE4,0x00,0x00,0x7F,0xCE,0xEB,0x00,0x30,0x40,0x6A,
+0xBC,0x8A,0xE3,0x88,0x83,0x10,0xB7,0x04,0x1C,0x63,0x18,0x9C,0x8C,0x10,0xD7,0x05,
+0x10,0xF7,0x07,0xE7,0xFF,0xEF,0xDC,0x20,0x60,0x32,0x4E,0xED,0x5C,0x45,0x8C,0xBD,
+0x5D,0x8C,0x00,0x9D,0x61,0x5D,0x6B,0x00,0x12,0xEA,0x00,0xD6,0xEB,0xFE,0x7D,0x88,
+0x6C,0xE7,0xFF,0xF3,0x64,0x22,0x61,0x5C,0x22,0x40,0xFE,0xE4,0x00,0x00,0xA3,0xCD,
+0x6C,0x00,0x30,0x8D,0x6A,0x0A,0xEB,0x16,0x0E,0xE1,0x08,0x0A,0xEB,0x18,0x1C,0x61,
+0x08,0x0E,0xE1,0x0C,0x1C,0x81,0x0C,0xEE,0xED,0x03,0xD2,0x0C,0xAB,0x0E,0x88,0xCE,
+0x86,0xE8,0x0E,0xE1,0x0A,0x9D,0x81,0x0E,0xEB,0x17,0x5D,0x8C,0x00,0x0E,0xE1,0x0E,
+0x0E,0xEB,0x19,0xE4,0x00,0x00,0x25,0xC1,0xC0,0x10,0x01,0x99,0x80,0xC1,0xA0,0x10,
+0x01,0xFD,0xCE,0x01,0x3C,0x12,0xEA,0x00,0xD6,0xEC,0xFD,0xBD,0xC2,0xE0,0x10,0x01,
+0x13,0x6A,0x00,0xEB,0x97,0x08,0xA3,0x9B,0x20,0xC2,0xE0,0x10,0x01,0x57,0x9C,0x01,
+0xFE,0xF7,0x0C,0x08,0xCB,0xA0,0x07,0xFF,0xE4,0x00,0x00,0x89,0x0B,0x57,0x01,0x13,
+0xD7,0xEF,0x5F,0x1A,0x06,0x47,0x18,0xC7,0x4F,0x18,0xFA,0x47,0x1A,0xC4,0x5F,0x58,
+0x06,0xC3,0x40,0xFF,0xE8,0x20,0x00,0x1D,0xFF,0x00,0x07,0xFF,0x0F,0x17,0x01,0x5F,
+0x58,0x06,0x23,0x80,0x48,0xCF,0x1A,0x03,0xFF,0x4F,0x5E,0x50,0x43,0x18,0xE8,0x8F,
+0x1A,0x0F,0x17,0x01,0x9F,0x21,0x1E,0xF7,0x30,0x5F,0x39,0x00,0xD7,0x3B,0xFE,0x06,
+0x0E,0xC1,0x12,0x0E,0xA1,0x16,0x0E,0x81,0x1A,0x0E,0x61,0x1E,0x0E,0x41,0x22,0x0E,
+0x21,0x26,0x0E,0x01,0x2A,0x0D,0xE1,0x2E,0x0D,0xC1,0x32,0x0D,0xA1,0x36,0x0D,0x81,
+0x3A,0x0D,0x61,0x3E,0x0D,0x41,0x42,0x0D,0x21,0x46,0x1C,0x21,0x48,0x85,0x29,0x1C,
+0x21,0xC8,0xC2,0xE0,0x10,0x01,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0E,0x61,0x0C,0x0E,
+0xC1,0x00,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,0x61,0x2C,0x0D,0xC1,0x20,0x0D,0xE1,
+0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,0x81,0x08,0x0E,0xA1,0x04,
+0xC1,0x80,0x10,0x01,0xF3,0x57,0x08,0xD2,0xFD,0x8C,0x0B,0xF0,0xC2,0xE0,0x10,0x01,
+0x1E,0xC1,0x38,0x89,0xA3,0x8A,0x61,0x18,0x0C,0x00,0xFE,0xF7,0x0B,0xF8,0x9B,0x00,
+0x9B,0x3F,0xE4,0x00,0x00,0x2B,0x0C,0x17,0x00,0x1B,0x37,0xFE,0x1B,0x37,0xFF,0x9F,
+0x01,0x1E,0xF7,0x30,0x5F,0x18,0x00,0xD7,0x1A,0xFF,0x7E,0xC1,0xE0,0x10,0x01,0xFD,
+0xEF,0x0B,0x7A,0x12,0xEF,0x04,0x10,0x6F,0x01,0x40,0x63,0xBB,0xE4,0x00,0x9A,0x60,
+0x13,0x2F,0x04,0x4E,0xF9,0x10,0x9E,0xEA,0xC6,0xF7,0x07,0xF8,0xC3,0x60,0x10,0x01,
+0x40,0x21,0xBD,0x0A,0x0D,0x18,0x89,0x61,0x9B,0x00,0xCA,0xE0,0x20,0x00,0xFF,0x7B,
+0x0A,0x1C,0xE4,0x00,0x00,0x3B,0x4F,0x58,0x10,0x9F,0x01,0x43,0x9A,0xDC,0x8F,0x4B,
+0x0E,0x3C,0x02,0x5E,0x37,0x15,0x0E,0x3A,0x00,0x4A,0xF1,0xB8,0x5E,0xF7,0x06,0x5F,
+0x58,0x00,0xD7,0x3A,0xFF,0x25,0x46,0x37,0xBF,0x99,0x40,0x4E,0x31,0xFA,0x89,0xCA,
+0x46,0x31,0xBC,0xC2,0x80,0x10,0x01,0x9A,0x42,0x8A,0xAC,0xE4,0x00,0x04,0x4B,0x0B,
+0x0D,0x18,0x21,0x41,0x32,0x0E,0xEB,0x02,0xD7,0x17,0x0E,0xEC,0x0F,0x0B,0x06,0xD6,
+0xF8,0x00,0x7C,0xD6,0xF8,0x0E,0x96,0x0F,0x0B,0x0A,0xD6,0xF8,0x0E,0x58,0x98,0x60,
+0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,0xFF,0xE5,0xE6,
+0xD0,0x60,0x0D,0xAA,0x12,0xEC,0x00,0x99,0x41,0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,
+0xEC,0x18,0x17,0x04,0x18,0x17,0x06,0x1A,0x57,0x05,0xE4,0x00,0x03,0x4F,0x21,0x45,
+0x56,0x0E,0xEB,0x06,0xD7,0x17,0x0C,0x8C,0x0F,0x0B,0x02,0xD7,0x17,0x0C,0x54,0x0F,
+0x0B,0x0A,0xD6,0xF8,0x00,0x7C,0xD6,0xF8,0x0B,0xFE,0x0F,0x0B,0x0E,0xD6,0xF8,0x0B,
+0xC0,0x98,0x61,0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,
+0xFF,0xE5,0x40,0xD0,0x60,0x0B,0x12,0x12,0xEC,0x00,0x9B,0x01,0x8E,0xEE,0x99,0x42,
+0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x18,0x17,0x04,0x1B,0x17,0x06,0x1A,0x57,0x05,0xE4,
+0x00,0x02,0xA5,0x25,0x45,0xC5,0x1F,0x37,0xFE,0xD7,0x2A,0x03,0x58,0x4E,0xEA,0x10,
+0x8E,0xEB,0x0E,0xF7,0x02,0xD7,0x17,0x09,0x84,0x1F,0x0A,0xFF,0x4F,0x18,0x10,0x8F,
+0x0B,0x0F,0x18,0x02,0xD6,0xF8,0x01,0x34,0xD6,0xF8,0x08,0xEE,0x1F,0x2A,0xFE,0x4F,
+0x39,0x10,0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x08,0x70,0x1F,0x4A,0x01,0x4F,0x5A,
+0x10,0x8F,0x4B,0x0F,0x5A,0x02,0xD7,0x59,0x07,0xF8,0x1F,0x2A,0x01,0x4F,0x39,0x10,
+0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x03,0x2C,0xD6,0xF9,0x07,0x66,0x1F,0x2A,0x02,
+0x4F,0x39,0x10,0x8F,0x2B,0x0F,0x39,0x02,0xD6,0xF9,0x06,0xE8,0xD7,0x19,0x06,0xC8,
+0xE4,0x00,0x00,0x95,0x4F,0x0A,0x10,0x1F,0x57,0xFE,0x0B,0x2D,0x18,0x8F,0x0B,0xD5,
+0x5A,0x03,0x6E,0x0F,0x18,0x02,0xD7,0x38,0x05,0xFC,0x1F,0x37,0xFF,0x4F,0x39,0x10,
+0x8F,0x2B,0x0F,0x39,0x02,0xD7,0x38,0x05,0x84,0x1F,0x37,0xFD,0x4F,0x39,0x10,0x8F,
+0x2B,0x0F,0x39,0x02,0xD7,0x19,0x00,0xB4,0xD7,0x19,0x04,0xEE,0x9E,0xFC,0x4E,0xF7,
+0x10,0x8E,0xEB,0x0E,0xF7,0x02,0xD7,0x17,0x04,0x78,0x88,0x6A,0x88,0x8B,0x88,0xB1,
+0x88,0xD0,0x08,0xED,0x1C,0x09,0x0D,0x1E,0xE7,0xFF,0xE3,0x6E,0x20,0x61,0xE4,0x12,
+0xEC,0x00,0x1F,0x0A,0xFF,0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x19,0x57,0x06,
+0x1B,0x17,0x04,0x9D,0x41,0x5D,0x4A,0x00,0xE4,0x00,0x00,0xAD,0x0E,0xF8,0x02,0xD7,
+0x37,0x02,0xB4,0x1F,0x0A,0xFF,0x4F,0x18,0x10,0x8F,0x0B,0x0F,0x18,0x02,0xD6,0xF8,
+0x00,0xBC,0xD6,0xF8,0x02,0x1E,0x1F,0x0A,0xFE,0x4F,0x18,0x10,0x8F,0x0B,0x0F,0x18,
+0x02,0xD6,0xF8,0x01,0xA0,0x88,0x6A,0x88,0x8B,0x88,0xB1,0x88,0xD0,0x08,0xED,0x1C,
+0x09,0x0D,0x1E,0xE7,0xFF,0xE2,0xB8,0x20,0x60,0x78,0x12,0xEC,0x00,0x1F,0x0A,0xFE,
+0x8E,0xEE,0xCE,0xF7,0x00,0x30,0x8E,0xEC,0x1B,0x17,0x04,0x19,0x57,0x06,0x19,0x57,
+0x05,0xE4,0x00,0x00,0x21,0x9D,0x41,0x5D,0x4A,0x00,0x12,0xEF,0x04,0xD6,0xEA,0xF0,
+0x95,0x12,0xEF,0x04,0xD6,0xEA,0x01,0x61,0x12,0xEC,0x00,0x8E,0xEE,0xCE,0xF7,0x00,
+0x30,0x43,0x17,0x64,0x13,0x18,0x05,0xD5,0x58,0x00,0x55,0x1D,0x58,0x01,0x5D,0x4A,
+0x00,0x8E,0xF5,0x9B,0x01,0x9D,0xC1,0x18,0x17,0x07,0x0F,0x17,0x08,0x5D,0xCE,0x00,
+0x12,0xEF,0x04,0xD6,0xEA,0x00,0x61,0xF2,0xF4,0x08,0xD2,0xD6,0xEE,0xFD,0xFC,0x12,
+0xEC,0x00,0x8D,0xD7,0x19,0xCC,0x00,0x88,0x33,0x0E,0xC1,0x02,0x0E,0xA1,0x06,0x0E,
+0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,
+0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,
+0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,
+0xF8,0x77,0x04,0x64,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x0B,0x85,0xEE,0xF8,0x04,0x5D,
+0xC3,0x00,0x10,0x01,0xCF,0x37,0x00,0x05,0x4E,0xF7,0x10,0xEF,0x38,0x04,0x5B,0xC3,
+0x00,0x10,0x01,0xEE,0xF8,0x04,0x59,0x85,0x29,0x5C,0x63,0x06,0x20,0x84,0x5A,0x0B,
+0x05,0x00,0x0B,0x25,0x02,0x0B,0x45,0x04,0x0B,0x85,0x06,0x0B,0x65,0x08,0xE4,0x00,
+0x00,0x27,0x0B,0x05,0x0A,0x0B,0x25,0x0C,0x0B,0x45,0x0E,0x0B,0x85,0x10,0x0B,0x65,
+0x12,0xC2,0xE0,0x10,0x01,0x9B,0xA2,0xEA,0xF7,0x0B,0x85,0x43,0x9C,0xBB,0x43,0x9C,
+0xE8,0x43,0x80,0xE5,0xFF,0x9C,0x03,0xFF,0xD4,0x7C,0x00,0xC8,0x43,0x9B,0xBB,0x43,
+0xBC,0xE8,0xFF,0xBD,0x03,0xFF,0xD7,0xA3,0x01,0x08,0x5C,0x78,0x04,0xE4,0x00,0x00,
+0xE3,0x24,0x7C,0x58,0x43,0x03,0xC3,0x40,0x7C,0x1D,0x43,0x43,0xD3,0x40,0x78,0xD4,
+0x40,0x63,0xE0,0xE4,0x00,0x00,0xB1,0x9B,0x82,0x43,0x7B,0xBB,0x43,0x7B,0xE0,0xFF,
+0x9B,0x03,0xFF,0xD7,0x83,0x01,0x7C,0xC0,0x60,0xFF,0xEC,0x20,0x00,0xCD,0x43,0x60,
+0xDD,0xFE,0xFB,0xFC,0x01,0x8E,0xE3,0x43,0x37,0xCB,0xCA,0xE0,0x07,0xFF,0x40,0x77,
+0x1D,0xFF,0x7B,0x04,0x00,0x43,0x03,0xC3,0x40,0x79,0xC4,0x40,0x63,0xD8,0xE4,0x00,
+0x00,0x3B,0x24,0x7C,0x32,0x8C,0x77,0x40,0x63,0xD3,0xE4,0x00,0x00,0x1D,0xFF,0x17,
+0x07,0xFF,0x40,0x78,0x1D,0x40,0x63,0xCB,0x40,0x63,0xB8,0x5C,0x63,0x04,0x85,0x29,
+0x9C,0x38,0x0C,0x01,0x04,0xC3,0x00,0x10,0x01,0xC3,0x40,0x10,0x01,0xFF,0x18,0x0B,
+0x7A,0xFF,0x9A,0x04,0x1C,0x0B,0x38,0x0B,0x0B,0xBC,0x00,0x13,0x18,0x0C,0x5F,0x79,
+0x06,0x5E,0xE3,0x06,0x43,0x7D,0xDB,0x43,0x7B,0xC0,0xD6,0xFB,0x00,0x4C,0x9B,0x41,
+0x0F,0x41,0x04,0x0F,0x41,0x06,0x98,0x7F,0x23,0x40,0x5E,0x0B,0x5C,0x02,0x43,0x5A,
+0xCB,0x43,0x5A,0xC0,0xD7,0x57,0x00,0x58,0x9B,0x41,0x98,0x60,0x0F,0x41,0x04,0x0F,
+0x41,0x06,0x23,0x41,0x1E,0xC3,0x40,0x10,0x01,0xC3,0x60,0x10,0x01,0xF3,0xBA,0x0B,
+0x7E,0xFF,0x7B,0x04,0x20,0x9B,0x41,0xE4,0x00,0x00,0x57,0x0B,0xDB,0xFE,0x43,0xDE,
+0xCB,0x43,0xDE,0xC0,0xD7,0xD7,0x00,0xD4,0x0B,0xDB,0x00,0x43,0xDE,0xCB,0x43,0xDE,
+0xC0,0xD7,0xD7,0x00,0x68,0x9B,0x41,0x0F,0x41,0x04,0xE4,0x00,0x00,0x1F,0x9F,0x41,
+0x9F,0x62,0x5C,0x7A,0x02,0xD7,0x5D,0xFE,0xB0,0x0F,0x41,0x06,0x23,0x40,0x9E,0xC3,
+0x40,0x10,0x01,0xF3,0x5A,0x0B,0x7E,0x9F,0x41,0x4F,0x7A,0x08,0x8F,0x9B,0x0B,0x7C,
+0x00,0x43,0x3B,0xCB,0x43,0x19,0xC0,0xD7,0x17,0x00,0x64,0x9A,0xE1,0x5C,0x7A,0x02,
+0x0E,0xE1,0x04,0x9C,0x28,0x85,0x29,0xC3,0x20,0x10,0x01,0x5C,0x63,0x06,0x5C,0xC6,
+0x02,0x5C,0xE7,0x00,0xFF,0x39,0x09,0x6C,0x24,0xC0,0x98,0xC2,0xE0,0x10,0x01,0xF3,
+0x17,0x0B,0x7E,0xD4,0xD8,0x00,0xDC,0x43,0x18,0x3B,0x1E,0xE6,0xFF,0x8E,0xF8,0x4F,
+0x17,0x10,0x8F,0x19,0x0B,0x78,0x02,0x0B,0x58,0x00,0xE4,0x00,0x00,0x11,0x9B,0x40,
+0x8B,0x7A,0xC2,0xE0,0x10,0x01,0xF3,0x97,0x0B,0x7E,0xD7,0x86,0x01,0x08,0xD0,0xDF,
+0x04,0x28,0x42,0xFC,0x3B,0x8E,0xE6,0x4F,0x17,0x10,0x4E,0xF7,0x10,0x8F,0x19,0x8F,
+0x37,0x0B,0x18,0x02,0x0B,0xD9,0x00,0xE4,0x00,0x00,0x17,0x24,0xDD,0xA0,0x9B,0xC0,
+0x8B,0x1E,0xD4,0xDC,0x03,0x0C,0x4E,0xE6,0x08,0xC0,0xE0,0x10,0x01,0xFC,0xE7,0x04,
+0x1C,0x8E,0xE7,0x9C,0xC1,0x09,0x17,0x00,0x4C,0xC6,0x08,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x0B,0x7A,0x8C,0xE6,0x0B,0x97,0x0B,0x13,0x37,0x0C,0x0A,0xE7,0x00,0x40,0xD7,
+0xE3,0x42,0xF7,0x45,0x43,0xA8,0xE3,0x40,0xC6,0xC8,0x43,0xBD,0xC8,0x43,0x97,0xE3,
+0x43,0xA3,0xED,0x43,0x3C,0xC8,0x40,0x66,0x1D,0x43,0x18,0xEB,0x43,0x7B,0x1B,0x42,
+0xFE,0xEB,0x8F,0x1B,0x40,0x7A,0x1B,0x43,0x18,0xC8,0x8E,0xE3,0x42,0xF7,0xC8,0xE4,
+0x00,0x00,0x11,0x9A,0xE0,0x8B,0x17,0x0F,0x04,0x01,0x0E,0xE5,0x01,0x85,0x29,0x1C,
+0x21,0xD8,0x0D,0x41,0x20,0x0D,0x61,0x1C,0x0D,0x81,0x18,0x0D,0xA1,0x14,0x5D,0x84,
+0x00,0x0D,0xC1,0x10,0x0D,0xE1,0x0C,0x0E,0x01,0x08,0x5D,0xA5,0x00,0x5D,0x63,0x04,
+0x0C,0xC1,0x04,0x0D,0x21,0x24,0x89,0xE8,0x0D,0xC1,0x2A,0xC1,0x40,0x10,0x01,0x9A,
+0x02,0xFD,0x4A,0x0B,0x7A,0x0C,0xE1,0x00,0x08,0x6A,0x0B,0x40,0x6C,0x1B,0x40,0x63,
+0x80,0x40,0x6B,0x1D,0xE7,0xFF,0xFC,0x38,0x0C,0x81,0x06,0x88,0xC3,0x5E,0xE3,0x02,
+0x0C,0xA1,0x02,0x26,0xFC,0x36,0x0C,0x04,0x01,0x0C,0x05,0x01,0xE4,0x00,0x00,0x2D,
+0x0A,0xEA,0x0B,0x42,0xEC,0xBB,0x88,0xED,0x40,0x77,0x80,0x40,0x6B,0x1D,0xE7,0xFF,
+0xFD,0x72,0x08,0x6A,0x0B,0x40,0x6C,0x1B,0x4C,0x63,0x0A,0x8C,0x6B,0xE7,0xFF,0xFB,
+0xC6,0x12,0xEA,0x04,0x88,0xC3,0x5F,0x03,0x02,0xD7,0x17,0x00,0x70,0x0C,0x0F,0x01,
+0x0C,0x0E,0x01,0xE4,0x00,0x00,0x69,0x08,0x6A,0x0B,0x41,0x8C,0x1B,0x88,0x8F,0x4C,
+0x6C,0x0A,0x88,0xAE,0x8C,0x6B,0x88,0xED,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,
+0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,
+0x1C,0x21,0x28,0xE7,0xFF,0xFC,0xC9,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,0x0D,0xC1,0x12,
+0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,0x21,0x26,0x1C,
+0x21,0x28,0x85,0x29,0x1C,0x21,0x90,0x0D,0x41,0x68,0x0D,0x81,0x60,0x0D,0xA1,0x5C,
+0x0D,0xE1,0x54,0x0E,0x01,0x50,0x0E,0x21,0x4C,0x0D,0x21,0x6C,0xC2,0x20,0x10,0x01,
+0x0D,0x61,0x64,0x0D,0xC1,0x58,0x0E,0x41,0x48,0x0E,0x61,0x44,0x0E,0x81,0x40,0x0E,
+0xA1,0x3C,0x0E,0xC1,0x38,0x89,0xA3,0x8A,0x04,0x89,0x85,0x5D,0xE6,0x00,0x99,0x40,
+0xFE,0x31,0x0B,0xF0,0xE4,0x00,0x00,0xA1,0xCF,0x0A,0x00,0x30,0x8F,0x11,0x1E,0xE1,
+0x20,0x10,0xB8,0x07,0x0B,0x98,0x17,0x43,0x2D,0x2C,0x4D,0x05,0x08,0x13,0x59,0x00,
+0x1F,0x61,0x38,0x8D,0x1A,0x9F,0x41,0x4D,0x08,0x08,0x1B,0x59,0x00,0x8F,0x68,0x08,
+0x78,0x17,0x0F,0x9B,0xD9,0x1F,0x01,0x30,0x8F,0x08,0x88,0x8F,0x0F,0x01,0x00,0x1C,
+0xC1,0x18,0x1C,0xE1,0x28,0x8C,0xC8,0x8C,0xE8,0x9D,0x41,0x8D,0x17,0x5D,0x4A,0x00,
+0xE7,0xFF,0xFD,0x1E,0x12,0xF1,0x00,0xD6,0xEA,0xFD,0x8D,0xC2,0xE0,0x10,0x01,0x8B,
+0x10,0xF2,0x57,0x04,0x64,0x9B,0x41,0x8A,0xED,0xE4,0x00,0x00,0x23,0x13,0x37,0x00,
+0x27,0x24,0x19,0x0F,0x58,0x00,0x9E,0xE1,0x9F,0x04,0x43,0x37,0x6D,0x5F,0x39,0x00,
+0xD6,0x59,0xFF,0x6D,0x99,0x60,0xC2,0x60,0x10,0x01,0x89,0x4B,0xC2,0x80,0x10,0x01,
+0xE4,0x00,0x03,0x07,0x42,0xF0,0x5C,0x0E,0xF7,0x02,0x22,0xE0,0x48,0x1E,0xE1,0x10,
+0x8E,0xEB,0x0B,0x57,0x00,0x0B,0x77,0x02,0xE4,0x00,0x01,0x5D,0x42,0xED,0x54,0x12,
+0xF7,0x00,0x22,0xE1,0xE0,0x1E,0xE1,0x18,0x8E,0xEB,0x0B,0x17,0x00,0x1E,0xE1,0x28,
+0x8E,0xEB,0x0A,0xF7,0x00,0x8E,0xF8,0x1F,0x01,0x30,0x8F,0x0B,0x0B,0x18,0x00,0x8E,
+0xF8,0x1F,0x01,0x20,0x8F,0x0B,0x0B,0x18,0x00,0x8E,0xF8,0x9B,0x04,0x42,0xF7,0xC0,
+0x0E,0xEC,0x00,0xE4,0x00,0x02,0x55,0xCE,0xEE,0x00,0x30,0x8E,0xF1,0x41,0x0E,0xCC,
+0x08,0x77,0x17,0x4D,0x08,0x08,0x1E,0xE1,0x30,0x8E,0xE8,0x0E,0xE1,0x00,0x1E,0xE1,
+0x20,0x0F,0x01,0x0C,0x0F,0x21,0x08,0x88,0x8F,0x88,0xB5,0x1C,0xC1,0x18,0x1C,0xE1,
+0x28,0x8C,0xC8,0x8C,0xE8,0x8D,0x17,0xE7,0xFF,0xFB,0x90,0x9D,0xC1,0x0F,0x01,0x0E,
+0x5D,0xCE,0x00,0x0F,0x21,0x0A,0xE4,0x00,0x00,0x23,0x9A,0xC1,0x99,0xC0,0x42,0xD6,
+0x55,0x4F,0x2A,0x08,0x43,0x0D,0xB4,0x12,0xF8,0x00,0xD6,0xEE,0xFD,0x6D,0x4E,0xD6,
+0x10,0x43,0x10,0xB4,0x0F,0x18,0x02,0xD3,0x00,0x05,0x0A,0x1F,0x01,0x38,0x8E,0xD8,
+0x0B,0x56,0xD8,0x0B,0x76,0xDA,0x43,0x3A,0xDD,0x5F,0x39,0x06,0x4E,0xF9,0xFA,0xEB,
+0x93,0x04,0x5B,0x47,0x37,0xCE,0x43,0x39,0xBD,0x52,0xE0,0x64,0x5F,0x39,0x06,0xD7,
+0x3C,0x00,0xF4,0xEB,0x14,0x04,0x59,0x9A,0xE0,0xD7,0x19,0x00,0xA4,0x42,0xF9,0xC5,
+0x43,0x1C,0xC5,0xCE,0xF7,0x00,0x64,0x42,0xF7,0xC0,0x5E,0xF7,0x00,0x5F,0x7A,0x15,
+0x4B,0x81,0x01,0x4F,0x2A,0x08,0x4B,0x00,0x0A,0x8F,0x19,0x8F,0x3C,0x1F,0x81,0x38,
+0x1F,0x41,0x38,0x53,0x60,0xC8,0x4F,0x39,0x08,0x43,0x7B,0xBD,0x8F,0x3C,0x0B,0x99,
+0xE0,0x4F,0x18,0x08,0x8F,0x1A,0x0B,0xB8,0xE8,0x0B,0x58,0xF8,0x8F,0x5D,0x8F,0x5C,
+0x0B,0x99,0xF0,0x8F,0x5C,0x43,0x5B,0xD3,0x0B,0x79,0xE8,0x0B,0x39,0xF8,0x8F,0x79,
+0x0B,0x38,0xE0,0x8F,0x79,0x0B,0x38,0xF0,0x43,0x1B,0xCC,0x42,0xF7,0xC3,0xCB,0x00,
+0x03,0x20,0x8E,0xFA,0xE7,0xFF,0xFD,0xF3,0x22,0xE0,0x88,0x1F,0x01,0x38,0x4E,0xEA,
+0x10,0x8E,0xF8,0x0B,0x17,0xF0,0x0B,0x37,0xE0,0x8F,0x38,0x0B,0x17,0xF8,0x8F,0x38,
+0x0B,0x17,0xE8,0x42,0xF9,0xC4,0xE7,0xFF,0xFD,0xAB,0x0C,0x0C,0x00,0x9D,0x41,0x9D,
+0x84,0x9D,0x64,0x5E,0xAA,0x00,0xD6,0x55,0xF3,0xF5,0x0E,0xC1,0x3A,0x0E,0xA1,0x3E,
+0x0E,0x81,0x42,0x0E,0x61,0x46,0x0E,0x41,0x4A,0x0E,0x21,0x4E,0x0E,0x01,0x52,0x0D,
+0xE1,0x56,0x0D,0xC1,0x5A,0x0D,0xA1,0x5E,0x0D,0x81,0x62,0x0D,0x61,0x66,0x0D,0x41,
+0x6A,0x0D,0x21,0x6E,0x1C,0x21,0x70,0x85,0x29,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x0D,
+0x61,0x0C,0x0D,0x81,0x08,0x0D,0xA1,0x04,0x0D,0x21,0x14,0x89,0xA3,0xC2,0xE0,0x10,
+0x01,0x5C,0x64,0x06,0xEA,0xF7,0x08,0xA3,0x5D,0x85,0x00,0x5D,0x66,0x00,0x5D,0x47,
+0x00,0x56,0xF7,0x04,0x22,0xE0,0x34,0x88,0x8C,0x88,0xAB,0x88,0xCA,0xE7,0xFF,0xE0,
+0xEC,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x0B,0x7E,0x43,0x0A,0xC3,0x5F,0x18,0x00,0x9B,
+0x20,0x42,0xF8,0x64,0x8D,0x78,0xC3,0x40,0x10,0x01,0x5D,0x6B,0x00,0x5E,0xF7,0x00,
+0x8B,0x19,0xFF,0x5A,0x09,0x6C,0xE4,0x00,0x00,0x3B,0x4F,0x77,0x10,0x8F,0x7A,0x0B,
+0x7B,0x02,0x8F,0x1B,0x4F,0x77,0x10,0x9E,0xE1,0x8F,0x7A,0x5E,0xF7,0x00,0x0B,0x7B,
+0x00,0x8F,0x3B,0xD6,0xEB,0xFF,0x38,0x27,0x21,0x14,0x27,0x01,0x08,0xC2,0xE0,0x10,
+0x01,0xFE,0xF7,0x01,0x64,0x4F,0x39,0x40,0x9D,0x44,0x4D,0x4A,0x10,0x8D,0x57,0x0A,
+0xEA,0x06,0x43,0x19,0xC0,0x9B,0x4A,0xFF,0x18,0xFF,0x00,0x53,0x20,0x64,0x43,0x18,
+0xBB,0x0A,0xEA,0x04,0x43,0x18,0xD0,0x4E,0xF7,0x40,0x42,0xF7,0xC8,0x8E,0xF8,0x5E,
+0xE0,0x09,0x0E,0xED,0x00,0x48,0x61,0x01,0xE4,0x00,0x00,0x0D,0x98,0x60,0x0D,0xA1,
+0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,
+0x85,0x29,0xCA,0xE0,0x01,0x00,0xFC,0x21,0xFF,0x80,0x5C,0xE7,0x00,0x0D,0x41,0x78,
+0x0D,0x61,0x74,0x0D,0x81,0x70,0x0E,0x21,0x5C,0x0E,0x41,0x58,0x0E,0x61,0x54,0x0E,
+0x81,0x50,0x0E,0xA1,0x4C,0x0E,0xC1,0x48,0x0D,0x21,0x7C,0x0D,0xA1,0x6C,0x0D,0xC1,
+0x68,0x0D,0xE1,0x64,0x0E,0x01,0x60,0xCE,0x44,0x00,0x0A,0x42,0x52,0x1B,0x42,0x52,
+0xB8,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x7A,0x11,0xD7,0x04,0x41,0x87,0x73,0x5F,
+0x0C,0x00,0xCC,0x84,0x0A,0x00,0x8C,0xB8,0x8C,0xD8,0xC2,0xA0,0x10,0x01,0xC2,0x20,
+0x10,0x01,0xC1,0x60,0x10,0x01,0xC3,0x00,0x10,0x01,0xFD,0x6B,0x09,0x6C,0x42,0x64,
+0x18,0x5E,0x86,0x00,0x09,0xF7,0x0B,0x12,0x17,0x0C,0x5D,0x45,0x00,0xFE,0xB5,0x01,
+0x64,0xFE,0x31,0x04,0x1C,0x8A,0xCB,0xFF,0x18,0x0A,0x1C,0xE4,0x00,0x01,0x61,0x0F,
+0x01,0x04,0x88,0x95,0x50,0xA0,0x3C,0x1C,0x61,0x08,0xE4,0x00,0x2C,0xFE,0x41,0xAA,
+0x65,0x1E,0xED,0x01,0x4E,0xF7,0x08,0x8E,0xF1,0x98,0x82,0x08,0x77,0x00,0x1C,0xA1,
+0x08,0x40,0x63,0x7B,0x40,0x63,0x80,0xE7,0xFF,0xF1,0x44,0x0F,0x01,0x06,0x5C,0x63,
+0x04,0xD5,0x4C,0x00,0x5E,0x1E,0xEE,0xFF,0xD5,0xB7,0x01,0x92,0xCB,0x20,0x03,0xE8,
+0x43,0x43,0x9B,0x4E,0xEA,0x10,0x43,0x63,0x93,0x9E,0xE2,0x43,0x7B,0xC8,0x8E,0xEB,
+0x0B,0x97,0x01,0x43,0x7C,0xDD,0x0F,0x77,0x01,0x43,0x3A,0xC8,0x4E,0xEA,0x10,0x8E,
+0xEB,0x0B,0x57,0x01,0x43,0x3A,0xCD,0x0F,0x37,0x01,0x4E,0xEA,0x08,0x1F,0x37,0x01,
+0x4F,0x59,0x08,0x8F,0x4B,0x0B,0x7A,0x00,0x27,0x7C,0x1A,0x0C,0x1A,0x01,0x4F,0x57,
+0x08,0x8F,0x56,0x0B,0x7A,0x00,0x27,0x7C,0x1A,0x0C,0x1A,0x01,0x4E,0xF7,0x08,0x8E,
+0xEB,0x4F,0x4A,0x10,0x0B,0x77,0x00,0x8F,0x58,0x4F,0x39,0x08,0x9D,0x41,0x8F,0x2B,
+0x5D,0x4A,0x00,0x0A,0xF9,0x00,0x8E,0xFB,0x0E,0xFA,0x00,0xD5,0x54,0xFA,0xA0,0x0E,
+0xC1,0x4A,0x0E,0xA1,0x4E,0x0E,0x81,0x52,0x0E,0x61,0x56,0x0E,0x41,0x5A,0x0E,0x21,
+0x5E,0x0E,0x01,0x62,0x0D,0xE1,0x66,0x0D,0xC1,0x6A,0x0D,0xA1,0x6E,0x0D,0x81,0x72,
+0x0D,0x61,0x76,0x0D,0x41,0x7A,0x0D,0x21,0x7E,0xFC,0x21,0x00,0x80,0x85,0x29,0x1C,
+0x21,0xB8,0x98,0x60,0x0D,0x21,0x44,0x0D,0x41,0x40,0x0D,0x61,0x3C,0x0D,0x81,0x38,
+0x0D,0xA1,0x34,0x0D,0xC1,0x30,0x0D,0xE1,0x2C,0x0E,0x01,0x28,0x0E,0x21,0x24,0x0E,
+0x41,0x20,0x0E,0x61,0x1C,0x0E,0x81,0x18,0x0C,0x01,0x08,0x0C,0x01,0x0C,0x18,0x01,
+0x02,0x18,0x01,0x03,0x0C,0x01,0x10,0x0C,0x01,0x14,0xE7,0xFF,0xD3,0x4C,0x1C,0x61,
+0x02,0x1C,0x81,0x10,0x1C,0xA1,0x08,0x98,0xC4,0xE7,0xFF,0xF5,0xD6,0xC2,0xE0,0x10,
+0x01,0xF3,0x97,0x04,0x64,0xC2,0xE0,0x10,0x01,0xEB,0xB7,0x08,0x8B,0xC2,0xE0,0x10,
+0x01,0xEF,0x77,0x04,0x56,0xC2,0xE0,0x10,0x01,0x57,0xBD,0x20,0xEF,0xD7,0x04,0x62,
+0xC3,0x20,0x10,0x01,0x4F,0xBD,0x29,0x1E,0xE1,0x08,0xFF,0x39,0x01,0x84,0x9B,0x40,
+0xE4,0x00,0x00,0x63,0x0F,0x17,0x02,0x09,0x19,0xFC,0x0F,0x19,0x00,0x43,0x18,0x45,
+0x5F,0x1F,0xF9,0x4B,0x18,0x00,0x0F,0x17,0x00,0x23,0xA0,0x3C,0x23,0x60,0x30,0x43,
+0x18,0xF3,0x43,0x18,0xD8,0x0F,0x17,0x00,0x9F,0x41,0x9E,0xE4,0x5F,0x5A,0x00,0x9F,
+0x28,0xD7,0x5C,0xFE,0x9E,0x98,0x61,0x99,0x60,0xC2,0x20,0x10,0x01,0xC2,0x80,0x10,
+0x01,0xE7,0xFF,0xD2,0x3E,0x89,0x4B,0xFD,0xB1,0x0B,0xF0,0x9A,0x41,0xC2,0x60,0x10,
+0x01,0xFE,0x94,0x0C,0xBC,0xE4,0x00,0x00,0xF9,0xCE,0x0A,0x00,0x30,0x42,0xF0,0x6C,
+0x1C,0x61,0x04,0x11,0xF7,0x04,0x11,0xD7,0x05,0x11,0x97,0x07,0x08,0x97,0x17,0x88,
+0xAF,0x88,0xCE,0x88,0xEC,0xE7,0xFF,0xF9,0x88,0x20,0x60,0xF8,0x98,0x60,0xE7,0xFF,
+0xD1,0xC4,0x1F,0x01,0x18,0x4E,0xEC,0x10,0x8E,0xF8,0x88,0xAF,0x0C,0x97,0xF2,0x88,
+0xCE,0x88,0xEC,0x0C,0x61,0x06,0xE7,0xFF,0xFA,0xF8,0x98,0x61,0xE7,0xFF,0xD1,0x88,
+0x40,0x6D,0x84,0x88,0xAF,0x88,0x83,0x88,0xCE,0x1C,0x63,0x18,0x9C,0x8C,0x88,0xEC,
+0xE7,0xFF,0xD4,0x42,0x20,0x60,0x32,0x4E,0xF2,0x54,0x45,0x6B,0xBD,0x5D,0x6B,0x00,
+0x88,0x74,0xF0,0x93,0x0B,0x7A,0x98,0xA1,0x9D,0x41,0xE4,0x00,0x82,0x10,0x5D,0x4A,
+0x00,0xF2,0xF1,0x0B,0xF0,0xD6,0xEA,0xFC,0x25,0x88,0x6B,0xE7,0xFF,0xD7,0xB0,0x0D,
+0x21,0x46,0x0E,0x81,0x1A,0x0E,0x61,0x1E,0x0E,0x41,0x22,0x0E,0x21,0x26,0x0E,0x01,
+0x2A,0x0D,0xE1,0x2E,0x0D,0xC1,0x32,0x0D,0xA1,0x36,0x0D,0x81,0x3A,0x0D,0x61,0x3E,
+0x0D,0x41,0x42,0x1C,0x21,0x48,0x85,0x29,0xFC,0x21,0xFF,0x00,0x98,0xA0,0xED,0x41,
+0x00,0xF8,0xED,0x61,0x00,0xF4,0xED,0xC1,0x00,0xE8,0xED,0xE1,0x00,0xE4,0xEE,0x01,
+0x00,0xE0,0xEE,0x21,0x00,0xDC,0xEE,0x41,0x00,0xD8,0xEE,0x61,0x00,0xD4,0xED,0x21,
+0x00,0xFC,0xED,0x81,0x00,0xF0,0xED,0xA1,0x00,0xEC,0xEE,0x81,0x00,0xD0,0xEE,0xA1,
+0x00,0xCC,0xEE,0xC1,0x00,0xC8,0xC2,0x20,0x10,0x01,0xC2,0x60,0x10,0x01,0xFE,0x31,
+0x0C,0xBC,0xFD,0x73,0x0B,0x7A,0x88,0x71,0x10,0x8B,0x00,0xE4,0x00,0x80,0xEE,0xC2,
+0xE0,0x10,0x01,0xEA,0xF7,0x08,0x8F,0xC6,0xF7,0x02,0x00,0xC2,0x40,0x10,0x01,0x5E,
+0xE0,0x01,0xC1,0xE0,0x10,0x01,0x4A,0xE1,0x13,0xC1,0x40,0x10,0x01,0xC1,0xC0,0x10,
+0x01,0x0E,0xE1,0x0C,0x9A,0x00,0xFE,0x52,0x01,0x64,0xFD,0xEF,0x09,0x6C,0xFD,0x4A,
+0x0A,0x1C,0xFD,0xCE,0x0B,0xF0,0x98,0x60,0x0C,0x01,0x58,0x0C,0x01,0x5C,0x18,0x01,
+0x56,0x18,0x01,0x57,0x0C,0x01,0x60,0x0C,0x01,0x64,0xE7,0xFF,0xCF,0x6C,0x1C,0x61,
+0x56,0x1C,0x81,0x60,0x1C,0xA1,0x58,0x98,0xC3,0xE7,0xFF,0xF1,0xF6,0xC2,0xE0,0x10,
+0x01,0xEB,0x97,0x08,0x8B,0xC2,0xE0,0x10,0x01,0xC3,0x20,0x10,0x01,0xEF,0x77,0x04,
+0x56,0xC2,0xE0,0x10,0x01,0xF3,0x59,0x04,0x64,0x57,0x9C,0x20,0xEF,0xB7,0x04,0x62,
+0x4F,0x9C,0x29,0x1E,0xE1,0x58,0x9B,0x20,0xE4,0x00,0x00,0x5D,0x0F,0xD7,0x02,0x4F,
+0x19,0x18,0x8F,0x12,0x0B,0x18,0x1C,0x43,0x1E,0xC5,0x5F,0x1F,0xF9,0x4B,0x18,0x00,
+0x0F,0x17,0x00,0x23,0x80,0x3C,0x23,0x60,0x30,0x43,0x18,0xEB,0x43,0x18,0xD8,0x0F,
+0x17,0x00,0x9F,0x21,0x9E,0xE4,0x5F,0x19,0x00,0xD7,0x58,0xFE,0x9D,0x13,0x0B,0x04,
+0x09,0xAB,0x0B,0x12,0x8B,0x0C,0x9A,0xA0,0xE4,0x00,0x01,0xA1,0xFE,0xE1,0x00,0xC8,
+0x8E,0xF5,0x12,0xF7,0x8E,0x22,0xE0,0x72,0xFF,0x61,0x00,0xC8,0x9A,0xE1,0x42,0xF7,
+0xAD,0x4E,0xF7,0x10,0x8E,0xFB,0x0F,0x37,0x92,0x4E,0xF5,0x10,0x8E,0xFB,0x0F,0x37,
+0x90,0x41,0x95,0xC3,0x1F,0xB5,0x01,0x5E,0xCC,0x00,0x43,0xBD,0xC3,0xE4,0x00,0x01,
+0x25,0x0F,0x01,0x00,0x0F,0x41,0x04,0x0F,0xA1,0x08,0x88,0x92,0x50,0xA0,0x3C,0x1C,
+0x61,0x10,0xE4,0x00,0x25,0x6E,0x42,0xF6,0x65,0xC3,0x80,0x10,0x01,0x9E,0xE1,0xFF,
+0x9C,0x04,0x1C,0x4E,0xF7,0x08,0x8E,0xFC,0x98,0x81,0x08,0x77,0x00,0x1C,0xA1,0x10,
+0x40,0x63,0x6B,0x40,0x63,0xA0,0xE7,0xFF,0xE9,0xA6,0x53,0x60,0x64,0x4E,0xF6,0x10,
+0x5C,0x63,0x04,0x4F,0x35,0x10,0xFD,0x21,0x00,0xC8,0x9E,0xE2,0x8F,0x29,0x8E,0xEF,
+0x0F,0x39,0x92,0x43,0x23,0xCB,0x43,0x39,0xD8,0x0B,0x77,0x01,0x5F,0x39,0x04,0x43,
+0x7B,0xCD,0x0F,0x77,0x01,0x0F,0xA1,0x0A,0x4F,0x76,0x10,0x0F,0x41,0x06,0x43,0x9B,
+0x7C,0x9E,0xC1,0x0B,0xDC,0x01,0x8F,0x6A,0x43,0x3E,0xCD,0x5E,0xD6,0x00,0x5F,0x39,
+0x06,0x0F,0x01,0x02,0x0F,0x3C,0x01,0x0A,0xF7,0x00,0x8F,0x37,0x0F,0x3B,0x00,0xD7,
+0xB6,0xFB,0x94,0x9E,0xA1,0x5E,0xB5,0x00,0xD7,0x55,0xF9,0xA5,0x98,0x61,0xE7,0xFF,
+0xCC,0xC4,0x13,0x6B,0x04,0x13,0x4B,0x01,0xC3,0x00,0x10,0x01,0x43,0x5A,0xDB,0x9A,
+0xE0,0xFF,0x18,0x0D,0x30,0xE4,0x00,0x00,0x4F,0x4F,0x37,0x10,0x43,0x99,0xC4,0x8F,
+0x2F,0x0B,0x39,0x01,0x0F,0x3C,0x01,0x4F,0x37,0x10,0x9E,0xE1,0x9F,0x22,0x5E,0xF7,
+0x00,0x43,0x99,0xC4,0x8F,0x2F,0x0B,0x39,0x01,0x0F,0x3C,0x01,0xD7,0x57,0xFE,0xEC,
+0xC3,0x20,0x10,0x01,0x12,0x8E,0x00,0xFF,0x39,0x0B,0xF6,0x9B,0xA0,0x8B,0x19,0x8B,
+0xCA,0xE4,0x00,0x01,0x3D,0x1F,0x98,0x02,0x12,0xF8,0xFE,0x12,0xB8,0xFF,0x11,0x98,
+0x01,0x13,0x58,0x00,0x0D,0x1C,0x02,0x21,0x04,0x5E,0x43,0x8C,0xDB,0x8F,0x9A,0x4F,
+0x9C,0x10,0x8F,0x8A,0x0F,0x9C,0x02,0x41,0x8C,0xDB,0xE4,0x00,0x00,0xCD,0x4D,0xBA,
+0x10,0x43,0x9A,0xDC,0x8D,0xAA,0x4F,0x9C,0x10,0x0D,0xAD,0x02,0x8F,0x8A,0x0F,0x9C,
+0x02,0x8F,0x8D,0xE7,0xFF,0xFF,0xC9,0x21,0x04,0x5A,0x41,0xB7,0x64,0x4D,0xAD,0x10,
+0x8D,0xAA,0x0D,0xAD,0x02,0xD5,0xBC,0x01,0x94,0xE4,0x00,0x00,0x65,0x4D,0xB7,0x10,
+0x42,0xD7,0xDC,0x8D,0xBE,0x4E,0xD6,0x10,0x0D,0xAD,0x02,0x8E,0xDE,0x0E,0xD6,0x02,
+0x8E,0xCD,0xD6,0xDC,0x00,0xC8,0x43,0x57,0x64,0x4F,0x5A,0x10,0x8F,0x5E,0x0F,0x9A,
+0x02,0x8F,0x8D,0xE4,0x00,0x00,0x0D,0x8B,0x8D,0x8B,0x57,0x9E,0xE1,0x5E,0xF7,0x00,
+0xD6,0xF5,0xFD,0xB8,0x1B,0x58,0x00,0x9F,0xA1,0x1F,0x18,0x30,0x5F,0xBD,0x00,0xD7,
+0xB4,0xFB,0x36,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x0B,0x7E,0xC2,0xE0,0x10,0x01,0x1F,
+0x98,0xFF,0xF3,0x57,0x04,0x50,0x1F,0xB8,0xFD,0xC2,0xE0,0x10,0x01,0x1E,0xB8,0xFC,
+0x11,0x8E,0x00,0x5D,0x1C,0x00,0x1D,0xB8,0xFE,0xFE,0xF7,0x0B,0xF5,0x9B,0x60,0x8A,
+0x9C,0x5F,0xBD,0x00,0x5E,0xB5,0x00,0x9A,0xC2,0x1C,0x78,0xFD,0xE4,0x00,0x00,0xEB,
+0x13,0x17,0x01,0xD7,0x1C,0x00,0x76,0x19,0x17,0x00,0x18,0x77,0xFF,0xE4,0x00,0x00,
+0xB9,0x23,0x00,0x36,0x1A,0xD7,0x00,0x18,0x17,0xFF,0xE4,0x00,0x00,0x9F,0x23,0x04,
+0x56,0x5F,0x40,0x29,0x9F,0x1F,0x4B,0xC2,0x1B,0x1B,0x17,0xFF,0x1B,0xD7,0x00,0xE4,
+0x00,0x00,0x75,0xD7,0x0D,0x00,0x8E,0x5F,0x40,0x29,0x1A,0x97,0x00,0x4B,0xDD,0xA8,
+0xE4,0x00,0x00,0x4D,0x1F,0xD8,0x01,0x5F,0xDE,0x00,0x23,0x44,0x22,0x9F,0x02,0x5F,
+0xD8,0x00,0x1B,0xD7,0x00,0x13,0xD7,0x01,0x23,0x44,0x26,0x9F,0xDE,0xE4,0x00,0x00,
+0x0D,0x9F,0xDF,0x5F,0xDE,0x00,0x1B,0xD7,0xFF,0x9F,0x61,0x1E,0xF7,0x30,0x5F,0x7B,
+0x00,0xD7,0x6C,0xFC,0x7E,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x8F,0x56,0xF7,0x08,
+0xD2,0xE0,0x08,0x6A,0xC2,0xE0,0x10,0x01,0x9B,0x00,0xF3,0x57,0x0B,0x7E,0x9B,0xA0,
+0xC2,0xE0,0x10,0x01,0x1E,0xDA,0xFE,0xEA,0x97,0x01,0x56,0x8B,0x78,0x8B,0x9D,0x98,
+0x60,0x9A,0xA1,0xE4,0x00,0x01,0xBF,0x12,0xF9,0x00,0xD2,0xE1,0x06,0x99,0xD6,0xD7,
+0x06,0x78,0x1D,0x17,0xFF,0x1D,0xB7,0x01,0x1D,0x39,0x02,0x5D,0x08,0x00,0x5D,0xAD,
+0x00,0x0F,0xC9,0x02,0x23,0xC4,0xDE,0x13,0x79,0x01,0x43,0x7A,0xDB,0x5F,0x7B,0x00,
+0x8D,0xBB,0x8D,0x1B,0x8E,0xFB,0x4D,0xAD,0x10,0x4D,0x08,0x10,0x8D,0xAA,0x8D,0x0A,
+0x0F,0xAD,0x02,0x0F,0x88,0x02,0x4E,0xF7,0x10,0x5F,0xBC,0x15,0x8E,0xEA,0x4B,0x9D,
+0xE0,0x0F,0x77,0x02,0x5F,0x9C,0x06,0xE4,0x00,0x00,0xCD,0x23,0xC9,0xA2,0x13,0x79,
+0x01,0x43,0xBB,0xD3,0x5F,0xBD,0x00,0x43,0x8D,0xEC,0x4F,0x9C,0x10,0x8F,0x8A,0x43,
+0x75,0xDD,0x0F,0xDC,0x02,0x43,0x7A,0xDB,0x5F,0x7B,0x00,0x8D,0xBB,0x4D,0xAD,0x10,
+0x8D,0xAA,0x0F,0x8D,0x02,0x8F,0xDC,0x43,0x88,0xEC,0x4F,0x9C,0x10,0x8F,0x8A,0x8D,
+0x1B,0x0D,0xBC,0x02,0x8F,0xB7,0x4D,0x08,0x10,0x8E,0xFB,0x8D,0x0A,0x4F,0xBD,0x10,
+0x0F,0x88,0x02,0x8F,0xAA,0x8F,0x8D,0x4E,0xF7,0x10,0x5F,0xDC,0x15,0x8E,0xEA,0x4B,
+0x9E,0xE0,0x0F,0x7D,0x02,0x0E,0xF7,0x02,0x5F,0x9C,0x06,0x8F,0x77,0x8B,0xB4,0xE4,
+0x00,0x00,0x0F,0x23,0xC0,0x68,0xC3,0x60,0x7C,0xEC,0x20,0x00,0x4D,0x42,0xFB,0xE5,
+0xD7,0xB7,0x00,0x68,0x4E,0xF5,0xC4,0x44,0x63,0xBD,0x5C,0x63,0x00,0x9F,0x01,0x1F,
+0x39,0x30,0x5E,0xF8,0x00,0xD5,0x97,0xF9,0x15,0xE7,0xFF,0xCD,0xF4,0x1E,0xC1,0x68,
+0x10,0x8B,0x00,0x88,0x76,0x98,0xA0,0x99,0xA0,0xE4,0x00,0x78,0x12,0x89,0x8D,0xC2,
+0x80,0x10,0x01,0xE4,0x00,0x01,0x3F,0xCC,0x6C,0x00,0x30,0xEB,0x74,0x08,0xA3,0x42,
+0xA3,0x74,0x57,0x7B,0x02,0x13,0x55,0x04,0x13,0x35,0x05,0x13,0x15,0x07,0x23,0x61,
+0x54,0x88,0x9A,0x88,0xB9,0x88,0xD8,0x0F,0x01,0x00,0x0F,0x21,0x08,0x0F,0x41,0x04,
+0x1C,0x61,0x52,0x98,0xE1,0xE7,0xFF,0xD2,0xE4,0x0F,0x01,0x02,0x0F,0x21,0x0A,0x0F,
+0x41,0x06,0x20,0x61,0x14,0x1C,0x61,0x54,0x88,0x9A,0x88,0xB9,0x88,0xD8,0x98,0xE1,
+0xE7,0xFF,0xD4,0x54,0x20,0x60,0xCC,0x0B,0x21,0x52,0x0B,0x01,0x54,0xCF,0x39,0x00,
+0x07,0xCF,0x18,0x00,0x03,0x9A,0xEA,0x8F,0x19,0x43,0x18,0xB8,0x0F,0x15,0x17,0xE4,
+0x00,0x00,0x47,0x8C,0x6E,0x88,0x9A,0x1C,0x63,0x16,0x88,0xB9,0x88,0xD8,0x98,0xE1,
+0xE7,0xFF,0xD2,0x4E,0x20,0x60,0x3A,0x9A,0xE1,0x4E,0xF7,0x64,0x45,0xAD,0xBD,0x5D,
+0xAD,0x00,0x88,0x76,0x10,0x8B,0x00,0x98,0xA1,0x9D,0x81,0xE4,0x00,0x76,0xCE,0x5D,
+0x8C,0x00,0x12,0xEE,0x00,0xD6,0xEC,0xFB,0x15,0x88,0x6D,0xE7,0xFF,0xCC,0x70,0x9E,
+0x01,0x0F,0x21,0x0E,0x5E,0x10,0x00,0xD7,0x30,0xD8,0x7D,0x88,0x71,0x10,0x8B,0x00,
+0x98,0xA1,0xE4,0x00,0x76,0x80,0xED,0x21,0x00,0xFE,0xEE,0xC1,0x00,0xCA,0xEE,0xA1,
+0x00,0xCE,0xEE,0x81,0x00,0xD2,0xEE,0x61,0x00,0xD6,0xEE,0x41,0x00,0xDA,0xEE,0x21,
+0x00,0xDE,0xEE,0x01,0x00,0xE2,0xED,0xE1,0x00,0xE6,0xED,0xC1,0x00,0xEA,0xED,0xA1,
+0x00,0xEE,0xED,0x81,0x00,0xF2,0xED,0x61,0x00,0xF6,0xED,0x41,0x00,0xFA,0xFC,0x21,
+0x01,0x00,0x85,0x29,0xC2,0xE0,0x10,0x01,0x1C,0x21,0xA0,0xF3,0x37,0x06,0xA8,0x0D,
+0x41,0x5C,0x9A,0xE0,0xE4,0x00,0x00,0x23,0x4F,0x17,0x10,0x1D,0x41,0x00,0x9E,0xE1,
+0x8F,0x0A,0x0C,0x18,0x00,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x85,0xC2,0xE0,0x10,0x01,
+0xC3,0x60,0x10,0x01,0xEB,0x57,0x04,0x93,0x1D,0x19,0xFF,0x9A,0xE0,0xFF,0x7B,0x04,
+0xC8,0xE4,0x00,0x00,0xFB,0x9B,0x80,0xD6,0xE8,0x00,0x4A,0x9F,0x01,0x5F,0x98,0x00,
+0x9B,0x00,0x4F,0xB7,0x28,0x4F,0x9C,0x28,0xE4,0x00,0x00,0x5B,0x4F,0xD8,0x08,0x40,
+0xDD,0xC4,0x40,0xBC,0xC4,0x1D,0x41,0x58,0x4C,0xC6,0x08,0x8F,0xCA,0x8C,0xDB,0x4C,
+0xA5,0x08,0x08,0xC6,0x01,0x8C,0xBB,0x9F,0x01,0x08,0xA5,0x01,0x5F,0x18,0x00,0x40,
+0xA6,0x2D,0x0C,0xBE,0xC1,0xD7,0x58,0xFE,0xBD,0x4F,0x97,0x10,0x1F,0xA1,0x58,0x9B,
+0x00,0x8F,0x9D,0xE4,0x00,0x00,0x4B,0x4F,0xB8,0x08,0x1F,0xC1,0x58,0x8F,0xBE,0x0C,
+0xBC,0xAA,0x0B,0xDD,0xC0,0x9F,0x01,0x4F,0xBE,0xFA,0x5F,0x18,0x00,0x47,0xDD,0xF6,
+0x43,0xBE,0xED,0x8F,0xA5,0x0F,0xBC,0xA8,0xD7,0x58,0xFE,0xFD,0x9E,0xE1,0x5F,0x17,
+0x00,0xD7,0x38,0xFC,0x25,0x0F,0x41,0x02,0x1F,0x61,0x04,0x9B,0x01,0x9A,0xE0,0xE4,
+0x00,0x00,0x39,0x0F,0x9B,0x02,0xD7,0x5C,0x00,0x55,0x8B,0x9A,0xE4,0x00,0x00,0x0D,
+0x8A,0xF8,0x9F,0x01,0x9F,0x64,0x5F,0x18,0x00,0x8B,0x5C,0xD7,0x38,0xFF,0x45,0x9F,
+0x3F,0xD6,0xF9,0x00,0x76,0x1A,0xE3,0x00,0x18,0x04,0x00,0xE4,0x00,0x00,0x21,0xD7,
+0x37,0x00,0x60,0x1A,0xE3,0x00,0x9E,0xE1,0x1A,0xE4,0x00,0x0D,0x41,0x5E,0x1C,0x21,
+0x60,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0xB7,0x06,0xA8,0xC2,0xE0,0x10,0x01,0xF3,
+0xD7,0x04,0x88,0xC2,0xE0,0x10,0x01,0xC3,0x40,0x10,0x01,0xE9,0x17,0x04,0x93,0xC3,
+0x20,0x10,0x01,0x9A,0xE0,0xFF,0x5A,0x04,0xC8,0xFF,0x39,0x06,0x48,0xE4,0x00,0x00,
+0xAB,0x4C,0x78,0x08,0x4C,0x98,0x18,0x8C,0x7B,0x8C,0x9C,0x9F,0x01,0x08,0x84,0x01,
+0x0C,0x83,0x01,0x5C,0x78,0x00,0xD7,0xC3,0xFF,0x5D,0x9B,0x00,0x4F,0x97,0x28,0x4C,
+0x77,0x18,0xE4,0x00,0x00,0x4F,0x43,0x7C,0xC4,0x4C,0x98,0x11,0x4F,0x7B,0x08,0x8C,
+0x83,0x8F,0x7A,0x4C,0x84,0x08,0x08,0xBB,0x01,0x8C,0x99,0x9F,0x01,0x08,0x84,0x01,
+0x5F,0x18,0x00,0x40,0x85,0x25,0x0C,0x9B,0x01,0xD5,0x18,0xFE,0xED,0x9E,0xE1,0x5E,
+0xF7,0x00,0xD6,0xFD,0x00,0xA2,0x4F,0x97,0x30,0x4F,0x77,0x20,0x8F,0x9A,0x8F,0x79,
+0x9B,0x00,0xE7,0xFF,0xFF,0x63,0x85,0x29,0xC2,0xE0,0x10,0x01,0x5C,0x63,0x00,0x5C,
+0x84,0x00,0xEB,0x97,0x04,0x93,0xC3,0x00,0x10,0x01,0x4F,0xA3,0x28,0xC3,0x20,0x10,
+0x01,0x4F,0xC4,0x28,0x9A,0xE0,0xFF,0x18,0x04,0xC8,0xFF,0x39,0x06,0x48,0x4C,0x63,
+0x18,0x4C,0x84,0x18,0xE4,0x00,0x00,0x83,0x4F,0x77,0x11,0x41,0x03,0xDC,0x4D,0x08,
+0x08,0x8D,0x19,0x43,0x5D,0xBC,0x08,0xA8,0x01,0x4F,0x5A,0x08,0x8F,0x64,0x8F,0x58,
+0x4F,0x7B,0x08,0x09,0x1A,0x01,0x8F,0x79,0x8D,0x05,0x0D,0x1A,0x01,0x43,0x5E,0xBC,
+0x09,0x1B,0x01,0x4F,0x5A,0x08,0x9E,0xE1,0x8F,0x58,0x5E,0xF7,0x00,0x0B,0x7A,0x01,
+0x8F,0x68,0x0F,0x7A,0x01,0xD7,0x97,0xFE,0x1D,0x85,0x29,0x20,0x60,0x2E,0xC2,0xE0,
+0x10,0x01,0xEC,0x97,0x01,0x2C,0x85,0x29,0x20,0x60,0x4E,0xC2,0xE0,0x10,0x01,0xEC,
+0x97,0x00,0xF4,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x01,0x28,0x85,0x29,0x20,0x60,0x5E,
+0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0x98,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x04,0x9C,
+0xE4,0x00,0x00,0x5D,0x20,0x64,0x5E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x06,0xB4,0xC2,
+0xE0,0x10,0x01,0xEC,0xB7,0x04,0xC4,0xE4,0x00,0x00,0x2F,0x20,0x68,0x4E,0xC2,0xE0,
+0x10,0x01,0xEC,0x97,0x04,0xBC,0xC2,0xE0,0x10,0x01,0xEC,0xB7,0x04,0x8C,0x85,0x29,
+0x20,0x68,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0xB8,0x85,0x29,0x5C,0x84,0x04,
+0x20,0x60,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x33,0xE4,0x00,0x00,0x3D,0x20,
+0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x15,0xE4,0x00,0x00,0x1F,0x20,0x68,
+0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x39,0x85,0x29,0x5C,0x84,0x04,0x20,0x60,
+0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x00,0xF9,0xE4,0x00,0x00,0x3D,0x20,0x64,0x3E,
+0xC2,0xE0,0x10,0x01,0xEC,0x97,0x01,0x31,0xE4,0x00,0x00,0x1F,0x20,0x68,0x2E,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x01,0x11,0x85,0x29,0x5C,0x84,0x04,0x20,0x68,0x2E,0xC2,
+0xE0,0x10,0x01,0xEC,0x97,0x01,0x13,0x85,0x29,0x1C,0x21,0xC8,0x0D,0x21,0x34,0x0D,
+0x41,0x30,0x0D,0x61,0x2C,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,0xE1,
+0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,0x61,0x0C,0x0E,0x81,0x08,
+0x0E,0xA1,0x04,0x0E,0xC1,0x00,0x20,0x65,0x70,0x20,0x60,0x4C,0xD0,0x62,0x04,0x42,
+0x99,0xC0,0x89,0xEE,0xD0,0x63,0x06,0x66,0xE4,0x00,0x01,0x71,0xC2,0xE0,0x10,0x01,
+0xEE,0xD7,0x00,0xF6,0xC2,0xE0,0x10,0x01,0xEE,0xB7,0x01,0x2A,0xC2,0xE0,0x10,0x01,
+0xEE,0x97,0x04,0x9A,0xC2,0xE0,0x10,0x01,0xEE,0x77,0x04,0x9E,0xC2,0xE0,0x10,0x01,
+0xE9,0xF7,0x01,0x33,0xC2,0xE0,0x10,0x01,0x9A,0x00,0xE9,0xD7,0x00,0xF9,0x99,0xA0,
+0xC2,0xE0,0x10,0x01,0x9A,0x21,0xED,0x77,0x01,0x2E,0x9A,0x45,0x89,0x90,0xE4,0x00,
+0x00,0xD9,0xC2,0xE0,0x10,0x01,0xEE,0x97,0x06,0xB6,0xC2,0xE0,0x10,0x01,0xEE,0x77,
+0x04,0xC6,0xC2,0xE0,0x10,0x01,0x99,0xA0,0xE9,0xF7,0x01,0x15,0x9A,0x00,0xC2,0xE0,
+0x10,0x01,0x8A,0x2D,0xE9,0xD7,0x01,0x31,0x9A,0x40,0x99,0x61,0x89,0x90,0x9A,0xA0,
+0xE4,0x00,0x00,0x71,0xC2,0xE0,0x10,0x01,0xEE,0x97,0x04,0xBE,0xC2,0xE0,0x10,0x01,
+0xEE,0x17,0x04,0xBA,0xC2,0xE0,0x10,0x01,0xE9,0xF7,0x01,0x39,0xC2,0xE0,0x10,0x01,
+0x99,0x81,0xE9,0xD7,0x01,0x11,0x9A,0x21,0xC2,0xE0,0x10,0x01,0x9A,0x40,0xE9,0xB7,
+0x01,0x13,0x99,0x61,0x9A,0x60,0x8A,0xAC,0x9A,0xC1,0x99,0x41,0xE4,0x00,0x00,0x55,
+0xC2,0xE0,0x10,0x01,0xE9,0xF7,0x01,0x33,0xC2,0xE0,0x10,0x01,0xE9,0xD7,0x00,0xF9,
+0x99,0xA0,0x9A,0x40,0x9A,0x00,0x9A,0x80,0x9A,0xA0,0x8A,0x2D,0x89,0x72,0x8A,0x70,
+0x89,0x94,0x8A,0xD5,0x99,0x40,0x88,0x6A,0xE4,0x00,0xC6,0x74,0x88,0x6A,0xE4,0x00,
+0xC6,0xF6,0x88,0x76,0xE4,0x00,0xD6,0xE8,0x88,0x75,0xE4,0x00,0xD7,0x42,0x88,0x74,
+0xE4,0x00,0xC8,0x56,0x88,0x73,0xE4,0x00,0xC8,0xA2,0x88,0x72,0xE4,0x00,0xC7,0xA4,
+0x88,0x71,0xE4,0x00,0xC7,0xD0,0x88,0x6A,0xE4,0x00,0xD8,0x64,0x88,0x70,0xE4,0x00,
+0xD8,0xBE,0x98,0x60,0xE4,0x00,0xD9,0x0C,0x98,0x60,0xE4,0x00,0xD9,0x5A,0x98,0x60,
+0xE4,0x00,0xD9,0xA8,0x98,0x60,0xE4,0x00,0xD9,0xF6,0x88,0x6F,0xE4,0x00,0xC8,0x9C,
+0x88,0x6E,0xE4,0x00,0xC8,0xCA,0x88,0x6D,0xE4,0x00,0xC8,0xFE,0x88,0x6C,0xE4,0x00,
+0xC9,0x18,0x88,0x6B,0x0E,0xC1,0x02,0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,
+0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,
+0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,
+0x38,0xE4,0x00,0xC6,0x61,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x04,0xB4,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xF8,0x77,0x04,0xB4,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x04,
+0xB4,0x9F,0x01,0xFB,0x17,0x04,0xB4,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,
+0xA9,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x06,0xA9,0x85,0x29,0xC2,0xE0,0x10,
+0x01,0xF3,0x17,0x06,0xA9,0x9F,0x01,0xFB,0x17,0x06,0xA9,0x85,0x29,0xC2,0xE0,0x10,
+0x01,0xEC,0x77,0x01,0x0C,0x85,0x29,0xC3,0x40,0x10,0x01,0xFF,0x5A,0x00,0xFC,0x0C,
+0x1A,0x00,0x9A,0xE1,0xC3,0x20,0x10,0x01,0xFF,0x39,0x01,0x18,0x0E,0xF9,0x00,0xC3,
+0x00,0x10,0x01,0xFF,0x18,0x04,0xA0,0x0C,0x18,0x00,0x0C,0x1A,0x04,0x0E,0xF9,0x04,
+0x0C,0x18,0x04,0x0C,0x1A,0x08,0x0E,0xF9,0x08,0x0C,0x18,0x08,0x0C,0x1A,0x0C,0x0E,
+0xF9,0x0C,0x0C,0x18,0x0C,0xC3,0x00,0x10,0x01,0xEE,0xF8,0x01,0x34,0x85,0x29,0x9C,
+0x38,0x0D,0x41,0x04,0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0x5C,0xA5,0x00,0x5C,
+0xC6,0x00,0xF3,0x38,0x06,0xAA,0xFE,0xF7,0x01,0x34,0xD7,0x25,0x00,0x6A,0xF8,0xB8,
+0x06,0xAA,0x9B,0x01,0x0F,0x17,0x00,0xC3,0x80,0x10,0x01,0xC3,0x00,0x10,0x01,0x0F,
+0x37,0x02,0xFF,0x9C,0x01,0x18,0xFF,0x18,0x00,0xFC,0x23,0x24,0x9A,0x0B,0xA3,0x00,
+0x4F,0x46,0x18,0x43,0x78,0xD4,0x0F,0xBB,0x00,0x0B,0xA4,0x00,0x0F,0xBB,0x04,0x8F,
+0x5C,0x0F,0x3A,0x00,0x0F,0x3A,0x04,0x40,0xA5,0x35,0x20,0xA4,0x1A,0x0C,0x17,0x00,
+0x4E,0xE6,0x18,0x8E,0xF8,0x0C,0xF7,0x02,0x08,0xA3,0x00,0x0D,0x17,0x02,0x0F,0xB7,
+0x06,0x0F,0x37,0x06,0x42,0xE7,0x2D,0x4C,0xF7,0xFA,0x46,0xE7,0xBE,0x0B,0x44,0x00,
+0x40,0xF7,0x3D,0x43,0x39,0xD5,0x4E,0xF9,0xFA,0x47,0x37,0xCE,0x42,0xF9,0xBD,0x41,
+0x08,0x2D,0x43,0xBD,0xD5,0x4F,0xC8,0xFA,0x4F,0x7D,0xFA,0x45,0x1E,0x46,0x47,0xBB,
+0xEE,0x43,0xC8,0xF5,0x43,0x7D,0xDD,0x43,0xC7,0xF3,0x43,0x7B,0xBB,0x9B,0x21,0x8F,
+0x7E,0x9A,0xE3,0xE4,0x00,0x00,0x11,0x8F,0x37,0x9E,0xE2,0xD7,0x3B,0xFF,0xE1,0xC3,
+0x20,0x10,0x01,0x4E,0xF7,0x09,0x53,0x40,0x1E,0x9E,0xFF,0x5E,0xF7,0x06,0xEE,0xF9,
+0x06,0xB8,0xC3,0x20,0x10,0x01,0x42,0xF7,0xD1,0xEF,0x39,0x01,0x0E,0x42,0xF7,0xBB,
+0x43,0x39,0xBD,0xC2,0xE0,0x10,0x01,0x5F,0x23,0x11,0x20,0x00,0x1B,0x53,0x20,0x19,
+0xEF,0x37,0x04,0xC0,0xC3,0xA0,0x10,0x01,0xEC,0xB7,0x04,0xC2,0x4C,0xC6,0x08,0x9A,
+0xE0,0xFF,0xBD,0x04,0xA0,0xCB,0x40,0x10,0x00,0x43,0x26,0xBC,0x4F,0x39,0x10,0x43,
+0x7C,0xCC,0xC9,0x40,0xA0,0x00,0x0D,0x1B,0x02,0x0F,0xDB,0x02,0x43,0x68,0x53,0xCF,
+0xDE,0x00,0x0A,0x8F,0xC5,0x43,0xDB,0xF0,0x43,0x7D,0xCC,0x0F,0xDB,0x00,0x5F,0xD7,
+0x00,0x23,0xC0,0x92,0x43,0xD8,0xCC,0x0D,0x1E,0x02,0x0F,0x7B,0x02,0x0F,0x3E,0x02,
+0x0B,0xC3,0x00,0x43,0x3E,0xCD,0x43,0x3B,0xCB,0x43,0x39,0xD0,0x8F,0x28,0x0F,0x23,
+0x01,0xE4,0x00,0x00,0x43,0x43,0xD8,0xCC,0x0D,0x1E,0x02,0x0F,0x7B,0x02,0x0F,0x3E,
+0x02,0x0B,0xC4,0x00,0x43,0x3E,0xCD,0x43,0x3B,0xCB,0x43,0x39,0xD0,0x8F,0x28,0x0F,
+0x24,0x01,0x43,0x66,0xBC,0x4F,0x7B,0x10,0x43,0xD8,0xDC,0x0F,0x3E,0x00,0x43,0x3C,
+0xDC,0x8F,0x7D,0x0F,0xD9,0x02,0x0D,0x1B,0x02,0x0F,0x79,0x02,0x43,0x68,0xDB,0x43,
+0x7B,0xD0,0x43,0x7E,0xDD,0x0F,0x79,0x00,0x9E,0xE1,0xD2,0xE2,0xFB,0x7E,0x0D,0x41,
+0x06,0x9C,0x28,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x04,0x95,0xC2,0xE0,0x10,
+0x01,0x5C,0x63,0x04,0xEC,0x77,0x04,0x93,0x56,0xE3,0x03,0x5E,0xE0,0x09,0x4A,0xE1,
+0x01,0x4C,0x63,0x11,0x8C,0x77,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x04,0x88,0xC2,0xE0,
+0x10,0x01,0xF8,0xB7,0x06,0xA8,0xC2,0xE0,0x10,0x01,0xEC,0xD7,0x04,0xB0,0xC2,0xE0,
+0x10,0x01,0xEC,0xF7,0x06,0xAD,0xC2,0xE0,0x10,0x01,0x0B,0x01,0x01,0xED,0x17,0x06,
+0xB1,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x04,0x91,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x06,0xAE,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x06,0xAE,0xC2,0xE0,0x10,
+0x01,0xF2,0xF7,0x06,0xA8,0x9E,0xFF,0x5E,0xF8,0x15,0x48,0x61,0x01,0x85,0x29,0x9C,
+0x38,0x0D,0x21,0x04,0xE7,0xFF,0xFF,0xC2,0x9A,0xE0,0x20,0x60,0x4E,0xC2,0xE0,0x10,
+0x01,0xF3,0x17,0x06,0xAE,0x9F,0x01,0xFB,0x17,0x06,0xAE,0x9A,0xE1,0x88,0x77,0x0D,
+0x21,0x06,0x9C,0x28,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x04,0x93,0xC2,0xE0,
+0x10,0x01,0xC3,0x20,0x10,0x01,0xF3,0x57,0x06,0xAE,0xFF,0x39,0x04,0xC8,0x9A,0xE0,
+0x4F,0x5A,0x28,0xE4,0x00,0x00,0x39,0x4F,0x77,0x08,0x8F,0x63,0x0B,0x9B,0x00,0x43,
+0x7A,0xBC,0x9E,0xE1,0x4F,0x7B,0x08,0x5E,0xF7,0x00,0x8F,0x79,0x0F,0x9B,0x01,0xD7,
+0x17,0xFF,0x45,0x85,0x29,0x9C,0x30,0x0D,0x21,0x0C,0x0D,0x41,0x08,0x18,0x01,0x06,
+0x89,0x43,0x18,0x01,0x07,0xE7,0xFF,0xF2,0x5C,0x1C,0x61,0x06,0x1C,0x81,0x07,0xE7,
+0xFF,0xF0,0x2A,0x10,0x61,0x06,0x10,0x81,0x07,0xE7,0xFF,0xF3,0x5E,0xC2,0xE0,0x10,
+0x01,0x13,0x41,0x06,0xEB,0x37,0x04,0x93,0x13,0x61,0x07,0xC3,0x00,0x10,0x01,0x9A,
+0xE0,0xFF,0x18,0x04,0xC8,0x4F,0x5A,0x28,0x4F,0x7B,0x28,0x9B,0x82,0xE4,0x00,0x00,
+0x59,0x43,0xDA,0xBC,0x4F,0xDE,0x08,0x8F,0xD8,0x4F,0xB7,0x08,0x09,0x1E,0x00,0x8F,
+0xAA,0x43,0xDB,0xBC,0x9E,0xE1,0x4F,0xDE,0x08,0x5E,0xF7,0x00,0x8F,0xD8,0x0B,0xDE,
+0x00,0x8F,0xC8,0x43,0xDE,0xE0,0x0F,0xDD,0x01,0xD7,0x37,0xFE,0xC5,0x0D,0x41,0x0A,
+0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0x1C,0x21,0xC8,0x0D,0x41,0x30,0x0D,0x61,
+0x2C,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x5D,0xA5,0x04,0x0D,0x21,0x34,0x50,0xA0,0x20,
+0x0D,0x81,0x28,0x89,0x43,0x89,0x64,0x5D,0xC6,0x04,0x88,0x61,0xC0,0x98,0x00,0x21,
+0xFC,0x84,0xB4,0x94,0x9C,0x86,0xE4,0x00,0x0B,0xA6,0xC2,0xE0,0x10,0x01,0xC3,0x00,
+0x10,0x01,0xEB,0x77,0x06,0xAD,0xC2,0xE0,0x10,0x01,0xF3,0x58,0x04,0x88,0xEB,0x97,
+0x06,0xB1,0x9F,0x61,0x9F,0x81,0x5F,0x7B,0x04,0x5F,0x9C,0x04,0xCC,0xAD,0x00,0x18,
+0xC2,0xE0,0x10,0x01,0x43,0xDB,0xE4,0xEA,0xF7,0x04,0x91,0x4F,0xDE,0x18,0x0B,0x01,
+0x01,0x8F,0xD7,0x43,0xDE,0xD3,0x43,0xC5,0xF0,0x5F,0xDE,0x04,0xD7,0x1E,0x00,0x69,
+0x0F,0x0A,0x01,0x9B,0x20,0xE4,0x00,0x00,0x4D,0x9B,0x00,0x89,0x81,0x8B,0x38,0x4F,
+0xB8,0x08,0x5D,0x18,0x00,0x8F,0xAC,0x0B,0xBD,0x01,0xD7,0xBE,0x00,0x8D,0x0F,0xAA,
+0x01,0x9F,0x01,0x8B,0x28,0x5F,0x02,0x09,0x23,0xFF,0x9D,0x43,0x1C,0xDC,0x0B,0x6A,
+0x01,0x4F,0x18,0x18,0x43,0x5B,0xD3,0xCC,0xCE,0x00,0x18,0x43,0x78,0xBC,0x43,0x7A,
+0xDB,0xD4,0xDB,0x01,0x11,0xE4,0x00,0x00,0x2F,0x43,0x77,0xC4,0x43,0x7B,0xD3,0xD7,
+0x66,0x00,0x41,0xD4,0xBB,0x00,0x85,0x9E,0xE1,0x5E,0xF7,0x04,0xC2,0xE0,0x7F,0xEA,
+0x23,0xFF,0xA5,0x0E,0xEB,0x01,0x0D,0xC1,0x22,0x0A,0xEA,0x01,0x0D,0xA1,0x26,0x4E,
+0xF7,0x40,0x0D,0x81,0x2A,0x47,0x39,0xBD,0x0D,0x61,0x2E,0x0F,0x2A,0x01,0x0D,0x21,
+0x36,0x0D,0x41,0x32,0x1C,0x21,0x38,0x85,0x29,0x9C,0x30,0x5C,0x63,0x00,0x0D,0x41,
+0x08,0x0D,0x61,0x04,0x4C,0x63,0x08,0xC2,0xF8,0x00,0x21,0x0D,0x21,0x0C,0xFE,0xF7,
+0xB6,0xFA,0x99,0x40,0x8E,0xE3,0x09,0x77,0x01,0x88,0x6A,0x88,0x8B,0x9D,0x41,0xE4,
+0x00,0xC0,0x92,0x5D,0x4A,0x00,0xD1,0x44,0xFF,0x9E,0x0D,0x61,0x06,0x0D,0x41,0x0A,
+0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,0xDD,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0xF0,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0xD8,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x06,0xE4,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF3,
+0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xE9,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF8,
+0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x06,0xDD,0xC2,0xE0,0x10,0x01,0xF8,0x17,
+0x06,0xD8,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,0xF0,0xC2,0xE0,0x10,0x01,0xF8,0x77,
+0x06,0xE4,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF3,0xC2,0xE0,0x10,0x01,0xEC,0x17,
+0x06,0xE9,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF8,0x24,0x6C,0x1F,0xE7,0xFF,0xFE,
+0x99,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0x5C,0x63,0x04,0xEC,0x77,
+0x06,0xE9,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x06,0xF8,0xF3,0x78,0x06,0xD8,0xC3,0x40,
+0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,0x00,0x10,0x01,0xFF,0x5A,0x06,0xF0,0xFF,0x39,
+0x06,0xE4,0x23,0x60,0x2C,0xEB,0x78,0x06,0xF3,0xD7,0x63,0x00,0xA1,0x13,0x5A,0x00,
+0xEC,0x78,0x06,0xF3,0x1B,0x59,0x00,0x9B,0x01,0xEF,0x17,0x06,0xF8,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xEB,0x17,0x06,0xE9,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x06,0xDD,0x5E,
+0xF8,0x1F,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0xD8,0x5E,
+0xE0,0x5B,0x48,0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x06,0xD8,0x27,
+0x08,0x7B,0x9F,0x01,0xFB,0x17,0x06,0xD8,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x06,0xF0,
+0x9C,0x61,0x54,0x63,0x03,0xF8,0x77,0x06,0xF0,0xE7,0xFF,0xFD,0x61,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xF8,0x77,0x01,0x3A,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x06,0xE0,0xC2,
+0xE0,0x10,0x01,0xEC,0xB7,0x06,0xD4,0xC2,0xE0,0x10,0x01,0xEC,0xD7,0x06,0xEC,0x85,
+0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xEF,0x18,0x06,0xEE,0x5C,0x63,0x04,
+0xEC,0x77,0x06,0xDB,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0xF4,0x4E,0xF7,0x08,0x8E,
+0xF8,0xC3,0x00,0x10,0x01,0xEF,0x18,0x06,0xD6,0x0A,0xF7,0x01,0xCB,0x20,0xFF,0xFF,
+0x4E,0xF7,0x08,0x8E,0xF8,0x0B,0x17,0x01,0xD7,0x19,0x00,0x5E,0x0C,0x77,0x01,0xE4,
+0x00,0x00,0x4B,0xC3,0x20,0x10,0x01,0xEB,0x39,0x08,0xE7,0xC7,0x39,0x20,0x00,0x23,
+0x20,0x54,0xCF,0x18,0x00,0x07,0xCC,0x63,0x00,0x03,0x9B,0x2A,0x8F,0x03,0x43,0x18,
+0xC8,0x0F,0x17,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0x9C,0x38,0xC3,0x20,0x10,0x01,
+0x0E,0xC1,0x04,0xF3,0x17,0x01,0x3A,0x4E,0xF8,0x08,0x9E,0xE8,0xC6,0xF7,0x03,0xF8,
+0x1E,0xC1,0x08,0x88,0x81,0xEF,0xB9,0x06,0xD6,0x40,0x21,0xBD,0x9B,0x20,0x8A,0xE1,
+0x8B,0x59,0xE4,0x00,0x00,0x43,0x4F,0x99,0x08,0x43,0x7D,0xE4,0x8F,0x97,0x0B,0x7B,
+0x01,0x0F,0x7C,0x01,0xCB,0x80,0xFF,0xFF,0xD7,0x7C,0x00,0x4E,0x9F,0x41,0x5F,0x5A,
+0x00,0x9F,0x21,0x5F,0x79,0x00,0xD7,0x1B,0xFF,0x05,0xC3,0x60,0x10,0x01,0xFF,0x7B,
+0x06,0xE6,0x0C,0x1B,0x01,0x9B,0x20,0x23,0x40,0xE0,0xE4,0x00,0x00,0x8F,0x1F,0x99,
+0x01,0x4F,0x39,0x08,0x5F,0x9C,0x00,0x8F,0x37,0x8B,0x5C,0xE4,0x00,0x00,0x3D,0x4F,
+0xBA,0x08,0x0B,0xD9,0x01,0x8F,0xB7,0x09,0x1D,0x01,0xD7,0xC8,0x00,0x51,0x0D,0x19,
+0x01,0x0F,0xDD,0x01,0x9F,0x41,0x5F,0x5A,0x00,0xD7,0x58,0xFF,0x36,0x8B,0x3C,0xD7,
+0x38,0xFE,0x7E,0x0B,0x17,0x01,0x0A,0xF7,0x03,0x8E,0xF8,0x4E,0xF7,0x0A,0x0E,0xFB,
+0x01,0x08,0x7B,0x01,0x88,0x24,0x0E,0xC1,0x06,0x9C,0x28,0x85,0x29,0x5C,0x63,0x04,
+0xC3,0x00,0x10,0x01,0xEF,0x18,0x06,0xEE,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x06,0xF4,
+0x4E,0xF7,0x08,0x8E,0xF8,0xC3,0x00,0x10,0x01,0x0A,0xF7,0x01,0xEF,0x18,0x06,0xD6,
+0x4E,0xF7,0x08,0x8E,0xF8,0x0A,0xF7,0x01,0x5E,0xE3,0x1F,0x48,0x61,0x01,0x85,0x29,
+0x5C,0x63,0x04,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x06,0xDB,0x5E,0xE3,0x1F,0x48,0x61,
+0x01,0x85,0x29,0x1C,0x21,0xE0,0x0D,0x61,0x14,0x0E,0xC1,0x04,0x0D,0x21,0x1C,0x0D,
+0x41,0x18,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xC1,0x08,0xC3,0x20,0x10,0x01,0xC2,
+0xE0,0x10,0x01,0xF3,0x59,0x06,0xF4,0xF2,0xF7,0x01,0x3A,0x9F,0x41,0x5F,0x5A,0x00,
+0x43,0x1A,0xB9,0x43,0x18,0xBB,0x43,0x1A,0xC5,0x5F,0x18,0x00,0xFB,0x19,0x06,0xF4,
+0x1E,0xC1,0x20,0x89,0x61,0xD3,0x00,0x04,0xA6,0x4F,0x17,0x08,0x9F,0x08,0xC7,0x18,
+0x03,0xF8,0x89,0x81,0x40,0x21,0xC5,0xC3,0x00,0x10,0x01,0x8B,0x61,0xEF,0x58,0x06,
+0xD6,0x9B,0x00,0xE4,0x00,0x00,0x29,0x4F,0x38,0x08,0x9F,0x01,0x43,0x9B,0xCC,0x8F,
+0x3A,0x0B,0x39,0x01,0x0F,0x3C,0x01,0x5F,0x38,0x00,0xD6,0xF9,0xFF,0x6D,0xC3,0x00,
+0x10,0x01,0xEF,0x98,0x06,0xEE,0x9B,0x00,0x8B,0x3C,0xE4,0x00,0x00,0x93,0x1F,0xB8,
+0x01,0x4F,0x18,0x08,0x5F,0xBD,0x00,0x8F,0x1B,0x8B,0x5D,0xE4,0x00,0x00,0x61,0x4F,
+0xDA,0x08,0x09,0x58,0x01,0x41,0x1B,0xF4,0x08,0x68,0x01,0xD5,0x43,0x00,0xD9,0x0C,
+0x78,0x01,0x0D,0x48,0x01,0x8F,0xDC,0x09,0x19,0x01,0x09,0x5E,0x01,0x0D,0x59,0x01,
+0x55,0x08,0xFF,0x0D,0x1E,0x01,0x9F,0x41,0x5F,0x5A,0x00,0xD7,0x57,0xFE,0xA6,0x9F,
+0x22,0x8B,0x1D,0xD7,0x17,0xFD,0xDE,0x88,0x2C,0x99,0x40,0xC1,0x80,0x10,0x01,0xC1,
+0xA0,0x10,0x01,0xC1,0xC0,0x10,0x01,0xEF,0x0D,0x06,0xEE,0xF2,0xEE,0x06,0xF4,0x4E,
+0xF7,0x08,0x8E,0xF8,0xEF,0x0C,0x06,0xE2,0x0A,0xF7,0x01,0x4E,0xF7,0x08,0x8E,0xF8,
+0x88,0x6A,0x08,0x97,0x01,0x9D,0x41,0xE4,0x00,0xB9,0x22,0x5D,0x4A,0x00,0xD1,0x44,
+0xFE,0xCE,0x88,0x2B,0x0E,0xC1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,
+0x0D,0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0x1C,0x21,
+0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x0D,0xA1,
+0x04,0x0D,0x21,0x14,0xF8,0x17,0x06,0xF4,0x99,0x40,0xC1,0x60,0x10,0x01,0xC1,0x80,
+0x10,0x01,0x89,0xB7,0xEF,0x0C,0x06,0xEE,0xF2,0xED,0x06,0xF4,0x4E,0xF7,0x08,0x8E,
+0xF8,0xEF,0x0B,0x06,0xE2,0x0A,0xF7,0x01,0x4E,0xF7,0x08,0x8E,0xF8,0x88,0x6A,0x08,
+0x97,0x01,0x9D,0x41,0xE4,0x00,0xB8,0x48,0x5D,0x4A,0x00,0xD1,0x44,0xFE,0xCE,0xC2,
+0xE0,0x10,0x01,0xF3,0x37,0x01,0x3A,0xC2,0xE0,0x10,0x01,0x9B,0x5F,0xEF,0x17,0x06,
+0xD6,0x9A,0xE0,0xE4,0x00,0x00,0x1D,0x0F,0x58,0x01,0x9E,0xE1,0x9F,0x02,0x5E,0xF7,
+0x00,0xD6,0xF9,0xFF,0xB6,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,
+0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0x8B,0x03,0x56,0xE3,0x03,0x22,0xE0,
+0x98,0x9B,0x04,0x42,0xF8,0xBD,0x5F,0x44,0x00,0x5E,0xE5,0x17,0x4B,0x37,0x28,0x9A,
+0xE0,0xE4,0x00,0x00,0x13,0x1B,0x58,0x00,0x9E,0xE1,0x43,0x03,0xBC,0xD6,0xF9,0xFF,
+0xC6,0x40,0xA5,0xBD,0x4E,0xE4,0x80,0x4F,0x64,0xC0,0x47,0x7B,0xBD,0x4E,0xE4,0x40,
+0x47,0x7B,0x25,0x4F,0x45,0x11,0x47,0x7B,0xBD,0x9A,0xE0,0xE4,0x00,0x00,0x17,0x8F,
+0x38,0x9E,0xE1,0x0F,0x79,0x00,0x4F,0x37,0x10,0xD6,0xFA,0xFF,0xB6,0x8F,0x19,0x9A,
+0xE0,0x54,0xA5,0x03,0x5C,0x84,0x00,0xE4,0x00,0x00,0x19,0x43,0x37,0xC4,0x9E,0xE1,
+0x18,0x99,0x00,0xD4,0xB7,0xFF,0xC5,0x85,0x29,0x46,0xE4,0x1D,0x56,0xF7,0x03,0x22,
+0xE0,0x82,0x9A,0xFC,0x47,0x45,0xBC,0x9A,0xE0,0xE4,0x00,0x00,0x51,0x43,0x03,0xBC,
+0x43,0x24,0xBC,0x9E,0xE1,0x13,0x39,0x00,0x1B,0x38,0x00,0xE4,0x00,0x00,0x0D,0x9A,
+0xE0,0xD6,0xE5,0xFF,0x66,0xE4,0x00,0x00,0x63,0x0F,0x39,0x02,0x9E,0xE4,0x0F,0x38,
+0x00,0x43,0x03,0xBC,0x43,0x24,0xBC,0xD6,0xFA,0xFF,0x96,0x9A,0xE0,0x54,0xA5,0x03,
+0xE4,0x00,0x00,0x25,0x43,0x57,0xC4,0x43,0x77,0xCC,0x9E,0xE1,0x13,0x7B,0x00,0x1B,
+0x7A,0x00,0xD4,0xB7,0xFF,0x95,0x85,0x29,0x1C,0x21,0xE0,0x0D,0x21,0x1C,0x0D,0x41,
+0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xC1,0x08,0x0D,0xE1,0x04,
+0x0E,0x01,0x00,0xE4,0x00,0x62,0x70,0xC1,0x60,0x10,0x01,0xC0,0x60,0x00,0x21,0xFD,
+0x4B,0x00,0xCC,0xFC,0x63,0xB0,0xE4,0xC0,0x80,0x10,0x01,0xC0,0xA0,0x10,0x01,0xFC,
+0x84,0x00,0x00,0xFC,0xA5,0x01,0xD8,0x40,0xA5,0x25,0xE4,0x00,0x5D,0x46,0x0C,0x0A,
+0x01,0x0C,0x0A,0x03,0x0C,0x0A,0x05,0x0C,0x0A,0x08,0xC2,0xE0,0x10,0x01,0xEC,0x17,
+0x00,0xBB,0x0C,0x0A,0x0C,0x9A,0xEA,0xC1,0xA0,0x10,0x01,0x0E,0xEA,0x11,0xEC,0x0D,
+0x07,0x00,0x50,0x60,0x26,0xE4,0x00,0x1F,0x86,0xC8,0x80,0xE1,0x00,0x98,0x60,0xE4,
+0x00,0x2A,0xD6,0x98,0x63,0xE4,0x00,0x29,0xF2,0xE4,0x00,0x03,0x54,0xC2,0xE0,0x10,
+0x01,0x9B,0x3C,0xF3,0x17,0x08,0x87,0x47,0x18,0xCC,0xFC,0x60,0x0B,0xB8,0xFB,0x17,
+0x08,0x87,0x04,0x80,0x5B,0xC8,0x84,0x8D,0x80,0xE4,0x00,0x2A,0x26,0x98,0x61,0xC1,
+0x80,0x10,0x01,0xE4,0x00,0x2A,0x1A,0x99,0xC1,0xC1,0x60,0x10,0x01,0xC1,0xE0,0x10,
+0x01,0xC2,0x00,0x10,0x01,0xE4,0x00,0x29,0xE6,0x0E,0xEA,0x0E,0x22,0xE0,0x2C,0xD2,
+0xE1,0x0A,0x4E,0xE4,0x00,0x00,0xC5,0xE4,0x00,0x5C,0x34,0xE4,0x00,0x29,0xFA,0x0C,
+0x6A,0x13,0xE4,0x00,0x29,0xEC,0x0C,0x6A,0x17,0xE4,0x00,0x29,0xDE,0x0C,0x6A,0x1B,
+0xE4,0x00,0x29,0xD0,0x0C,0x6A,0x19,0xEA,0xEC,0x06,0xFF,0xC6,0xF7,0xFF,0xDF,0xEE,
+0xEC,0x06,0xFF,0xEA,0xEC,0x06,0xFF,0xC6,0xF7,0xFF,0x7F,0xEE,0xEC,0x06,0xFF,0x0D,
+0xCA,0x0C,0xEA,0xEB,0x08,0xE7,0x52,0xF7,0x80,0xEC,0x0D,0x07,0x00,0xEE,0xEB,0x08,
+0xE7,0x98,0x61,0xE4,0x00,0x1A,0x06,0x98,0x60,0xE4,0x00,0x30,0x3A,0xE4,0x00,0x2B,
+0x32,0xE4,0x00,0x01,0xCF,0xEE,0xED,0x07,0x02,0x22,0xE0,0x2C,0xD2,0xE1,0x06,0xE6,
+0xE4,0x00,0x00,0x9B,0x98,0x61,0xE4,0x00,0x1A,0x3E,0xD0,0x61,0x06,0x76,0xE4,0x00,
+0x1C,0x90,0x20,0x64,0xAA,0xE4,0x00,0x1C,0x6E,0xEA,0xEB,0x08,0xE7,0xFF,0x00,0xFF,
+0x7F,0x46,0xF7,0xC4,0xEC,0x0F,0x08,0xC0,0xEE,0xEB,0x08,0xE7,0xED,0xCD,0x07,0x00,
+0xE4,0x00,0x64,0x7E,0xE4,0x00,0x64,0x1E,0xE4,0x00,0x01,0x41,0xE4,0x00,0x1C,0x70,
+0x20,0x67,0x54,0x98,0x61,0xE4,0x00,0x1B,0xD0,0xE4,0x00,0x01,0x1F,0x0A,0xEA,0x01,
+0xC6,0xF7,0x01,0x00,0xD2,0xE0,0x04,0x22,0xE4,0x00,0x28,0x80,0x0A,0xEA,0x13,0x0B,
+0x0A,0x11,0x40,0x63,0xBD,0x5E,0xE3,0x04,0xD7,0x17,0x03,0x85,0xE4,0x00,0x28,0x58,
+0x0C,0x6A,0x13,0x0A,0xEA,0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0xE4,0x00,0x5D,
+0xA4,0xE4,0x00,0x64,0x88,0xE4,0x00,0x63,0x7C,0xEE,0xEF,0x08,0xC2,0xEE,0xF0,0x08,
+0xEC,0xE4,0x00,0x5E,0x90,0x98,0x61,0xE4,0x00,0x8A,0x72,0xE4,0x00,0x5F,0x08,0x98,
+0x61,0xE4,0x00,0x5F,0x48,0xE4,0x00,0x60,0xFC,0xE4,0x00,0x8B,0xD2,0xEA,0xEB,0x08,
+0xE7,0x56,0xF7,0x80,0x22,0xE0,0x90,0x0A,0xEA,0x01,0xC6,0xF7,0x01,0x00,0x22,0xE3,
+0xE4,0x0A,0xEA,0x01,0xC6,0xF7,0xFE,0xFF,0x0E,0xEA,0x01,0x0D,0xCA,0x0C,0xEC,0x0D,
+0x07,0x00,0x98,0x61,0xE4,0x00,0x18,0x24,0x0E,0xEA,0x0A,0xFC,0x60,0x1E,0x7F,0x9E,
+0xE1,0x0E,0xEA,0x08,0x0C,0x8A,0x0A,0xE4,0x00,0x28,0xB6,0xE4,0x00,0x27,0x86,0xE7,
+0xFF,0xFD,0x2D,0xE4,0x00,0xB2,0xBB,0x9C,0x38,0x0D,0x21,0x04,0x0D,0x41,0x00,0xE4,
+0x00,0xB4,0x16,0x98,0x6D,0xE4,0x00,0xA4,0x90,0x98,0x60,0xFC,0x80,0x18,0x08,0xE4,
+0x00,0xA6,0xD4,0x98,0x61,0xFC,0x80,0x18,0x08,0xE4,0x00,0xA6,0xC0,0x98,0x60,0x50,
+0x80,0x14,0xE4,0x00,0xAB,0xBA,0x98,0x60,0x98,0x8C,0xE4,0x00,0xAA,0xDC,0x98,0x61,
+0x50,0x80,0x14,0xE4,0x00,0xAB,0x98,0x98,0x61,0x98,0x8C,0x99,0x40,0xE4,0x00,0xAA,
+0xB6,0x88,0x6A,0x98,0x80,0x9D,0x41,0xE4,0x00,0xB1,0x22,0x5D,0x4A,0x00,0xD1,0x44,
+0xFF,0x9E,0x98,0x60,0x05,0x40,0xFF,0xC9,0x4A,0xFF,0xFF,0x88,0x8A,0xE4,0x00,0xA9,
+0x10,0x88,0x8A,0x98,0x60,0xE4,0x00,0xA6,0x98,0x88,0x8A,0x0D,0x21,0x06,0x0D,0x41,
+0x02,0x98,0x60,0x9C,0x28,0xE4,0x00,0xA7,0x79,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,
+0x10,0x1C,0x21,0xB0,0x0E,0xE1,0x10,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x07,0x04,0x0D,
+0x41,0x4C,0x0D,0x61,0x48,0x0D,0x81,0x44,0x0D,0xE1,0x38,0x0E,0x01,0x34,0x0E,0x21,
+0x30,0x0E,0x41,0x2C,0x0E,0x61,0x28,0x0E,0x81,0x24,0x0D,0xA1,0x40,0x0D,0xC1,0x3C,
+0x0E,0xA1,0x20,0x0E,0xC1,0x1C,0x0E,0xE1,0x0C,0xC2,0x60,0x10,0x01,0xC2,0x40,0x10,
+0x01,0xFE,0x73,0x07,0x24,0xFE,0x52,0x07,0x1C,0xC2,0x20,0x10,0x01,0xC2,0x00,0x10,
+0x01,0xFE,0x31,0x07,0x14,0xFE,0x10,0x07,0x28,0xC1,0xE0,0x10,0x01,0xC1,0x8F,0xFF,
+0xE1,0xFD,0xEF,0x07,0x20,0x9B,0x80,0xC2,0x98,0x00,0x21,0xC0,0xD8,0x00,0x21,0x13,
+0x53,0x00,0x0E,0xF2,0x02,0x0D,0x51,0x02,0x0F,0xB0,0x02,0x0F,0x6F,0x02,0x99,0x60,
+0xC9,0x8C,0xFF,0xFF,0x88,0xFC,0x53,0x20,0xFF,0xFE,0x94,0xB8,0x68,0xFC,0xC6,0xB8,
+0x6E,0xE4,0x00,0x01,0xC5,0x41,0x14,0xC4,0x9F,0x01,0x11,0x08,0x00,0x8D,0xA8,0x5D,
+0xAD,0x00,0xE4,0x00,0x00,0x11,0x9B,0x00,0x89,0xB8,0x5D,0x18,0x00,0xD7,0xC8,0xFF,
+0x45,0xC3,0x18,0x00,0x21,0xFF,0x18,0xB8,0x68,0x8F,0x0B,0x99,0x00,0x12,0xB8,0x00,
+0xCF,0x0D,0x00,0x0A,0x1E,0xD5,0xFF,0x8F,0x06,0x0E,0xC1,0x08,0x0F,0x01,0x14,0xE4,
+0x00,0x01,0x37,0x0F,0x01,0x16,0xCD,0xE8,0x00,0x0A,0x8D,0xF8,0x0A,0xCF,0x00,0x0E,
+0xC1,0x04,0x0F,0x01,0x0E,0x0E,0xC1,0x0A,0xD5,0x16,0x00,0x3A,0x0B,0x0F,0x0A,0x0D,
+0xE1,0x06,0xD5,0xE4,0x03,0xB4,0xD4,0x98,0x03,0x94,0x8D,0xCD,0x5D,0xCE,0x00,0xCF,
+0x0E,0x00,0x0A,0x8F,0x06,0x09,0xF8,0x06,0x0B,0x18,0x08,0x4F,0x18,0x50,0x41,0xEF,
+0x23,0x8D,0xF8,0xFD,0xEF,0x02,0x00,0x4D,0xEF,0x52,0x5D,0xEF,0x06,0x41,0xEF,0x7B,
+0x43,0x03,0x7D,0x4E,0xD8,0xFA,0x47,0x16,0xC6,0x43,0x18,0xB5,0xD7,0x0C,0x01,0x4C,
+0xC3,0x20,0x1F,0xE4,0x20,0x00,0x2D,0x89,0x5D,0x89,0x97,0x8B,0x3A,0x88,0xFC,0x8B,
+0xAA,0x8A,0xEC,0x8B,0x59,0x8B,0x87,0x8B,0x78,0x89,0x4F,0x89,0x98,0x88,0xEE,0x8B,
+0x3E,0xE4,0x00,0x00,0x2F,0xC3,0x40,0x1F,0xE0,0x20,0x00,0x1D,0xD6,0xF8,0x00,0x60,
+0x8B,0xAF,0x8A,0xF8,0x8B,0x5E,0x8B,0x8E,0x9D,0x01,0x5D,0xC8,0x00,0xD6,0xAE,0xFB,
+0x35,0x9D,0x61,0x5F,0xCB,0x00,0x0E,0xC1,0x12,0xD6,0xDE,0xF9,0x6D,0xC3,0x00,0x10,
+0x01,0x1B,0x53,0x00,0xFF,0x18,0x07,0x20,0x0E,0xF2,0x00,0x0D,0x51,0x00,0x0F,0xB0,
+0x00,0x0F,0x78,0x00,0xC3,0x20,0x1F,0xE0,0x20,0x01,0x55,0xCF,0x9C,0x00,0x0A,0xCC,
+0xE7,0x00,0x0A,0x8C,0xE6,0x0B,0x07,0x04,0x4F,0x18,0x50,0x8C,0xDC,0x08,0x67,0x02,
+0x0B,0x86,0x02,0x40,0x63,0x23,0x0B,0x46,0x04,0x8C,0x78,0x43,0x1B,0xBC,0xFC,0x63,
+0x02,0x00,0x4C,0x63,0x52,0x23,0x00,0xA8,0xC2,0xE0,0x1F,0xE0,0x20,0x00,0x8D,0x40,
+0x63,0xBB,0x40,0x9C,0x23,0x4E,0xFA,0x50,0x8E,0xE4,0xFE,0xF7,0x02,0x00,0x4E,0xF7,
+0x52,0x43,0x77,0xDB,0x8C,0x7B,0x40,0x63,0xC0,0xE4,0x00,0x00,0x0D,0x88,0x64,0x0E,
+0xC1,0x1E,0x0E,0xA1,0x22,0x0E,0x81,0x26,0x0E,0x61,0x2A,0x0E,0x41,0x2E,0x0E,0x21,
+0x32,0x0E,0x01,0x36,0x0D,0xE1,0x3A,0x0D,0xC1,0x3E,0x0D,0xA1,0x42,0x0D,0x81,0x46,
+0x0D,0x61,0x4A,0x0D,0x41,0x4E,0x1B,0x25,0x00,0x1C,0x21,0x50,0x85,0x29,0x8B,0x23,
+0xC2,0xE0,0x10,0x01,0x5C,0xA5,0x00,0xF2,0xF7,0x07,0x10,0x98,0x60,0xD6,0xE5,0x0C,
+0xB9,0xD3,0x3F,0x0C,0x98,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,
+0x01,0xF2,0xF7,0x07,0x09,0xFF,0x18,0x07,0x07,0xFF,0x7B,0x07,0x08,0x22,0xE8,0x42,
+0x13,0x18,0x00,0x5F,0x08,0x9B,0x20,0x00,0x51,0xE4,0x00,0x01,0x3B,0xD2,0xE1,0x04,
+0xCE,0x13,0x18,0x00,0x5F,0x05,0x93,0x20,0x02,0x3D,0x24,0xA4,0x4B,0x9B,0x43,0x43,
+0x5A,0x2D,0x4F,0x5A,0x08,0x5F,0x5A,0x00,0xE4,0x00,0x00,0x37,0x20,0xA8,0x54,0x9B,
+0x44,0x43,0x5A,0x2D,0x4F,0x5A,0x08,0x5F,0x5A,0x00,0x20,0xAC,0xEE,0xE4,0x00,0x00,
+0x51,0x9B,0x43,0x9A,0xE0,0x13,0x9B,0x00,0x8B,0x17,0xE4,0x00,0x00,0x27,0x4F,0xB8,
+0x08,0x9F,0x01,0x8F,0xBC,0x5F,0x18,0x00,0x8E,0xFD,0x5E,0xF7,0x00,0xD7,0x05,0xFF,
+0x8E,0xE4,0x00,0x00,0x49,0x5E,0xE0,0x21,0x53,0x00,0x1D,0x52,0xE0,0x2F,0x4A,0xF8,
+0xB8,0xE4,0x00,0x00,0x4B,0x5E,0xE0,0x29,0x53,0x00,0x41,0x52,0xE0,0x29,0x4A,0xF8,
+0xB8,0xE4,0x00,0x00,0x2B,0x27,0x04,0x33,0x9F,0x9F,0x4F,0x18,0x08,0xE4,0x00,0x00,
+0x8B,0x9B,0x0A,0x20,0xA9,0x10,0x13,0x1B,0x00,0x9C,0xBF,0x9F,0x1F,0x4C,0xA5,0x08,
+0x8F,0x05,0xE4,0x00,0x00,0x65,0x9B,0x43,0x13,0xBB,0x00,0x43,0x5A,0x2D,0x9A,0xE0,
+0x4F,0x5A,0x08,0x8B,0x77,0x5F,0x5A,0x00,0xE4,0x00,0x00,0x21,0x8F,0x9D,0x9F,0x61,
+0x8E,0xFC,0x5F,0x7B,0x00,0x5E,0xF7,0x00,0x4F,0x9B,0x08,0xD7,0x65,0xFF,0x8E,0x1F,
+0x1D,0xFF,0x8F,0x1C,0x5F,0x18,0x00,0x4F,0x5A,0x08,0xC3,0xB8,0x00,0x21,0xFF,0xBD,
+0xB7,0x02,0x8F,0xBA,0x9B,0x40,0xE4,0x00,0x01,0x0B,0x4F,0x7A,0x08,0x8F,0x7D,0x0B,
+0x9B,0x00,0xD7,0x3C,0x03,0xBC,0x0B,0x7B,0x02,0xD7,0x79,0x03,0x84,0x8E,0xFA,0xC3,
+0xB8,0x00,0x21,0xCF,0x17,0x00,0x06,0xFF,0xBD,0xB7,0x1E,0x8F,0x1D,0x1F,0x57,0x01,
+0x14,0xD8,0x00,0xCF,0x5A,0x00,0x06,0x09,0x18,0x02,0x8F,0x5D,0x98,0x60,0x0B,0xB8,
+0x04,0x14,0xBA,0x00,0x0B,0xDA,0x02,0x0B,0x1A,0x04,0xD7,0x9B,0x02,0x52,0x42,0xF9,
+0xDD,0x40,0x77,0x33,0x43,0x3C,0xCD,0x43,0x59,0x2B,0x43,0xD9,0xF3,0x8F,0x43,0x40,
+0x77,0x43,0x43,0x5A,0x23,0x8C,0x7E,0x8C,0x7A,0x42,0xF7,0xEB,0x40,0x83,0x23,0x97,
+0x41,0x43,0x39,0xC3,0xCB,0x5A,0x86,0xA0,0x8F,0x37,0x40,0x64,0xD0,0x43,0x7C,0xDD,
+0x8C,0x79,0x40,0x63,0xD8,0xE4,0x00,0x00,0x1F,0x9F,0x41,0x5F,0x7A,0x00,0xD7,0x1B,
+0xFB,0xE5,0x98,0x60,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x77,0x07,0x09,0xC2,0xE0,
+0x10,0x01,0xF8,0x97,0x07,0x06,0xC2,0xE0,0x10,0x01,0xF8,0xB7,0x07,0x07,0xC2,0xE0,
+0x10,0x01,0xF8,0xD7,0x07,0x08,0xC2,0xE0,0x10,0x01,0xEC,0xF7,0x07,0x05,0x85,0x29,
+0x9A,0xFF,0x1C,0x21,0xD8,0x0D,0xE1,0x0C,0x1A,0xE1,0x07,0xC1,0xE0,0x10,0x01,0xFD,
+0xEF,0x07,0x24,0x1A,0xEF,0x00,0x52,0xE0,0xFF,0xC3,0x00,0x10,0x01,0x0D,0x41,0x20,
+0x0D,0x61,0x1C,0x0D,0xA1,0x14,0x0D,0xC1,0x10,0xCB,0x20,0xFF,0xFF,0xC1,0xC0,0x10,
+0x01,0xEF,0x38,0x07,0x2C,0xFD,0xCE,0x07,0x20,0xC1,0xA0,0x10,0x01,0x0E,0xEE,0x00,
+0xFD,0xAD,0x07,0x1C,0x0D,0x21,0x24,0x0E,0xED,0x00,0x0D,0x81,0x18,0xC2,0xE0,0x10,
+0x01,0x0E,0x01,0x08,0x89,0x63,0xF3,0x17,0x07,0x09,0x89,0x44,0x88,0x65,0xC2,0xE0,
+0x10,0x01,0x23,0x08,0x56,0xC3,0x00,0x10,0x01,0xF3,0x18,0x07,0x07,0x5F,0x08,0x9B,
+0x20,0x00,0x61,0xE4,0x00,0x00,0x37,0x23,0x04,0x5E,0xC3,0x00,0x10,0x01,0xF3,0x18,
+0x07,0x07,0x5F,0x05,0x93,0x20,0x00,0x25,0x9B,0x05,0xE4,0x00,0x00,0x0D,0x9B,0x04,
+0xFB,0x17,0x07,0x10,0xC2,0x00,0x10,0x01,0x0E,0xEB,0x02,0xEE,0xF0,0x07,0x2C,0x0A,
+0xE6,0x06,0x0C,0x8B,0x02,0xD4,0x97,0x04,0xCC,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,
+0xD1,0x53,0x18,0x01,0x1C,0xA1,0x07,0xEF,0x17,0x08,0xD1,0xE7,0xFF,0xF6,0x9C,0x0C,
+0x6B,0x00,0x0C,0x8A,0x02,0xED,0x90,0x07,0x2E,0x10,0xAF,0x00,0x88,0x6C,0xE7,0xFF,
+0xFA,0xC0,0xC2,0xE0,0x10,0x01,0x89,0x63,0xEC,0x77,0x07,0x0C,0x10,0xA1,0x07,0x0C,
+0x8A,0x02,0x88,0x6C,0xE7,0xFF,0xFA,0x94,0xC3,0x00,0x10,0x01,0xEC,0x78,0x07,0x18,
+0x0F,0x6E,0x02,0x0F,0x2D,0x02,0x0F,0x4A,0x02,0x43,0x1B,0xCC,0x23,0x00,0xEC,0xC3,
+0x20,0x1F,0xE0,0x20,0x00,0xD1,0xC3,0x80,0x10,0x01,0xEF,0xBC,0x07,0x16,0xC3,0x80,
+0x10,0x01,0xEF,0x9C,0x07,0x2A,0x43,0xBD,0xE5,0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,
+0x9D,0xE5,0xD7,0x1C,0x00,0xAC,0x41,0x6B,0xDB,0x42,0xE3,0xCB,0x8E,0xEB,0x43,0x17,
+0xC0,0x8F,0x58,0xE4,0x00,0x01,0x55,0x42,0xFA,0x1C,0xE4,0x00,0x01,0x5B,0xC9,0x80,
+0x07,0xFF,0x42,0xEC,0xBD,0xD6,0xE4,0x05,0x2C,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,
+0xD1,0x53,0x18,0x01,0x40,0x8C,0x25,0xEF,0x17,0x08,0xD1,0x1C,0xA1,0x07,0xE7,0xFF,
+0xF5,0x56,0x40,0x6C,0x1D,0x0C,0x6B,0x00,0xEE,0xF0,0x07,0x2E,0x0C,0x8A,0x02,0x41,
+0x8C,0xBD,0x10,0xAF,0x00,0x88,0x6C,0xE7,0xFF,0xF9,0x6E,0xC2,0xE0,0x10,0x01,0x89,
+0x63,0xEC,0x77,0x07,0x0C,0x10,0xA1,0x07,0x0C,0x8A,0x02,0x88,0x6C,0xE7,0xFF,0xF9,
+0x42,0xC3,0x00,0x10,0x01,0xEC,0x78,0x07,0x18,0x0F,0x6E,0x02,0x0F,0x2D,0x02,0x0F,
+0x4A,0x02,0x43,0x1B,0xCC,0x23,0x00,0xFC,0xC3,0x20,0x1F,0xE0,0x20,0x00,0xE1,0xC3,
+0x80,0x10,0x01,0xEF,0xBC,0x07,0x16,0xC3,0x80,0x10,0x01,0xEF,0x9C,0x07,0x2A,0x43,
+0xBD,0xE5,0x4F,0x9D,0xFA,0x47,0xBC,0xEE,0x43,0x9D,0xE5,0xD7,0x1C,0x00,0xCC,0x41,
+0x6B,0xDB,0x42,0xE3,0xCB,0x8E,0xEB,0x43,0x17,0xC0,0x43,0x5A,0xC5,0x0F,0x4A,0x00,
+0xE4,0x00,0x00,0x15,0x42,0xFA,0x1D,0x0E,0xEA,0x00,0x0E,0x01,0x0A,0x0D,0xE1,0x0E,
+0x0D,0xC1,0x12,0x0D,0xA1,0x16,0x0D,0x81,0x1A,0x0D,0x61,0x1E,0x0D,0x41,0x22,0x0D,
+0x21,0x26,0x1C,0x21,0x28,0x85,0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,0x61,0x24,
+0x0D,0x81,0x20,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,0x0D,0xE1,0x14,0x0E,0x01,0x10,0x0E,
+0x21,0x0C,0x0E,0x41,0x08,0x5E,0x23,0x00,0x0E,0x61,0x04,0x56,0x11,0x03,0x4E,0xF1,
+0x11,0x5E,0x00,0x09,0x99,0xC0,0x4A,0x41,0x01,0x99,0x80,0x9A,0x64,0x0D,0x21,0x2C,
+0x8E,0x57,0x89,0x44,0x89,0xAE,0x89,0x6C,0x99,0xE0,0x42,0x73,0x25,0xE4,0x00,0x00,
+0xF3,0x42,0xF3,0x54,0xD6,0xF1,0x01,0xD8,0x22,0x04,0x4A,0x51,0xC0,0x10,0x11,0x6A,
+0x00,0x89,0xAE,0x51,0x80,0x10,0xE4,0x00,0x00,0x6B,0x22,0x08,0x4A,0x51,0xC0,0x10,
+0x11,0x6A,0x00,0x11,0x8A,0x01,0x89,0xAE,0xE4,0x00,0x00,0x47,0x22,0x0C,0x7E,0x11,
+0x6A,0x00,0x11,0x8A,0x01,0x11,0xAA,0x02,0x51,0xC0,0x10,0xE4,0x00,0x00,0x21,0x11,
+0x6A,0x00,0x11,0x8A,0x01,0x11,0xAA,0x02,0x11,0xCA,0x03,0x4E,0xEC,0x80,0x4C,0x8C,
+0xC0,0x8C,0x97,0x4E,0xEE,0x80,0x4F,0x0B,0x40,0x4C,0xAE,0xC0,0x8C,0xB7,0x4E,0xED,
+0x40,0x88,0x6F,0x8C,0x8B,0x8C,0xAD,0x8C,0x98,0x8C,0xB7,0x9D,0xE1,0xE4,0x00,0x97,
+0x50,0x5D,0xEF,0x00,0x9D,0x44,0xD5,0xF2,0xFC,0x5E,0x0E,0x61,0x06,0x0E,0x41,0x0A,
+0x0E,0x21,0x0E,0x0E,0x01,0x12,0x0D,0xE1,0x16,0x0D,0xC1,0x1A,0x0D,0xA1,0x1E,0x0D,
+0x81,0x22,0x0D,0x61,0x26,0x0D,0x41,0x2A,0x0D,0x21,0x2E,0x1C,0x21,0x30,0x85,0x29,
+0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x00,0xDA,0x5E,0xE0,0x41,0x1C,0x21,0xE8,0x0D,0x61,
+0x0C,0x0D,0x81,0x08,0x0D,0xA1,0x04,0x0D,0x21,0x14,0x0D,0x41,0x10,0x89,0x63,0x5D,
+0x84,0x00,0x49,0xA1,0x01,0xE4,0x00,0x53,0xA8,0xC3,0x14,0x00,0x01,0xCB,0x18,0x7A,
+0x30,0x0A,0xF8,0x01,0xC6,0xF7,0x01,0x00,0x5E,0xF7,0x04,0x22,0xE3,0xD8,0xFC,0x60,
+0x01,0x00,0x99,0x40,0xE4,0x00,0x17,0xA0,0xE4,0x00,0x00,0x31,0x88,0x6A,0x98,0x81,
+0x88,0xAD,0x9D,0x41,0xE4,0x00,0xA8,0x62,0x5D,0x4A,0x00,0x0C,0x6B,0x01,0x9D,0x62,
+0xD5,0x4C,0xFF,0x66,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,
+0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0xFC,0x21,0xFD,0xF0,0xED,0x41,0x02,0x08,
+0xED,0xC1,0x01,0xF8,0xED,0xE1,0x01,0xF4,0xEE,0x01,0x01,0xF0,0xED,0x21,0x02,0x0C,
+0xED,0x61,0x02,0x04,0xED,0x81,0x02,0x00,0xED,0xA1,0x01,0xFC,0xEE,0x21,0x01,0xEC,
+0xEE,0x41,0x01,0xE8,0xEE,0x61,0x01,0xE4,0xEE,0x81,0x01,0xE0,0xC2,0x00,0x10,0x01,
+0xC1,0xC0,0x10,0x01,0xC1,0xE0,0x10,0x01,0x89,0x43,0xFE,0x10,0x08,0x58,0xFD,0xCE,
+0x08,0x79,0xFD,0xEF,0x08,0x76,0x20,0x60,0x30,0x20,0x68,0x98,0x20,0x64,0x30,0x24,
+0x64,0x63,0x99,0x80,0xE4,0x00,0x00,0x0D,0x99,0x81,0xCD,0x8C,0x00,0x1A,0x51,0x60,
+0x1A,0x8D,0x90,0xE4,0x00,0x00,0x41,0xD0,0x64,0x00,0x82,0xD0,0x65,0x00,0xA2,0x99,
+0x80,0x89,0x6C,0xE4,0x00,0x00,0x21,0x89,0x8F,0x99,0x63,0xE4,0x00,0x00,0x11,0x89,
+0x8E,0x99,0x68,0x9A,0xE0,0x8A,0x81,0x53,0x20,0x10,0xE4,0x00,0x00,0x19,0x43,0x14,
+0xBC,0x9E,0xE1,0x1B,0x38,0x00,0x5F,0x17,0x00,0xD5,0x78,0xFF,0xAD,0x88,0x6B,0x88,
+0x81,0x99,0xA3,0xE7,0xFF,0xFB,0xE8,0x8A,0x81,0xFE,0x20,0xFE,0xB0,0xCA,0x40,0x01,
+0x50,0x52,0x60,0x3F,0x1C,0x61,0x60,0x88,0x8B,0xE7,0xFF,0xFD,0x8E,0x1F,0x21,0x60,
+0x8B,0x01,0x9B,0x41,0xE4,0x00,0x00,0x93,0x0A,0xF9,0x00,0xC2,0xFF,0xD5,0xEC,0x20,
+0x00,0x39,0x43,0x71,0xBD,0xC3,0x60,0x2A,0x0C,0xE4,0x00,0x00,0x0F,0x5E,0xE0,0x19,
+0x4B,0x61,0x01,0x23,0x60,0x98,0xFE,0xF7,0x01,0x50,0x13,0x58,0x00,0x42,0xF7,0x90,
+0x8E,0xFA,0x5E,0xF7,0x06,0x26,0xFC,0x34,0x5E,0xE7,0xF1,0x4A,0xF7,0x98,0xE4,0x00,
+0x00,0x0D,0x9A,0xE0,0x1A,0xF8,0x00,0x9B,0x40,0x9F,0x01,0x9F,0x22,0x42,0xF8,0xA5,
+0x5E,0xF7,0x00,0xD5,0x77,0xFD,0xAD,0x23,0x40,0x24,0x9A,0xE0,0xE4,0x00,0x00,0x51,
+0x88,0x6B,0x88,0x81,0x9D,0xBF,0xE7,0xFF,0xFA,0xE2,0x5D,0xAD,0x00,0x21,0xA2,0x1E,
+0xE7,0xFF,0xFF,0xD5,0x43,0x0C,0xBC,0x1F,0x21,0x00,0x8F,0x37,0x9E,0xE1,0x13,0x39,
+0x00,0x1B,0x38,0x00,0x5F,0x17,0x00,0xD5,0x78,0xFF,0x6D,0x21,0x40,0x74,0x21,0x48,
+0x38,0x21,0x44,0x9C,0xD1,0x44,0x01,0xEA,0xD1,0x45,0x02,0x5A,0x99,0x60,0x99,0x80,
+0x88,0x8B,0x89,0x4C,0xE4,0x00,0x00,0x9B,0xC1,0x80,0x10,0x01,0x99,0x60,0x88,0x90,
+0xFD,0x8C,0x0A,0xFC,0xE4,0x00,0x00,0x2D,0xC0,0x80,0x10,0x01,0xC1,0x80,0x10,0x01,
+0x99,0x61,0xFC,0x84,0x08,0x72,0xFD,0x8C,0x0B,0x64,0x51,0x40,0x1A,0xE4,0x00,0x00,
+0x49,0xC1,0x80,0x10,0x01,0x99,0x68,0x88,0x8F,0xFD,0x8C,0x0B,0x88,0x99,0x43,0xE4,
+0x00,0x00,0x25,0xC1,0x80,0x10,0x01,0x99,0x6D,0x88,0x8E,0xFD,0x8C,0x0B,0xB0,0x99,
+0x48,0x88,0x6A,0xE7,0xFF,0xF9,0xC8,0xFD,0xA1,0x01,0x20,0x88,0x8A,0x88,0x6D,0xE7,
+0xFF,0xFB,0x82,0x9A,0xE0,0xE4,0x00,0x00,0x33,0x4F,0x17,0x10,0x4F,0x37,0x08,0x8F,
+0x0C,0x8F,0x2D,0x9E,0xE1,0x0B,0x39,0x00,0x4F,0x39,0x40,0x0F,0x38,0x00,0x5F,0x17,
+0x00,0xD5,0x58,0xFF,0x45,0x88,0x6B,0xE4,0x00,0x51,0xB8,0xED,0x21,0x02,0x0E,0xEE,
+0x81,0x01,0xE2,0xEE,0x61,0x01,0xE6,0xEE,0x41,0x01,0xEA,0xEE,0x21,0x01,0xEE,0xEE,
+0x01,0x01,0xF2,0xED,0xE1,0x01,0xF6,0xED,0xC1,0x01,0xFA,0xED,0xA1,0x01,0xFE,0xED,
+0x81,0x02,0x02,0xED,0x61,0x02,0x06,0xED,0x41,0x02,0x0A,0xFC,0x21,0x02,0x10,0x85,
+0x29,0x9C,0x38,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x04,0xFE,0xF7,0x08,0x58,0x9B,0x00,
+0x13,0x37,0x00,0x4F,0x39,0x08,0x9E,0xE1,0x8F,0x19,0xC3,0x20,0x10,0x01,0xFF,0x39,
+0x08,0x72,0xD6,0xF9,0xFF,0x76,0xC2,0xE0,0x10,0x01,0xF3,0x57,0x08,0x76,0xFE,0xF7,
+0x08,0x76,0x13,0x37,0x02,0x13,0x77,0x01,0x98,0x60,0x42,0xFB,0xD4,0x98,0x80,0x8E,
+0xF9,0x53,0x20,0x37,0x4E,0xF7,0x08,0x8E,0xF8,0x97,0x03,0x4E,0xF7,0x09,0xCB,0x18,
+0xD0,0x8F,0xCE,0xF7,0x03,0x5B,0x42,0xF7,0xC9,0xCE,0xF7,0x00,0x1D,0xD6,0xF8,0x00,
+0xA1,0x97,0x2F,0x98,0x60,0xCB,0x39,0x42,0x3F,0x98,0x82,0xD6,0xF9,0x00,0x31,0x98,
+0x87,0xE4,0x00,0x9F,0x74,0x0D,0x21,0x06,0x98,0x61,0x98,0x80,0x9C,0x28,0xE4,0x00,
+0x9F,0x5B,0x9C,0x38,0x98,0x80,0x0D,0x21,0x04,0x98,0x66,0xE4,0x00,0x2E,0x14,0x98,
+0x60,0xE7,0xFF,0xFA,0x8E,0x98,0x87,0x98,0x66,0xE4,0x00,0x2D,0xF8,0x98,0x64,0xE7,
+0xFF,0xFA,0x72,0x98,0x66,0x98,0x88,0xE4,0x00,0x2D,0xDC,0x0D,0x21,0x06,0x98,0x65,
+0x9C,0x28,0xE7,0xFF,0xFA,0x4D,0xC2,0xE0,0x10,0x01,0x5C,0xA0,0x29,0xF3,0x37,0x0B,
+0x7A,0x53,0x40,0x40,0x52,0xE0,0x20,0xC3,0x60,0x10,0x01,0x4B,0x5A,0xB8,0xFF,0x7B,
+0x09,0x6C,0x20,0x60,0x6C,0xE4,0x00,0x00,0x55,0x4F,0x17,0x08,0x9E,0xE1,0x8F,0x1B,
+0x0B,0x18,0x00,0xD7,0x58,0x00,0x78,0x98,0x61,0xE4,0x00,0x00,0xD9,0x9A,0xE0,0x43,
+0x40,0xD5,0x5F,0x17,0x00,0xD7,0x38,0xFF,0x25,0x98,0x60,0xE4,0x00,0x00,0xB5,0x20,
+0x67,0xEA,0x9A,0xE0,0x20,0x80,0xA6,0x9A,0xE0,0x43,0x80,0xD5,0xE4,0x00,0x00,0x7D,
+0x4F,0x17,0x08,0x8F,0x1B,0x0B,0x18,0x00,0x4F,0x98,0xFA,0x47,0x1C,0xC6,0x43,0x18,
+0xE5,0x0B,0x84,0x00,0xD7,0x1C,0x00,0x38,0x0F,0x04,0x01,0x9E,0xE1,0x5F,0x17,0x00,
+0xD7,0x38,0xFF,0x05,0xE7,0xFF,0xFF,0xA7,0x4F,0x17,0x08,0x8F,0x1B,0x0B,0x18,0x00,
+0xD7,0x98,0xFD,0x3C,0x9E,0xE1,0xD7,0x1A,0xFD,0x0C,0x5F,0x17,0x00,0xD7,0x38,0xFF,
+0x5D,0xE7,0xFF,0xFF,0x51,0x85,0x29,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xF3,
+0xB7,0x0B,0x7A,0xC3,0xC0,0x10,0x01,0x9A,0xE0,0xFF,0x18,0x07,0x34,0x8B,0x37,0xFF,
+0xDE,0x09,0x6C,0xE4,0x00,0x00,0x5B,0x4F,0x57,0x08,0x0B,0x98,0x00,0x8F,0x5E,0x0B,
+0x5A,0x00,0x43,0x9A,0xE5,0x4F,0x7C,0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0x5F,0x66,
+0x11,0x20,0x00,0x21,0x9F,0x21,0x5F,0x39,0x00,0x0F,0x58,0x01,0x9E,0xE1,0x9F,0x02,
+0x5F,0x57,0x00,0xD7,0xBA,0xFE,0xA5,0x5F,0x20,0x93,0x48,0x61,0x01,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xC3,0x40,0x10,0x01,0xF3,0x37,0x0B,0x7A,0xC3,0x60,0x10,0x01,0x9A,
+0xE0,0xFF,0x5A,0x07,0x34,0xFF,0x7B,0x09,0x6C,0xE4,0x00,0x00,0x29,0x4F,0x17,0x08,
+0x9E,0xE1,0x43,0x9A,0xC4,0x8F,0x1B,0x0B,0x18,0x01,0x0F,0x1C,0x01,0x5F,0x17,0x00,
+0xD7,0x38,0xFF,0x6D,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xEA,0xC2,0xE0,
+0x10,0x01,0x9C,0x38,0xF8,0x17,0x08,0xE3,0x0D,0x21,0x04,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x08,0xFD,0x20,0x64,0x26,0x98,0x60,0xE4,0x00,0x00,0x0D,0x98,0x64,0x98,0x80,
+0xE4,0x00,0x30,0x24,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x06,0xEC,0x17,0x07,0x30,0x9C,
+0x28,0xE4,0x00,0x4A,0x45,0x1C,0x21,0xE8,0xC2,0xE0,0x10,0x01,0x0D,0x41,0x10,0xEB,
+0x17,0x00,0xCD,0x0D,0x21,0x14,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x0C,0x01,0x07,0x89,
+0x43,0xC7,0x18,0x01,0x00,0x98,0x60,0xD3,0x00,0x06,0xAA,0xEB,0x17,0x00,0xCD,0xC7,
+0x18,0xFE,0xFF,0xEF,0x17,0x00,0xCD,0xE4,0x00,0x43,0xF0,0xE4,0x00,0x44,0xFC,0x21,
+0x44,0x36,0x98,0x61,0xE4,0x00,0x70,0xD8,0xE4,0x00,0x00,0x11,0xE4,0x00,0x71,0x2A,
+0xC1,0x60,0x10,0x01,0xEE,0xEB,0x07,0x32,0x5E,0xE0,0x01,0x98,0x6A,0x98,0x83,0x0C,
+0x01,0x07,0x1D,0x81,0x06,0x49,0x8C,0x00,0xE4,0x00,0x4F,0xD0,0x98,0x61,0x88,0x8C,
+0x98,0xA1,0x88,0xCA,0xE7,0xFF,0xFC,0x44,0xC2,0xE0,0x10,0x01,0x20,0x60,0xE6,0xF3,
+0x17,0x08,0xEA,0x9F,0x01,0xFB,0x17,0x08,0xEA,0x0A,0xE1,0x06,0xD2,0xEF,0x00,0x94,
+0xC2,0xE0,0x10,0x01,0xF3,0x17,0x08,0xE3,0x9F,0x01,0xFB,0x17,0x08,0xE3,0x98,0x63,
+0x21,0x44,0x36,0x98,0x81,0xE4,0x00,0x6C,0x88,0xE4,0x00,0x00,0x73,0xE4,0x00,0x6C,
+0xDE,0xE4,0x00,0x00,0x63,0xF8,0x17,0x08,0xEA,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,
+0xE3,0xEE,0xEB,0x07,0x32,0x22,0xE3,0x66,0x0A,0xE1,0x06,0x5E,0xEC,0x11,0x23,0xFF,
+0x41,0x21,0x44,0x36,0x98,0x61,0xE4,0x00,0x4E,0x7E,0xE4,0x00,0x00,0x11,0xE4,0x00,
+0x4E,0xB8,0x9B,0x01,0xC2,0xE0,0x10,0x01,0x98,0x61,0xEF,0x17,0x07,0x30,0xC2,0xE0,
+0x10,0x01,0xF3,0x17,0x08,0xFD,0x9F,0x01,0xFB,0x17,0x08,0xFD,0x0D,0x81,0x0A,0x0D,
+0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0x9C,0x38,0x0D,
+0x21,0x04,0x20,0x64,0x26,0x98,0x60,0xE4,0x00,0x00,0x0D,0x98,0x64,0x98,0x80,0xE4,
+0x00,0x2D,0xC6,0x0D,0x21,0x06,0x9C,0x28,0xE4,0x00,0x47,0xF7,0x98,0x60,0x98,0xA0,
+0x88,0x83,0xE7,0xFF,0xC7,0xCD,0xC2,0xE0,0x10,0x01,0x98,0x61,0xF2,0xF7,0x08,0xEA,
+0xD2,0xEA,0x00,0x95,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0xE3,0x5E,0xE0,0xBB,0x48,
+0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x08,0xFD,0x5E,0xE1,0xDB,0x48,
+0x61,0x01,0x85,0x29,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x00,0x00,0x0C,0x17,0x00,0x0C,
+0x17,0x19,0x0C,0x17,0x1B,0xEC,0x17,0x00,0xA1,0xEC,0x17,0x00,0xA3,0xEC,0x17,0x00,
+0xA4,0x1F,0x17,0x08,0xEC,0x17,0x00,0xA1,0x0F,0x17,0x04,0x1F,0x17,0x20,0x0F,0x17,
+0x1C,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD1,0x53,0x18,0x02,0xEF,0x17,0x00,0xD1,
+0x85,0x29,0xC3,0x20,0x10,0x01,0xFF,0x19,0x00,0x00,0x1E,0xF8,0x20,0x5C,0x63,0x04,
+0x0E,0xF8,0x1C,0x9A,0xE0,0xE4,0x00,0x00,0x29,0x0F,0x38,0x1E,0x43,0x44,0xBC,0x8F,
+0x37,0x13,0x5A,0x00,0x9E,0xE1,0x1B,0x59,0x00,0x5F,0x37,0x04,0xD4,0x79,0xFF,0x6D,
+0x9A,0xE1,0xEE,0xF8,0x00,0xA4,0x85,0x29,0x9C,0x38,0x0D,0x21,0x04,0x0D,0x41,0x00,
+0x5D,0x43,0x00,0xE7,0xFF,0xFF,0x02,0x88,0x6A,0xE4,0x00,0x98,0xAC,0x0D,0x21,0x06,
+0x0D,0x41,0x02,0x9C,0x28,0x85,0x29,0x1C,0x21,0xE0,0x0D,0x41,0x18,0x0D,0x61,0x14,
+0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xE1,0x04,0x0D,0x21,0x1C,0x0D,0xC1,0x08,0x0E,
+0x01,0x00,0xC1,0xA0,0x10,0x01,0xE4,0x00,0x9A,0x1E,0xC1,0x80,0x10,0x01,0xC1,0x60,
+0x10,0x01,0xC1,0xE0,0x10,0x01,0x5C,0x63,0x00,0xFD,0xAD,0x00,0xC0,0xFD,0x8C,0x08,
+0x89,0xFD,0x6B,0x00,0xB8,0xFD,0x4F,0x00,0x00,0xD0,0x60,0x19,0x42,0xE4,0x00,0x9A,
+0x1C,0x5C,0x63,0x00,0x20,0x60,0xBC,0x0C,0x0A,0x19,0xE4,0x00,0x9A,0xA8,0xE4,0x00,
+0x00,0x4B,0x0E,0xEA,0x06,0x0A,0x0A,0x19,0x8E,0x17,0xE4,0x00,0x9A,0xBC,0x18,0x70,
+0x00,0x0A,0xEA,0x19,0xD2,0xEE,0x00,0x8D,0x0A,0xEA,0x19,0x9E,0xE1,0x5E,0xF7,0x04,
+0x0E,0xEA,0x19,0x99,0xC0,0xE4,0x00,0x99,0x3A,0x5C,0x63,0x00,0x20,0x63,0x5A,0x0E,
+0xEA,0x06,0x13,0x17,0x00,0x5F,0x0A,0x09,0x20,0x00,0x61,0x0A,0xEA,0x19,0xD2,0xE4,
+0x03,0x76,0xE4,0x00,0x99,0xE4,0x0A,0xEA,0x19,0x22,0xE1,0xDA,0xE4,0x00,0x08,0x49,
+0x13,0x17,0x00,0x23,0x08,0x36,0x0A,0xEA,0x19,0x22,0xE9,0x4E,0xE7,0xFF,0xFF,0xCD,
+0x13,0x17,0x00,0x23,0x04,0x36,0x0A,0xEA,0x19,0x22,0xE5,0x0E,0xE7,0xFF,0xFF,0xAD,
+0x13,0x17,0x00,0x5F,0x0A,0x29,0x20,0x00,0xC3,0x13,0x17,0x00,0x5F,0x0A,0x49,0x23,
+0xFE,0xF3,0x13,0x17,0x00,0x5F,0x0A,0x69,0x20,0x00,0x7B,0x13,0x17,0x00,0x5F,0x0A,
+0x89,0x20,0x00,0x57,0x13,0x17,0x00,0x5F,0x04,0x09,0x20,0x00,0x33,0x12,0xF7,0x00,
+0x5E,0xE4,0x29,0x20,0x00,0x25,0x0A,0xEA,0x19,0x22,0xEE,0x64,0x98,0x61,0xE4,0x00,
+0xAA,0x50,0x9D,0xC1,0xC1,0xC4,0xE2,0x0E,0x23,0xFD,0xB7,0xE7,0xFF,0xFF,0x0F,0x0E,
+0xEA,0x06,0x13,0x17,0x00,0xD3,0x00,0x1D,0x5A,0x13,0x17,0x00,0x5F,0x0B,0x9B,0x20,
+0x0E,0x85,0x13,0x17,0x00,0x5F,0x0A,0x49,0x07,0x00,0x80,0x20,0x00,0xA5,0x0B,0x2A,
+0x19,0xD3,0x24,0x11,0x36,0x13,0x37,0x01,0x13,0x57,0x02,0x12,0xF7,0x03,0x4F,0x39,
+0x40,0x47,0x39,0xD5,0xC3,0x22,0x7F,0xEE,0x20,0x08,0x3D,0x8F,0x19,0x1A,0xF8,0x00,
+0xE4,0x00,0x04,0x0F,0x13,0x37,0x00,0x5F,0x2A,0x69,0x20,0x02,0xCD,0x0B,0x2A,0x19,
+0xD3,0x23,0x1B,0x06,0x13,0x57,0x01,0x13,0x37,0x02,0x4E,0xFA,0x40,0x46,0xF7,0xCD,
+0xCB,0x20,0x14,0x00,0xC2,0xE2,0x80,0x0A,0x4A,0xF7,0xC8,0x8E,0xF8,0x0E,0xEA,0x1C,
+0xFE,0xE0,0x08,0x00,0xEE,0xEA,0x00,0xA1,0xE4,0x00,0x00,0x1D,0xE4,0x00,0x07,0x98,
+0x98,0x61,0xE4,0x00,0x07,0xC4,0xE4,0x00,0x96,0xD2,0x5C,0x63,0x00,0x20,0x63,0xBC,
+0xEC,0x0A,0x00,0xA3,0xE4,0x00,0x97,0xDA,0xE4,0x00,0x97,0x6C,0xEB,0x0A,0x00,0xA3,
+0xEA,0xEA,0x00,0xA1,0xD7,0x17,0x01,0x26,0xEA,0xEA,0x00,0xA3,0xEA,0xEA,0x00,0xA1,
+0xE4,0x00,0x97,0x62,0xE4,0x00,0x97,0xCE,0xE4,0x00,0x97,0x92,0xEC,0x0A,0x00,0xA3,
+0xEC,0x0A,0x00,0xA1,0xE4,0x00,0x05,0xD9,0xE4,0x00,0x96,0xC0,0x5C,0x63,0x00,0x20,
+0x63,0x66,0xE4,0x00,0x96,0x14,0x5C,0x63,0x00,0x20,0x63,0x0C,0xEA,0xEA,0x00,0xA3,
+0x0F,0x0A,0x1E,0x8E,0xF8,0x10,0x77,0x00,0xE4,0x00,0x95,0x8E,0xEA,0xEA,0x00,0xA3,
+0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xEA,0x00,0xA3,0xE7,0xFF,0xFF,0x47,0x13,0x17,0x00,
+0xD3,0x01,0x04,0x26,0x0A,0xEA,0x19,0xD2,0xE1,0x0A,0x06,0xFE,0xEA,0x00,0xAC,0xEE,
+0xEA,0x00,0xA8,0x12,0xEB,0x00,0x22,0xE0,0x4A,0x9A,0xE8,0x53,0x00,0x52,0xFA,0xEA,
+0x00,0xB4,0x9A,0xE8,0xE4,0x00,0x00,0x21,0x9A,0xE8,0x53,0x00,0x62,0xFA,0xEA,0x00,
+0xB4,0x52,0xE0,0x80,0x1F,0x20,0x81,0xFB,0x2A,0x00,0xAC,0x13,0x2B,0x00,0xFB,0x2A,
+0x00,0xAD,0xFB,0x0A,0x00,0xAE,0xF8,0x0A,0x00,0xAF,0x5E,0xF7,0x00,0xFA,0xEA,0x00,
+0xB0,0xF8,0x0A,0x00,0xB1,0xF8,0x0A,0x00,0xB2,0xC2,0xE0,0x10,0x01,0xF8,0x0A,0x00,
+0xB3,0xEB,0x17,0x00,0xD1,0xC7,0x18,0xFF,0xFD,0xEF,0x17,0x00,0xD1,0x12,0xEC,0x00,
+0x52,0xF7,0x01,0x9B,0x01,0x1A,0xEC,0x00,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x08,0x85,
+0xE4,0x00,0x01,0x8F,0x13,0x17,0x00,0x23,0x09,0x4A,0x0B,0x0A,0x19,0xD3,0x02,0x05,
+0xD6,0x12,0xF7,0x01,0x22,0xE0,0x4A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF9,0x18,
+0x17,0x00,0xE4,0x00,0x00,0x29,0x22,0xE4,0x5E,0xC2,0xF4,0x00,0x01,0x9B,0x01,0xCA,
+0xF7,0x3D,0xF9,0x1B,0x17,0x00,0x12,0xF7,0x00,0xE4,0x00,0x00,0x2D,0xD2,0xE2,0x04,
+0x56,0xC3,0x14,0x00,0x01,0xCB,0x18,0x3D,0xF9,0x1A,0xF8,0x00,0x12,0xF8,0x00,0x5E,
+0xF7,0x00,0x1A,0xEB,0x00,0xE4,0x00,0x00,0xE5,0x13,0x17,0x00,0x5F,0x04,0x09,0x20,
+0x00,0x99,0x0B,0x0A,0x19,0x23,0x0D,0x8A,0x13,0x37,0x01,0x13,0x17,0x02,0x4E,0xF9,
+0x40,0x46,0xF7,0xC5,0xC2,0xEB,0x54,0xA4,0x20,0x01,0x3D,0x12,0xED,0x00,0x52,0xF7,
+0x03,0xE4,0x00,0x00,0x87,0x13,0x17,0x00,0x5F,0x04,0x29,0x20,0x06,0x95,0x0B,0x0A,
+0x19,0x23,0x0C,0xDA,0x13,0x37,0x01,0x13,0x17,0x02,0x4E,0xF9,0x40,0x46,0xF7,0xC5,
+0xC3,0x00,0x10,0x01,0xEE,0xF8,0x00,0xC4,0x12,0xED,0x00,0x57,0x37,0x01,0x23,0x20,
+0x64,0xEF,0x18,0x00,0xC6,0x23,0x00,0x32,0x9B,0x1B,0x46,0xF7,0xC4,0xE4,0x00,0x00,
+0x0F,0x52,0xF7,0x04,0x1A,0xED,0x00,0x0C,0x0A,0x00,0x0C,0x0A,0x19,0xE4,0x00,0x02,
+0xC7,0xE4,0x00,0x93,0x3C,0x5C,0x63,0x00,0xD0,0x60,0x0A,0xC2,0xE4,0x00,0x94,0x7E,
+0xE4,0x00,0x94,0x42,0x50,0x60,0x20,0xE4,0x00,0x03,0xA2,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x3D,0xF9,0x12,0xF7,0x00,0x1A,0xEB,0x00,0x12,0xEB,0x00,0x22,0xE0,0x4E,0x12,
+0xED,0x00,0x56,0xF7,0x01,0x5E,0xE0,0x09,0x49,0xA4,0x43,0xE4,0x00,0x00,0x43,0x12,
+0xEB,0x00,0x22,0xE4,0x2A,0x51,0xA0,0x80,0xE4,0x00,0x00,0x29,0x12,0xEB,0x00,0x22,
+0xEB,0xD8,0x12,0xEB,0x00,0x22,0xEF,0xC0,0xC9,0xA0,0xFF,0xFF,0xEE,0xEA,0x00,0xA6,
+0x22,0xE4,0x2E,0xED,0xAA,0x00,0xA1,0xEC,0x0A,0x00,0xA4,0xE4,0x00,0x93,0x8C,0xEA,
+0xEA,0x00,0xA1,0xD5,0xB7,0x00,0x71,0x12,0xEC,0x00,0x56,0xF7,0x01,0xD2,0xE0,0x05,
+0x22,0xC2,0xE0,0x10,0x01,0xF3,0x17,0x08,0xB0,0x23,0x00,0x24,0x9F,0x1F,0xFB,0x17,
+0x08,0xB0,0xEC,0x0A,0x00,0xA3,0x12,0xEC,0x00,0x56,0xF7,0x01,0x22,0xE0,0x2C,0xF1,
+0xAA,0x00,0xB4,0xE4,0x00,0x00,0xAD,0xE9,0xAA,0x00,0xA1,0xE4,0x00,0x00,0x9D,0x12,
+0xEB,0x00,0x22,0xE0,0x42,0x12,0xEC,0x00,0x56,0xF7,0x01,0x22,0xE0,0x56,0xE4,0x00,
+0x00,0x3D,0xE4,0x00,0x91,0x6E,0x5C,0x63,0x00,0x20,0x63,0xE4,0xE7,0xFF,0xFF,0xD3,
+0xEA,0xEA,0x00,0xA3,0xEF,0x0A,0x00,0xAA,0xE4,0x00,0x00,0x17,0xEA,0xEA,0x00,0xA3,
+0x0F,0x0A,0x1E,0x8E,0xF8,0x10,0x77,0x00,0xE4,0x00,0x90,0xEE,0xEA,0xEA,0x00,0xA3,
+0x9E,0xE1,0x5E,0xF7,0x04,0xEE,0xEA,0x00,0xA3,0xEA,0xEA,0x00,0xA3,0xD6,0xED,0xFD,
+0x96,0xE4,0x00,0x92,0x94,0xE4,0x00,0x92,0x58,0xEC,0x0A,0x00,0xA1,0xEC,0x0A,0x00,
+0xA3,0xE4,0x00,0x00,0x45,0x98,0x60,0x9D,0x61,0xE4,0x00,0x90,0x8C,0xE4,0x00,0x00,
+0x0D,0x99,0x60,0xD5,0xAB,0xFF,0x95,0xE4,0x00,0x92,0x48,0xE4,0x00,0x92,0x0C,0xEC,
+0x0A,0x00,0xA1,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xD1,0x53,0x18,0x02,0xEF,0x17,
+0x00,0xD1,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x85,0xC3,0x00,0x32,0x0A,0x20,0x00,
+0x49,0x13,0x0C,0x00,0x9B,0x3E,0xEC,0x17,0x08,0x85,0x47,0x18,0xCC,0x1B,0x0C,0x00,
+0x0E,0x01,0x02,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,0x0D,
+0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0x9C,0x38,0x0D,
+0x21,0x04,0xE4,0x00,0x98,0xC0,0x98,0x60,0x88,0x83,0xE4,0x00,0x95,0xF2,0x98,0x61,
+0x98,0x82,0xE4,0x00,0x95,0xE2,0x98,0x60,0xFC,0x80,0x18,0x08,0xE4,0x00,0x91,0xCE,
+0x98,0x61,0xFC,0x80,0x18,0x08,0xE4,0x00,0x93,0x34,0x0D,0x21,0x06,0x9C,0x28,0xE4,
+0x00,0x9B,0x8B,0x20,0x64,0x1E,0xE4,0x00,0x9C,0xB5,0xE4,0x00,0x9C,0xD3,0x9C,0x38,
+0x0D,0x21,0x04,0xE4,0x00,0x9C,0xE8,0x0D,0x21,0x06,0x9C,0x28,0xE4,0x00,0x9C,0xAF,
+0xE4,0x00,0x9E,0xA7,0xE4,0x00,0x9F,0x0F,0xE4,0x00,0x9F,0x6B,0xE4,0x00,0xA3,0x49,
+0xE4,0x00,0xA0,0xB3,0xE4,0x00,0x9F,0xB7,0xE4,0x00,0x9F,0xED,0xE4,0x00,0xA0,0x23,
+0xE4,0x00,0xA0,0x47,0xE4,0x00,0xA0,0x6B,0xE4,0x00,0x9E,0xA1,0xE4,0x00,0xA0,0x99,
+0x20,0x60,0x28,0x20,0x64,0x3E,0xE4,0x00,0x00,0x11,0xE4,0x00,0xA1,0x35,0xE4,0x00,
+0xA1,0x4F,0x85,0x29,0xE4,0x00,0xA1,0x65,0xC2,0xE0,0x10,0x01,0xE8,0x77,0x00,0xBB,
+0xEB,0x17,0x00,0xBB,0xD4,0x78,0xFF,0xC6,0x85,0x29,0xE4,0x00,0xA4,0x05,0xC3,0x34,
+0x00,0x01,0xCA,0xF9,0x23,0xFC,0x0A,0xF7,0x00,0xD2,0xFF,0x04,0x3C,0xC3,0x00,0x10,
+0x01,0xF2,0xF8,0x07,0x6E,0x9E,0xE1,0x5E,0xF7,0x00,0xFA,0xF8,0x07,0x6E,0x22,0xE1,
+0xCA,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,0x01,0xFF,0x18,0x01,0xBE,0xCA,0xE0,0x11,
+0x7D,0xCB,0x39,0x22,0x00,0xFF,0x7B,0x09,0x6C,0x1F,0x57,0xFD,0x57,0x5A,0xFF,0x4F,
+0x5A,0x10,0x8F,0x59,0x0B,0x9A,0x01,0x4F,0x97,0x08,0x8F,0x9B,0xEB,0x9C,0xDD,0x3B,
+0x0F,0x9A,0x01,0x5F,0x57,0x00,0x5F,0x4F,0xE9,0x57,0x57,0xFF,0x4F,0x5A,0x10,0x8F,
+0x59,0x0B,0x9A,0x01,0x20,0x00,0x6D,0xFF,0xA0,0x80,0x00,0x5F,0x9C,0x04,0x47,0x9C,
+0xEC,0x0B,0xB8,0x01,0xC7,0xBD,0x7F,0xFF,0x47,0x9C,0xED,0xE4,0x00,0x00,0x0F,0x0B,
+0x98,0x01,0x0F,0x9A,0x01,0x9E,0xE1,0x9F,0x02,0xC2,0xE2,0x30,0x04,0x23,0xFE,0xB1,
+0x85,0x29,0x5C,0x63,0x04,0xE4,0x00,0xA2,0xD7,0x9A,0xE0,0x8B,0x17,0xE4,0x00,0x00,
+0x1D,0x43,0x23,0xBC,0x9E,0xE1,0x13,0x39,0x00,0x8F,0x19,0xD4,0x97,0xFF,0xB4,0x40,
+0x60,0xC5,0x85,0x29,0x9C,0x38,0x98,0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFD,0x90,0x98,
+0x61,0xE7,0xFF,0xFD,0x84,0x98,0x6F,0xE7,0xFF,0xFE,0x3A,0x0D,0x21,0x06,0x98,0x60,
+0x9C,0x28,0xE7,0xFF,0xFD,0x63,0x9C,0x38,0xC2,0xE0,0x10,0x01,0x0D,0x21,0x04,0xEC,
+0x17,0x08,0x83,0x0D,0x41,0x00,0xC2,0xE0,0x10,0x01,0x50,0x60,0x80,0xF2,0xF7,0x00,
+0xB8,0x22,0xE0,0x52,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x00,0xC0,0x56,0xF7,0x01,0x5E,
+0xE0,0x09,0x48,0x64,0x43,0xC1,0x40,0x10,0x01,0xEA,0xEA,0x00,0xD1,0x56,0xF7,0x02,
+0x22,0xE0,0x6C,0xC0,0x80,0x10,0x01,0xFC,0x84,0x07,0x70,0xE7,0xFF,0xF1,0xEE,0xEA,
+0xEA,0x00,0xD1,0xC6,0xF7,0xFF,0xFD,0xEE,0xEA,0x00,0xD1,0x0D,0x41,0x02,0x0D,0x21,
+0x06,0x9C,0x28,0xE7,0xFF,0xFF,0x03,0x9C,0x30,0xC3,0x00,0x10,0x01,0x0D,0x21,0x0C,
+0xFC,0x98,0x07,0x70,0x0D,0x41,0x08,0x8A,0xE4,0x8B,0x24,0x18,0x17,0x00,0xC3,0x00,
+0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0xF2,0xD6,0xF8,0xFF,0x9E,0x52,0xE0,0x62,0x1F,
+0x19,0x1F,0x1A,0xE4,0x00,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x07,0x71,0x18,0x17,0x00,
+0x9E,0xE1,0xD7,0x17,0xFF,0xDE,0x1E,0xE0,0x9E,0xC3,0x60,0x10,0x01,0x1A,0xE4,0x1F,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF8,0x12,0xF7,0x00,0xFA,0xFB,0x07,0x6F,0xF2,
+0xFB,0x07,0x6F,0x22,0xEC,0xCC,0xC2,0xE0,0x10,0x01,0xC3,0x40,0x10,0x01,0xF3,0xB7,
+0x0B,0x7A,0x9B,0x00,0xC2,0xE0,0x10,0x01,0xC3,0xC0,0x10,0x01,0xC1,0x00,0x10,0x01,
+0xFE,0xF7,0x07,0x90,0xFF,0x5A,0x09,0xA8,0x8B,0x38,0xFF,0xDE,0x0C,0xF6,0xFD,0x08,
+0x09,0x6C,0xE4,0x00,0x01,0x09,0xC3,0x80,0x10,0x01,0x9A,0xE0,0xFF,0x9C,0x0B,0x64,
+0x8B,0x64,0x43,0x17,0xE4,0x0B,0x38,0x00,0x43,0x17,0xDC,0x4F,0x59,0x42,0x1B,0x38,
+0x21,0x1B,0x58,0x20,0x9E,0xE2,0x5E,0xE2,0x09,0x23,0xFF,0xA5,0x0C,0x81,0x04,0x50,
+0x60,0x20,0xE7,0xFF,0xFB,0x9C,0xC1,0x40,0x10,0x01,0xEA,0xEA,0x00,0xD1,0x0C,0x81,
+0x06,0x56,0xF7,0x02,0x22,0xE1,0x74,0xE4,0x00,0x00,0x8F,0xF3,0x9B,0x07,0x6F,0x23,
+0x84,0x34,0x23,0x88,0x68,0x43,0x98,0x44,0xE4,0x00,0x00,0x0F,0x43,0x98,0xF4,0x15,
+0x5C,0x01,0x19,0x57,0x00,0x0B,0x9C,0x01,0xE4,0x00,0x00,0x21,0x0F,0x9A,0x02,0x4D,
+0x5C,0x82,0x4F,0x9C,0x42,0x19,0x57,0x00,0x1B,0x97,0x01,0x9F,0x21,0x9F,0x02,0x5F,
+0x39,0x04,0x9E,0xE2,0x9F,0x44,0xD7,0xB9,0xFE,0x2D,0xE7,0xFF,0xFF,0x45,0x50,0x60,
+0x80,0xE7,0xFF,0xEF,0x82,0xEA,0xEA,0x00,0xD1,0xC6,0xF7,0xFF,0xFD,0xEE,0xEA,0x00,
+0xD1,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0xE7,0xFF,0xFC,0x95,0xC2,0xE0,
+0x10,0x01,0xC3,0x00,0x10,0x01,0xF0,0x77,0x0B,0xF0,0xC3,0x20,0x10,0x01,0xC2,0xE0,
+0x10,0x01,0xFF,0x18,0x0C,0x02,0xFE,0xF7,0x07,0xF8,0xFF,0x39,0x08,0x00,0x9B,0x60,
+0x98,0x81,0xE4,0x00,0x01,0x7D,0x0B,0x57,0x01,0xC3,0x4F,0xFF,0xE0,0x20,0x00,0x35,
+0x0B,0x57,0x03,0xC3,0x4F,0xFF,0xE4,0x20,0x00,0x49,0x0B,0x58,0x01,0x18,0x19,0x00,
+0x0F,0x57,0x01,0x0B,0x58,0x03,0x0F,0x57,0x03,0x13,0x59,0x00,0x23,0x41,0x22,0x0B,
+0x98,0x03,0x0B,0x57,0x03,0x43,0x5C,0xD5,0x5F,0x5A,0x06,0x4F,0xDA,0xFA,0x0B,0xB8,
+0x01,0x47,0x5E,0xD6,0x09,0x17,0x01,0x43,0x5A,0xF5,0x41,0x1D,0x45,0x5D,0x08,0x06,
+0x4F,0xC8,0xFA,0x45,0x1E,0x46,0x43,0xC8,0xF5,0x8F,0xDA,0x5F,0xCC,0x99,0x20,0x00,
+0x25,0x5F,0x46,0x51,0x20,0x01,0x11,0x18,0x99,0x00,0x0F,0xB7,0x01,0x0F,0x97,0x03,
+0xE4,0x00,0x00,0x71,0x0B,0x98,0x01,0x0B,0xD7,0x01,0x43,0xDC,0xF5,0x5F,0xDE,0x06,
+0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x0B,0x58,0x03,0x41,0x1E,0xED,0x0B,0xD7,0x03,0x43,
+0xDA,0xF5,0x5F,0xDE,0x06,0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x43,0xBD,0xF5,0xD7,0xA8,
+0x00,0x52,0x0F,0x97,0x01,0x0F,0x57,0x03,0x0B,0x57,0x01,0x9F,0x61,0x0F,0x58,0x01,
+0x5F,0x7B,0x00,0x0B,0x57,0x03,0x9F,0x21,0x0F,0x58,0x03,0x9E,0xE4,0x1F,0x18,0x30,
+0xD7,0x63,0xFA,0x36,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3D,0xF9,0x1C,0x21,
+0xE0,0xCA,0xF7,0x3D,0xF8,0x0D,0x41,0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,
+0x0C,0x0D,0xC1,0x08,0x0D,0xE1,0x04,0x0E,0x01,0x00,0x0D,0x21,0x1C,0xC1,0x80,0x10,
+0x01,0xFD,0x8C,0x08,0xE6,0x0A,0x0C,0x01,0xC6,0x10,0x7F,0xFF,0x0E,0x0C,0x01,0x13,
+0x38,0x00,0xC3,0x00,0x10,0x01,0xFB,0x38,0x00,0xB8,0x13,0x37,0x00,0xC2,0xE0,0x10,
+0x01,0xFB,0x37,0x07,0x6F,0xC1,0xA0,0x10,0x01,0xC1,0xC0,0x10,0x01,0xC3,0x60,0x10,
+0x01,0xC3,0x40,0x10,0x01,0x5C,0x63,0x00,0xFD,0xAD,0x07,0xF4,0xFD,0xCE,0x09,0x6C,
+0xFD,0xE0,0x80,0x00,0xFD,0x5B,0x07,0x70,0xFD,0x7A,0x0B,0xF0,0xD0,0x61,0x14,0x46,
+0x0B,0x2B,0x16,0x0A,0xEB,0x18,0x45,0xF0,0x7D,0x0E,0xEB,0x17,0x0D,0xEC,0x01,0x0F,
+0x2B,0x19,0x13,0x0B,0x00,0xD3,0x01,0x1F,0x61,0x0B,0x6B,0x46,0x0B,0x0B,0x48,0x0F,
+0x6B,0x49,0x0F,0x0B,0x47,0xD7,0x17,0x1F,0x34,0x0E,0xEB,0x47,0x0F,0x0B,0x17,0x0F,
+0x2B,0x49,0x0F,0x6B,0x19,0xE4,0x00,0x07,0xAD,0xC2,0xE0,0x10,0x01,0x5F,0x98,0x04,
+0xEA,0xF7,0x0B,0x81,0x5F,0x17,0x15,0x4A,0xFC,0xB8,0x0E,0xEB,0x13,0xCF,0x39,0x00,
+0x30,0x9A,0xE0,0x8F,0x2B,0x0B,0x19,0x18,0x27,0x1C,0x50,0xC2,0xE0,0x10,0x01,0x5F,
+0x38,0x04,0xEA,0xF7,0x0B,0x83,0x5F,0x17,0x15,0x4A,0xF9,0xB8,0x0E,0xEB,0x15,0xCE,
+0xFB,0x00,0x30,0x8E,0xEB,0x0B,0x17,0x16,0x9A,0xE0,0x27,0x1C,0x50,0xC2,0xE0,0x10,
+0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,0x81,0x5F,0x17,0x15,0x4A,0xF9,0xB8,0x0E,0xEB,
+0x43,0xCF,0x7B,0x00,0x30,0x9A,0xE0,0x8F,0x6B,0x0B,0x1B,0x18,0x27,0x1C,0x50,0xC2,
+0xE0,0x10,0x01,0x5F,0x38,0x04,0xEA,0xF7,0x0B,0x83,0x5F,0x17,0x15,0x4A,0xF9,0xB8,
+0x0E,0xEB,0x45,0xE4,0x00,0x00,0x63,0xC3,0x00,0x10,0x01,0x5F,0x77,0x04,0xEB,0x18,
+0x0B,0x81,0x5E,0xF8,0x15,0x4B,0x1B,0xC0,0x0F,0x0B,0x13,0x9A,0xE0,0x27,0x3C,0x50,
+0xC2,0xE0,0x10,0x01,0x5F,0x19,0x04,0xEA,0xF7,0x0B,0x83,0x5F,0x37,0x15,0x4A,0xF8,
+0xB8,0x0E,0xEB,0x15,0xE7,0xFF,0xFB,0x74,0xC2,0xE0,0x10,0x01,0x13,0x0B,0x00,0xFE,
+0xF7,0x0C,0x04,0x9B,0x20,0x9B,0x4C,0xFF,0x60,0x07,0xF9,0xE4,0x00,0x00,0x47,0x0B,
+0x97,0x01,0xD3,0x8B,0x00,0x3D,0x0F,0x57,0x01,0x0B,0x97,0x01,0xC3,0x80,0xFF,0x2A,
+0x20,0x00,0x19,0x0F,0x77,0x01,0x9F,0x21,0x1E,0xF7,0x30,0x5F,0x39,0x04,0xD7,0x19,
+0xFF,0x0D,0x27,0x04,0x7D,0x0B,0x2B,0x43,0x0A,0xEB,0x13,0x42,0xF9,0xBD,0x0B,0x2B,
+0x45,0x0E,0xEB,0x1B,0x0A,0xEB,0x15,0x42,0xF9,0xBD,0x0E,0xEB,0x1D,0xE4,0x00,0x00,
+0x15,0x0C,0x0B,0x1B,0x0C,0x0B,0x1D,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x00,0xB8,0x22,
+0xE1,0x9E,0x52,0xE0,0x52,0x0B,0x2B,0x13,0x1A,0xEA,0x00,0x4F,0x79,0x41,0x0A,0xEB,
+0x15,0x4F,0x7B,0x20,0x4F,0x57,0x41,0x1B,0x2A,0x02,0x57,0x5A,0x0F,0x1A,0xEA,0x03,
+0x47,0x5B,0xD5,0x1B,0x4A,0x01,0x27,0x04,0xA1,0x0B,0x0B,0x1A,0x0A,0xEB,0x1C,0x4F,
+0x38,0x42,0x4F,0x57,0x42,0x5F,0x39,0x04,0x57,0x5A,0x0F,0x4F,0x39,0x20,0x1B,0x0A,
+0x05,0x47,0x39,0xD5,0x1A,0xEA,0x06,0x1B,0x2A,0x04,0xE4,0x00,0x00,0x1B,0x18,0x0A,
+0x04,0x18,0x0A,0x05,0x18,0x0A,0x06,0x88,0x6A,0x98,0x87,0xE7,0xFF,0xF6,0x3C,0x18,
+0x6A,0x07,0xE4,0x00,0x01,0x8B,0x8A,0xEA,0x18,0x17,0x00,0xC3,0x20,0x10,0x01,0x9E,
+0xE1,0xFF,0x39,0x07,0xF2,0xD6,0xF9,0xFF,0x9E,0x52,0xE0,0x62,0x1A,0xEA,0x00,0x0A,
+0xEB,0x13,0x4F,0x37,0x41,0x1A,0xEA,0x02,0x0A,0xEB,0x15,0x1B,0x2A,0x01,0x1A,0xEA,
+0x04,0x4F,0x37,0x41,0x56,0xF8,0x01,0x4F,0x18,0x20,0x52,0xF7,0x20,0x53,0x18,0x02,
+0x1A,0xEA,0x11,0x1B,0x0A,0x12,0x0A,0xEB,0x1A,0x4F,0x17,0x42,0x1A,0xEA,0x0E,0x1B,
+0x0A,0x0D,0x0A,0xEB,0x1C,0x4F,0x17,0x42,0x1B,0x2A,0x03,0x1B,0x0A,0x0F,0x1A,0xEA,
+0x10,0x88,0x6A,0x50,0x80,0x1F,0xE7,0xFF,0xF5,0x66,0xC2,0xE0,0x10,0x01,0xC3,0x20,
+0x10,0x01,0xC3,0x80,0x10,0x01,0x18,0x6A,0x1F,0xFE,0xF7,0x07,0x90,0xFF,0x39,0x09,
+0xA8,0x9B,0x00,0xC3,0x60,0x10,0x01,0xFF,0x9C,0x0C,0xF6,0xF3,0x5B,0x07,0x6F,0x23,
+0x44,0x34,0x23,0x48,0x68,0x43,0x58,0x74,0xE4,0x00,0x00,0x0F,0x43,0x58,0xE4,0x17,
+0xBA,0x01,0x1B,0xB7,0x00,0x0B,0x5A,0x01,0xE4,0x00,0x00,0x21,0x0F,0x59,0x02,0x4F,
+0xBA,0x82,0x4F,0x5A,0x42,0x1B,0xB7,0x00,0x1B,0x57,0x01,0x9F,0x02,0x9E,0xE2,0x9F,
+0x24,0x5F,0x07,0x49,0x23,0xFF,0x1D,0x0A,0xEC,0x00,0xD2,0xFF,0x0D,0x9C,0x9A,0xE1,
+0xE4,0x00,0x02,0xF5,0xD0,0x60,0x05,0x66,0xFE,0xE0,0x7F,0xFF,0xC3,0x20,0x10,0x01,
+0xC3,0x40,0x10,0x01,0xEE,0xF9,0x07,0xF9,0xF8,0x1A,0x08,0x00,0xFF,0x39,0x07,0xF8,
+0xFF,0x5A,0x08,0x00,0x0E,0xF9,0x03,0x0E,0xF9,0x05,0x0E,0xF9,0x07,0x18,0x1A,0x01,
+0xF2,0xF8,0x00,0xB8,0x22,0xE0,0xB2,0x52,0xE0,0x52,0x1A,0xEA,0x00,0x9A,0xFF,0x88,
+0x6A,0x1A,0xEA,0x01,0x1A,0xEA,0x02,0x1A,0xEA,0x03,0x1A,0xEA,0x04,0x1A,0xEA,0x05,
+0x1A,0xEA,0x06,0x98,0x87,0xE7,0xFF,0xF3,0xE8,0x18,0x6A,0x07,0xE4,0x00,0x00,0x89,
+0x8A,0xEA,0x18,0x17,0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0xF2,0xD6,
+0xF8,0xFF,0x9E,0x52,0xE0,0x62,0x9B,0x1F,0x1A,0xEA,0x00,0xC2,0xE0,0x10,0x01,0xFE,
+0xF7,0x07,0x71,0x1B,0x17,0x00,0xC3,0x20,0x10,0x01,0x9E,0xE1,0xFF,0x39,0x07,0x8F,
+0xD6,0xF9,0xFF,0x9E,0x88,0x6A,0x50,0x80,0x1F,0xE7,0xFF,0xF3,0x60,0x18,0x6A,0x1F,
+0x0A,0xEC,0x01,0x0C,0x0D,0x00,0x45,0xEF,0xBD,0x0D,0xEC,0x01,0xE4,0x00,0x02,0x03,
+0xD0,0x62,0x07,0xEE,0xF2,0xF8,0x00,0xB8,0x22,0xE0,0xD2,0x52,0xE0,0x52,0xC3,0x00,
+0x10,0x01,0x1A,0xEA,0x00,0xEB,0x18,0x08,0x83,0x9A,0xFF,0x1B,0x0A,0x05,0x1A,0xEA,
+0x01,0x1A,0xEA,0x02,0x1A,0xEA,0x03,0x1A,0xEA,0x04,0x1A,0xEA,0x06,0x88,0x6A,0x98,
+0x87,0xE7,0xFF,0xF2,0xD0,0x18,0x6A,0x07,0xE4,0x00,0x01,0x15,0x8A,0xEA,0x18,0x17,
+0x00,0xC3,0x00,0x10,0x01,0x9E,0xE1,0xFF,0x18,0x07,0xF2,0xD6,0xF8,0xFF,0x9E,0x52,
+0xE0,0x62,0x1A,0xEA,0x00,0x0A,0xEB,0x13,0x4F,0x17,0x41,0x1A,0xEA,0x02,0x1B,0x0A,
+0x01,0x0A,0xEB,0x15,0x4F,0x17,0x41,0x1A,0xEA,0x04,0x1B,0x0A,0x03,0x12,0xEB,0x00,
+0x57,0x17,0x01,0x4E,0xF7,0x20,0x53,0x18,0x20,0x52,0xF7,0x02,0x1B,0x0A,0x11,0x1A,
+0xEA,0x12,0x0A,0xEB,0x1A,0x4F,0x17,0x42,0x1A,0xEA,0x0E,0x1B,0x0A,0x0D,0x0A,0xEB,
+0x1C,0x4F,0x17,0x42,0x1A,0xEA,0x10,0x1B,0x0A,0x0F,0x88,0x6A,0x50,0x80,0x1F,0xE7,
+0xFF,0xF1,0xF4,0x9A,0xE0,0x18,0x6A,0x1F,0x43,0x17,0x74,0x0B,0x38,0x00,0x43,0x17,
+0x54,0x4F,0x59,0x42,0x1B,0x38,0x21,0x1B,0x58,0x20,0x9E,0xE2,0x5E,0xE7,0x49,0x23,
+0xFF,0xA5,0x45,0xF0,0x7D,0x9A,0xE2,0x0D,0xEC,0x01,0x0E,0xED,0x00,0xE4,0x00,0x00,
+0x61,0x9B,0x00,0xD2,0xFF,0xE6,0x28,0xE7,0xFF,0xF9,0x61,0x0A,0xEB,0x46,0x0B,0x0B,
+0x16,0x5E,0xF8,0x15,0x4B,0x21,0x01,0xCE,0xF9,0x00,0x30,0x8E,0xEB,0x4B,0x60,0x0A,
+0x0B,0x17,0x16,0x9A,0xE0,0xD3,0x1F,0xE0,0xA4,0xE7,0xFF,0xF8,0x43,0x0E,0x01,0x02,
+0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,0x81,0x12,0x0D,0x61,0x16,0x0D,
+0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0x85,0x29,0x5C,0x63,0x00,0xCF,0x03,0x00,
+0x34,0xCE,0xE3,0x00,0x68,0x1C,0x21,0xC0,0xC0,0x80,0x10,0x01,0x0D,0x21,0x3C,0x1C,
+0x61,0x04,0xFC,0x84,0x09,0x38,0xC0,0xA0,0x10,0x01,0x8C,0x98,0xFC,0xA5,0x0A,0xFC,
+0x50,0xC0,0x1A,0x8C,0xB7,0xE4,0x00,0x2A,0x3C,0x0D,0x21,0x3E,0x1C,0x21,0x40,0x85,
+0x29,0x1C,0x21,0xD0,0x0D,0x41,0x28,0x0D,0x81,0x20,0x5D,0x43,0x00,0x5D,0x84,0x00,
+0x42,0xEC,0x55,0x9E,0xE1,0x5E,0xF7,0x00,0x57,0x17,0x03,0x4E,0xF7,0x11,0x5F,0x00,
+0x09,0x0D,0x61,0x24,0x0D,0xA1,0x1C,0x0D,0xC1,0x18,0x49,0xA1,0x01,0x0D,0x21,0x2C,
+0x8D,0xB7,0xC1,0xD8,0x00,0x21,0xE4,0x00,0x6A,0xBA,0x99,0x60,0xFD,0xCE,0xB9,0xDF,
+0xE4,0x00,0x00,0xE3,0x88,0x61,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,0xFF,0xC1,0x5A,
+0x9A,0xE4,0x43,0x0E,0x54,0x13,0x58,0x00,0x1F,0x01,0x18,0x4F,0x3A,0x09,0x57,0x5A,
+0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,0x50,0x7B,0x47,0x5A,0xC4,0x5F,
+0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,0x02,0x1F,0x61,0x18,0x47,0x18,
+0xD5,0x8F,0x3B,0x1B,0x19,0xE8,0x9D,0x41,0x5D,0x4A,0x00,0xD5,0x4C,0x00,0xE1,0x06,
+0xE0,0x81,0xCC,0x6B,0x00,0x18,0x88,0x81,0x8C,0x77,0x50,0xA0,0x18,0x9D,0x61,0xE7,
+0xFF,0xC1,0x94,0xE4,0x00,0x00,0x1D,0x9E,0xE1,0xD2,0xE8,0xFD,0x4E,0xE7,0xFF,0xFF,
+0xC5,0x5E,0xEB,0x00,0xD5,0xB7,0xFC,0x85,0xE4,0x00,0x69,0xDC,0x0D,0x21,0x2E,0x0D,
+0xC1,0x1A,0x0D,0xA1,0x1E,0x0D,0x81,0x22,0x0D,0x61,0x26,0x0D,0x41,0x2A,0x1C,0x21,
+0x30,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x77,0x01,0x62,0x85,0x29,0xC2,0xE0,0x10,
+0x01,0xEC,0x77,0x08,0x56,0x85,0x29,0x1C,0x21,0xC8,0x0D,0x21,0x34,0x0D,0x41,0x30,
+0x0D,0x61,0x2C,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0xD0,0x69,0x15,0xE5,
+0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xC1,0x98,0x00,0x21,0xFE,0xF7,0xB9,0x2C,0xC1,
+0x78,0x00,0x21,0x8E,0xF8,0xFD,0x8C,0xB9,0xDC,0x0E,0xF7,0x02,0x05,0xA0,0x81,0xFD,
+0x6B,0xB9,0xDF,0x86,0xE9,0x1C,0x83,0x01,0xCC,0x63,0x00,0x1A,0xCC,0x84,0x00,0x1A,
+0x9C,0x9F,0xE7,0xFF,0xFD,0x9E,0xE4,0x00,0x05,0x05,0x0C,0x61,0x04,0xE4,0x00,0x68,
+0xAC,0x0C,0x61,0x06,0x99,0x40,0x9C,0x7E,0x5C,0x63,0x00,0xCC,0x63,0x00,0x1A,0x8D,
+0x63,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,0xFF,0xBF,0x3E,0x8B,0x0A,
+0x9A,0xE4,0x5F,0x03,0x39,0x20,0x00,0xDD,0x43,0x2B,0xC4,0x13,0x79,0x00,0x1F,0x21,
+0x20,0x4F,0x5B,0x09,0x57,0x7B,0x01,0x8F,0x3A,0x17,0x39,0xE8,0x5F,0x60,0x01,0x4B,
+0x70,0x7B,0x47,0x7B,0xCC,0x5F,0x37,0x02,0x20,0x00,0x25,0x4F,0x37,0x20,0x5F,0x39,
+0x02,0x1D,0x01,0x20,0x47,0x39,0xDD,0x8F,0x48,0x1B,0x3A,0xE8,0x9F,0x01,0x9E,0xE1,
+0xD2,0xE8,0xFE,0x16,0xCC,0x6A,0x00,0x06,0x1C,0x81,0x08,0x8C,0x6D,0x50,0xA0,0x18,
+0xE7,0xFF,0xBF,0x72,0x9D,0x44,0x5D,0x43,0x89,0x23,0xFE,0x61,0xE4,0x00,0x01,0x99,
+0xE4,0x00,0x67,0xA6,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,0xA0,0x18,0xE7,0xFF,0xBE,
+0x58,0x9A,0xE4,0xD2,0xE7,0x01,0xC2,0x43,0x0C,0xBC,0x13,0x58,0xFC,0x1F,0x01,0x20,
+0x4F,0x3A,0x09,0x57,0x5A,0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,0x50,
+0x7B,0x47,0x5A,0xC4,0x5F,0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,0x02,
+0x1F,0x61,0x20,0x47,0x18,0xD5,0x8F,0x3B,0x1B,0x19,0xE8,0x9E,0xE1,0xD2,0xE8,0xFE,
+0x36,0xE4,0x00,0x00,0xD5,0xE4,0x00,0x66,0xFC,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,
+0xA0,0x18,0xE7,0xFF,0xBD,0xAE,0xE4,0x00,0x00,0x9F,0x43,0x0B,0xBC,0x13,0x58,0xFC,
+0x1F,0x01,0x20,0x4F,0x3A,0x09,0x57,0x5A,0x01,0x8F,0x19,0x13,0x18,0xE8,0x5F,0x40,
+0x01,0x4B,0x50,0x7B,0x47,0x5A,0xC4,0x5F,0x17,0x02,0x5F,0x5A,0x02,0x20,0x00,0x25,
+0x4F,0x17,0x20,0x5F,0x18,0x02,0x1F,0x81,0x20,0x47,0x18,0xD5,0x8F,0x3C,0x1B,0x19,
+0xE8,0x9E,0xE1,0xD2,0xE8,0xFE,0x3E,0xC1,0x18,0x00,0x21,0x9D,0x64,0xFD,0x08,0xB9,
+0xF7,0xD5,0x68,0x00,0x52,0x9A,0xE4,0xE7,0xFF,0xFF,0x67,0x04,0x60,0x81,0x1C,0x81,
+0x08,0x50,0xA0,0x18,0xE7,0xFF,0xBD,0xCA,0xE4,0x00,0x66,0x3C,0xE4,0x00,0x02,0x59,
+0xE4,0x00,0x66,0x06,0x99,0x40,0x51,0xC0,0x22,0x1C,0x61,0x08,0x50,0x80,0x22,0x50,
+0xA0,0x18,0xE7,0xFF,0xBC,0xAE,0x5E,0xEA,0x00,0x22,0xE0,0xE6,0x12,0xE1,0x15,0x56,
+0xF7,0x0F,0x52,0xF7,0x40,0x1A,0xE1,0x15,0x12,0xE1,0x0C,0x56,0xF7,0x0F,0x52,0xF7,
+0x50,0x13,0x01,0x0E,0x1A,0xE1,0x0C,0x9A,0xF0,0x47,0x17,0xC4,0x53,0x18,0x06,0x1B,
+0x01,0x0E,0x13,0x01,0x1D,0x46,0xF7,0xC4,0x52,0xF7,0x07,0x1A,0xE1,0x1D,0xE4,0x00,
+0x01,0x49,0x9A,0xE4,0x43,0x0C,0xBC,0x13,0x58,0xFC,0x1F,0x01,0x20,0x4F,0x3A,0x09,
+0x57,0x5A,0x01,0x8F,0x19,0x17,0x18,0xE8,0x5F,0x40,0x01,0x4B,0x50,0x7B,0x47,0x5A,
+0xC4,0x5F,0x17,0x02,0x20,0x00,0x25,0x4F,0x17,0x20,0x5F,0x18,0x02,0x1F,0x61,0x20,
+0x47,0x18,0xD5,0x8F,0x3B,0x1B,0x19,0xE8,0x1F,0x77,0xFD,0x9E,0xE1,0x5F,0x7B,0x00,
+0xD2,0xE7,0xFE,0x26,0xE4,0x00,0x00,0xF7,0x5F,0x97,0x00,0x27,0x84,0x2B,0x11,0x1A,
+0x00,0xE4,0x00,0x00,0x0F,0x11,0x19,0x00,0x4F,0xA8,0x09,0x55,0x08,0x01,0x1F,0xC1,
+0x20,0x5D,0x00,0x01,0x8F,0xDD,0x49,0x10,0x7B,0x17,0x9E,0xE8,0x47,0x88,0xE4,0x1B,
+0x9E,0xE8,0x8B,0xDC,0x5F,0x98,0x02,0x20,0x00,0x31,0x43,0x9B,0xBC,0x4F,0x9C,0x20,
+0x5F,0x9C,0x02,0x47,0x9C,0xF5,0x1D,0x01,0x20,0x8F,0xA8,0x1B,0x9D,0xE8,0x9E,0xE1,
+0x9F,0x01,0x1F,0x5A,0x15,0x5F,0x18,0x00,0x1F,0x39,0x13,0x5F,0x97,0x00,0xD4,0x7C,
+0xFD,0x55,0xCC,0x6A,0x00,0x18,0x19,0xC1,0x1F,0x8C,0x6D,0x1C,0x81,0x08,0x50,0xA0,
+0x18,0x9D,0x41,0xE7,0xFF,0xBB,0xAC,0xD1,0x42,0xF7,0x8A,0xE7,0xFF,0xFD,0xFD,0x98,
+0x64,0x1F,0x4B,0x02,0x40,0x63,0xDD,0x1F,0x2B,0x03,0x9F,0x64,0x5C,0x63,0x00,0x5F,
+0x1B,0x00,0x9A,0xE0,0xE7,0xFF,0xFE,0xE9,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,
+0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0x1C,
+0x21,0xE8,0x0D,0x61,0x0C,0x0D,0x21,0x14,0x0D,0x41,0x10,0x0D,0x81,0x08,0x0D,0xA1,
+0x04,0x89,0x63,0xD0,0x69,0x0C,0xF5,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,
+0xB9,0x54,0x8E,0xF8,0x0E,0xF7,0x02,0x86,0xE9,0xCD,0x43,0x00,0x1A,0xC1,0xA0,0x10,
+0x01,0x99,0x80,0xFD,0xAD,0x08,0x58,0x8D,0x4D,0x13,0x4A,0x01,0x13,0x2A,0x00,0x13,
+0x0A,0x03,0x12,0xEA,0x02,0x4C,0x9A,0xC0,0x4C,0xB8,0xC0,0x4F,0x5A,0x80,0x4F,0x18,
+0x80,0x8C,0x9A,0x8C,0xB8,0x8C,0x99,0x8C,0xB7,0x4F,0x39,0x40,0x4E,0xF7,0x40,0x88,
+0x6C,0x8C,0x99,0x8C,0xB7,0x9D,0x81,0xE4,0x00,0x65,0x3C,0x5D,0x8C,0x00,0x9D,0x44,
+0xD1,0x86,0xFE,0x4E,0x98,0x66,0x98,0x80,0x98,0xA0,0xCD,0x4B,0x00,0x1A,0x8D,0x4D,
+0x10,0xCA,0x18,0xE4,0x00,0x65,0x6C,0x98,0x66,0x98,0x80,0x98,0xA1,0x10,0xCA,0x18,
+0xE4,0x00,0x65,0x52,0x98,0x66,0x98,0x81,0x98,0xA0,0x10,0xCA,0x19,0xE4,0x00,0x65,
+0x38,0x98,0x66,0x98,0x81,0x98,0xA1,0x10,0xCA,0x19,0xE4,0x00,0x65,0x1E,0x98,0x66,
+0x98,0x82,0x98,0xA0,0x98,0xC0,0xE4,0x00,0x65,0x06,0x98,0x66,0x98,0x82,0x98,0xA1,
+0x98,0xC0,0xE4,0x00,0x64,0xEE,0x98,0x66,0x98,0x83,0x98,0xA0,0x98,0xC0,0xE4,0x00,
+0x64,0xD6,0x98,0x66,0xE4,0x00,0x00,0x83,0xC1,0xA0,0x10,0x01,0x99,0x40,0xFD,0xAD,
+0x08,0x76,0x5D,0x8A,0x00,0x41,0x6A,0x6C,0x98,0x60,0x88,0x8C,0x98,0xA0,0x10,0xCB,
+0x00,0xE4,0x00,0x64,0x90,0x98,0x60,0x88,0x8C,0x98,0xA1,0x10,0xCB,0x00,0x9D,0x41,
+0xE4,0x00,0x64,0x72,0x21,0x4F,0x7A,0x98,0x60,0x98,0x83,0x98,0xA0,0x98,0xC0,0xE4,
+0x00,0x64,0x54,0x98,0x60,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,
+0x12,0x0D,0x21,0x16,0x98,0x83,0x98,0xA1,0x98,0xC0,0x1C,0x21,0x18,0xE4,0x00,0x64,
+0x19,0xC3,0x00,0x10,0x01,0x0D,0xA1,0x06,0xFE,0xF8,0x08,0x72,0xF3,0x38,0x08,0x72,
+0x13,0x57,0x01,0x13,0x17,0x03,0x4C,0x9A,0xC0,0x12,0xF7,0x02,0x4C,0xB8,0xC0,0x4F,
+0x5A,0x80,0x4F,0x18,0x80,0x8C,0x9A,0x8C,0xB8,0x8C,0x99,0x8C,0xB7,0x4F,0x39,0x40,
+0x4E,0xF7,0x40,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x98,
+0x60,0x8C,0x99,0x8C,0xB7,0x1C,0x21,0x18,0xE4,0x00,0x63,0x1B,0xC1,0x60,0x10,0x01,
+0x99,0x40,0xFD,0x6B,0x08,0x79,0x4D,0xAA,0x11,0x55,0x8A,0x03,0x10,0xCB,0x00,0x88,
+0x6D,0x88,0x8C,0x98,0xA0,0xE4,0x00,0x63,0x48,0x10,0xCB,0x00,0x88,0x6D,0x88,0x8C,
+0x98,0xA1,0x9D,0x41,0xE4,0x00,0x63,0x2A,0x5D,0x4A,0x00,0x9D,0x61,0xD1,0x48,0xFE,
+0xCE,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,
+0x1C,0x21,0x18,0x85,0x29,0x1C,0x21,0xE0,0x0D,0xC1,0x08,0x0D,0x21,0x1C,0x0D,0x41,
+0x18,0x0D,0x61,0x14,0x0D,0x81,0x10,0x0D,0xA1,0x0C,0x0D,0xE1,0x04,0x89,0xC4,0xD0,
+0x66,0x00,0xB5,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xB9,0x7C,0x4C,0x63,0x10,0x8C,0x77,
+0x0E,0xE3,0x02,0x86,0xE9,0x99,0xED,0xC9,0x60,0x18,0x08,0xE4,0x00,0x02,0xBF,0x24,
+0x84,0xC3,0xC2,0xE0,0x10,0x01,0xE9,0x77,0x01,0x5F,0xC2,0xE0,0x10,0x01,0xC1,0x61,
+0x00,0x64,0x20,0x00,0x4D,0x9B,0x01,0x99,0xE7,0xFB,0x17,0x08,0x50,0xC9,0x60,0x20,
+0x09,0xE4,0x00,0x01,0x7F,0xF8,0x17,0x08,0x50,0x99,0xE7,0xE4,0x00,0x01,0x6B,0x1E,
+0xE4,0xFE,0xD2,0xE1,0x04,0xC1,0xD0,0x87,0x05,0x22,0x5D,0xC1,0x01,0xCA,0xE0,0x18,
+0x08,0x49,0xE2,0x6B,0xC9,0x60,0x10,0x06,0xE4,0x00,0x00,0xDD,0xD0,0x81,0x05,0x01,
+0x1E,0xE4,0xFE,0xD2,0xE1,0x05,0x19,0xD0,0x87,0x05,0x7A,0x5C,0x81,0x01,0xCA,0xE0,
+0x18,0x08,0xC9,0x60,0x10,0x06,0x99,0xA0,0x49,0xE2,0x6B,0x49,0x6B,0xB8,0x89,0x4D,
+0xE4,0x00,0x00,0x9B,0xD0,0x81,0x05,0x21,0x1E,0xE4,0xFE,0xD2,0xE1,0x05,0x19,0xD0,
+0x87,0xFD,0xDE,0xE4,0x00,0x01,0x57,0xD0,0x81,0x05,0xC9,0x5C,0x80,0xE1,0xCA,0xE0,
+0x18,0x08,0xC9,0x60,0x08,0x03,0x49,0xE1,0x6B,0x49,0x6B,0xB8,0xE4,0x00,0x01,0x55,
+0xD0,0x81,0x05,0x71,0xD0,0x87,0x05,0x82,0x5C,0x81,0x01,0xCA,0xE0,0x18,0x08,0x49,
+0xE2,0x6B,0xC9,0x60,0x20,0x09,0x49,0x6B,0xB8,0x99,0xA2,0x99,0x41,0x49,0x81,0x01,
+0xE4,0x00,0x01,0x41,0x99,0xE1,0xE4,0x00,0x00,0xF9,0x99,0xE7,0xC9,0x60,0x18,0x08,
+0x99,0xA2,0x99,0x41,0x99,0x83,0xE4,0x00,0x00,0x21,0x99,0xE1,0xC9,0x60,0x32,0x0B,
+0x99,0xA2,0x99,0x41,0x99,0x80,0x98,0x60,0xE4,0x00,0x00,0xF5,0x99,0xE7,0xC9,0x60,
+0x18,0x08,0xE4,0x00,0x00,0x35,0x99,0xA0,0x99,0xE7,0xC9,0x60,0x18,0x08,0x89,0x4D,
+0x99,0x83,0xE4,0x00,0x00,0x21,0x99,0xE1,0xC9,0x60,0x32,0x0B,0x99,0xA0,0x99,0x80,
+0x89,0x4D,0x98,0x61,0xE4,0x00,0x00,0x9D,0x99,0xE7,0xE4,0x00,0x00,0x2D,0x99,0xE7,
+0xC9,0x60,0x18,0x08,0x99,0xA2,0x99,0x41,0x99,0x83,0xE4,0x00,0x00,0x21,0x99,0xE1,
+0xC9,0x60,0x32,0x0B,0x99,0xA2,0x99,0x41,0x99,0x80,0x98,0x62,0xE4,0x00,0x00,0x4D,
+0x99,0xE7,0xC9,0x60,0x08,0x03,0x99,0xA0,0x89,0x4D,0xE4,0x00,0x00,0x29,0x99,0xE7,
+0xE4,0x00,0x00,0x0D,0x99,0xE1,0xC9,0x60,0x10,0x06,0x99,0xA2,0x99,0x41,0x99,0x80,
+0x98,0x63,0xE7,0xFF,0x9D,0xAE,0x88,0x6A,0x88,0x8D,0xE4,0x00,0x75,0x92,0x88,0x6A,
+0x88,0x8B,0xE4,0x00,0x60,0x6E,0x21,0xA0,0x3E,0x88,0x6A,0x88,0x8B,0xE4,0x00,0x71,
+0x6C,0xE4,0x00,0x00,0x1F,0x21,0xA0,0x2C,0x88,0x6A,0x88,0x8B,0xE4,0x00,0x72,0xC8,
+0x88,0x6A,0x05,0x60,0xFF,0xC9,0x6B,0xFF,0xFF,0x88,0x8B,0xE4,0x00,0x62,0xF4,0x88,
+0x8B,0x88,0x6A,0xE4,0x00,0x60,0x7C,0x98,0x62,0xE4,0x00,0x5D,0xFC,0xC2,0xE0,0x10,
+0x01,0x98,0x60,0xEC,0x17,0x08,0x48,0xC1,0xA0,0x10,0x01,0xEC,0x0D,0x08,0x4C,0xE4,
+0x00,0x6A,0x38,0x98,0x60,0xE4,0x00,0x62,0x38,0x98,0x60,0x88,0x8B,0xE4,0x00,0x61,
+0x28,0x88,0x6F,0xE4,0x00,0x5D,0x54,0x98,0x60,0xE4,0x00,0x63,0x78,0x21,0x84,0x5E,
+0xED,0x8D,0x08,0x4C,0x98,0x61,0xE4,0x00,0x69,0xEA,0x98,0x63,0xE4,0x00,0x61,0xEA,
+0xE4,0x00,0x00,0x2B,0x21,0x8C,0x46,0x98,0x61,0x88,0x8B,0xE4,0x00,0x60,0xCC,0x98,
+0x61,0xE4,0x00,0x63,0x28,0xE4,0x00,0x67,0x0C,0x1C,0x63,0x13,0x5C,0x83,0x00,0x88,
+0x6A,0x5C,0x82,0x93,0x20,0x00,0x1B,0x50,0x80,0x14,0xE4,0x00,0x64,0x2A,0x88,0x6A,
+0x98,0x8C,0xE4,0x00,0x63,0x4C,0xC2,0xE0,0x10,0x01,0x88,0x6E,0xED,0xD7,0x08,0x54,
+0xE7,0xFF,0xF1,0xCE,0x88,0x6E,0x0D,0xE1,0x06,0x0D,0xC1,0x0A,0x0D,0xA1,0x0E,0x0D,
+0x81,0x12,0x0D,0x61,0x16,0x0D,0x41,0x1A,0x0D,0x21,0x1E,0x1C,0x21,0x20,0xE7,0xFF,
+0xF7,0x63,0xC2,0xE0,0x10,0x01,0x1C,0x21,0xE8,0xEC,0x77,0x01,0x60,0x0D,0x41,0x10,
+0x0D,0x61,0x0C,0x0D,0x21,0x14,0x0D,0x81,0x08,0x0D,0xA1,0x04,0x89,0x43,0xC1,0x60,
+0x10,0x01,0xE7,0xFF,0xFA,0xA6,0xFD,0x6B,0x00,0xDE,0x25,0x44,0x29,0x21,0x4D,0x66,
+0xE4,0x00,0x00,0x81,0x99,0x40,0xC1,0x80,0x10,0x01,0xC1,0xA0,0x10,0x01,0xF2,0xEC,
+0x08,0x50,0x88,0x6A,0x98,0x80,0x22,0xE4,0x1C,0xE8,0x8D,0x08,0x11,0x9D,0x41,0xE4,
+0x00,0x68,0xD2,0x5D,0x4A,0x00,0xD1,0x44,0xFF,0x46,0xE7,0xFF,0xDE,0x3C,0xC2,0xE0,
+0x10,0x01,0x0C,0x6B,0x0B,0xEB,0x17,0x06,0xFF,0x53,0x18,0x20,0xE4,0x00,0x00,0x2D,
+0xE7,0xFF,0xDE,0x10,0xC2,0xE0,0x10,0x01,0x0C,0x6B,0x0F,0xEB,0x17,0x06,0xFF,0x53,
+0x18,0x80,0xEF,0x17,0x06,0xFF,0x0D,0xA1,0x06,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,
+0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,0x1C,0x21,0xD0,0xC2,0xE0,0x10,
+0x01,0x0D,0x41,0x28,0x0D,0xC1,0x18,0xEE,0xF7,0x00,0xDA,0x0D,0x21,0x2C,0x0D,0x61,
+0x24,0x0D,0x81,0x20,0x0D,0xA1,0x1C,0x0D,0xE1,0x14,0x0E,0x01,0x10,0x0E,0x21,0x0C,
+0x0E,0x41,0x08,0x0E,0x61,0x04,0x5E,0xE0,0x41,0x89,0x43,0x49,0xC1,0x01,0x24,0x64,
+0x69,0x1E,0xE3,0xFE,0xD2,0xE1,0x04,0xA9,0xD0,0x67,0x04,0xC2,0xD0,0x69,0x04,0xD2,
+0xD0,0x68,0x04,0xE2,0xE4,0x00,0x01,0x0B,0x51,0x60,0x1A,0x9A,0xE0,0x20,0x60,0x5C,
+0x9A,0xE0,0xD1,0x45,0x00,0x92,0x9A,0xE1,0x21,0x44,0x30,0x21,0x4C,0x24,0xD1,0x46,
+0x00,0x32,0x9A,0xE0,0xCE,0xF7,0x00,0x34,0xC1,0xE0,0x10,0x01,0xC2,0x00,0x10,0x01,
+0xFD,0xEF,0x09,0x38,0xFE,0x10,0x08,0x12,0x99,0x80,0xC2,0x40,0x10,0x01,0xC2,0x60,
+0x10,0x01,0x8D,0xF7,0x8E,0x17,0x89,0xAC,0x1E,0x2A,0xFE,0xFE,0x52,0x0B,0xE0,0xFE,
+0x73,0x08,0xAA,0x88,0x6D,0x98,0x81,0x88,0xAE,0xE4,0x00,0x6D,0x18,0x42,0xEF,0x64,
+0x25,0x44,0x5D,0x42,0xF0,0x64,0x26,0x24,0x45,0x42,0xEC,0x9C,0xD1,0x47,0x00,0x5A,
+0xD1,0x48,0x00,0x56,0x42,0xEC,0x94,0x0C,0x77,0x01,0x9D,0xA1,0x9D,0x82,0x5D,0xAD,
+0x00,0xD5,0x6D,0xFE,0x95,0xE4,0x00,0x00,0x4F,0x51,0x60,0x1A,0xE4,0x00,0x00,0x2D,
+0x99,0x63,0xE7,0xFF,0xFF,0x21,0x99,0x64,0xE7,0xFF,0xFF,0x15,0x99,0x68,0xE7,0xFF,
+0xFF,0x09,0x9A,0xE0,0xD1,0x42,0xFB,0x66,0xE7,0xFF,0xFE,0xF9,0x0E,0x61,0x06,0x0E,
+0x41,0x0A,0x0E,0x21,0x0E,0x0E,0x01,0x12,0x0D,0xE1,0x16,0x0D,0xC1,0x1A,0x0D,0xA1,
+0x1E,0x0D,0x81,0x22,0x0D,0x61,0x26,0x0D,0x41,0x2A,0x0D,0x21,0x2E,0x1C,0x21,0x30,
+0x85,0x29,0x9C,0x30,0x0D,0x41,0x08,0x0D,0x21,0x0C,0x0D,0x61,0x04,0x89,0x44,0xD0,
+0x67,0x08,0x15,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xB9,0x98,0x4C,0x63,0x10,0x8C,0x77,
+0xC2,0xE0,0x10,0x01,0x0F,0x03,0x02,0xFE,0xF7,0x06,0xFE,0x87,0x09,0x0B,0x17,0x01,
+0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0xD0,0x88,0x06,0xD5,0x9A,0xE1,0x4E,0xF7,0x24,
+0xC6,0xF7,0x01,0x83,0xD2,0xE0,0x06,0x6A,0xE4,0x00,0x01,0x6F,0x0B,0x17,0x01,0xC7,
+0x18,0xFF,0xDF,0x0F,0x17,0x01,0xD0,0x88,0x05,0xDD,0x9A,0xE1,0x4E,0xF7,0x24,0xC7,
+0x17,0x01,0x8C,0xD3,0x00,0x04,0xE6,0x56,0xF7,0x03,0xD2,0xE0,0x05,0x3A,0x88,0x64,
+0xE7,0xFF,0xFC,0xF4,0xCE,0xEA,0x00,0x34,0xC1,0x60,0x10,0x01,0xFD,0x6B,0x09,0x38,
+0x8D,0x77,0x88,0x6B,0xE7,0xFF,0xA0,0xA4,0xE7,0xFF,0xA0,0x1A,0xD0,0x60,0x04,0x2A,
+0x88,0x6B,0xE7,0xFF,0xA1,0x06,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x01,0x62,0x22,0xE5,
+0xCE,0xE4,0x00,0x00,0x41,0xD0,0x88,0x03,0x65,0x9A,0xE1,0x4E,0xF7,0x24,0xC7,0x17,
+0x01,0x8C,0x23,0x01,0x36,0x56,0xF7,0x03,0x22,0xE1,0x64,0x88,0x6A,0xE7,0xFF,0xFC,
+0x5A,0x88,0x6A,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0xE7,
+0xFF,0xEA,0x57,0x0B,0x17,0x01,0xC7,0x18,0xFF,0x7F,0x0F,0x17,0x01,0xD0,0x88,0x01,
+0xA5,0x4F,0x04,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xB9,0xB8,0x8E,0xF8,0x0E,0xF7,
+0x02,0x86,0xE9,0x98,0x67,0xE4,0x00,0x00,0x19,0x98,0x68,0xE4,0x00,0x00,0x0D,0x88,
+0x6A,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0xE7,0xFF,0xFB,
+0xBB,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0x98,0x60,0xFE,0xF7,0x08,0x12,0xCB,0x40,0xFF,0xFE,0x0B,0x37,0x00,
+0x4F,0x19,0xFA,0x47,0x38,0xCE,0x43,0x19,0xC5,0x8C,0x78,0x5F,0x03,0x04,0xCB,0x20,
+0xFF,0xFE,0x9E,0xE2,0x5C,0x79,0x17,0x48,0x78,0xD0,0xC3,0x00,0x10,0x01,0xFF,0x18,
+0x08,0x46,0xD6,0xF8,0xFE,0xDE,0x85,0x29,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x04,
+0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x08,0xC2,0xE0,0x10,0x01,0x9B,0x04,0xEC,0x17,
+0x08,0x0C,0x98,0x64,0xC2,0xE0,0x10,0x01,0x98,0x80,0xEF,0x17,0x01,0x60,0xE7,0xFF,
+0xF4,0x8F,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x08,0x06,0xE4,0x00,0x00,
+0x41,0x20,0x68,0x3E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x08,0x0A,0xE4,0x00,0x00,0x23,
+0x9A,0xE0,0x20,0x6C,0x2E,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x08,0x0E,0x88,0x77,0x85,
+0x29,0x20,0x64,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x08,0x04,0xE4,0x00,0x00,0x3D,
+0x20,0x68,0x3E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x08,0x08,0xE4,0x00,0x00,0x1F,0x20,
+0x6C,0x2E,0xC2,0xE0,0x10,0x01,0xEC,0x97,0x08,0x0C,0x85,0x29,0xC3,0x80,0x10,0x01,
+0xC3,0x60,0x10,0x01,0xC3,0x40,0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,0x00,0x10,0x01,
+0xFF,0x9C,0x08,0x90,0xFF,0x7B,0x08,0xD8,0xFF,0x5A,0x08,0x87,0xFF,0x39,0x0B,0xD0,
+0xFF,0x18,0x08,0xC8,0x20,0x69,0x7E,0x0A,0xFC,0x04,0x0B,0xD9,0x09,0x43,0xD7,0xF5,
+0x5F,0xDE,0x06,0x4F,0xBE,0xFA,0x47,0xDD,0xF6,0x43,0xBE,0xED,0xC3,0xA0,0x19,0x0C,
+0x20,0x00,0x7D,0x0B,0xBC,0x07,0x0B,0x99,0x0B,0x43,0xBD,0xE5,0x5F,0xBD,0x06,0x4F,
+0x9D,0xFA,0x47,0xBC,0xEE,0x43,0x9D,0xE5,0xC3,0x80,0x1F,0x48,0x20,0x05,0x1D,0x0E,
+0xF8,0x01,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0x97,0x0B,0x99,0x0B,0x0E,0xF8,0x03,
+0x0B,0x39,0x0F,0x12,0xFA,0x00,0x0F,0x9B,0x01,0x0F,0x3B,0x03,0x52,0xF7,0x02,0xE4,
+0x00,0x01,0x59,0xC3,0xA0,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0xBD,0x08,0x8C,0xFE,
+0xF7,0x0B,0xF0,0x20,0x6D,0x96,0x0B,0x79,0x01,0x0B,0xDC,0x01,0x43,0xDE,0xDD,0x5F,
+0xDE,0x06,0x4F,0x7E,0xFA,0x47,0xDB,0xF6,0x43,0x7E,0xDD,0xC3,0x60,0x19,0x0C,0x20,
+0x00,0x7D,0x0B,0x39,0x03,0x0B,0x7C,0x03,0x43,0x7B,0xCD,0x5F,0x7B,0x06,0x4F,0x3B,
+0xFA,0x47,0x79,0xDE,0x43,0x3B,0xCD,0xC3,0x20,0x1F,0x48,0x20,0x03,0x61,0x0B,0x37,
+0x17,0x0F,0x38,0x01,0x0B,0x37,0x19,0x0F,0x38,0x03,0x0B,0x37,0x47,0x0A,0xF7,0x49,
+0x0E,0xF8,0x07,0x12,0xFA,0x00,0x52,0xF7,0x01,0x0F,0x38,0x05,0x1A,0xFA,0x00,0x9A,
+0xE2,0x1A,0xFD,0x00,0xE4,0x00,0x01,0x5F,0xD0,0x64,0x01,0xD6,0x0B,0x3B,0x00,0x0B,
+0x7B,0x02,0x43,0x79,0xDD,0x9F,0x6E,0x5F,0x63,0x9B,0x20,0x00,0x2F,0xC3,0x20,0x10,
+0x01,0xEB,0x39,0x08,0xCB,0x0B,0x18,0x01,0x0F,0x17,0x47,0x9B,0x02,0x0F,0x37,0x49,
+0x1B,0x17,0x00,0x12,0xFA,0x00,0x9B,0x1D,0x46,0xF7,0xC4,0x1A,0xFA,0x00,0xE4,0x00,
+0x00,0xEB,0xD0,0x65,0x03,0x8E,0x13,0x7D,0x00,0x23,0x68,0xFE,0x0B,0x98,0x00,0x0B,
+0x59,0x00,0x8F,0x5C,0x43,0x5A,0xD8,0x0B,0x98,0x02,0x0F,0x57,0x17,0x0B,0x59,0x02,
+0x8F,0x5C,0x43,0x5A,0xD8,0x0B,0x98,0x04,0x0F,0x57,0x19,0x0B,0x59,0x08,0x8F,0x5C,
+0x43,0x5A,0xD8,0x0F,0x57,0x47,0x0B,0x58,0x06,0x0B,0x19,0x0A,0x8F,0x1A,0x43,0x78,
+0xD8,0x0F,0x77,0x49,0xE4,0x00,0x00,0x55,0x23,0x64,0x9A,0x0B,0x38,0x01,0x0F,0x37,
+0x17,0x0B,0x38,0x03,0x0F,0x37,0x19,0x0B,0x38,0x05,0x0B,0x18,0x07,0x0F,0x37,0x47,
+0x0F,0x17,0x49,0x9B,0x3E,0x13,0x1A,0x00,0x47,0x18,0xCC,0x1B,0x1A,0x00,0x9B,0x02,
+0x1B,0x17,0x00,0x85,0x29,0xC3,0x00,0x10,0x01,0xFF,0x18,0x08,0x90,0xFE,0xE0,0x7F,
+0xFF,0x0E,0xF8,0x01,0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0x9B,0x01,0xC3,
+0x20,0x10,0x01,0xFF,0x39,0x01,0xAC,0x1B,0x19,0x01,0xC3,0x00,0x10,0x01,0xFF,0x18,
+0x08,0xF4,0x0E,0xF8,0x01,0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0xC3,0x00,
+0x10,0x01,0xF8,0x18,0x08,0xE4,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,0xD0,0x0E,0xF8,
+0x01,0x0E,0xF8,0x03,0x0E,0xF8,0x05,0x0E,0xF8,0x07,0x0E,0xF8,0x09,0x0E,0xF8,0x0B,
+0x0E,0xF8,0x0D,0x0E,0xF8,0x0F,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x09,0x01,0xC2,0xE0,
+0x10,0x01,0x18,0x19,0x00,0xF3,0x17,0x08,0x87,0x9B,0x3C,0x47,0x18,0xCC,0xFB,0x17,
+0x08,0x87,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x8C,0x85,0x29,0xC3,0x00,0x10,0x01,
+0xC3,0x40,0x10,0x01,0x5C,0x63,0x00,0xFF,0x18,0x09,0x6C,0x9A,0xE0,0xFF,0x5A,0x0A,
+0x1C,0xE4,0x00,0x00,0x31,0x4F,0x37,0x10,0x0B,0x98,0x00,0x0B,0x78,0x02,0x8F,0x3A,
+0x8F,0x7C,0x9E,0xE1,0x0F,0x79,0x00,0x9F,0x04,0x5F,0x37,0x00,0xD4,0x79,0xFF,0x4D,
+0x85,0x29,0xC3,0x00,0x10,0x01,0x5C,0x84,0x00,0xFF,0x18,0x09,0x6C,0x20,0xA0,0x6C,
+0xE4,0x00,0x00,0x4B,0x4F,0x37,0x08,0x9E,0xE1,0x43,0x59,0xC4,0x8F,0x23,0x0B,0x5A,
+0x00,0x0F,0x59,0x01,0xE4,0x00,0x00,0x0D,0x9A,0xE0,0x5F,0x37,0x00,0xD4,0x99,0xFF,
+0x3D,0xE4,0x00,0x00,0x7B,0x20,0xA4,0xE6,0xE4,0x00,0x00,0x31,0x4F,0x37,0x08,0x9E,
+0xE1,0x43,0x43,0xCC,0x8F,0x38,0x0B,0x5A,0x00,0x0F,0x59,0x01,0xE4,0x00,0x00,0x0D,
+0x9A,0xE0,0x5F,0x37,0x00,0xD4,0x99,0xFF,0x3D,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,
+0x7A,0x10,0x77,0x01,0x12,0xF7,0x04,0x40,0x63,0xBB,0xE7,0xFF,0xFE,0xC5,0x85,0x29,
+0x9C,0x38,0x98,0x63,0x0D,0x21,0x04,0xE7,0xFF,0x8F,0x04,0x0D,0x21,0x06,0x9C,0x28,
+0xE4,0x00,0x77,0x39,0x9A,0xED,0x9C,0x30,0x0D,0x41,0x08,0x0D,0x61,0x04,0xC1,0x60,
+0x10,0x01,0xFD,0x4B,0x0B,0x7A,0x1A,0xEA,0x04,0x9A,0xE1,0x1A,0xEA,0x01,0xFE,0xE0,
+0x07,0xFF,0x0E,0xEA,0x07,0x0E,0xEA,0x09,0xC2,0xE0,0x10,0x01,0x9B,0x02,0xFB,0x17,
+0x08,0xD2,0x52,0xE0,0xAA,0x0D,0x21,0x0C,0x0E,0xEA,0x0B,0x50,0x60,0x19,0x98,0x80,
+0xE7,0xFF,0x4A,0x94,0x52,0xE0,0x1D,0xFA,0xEB,0x0B,0x7A,0x9A,0xE4,0x1A,0xEA,0x0C,
+0xC2,0xE0,0x10,0x01,0xEC,0x17,0x00,0xCD,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xC0,
+0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xEC,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xE7,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xB4,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xBC,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xEA,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xE3,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xA8,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xFC,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xD6,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xC7,
+0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xC5,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xB8,
+0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x83,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xD7,
+0xC2,0xE0,0x10,0x01,0x9B,0x03,0xFB,0x17,0x08,0xC6,0xC2,0xE0,0x10,0x01,0xEC,0x17,
+0x07,0xF4,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xE4,0xC2,0xE0,0x10,0x01,0xFF,0x00,
+0x01,0xF4,0xEF,0x17,0x06,0xFD,0xC2,0xE0,0x10,0x01,0xC0,0x60,0x10,0x01,0xF8,0x17,
+0x08,0xFD,0xFC,0x63,0x0A,0x1C,0x98,0x80,0x50,0xA0,0x3C,0xE7,0xFF,0xA2,0xBC,0xC2,
+0xE0,0x10,0x01,0xFE,0xF7,0x0B,0xF0,0x18,0x17,0x04,0x18,0x17,0x05,0x18,0x17,0x06,
+0x18,0x17,0x34,0x18,0x17,0x35,0x18,0x17,0x36,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,
+0xB0,0xC2,0xE0,0x10,0x01,0xF3,0x37,0x00,0xB8,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x3D,
+0xF9,0xCA,0xF7,0x3D,0xF8,0x1B,0x38,0x00,0xC3,0x00,0x10,0x01,0xF3,0x18,0x07,0x6F,
+0x1B,0x17,0x00,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0xA3,0x53,0x18,0x04,0xEF,0x17,
+0x08,0xA3,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x00,0x01,0xFF,0x18,0x1D,0x58,0xEF,0x17,
+0x03,0xE4,0xC2,0xE0,0x10,0x01,0x53,0x00,0xF0,0xEF,0x17,0x08,0xF3,0xC2,0xE0,0x10,
+0x01,0x53,0x00,0xCA,0xEF,0x17,0x08,0x8F,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x00,0x01,
+0xFF,0x18,0x1B,0xCF,0xEF,0x17,0x03,0xF8,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x00,0x01,
+0xFF,0x18,0x19,0x89,0xEF,0x17,0x04,0x18,0xC2,0xE0,0x10,0x01,0xC3,0x00,0x00,0x01,
+0xFF,0x18,0x1A,0x62,0xEF,0x17,0x04,0x14,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x0B,0xA0,
+0xFE,0xF7,0x0B,0xA0,0xC3,0x60,0x10,0x01,0x18,0x17,0x01,0x18,0x17,0x02,0x18,0x17,
+0x03,0x0C,0x17,0x05,0x0C,0x17,0x07,0x0C,0x17,0x0B,0x0C,0x17,0x09,0xC3,0x40,0x10,
+0x01,0xC3,0x20,0x10,0x01,0x9A,0xE0,0xFF,0x7B,0x09,0x6C,0xFF,0x5A,0x0C,0xF6,0xFF,
+0x39,0x09,0xA8,0x43,0x17,0xDC,0x0C,0x18,0x01,0x43,0x17,0xD4,0x0C,0x18,0x01,0x4F,
+0x17,0x08,0x8F,0x19,0x0C,0x18,0x00,0x9E,0xE2,0x5E,0xE7,0x49,0x23,0xFF,0x9D,0x0D,
+0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xE4,0x00,0x70,
+0x67,0x1C,0x21,0xE8,0x0D,0x21,0x14,0xE7,0xFF,0xCD,0x52,0xE7,0xFF,0xA6,0x78,0xE7,
+0xFF,0xCC,0x7C,0xE7,0xFF,0xF4,0xCA,0x50,0xE0,0x14,0x99,0x0C,0x0C,0x01,0x01,0x50,
+0x60,0x1A,0x50,0x80,0x1A,0x98,0xA4,0x04,0xC1,0x6E,0xC8,0xC6,0x36,0x00,0xE7,0xFF,
+0x92,0x4E,0xFC,0xC0,0x01,0x78,0xFC,0xA0,0x02,0xD6,0xC0,0x60,0x10,0x01,0xC0,0x80,
+0x10,0x01,0xFC,0x63,0x01,0x5E,0xFC,0x84,0x08,0x10,0xE7,0xFF,0x94,0xDC,0x98,0x60,
+0x88,0x83,0xE7,0xFF,0x88,0x52,0x98,0x60,0x98,0xA0,0x88,0x83,0xE7,0xFF,0x88,0x58,
+0x98,0x60,0x98,0xA0,0x88,0x83,0xE7,0xFF,0x88,0x6E,0x98,0x80,0x98,0x61,0x88,0xA4,
+0xE7,0xFF,0x88,0x5A,0x98,0xA0,0x98,0x62,0x98,0x81,0xE7,0xFF,0x88,0x46,0x98,0x62,
+0x98,0x80,0xE7,0xFF,0x88,0xBC,0x98,0x60,0x50,0x80,0x66,0xE7,0xFF,0x88,0xC4,0x98,
+0x61,0x50,0x80,0x66,0xE7,0xFF,0x88,0xB2,0x98,0x62,0x50,0x80,0xF3,0xE7,0xFF,0x88,
+0xA0,0x98,0x60,0xFC,0x80,0xA0,0x00,0xE7,0xFF,0x88,0xE8,0x98,0x61,0xFC,0x80,0xA0,
+0x00,0xE7,0xFF,0x88,0xD4,0x98,0x62,0xFC,0x80,0xA0,0x00,0xE7,0xFF,0x88,0xC0,0xFC,
+0x80,0x01,0x26,0x98,0x62,0xE7,0xFF,0x89,0x08,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x96,
+0x56,0xE7,0xFF,0xFA,0x26,0x98,0x61,0xE7,0xFF,0x63,0xE2,0xE7,0xFF,0x50,0x16,0x50,
+0x60,0x1B,0xE7,0xFF,0x8C,0xF6,0x9A,0xEE,0x0E,0xE1,0x00,0x52,0xE0,0x14,0x0E,0xE1,
+0x04,0xCA,0xE0,0x07,0xD0,0x98,0xC8,0x0E,0xE1,0x08,0x98,0xAE,0x88,0xE6,0x99,0x0A,
+0x98,0x6A,0x98,0x8C,0xE7,0xFF,0x44,0x26,0x98,0x81,0x98,0x60,0xE7,0xFF,0xCB,0x28,
+0x50,0x60,0x10,0xE7,0xFF,0xCB,0x52,0xE4,0x00,0x47,0xE6,0xE7,0xFF,0xF9,0x6A,0x98,
+0x80,0x98,0x60,0xE7,0xFF,0x41,0xE8,0xE7,0xFF,0xB9,0x56,0xE7,0xFF,0xB8,0x4C,0xC2,
+0xE0,0x10,0x01,0xF0,0x77,0x01,0xAE,0xE7,0xFF,0xCA,0xEA,0x9B,0x00,0xCA,0xE0,0x48,
+0x00,0xC3,0x17,0x00,0x0D,0xC3,0x17,0x00,0x0F,0x53,0x18,0x04,0xC3,0x17,0x00,0x0D,
+0xC3,0x17,0x00,0x0F,0x53,0x18,0x08,0xC3,0x17,0x00,0x0D,0xC2,0xE0,0x01,0x1F,0x52,
+0xF7,0x06,0xC2,0xE0,0x01,0x1D,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xCA,0x94,0x50,0x60,
+0x20,0xE7,0xFF,0xCA,0x9E,0x98,0x61,0x50,0x80,0x13,0x50,0xA0,0x37,0x98,0xC8,0xFC,
+0xE0,0x01,0x0D,0xE7,0xFF,0xAC,0x26,0xC3,0x00,0x00,0x01,0xC2,0xE0,0x10,0x01,0xFF,
+0x18,0x38,0x80,0x0D,0x21,0x16,0xEF,0x17,0x03,0xD0,0x1C,0x21,0x18,0x85,0x29,0xC2,
+0xE0,0x10,0x01,0xEF,0x17,0x00,0xDA,0x23,0x05,0x08,0xEE,0xF7,0x00,0xDA,0x22,0xE8,
+0xEC,0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x18,0x08,0xAA,0xFE,0xF7,0x08,
+0xDC,0x0B,0x38,0x01,0xC3,0x60,0x10,0x01,0x0F,0x37,0x01,0xC3,0x40,0x10,0x01,0x0B,
+0x38,0x03,0xFF,0x7B,0x0A,0xEC,0x0F,0x37,0x03,0x0B,0x18,0x05,0xFF,0x5A,0x0B,0xE0,
+0x0F,0x17,0x05,0x9A,0xE0,0xE4,0x00,0x00,0x5D,0xC3,0x60,0x10,0x01,0xC3,0x40,0x10,
+0x01,0x9A,0xE0,0xFF,0x7B,0x09,0x04,0xFF,0x5A,0x09,0x38,0x43,0x17,0xDC,0x43,0x37,
+0xD4,0x0B,0x39,0x01,0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xBD,0xE7,
+0xFF,0xFF,0x45,0x43,0x17,0xDC,0x43,0x37,0xD4,0x0B,0x39,0x01,0x0F,0x38,0x01,0x9E,
+0xE2,0x5E,0xE2,0x09,0x23,0xFF,0xBD,0x85,0x29,0xC3,0x00,0x10,0x01,0xC3,0x60,0x10,
+0x01,0x9A,0xE0,0xFF,0x18,0x0C,0xF6,0xFF,0x7B,0x09,0x04,0x43,0x37,0xC4,0x43,0x57,
+0xDC,0x0B,0x5A,0x01,0x0F,0x59,0x01,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xBD,0xC2,
+0xE0,0x10,0x01,0xFE,0xF7,0x08,0xDC,0x0B,0x37,0x01,0x0F,0x38,0x35,0x0B,0x37,0x03,
+0x0A,0xF7,0x05,0x0F,0x38,0x37,0x0E,0xF8,0x39,0x85,0x29,0xE4,0x00,0x6D,0x65,0xC2,
+0xE0,0x10,0x01,0xFF,0x20,0xDF,0x9F,0xEB,0x17,0x08,0xE7,0x47,0x18,0xCC,0x9B,0x3E,
+0xEF,0x17,0x08,0xE7,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0xD1,0x47,0x18,0xCC,0xEF,
+0x17,0x08,0xD1,0x85,0x29,0xC2,0xE0,0x10,0x01,0x88,0xC3,0xF3,0x17,0x00,0xB8,0x23,
+0x08,0x4A,0xF2,0xF7,0x00,0xB8,0x22,0xE8,0x2E,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,
+0x6F,0xC3,0x00,0x10,0x01,0x9A,0xE0,0xFF,0x18,0x09,0x6C,0x8B,0x38,0x5F,0x57,0x00,
+0x27,0x44,0x3D,0x5E,0xE3,0x01,0x20,0x00,0x25,0x5E,0xE3,0x29,0x20,0x00,0x31,0x0B,
+0x59,0x01,0x4F,0x5A,0x08,0x0F,0x59,0x01,0x9E,0xE1,0x9F,0x22,0x5E,0xE3,0x49,0x23,
+0xFF,0x79,0xC2,0xE0,0x10,0x01,0xC3,0x80,0x10,0x01,0xF3,0xD7,0x0B,0x7A,0xFF,0x5C,
+0x08,0xE6,0xC3,0xA0,0x10,0x01,0x1C,0x7E,0xFF,0xFF,0xBD,0x08,0xA8,0x0A,0xFA,0x01,
+0x13,0x7D,0x00,0x9B,0x20,0xE4,0x00,0x00,0x65,0xD4,0x79,0x00,0xF0,0x08,0x98,0x00,
+0x09,0x18,0x02,0x8D,0x04,0xC1,0x00,0x1D,0xE8,0x20,0x00,0x39,0xC1,0x00,0x59,0xE8,
+0xCA,0xF7,0x20,0x00,0x4B,0x7B,0x00,0x09,0x18,0x00,0x50,0x97,0x40,0x5D,0x04,0x19,
+0x9F,0x21,0x4A,0xE4,0xB8,0x9F,0x02,0x5D,0x19,0x04,0xD7,0xC8,0xFE,0x7D,0xC3,0x00,
+0x10,0x01,0x0E,0xFA,0x01,0x1B,0x7D,0x00,0xFF,0x18,0x0B,0x64,0x0B,0x38,0x00,0x53,
+0x77,0x20,0x5F,0x2C,0x99,0x9F,0x02,0xC3,0x20,0x10,0x01,0x4A,0xFB,0xB8,0xFF,0x39,
+0x0B,0x74,0xD7,0x19,0xFF,0x56,0x98,0x60,0x0E,0xFA,0x01,0x88,0x83,0x98,0xA0,0xE7,
+0xFF,0xB5,0x2F,0x9C,0x38,0x0D,0x41,0x00,0x0D,0x21,0x04,0xC1,0x40,0x10,0x01,0x20,
+0x64,0x62,0xE7,0xFF,0xB6,0x4A,0x20,0x64,0x56,0xF2,0xEA,0x08,0xA8,0x9E,0xE1,0xFA,
+0xEA,0x08,0xA8,0xE4,0x00,0x00,0x19,0xE7,0xFF,0xB6,0xD0,0xF8,0x0A,0x08,0xA8,0xE7,
+0xFF,0xD9,0x08,0x20,0x64,0x26,0x99,0x43,0xE4,0x00,0x00,0x29,0xE7,0xFF,0xD8,0xEE,
+0x99,0x49,0x20,0x68,0x28,0xE7,0xFF,0xD8,0xDC,0x20,0x6F,0xB6,0xC2,0xE0,0x10,0x01,
+0xC3,0x20,0x10,0x01,0xF3,0x17,0x08,0xA8,0xF3,0x39,0x0B,0xF0,0x23,0x21,0x1A,0xD5,
+0x58,0x02,0x1D,0xF8,0x17,0x08,0xA8,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xEA,0xC2,
+0xE0,0x10,0x01,0xC3,0x00,0x10,0x01,0xF8,0x17,0x08,0xE3,0xC2,0xE0,0x10,0x01,0xF8,
+0x18,0x08,0xFC,0xF8,0x17,0x08,0xFD,0x0D,0x41,0x02,0xC2,0xE0,0x10,0x01,0x0D,0x21,
+0x06,0xEB,0x17,0x08,0xE7,0x9C,0x28,0x53,0x18,0x80,0xEF,0x17,0x08,0xE7,0xE7,0xFF,
+0x86,0xB3,0x0D,0x41,0x02,0x0D,0x21,0x06,0x9C,0x28,0x85,0x29,0x9C,0x38,0xC3,0x14,
+0x00,0x01,0x0D,0x21,0x04,0xCA,0xF8,0x22,0x00,0x0B,0x37,0x01,0xCB,0x18,0x26,0x18,
+0x9B,0x3F,0x0F,0x37,0x01,0x0B,0x38,0x01,0x53,0x39,0x02,0x0F,0x38,0x01,0x0B,0x17,
+0x01,0xFC,0x60,0x01,0x00,0x0C,0x17,0x01,0xE7,0xFF,0xC4,0xF8,0xC2,0xE0,0x10,0x01,
+0x0D,0x21,0x06,0xEB,0x17,0x00,0xCD,0x9C,0x28,0xC7,0x18,0xFE,0xFF,0xEF,0x17,0x00,
+0xCD,0x85,0x29,0x5C,0xC6,0x00,0x9A,0xE0,0xE4,0x00,0x00,0x45,0x4F,0x17,0x08,0x4F,
+0x57,0x10,0x43,0x23,0xC4,0x8F,0x45,0x8F,0x04,0x0F,0x5A,0x02,0x0B,0x18,0x01,0x4F,
+0x5A,0x42,0x9E,0xE1,0x43,0x18,0xD5,0x0F,0x19,0x01,0x5F,0x17,0x00,0xD4,0xD8,0xFE,
+0xFD,0x85,0x29,0x9C,0x38,0x0D,0x21,0x04,0xE4,0x00,0x40,0x70,0x0D,0x21,0x06,0xFC,
+0x60,0x01,0x00,0x9C,0x28,0xE7,0xFF,0xC4,0x2F,0x9C,0x38,0x0D,0x21,0x04,0xE4,0x00,
+0x40,0x44,0x0D,0x21,0x06,0xFC,0x60,0x01,0x00,0x9C,0x28,0xE7,0xFF,0xC3,0xF3,0x9C,
+0x38,0x0D,0x21,0x04,0xE7,0xFF,0x89,0xCE,0x98,0x80,0x98,0x61,0xE7,0xFF,0xE5,0x4C,
+0x98,0x60,0xE7,0xFF,0x84,0xE2,0x98,0x61,0x98,0x80,0xE7,0xFF,0xEB,0xEE,0x98,0x62,
+0x98,0x80,0xE7,0xFF,0xEB,0xDE,0x98,0x63,0x98,0x80,0xE7,0xFF,0xEB,0xCE,0x98,0x66,
+0xC0,0x80,0x10,0x01,0xC0,0xA0,0x10,0x01,0xFC,0x84,0x01,0xB0,0xFC,0xA5,0x01,0xC8,
+0xC0,0xC0,0x10,0x01,0xFC,0xC6,0x01,0xA0,0xE7,0xFF,0x90,0x0E,0x0D,0x21,0x06,0x9C,
+0x28,0xE7,0xFF,0x95,0x5B,0x9C,0x38,0x0D,0x41,0x00,0x0D,0x21,0x04,0xC1,0x40,0x10,
+0x01,0xE7,0xFF,0xD6,0x04,0xFD,0x4A,0x00,0xDE,0x20,0x68,0x68,0x24,0x64,0x2D,0xD0,
+0x63,0x05,0xD6,0xE4,0x00,0x00,0xCB,0xE7,0xFF,0x88,0xE8,0xE7,0xFF,0xD5,0xD0,0xE4,
+0x00,0x00,0x4F,0xE7,0xFF,0xC3,0x4A,0x0A,0xEA,0x09,0x40,0x63,0xBD,0x5E,0xE3,0x04,
+0xC2,0xE1,0x76,0xEA,0x20,0x00,0x99,0x98,0x62,0xE7,0xFF,0xEA,0x92,0x20,0x60,0x76,
+0xE7,0xFF,0x88,0x96,0x98,0x61,0x98,0x80,0xE7,0xFF,0xE4,0x14,0x0D,0x21,0x06,0x0D,
+0x41,0x02,0x98,0x60,0x9C,0x28,0xE7,0xFF,0x83,0x9B,0x98,0x62,0x98,0x80,0xE7,0xFF,
+0xE3,0xE8,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x8D,0x58,0x0D,0x21,0x06,0x0D,0x41,0x02,
+0x98,0x60,0x9C,0x28,0xE7,0xFF,0x83,0x17,0xE7,0xFF,0xC2,0xA0,0x0A,0xEA,0x0D,0x40,
+0x63,0xBD,0x5E,0xE3,0x04,0xC2,0xE0,0xBB,0x6A,0x20,0x00,0x31,0x98,0x63,0xE7,0xFF,
+0xE9,0xE8,0x20,0x62,0xB8,0xE7,0xFF,0xE9,0x14,0x5C,0x63,0x04,0xC0,0x60,0x19,0x0E,
+0x20,0x00,0x49,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x08,0xE7,0xC6,0xF7,0x20,0x00,0x22,
+0xE0,0x28,0xE7,0xFF,0xC2,0x2C,0x0C,0x6A,0x0D,0x0D,0x41,0x02,0x0D,0x21,0x06,0x98,
+0x63,0x98,0x80,0x9C,0x28,0xE7,0xFF,0xE3,0x1B,0x0D,0x41,0x02,0x0D,0x21,0x06,0x9C,
+0x28,0x85,0x29,0xD0,0x69,0x06,0x2D,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,
+0xB9,0xFC,0x8E,0xF8,0xC3,0x00,0x10,0x01,0x0F,0x37,0x02,0xFF,0x18,0x09,0xA8,0xC2,
+0xE0,0x10,0x01,0xFE,0xF7,0x0A,0x58,0x87,0x29,0xC3,0x00,0x10,0x01,0xFF,0x18,0x0B,
+0x94,0x0F,0x38,0x02,0x0F,0x37,0x68,0x0F,0x38,0x06,0x0F,0x18,0x0A,0x0F,0x37,0x6C,
+0x0F,0x17,0x70,0xE4,0x00,0x01,0x0B,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x0B,0x88,0x0F,
+0x37,0x02,0x0F,0x38,0x68,0x0F,0x37,0x06,0x0E,0xF7,0x0A,0x0F,0x38,0x6C,0x0E,0xF8,
+0x70,0xE4,0x00,0x00,0xCF,0xCE,0xE3,0x00,0x68,0xC3,0x60,0x10,0x01,0xCC,0x63,0x00,
+0x1A,0xFF,0x7B,0x0A,0xFC,0x4C,0x63,0x10,0x8F,0x77,0x8F,0x03,0x9A,0xE0,0x43,0x38,
+0xBC,0x43,0x5B,0xBC,0x0F,0x5A,0x02,0x0F,0x59,0x00,0x9E,0xE4,0x5E,0xED,0x09,0x23,
+0xFF,0xBD,0xE4,0x00,0x00,0x6D,0x9C,0x7E,0xC3,0x40,0x10,0x01,0x5C,0x63,0x00,0xFF,
+0x5A,0x0C,0x54,0xCF,0x03,0x00,0x68,0xCC,0x63,0x00,0x1A,0x8F,0x58,0x4C,0x63,0x10,
+0x8C,0x77,0x9A,0xE0,0x43,0x03,0xBC,0x43,0x3A,0xBC,0x0F,0x39,0x02,0x0F,0x38,0x00,
+0x9E,0xE4,0x5E,0xED,0x09,0x23,0xFF,0xBD,0x85,0x29,0xD0,0x69,0x06,0x3D,0x4F,0x03,
+0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBA,0x24,0x8E,0xF8,0xC3,0x00,0x10,0x01,0x0F,
+0x37,0x02,0xFF,0x18,0x09,0x04,0xC2,0xE0,0x10,0x01,0xFE,0xF7,0x08,0xDC,0x87,0x29,
+0x0B,0x37,0x00,0xC3,0x00,0x10,0x01,0x4F,0x39,0x40,0xFF,0x18,0x0B,0x94,0xE4,0x00,
+0x00,0x25,0x0B,0x37,0x00,0xC3,0x00,0x10,0x01,0x4F,0x39,0x40,0xFF,0x18,0x0B,0x88,
+0x0F,0x38,0x00,0x0B,0x37,0x02,0x0A,0xF7,0x04,0x4F,0x39,0x40,0x4E,0xF7,0x40,0x0F,
+0x38,0x04,0x0E,0xF8,0x08,0xE4,0x00,0x00,0xD9,0xCE,0xE3,0x00,0x34,0x8F,0x17,0xCE,
+0xE3,0x00,0x68,0xC3,0x60,0x10,0x01,0xFF,0x7B,0x0A,0xFC,0x8F,0x77,0x9A,0xE0,0x4F,
+0x37,0x08,0x43,0x58,0xBC,0x8F,0x3B,0x0B,0x5A,0x00,0x4F,0x5A,0x40,0x0F,0x59,0x00,
+0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,0xA9,0xE4,0x00,0x00,0x73,0x1E,0xE3,0xFE,0x5E,
+0xF7,0x00,0xCF,0x37,0x00,0x34,0xCE,0xF7,0x00,0x68,0xC3,0x60,0x10,0x01,0x8F,0x19,
+0xFF,0x7B,0x0C,0x54,0x8F,0x77,0x9A,0xE0,0x4F,0x37,0x08,0x43,0x58,0xBC,0x8F,0x3B,
+0x0B,0x5A,0x00,0x4F,0x5A,0x40,0x0F,0x59,0x00,0x9E,0xE2,0x5E,0xE6,0x89,0x23,0xFF,
+0xA9,0xE7,0xFF,0xFC,0xE5,0x9C,0x38,0x0D,0x21,0x04,0x20,0x64,0x3E,0x98,0x60,0xE7,
+0xFF,0xFE,0x56,0x98,0x68,0xE4,0x00,0x00,0x19,0x98,0x62,0xE7,0xFF,0xFE,0x3E,0x98,
+0x69,0x0D,0x21,0x06,0x9C,0x28,0xE7,0xFF,0xFE,0x29,0x9C,0x38,0x98,0x60,0x0D,0x21,
+0x04,0xE7,0xFF,0xFE,0x12,0x0D,0x21,0x06,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xFD,0xFD,
+0x20,0x80,0x64,0xD0,0x84,0x00,0xE2,0x20,0x88,0x84,0x20,0x8C,0x9C,0x5C,0x80,0x21,
+0x4B,0x0A,0x01,0x8A,0xF8,0xE4,0x00,0x00,0x43,0x9B,0x01,0xE4,0x00,0x00,0x0F,0x53,
+0x00,0x19,0x9A,0xE1,0xE4,0x00,0x00,0x25,0x53,0x00,0x32,0x8A,0xF8,0xE4,0x00,0x00,
+0x13,0x53,0x00,0x50,0x8A,0xF8,0xD0,0x6B,0x0F,0xAD,0x4F,0x43,0x10,0xC3,0x38,0x00,
+0x21,0xFF,0x39,0xBA,0x4C,0x8F,0x3A,0xC3,0x60,0x10,0x01,0x0F,0x99,0x02,0xC3,0x40,
+0x10,0x01,0xC3,0x20,0x10,0x01,0xFF,0x7B,0x09,0x04,0xFF,0x5A,0x0A,0xEC,0xFF,0x39,
+0x08,0xDC,0x87,0x89,0xCF,0x23,0x00,0x34,0x8F,0x79,0xCF,0x23,0x00,0x68,0xC0,0xA0,
+0x10,0x01,0x99,0x02,0xFC,0xA5,0x0A,0xFC,0xCB,0xC0,0x01,0xF4,0x8C,0xB9,0x9B,0x20,
+0x43,0x5B,0xCC,0x4F,0x99,0x08,0x0B,0xBA,0x00,0x8F,0x85,0x4F,0xBD,0x40,0x0F,0x5C,
+0x02,0x5F,0x5D,0x1D,0x43,0xBD,0xD5,0x48,0x98,0xB8,0xCF,0x5A,0x01,0xF4,0x43,0xA4,
+0xEB,0x43,0xBD,0x40,0x8F,0x5D,0x43,0x5A,0xF0,0x0F,0x5C,0x00,0x9F,0x22,0x5F,0x26,
+0x89,0x23,0xFF,0x3D,0xE4,0x00,0x02,0xEF,0x1F,0x23,0xFE,0x5F,0x39,0x00,0xCC,0xB9,
+0x00,0x34,0xCF,0x39,0x00,0x68,0xC0,0x80,0x10,0x01,0x8C,0xBB,0xFC,0x84,0x0C,0x54,
+0x9B,0xC2,0x8C,0x99,0xCB,0xA0,0x01,0xF4,0x9B,0x20,0x43,0x45,0xCC,0x0B,0x9A,0x00,
+0x4F,0x59,0x08,0x4F,0x9C,0x40,0x43,0x64,0xD4,0x0F,0x5B,0x02,0x5F,0x5C,0x1D,0x43,
+0x9C,0xD5,0x49,0x18,0xB8,0xCF,0x5A,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,0x8F,
+0x5C,0x43,0x5A,0xE8,0x0F,0x5B,0x00,0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x39,0xE4,
+0x00,0x02,0x39,0xC3,0x40,0x10,0x01,0x9B,0xC2,0xFF,0x5A,0x0B,0x88,0xCB,0xA0,0x01,
+0xF4,0x0F,0x7A,0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,0x1D,0x43,0x9C,0xDD,
+0x49,0x18,0xB8,0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,0x8F,0x7C,0x43,
+0x7B,0xE8,0x0F,0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,0x44,0xFF,0x7B,0x08,
+0xE2,0xD7,0x3B,0xFE,0x86,0xE4,0x00,0x01,0xAD,0xC3,0x40,0x10,0x01,0x9B,0xC2,0xFF,
+0x5A,0x0B,0x94,0xCB,0xA0,0x01,0xF4,0x0F,0x7A,0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,
+0x5F,0x7C,0x1D,0x43,0x9C,0xDD,0x49,0x18,0xB8,0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,
+0x43,0x9C,0xF0,0x8F,0x7C,0x43,0x7B,0xE8,0x0F,0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,
+0x01,0x9F,0x44,0xFF,0x7B,0x08,0xE2,0xD7,0x3B,0xFE,0x86,0xE4,0x00,0x01,0x21,0x8B,
+0x3A,0x9B,0xC2,0xC3,0x40,0x10,0x01,0xCB,0xA0,0x01,0xF4,0xFF,0x5A,0x0B,0xB0,0x0F,
+0x7A,0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,0x5F,0x7C,0x1D,0x43,0x9C,0xDD,0x49,0x18,
+0xB8,0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,0x43,0x9C,0xF0,0x8F,0x7C,0x43,0x7B,0xE8,
+0x0F,0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,0x01,0x9F,0x44,0xFF,0x7B,0x0A,0xFC,0xD7,
+0x3B,0xFE,0x86,0xE4,0x00,0x00,0x91,0x8B,0x3A,0x9B,0xC2,0xC3,0x40,0x10,0x01,0xCB,
+0xA0,0x01,0xF4,0xFF,0x5A,0x0A,0xCC,0x0F,0x7A,0x02,0x0B,0x99,0x00,0x4F,0x9C,0x40,
+0x5F,0x7C,0x1D,0x43,0x9C,0xDD,0x49,0x18,0xB8,0xCF,0x7B,0x01,0xF4,0x43,0x88,0xE3,
+0x43,0x9C,0xF0,0x8F,0x7C,0x43,0x7B,0xE8,0x0F,0x7A,0x00,0x9F,0x22,0xC3,0x60,0x10,
+0x01,0x9F,0x44,0xFF,0x7B,0x0A,0xFC,0xD7,0x3B,0xFE,0x86,0xE7,0xFF,0xF8,0x11,0x9C,
+0x38,0x0D,0x21,0x04,0x0D,0x41,0x00,0x89,0x43,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xFB,
+0x86,0x88,0x8A,0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xFB,
+0x67,0x1C,0x21,0xC8,0x0D,0xC1,0x20,0x0D,0x21,0x34,0x0D,0x41,0x30,0x0D,0x61,0x2C,
+0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0D,0xE1,0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,0x0E,
+0x41,0x10,0x0E,0x61,0x0C,0x0E,0x81,0x08,0x0E,0xA1,0x04,0xC1,0xC0,0x10,0x01,0xFD,
+0xCE,0x08,0xE6,0x0B,0x6E,0x01,0xC6,0xFB,0x7F,0xFF,0x0E,0xEE,0x01,0xC2,0xE0,0x10,
+0x01,0xFE,0xF7,0x09,0x6C,0x0B,0x57,0x34,0x0B,0x37,0x36,0x47,0x1A,0xD7,0x43,0x9A,
+0xCC,0x4F,0x18,0xFA,0x5F,0x9C,0x04,0x47,0x1A,0xC4,0x5E,0xF8,0x06,0xD7,0x37,0x00,
+0x30,0x8B,0x19,0xC2,0xE0,0x10,0x01,0x5F,0x38,0x06,0xEA,0xF7,0x09,0xA4,0xD6,0xF9,
+0x00,0x30,0x8B,0x17,0x8E,0xFC,0x5F,0x18,0x06,0x1E,0xF7,0xEB,0x5E,0xF7,0x04,0xC2,
+0xE0,0x18,0xCE,0x20,0x00,0xE9,0xC3,0x00,0x12,0xAC,0x20,0x00,0xCD,0xD3,0x0F,0x01,
+0x80,0xC2,0xE0,0x10,0x01,0xEB,0x37,0x09,0x6C,0xFE,0xF7,0x09,0x6C,0x0B,0x17,0x02,
+0x8F,0x19,0x0B,0x37,0x04,0x0A,0xF7,0x06,0x8E,0xF9,0xCE,0xF7,0x00,0x0B,0xD6,0xF8,
+0x00,0x78,0x53,0x00,0x64,0xC2,0xE0,0x10,0x01,0xE4,0x00,0x00,0x23,0xC2,0xE0,0x10,
+0x01,0xF3,0x17,0x08,0x8D,0x23,0x00,0x24,0x9F,0x1F,0xFB,0x17,0x08,0x8D,0xC2,0xE0,
+0x10,0x01,0xF8,0x17,0x08,0x99,0xC1,0xE0,0x10,0x01,0xC1,0xA0,0x10,0x01,0xC1,0x40,
+0x10,0x01,0x57,0x7B,0x08,0xFD,0xEF,0x08,0xBC,0xFD,0xAD,0x08,0xC0,0xFD,0x4A,0x0B,
+0xF0,0x23,0x61,0x48,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0xF6,0x22,0xE5,0x1C,0x0A,
+0xEA,0x19,0x1E,0xF7,0xCE,0x5E,0xF7,0x04,0xC2,0xE0,0xF3,0x6E,0x20,0x00,0x4D,0x0A,
+0xEA,0x16,0x5E,0xE9,0xF1,0x20,0x00,0x29,0xC2,0xE0,0xF5,0xE8,0x20,0x00,0x9D,0xE7,
+0xFF,0xE2,0xEC,0x9A,0xE3,0x0E,0xED,0x00,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xB4,
+0xC2,0xE0,0x10,0x01,0x18,0x0F,0x00,0xF8,0x17,0x08,0xD6,0xC2,0xE0,0x10,0x01,0xF8,
+0x17,0x08,0xC7,0xC2,0xE0,0x10,0x01,0x9B,0x01,0xFB,0x17,0x08,0x99,0xC2,0xE0,0x10,
+0x01,0xF2,0xF7,0x08,0xB0,0x22,0xE0,0x24,0x98,0x60,0xE7,0xFF,0xBD,0xD8,0x0E,0xED,
+0x02,0x22,0xE0,0xE2,0x0A,0xEE,0x01,0x56,0xF7,0x40,0x22,0xE0,0x60,0xE7,0xFF,0x37,
+0x24,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xD6,0x9A,0xE1,0x0E,0xED,0x00,0xE4,0x00,
+0x00,0x37,0x98,0x60,0xE7,0xFF,0xFC,0xB6,0x0A,0xEE,0x01,0x56,0xF7,0x20,0x22,0xE0,
+0x2E,0x98,0x6A,0x98,0x82,0xE7,0xFF,0xF8,0x36,0x0E,0xED,0x02,0x22,0xE5,0x52,0x0A,
+0xEE,0x01,0x57,0x17,0x08,0x23,0x00,0x60,0xE7,0xFF,0xE1,0xDA,0xC2,0xE0,0x10,0x01,
+0xF8,0x17,0x08,0xB4,0x9A,0xE2,0x0E,0xED,0x00,0xE4,0x00,0x00,0x6F,0x57,0x17,0x40,
+0x23,0x00,0xB4,0xC6,0xF7,0x20,0x00,0x22,0xE0,0x9A,0xC2,0xE0,0x10,0x01,0xF3,0x17,
+0x08,0xD6,0xC3,0x00,0x19,0x0A,0x20,0x00,0x35,0x98,0x62,0xE7,0xFF,0xFC,0x08,0xE4,
+0x00,0x00,0x23,0x9F,0x01,0xFB,0x17,0x08,0xD6,0xE4,0x00,0x00,0x0F,0x0C,0x0D,0x00,
+0xC2,0x40,0x10,0x01,0x0E,0xED,0x02,0xFE,0x52,0x08,0x86,0x22,0xE9,0x0A,0x0A,0xEE,
+0x01,0xC1,0x60,0x10,0x01,0x56,0xF7,0x08,0x22,0xE0,0xB0,0xF2,0xEB,0x08,0xB4,0x9E,
+0xE1,0xFA,0xEB,0x08,0xB4,0xE7,0xFF,0x36,0x14,0xF2,0xEB,0x08,0xB4,0x22,0xE0,0x80,
+0x9A,0xE3,0x18,0x12,0x00,0x0E,0xED,0x00,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xC5,
+0xE4,0x00,0x00,0x1B,0x9A,0xE6,0xF8,0x0B,0x08,0xB4,0x0E,0xED,0x00,0xC2,0x00,0x10,
+0x01,0xC1,0x80,0x10,0x01,0xC1,0x60,0x10,0x01,0x0E,0xED,0x02,0xFE,0x10,0x08,0x87,
+0xFD,0x8C,0x0B,0xD0,0xFD,0x6B,0x08,0x90,0xD2,0xE3,0x39,0xDE,0x12,0xEA,0x00,0x22,
+0xE4,0x1A,0x18,0x12,0x00,0xE7,0xFF,0xC7,0x5C,0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,
+0x01,0xFF,0x20,0x03,0xE8,0x20,0x68,0x1C,0xFF,0x20,0x01,0xF4,0xEF,0x37,0x01,0xC7,
+0xEF,0x38,0x01,0xC5,0x0A,0xEE,0x01,0x56,0xF7,0x08,0xD2,0xE0,0x38,0x02,0xC1,0xC0,
+0x10,0x01,0xC2,0x20,0x10,0x01,0x12,0xEA,0x00,0xFD,0xCE,0x08,0xF4,0xFE,0x31,0x01,
+0xAC,0xD2,0xE1,0x10,0xF1,0x0B,0x8B,0x04,0xC3,0x8F,0xFF,0xE0,0x20,0x05,0xF9,0x08,
+0x8A,0x48,0x0B,0x2B,0x06,0x0B,0x6B,0x00,0x43,0xA4,0xCD,0x08,0xAA,0x46,0x0B,0x4B,
+0x02,0x43,0xC5,0xE5,0x0B,0x0A,0x18,0x08,0x6A,0x16,0x42,0xFA,0xC5,0x41,0x03,0xDD,
+0x42,0xFE,0xBB,0x41,0x3D,0x43,0x8E,0xE9,0x22,0xE1,0x84,0x42,0x7C,0xDD,0x41,0x3A,
+0xCD,0x42,0x9D,0x9B,0x42,0x5E,0x4B,0x8E,0x92,0x22,0x80,0x40,0x26,0x80,0x28,0x26,
+0xE0,0x2A,0xE4,0x00,0x00,0x8F,0x26,0xFD,0x0E,0x4E,0xB7,0xFA,0x46,0x55,0xBE,0x42,
+0x52,0xAD,0x4E,0xB4,0xFA,0x46,0x95,0xA6,0x42,0xB4,0xAD,0xD6,0xB2,0x01,0x74,0x42,
+0x98,0xD5,0x41,0x28,0x4B,0x42,0x74,0x9B,0x8E,0x69,0x22,0x60,0x40,0x26,0x60,0x28,
+0x26,0xE0,0x2A,0xE4,0x00,0x00,0x2D,0x26,0xFC,0x4A,0x4E,0xF3,0xFA,0x46,0x77,0x9E,
+0x42,0x73,0xBD,0x9A,0xE1,0xD6,0x72,0x06,0x18,0x42,0x44,0xD5,0x42,0x65,0xDD,0x42,
+0x83,0xE5,0x42,0xF9,0xC5,0x41,0x32,0xA3,0x42,0xF3,0xBB,0x8E,0xE9,0x22,0xE0,0xDC,
+0x43,0x9B,0xE5,0x40,0xF9,0xD5,0x40,0xD2,0xE3,0x41,0x33,0x3B,0x8C,0xC9,0x20,0xC0,
+0x40,0x24,0xC0,0x28,0x26,0xE0,0x2A,0xE4,0x00,0x00,0x3B,0x26,0xFC,0x66,0x4D,0x37,
+0xFA,0x46,0xA9,0xBE,0x42,0xB5,0x4D,0x4D,0x26,0xFA,0x44,0xC9,0x36,0x41,0x26,0x4D,
+0xD5,0x35,0x01,0xA0,0x43,0x58,0xD5,0x41,0x08,0x43,0x43,0x5A,0xD3,0x43,0x38,0xCD,
+0x42,0x94,0xA3,0x43,0x39,0xCB,0x8F,0x48,0x8E,0x99,0x9A,0xE0,0xD6,0x9A,0x00,0x45,
+0x8B,0x54,0x9A,0xE1,0x42,0x73,0x9B,0x42,0x52,0x93,0x8E,0x53,0xD6,0x5A,0x01,0xB1,
+0xE4,0x00,0x00,0x6F,0x41,0x38,0xCD,0x40,0xF4,0x3B,0x43,0x89,0xE3,0x8F,0x87,0x23,
+0x80,0x40,0x27,0x80,0x28,0x26,0xE0,0x2A,0xE7,0xFF,0xFF,0x79,0x26,0xFE,0xE2,0x4E,
+0xFC,0xFA,0x47,0x97,0xE6,0x43,0x9C,0xBD,0x9A,0xE0,0xD7,0x95,0x00,0xF0,0xE7,0xFF,
+0xFF,0x4D,0x8B,0x52,0x52,0xE0,0x10,0x43,0xDE,0xF3,0x43,0xBD,0xEB,0x53,0x20,0x11,
+0x8F,0xBE,0x5F,0xBA,0x1F,0x4A,0xF7,0xC8,0x4F,0x37,0x21,0x46,0xF7,0xCE,0x56,0xF7,
+0x0F,0xD2,0xE0,0x3C,0x9A,0x0C,0xAA,0x17,0x0C,0x8A,0x19,0x0C,0x6A,0x47,0x0F,0x0A,
+0x49,0xE4,0x00,0x0F,0x07,0x12,0xF0,0x00,0x9B,0x1E,0x46,0xF7,0xC4,0x98,0x63,0x1A,
+0xF0,0x00,0xE7,0xFF,0xD9,0x94,0xE4,0x00,0x00,0xEF,0x0B,0x0B,0x00,0xC3,0x0F,0xFF,
+0xE4,0x20,0x01,0xB3,0x13,0x32,0x00,0x0A,0x6B,0x02,0x9F,0x21,0x0B,0x6A,0x16,0x5F,
+0x39,0x00,0x41,0x1B,0xC5,0x0B,0x4A,0x18,0x0B,0xAA,0x46,0x43,0xDA,0x9D,0x43,0x1D,
+0xC5,0x0B,0x8A,0x48,0x43,0x18,0xC3,0x42,0x7C,0x9D,0x1B,0x32,0x00,0x42,0x73,0x9B,
+0x8F,0x13,0x41,0x08,0x43,0x43,0xDE,0xF3,0x8F,0xC8,0x5F,0x1E,0x1F,0x53,0x00,0x10,
+0x4B,0x00,0xC0,0x23,0x00,0x3C,0x0F,0xAA,0x17,0x0F,0x8A,0x19,0x0F,0x6A,0x47,0x0F,
+0x4A,0x49,0x27,0x28,0xDB,0x9E,0xFF,0x9B,0x3C,0x1A,0xEA,0x00,0x12,0xF0,0x00,0x46,
+0xF7,0xCC,0x1A,0xF0,0x00,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0x8C,0x12,0xF1,0x00,
+0x1A,0xEA,0x10,0x12,0xF1,0x01,0x1A,0xEA,0x40,0xE7,0xFF,0x30,0xEC,0x12,0xEA,0x00,
+0xD2,0xE1,0x3A,0xA6,0xE4,0x00,0x01,0xD9,0x18,0x12,0x00,0xE7,0xFF,0xFF,0xC5,0x22,
+0xE7,0x7A,0x18,0x12,0x00,0x0A,0xEB,0x04,0xC2,0xEF,0xFF,0xE0,0x23,0xFF,0x45,0x0B,
+0xCA,0x16,0x0B,0xAA,0x18,0x0B,0x2B,0x00,0x0B,0x0B,0x02,0x43,0x9E,0xCD,0x43,0x7D,
+0xC5,0x43,0xDE,0xBD,0x0B,0x4B,0x06,0x43,0xDE,0xF3,0x43,0xBD,0xD5,0x43,0x9C,0xE3,
+0x43,0xBD,0xEB,0x43,0x7B,0xDB,0x8F,0xBE,0x8F,0x7C,0xD7,0xBB,0x36,0x59,0xE4,0x00,
+0x0D,0x43,0x0B,0x8C,0x03,0x43,0x98,0xE5,0x5F,0x9C,0x06,0x4F,0x7C,0xFA,0x47,0x9B,
+0xE6,0x43,0x7C,0xDD,0xC3,0x60,0x1F,0x48,0x20,0x00,0xC1,0x0B,0x8C,0x03,0xC3,0x60,
+0x10,0x01,0xEF,0x9B,0x08,0xD9,0xFF,0x7B,0x08,0xD8,0x0B,0x8C,0x07,0x0F,0x9B,0x03,
+0xC3,0x60,0x10,0x01,0xEF,0x3B,0x08,0xC9,0xFF,0x7B,0x08,0xC8,0x0F,0x1B,0x03,0x13,
+0x10,0x00,0x53,0x18,0x02,0x1B,0x10,0x00,0x0B,0x0E,0x05,0x0F,0x0E,0x01,0x0B,0x0E,
+0x07,0x0F,0x0E,0x03,0x0B,0x0C,0x09,0x0F,0x0C,0x01,0x0B,0x0C,0x0B,0x0F,0x0C,0x03,
+0x0B,0x0C,0x0D,0x0E,0xEB,0x01,0x0F,0x0C,0x05,0xFE,0xE0,0x7F,0xFF,0x0B,0x0C,0x0F,
+0x0E,0xEB,0x05,0x0E,0xEB,0x07,0x0E,0xEE,0x05,0x0E,0xEE,0x07,0x0E,0xEC,0x09,0x0E,
+0xEC,0x0B,0x0F,0x0C,0x07,0x0E,0xEC,0x0D,0x0E,0xEC,0x0F,0x9B,0x01,0x12,0xF1,0x01,
+0x0F,0x4B,0x03,0x1A,0xF1,0x00,0x42,0xF8,0xBD,0x1A,0xF1,0x01,0xE7,0xFF,0xFE,0x03,
+0x0A,0xEA,0x17,0x0B,0x0B,0x01,0x43,0x18,0xBD,0x5F,0x18,0x06,0x4E,0xF8,0xFA,0x47,
+0x17,0xC6,0x42,0xF8,0xBD,0xC3,0x00,0x10,0x01,0xEB,0x38,0x01,0xC4,0xD6,0xF9,0x01,
+0x2C,0x0A,0xEA,0x19,0x0B,0x0B,0x03,0x43,0x18,0xBD,0x5F,0x18,0x06,0x4E,0xF8,0xFA,
+0x47,0x17,0xC6,0x42,0xF8,0xBD,0xC3,0x00,0x10,0x01,0xEB,0x38,0x01,0xC6,0xD6,0xF9,
+0x31,0x30,0xE7,0xFF,0x2F,0x42,0xD0,0x60,0x30,0xF2,0xE7,0xFF,0xD9,0x56,0xC2,0xE0,
+0x10,0x01,0xEF,0x17,0x07,0xF6,0xD3,0x01,0x30,0x76,0xE4,0x00,0x0B,0xD1,0x9B,0x1E,
+0xEF,0x17,0x08,0xC5,0xC1,0xA0,0x10,0x01,0x13,0x2A,0x00,0xFD,0xAD,0x0C,0x06,0x9B,
+0x00,0x8A,0xED,0xE4,0x00,0x00,0x35,0x0B,0x57,0x01,0x9F,0x01,0x0F,0x4B,0x01,0x5F,
+0x18,0x00,0x0B,0x57,0x03,0x1E,0xF7,0x30,0x0F,0x4B,0x03,0x9D,0x64,0xD7,0x19,0xFF,
+0x56,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x08,0x9E,0x22,0xE4,0x26,0x99,0x60,0xE4,0x00,
+0x00,0x5F,0xE7,0xFF,0xBF,0xA2,0x20,0x6B,0xD8,0xE7,0xFF,0xBF,0x94,0x20,0x6C,0xAE,
+0xE7,0xFF,0xFF,0xD9,0xCC,0x8B,0x00,0x30,0x88,0xCB,0x1C,0x84,0x10,0x9D,0x61,0x8C,
+0x8A,0x5D,0x6B,0x00,0x1C,0x64,0x06,0x9C,0x88,0xE7,0xFF,0x6E,0x6C,0x10,0xAA,0x00,
+0xD4,0xAB,0xFF,0x25,0xE4,0x00,0x00,0x11,0xE7,0xFF,0x6D,0xBE,0xE7,0xFF,0xBF,0x2E,
+0xC3,0x20,0x10,0x01,0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0x20,0x68,0xD6,0x53,
+0x40,0x4B,0xEF,0x58,0x08,0xE9,0xEF,0x59,0x08,0xB3,0x53,0x00,0x25,0xEF,0x17,0x08,
+0xFF,0xC2,0xA0,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFE,0xB5,0x08,0xA4,0xEF,0x17,0x08,
+0xD5,0x99,0x60,0xC2,0x60,0x10,0x01,0xC2,0x80,0x10,0x01,0x8A,0x55,0xE4,0x00,0x03,
+0x19,0x53,0x40,0x32,0xEF,0x58,0x08,0xE9,0xEF,0x59,0x08,0xB3,0x53,0x00,0x19,0xE7,
+0xFF,0xFF,0x9D,0x4E,0xEB,0x10,0x8E,0xEE,0x0B,0x17,0x00,0xC3,0x0F,0xFF,0xE4,0x20,
+0x05,0x3B,0x0B,0x37,0x02,0xC3,0x2F,0xFF,0xE0,0x20,0x05,0x11,0xCE,0xEB,0x00,0x30,
+0x8E,0xEA,0x0A,0x37,0x17,0x42,0x38,0x8D,0x5E,0x31,0x06,0x4F,0x11,0xFA,0x0A,0xF7,
+0x19,0x46,0x38,0x8E,0x42,0xF9,0xBD,0x42,0x31,0xC5,0x5E,0xF7,0x06,0x4F,0x17,0xFA,
+0x5E,0x31,0x06,0x46,0xF8,0xBE,0xE9,0xF3,0x08,0xE9,0x42,0xF7,0xC5,0x43,0x15,0x5C,
+0x5E,0xF7,0x06,0x13,0x58,0x00,0xD6,0xEF,0x00,0xE4,0xC3,0x00,0x10,0x01,0xEB,0x18,
+0x08,0xB3,0xD6,0x38,0x00,0x84,0x9B,0x03,0x27,0x48,0x57,0x1F,0x1A,0x01,0xE4,0x00,
+0x00,0x19,0x9B,0x00,0x23,0x40,0x24,0x1F,0x1A,0xFF,0x5F,0x18,0x00,0x43,0x52,0x5C,
+0x1B,0x1A,0x00,0x43,0x15,0x5C,0x13,0x18,0x00,0xD3,0x02,0x06,0xA1,0xEB,0x14,0x08,
+0xD5,0xD6,0xF8,0x00,0x8C,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0F,0x37,0x19,0xE4,0x00,
+0x00,0x9B,0xD6,0xEF,0x02,0x4C,0x43,0x2F,0xC5,0x40,0x77,0xC5,0x43,0x39,0xCB,0x42,
+0xF8,0xBD,0x43,0x4F,0x7B,0x40,0x63,0xBB,0x8C,0x79,0x40,0x63,0xD3,0x40,0x63,0xC8,
+0xE7,0xFF,0x2A,0xB0,0x4E,0xEB,0x10,0x8E,0xEE,0x5C,0x63,0x06,0x0B,0x17,0x02,0x41,
+0xEF,0x1D,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0B,0x37,0x18,0xD7,0x19,0x00,0x58,0x41,
+0xF8,0x7D,0xE4,0x00,0x00,0x0D,0x8D,0xF8,0x0D,0xF7,0x19,0xC2,0xE0,0x10,0x01,0xEA,
+0xF7,0x08,0xFF,0xD6,0x37,0x00,0xCC,0xCE,0xEB,0x00,0x30,0x4F,0x0B,0x10,0x8E,0xEA,
+0x8F,0x0E,0x0B,0x18,0x01,0x0F,0x17,0x17,0xE4,0x00,0x00,0xAB,0xC3,0x00,0x10,0x01,
+0xE9,0xF8,0x08,0xB3,0xD6,0x2F,0x02,0x4C,0x43,0x0F,0xBD,0x43,0x2F,0x7B,0x43,0x18,
+0xC3,0x40,0x71,0xBD,0x42,0x37,0x8D,0x40,0x63,0x8B,0x8C,0x78,0x40,0x63,0xCB,0x40,
+0x63,0xC0,0xE7,0xFF,0x29,0xCC,0x4E,0xEB,0x10,0x8E,0xEE,0x5C,0x63,0x06,0x0B,0x17,
+0x00,0x41,0xEF,0x1D,0xCE,0xEB,0x00,0x30,0x8E,0xEA,0x0B,0x37,0x16,0xD7,0x19,0x00,
+0x58,0x41,0xF8,0x7D,0xE4,0x00,0x00,0x0D,0x8D,0xF8,0x0D,0xF7,0x17,0x4E,0xEB,0x10,
+0xCF,0x0B,0x00,0x30,0x8E,0xEE,0x8F,0x0A,0x9D,0x61,0x0B,0x38,0x17,0x5D,0x6B,0x00,
+0x0B,0x18,0x19,0x0F,0x37,0x01,0x0F,0x17,0x03,0x12,0xEA,0x00,0xD6,0xEB,0xF4,0x3D,
+0xE7,0xFF,0xBB,0x86,0x20,0x68,0x36,0x9B,0x08,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x01,
+0xBD,0xC2,0xE0,0x10,0x01,0x13,0x2A,0x00,0xF3,0x77,0x08,0xE4,0x8B,0x0D,0xC2,0xE0,
+0x10,0x01,0x9B,0x80,0xFE,0xF7,0x0B,0xD4,0xFF,0x40,0x7F,0xFF,0xE4,0x00,0x00,0x9F,
+0xD7,0x79,0x00,0x92,0x0F,0x57,0xFD,0x0F,0x57,0xFF,0x0F,0x57,0x01,0x0F,0x57,0x03,
+0x8B,0x79,0x0B,0xB7,0x00,0xC3,0xAF,0xFF,0xE0,0x20,0x00,0x41,0x0B,0xB7,0xFD,0x0F,
+0xB7,0x01,0x0B,0xB7,0xFF,0xE4,0x00,0x00,0x1B,0x0B,0xB8,0x01,0x0F,0xB7,0x01,0x0B,
+0xB8,0x03,0x0F,0xB7,0x03,0x0B,0xB8,0x01,0x9F,0x81,0x0F,0xB7,0xFD,0x5F,0x9C,0x00,
+0x0B,0xB8,0x03,0x1F,0x18,0x30,0x0F,0xB7,0xFF,0x9E,0xE8,0xD7,0x99,0xFD,0xAE,0xC2,
+0xE0,0x10,0x01,0xFB,0x77,0x08,0xE4,0xC2,0xE0,0x10,0x01,0x23,0x24,0x7A,0x9B,0x02,
+0xFB,0x17,0x09,0x01,0xC2,0xE0,0x10,0x01,0xEA,0xF7,0x01,0xBC,0x9B,0x0A,0x9B,0x4A,
+0x43,0x18,0xBD,0x9A,0xE0,0xE4,0x00,0x00,0x8F,0xF8,0x17,0x09,0x01,0xE7,0xFF,0xFF,
+0xCF,0x0B,0x6C,0x04,0x0B,0x8C,0x00,0x0B,0xAC,0x06,0x43,0x9C,0xDD,0x9E,0xE1,0x43,
+0x98,0xE3,0x5E,0xF7,0x00,0x43,0x9C,0xD0,0x8F,0x9B,0x0B,0x6C,0x02,0x0F,0x8D,0x01,
+0x43,0x7B,0xED,0x0F,0x8C,0x01,0x43,0x78,0xDB,0x43,0x7B,0xD0,0x8F,0x7D,0x5F,0x7B,
+0x06,0x0F,0x6D,0x03,0x0F,0x6C,0x03,0x1D,0xAD,0x30,0x9D,0x88,0xD6,0xF9,0xFE,0x2E,
+0x12,0xF0,0x00,0x56,0xF7,0x02,0x22,0xE0,0x24,0x98,0x64,0xE7,0xFF,0xCF,0x42,0x13,
+0x0A,0x00,0xC2,0xE0,0x10,0x01,0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,
+0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,
+0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0xFB,0x17,0x08,
+0x88,0x98,0x61,0x1C,0x21,0x38,0xE7,0xFF,0xAD,0x81,0x18,0x0F,0x00,0x9A,0xE4,0xE4,
+0x00,0x04,0xDD,0xD2,0xE4,0x01,0xE6,0x0A,0xEE,0x01,0x56,0xF7,0x08,0x22,0xE0,0x5C,
+0x9A,0xE3,0x18,0x12,0x00,0x0E,0xED,0x00,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xC5,
+0xE4,0x00,0x04,0xDB,0x12,0xEF,0x00,0x9E,0xE1,0x5E,0xF7,0x00,0x1A,0xEF,0x00,0xD2,
+0xE1,0x12,0xF1,0x9A,0xE5,0x18,0x0F,0x00,0x0E,0xED,0x00,0xE4,0x00,0x04,0xA5,0xD2,
+0xE5,0x09,0xCE,0x12,0xEF,0x00,0x9E,0xE1,0x1A,0xEF,0x00,0xC2,0xE0,0x10,0x01,0xF2,
+0xF7,0x08,0xE4,0x22,0xE9,0x36,0x12,0xF0,0x00,0x56,0xF7,0x01,0x22,0xE1,0x10,0xC2,
+0xE0,0x10,0x01,0xF8,0x17,0x09,0x01,0xC1,0x40,0x10,0x01,0xF2,0xEA,0x08,0x8C,0x22,
+0xE8,0x66,0x98,0x65,0xE7,0xFF,0xCD,0xD0,0x98,0x61,0xE7,0xFF,0xAC,0x78,0x9A,0xE1,
+0xFA,0xEA,0x08,0x8C,0xE4,0x00,0x01,0x77,0xD2,0xE1,0x05,0x96,0x98,0x65,0xE7,0xFF,
+0xCD,0x9C,0x98,0x61,0xE7,0xFF,0xAC,0x44,0xF8,0x0A,0x08,0x8C,0xE4,0x00,0x01,0x47,
+0x0B,0x0B,0x00,0x0B,0x4C,0x00,0x43,0x38,0xD5,0x5F,0x39,0x06,0x4E,0xF9,0xFA,0x47,
+0x37,0xCE,0x42,0xF9,0xBD,0xC2,0xE0,0x19,0x0C,0x20,0x00,0x7D,0x0A,0xEC,0x03,0x0B,
+0x2B,0x03,0x43,0x39,0xBD,0x5F,0x39,0x06,0x4E,0xF9,0xFA,0x47,0x37,0xCE,0x42,0xF9,
+0xBD,0xC2,0xE0,0x1F,0x48,0x20,0x01,0x95,0xC3,0x20,0x10,0x01,0xF2,0xF9,0x09,0x01,
+0x22,0xE8,0xB6,0x8F,0x1A,0x43,0x18,0xB8,0x0F,0x0A,0x17,0xC3,0x00,0x10,0x01,0xEB,
+0x58,0x08,0x92,0xC3,0x00,0x10,0x01,0xEB,0x18,0x0B,0xD2,0x8F,0x1A,0x42,0xF8,0xB8,
+0x0E,0xEA,0x19,0x9A,0xE1,0xFA,0xF9,0x09,0x01,0xE4,0x00,0x00,0x45,0x22,0xE4,0x66,
+0xC2,0xE0,0x10,0x01,0x0F,0x0A,0x17,0xEA,0xF7,0x08,0x93,0xF8,0x19,0x09,0x01,0x0E,
+0xEA,0x19,0xE4,0x00,0x00,0x13,0x9A,0xE3,0x1A,0xEF,0x00,0x9A,0xE1,0x98,0x61,0x1A,
+0xEA,0x00,0xE7,0xFF,0xAB,0x08,0xE4,0x00,0x00,0x13,0x9A,0xE3,0x1A,0xEF,0x00,0x12,
+0xEF,0x00,0xD2,0xE2,0x0A,0x59,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0xC5,0xE7,0xFF,
+0x24,0x42,0xC2,0xE0,0x10,0x01,0x9B,0x03,0xFB,0x17,0x08,0xB0,0xE7,0xFF,0xCF,0x52,
+0xE7,0xFF,0x64,0xCE,0x98,0x60,0xE7,0xFF,0xAA,0xA0,0xC2,0xE0,0x10,0x01,0xF8,0x17,
+0x08,0xC7,0x9A,0xE6,0xE4,0x00,0x01,0xF3,0xD2,0xE6,0x08,0xAE,0x0A,0xEE,0x01,0x56,
+0xF7,0x40,0x22,0xE0,0x26,0x98,0x64,0xE7,0xFF,0xE9,0x90,0xC3,0x00,0x10,0x01,0xF2,
+0xF8,0x08,0xC7,0x9E,0xE1,0x5E,0xF7,0x00,0xFA,0xF8,0x08,0xC7,0x5E,0xE6,0x53,0x0A,
+0xEE,0x01,0x20,0x01,0x35,0x56,0xF7,0x40,0x22,0xE0,0x50,0x9A,0xE1,0x0E,0xED,0x00,
+0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xD6,0xE4,0x00,0x01,0xAB,0x0C,0x0D,0x00,0x98,
+0x60,0x0E,0xA1,0x06,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,
+0x0E,0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,
+0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0xE7,0xFF,0xE8,0xC9,0x56,
+0xF7,0x08,0xD2,0xE0,0x04,0xDA,0xC2,0xE0,0x10,0x01,0xF8,0x17,0x08,0xB4,0x9A,0xE2,
+0xE4,0x00,0x00,0xDB,0xC3,0x6F,0xFF,0xE4,0x23,0xE1,0xF5,0xE7,0xFF,0xF2,0x05,0x98,
+0x62,0xE7,0xFF,0xCA,0x96,0xFE,0xE0,0x7F,0xFF,0x0E,0xEB,0x05,0x0E,0xEB,0x07,0x0E,
+0xEE,0x05,0x0E,0xEE,0x07,0x0E,0xEC,0x09,0x0E,0xEC,0x0B,0x0E,0xEC,0x0D,0x0E,0xEC,
+0x0F,0xE7,0xFF,0xF1,0xB9,0x0B,0x8C,0x01,0x43,0x99,0xE5,0x5F,0x9C,0x06,0x4F,0x7C,
+0xFA,0x47,0x9B,0xE6,0x43,0x7C,0xDD,0xC3,0x60,0x19,0x0C,0x23,0xE4,0x9F,0xE7,0xFF,
+0xF2,0x7B,0xFE,0xE0,0x7F,0xFF,0x18,0x0F,0x00,0x0E,0xEB,0x01,0x0E,0xEB,0x03,0x0E,
+0xEB,0x05,0x0E,0xEB,0x07,0x18,0x11,0x00,0x1B,0x11,0x01,0x9A,0xE5,0x0E,0xED,0x00,
+0xE4,0x00,0x00,0x3B,0xC2,0xE0,0x10,0x01,0xCB,0x20,0xFF,0xFD,0xEB,0x17,0x08,0xC5,
+0x9F,0x01,0x5F,0x18,0x04,0xD7,0x19,0xCF,0x4D,0xE7,0xFF,0xF3,0xCF,0x0E,0xA1,0x06,
+0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,0x0E,0x01,0x1A,0x0D,
+0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,0x61,0x2E,0x0D,0x41,
+0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0x9C,0x38,0x0D,0x41,0x00,0x0D,0x21,
+0x04,0x89,0x43,0x20,0x84,0x46,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xE2,0xAC,0x98,0x68,
+0xE4,0x00,0x00,0x1D,0x98,0x62,0x88,0x8A,0xE7,0xFF,0xE2,0x90,0x98,0x69,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x9C,0x28,0xE7,0xFF,0xE2,0x71,0x9C,0x38,0x0D,0x21,
+0x04,0x0D,0x41,0x00,0x89,0x43,0x98,0x60,0x88,0x8A,0xE7,0xFF,0xE2,0x4C,0x88,0x8A,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0x98,0x68,0x9C,0x28,0xE7,0xFF,0xE2,0x2D,0xD0,0x6B,
+0x0B,0x85,0x4F,0x03,0x10,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBA,0x7C,0x8E,0xF8,0xC3,
+0x40,0x10,0x01,0x0F,0xB7,0x02,0xC3,0x60,0x10,0x01,0xC3,0x20,0x10,0x01,0xC3,0x80,
+0x10,0x01,0xC3,0x00,0x10,0x01,0xC2,0xE0,0x10,0x01,0xFF,0x5A,0x09,0xA8,0xFF,0x7B,
+0x0A,0xEC,0xFF,0x39,0x0A,0x58,0xFF,0x9C,0x0B,0x64,0xFF,0x18,0x0C,0xF6,0xFE,0xF7,
+0x09,0x6C,0x87,0xA9,0xCC,0x63,0x00,0x1A,0x5C,0x63,0x00,0x4F,0x23,0x08,0x4C,0x63,
+0x10,0x8F,0x19,0x8E,0xF9,0x8F,0x43,0x9B,0x20,0x43,0x77,0xCC,0x43,0xB8,0xCC,0x4F,
+0x99,0x08,0x0B,0xBD,0x01,0x8F,0x9A,0x0F,0x9C,0x02,0x4F,0x9C,0x42,0x43,0x9D,0xE5,
+0x0F,0x9B,0x01,0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x85,0xE4,0x00,0x01,0xE7,0x9C,
+0x7E,0xCC,0x63,0x00,0x1A,0x5C,0x63,0x00,0x4F,0x43,0x08,0x4C,0x63,0x10,0x8F,0x1A,
+0x8C,0x79,0x8E,0xFA,0x9B,0x20,0x43,0x77,0xCC,0x43,0xB8,0xCC,0x4F,0x99,0x08,0x0B,
+0xBD,0x01,0x8F,0x83,0x0F,0x9C,0x02,0x4F,0x9C,0x42,0x43,0x9D,0xE5,0x0F,0x9B,0x01,
+0x9F,0x22,0x5F,0x26,0x89,0x23,0xFF,0x85,0xE4,0x00,0x01,0x6D,0x0B,0x78,0x35,0x0F,
+0x3A,0x6A,0x4F,0x39,0x42,0x43,0x3B,0xCD,0x0B,0x78,0x37,0x0F,0x37,0x35,0x0F,0x3A,
+0x6E,0x4F,0x39,0x42,0x43,0x3B,0xCD,0x0F,0x37,0x37,0x0F,0x3A,0x72,0xE4,0x00,0x00,
+0x4B,0x0F,0x59,0x6A,0x0B,0x78,0x35,0x4F,0x5A,0x42,0x43,0x5B,0xD5,0x0B,0x78,0x37,
+0x0F,0x57,0x35,0x0F,0x59,0x6E,0x0F,0x39,0x72,0x4F,0x5A,0x42,0x43,0x5B,0xD5,0x0F,
+0x57,0x37,0x4F,0x39,0x42,0x0B,0x18,0x39,0x43,0x18,0xCD,0x0F,0x17,0x39,0xE4,0x00,
+0x00,0xC1,0xC3,0xA0,0x10,0x01,0x9A,0xE0,0xFF,0xBD,0x0B,0xB0,0x43,0x17,0xE4,0x43,
+0x57,0xDC,0x4F,0x37,0x08,0x0B,0x5A,0x01,0x8F,0x3D,0x0F,0x39,0x02,0x4F,0x39,0x42,
+0x43,0x3A,0xCD,0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE2,0x09,0x23,0xFF,0x85,0xE4,0x00,
+0x00,0x61,0xC3,0xA0,0x10,0x01,0x9A,0xE0,0xFF,0xBD,0x0A,0xCC,0x43,0x17,0xE4,0x43,
+0x57,0xDC,0x4F,0x37,0x08,0x0B,0x5A,0x01,0x8F,0x3D,0x0F,0x39,0x02,0x4F,0x39,0x42,
+0x43,0x3A,0xCD,0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE2,0x09,0x23,0xFF,0x85,0x85,0x29,
+0x9C,0x38,0x0D,0x21,0x04,0x20,0x64,0x56,0x98,0x60,0xE7,0xFF,0xFD,0x08,0x98,0x68,
+0xE7,0xFF,0xFC,0xFC,0x98,0x6A,0xE4,0x00,0x00,0x25,0x98,0x62,0xE7,0xFF,0xFC,0xE4,
+0x98,0x69,0xE7,0xFF,0xFC,0xD8,0x98,0x6B,0x0D,0x21,0x06,0x9C,0x28,0xE7,0xFF,0xFC,
+0xC3,0x9C,0x38,0x98,0x60,0x0D,0x21,0x04,0xE7,0xFF,0xFC,0xAC,0x0D,0x21,0x06,0x98,
+0x68,0x9C,0x28,0xE7,0xFF,0xFC,0x97,0xC2,0xE0,0x10,0x01,0xCB,0x00,0x7F,0xFF,0xFE,
+0xF7,0x0B,0x64,0x8B,0x37,0x0B,0x79,0x00,0x5F,0x1B,0x15,0x4B,0x58,0xD8,0x9F,0x22,
+0x5F,0x1A,0x06,0xC3,0x40,0x10,0x01,0xFF,0x5A,0x0B,0x74,0xD7,0x3A,0xFF,0x56,0x9B,
+0x20,0x0B,0x57,0x00,0x43,0x5A,0xC5,0x9E,0xE2,0xC3,0x40,0x3E,0x88,0xC3,0x40,0x10,
+0x01,0x4B,0x39,0x0A,0xFF,0x5A,0x0B,0x74,0xD6,0xFA,0xFF,0x4E,0xC2,0xE0,0x10,0x01,
+0xC3,0x00,0x10,0x01,0x23,0x20,0x64,0xEB,0x37,0x08,0x8F,0xCB,0x39,0x08,0x00,0xEF,
+0x37,0x08,0x8F,0x9A,0xE1,0xFA,0xF8,0x08,0x98,0xE4,0x00,0x00,0x2F,0xEB,0x37,0x08,
+0x8F,0xFF,0x40,0xF7,0xFF,0xF8,0x18,0x08,0x98,0x47,0x39,0xD4,0xEF,0x37,0x08,0x8F,
+0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3D,0xF9,0x1C,0x21,0xC8,0x0D,0x21,0x34,
+0x0D,0x41,0x30,0x0D,0x61,0x2C,0x0D,0x81,0x28,0x0D,0xA1,0x24,0x0D,0xC1,0x20,0x0D,
+0xE1,0x1C,0x0E,0x01,0x18,0x0E,0x21,0x14,0x0E,0x41,0x10,0x0E,0x61,0x0C,0x0E,0x81,
+0x08,0x13,0x17,0x00,0xC2,0xE0,0x10,0x01,0xFB,0x17,0x00,0xB8,0xF3,0x17,0x00,0xB8,
+0x23,0x00,0x2C,0xF2,0xF7,0x00,0xB8,0xD2,0xE1,0x2F,0xAE,0xC1,0xA0,0x10,0x01,0xC1,
+0xE0,0x10,0x01,0xFD,0xAD,0x08,0xE6,0xFD,0xEF,0x00,0xD8,0x0A,0xED,0x01,0x56,0xF7,
+0x80,0xD2,0xE0,0x2D,0x9E,0xC2,0xE0,0x10,0x01,0xC1,0x60,0x10,0x01,0xF3,0x17,0x00,
+0xB8,0xFD,0x6B,0x09,0x6C,0x23,0x08,0xB2,0xF2,0xF7,0x00,0xB8,0x22,0xE8,0x68,0x0B,
+0x2B,0x02,0x9B,0x02,0xCF,0x59,0x00,0x03,0x0A,0xEB,0x00,0x43,0x1A,0xC0,0xD6,0xF8,
+0x02,0x14,0xE4,0x00,0x00,0xA9,0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x07,0x6F,0x22,0xE3,
+0x86,0x8B,0x0B,0x9A,0xE0,0x9B,0x22,0x5F,0x57,0x00,0x27,0x44,0x3D,0x5E,0xE3,0x01,
+0x20,0x00,0x25,0x5E,0xE3,0x29,0x20,0x00,0x31,0x0B,0x58,0x00,0x43,0x5A,0xC8,0x0F,
+0x58,0x01,0x9E,0xE1,0x9F,0x02,0x5E,0xE3,0x49,0x23,0xFF,0x79,0xE7,0xFF,0xFF,0x67,
+0x42,0xF7,0xC5,0x53,0x20,0x15,0xCE,0xF7,0x00,0x0A,0x42,0xF7,0xC8,0x8F,0x17,0x0F,
+0x0B,0x01,0xE4,0x00,0x00,0x43,0x4E,0xF7,0x08,0x9B,0x1D,0x43,0x17,0xC0,0x8F,0x38,
+0x9B,0x07,0xCF,0x39,0x00,0x06,0x43,0x39,0xC0,0x9B,0x03,0x42,0xF7,0xC0,0x8E,0xF9,
+0x0E,0xEB,0x03,0x0B,0x2B,0x30,0x0B,0x0B,0x32,0x4E,0xF9,0x08,0xD7,0x17,0x00,0xC0,
+0xCF,0x39,0xFF,0xFE,0x9B,0x4B,0x8F,0x19,0xCF,0x18,0x00,0x03,0x43,0x18,0xD0,0x8E,
+0xF8,0x0E,0xEB,0x33,0x0A,0xEB,0x32,0x9B,0x12,0x43,0x17,0xC0,0x8E,0xF8,0x53,0x00,
+0xF0,0x0E,0xEB,0x33,0xC2,0xE0,0x10,0x01,0xEF,0x17,0x01,0x55,0x0E,0xEF,0x02,0x22,
+0xE4,0x1E,0xE7,0xFF,0xFC,0x8A,0xC1,0x80,0x10,0x01,0xFD,0x8C,0x0B,0x7A,0x12,0xEC,
+0x04,0x10,0x6C,0x01,0x40,0x63,0xBB,0xE7,0xFF,0xC5,0xEA,0xC1,0xC0,0x10,0x01,0x13,
+0x2C,0x04,0xFD,0xCE,0x0A,0x1C,0x10,0x6C,0x01,0x0A,0xEE,0x00,0x43,0x79,0x1B,0x9B,
+0x00,0xE4,0x00,0x00,0x35,0x4F,0x58,0x10,0x9F,0x01,0x8F,0x4E,0x5F,0x18,0x00,0x0F,
+0x5A,0x02,0x5F,0x9A,0x06,0x5F,0x57,0x1D,0x4A,0xFC,0xB8,0xD7,0x78,0xFF,0x54,0xC1,
+0x40,0x10,0x01,0xC2,0xE2,0x32,0x88,0xFD,0x4A,0x01,0x3C,0x20,0x00,0x35,0x4E,0xF7,
+0x0A,0x0E,0xEA,0x19,0xE4,0x00,0x00,0x2F,0x53,0x00,0xF0,0xC2,0xE0,0x77,0xE8,0x20,
+0x00,0x25,0x4E,0xF7,0x12,0x5F,0x17,0x06,0x0F,0x0A,0x19,0xC2,0xE0,0x10,0x01,0xF2,
+0xF7,0x08,0x98,0x22,0xE1,0x54,0x40,0x63,0xCB,0xE7,0xFF,0xC5,0x06,0x12,0xEC,0x01,
+0x13,0x6C,0x04,0x0B,0x2E,0x00,0x43,0x7B,0xBB,0x9A,0xE0,0x8B,0x17,0xE4,0x00,0x00,
+0x35,0x4F,0x58,0x10,0x8F,0x4E,0x0F,0x5A,0x02,0xD7,0x59,0x00,0x48,0x5F,0x3A,0x06,
+0x8A,0xF8,0x9F,0x01,0x5F,0x18,0x00,0xD7,0x78,0xFF,0x54,0x26,0xE8,0x3D,0xD2,0xEB,
+0x00,0x62,0xD2,0xEC,0x00,0x42,0xD2,0xEA,0x00,0x66,0xFE,0xE0,0x02,0x58,0xE4,0x00,
+0x00,0x0F,0x52,0xE0,0xC8,0x0E,0xEA,0x19,0x88,0x6A,0xE7,0xFF,0x29,0x0A,0xC1,0x80,
+0x10,0x01,0x89,0xCB,0xFD,0x8C,0x0B,0xF0,0x8A,0xEB,0x12,0x2C,0x00,0x53,0x20,0x14,
+0x0B,0x17,0x00,0xCF,0x18,0x00,0x23,0x43,0x18,0xC8,0x0F,0x17,0x01,0xC3,0x00,0x10,
+0x01,0x9E,0xE2,0xFF,0x18,0x09,0xA0,0xD6,0xF8,0xFF,0x4E,0x88,0x6A,0xE7,0xFF,0x28,
+0xA4,0xC2,0x00,0x10,0x01,0x9A,0xE0,0xFE,0x10,0x08,0x88,0x22,0x20,0x4A,0x13,0x0C,
+0x00,0x27,0x04,0x33,0x12,0xF0,0x00,0x5E,0xE0,0x01,0x4A,0xE1,0x01,0x13,0x0C,0x00,
+0x23,0x09,0x2E,0x13,0x10,0x00,0x23,0x05,0x3A,0x13,0x2C,0x07,0x13,0x0C,0x37,0xD7,
+0x38,0x02,0x2A,0x0F,0x0C,0x0A,0x23,0x04,0xFA,0x0F,0x0C,0x3A,0x23,0x04,0xE2,0xC3,
+0x00,0x10,0x01,0xEB,0x38,0x0B,0xD2,0xC3,0x2F,0xFF,0xE0,0x20,0x00,0xA5,0xFF,0x39,
+0xFC,0x01,0x4F,0x19,0xFA,0x47,0x38,0xCE,0x43,0x19,0xC5,0xC3,0x20,0x10,0x01,0xEB,
+0x59,0x0B,0x85,0xD7,0x1A,0x00,0xA4,0xE4,0x00,0x00,0x1B,0x23,0x04,0x26,0x13,0x10,
+0x00,0x23,0x00,0x18,0x22,0xE0,0x9C,0x53,0x00,0x23,0x0A,0xEE,0x00,0xCE,0xF7,0x00,
+0x14,0x42,0xF7,0xC0,0x0E,0xEE,0x01,0xC3,0x40,0x10,0x01,0x9D,0xC2,0xFF,0x5A,0x09,
+0xA0,0xD5,0xDA,0xFF,0x4E,0x88,0x6A,0xE7,0xFF,0x27,0x70,0x12,0xEC,0x00,0x22,0xE0,
+0x5A,0xC2,0xE0,0x10,0x01,0xEC,0x17,0x08,0x9C,0x13,0x2C,0x00,0xD3,0x20,0x0A,0xBE,
+0xE4,0x00,0x02,0xE1,0x98,0x61,0x98,0x81,0x88,0xAA,0xE7,0xFF,0x22,0x50,0x0A,0xEA,
+0x10,0x0B,0x0A,0x06,0x0B,0x2A,0x12,0x5D,0xD7,0x04,0x42,0x38,0xBD,0x40,0xB8,0xCD,
+0xCA,0xE0,0x07,0xFF,0x43,0x37,0xCD,0x0B,0x4A,0x02,0x0B,0x6A,0x08,0x40,0x97,0xC5,
+0x5C,0xF9,0x04,0x11,0x0C,0x00,0x0B,0x2A,0x0A,0x40,0x78,0xD5,0x42,0x59,0xDD,0x42,
+0x77,0xCD,0x40,0xDA,0xC5,0xC2,0xE0,0x10,0x01,0x9E,0x4A,0x42,0x9B,0xCD,0xFE,0xF7,
+0x0C,0x08,0x9B,0xA0,0xCB,0xC0,0x07,0xFF,0xE4,0x00,0x00,0xC9,0x0B,0x97,0xFE,0xD7,
+0x1C,0x00,0x98,0x43,0x9C,0xD5,0x43,0x9C,0x8B,0x43,0x9C,0x18,0x8F,0x8E,0xE4,0x00,
+0x00,0x2D,0xD7,0x84,0x00,0xA8,0x43,0x9E,0xE5,0x43,0x9C,0xD5,0x43,0x9C,0x2B,0x43,
+0x9C,0x30,0x8F,0x87,0x0F,0x97,0xFF,0x0B,0x97,0x00,0xD7,0x3C,0x00,0x98,0x43,0x9C,
+0xDD,0x9F,0x8A,0x43,0x9C,0xCB,0x43,0x9C,0x90,0xE4,0x00,0x00,0x31,0xD7,0x93,0x00,
+0xB8,0x43,0x9E,0xE5,0x43,0x9C,0xDD,0x43,0x9C,0xCB,0x43,0x9C,0xA0,0xFF,0x9C,0x07,
+0xFF,0x0F,0x97,0x01,0x9F,0xA1,0x1E,0xF7,0x30,0x5F,0xBD,0x00,0xD7,0xA8,0xFD,0x06,
+0xCA,0xE0,0x07,0xFF,0x0B,0x0A,0x12,0x0B,0x4A,0x10,0x0B,0x6A,0x0C,0x43,0xB7,0xD5,
+0x42,0xF7,0xDD,0x43,0xBD,0xC5,0x0B,0x0A,0x0E,0x43,0xD7,0xC5,0xC2,0xE0,0x10,0x01,
+0x9B,0x00,0xF1,0x17,0x08,0x98,0x12,0xEC,0x00,0xE4,0x00,0x00,0x93,0xCF,0x38,0x00,
+0x30,0x8F,0x2C,0x0B,0x99,0x16,0x09,0x59,0x18,0x43,0x9C,0xD5,0x41,0x4A,0xDD,0xCF,
+0x9C,0x07,0xFF,0xCD,0x4A,0x07,0xFF,0x43,0x9C,0xE8,0x41,0x4A,0xF0,0x0F,0x99,0x17,
+0x0D,0x59,0x19,0x1F,0x9C,0x9C,0x5F,0x9C,0x04,0xC3,0x80,0xE6,0xEA,0x20,0x00,0x41,
+0x21,0x00,0x34,0x8B,0x37,0x22,0xE0,0x14,0x9B,0x21,0x5E,0xF9,0x00,0x9F,0x01,0x5F,
+0x18,0x00,0xD6,0xF8,0xFD,0xDD,0x1A,0xEC,0x00,0xE7,0xFF,0xFD,0x71,0xCF,0x57,0x00,
+0x30,0x9E,0xE1,0x8F,0x4C,0x0F,0x5A,0x0E,0xC3,0x40,0x95,0xEC,0x4B,0x18,0x0A,0xE4,
+0x00,0x00,0x11,0x9A,0xE0,0x8B,0x17,0x5F,0x57,0x00,0xD7,0x3A,0xFF,0x1D,0xC2,0xE0,
+0x10,0x01,0xEF,0x17,0x08,0x9C,0x0A,0xED,0x01,0x52,0xF7,0x08,0xE4,0x00,0x00,0x33,
+0x9B,0x07,0xC2,0xE0,0x10,0x01,0x18,0x10,0x00,0xEF,0x17,0x01,0xBD,0x0A,0xED,0x01,
+0x9B,0x17,0x46,0xF7,0xC4,0x0E,0xED,0x01,0x0E,0xEF,0x02,0xD2,0xE1,0x0D,0xAE,0xE7,
+0xFF,0xD9,0x44,0xC2,0xE0,0x10,0x01,0xEE,0xF7,0x07,0xF6,0xD2,0xE1,0x0A,0xAA,0x0B,
+0x2B,0x35,0x0A,0xEB,0x39,0x0B,0x0B,0x36,0x5F,0x77,0x06,0x5F,0x59,0x06,0xD7,0x5B,
+0x00,0x30,0x8A,0xF9,0x5F,0x37,0x06,0xC1,0xF8,0x00,0x21,0x47,0x39,0xCF,0xC2,0x00,
+0x10,0x01,0x4F,0x39,0xFA,0x99,0x40,0x46,0xF7,0xCC,0xC1,0xC0,0x10,0x01,0x5E,0xF7,
+0x06,0xFD,0xEF,0xB4,0xBA,0x4E,0xF7,0x08,0xFE,0x10,0x01,0xBE,0x5E,0xF8,0x15,0xC1,
+0x80,0x10,0x01,0x4A,0xF7,0xC0,0x43,0x18,0xBD,0x0F,0x0B,0x37,0xE4,0x00,0x00,0xAD,
+0x1C,0x61,0x05,0x88,0x8F,0x98,0xA3,0xE7,0xFF,0x65,0xC4,0x1E,0xE1,0x08,0x8E,0xEA,
+0x12,0xF7,0xFD,0x1F,0x17,0x1A,0x4E,0xF7,0x08,0x4F,0x18,0x08,0x8E,0xF0,0x8F,0x0B,
+0x0A,0xF7,0x01,0x0B,0x18,0x00,0xD7,0x17,0x00,0xA0,0x9A,0xE1,0xEB,0x0C,0x08,0x83,
+0x4E,0xF7,0x54,0x46,0xF7,0xC5,0xE4,0x00,0x00,0x27,0x9A,0xE1,0xEB,0x0C,0x08,0x83,
+0x4E,0xF7,0x54,0x46,0xF7,0xBF,0x46,0xF7,0xC4,0x9D,0x41,0xEE,0xEC,0x08,0x83,0x5D,
+0x4A,0x00,0xF2,0xEE,0x08,0xC6,0xD6,0xEA,0xFD,0x55,0xC2,0xE0,0x10,0x01,0xEA,0xF7,
+0x08,0x83,0x22,0xE0,0x34,0x0A,0xED,0x01,0x52,0xF7,0x10,0xE4,0x00,0x00,0x3B,0x0A,
+0xED,0x01,0x57,0x17,0x10,0x23,0x00,0x34,0x9B,0x21,0xC3,0x00,0x10,0x01,0xFB,0x38,
+0x08,0xB0,0x1F,0x40,0xEF,0x46,0xF7,0xD4,0x0E,0xED,0x01,0xC1,0x40,0x10,0x01,0xC3,
+0x00,0x10,0x01,0xEE,0xEA,0x08,0xBA,0xFF,0x18,0x08,0xD7,0x22,0xE0,0x56,0x18,0x18,
+0x00,0x0A,0xED,0x01,0x56,0xF7,0x10,0x22,0xE1,0x64,0x9A,0xE1,0xE4,0x00,0x00,0x41,
+0x22,0xE4,0x92,0x12,0xF8,0x00,0x9E,0xE1,0x5E,0xF7,0x00,0x1A,0xF8,0x00,0x0B,0x0D,
+0x01,0x57,0x18,0x10,0x23,0x00,0xE0,0x26,0xE4,0xE5,0x9A,0xE2,0xEE,0xEA,0x08,0xB8,
+0xE4,0x00,0x00,0x61,0x22,0xE8,0x7E,0x18,0x18,0x00,0x0A,0xED,0x01,0x56,0xF7,0x10,
+0x22,0xE0,0x34,0x98,0x62,0xE7,0xFF,0x97,0x42,0xE4,0x00,0x00,0x2F,0x9A,0xE3,0xE7,
+0xFF,0xFF,0xBB,0x22,0xEC,0x36,0x98,0x60,0xE7,0xFF,0x97,0x1C,0xEC,0x0A,0x08,0xB8,
+0x0B,0x0D,0x00,0xC2,0xE0,0x10,0x01,0x27,0x1C,0x56,0xF3,0x17,0x08,0xA0,0xD3,0x09,
+0x01,0xB5,0x9F,0x01,0xFB,0x17,0x08,0xA0,0xE4,0x00,0x00,0x59,0xF8,0x17,0x08,0xA0,
+0xE4,0x00,0x00,0x61,0x0E,0xEF,0x02,0x22,0xE4,0xA6,0x9B,0x05,0xC2,0xE0,0x10,0x01,
+0xEF,0x17,0x08,0xC0,0x9B,0x03,0xC2,0xE0,0x10,0x01,0x98,0x60,0xFB,0x17,0x08,0xB0,
+0xE7,0xFF,0x96,0x8C,0xE7,0xFF,0x91,0x84,0xE4,0x00,0x00,0x11,0xE7,0xFF,0x92,0x36,
+0xC2,0xE0,0x10,0x01,0xEB,0x17,0x08,0x85,0xC3,0x00,0x7D,0x0A,0x20,0x00,0x61,0xC3,
+0x00,0x10,0x01,0x9B,0x5E,0xF3,0x38,0x08,0x89,0xEC,0x17,0x08,0x85,0x47,0x39,0xD4,
+0xFB,0x38,0x08,0x89,0x0E,0x81,0x0A,0x0E,0x61,0x0E,0x0E,0x41,0x12,0x0E,0x21,0x16,
+0x0E,0x01,0x1A,0x0D,0xE1,0x1E,0x0D,0xC1,0x22,0x0D,0xA1,0x26,0x0D,0x81,0x2A,0x0D,
+0x61,0x2E,0x0D,0x41,0x32,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0x9C,0x38,0x0D,
+0x21,0x04,0xE7,0xFF,0xA1,0x76,0x20,0x60,0xE6,0xE7,0xFF,0xA1,0x54,0x20,0x64,0x7A,
+0x98,0x80,0xE7,0xFF,0xB3,0x40,0xE7,0xFF,0x54,0x92,0x20,0x60,0x26,0x98,0x61,0xE4,
+0x00,0x00,0x35,0x98,0x61,0x98,0x80,0xE4,0x00,0x00,0x7B,0xE7,0xFF,0xA1,0x10,0x98,
+0x80,0xE7,0xFF,0xB3,0x02,0xE7,0xFF,0xA0,0xFC,0x98,0x82,0xE4,0x00,0x00,0x53,0xE7,
+0xFF,0xA0,0xFC,0x20,0x65,0x0E,0xE7,0xFF,0xA0,0xDA,0x20,0x64,0xA2,0x98,0x81,0xE7,
+0xFF,0xB2,0xC6,0xE7,0xFF,0x54,0x18,0x20,0x60,0x26,0x98,0x61,0xE4,0x00,0x00,0x49,
+0x98,0x61,0x88,0x83,0xE7,0xFF,0xAF,0x3C,0xE7,0xFF,0xC9,0x76,0x9A,0xE0,0xE4,0x00,
+0x00,0xED,0xE7,0xFF,0xA0,0x82,0x98,0x81,0xE7,0xFF,0xB2,0x74,0xE7,0xFF,0xA0,0x6E,
+0x98,0x83,0xE7,0xFF,0xFF,0xC5,0xE7,0xFF,0xA0,0x6E,0x20,0x68,0x36,0xE7,0xFF,0xA0,
+0x4C,0x98,0x82,0xE4,0x00,0x00,0x23,0xE7,0xFF,0xA0,0x4C,0x20,0x6C,0x5E,0xE7,0xFF,
+0xA0,0x2A,0x98,0x83,0xE7,0xFF,0xB2,0x1C,0xE7,0xFF,0xA0,0x16,0x98,0x87,0xE7,0xFF,
+0xFF,0x6D,0xE7,0xFF,0xA0,0x16,0xD0,0x67,0x00,0xC6,0xE7,0xFF,0x9F,0xF2,0x98,0x87,
+0xE7,0xFF,0xB1,0xE4,0xE7,0xFF,0x9F,0xDE,0x98,0x88,0xE7,0xFF,0xFF,0x35,0xE7,0xFF,
+0x9F,0xDE,0x9A,0xE0,0xD0,0x68,0x00,0x86,0xE7,0xFF,0x9F,0xB6,0x98,0x88,0xE7,0xFF,
+0xB1,0xA8,0x9A,0xE1,0x88,0x77,0x0D,0x21,0x06,0x9C,0x28,0x85,0x29,0x1C,0x21,0xE8,
+0x0D,0x21,0x14,0x0D,0x41,0x10,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x80,0x01,0x80,0x01,
+0x80,0x01,0x80,0x01,0xE7,0xFF,0x8C,0x60,0x0C,0x61,0x00,0xE7,0xFF,0x8C,0x5A,0x0C,
+0x61,0x04,0x0E,0xE1,0x02,0xD2,0xE0,0x1D,0x42,0x0E,0xE1,0x02,0xC1,0x80,0x10,0x01,
+0xC1,0x40,0x10,0x01,0x57,0x17,0x10,0xFD,0x8C,0x00,0xDE,0xFD,0x4A,0x00,0xCC,0xD3,
+0x00,0x0A,0x92,0x50,0x60,0x10,0xE7,0xFF,0x8C,0x3C,0xC2,0xE0,0x10,0x01,0xEB,0x17,
+0x00,0xBB,0x9F,0x01,0x5F,0x18,0x04,0xEF,0x17,0x00,0xBB,0xC2,0xE0,0x10,0x01,0xEB,
+0x17,0x08,0x85,0x23,0x00,0x24,0x9F,0x01,0xEF,0x17,0x08,0x85,0xE7,0xFF,0x8C,0x38,
+0x0A,0xEC,0x0B,0xC1,0x60,0x10,0x01,0x40,0x63,0xBD,0xFD,0x6B,0x06,0xFE,0x5E,0xE3,
+0x04,0x5E,0xE3,0xBB,0x20,0x02,0x0F,0x0A,0xEB,0x01,0x56,0xF7,0x20,0x22,0xE1,0xE8,
+0x98,0x61,0xE7,0xFF,0xB3,0x60,0x20,0x61,0xC6,0xE7,0xFF,0x9E,0x54,0x20,0x64,0x56,
+0xC2,0xE0,0x10,0x01,0xF2,0xF7,0x00,0xC0,0x56,0xF7,0x01,0x22,0xE1,0x72,0xE4,0x00,
+0x00,0x1F,0xE7,0xFF,0x9E,0x22,0x20,0x63,0xA8,0xE4,0x00,0x00,0x9D,0xE7,0xFF,0xC5,
+0xFE,0x0A,0xEB,0x01,0xC6,0xF7,0xFF,0xDF,0x0E,0xEB,0x01,0xE7,0xFF,0x9D,0xF0,0x20,
+0x60,0x5E,0x98,0x81,0x98,0xA0,0xE7,0xFF,0x46,0xA4,0x98,0x60,0x88,0x83,0xE7,0xFF,
+0xAC,0x68,0xE4,0x00,0x00,0x43,0x98,0x80,0x98,0x62,0xE7,0xFF,0xAC,0x50,0xFC,0x60,
+0x01,0x5E,0xE7,0xFF,0x55,0xC0,0x98,0x60,0xE7,0xFF,0x4B,0x8E,0xE7,0xFF,0x8B,0x18,
+0x0C,0x6C,0x09,0xE7,0xFF,0xC6,0x60,0xE7,0xFF,0x8B,0x02,0x0A,0xEC,0x0F,0x40,0x63,
+0xBD,0x5E,0xE3,0x04,0xC2,0xE0,0x3E,0x6E,0x20,0x01,0xB3,0x0A,0xEB,0x01,0x56,0xF7,
+0x80,0x22,0xE1,0x8C,0xE7,0xFF,0x9D,0x3E,0x20,0x6D,0x72,0xC2,0xE0,0x10,0x01,0xF2,
+0xF7,0x00,0xC0,0x56,0xF7,0x01,0x22,0xE1,0x3A,0xC1,0x80,0x10,0x01,0xEA,0xEC,0x0D,
+0x67,0x9E,0xE1,0xEE,0xEC,0x0D,0x67,0xE7,0xFF,0xC4,0xEA,0x0A,0xEB,0x01,0xC6,0xF7,
+0xFF,0x7F,0x0E,0xEB,0x01,0xEA,0xEC,0x0D,0x67,0xD2,0xEC,0x00,0xF9,0x98,0x63,0xE7,
+0xFF,0xB1,0xC6,0x20,0x60,0x56,0x98,0x61,0x98,0x80,0xE7,0xFF,0xAB,0x50,0x98,0x60,
+0xE7,0xFF,0x4A,0xE6,0xE4,0x00,0x00,0x19,0x98,0x63,0x98,0x80,0xE7,0xFF,0xAB,0x2C,
+0xE7,0xFF,0xC5,0x66,0x0A,0xEA,0x01,0x52,0xF7,0x10,0x0E,0xEA,0x01,0xE4,0x00,0x05,
+0x25,0xC6,0xF7,0x01,0x00,0xD2,0xE0,0x14,0x52,0xC2,0xE0,0x10,0x01,0x98,0x60,0xEC,
+0x17,0x0D,0x67,0xE7,0xFF,0x89,0x52,0xFC,0x60,0x01,0x00,0xE7,0xFF,0x89,0x52,0xFC,
+0x60,0x01,0x00,0xE7,0xFF,0x89,0x62,0xE7,0xFF,0x9C,0x18,0xD0,0x67,0x12,0xC5,0xC2,
+0xF8,0x00,0x21,0xFE,0xF7,0xBA,0xAC,0x4C,0x63,0x10,0x8C,0x77,0x0E,0xE3,0x02,0x86,
+0xE9,0xE7,0xFF,0x9B,0xF8,0x20,0x60,0x46,0x98,0x80,0xE7,0xFF,0xAD,0xD0,0x98,0x60,
+0x98,0x87,0xE4,0x00,0x03,0xBF,0xE7,0xFF,0x9B,0xCE,0xD0,0x67,0x11,0x4E,0x98,0x60,
+0x98,0x87,0xE4,0x00,0x03,0x47,0xE7,0xFF,0xFA,0x2E,0xD0,0x60,0x10,0xCA,0xE7,0xFF,
+0xAF,0xC2,0x5D,0x63,0x04,0x98,0x61,0xE7,0xFF,0xB0,0x76,0xD0,0x60,0x0C,0x76,0xC1,
+0x60,0x19,0x0A,0x20,0x06,0x19,0xE7,0xFF,0x49,0xAE,0xE7,0xFF,0x49,0x7E,0x5C,0x63,
+0x00,0x24,0x64,0x2B,0xC1,0x60,0x32,0x0A,0x20,0x00,0x91,0x98,0x80,0x98,0x62,0xE7,
+0xFF,0xA9,0xC6,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x53,0x36,0x98,0x60,0xE7,0xFF,0x49,
+0x04,0xE7,0xFF,0x88,0x8E,0x0C,0x6C,0x09,0xE4,0x00,0x02,0xFB,0xE7,0xFF,0x4D,0xFE,
+0x98,0x61,0xE4,0x00,0x01,0xDF,0xE7,0xFF,0xF9,0x6E,0xD0,0x60,0x0D,0xCA,0xE7,0xFF,
+0xAF,0x02,0xE7,0xFF,0x53,0x62,0xE7,0xFF,0x53,0xF2,0xD0,0x61,0x09,0x7A,0xE7,0xFF,
+0x54,0x12,0x20,0x65,0x06,0xE7,0xFF,0x48,0xA8,0x98,0x62,0xE7,0xFF,0xAF,0x8E,0x20,
+0x60,0x82,0xE7,0xFF,0x48,0x66,0x5C,0x63,0x00,0x20,0x60,0x58,0x98,0x63,0x98,0x80,
+0xE7,0xFF,0xA9,0x04,0xE7,0xFF,0x87,0xE8,0x0C,0x6C,0x0D,0xE4,0x00,0x02,0x55,0x98,
+0x62,0x98,0x80,0xE7,0xFF,0xA8,0xDE,0xFC,0x60,0x01,0x5E,0xE7,0xFF,0x52,0x4E,0xE4,
+0x00,0x02,0x2D,0xE7,0xFF,0x53,0xA8,0x98,0x62,0xE4,0x00,0x01,0x11,0xE7,0xFF,0xF8,
+0xA0,0xD0,0x60,0x0A,0x92,0xE7,0xFF,0xAE,0x34,0xE7,0xFF,0x54,0x10,0xE7,0xFF,0x54,
+0xD2,0xC1,0x80,0x10,0x01,0x89,0x63,0xFD,0x8C,0x0D,0x64,0x5E,0xEB,0x04,0xC2,0xE0,
+0x25,0x6E,0x20,0x00,0x1D,0xFC,0x60,0x01,0x2C,0xE7,0xFF,0x56,0x08,0x20,0x60,0x54,
+0x0A,0xEC,0x01,0x9E,0xE1,0x5E,0xF7,0x04,0x0E,0xEC,0x01,0x26,0xE4,0x8B,0xE4,0x00,
+0x00,0x55,0x5E,0xEB,0x04,0x88,0x6B,0xC2,0xE0,0x4A,0xEE,0x20,0x00,0x1D,0xFC,0x60,
+0x02,0x58,0xE7,0xFF,0x56,0x1C,0x20,0x63,0x6A,0xE4,0x00,0x00,0x5D,0xE7,0xFF,0x56,
+0x2C,0x0C,0x0C,0x01,0xE4,0x00,0x00,0x37,0x5E,0xEB,0x04,0x88,0x6B,0xC2,0xE0,0x4A,
+0xEE,0x20,0x00,0x1D,0xFC,0x60,0x02,0x58,0xE7,0xFF,0x55,0xD0,0x20,0x63,0x86,0x98,
+0x63,0x98,0x80,0xE4,0x00,0x00,0xFD,0x0C,0x0C,0x01,0xE4,0x00,0x00,0x9F,0xE7,0xFF,
+0x98,0xFE,0x20,0x64,0x3E,0xE7,0xFF,0x98,0xF0,0x88,0x83,0x98,0x64,0xE4,0x00,0x00,
+0x71,0xE7,0xFF,0x98,0xD8,0x20,0x63,0xC0,0xE7,0xFF,0x98,0xCA,0xD0,0x60,0x05,0x3E,
+0x98,0x64,0x98,0x80,0xE7,0xFF,0xAA,0x9C,0x98,0x64,0xE4,0x00,0x00,0x8B,0x98,0x64,
+0x98,0x89,0xE4,0x00,0x00,0x27,0xE7,0xFF,0x98,0x8E,0x20,0x64,0x76,0xE7,0xFF,0x98,
+0x80,0x88,0x83,0x98,0x67,0xE7,0xFF,0xAA,0x5A,0x0A,0xEA,0x01,0xCA,0xF7,0x01,0x00,
+0x0E,0xEA,0x01,0xE4,0x00,0x00,0xE1,0xE7,0xFF,0x98,0x4C,0x20,0x63,0x88,0xE7,0xFF,
+0x98,0x3E,0x20,0x61,0x86,0x98,0x67,0x98,0x80,0xE7,0xFF,0xAA,0x12,0x98,0x67,0x98,
+0x81,0xE7,0xFF,0xA6,0xA2,0xE7,0xFF,0xC0,0xDC,0xE4,0x00,0x00,0x95,0x0E,0xE1,0x06,
+0x22,0xE1,0x3C,0x0E,0xE1,0x06,0x56,0xF7,0x20,0x22,0xE1,0x18,0x98,0x60,0xE7,0xFF,
+0x84,0xDC,0x50,0x60,0x20,0xE7,0xFF,0x84,0xE6,0xE7,0xFF,0x7A,0x3C,0xC2,0xE0,0x10,
+0x01,0xEB,0x17,0x00,0xD1,0xC7,0x18,0xFF,0xFE,0x50,0x60,0x20,0xEF,0x17,0x00,0xD1,
+0xE7,0xFF,0x84,0xC0,0xC2,0xE0,0x10,0x01,0xEB,0x17,0x00,0xCF,0x53,0x18,0x20,0xEF,
+0x17,0x00,0xCF,0xC2,0xE0,0x10,0x01,0xF0,0x77,0x01,0xAE,0xE7,0xFF,0x84,0x62,0x0D,
+0x81,0x0A,0x0D,0x61,0x0E,0x0D,0x41,0x12,0x0D,0x21,0x16,0x1C,0x21,0x18,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,
+0x01,0x0C,0x63,0x02,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,
+0x01,0x0C,0x83,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x14,0x0B,0x17,0x01,0x53,0x18,0x01,0x0F,0x17,
+0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0x53,0x18,
+0x20,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,
+0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,0x9C,0x30,0x0D,0x21,0x0C,0x0D,
+0x41,0x08,0x0D,0x61,0x04,0x0D,0x81,0x00,0xC1,0x54,0x00,0x01,0xC9,0x8A,0x22,0x28,
+0x0A,0xEC,0x01,0xC6,0xF7,0xFF,0xFB,0xC9,0x6A,0x22,0x04,0x0E,0xEC,0x01,0xFF,0x00,
+0x80,0x00,0x0A,0xEB,0x01,0x46,0xF7,0xC5,0x5E,0xF7,0x04,0xC9,0x4A,0x24,0xA8,0x0E,
+0xEB,0x01,0x0A,0xEA,0x01,0xCA,0xF7,0x30,0x00,0x50,0x60,0x64,0x0E,0xEA,0x01,0xE4,
+0x00,0x24,0x8E,0x0A,0xEC,0x01,0x52,0xF7,0x04,0x50,0x60,0x1E,0x0E,0xEC,0x01,0xE4,
+0x00,0x24,0x6E,0x0A,0xEB,0x01,0xC6,0xF7,0x7F,0xFF,0x0E,0xEB,0x01,0x0A,0xEA,0x01,
+0xC6,0xF7,0xCF,0xFF,0x0E,0xEA,0x01,0x0D,0x81,0x02,0x0D,0x61,0x06,0x0D,0x41,0x0A,
+0x0D,0x21,0x0E,0x1C,0x21,0x10,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x2C,
+0x08,0x77,0x01,0x4C,0x63,0x09,0x54,0x63,0x1F,0x9C,0x61,0x85,0x29,0x9C,0x7F,0x5C,
+0x63,0x00,0x5C,0x62,0xFB,0x20,0x00,0x81,0xC2,0xF4,0x00,0x01,0x4C,0x63,0x08,0xCA,
+0xF7,0x24,0x2C,0x54,0x63,0x3E,0x0B,0x17,0x01,0x1F,0x20,0xC1,0x47,0x18,0xCC,0x44,
+0x63,0xC5,0x0C,0x77,0x01,0x85,0x29,0x9B,0x19,0x20,0x60,0x62,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x24,0x10,0x0B,0x37,0x01,0x47,0x19,0xC4,0x53,0x18,0x04,0xE4,0x00,0x00,
+0x87,0x20,0x64,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x17,0x01,0x53,
+0x18,0x06,0xE4,0x00,0x00,0x5D,0x20,0x68,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,
+0x10,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xF9,0xE4,0x00,0x00,0x31,0x20,0x6C,0x5E,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x24,0x10,0x0B,0x37,0x01,0x47,0x19,0xC4,0x53,0x18,0x02,
+0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x00,0x9C,0x30,0x0D,0x21,0x0C,0x0D,0x41,0x08,
+0x0C,0xA1,0x04,0x95,0x50,0xC9,0x4A,0x20,0x80,0x8D,0x43,0x4D,0x4A,0x18,0x88,0x6A,
+0xE7,0xFF,0xFC,0xE0,0x0C,0xA1,0x06,0x1C,0x6A,0x04,0x0D,0x21,0x0E,0x0D,0x41,0x0A,
+0x88,0x85,0x1C,0x21,0x10,0xE7,0xFF,0xFC,0xB7,0x1C,0x21,0xE8,0x0D,0x41,0x10,0x5D,
+0x44,0x00,0x4E,0xEA,0x08,0x0D,0x61,0x0C,0x0D,0x81,0x08,0x5D,0x65,0x00,0x5C,0x63,
+0x00,0x4D,0x83,0x18,0x8D,0x8B,0x8D,0x97,0x06,0xE0,0x81,0xCA,0xF7,0x04,0x00,0x0D,
+0x21,0x14,0x0D,0xA1,0x04,0xC5,0x8C,0x1F,0xFC,0x5D,0xA6,0x00,0x8D,0x97,0x88,0x6C,
+0xE7,0xFF,0xFC,0x00,0x55,0x4A,0x01,0x50,0x80,0xFF,0x4D,0x4A,0x08,0x8D,0x6A,0x4D,
+0x6B,0x18,0x4C,0x84,0x5C,0x4D,0x6D,0x5C,0x44,0x84,0x27,0x0D,0xA1,0x06,0x44,0x83,
+0x24,0x0D,0x41,0x12,0x88,0x6C,0x44,0x84,0x5D,0x0D,0x81,0x0A,0x0D,0x61,0x0E,0x0D,
+0x21,0x16,0x1C,0x21,0x18,0xE7,0xFF,0xFB,0xD7,0x5C,0x84,0x04,0x20,0x60,0x28,0x20,
+0x64,0xC2,0xE4,0x00,0x00,0x33,0x4C,0x84,0x41,0xC2,0xF4,0x00,0x01,0x9C,0x9F,0xCA,
+0xF7,0x24,0x34,0xC4,0x84,0x01,0xFF,0xE4,0x00,0x00,0x2B,0x4C,0x84,0x41,0xC2,0xF4,
+0x00,0x01,0x9C,0x9F,0xCA,0xF7,0x24,0x38,0xC4,0x84,0x01,0xFF,0x0C,0x97,0x01,0x85,
+0x29,0x07,0x00,0xFF,0xCB,0x18,0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,
+0x00,0x7D,0xC2,0xF4,0x00,0x01,0x47,0x64,0x27,0xCB,0x37,0x24,0x3C,0x0B,0x59,0x01,
+0x47,0x5A,0xDC,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x40,0x47,0x04,0xC4,0x0B,0x37,0x01,
+0x4F,0x18,0x81,0x44,0x84,0x27,0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,
+0x19,0xC4,0x47,0x04,0xC5,0x0F,0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,
+0xF4,0x00,0x01,0x47,0x9A,0xD7,0xCB,0x37,0x24,0x3C,0x0B,0x79,0x01,0x47,0x7B,0xE4,
+0x47,0x5A,0xDD,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x40,0x44,0x84,0xC4,0x0B,0x57,0x01,
+0x4C,0x84,0x81,0x47,0x24,0x27,0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,
+0x29,0x07,0x00,0xFF,0xCB,0x18,0xFF,0xFF,0x20,0x60,0x28,0x20,0x65,0xD2,0xE4,0x00,
+0x00,0x7D,0xC2,0xF4,0x00,0x01,0x47,0x64,0x27,0xCB,0x37,0x24,0x1C,0x0B,0x59,0x01,
+0x47,0x5A,0xDC,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x20,0x47,0x04,0xC4,0x0B,0x37,0x01,
+0x4F,0x18,0x81,0x44,0x84,0x27,0x4C,0x84,0x81,0x44,0x84,0xC4,0x47,0x18,0xC7,0x47,
+0x19,0xC4,0x47,0x04,0xC5,0x0F,0x17,0x01,0xE4,0x00,0x00,0x6F,0x5F,0x44,0x04,0xC2,
+0xF4,0x00,0x01,0x47,0x9A,0xD7,0xCB,0x37,0x24,0x1C,0x0B,0x79,0x01,0x47,0x7B,0xE4,
+0x47,0x5A,0xDD,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x20,0x44,0x84,0xC4,0x0B,0x57,0x01,
+0x4C,0x84,0x81,0x47,0x24,0x27,0x47,0x1A,0xCC,0x44,0x84,0xC5,0x0C,0x97,0x01,0x85,
+0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x24,0x80,0x0B,0x38,0x01,0x5F,0x23,0x04,0x0F,
+0x38,0x01,0x07,0x20,0xFF,0xCB,0x39,0xFF,0xFF,0xCA,0xF7,0x24,0x84,0x44,0x63,0xCC,
+0x0B,0x17,0x01,0x4C,0x63,0x81,0xFF,0x20,0xFF,0x00,0x47,0x18,0xCC,0x44,0x63,0xC5,
+0x0C,0x77,0x01,0x85,0x29,0x07,0x00,0xFF,0xCB,0x18,0xFF,0xFF,0x20,0x60,0x28,0x20,
+0x65,0xD2,0xE4,0x00,0x00,0x7D,0xC2,0xF4,0x00,0x01,0x47,0x64,0x27,0xCB,0x37,0x24,
+0x24,0x0B,0x59,0x01,0x47,0x5A,0xDC,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x28,0x47,0x04,
+0xC4,0x0B,0x37,0x01,0x4F,0x18,0x81,0x44,0x84,0x27,0x4C,0x84,0x81,0x44,0x84,0xC4,
+0x47,0x18,0xC7,0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,0x17,0x01,0xE4,0x00,0x00,0x6F,
+0x5F,0x44,0x04,0xC2,0xF4,0x00,0x01,0x47,0x9A,0xD7,0xCB,0x37,0x24,0x24,0x0B,0x79,
+0x01,0x47,0x7B,0xE4,0x47,0x5A,0xDD,0x0F,0x59,0x01,0xCA,0xF7,0x24,0x28,0x44,0x84,
+0xC4,0x0B,0x57,0x01,0x4C,0x84,0x81,0x47,0x24,0x27,0x47,0x1A,0xCC,0x44,0x84,0xC5,
+0x0C,0x97,0x01,0x85,0x29,0xC3,0x14,0x00,0x01,0xCA,0xF8,0x22,0x08,0x20,0x64,0x3A,
+0x0B,0x37,0x01,0xCB,0x39,0x10,0x00,0xE4,0x00,0x00,0x1D,0x20,0x60,0x36,0x0B,0x37,
+0x01,0xC7,0x39,0xEF,0xFF,0x0F,0x37,0x01,0xCA,0xF8,0x22,0x08,0x0B,0x17,0x01,0xCB,
+0x18,0x20,0x00,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0x1F,0x00,0x80,0x20,0x60,
+0x28,0x20,0x64,0xAA,0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x54,
+0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x64,0x0B,0x37,0x01,0x54,
+0x84,0x7F,0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,
+0x20,0x60,0x28,0x20,0x64,0xAA,0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x24,0x50,0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x61,0x13,0x17,
+0x00,0x54,0x84,0x1F,0x57,0x18,0xE0,0x44,0x84,0xC5,0x18,0x97,0x00,0x85,0x29,0x9C,
+0x30,0x0D,0x41,0x08,0x0D,0x61,0x04,0x0D,0x21,0x0C,0x5D,0x44,0x00,0x89,0x63,0x1C,
+0x8A,0xF1,0x4C,0x84,0x08,0x5C,0x83,0xF3,0x20,0x00,0x19,0x50,0x80,0x1F,0x88,0x6B,
+0xE7,0xFF,0xFF,0x5A,0x1F,0x00,0x80,0x21,0x60,0x28,0x21,0x64,0xAA,0xE4,0x00,0x00,
+0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x4C,0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x24,0x60,0x0B,0x37,0x01,0x55,0x4A,0x7F,0x47,0x19,0xC4,0x47,0x0A,
+0xC5,0x0F,0x17,0x01,0x0D,0x61,0x06,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,0x10,
+0x85,0x29,0x20,0x64,0x8E,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,0x22,
+0x60,0x0B,0x38,0x01,0x53,0x39,0xF0,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFF,
+0xF0,0xE4,0x00,0x00,0x47,0x20,0x60,0x8A,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,
+0xCA,0xF7,0x22,0x60,0x0B,0x38,0x01,0xC7,0x39,0xFF,0x0F,0x0F,0x38,0x01,0x0B,0x17,
+0x01,0x53,0x18,0x0F,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x8E,0xC2,0xF4,0x00,0x01,
+0xCB,0x17,0x22,0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,0x01,0x53,0x39,0x08,0x0F,0x38,
+0x01,0x0B,0x17,0x01,0xC7,0x18,0xFE,0xFF,0xE4,0x00,0x00,0x49,0x20,0x60,0x8E,0xC2,
+0xF4,0x00,0x01,0xCB,0x17,0x22,0x04,0xCA,0xF7,0x22,0x60,0x0B,0x38,0x01,0xC7,0x39,
+0xFF,0xF7,0x0F,0x38,0x01,0x0B,0x17,0x01,0xCB,0x18,0x01,0x00,0x0F,0x17,0x01,0x85,
+0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x60,0x0B,0x17,0x01,0xCB,
+0x18,0x02,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x22,0x60,0x0B,0x17,0x01,0xC7,0x18,0xFD,0xFF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,
+0x00,0x01,0x54,0x63,0x7F,0xCA,0xF7,0x24,0xA0,0x1F,0x20,0x80,0x0B,0x17,0x01,0x47,
+0x18,0xCC,0x47,0x03,0xC5,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x4C,0x63,
+0x40,0xCA,0xF7,0x24,0xA0,0xC4,0x63,0x7F,0x00,0x0B,0x17,0x01,0xFF,0x20,0x80,0xFF,
+0x47,0x18,0xCC,0x47,0x03,0xC5,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x24,0xA1,0x10,0x77,0x00,0x54,0x63,0x7F,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0xC7,0x18,0xFF,0x7F,0xE4,0x00,0x00,
+0x2B,0x20,0x60,0x52,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0x53,
+0x18,0x80,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x24,0xA0,0x0B,0x17,0x01,0xC7,0x18,0x7F,0xFF,0xE4,0x00,0x00,0x39,0x20,0x60,0x6E,
+0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x24,0xA0,0x0B,0x17,0x01,0x47,
+0x18,0xCD,0x5F,0x18,0x04,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x5C,0x63,
+0x00,0xCA,0xF7,0x22,0x0C,0xFF,0x20,0xFF,0x00,0x0B,0x17,0x01,0x47,0x18,0xCC,0x47,
+0x03,0xC5,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xFF,0x40,
+0xFF,0x00,0xCA,0xF7,0x22,0xF0,0x47,0x03,0xD4,0x0B,0x37,0x01,0x5F,0x39,0x00,0x47,
+0x18,0xCD,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x22,0x38,0x0B,0x17,0x01,0x0C,0x77,0x01,0x85,0x29,0x20,0x64,0x6A,0xC2,0xF4,0x00,
+0x01,0x9B,0x3C,0xCA,0xF7,0x25,0xC0,0x0B,0x17,0x01,0x47,0x18,0xCC,0x53,0x18,0x01,
+0xE4,0x00,0x00,0x3F,0x20,0x60,0x7A,0xC2,0xF4,0x00,0x01,0xCB,0x17,0x22,0x38,0xCA,
+0xF7,0x25,0xC0,0x0B,0x38,0x01,0x0C,0x18,0x01,0x0B,0x17,0x01,0x53,0x18,0x03,0x0F,
+0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0x20,0x64,0x62,0x4C,0x63,0x24,0xC2,0xF4,0x00,
+0x01,0x5C,0x63,0x04,0xCA,0xF7,0x22,0xCC,0x0C,0x77,0x01,0xE4,0x00,0x00,0x25,0x20,
+0x60,0x3A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xCC,0x0C,0x17,0x01,0x85,0x29,0x20,
+0x60,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0xC7,0x18,0xFF,
+0xFE,0xE4,0x00,0x00,0x2B,0x20,0x64,0x52,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xE8,
+0x0B,0x17,0x01,0x53,0x18,0x01,0x0F,0x17,0x01,0x85,0x29,0x20,0x60,0x5A,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0xC7,0x18,0xF0,0xFF,0xE4,0x00,0x00,
+0x2D,0x20,0x64,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0xE8,0x0B,0x17,0x01,0xCB,
+0x18,0x0F,0x00,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x00,0xC4,0x84,0x03,0xFF,0x20,
+0x64,0x70,0x20,0x60,0x34,0x20,0x68,0x88,0x20,0x6C,0xDA,0xE4,0x00,0x00,0x51,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x24,0x68,0xE4,0x00,0x00,0x49,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x24,0x6C,0xE4,0x00,0x00,0x31,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x70,0xE4,
+0x00,0x00,0x19,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x24,0x74,0x0C,0x97,0x01,0x85,0x29,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x23,0x24,0x0B,0x17,0x01,0x53,0x18,0x20,0x0F,0x17,
+0x01,0x5C,0x63,0x00,0x07,0x00,0x20,0xCB,0x18,0x41,0x00,0x44,0x63,0xC5,0x4C,0x63,
+0x10,0x0C,0x83,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xDF,0x0F,0x17,0x01,0x85,0x29,
+0xFC,0x21,0xFE,0x88,0x50,0xA0,0x96,0xED,0x21,0x01,0x74,0xED,0x41,0x01,0x70,0xED,
+0x61,0x01,0x6C,0x88,0x61,0xC1,0x78,0x00,0x21,0xFD,0x6B,0xB4,0xBE,0x88,0x8B,0xE7,
+0xFF,0x47,0xF4,0xFD,0x41,0x00,0x96,0xFC,0x8B,0x00,0x96,0x88,0x6A,0x50,0xA0,0xD2,
+0xE7,0xFF,0x47,0xD2,0x8A,0xE1,0xC3,0x54,0x00,0x01,0xFF,0x60,0xFF,0x00,0x0B,0x37,
+0x01,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,
+0x37,0x03,0x47,0xB9,0xCF,0x8F,0x1A,0x0B,0x98,0x01,0x47,0x9C,0xEC,0x0B,0xB7,0x05,
+0x47,0x39,0xEC,0x47,0x3C,0xCD,0x0F,0x38,0x01,0x9E,0xE6,0xD5,0x57,0xFE,0x9E,0xFE,
+0xE1,0x00,0x96,0xFF,0x81,0x01,0x68,0x0B,0x37,0x01,0x47,0x19,0xDC,0x5F,0x39,0x00,
+0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,0x03,0x47,0xD9,0xCF,0x8F,0x1A,
+0x0B,0xB8,0x01,0x47,0xBD,0xF4,0x0B,0xD7,0x05,0x47,0x39,0xF4,0x47,0x3D,0xCD,0x0F,
+0x38,0x01,0x9E,0xE6,0xD7,0x97,0xFE,0x9E,0xED,0x61,0x01,0x6E,0xED,0x41,0x01,0x72,
+0xED,0x21,0x01,0x76,0xFC,0x21,0x01,0x78,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,
+0x22,0x00,0x0C,0x18,0x01,0xCA,0xF7,0x24,0x14,0xFF,0x20,0xFF,0x07,0x0B,0x17,0x01,
+0x47,0x18,0xCC,0x53,0x18,0x30,0x0F,0x17,0x01,0x85,0x29,0x5C,0x84,0x00,0x9B,0x10,
+0x20,0x60,0x28,0x20,0x64,0xAA,0xE4,0x00,0x00,0x21,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x22,0x10,0xE4,0x00,0x00,0x19,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x22,0x14,0x0B,0x37,
+0x01,0x54,0x84,0x0F,0x47,0x19,0xC4,0x47,0x04,0xC5,0x0F,0x17,0x01,0x85,0x29,0xC2,
+0xF4,0x00,0x01,0xCB,0x17,0x74,0xD8,0x18,0x18,0x00,0xCB,0x37,0x74,0x10,0x5C,0x63,
+0x00,0x18,0x79,0x00,0xCB,0x37,0x76,0x30,0x18,0x19,0x00,0x53,0x40,0x24,0xCB,0x37,
+0x74,0x00,0x1B,0x59,0x00,0xCB,0x77,0x74,0x28,0x53,0x20,0x60,0x1B,0x3B,0x00,0xCB,
+0x77,0x74,0x30,0x1B,0x3B,0x00,0xCB,0x77,0x74,0x38,0x53,0x20,0x1C,0x1B,0x3B,0x00,
+0xCB,0x77,0x74,0x40,0x1B,0x3B,0x00,0xCB,0x37,0x74,0xA8,0x13,0x39,0x00,0xCB,0x37,
+0x74,0x78,0x9B,0x69,0x1B,0x79,0x00,0xCB,0x37,0x74,0x70,0x18,0x19,0x00,0xCB,0x37,
+0x74,0x60,0x13,0x79,0x00,0x1B,0x59,0x00,0xCA,0xF7,0x74,0x61,0x13,0x37,0x00,0x18,
+0x17,0x00,0x98,0x61,0x12,0xF8,0x00,0x52,0xF7,0x01,0x1A,0xF8,0x00,0x85,0x29,0x5C,
+0x63,0x00,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x20,0x18,0x77,0x00,0x0B,0x17,0x01,
+0xC7,0x18,0xFE,0xFF,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,
+0x68,0x10,0x77,0x00,0x4C,0x63,0x21,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x74,0xE0,0x10,0x77,0x00,0x4C,0x63,0x09,0x54,0x63,0x01,0x85,0x29,0xC2,
+0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x10,0x77,0x00,0x4C,0x63,0x29,0x54,0x63,0x01,
+0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xE0,0x10,0x77,0x00,0x4C,0x63,0x19,
+0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,0x10,0x77,0x00,
+0x4C,0x63,0x11,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x68,
+0x08,0x77,0x01,0x4C,0x63,0x49,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x74,0x68,0x08,0x77,0x01,0x4C,0x63,0x51,0x54,0x63,0x01,0x85,0x29,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x74,0x61,0x13,0x17,0x00,0x57,0x18,0xFD,0x1B,0x17,0x00,0x85,
+0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x61,0x13,0x17,0x00,0x53,0x18,0x02,0x1B,
+0x17,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xC0,0x12,0xF7,0x00,0x85,
+0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0xA8,0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x74,0xC8,0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x74,0xA0,0x12,0xF7,0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x74,0x20,
+0x10,0x77,0x00,0x85,0x29,0x5C,0x63,0x00,0xC3,0x14,0x00,0x01,0x4E,0xE3,0x10,0xCB,
+0x18,0x2A,0x00,0x8E,0xF8,0x08,0x77,0x00,0x9A,0xE8,0xCC,0x63,0x00,0x03,0x40,0x63,
+0xB8,0x85,0x29,0x5C,0x84,0x04,0x5E,0xE4,0x00,0xD2,0xEF,0x05,0xAD,0x4E,0xF7,0x10,
+0xC3,0x18,0x00,0x21,0xFF,0x18,0xBC,0x30,0x8E,0xF8,0xC3,0x34,0x00,0x01,0x0F,0x17,
+0x02,0xCA,0xF9,0x26,0x18,0x0B,0x57,0x01,0xC7,0x5A,0xFF,0xF3,0x1F,0x60,0xCF,0x0F,
+0x57,0x01,0x0B,0x57,0x01,0x47,0x5A,0xDC,0x53,0x5A,0x10,0x4C,0x84,0x49,0x0F,0x57,
+0x01,0x9A,0xE1,0xCB,0x59,0x26,0x20,0xE4,0x00,0x00,0x31,0x4F,0x37,0x08,0x9E,0xE1,
+0x8F,0x38,0x5E,0xF7,0x04,0x0B,0x39,0x01,0xC7,0x39,0x3F,0xFF,0x0F,0x3A,0x01,0xC3,
+0x34,0x00,0x01,0xD6,0xE4,0xFF,0x40,0x20,0x60,0x96,0xCB,0x39,0x26,0x38,0x0B,0x18,
+0x01,0x0A,0xF9,0x01,0x4F,0x18,0x60,0xFF,0x40,0x8F,0xFF,0xC7,0x18,0x70,0x00,0x46,
+0xF7,0xD4,0x46,0xF8,0xBD,0x0E,0xF9,0x01,0xE4,0x00,0x00,0x4B,0x20,0x64,0x86,0xCA,
+0xF9,0x26,0x38,0xFF,0x60,0xF8,0xFF,0x0B,0x38,0x01,0x0B,0x57,0x01,0x4F,0x39,0x40,
+0x47,0x1A,0xDC,0xC7,0x39,0x07,0x00,0x47,0x19,0xC5,0x0F,0x17,0x01,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x26,0x18,0x0B,0x17,0x01,0x53,0x18,0x30,0x0F,0x17,0x01,0x85,0x29,
+0x5C,0x84,0x00,0xD0,0x8F,0x03,0x9D,0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBB,0x58,0x4C,
+0x84,0x10,0xC3,0x14,0x00,0x01,0x8C,0x97,0xCB,0x38,0x26,0x34,0x0E,0xE4,0x02,0x0B,
+0x59,0x01,0x0B,0x77,0x03,0xFF,0x80,0xC0,0x00,0xC7,0x7B,0x3F,0xFF,0x47,0x5A,0xE4,
+0x47,0x5B,0xD5,0x0F,0x59,0x01,0x20,0x60,0x7E,0x0B,0x37,0x01,0xCB,0x18,0x26,0x38,
+0x4F,0x39,0x60,0x0B,0x58,0x01,0xFF,0x60,0x8F,0xFF,0xC7,0x39,0x70,0x00,0x46,0xFA,
+0xDC,0xE4,0x00,0x00,0x3F,0x20,0x64,0x86,0x0B,0x37,0x01,0xCB,0x18,0x26,0x38,0x4F,
+0x39,0x40,0x0B,0x58,0x01,0xFF,0x80,0xF8,0xFF,0xC7,0x39,0x07,0x00,0x46,0xFA,0xE4,
+0x46,0xF9,0xBD,0x0E,0xF8,0x01,0x85,0x29,0x5C,0x84,0x00,0xD0,0x8C,0x04,0x1D,0xC2,
+0xF8,0x00,0x21,0xFE,0xF7,0xBB,0x58,0x4C,0x84,0x10,0xFF,0x40,0xC0,0x00,0x8C,0x97,
+0x0E,0xE4,0x02,0x20,0x60,0xD6,0xC3,0x14,0x00,0x01,0x0B,0x77,0x03,0xCB,0x38,0x26,
+0xC4,0xC7,0x7B,0x3F,0xFF,0x0B,0x99,0x01,0x47,0x5C,0xD4,0x47,0x5B,0xD5,0xCB,0x18,
+0x26,0x38,0x0F,0x59,0x01,0x1F,0x60,0x8F,0x0B,0x37,0x01,0x0B,0x58,0x01,0x4F,0x39,
+0x20,0x57,0x39,0x70,0xE4,0x00,0x00,0x63,0x20,0x64,0xDA,0xC3,0x14,0x00,0x01,0x0B,
+0x77,0x03,0xCB,0x38,0x26,0xC8,0xC7,0x7B,0x3F,0xFF,0x0B,0x99,0x01,0x47,0x5C,0xD4,
+0x47,0x5B,0xD5,0xCB,0x18,0x26,0x38,0x0F,0x59,0x01,0x9B,0x78,0x0B,0x37,0x01,0x0B,
+0x58,0x01,0x57,0x39,0x07,0x46,0xFA,0xDC,0x46,0xF9,0xBD,0x0E,0xF8,0x01,0x85,0x29,
+0x5C,0x84,0x04,0x20,0x60,0x28,0x20,0x64,0xEE,0xE4,0x00,0x00,0x39,0xC2,0xF4,0x00,
+0x01,0x4C,0x84,0x41,0xCA,0xF7,0x26,0xC0,0x54,0x84,0x3F,0x0B,0x17,0x01,0x1F,0x20,
+0xC0,0xE4,0x00,0x00,0x2F,0xC2,0xF4,0x00,0x01,0xC4,0x84,0x3F,0x00,0xCA,0xF7,0x26,
+0xC0,0xFF,0x20,0xC0,0xFF,0x0B,0x17,0x01,0x47,0x18,0xCC,0x44,0x84,0xC5,0x0C,0x97,
+0x01,0x85,0x29,0x20,0x61,0x52,0x20,0x84,0x84,0x20,0x80,0x2C,0xD0,0x82,0x04,0xD6,
+0xE4,0x00,0x00,0x5D,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,
+0x18,0x3F,0xFF,0xE4,0x00,0x01,0x01,0xC2,0xF4,0x00,0x01,0xFF,0x20,0x80,0x00,0xCA,
+0xF7,0x26,0x30,0x0B,0x17,0x01,0xC7,0x18,0x3F,0xFF,0xE4,0x00,0x00,0x27,0xC2,0xF4,
+0x00,0x01,0xFF,0x20,0xC0,0x00,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0x47,0x18,0xCD,
+0x5F,0x18,0x04,0xE4,0x00,0x00,0xA1,0x20,0x65,0x3E,0x20,0x84,0x80,0x20,0x80,0x28,
+0x20,0x89,0x1A,0xE4,0x00,0x00,0x63,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x30,0x0B,
+0x17,0x01,0xC7,0x18,0xCF,0xFF,0xE4,0x00,0x00,0x5B,0xC2,0xF4,0x00,0x01,0xFF,0x20,
+0xCF,0xFF,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0x47,0x18,0xCC,0xCB,0x18,0x20,0x00,
+0xE4,0x00,0x00,0x27,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x30,0x0B,0x17,0x01,0xCB,
+0x18,0x30,0x00,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x72,0xC2,0xF4,0x00,0x01,0xFF,
+0x20,0x80,0x00,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,0x18,0x04,
+0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,
+0x17,0x01,0xC7,0x18,0x7F,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xCB,0x18,0x20,0x00,0xE4,0x00,0x00,
+0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,
+0x18,0xDF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x26,0x24,0x0B,0x17,0x01,0xCB,0x18,0x40,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,
+0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,0x18,0xBF,0xFF,
+0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x24,
+0x0B,0x17,0x01,0xCB,0x18,0x10,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x26,0x24,0x0B,0x17,0x01,0xC7,0x18,0xEF,0xFF,0x0F,0x17,0x01,
+0x85,0x29,0x9C,0x38,0xC2,0xF4,0x00,0x01,0x0D,0x21,0x04,0xCA,0xF7,0x26,0x18,0x0B,
+0x17,0x01,0xCB,0x18,0x40,0x00,0x98,0x60,0x0F,0x17,0x01,0xE7,0xFF,0xFF,0x1A,0x0D,
+0x21,0x06,0x98,0x60,0x9C,0x28,0xE7,0xFF,0xFF,0x5F,0x20,0x64,0x72,0xC2,0xF4,0x00,
+0x01,0xFF,0x20,0x80,0x00,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0x47,0x18,0xCD,0x5F,
+0x18,0x04,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,
+0x00,0x0B,0x17,0x01,0xC7,0x18,0x7F,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x20,0x00,0xE4,
+0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,
+0x01,0xC7,0x18,0xDF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x40,0x00,0xE4,0x00,0x00,0x2D,
+0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,
+0xBF,0xFF,0x0F,0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x26,0x00,0x0B,0x17,0x01,0xCB,0x18,0x10,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xEF,0xFF,0x0F,
+0x17,0x01,0x85,0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,
+0x17,0x01,0xCB,0x18,0x08,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,
+0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xF7,0xFF,0x0F,0x17,0x01,0x85,
+0x29,0x20,0x64,0x5A,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x26,0x00,0x0B,0x17,0x01,0xCB,
+0x18,0x04,0x00,0xE4,0x00,0x00,0x2D,0x20,0x60,0x56,0xC2,0xF4,0x00,0x01,0xCA,0xF7,
+0x26,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFB,0xFF,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,
+0x00,0xC2,0xF4,0x00,0x01,0x4F,0x23,0x40,0xCA,0xF7,0x26,0x14,0x4C,0x63,0x60,0x0B,
+0x17,0x01,0x44,0x79,0x1D,0x5F,0x18,0x00,0x44,0x63,0xC5,0x5C,0x63,0x04,0x0C,0x77,
+0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xFF,0x20,0xF0,0x00,0xCB,0x17,0x26,0x0C,0xC4,
+0x63,0x0F,0xFF,0x0B,0x58,0x01,0x5C,0x63,0x06,0x47,0x5A,0xCC,0x47,0x43,0xD5,0x0F,
+0x58,0x01,0xCA,0xF7,0x26,0x10,0x0B,0x17,0x01,0x47,0x38,0xCC,0x44,0x63,0xCD,0x0C,
+0x77,0x01,0x85,0x29,0x9C,0x38,0xFF,0x00,0xE0,0x00,0x0D,0x21,0x04,0x0D,0x41,0x00,
+0xC1,0x54,0x00,0x01,0xCA,0xEA,0x26,0x04,0x0B,0x37,0x01,0x47,0x39,0xC4,0xCB,0x39,
+0x0F,0xA0,0x0F,0x37,0x01,0xCA,0xEA,0x26,0x08,0x0B,0x37,0x01,0x47,0x19,0xC4,0xCB,
+0x18,0x10,0x60,0x98,0x60,0x0F,0x17,0x01,0xFC,0x80,0x08,0x03,0xE7,0xFF,0xF9,0x28,
+0xCA,0xEA,0x26,0xC0,0xFF,0x20,0xC0,0xFF,0x0B,0x17,0x01,0x47,0x18,0xCC,0xCB,0x18,
+0x08,0x00,0x98,0x60,0x0F,0x17,0x01,0xFC,0x80,0x08,0x03,0xE7,0xFF,0xF7,0xDA,0x98,
+0x61,0xFC,0x80,0x08,0x03,0xE7,0xFF,0xF7,0xC6,0xCA,0xEA,0x26,0x00,0x0B,0x17,0x01,
+0x53,0x18,0x0F,0x0F,0x17,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFF,0x7F,0x0F,0x17,0x01,
+0x0B,0x17,0x01,0xC7,0x18,0xFF,0xBF,0x98,0x68,0x0F,0x17,0x01,0xE7,0xFF,0xFE,0x44,
+0x0D,0x21,0x06,0x0D,0x41,0x02,0xFC,0x60,0x01,0x2C,0x9C,0x28,0xE7,0xFF,0xFE,0x6F,
+0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0x00,0x0B,0x17,0x01,0x53,0x18,0x02,0x0F,0x17,
+0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0x00,0x0B,0x17,0x01,0xC7,0x18,
+0xFF,0xFD,0x0F,0x17,0x01,0x85,0x29,0x9C,0x7F,0x5C,0x63,0x00,0xD0,0x64,0x05,0x15,
+0xC2,0xF8,0x00,0x21,0xFE,0xF7,0xBD,0xF0,0x4C,0x63,0x10,0xFF,0x00,0xFC,0xFF,0x8C,
+0x77,0xC2,0xF4,0x00,0x01,0x0F,0x23,0x02,0x87,0x29,0xCB,0x17,0x3D,0x3C,0xCA,0xF7,
+0x31,0x04,0x0B,0x38,0x01,0x53,0x39,0x01,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,
+0xFC,0xFF,0xE4,0x00,0x00,0xD3,0xCB,0x37,0x3D,0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x59,
+0x01,0x53,0x5A,0x01,0x0F,0x59,0x01,0x0B,0x37,0x01,0x47,0x19,0xC4,0xCB,0x18,0x01,
+0x00,0xE4,0x00,0x00,0x95,0xCB,0x37,0x3D,0x3C,0xCA,0xF7,0x31,0x04,0x0B,0x59,0x01,
+0x53,0x5A,0x01,0x0F,0x59,0x01,0x0B,0x37,0x01,0x47,0x19,0xC4,0xCB,0x18,0x02,0x00,
+0xE4,0x00,0x00,0x57,0xCA,0xF7,0x3D,0x3C,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFE,0xE4,
+0x00,0x00,0x39,0xCB,0x17,0x3C,0x10,0xCA,0xF7,0x3C,0x14,0x0B,0x38,0x01,0x53,0x39,
+0x01,0x0F,0x38,0x01,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFD,0x0F,0x17,0x01,0xC2,0xF4,
+0x00,0x01,0xCA,0xF7,0x78,0x00,0x0B,0x17,0x01,0xC7,0x18,0xFF,0xFB,0x0F,0x17,0x01,
+0x85,0x29,0x5C,0x63,0x00,0x5C,0x84,0x00,0x9A,0xE0,0x24,0x64,0x43,0xC2,0xF8,0x00,
+0x21,0xFE,0xF7,0xBE,0x04,0x8C,0x77,0x12,0xE3,0x00,0xC3,0x14,0x00,0x01,0xCB,0x18,
+0x78,0x01,0x4E,0xF7,0x10,0x5C,0x80,0x29,0x46,0xF7,0xC5,0x4B,0x00,0x1A,0x1B,0x17,
+0x00,0x85,0x29,0xC2,0xF4,0x00,0x01,0x5C,0x84,0x04,0xCB,0x17,0x79,0x04,0xCC,0x84,
+0x17,0x70,0x4F,0x24,0x81,0x5C,0x84,0x04,0x0F,0x38,0x01,0xCA,0xF7,0x79,0x00,0x0C,
+0x97,0x01,0x98,0x81,0xE7,0xFF,0xFF,0x5D,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xCC,
+0x0B,0x17,0x01,0x53,0x18,0x02,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,
+0x17,0x7A,0x30,0xCB,0x37,0x7A,0x34,0xCB,0x57,0x7A,0x10,0xCA,0xF7,0x7A,0x14,0x0B,
+0x18,0x01,0x0B,0x39,0x01,0x0B,0x5A,0x01,0x08,0x77,0x01,0x4E,0xF9,0x80,0x4C,0x63,
+0x80,0x8E,0xF8,0x8C,0x7A,0x44,0x63,0x1F,0x44,0x63,0xBC,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0xCB,0x17,0x7A,0x70,0xCB,0x37,0x7A,0x74,0xCB,0x57,0x7A,0x50,0xCA,0xF7,0x7A,
+0x54,0x0B,0x18,0x01,0x0B,0x39,0x01,0x0B,0x5A,0x01,0x08,0x77,0x01,0x4E,0xF9,0x80,
+0x4C,0x63,0x80,0x8E,0xF8,0x8C,0x7A,0x44,0x63,0x1F,0x44,0x63,0xBC,0x85,0x29,0x5C,
+0x63,0x06,0xC2,0xF4,0x00,0x01,0x47,0x23,0x1F,0xCA,0xF7,0x7A,0x10,0x0B,0x17,0x01,
+0x47,0x19,0xC4,0x44,0x63,0xC5,0x5C,0x63,0x04,0x0C,0x77,0x01,0x85,0x29,0x5C,0x63,
+0x06,0xC2,0xF4,0x00,0x01,0x47,0x23,0x1F,0xCA,0xF7,0x7A,0x50,0x0B,0x17,0x01,0x47,
+0x19,0xC4,0x44,0x63,0xC5,0x5C,0x63,0x04,0x0C,0x77,0x01,0x85,0x29,0xC2,0xF4,0x00,
+0x01,0x44,0x63,0x1F,0xCA,0xF7,0x7A,0x10,0x0B,0x17,0x01,0x47,0x18,0x1C,0x0F,0x17,
+0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0x44,0x63,0x1F,0xCA,0xF7,0x7A,0x50,0x0B,0x17,
+0x01,0x47,0x18,0x1C,0x0F,0x17,0x01,0x85,0x29,0x5C,0x63,0x04,0xC2,0xF4,0x00,0x01,
+0xCA,0xF7,0x7A,0x30,0x0C,0x77,0x01,0x85,0x29,0x9B,0x01,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x7A,0x70,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xFF,0x20,0xAA,0x55,
+0xCB,0x17,0x78,0xC0,0x0F,0x38,0x01,0x5F,0x03,0x04,0x27,0x08,0x17,0x98,0x63,0xCA,
+0xF7,0x78,0xC4,0x5C,0x63,0x04,0xCB,0x00,0x03,0xE8,0x43,0x04,0xC1,0x40,0x63,0xC3,
+0x4C,0x63,0x81,0x44,0x63,0x1F,0x0C,0x77,0x01,0x06,0xE0,0x5B,0xCA,0xF7,0x8D,0x80,
+0x5C,0x97,0x0D,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x3C,0x44,0x0B,0x17,0x01,0x20,0x00,
+0x2D,0xC7,0x18,0xFF,0xBF,0xE4,0x00,0x00,0x15,0x5F,0x18,0x04,0x53,0x18,0x40,0x0F,
+0x17,0x01,0x85,0x29,0xFF,0x00,0xAA,0x55,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,0xC0,
+0x0F,0x17,0x01,0x85,0x29,0xFF,0x00,0x55,0xAA,0xC2,0xF4,0x00,0x01,0xCA,0xF7,0x78,
+0xC0,0x0F,0x17,0x01,0x85,0x29,0xCA,0xE0,0x03,0x20,0xC3,0x14,0x00,0x01,0x5C,0x63,
+0x04,0xC0,0x60,0x63,0xEA,0x48,0x63,0xB8,0xCA,0xF8,0x79,0x10,0x0B,0x37,0x01,0x53,
+0x39,0x01,0x0F,0x37,0x01,0xCB,0x58,0x79,0x00,0xCB,0x38,0x79,0x08,0x9C,0x38,0x0A,
+0xF9,0x01,0xCB,0x18,0x3C,0x44,0x0B,0x7A,0x01,0x0B,0x39,0x01,0x0F,0x21,0x07,0x0B,
+0x18,0x01,0x57,0x18,0x40,0x5F,0x18,0x04,0x23,0x00,0x40,0x4C,0x63,0x29,0x5C,0x60,
+0x09,0x48,0x63,0x0A,0xE4,0x00,0x00,0x3F,0xCC,0x63,0x00,0x06,0x5C,0x63,0x04,0xE4,
+0x00,0x00,0x29,0x0A,0xF8,0x01,0x52,0xF7,0x01,0x0E,0xF8,0x01,0x0A,0xF9,0x01,0xE4,
+0x00,0x00,0x21,0xC3,0x34,0x00,0x01,0xCB,0x19,0x79,0x10,0xCB,0x39,0x79,0x08,0x0B,
+0x41,0x07,0x43,0x57,0xD5,0xD4,0x7A,0x00,0xB8,0x0B,0x41,0x07,0xD7,0x57,0xFE,0xB9,
+0x0B,0x41,0x07,0x43,0x5B,0xD5,0x8E,0xFA,0xD4,0x77,0xFE,0x5C,0x9C,0x28,0x85,0x29,
+0x5C,0x63,0x04,0xE4,0x00,0x00,0x2D,0x42,0xE4,0x2C,0xC3,0x38,0x00,0x01,0x43,0x05,
+0xCC,0x8F,0x03,0x13,0x18,0x00,0x1B,0x17,0x00,0x9C,0xBF,0x20,0xBF,0xB2,0x85,0x29,
+0x5C,0x63,0x00,0xC2,0xF4,0x00,0x01,0x20,0x60,0xCE,0xCA,0xF7,0x2C,0x30,0x0B,0x17,
+0x01,0xCB,0x18,0x02,0x00,0x0F,0x17,0x01,0x80,0x01,0xC2,0xF4,0x00,0x01,0xCB,0x17,
+0x3C,0x44,0xCA,0xF7,0x3C,0xA8,0x0B,0x38,0x01,0xC7,0x39,0xFF,0xF3,0x0F,0x38,0x01,
+0x0B,0x17,0x01,0x53,0x18,0x01,0xE4,0x00,0x00,0x9F,0xCB,0x17,0x3C,0xA8,0x0B,0x38,
+0x01,0x53,0x39,0x01,0xCA,0xF7,0x3C,0x5C,0x0F,0x38,0x01,0x1F,0x00,0xC0,0x0B,0x37,
+0x00,0x47,0x39,0xC4,0x9B,0x02,0x24,0x64,0x25,0x54,0x63,0x3F,0x5F,0x03,0x06,0x47,
+0x18,0xCD,0x5C,0x78,0x04,0xC3,0x14,0x00,0x01,0x0C,0x77,0x01,0xCA,0xF8,0x3C,0xA8,
+0x0B,0x37,0x01,0xC7,0x39,0xFF,0xFE,0x0F,0x37,0x01,0xCA,0xF8,0x2C,0x30,0x0B,0x17,
+0x01,0xCB,0x18,0x01,0x00,0x0F,0x17,0x01,0x85,0x29,0xC2,0xF4,0x00,0x01,0xCB,0x17,
+0x3D,0x80,0x0B,0x38,0x01,0xCB,0x39,0x08,0x00,0x0F,0x38,0x01,0xCA,0xF7,0x3D,0x84,
+0x0B,0x17,0x01,0xCB,0x18,0x08,0x00,0x0F,0x17,0x01,0x85,0x29,0xE7,0xFF,0xFF,0xBD,
+0x56,0xE3,0xFF,0x4E,0xF7,0x08,0x5C,0x84,0x04,0xC4,0x63,0xFF,0x00,0x8C,0x77,0xC2,
+0xF4,0x00,0x01,0x4C,0x63,0x08,0x8C,0x77,0x0C,0x83,0x01,0x85,0x29,0x1C,0x21,0xC8,
+0xC0,0x98,0x00,0x21,0x0D,0x21,0x34,0x1C,0x61,0x06,0xFC,0x84,0xB6,0x6E,0x50,0xA0,
+0x2A,0xE7,0xFF,0x2F,0x10,0x1E,0xE1,0x06,0x1F,0x41,0x30,0x0B,0x37,0x01,0xFF,0x60,
+0xFF,0x00,0x47,0x19,0xDC,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,
+0xC3,0x34,0x00,0x01,0x8F,0x19,0x0B,0x37,0x03,0x47,0x99,0xCF,0x0B,0x78,0x01,0x47,
+0x7B,0xE4,0x0B,0x97,0x05,0x47,0x39,0xE4,0x47,0x3B,0xCD,0x0F,0x38,0x01,0x9E,0xE6,
+0xD7,0x57,0xFE,0x5E,0x0D,0x21,0x36,0x1C,0x21,0x38,0x85,0x29,0xFC,0x21,0xFF,0x38,
+0x50,0xA0,0x3C,0xED,0x21,0x00,0xC4,0xED,0x41,0x00,0xC0,0xED,0x61,0x00,0xBC,0xED,
+0x81,0x00,0xB8,0xED,0xA1,0x00,0xB4,0xED,0xC1,0x00,0xB0,0xED,0xE1,0x00,0xAC,0xEE,
+0x01,0x00,0xA8,0xC1,0x58,0x00,0x21,0x1C,0x61,0x6C,0xFD,0x4A,0xB6,0x6E,0x1C,0x8A,
+0x2A,0xE7,0xFF,0x2E,0x10,0x50,0xA0,0x24,0x1C,0x8A,0x66,0x1C,0x61,0x48,0xE7,0xFF,
+0x2D,0xF6,0x98,0x61,0x98,0x82,0xE7,0xFF,0xEF,0x1A,0x98,0x61,0xFC,0x80,0x18,0x08,
+0xE7,0xFF,0xD9,0xF2,0x98,0x61,0xFC,0x80,0x18,0x08,0xE7,0xFF,0xEC,0x6C,0x98,0x61,
+0x88,0x83,0xE7,0xFF,0xDC,0xA6,0x98,0x61,0x88,0x83,0xE7,0xFF,0xDA,0x2E,0x98,0x60,
+0x98,0x81,0xE7,0xFF,0xDB,0x1E,0x98,0x60,0x05,0x4F,0x0F,0xC9,0x4A,0x0F,0x0F,0x88,
+0x8A,0xE7,0xFF,0xE4,0xDE,0x98,0x61,0x88,0x8A,0xE7,0xFF,0xE4,0xCE,0xC3,0x54,0x00,
+0x01,0xCA,0xE0,0x11,0x50,0xCB,0x5A,0x22,0x00,0x57,0x17,0xFF,0x4F,0x18,0x10,0x8F,
+0x1A,0x1F,0x61,0x2A,0x0B,0x38,0x01,0x4F,0x17,0x08,0x8F,0x1B,0xEF,0x38,0xDD,0x61,
+0x9E,0xE1,0xC2,0xE2,0x2B,0xE4,0x23,0xFF,0x8D,0x1E,0xE1,0x6C,0xFF,0x41,0x00,0xA8,
+0xC1,0x94,0x00,0x01,0xFD,0xA0,0xFF,0x00,0x0B,0x37,0x01,0x47,0x19,0x6C,0x5F,0x39,
+0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,0x03,0x8F,0x0C,0x0F,0x38,
+0x01,0x9E,0xE4,0xD7,0x57,0xFF,0x2E,0x1E,0xE1,0x48,0x1F,0x41,0x6C,0x0B,0x37,0x01,
+0x47,0x19,0x6C,0x5F,0x39,0x00,0x4F,0x39,0x10,0x4F,0x18,0x08,0x8F,0x19,0x0B,0x37,
+0x03,0x8F,0x0C,0x0F,0x38,0x01,0x9E,0xE4,0xD7,0x57,0xFF,0x2E,0xE7,0xFF,0xD5,0xF8,
+0x99,0xE0,0x89,0xC3,0x98,0x61,0xE7,0xFF,0xD6,0x0E,0xD1,0xE0,0x05,0xBE,0x98,0x60,
+0x1D,0x61,0x0A,0xE7,0xFF,0xD6,0x48,0x99,0x40,0xE4,0x00,0x01,0x45,0x98,0x61,0x88,
+0x8A,0x22,0x01,0x0A,0xE7,0xFF,0xE1,0xE0,0x98,0x60,0xE7,0xFF,0xE2,0x2A,0xFC,0x60,
+0x01,0x00,0xE7,0xFF,0xF8,0x16,0xE7,0xFF,0xD4,0x14,0xE7,0xFF,0xF6,0xC2,0xC4,0x63,
+0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF7,0x6C,0xFC,0x60,0x01,
+0x00,0xE7,0xFF,0xF8,0x30,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE8,0x94,0xE4,
+0x00,0x00,0x8B,0xE7,0xFF,0xE1,0x62,0x98,0x61,0xE7,0xFF,0xE1,0xAC,0xFC,0x60,0x01,
+0x00,0xE7,0xFF,0xF7,0x98,0xE7,0xFF,0xD3,0x96,0xE7,0xFF,0xF6,0x44,0xC4,0x63,0x01,
+0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0xEE,0xFC,0x60,0x01,0x00,
+0xE7,0xFF,0xF7,0xB2,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE8,0x16,0x0A,0xEB,
+0x01,0x40,0x63,0xBD,0x0C,0x6B,0x01,0x9E,0x01,0x5E,0x10,0x00,0xD2,0x02,0xFB,0x8E,
+0x9D,0x41,0x9D,0x62,0x5D,0x4A,0x00,0xD1,0x44,0x05,0xEA,0x9A,0x00,0xE7,0xFF,0xFE,
+0xC1,0x98,0x61,0x1D,0x61,0x12,0xE7,0xFF,0xD4,0xE2,0x99,0x40,0xE4,0x00,0x01,0x45,
+0x98,0x61,0x88,0x8A,0x22,0x01,0x0A,0xE7,0xFF,0xE0,0x7A,0x98,0x60,0xE7,0xFF,0xE0,
+0xC4,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0xB0,0xE7,0xFF,0xD2,0xAE,0xE7,0xFF,0xF5,
+0x5C,0xC4,0x63,0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0x06,
+0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0xCA,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,
+0xE7,0x2E,0xE4,0x00,0x00,0x8B,0xE7,0xFF,0xDF,0xFC,0x98,0x61,0xE7,0xFF,0xE0,0x46,
+0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF6,0x32,0xE7,0xFF,0xD2,0x30,0xE7,0xFF,0xF4,0xDE,
+0xC4,0x63,0x01,0x00,0x20,0x63,0xE0,0xFC,0x60,0x01,0x00,0xE7,0xFF,0xF5,0x88,0xFC,
+0x60,0x01,0x00,0xE7,0xFF,0xF6,0x4C,0x88,0x6A,0x98,0x81,0x98,0xA0,0xE7,0xFF,0xE6,
+0xB0,0x0A,0xEB,0x01,0x40,0x63,0xBD,0x0C,0x6B,0x01,0x9E,0x01,0x5E,0x10,0x00,0xD2,
+0x02,0xFB,0x8E,0x9D,0x41,0x9D,0x62,0x5D,0x4A,0x00,0xD1,0x44,0x00,0x52,0x9A,0x00,
+0xE7,0xFF,0xFE,0xC1,0x9D,0xE1,0x5D,0xEF,0x00,0xD1,0xE2,0xF4,0x8E,0x0B,0x21,0x0A,
+0x0B,0x01,0x12,0x0F,0x21,0x07,0x1E,0xE1,0x0C,0x1F,0x81,0x12,0x0B,0x77,0x01,0x8B,
+0x59,0x5F,0xBB,0x06,0xD7,0x3D,0x00,0x30,0x8B,0x5B,0x5F,0x3A,0x06,0x0B,0x77,0x09,
+0x8B,0x58,0x5F,0xBB,0x06,0xD7,0x1D,0x00,0x30,0x8B,0x5B,0x5F,0x1A,0x06,0x9E,0xE2,
+0xD7,0x97,0xFE,0xE6,0x0F,0x21,0x07,0x9A,0xE0,0x0F,0x01,0x09,0x1F,0x21,0x1A,0x8B,
+0x57,0xFD,0x00,0x3F,0xFF,0xE4,0x00,0x00,0x69,0x43,0x7E,0xC4,0x0B,0x9B,0x00,0x43,
+0x79,0xC4,0x23,0x80,0x32,0x0D,0x1B,0x01,0x9B,0x41,0xE4,0x00,0x00,0x23,0x09,0x5D,
+0x00,0xCD,0x4A,0x1F,0xFF,0x43,0x8A,0xE0,0x0F,0x9B,0x01,0x9F,0x02,0xD3,0x08,0xFE,
+0xE6,0x9F,0x28,0x9E,0xE2,0xD2,0xE4,0x00,0xBA,0x1F,0x01,0x0A,0x4F,0xD7,0x10,0x1F,
+0xA1,0x06,0x8F,0xD8,0x8F,0xB7,0x9B,0x00,0xE7,0xFF,0xFF,0x83,0xC3,0x94,0x00,0x01,
+0x9A,0xE0,0xCB,0x9C,0x24,0x00,0xE4,0x00,0x00,0x47,0x43,0xB9,0xC4,0x43,0xDB,0xC4,
+0x57,0xBD,0xFF,0x0B,0xDE,0x01,0x4F,0xBD,0x10,0x8F,0xBC,0x0F,0xDD,0x01,0x9F,0x02,
+0xD3,0x08,0xFF,0x56,0x9E,0xE1,0x22,0xE8,0x54,0x1F,0x21,0x1A,0x4F,0x77,0x18,0x9B,
+0x00,0x8F,0x79,0xFF,0x37,0x12,0x46,0xE7,0xFF,0xFF,0xA7,0x9A,0xE0,0x4F,0x17,0x08,
+0x1F,0x61,0x6C,0x8F,0x1B,0x0B,0x38,0x01,0x47,0x19,0x6C,0x5F,0x39,0x00,0x4F,0x39,
+0x10,0x4F,0x18,0x08,0x8F,0x19,0x1F,0x21,0x2A,0x8F,0x0C,0x8F,0x37,0x0B,0x39,0x01,
+0x0F,0x38,0x01,0x9E,0xE2,0x5E,0xE3,0xC9,0x23,0xFF,0x55,0xC2,0xF4,0x00,0x01,0xCA,
+0xF7,0x25,0x38,0x0B,0x17,0x01,0x23,0x40,0x34,0x5F,0x18,0x04,0x53,0x18,0x0F,0xE4,
+0x00,0x00,0x11,0xC7,0x18,0xFF,0xF0,0x0F,0x17,0x01,0x98,0x60,0x98,0x80,0xE7,0xFF,
+0xDE,0x84,0x98,0x80,0x98,0x61,0xE7,0xFF,0xDE,0x74,0x98,0x60,0xE7,0xFF,0xDD,0x26,
+0x98,0x60,0x98,0x80,0xE7,0xFF,0xDC,0xC0,0x88,0x6E,0xEE,0x01,0x00,0xAA,0xED,0xE1,
+0x00,0xAE,0xED,0xC1,0x00,0xB2,0xED,0xA1,0x00,0xB6,0xED,0x81,0x00,0xBA,0xED,0x61,
+0x00,0xBE,0xED,0x41,0x00,0xC2,0xED,0x21,0x00,0xC6,0xFC,0x21,0x00,0xC8,0xE7,0xFF,
+0xD0,0x5F,0x00,0x00,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xC8,0x80,
+0xAA,0x55,0xC0,0x74,0x00,0x01,0xC8,0x63,0x78,0xC0,0x0C,0x83,0x00,0xC0,0x74,0x00,
+0x01,0xC8,0x63,0x1F,0xDC,0x50,0x80,0x80,0x0C,0x83,0x00,0x04,0x20,0x80,0xC8,0x21,
+0x17,0xFC,0x1C,0x40,0xFD,0x44,0x21,0x14,0x28,0x00,0x74,0xC0,0x40,0x00,0x01,0xC8,
+0x42,0x31,0xD8,0x84,0x49,0x0C,0x41,0x0C,0x0C,0x61,0x10,0x0C,0x81,0x14,0x0C,0xA1,
+0x18,0x0C,0xC1,0x1C,0x0C,0xE1,0x20,0x0D,0x01,0x24,0x0D,0x21,0x28,0x0D,0x41,0x2C,
+0x0D,0x61,0x30,0x0D,0x81,0x34,0x0D,0xA1,0x38,0x0D,0xC1,0x3C,0x0D,0xE1,0x40,0x0E,
+0x01,0x44,0x0E,0x21,0x48,0x0E,0x41,0x4C,0x0E,0x61,0x50,0x0E,0x81,0x54,0x0E,0xA1,
+0x58,0x0E,0xC1,0x5C,0x0E,0xE1,0x60,0x0F,0x01,0x64,0x0F,0x21,0x68,0x0F,0x41,0x6C,
+0x0F,0x61,0x70,0x0F,0x81,0x74,0x0F,0xA1,0x78,0x0F,0xC1,0x7C,0x1C,0x61,0x00,0xC1,
+0x00,0x00,0x01,0xC9,0x08,0x9F,0x80,0x85,0x08,0x90,0x23,0x00,0xC0,0x40,0x10,0x01,
+0xC8,0x42,0x03,0xB0,0xC0,0x60,0x10,0x01,0xC8,0x63,0x0D,0x68,0x5C,0x43,0x1F,0x20,
+0x00,0x2D,0x0C,0x02,0x00,0x1C,0x42,0x04,0x93,0xF4,0x85,0x29,0xC0,0x80,0x01,0x1F,
+0xC0,0x7F,0xFF,0xE1,0xC8,0x63,0xFF,0xF9,0x44,0x84,0x1C,0xC0,0x80,0x01,0x1D,0x0C,
+0x61,0x02,0xC0,0x60,0x02,0x0D,0x0C,0x61,0x06,0xC0,0x60,0x04,0x0D,0x0C,0x41,0x0E,
+0x0C,0x61,0x12,0x0C,0x81,0x16,0x0C,0xA1,0x1A,0x0C,0xC1,0x1E,0x0C,0xE1,0x22,0x0D,
+0x01,0x26,0x0D,0x21,0x2A,0x0D,0x41,0x2E,0x0D,0x61,0x32,0x0D,0x81,0x36,0x0D,0xA1,
+0x3A,0x0D,0xC1,0x3E,0x0D,0xE1,0x42,0x0E,0x01,0x46,0x0E,0x21,0x4A,0x0E,0x41,0x4E,
+0x0E,0x61,0x52,0x0E,0x81,0x56,0x0E,0xA1,0x5A,0x0E,0xC1,0x5E,0x0E,0xE1,0x62,0x0F,
+0x01,0x66,0x0F,0x21,0x6A,0x0F,0x41,0x6E,0x0F,0x61,0x72,0x0F,0x81,0x76,0x0F,0xA1,
+0x7A,0x0F,0xC1,0x7E,0xEF,0xE1,0x00,0x82,0x0C,0x21,0x0A,0x84,0x00,0x00,0x00,0x00,
+0x9C,0x30,0xCA,0xE0,0x48,0x02,0x0D,0x41,0x08,0x0D,0x21,0x0C,0x89,0x43,0xC2,0xF7,
+0x00,0x0F,0x9B,0x1C,0x46,0xF7,0xC4,0x0E,0xE1,0x04,0x0E,0xE1,0x06,0x56,0xF7,0x04,
+0x22,0xE0,0xE0,0xCA,0xE0,0x48,0x00,0xC3,0x37,0x00,0x0F,0x9B,0x1B,0x47,0x39,0xC4,
+0xC3,0x37,0x00,0x0D,0xCA,0xE0,0x48,0x02,0xC3,0x37,0x00,0x0F,0x47,0x19,0xC4,0xC3,
+0x17,0x00,0x0D,0x98,0x82,0xE7,0xFF,0xC2,0xB0,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0F,0x53,0x18,0x04,0xC3,0x17,0x00,0x0D,0x0E,0xE1,0x06,0x56,0xF7,0x08,0x22,0xE0,
+0xE8,0xCA,0xE0,0x48,0x00,0xC3,0x37,0x00,0x0F,0x9B,0x17,0x47,0x39,0xC4,0xC3,0x37,
+0x00,0x0D,0xCA,0xE0,0x48,0x02,0xC3,0x37,0x00,0x0F,0x47,0x19,0xC4,0xC3,0x17,0x00,
+0x0D,0x98,0x83,0x88,0x6A,0xE7,0xFF,0xC2,0x30,0xCA,0xE0,0x48,0x00,0xC3,0x17,0x00,
+0x0F,0x53,0x18,0x08,0xC3,0x17,0x00,0x0D,0x0D,0x41,0x0A,0x0D,0x21,0x0E,0x1C,0x21,
+0x10,0x85,0x29,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,
+0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x1B,0x00,0x00,0x00,0x00,0xA0,0x26,0x01,0x66,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
+0x01,0x00,0x00,0x00,0x00,0xA0,0x66,0x00,0x01,0x00,0x00,0x00,0xF3,0x00,0x06,0x00,
+0xC4,0x00,0x2F,0x00,0x07,0x00,0x0D,0x01,0xF6,0xFF,0x5C,0x00,0xFB,0xFF,0x00,0x00,
+0x1B,0x00,0x1B,0x00,0x01,0x00,0x10,0x00,0xF0,0x00,0x9E,0x00,0x6F,0x00,0x6F,0x00,
+0x1A,0x00,0x08,0x18,0x01,0x00,0x00,0x00,0x64,0x00,0x14,0x00,0x14,0x00,0x06,0x00,
+0x06,0x00,0x5A,0x00,0x14,0x00,0x14,0x00,0x06,0x00,0x06,0x00,0x64,0x00,0x01,0x00,
+0x5F,0x00,0x01,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x50,0x00,0x96,0x00,0x40,0x06,0x00,0x00,0x80,0x0C,0x00,0x00,
+0x01,0x03,0x07,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x03,0x00,0x04,0x00,0x05,0x00,
+0x00,0x01,0x02,0x00,0x14,0x00,0x2D,0x00,0x46,0x00,0x5F,0x00,0x78,0x00,0x91,0x00,
+0x07,0x00,0xC8,0x00,0xC8,0x00,0xC8,0x00,0xF4,0x01,0xF4,0x01,0xFF,0xFF,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,0x02,0x00,0x04,0x00,0x06,0x00,
+0x08,0x00,0x0A,0x00,0x0C,0x00,0x10,0x00,0x14,0x00,0x18,0x00,0x20,0x00,0x28,0x00,
+0x32,0x00,0x3E,0x00,0x40,0x00,0x64,0x00,0x80,0x00,0x00,0x01,0x02,0x00,0x00,0x11,
+0xFF,0xFF,0xFF,0xFF,0x01,0x11,0xFF,0xFF,0x18,0x50,0x02,0x11,0xFF,0x7F,0xFF,0x0E,
+0x03,0x11,0xFF,0x00,0x66,0x00,0x04,0x11,0xFF,0x0F,0x72,0x07,0x05,0x11,0xFF,0x0F,
+0x72,0x07,0x06,0x11,0xFF,0x00,0x00,0x00,0x07,0x11,0x03,0x00,0x00,0x00,0x08,0x11,
+0x73,0x00,0x00,0x00,0x09,0x11,0xFF,0xFF,0x00,0x00,0x09,0x11,0xFF,0x7F,0x00,0x00,
+0x0A,0x11,0xFF,0x7F,0x87,0x10,0x0E,0x11,0xFF,0xFF,0x00,0x00,0x0F,0x11,0xFF,0xFF,
+0x00,0x00,0x17,0x11,0x0F,0xFF,0x00,0x00,0x18,0x11,0xFF,0xFF,0x00,0x02,0x19,0x11,
+0xFF,0x00,0x0E,0x00,0x1E,0x11,0xFF,0xFF,0x00,0x00,0x1F,0x11,0xFF,0x00,0x00,0x00,
+0x33,0x11,0x0F,0x00,0x00,0x00,0x3A,0x11,0x37,0x0F,0x00,0x00,0x3B,0x11,0x77,0x00,
+0x77,0x00,0x3C,0x11,0x00,0xFF,0x00,0xA0,0x3D,0x11,0x77,0x00,0x00,0x00,0x3E,0x11,
+0xFF,0x00,0x00,0x00,0x04,0x12,0x06,0x00,0x00,0x00,0x05,0x12,0xFF,0x00,0x00,0x00,
+0x07,0x12,0xFF,0xFF,0x00,0x00,0x08,0x12,0xFF,0x00,0x00,0x00,0x09,0x12,0xFF,0xFF,
+0x00,0x00,0x0A,0x12,0xFF,0x00,0x00,0x00,0x0B,0x12,0x3F,0x00,0x2E,0x00,0x0D,0x12,
+0x1F,0x00,0x05,0x00,0x0E,0x12,0x1F,0x00,0x05,0x00,0x0F,0x12,0xFF,0xFF,0x00,0x00,
+0x10,0x12,0xFF,0x00,0x00,0x00,0x11,0x12,0xFF,0x0F,0x00,0x00,0x12,0x12,0x87,0x1F,
+0x00,0x00,0x13,0x12,0x7F,0x0F,0x14,0x00,0x14,0x12,0x9F,0xFF,0x0A,0x09,0x15,0x12,
+0x7F,0x0F,0x0C,0x0F,0x16,0x12,0xFF,0x0F,0x00,0x07,0x17,0x12,0x1F,0xFF,0x0A,0x5C,
+0x18,0x12,0x7F,0x1F,0x14,0x0A,0x19,0x12,0xFF,0xFF,0x8C,0x21,0x1A,0x12,0xFF,0x03,
+0x00,0x00,0x1B,0x12,0xFF,0x03,0x00,0x00,0x1C,0x12,0xFF,0x03,0x00,0x00,0x1D,0x12,
+0xFF,0x03,0x00,0x00,0x1E,0x12,0x1F,0x1F,0x12,0x07,0x1F,0x12,0x3F,0x3F,0x00,0x00,
+0x20,0x12,0xFF,0xFF,0x00,0x00,0x21,0x12,0xFF,0x00,0x00,0x00,0x23,0x12,0x3F,0x3F,
+0x02,0x00,0x24,0x12,0x3F,0x00,0x00,0x00,0x28,0x12,0xFF,0xFF,0x83,0x81,0x2D,0x12,
+0x01,0x00,0x01,0x00,0x50,0x12,0xFF,0xFF,0x00,0x00,0x51,0x12,0xFF,0x00,0x00,0x00,
+0x70,0x12,0x03,0x00,0x03,0x00,0x01,0x11,0x06,0x00,0x02,0x00,0x02,0x11,0x00,0x08,
+0x00,0x08,0x2A,0x12,0x00,0xFF,0x00,0xBA,0x2B,0x12,0xFF,0x30,0xF0,0x20,0x01,0x11,
+0x06,0x00,0x00,0x00,0x2A,0x12,0x00,0xFF,0x00,0x00,0x2B,0x12,0xFF,0x30,0x00,0x00,
+0x01,0x11,0x00,0x50,0x00,0x50,0x02,0x11,0x3F,0x06,0x2F,0x06,0x01,0x11,0x00,0x50,
+0x00,0x00,0x02,0x11,0x3F,0x06,0x00,0x00,0x2A,0x12,0x00,0x30,0x00,0x20,0x11,0x1E,
+0xFF,0x7F,0x00,0x00,0x12,0x1E,0xFF,0x00,0x00,0x00,0x13,0x1E,0x0F,0x00,0x00,0x00,
+0x15,0x1E,0x73,0x07,0x00,0x00,0x16,0x1E,0x0F,0x00,0x00,0x00,0x18,0x1E,0x3F,0x00,
+0x08,0x00,0x2A,0x1E,0x05,0x00,0x01,0x00,0x50,0x11,0x11,0x11,0x51,0x11,0x11,0x11,
+0x52,0x11,0x11,0x11,0x53,0x11,0x11,0x11,0x54,0x11,0x11,0x11,0x55,0x11,0x11,0x11,
+0x56,0x11,0x11,0x11,0x57,0x11,0x11,0x11,0x58,0x11,0x11,0x11,0x59,0x11,0x11,0x11,
+0x5A,0x11,0x11,0x11,0x5B,0x11,0x11,0x11,0x5C,0x11,0xFF,0xFF,0x5D,0x11,0xFF,0xFF,
+0x5E,0x11,0xFF,0xFF,0x46,0x12,0x00,0x00,0x47,0x12,0x00,0x00,0x48,0x12,0x00,0x00,
+0x49,0x12,0x00,0x00,0x4A,0x12,0x00,0x00,0x4B,0x12,0x00,0x00,0x4C,0x12,0x00,0x00,
+0x4D,0x12,0x00,0x00,0x4E,0x12,0x0F,0x00,0x02,0x03,0x0F,0x00,0x52,0x00,0x69,0x00,
+0xD9,0x00,0x95,0x00,0x89,0x00,0x7E,0x00,0x72,0x00,0x67,0x00,0x5B,0x00,0x50,0x00,
+0x44,0x00,0x39,0x00,0x2D,0x00,0x22,0x00,0x16,0x00,0x0B,0x00,0x00,0x00,0xFF,0x00,
+0x8D,0x09,0x1A,0x00,0xFE,0x00,0x1B,0x07,0x3F,0x00,0xFE,0x00,0x9D,0x0A,0x78,0x00,
+0xFD,0x00,0xEC,0x12,0xA8,0x00,0xFC,0x00,0x6B,0x18,0xD0,0x00,0xFB,0x00,0x7C,0x19,
+0x0A,0x01,0xF9,0x00,0x55,0x20,0x4E,0x01,0xF8,0x00,0x85,0x26,0x86,0x01,0xFF,0x00,
+0x48,0x0D,0x09,0x00,0xFE,0x00,0x9E,0x0B,0x1E,0x00,0xFE,0x00,0x34,0x0E,0x44,0x00,
+0xFD,0x00,0x35,0x14,0x66,0x00,0xFD,0x00,0x1A,0x18,0x7F,0x00,0xFC,0x00,0x11,0x19,
+0x9C,0x00,0xFB,0x00,0x3C,0x1C,0xBF,0x00,0xFB,0x00,0x94,0x21,0xDB,0x00,0xFA,0x00,
+0xE6,0x24,0xF7,0x00,0xF9,0x00,0xFB,0x24,0x29,0x01,0xFE,0x00,0xE0,0x0D,0x04,0x00,
+0xFE,0x00,0xF6,0x10,0x18,0x00,0xFE,0x00,0xC8,0x12,0x30,0x00,0xFD,0x00,0xEB,0x14,
+0x4A,0x00,0xFD,0x00,0x74,0x16,0x69,0x00,0xFC,0x00,0xB9,0x1C,0x7E,0x00,0xFC,0x00,
+0x68,0x20,0x8E,0x00,0xFB,0x00,0xCE,0x21,0xA6,0x00,0xFB,0x00,0x52,0x23,0xC8,0x00,
+0xFA,0x00,0x0A,0x29,0xE2,0x00,0xF9,0x00,0x4D,0x2C,0xFC,0x00,0xFE,0x00,0x85,0x13,
+0xF8,0xFF,0xFE,0x00,0xF6,0x12,0x07,0x00,0xFD,0x00,0xC9,0x13,0x24,0x00,0xFD,0x00,
+0x6E,0x18,0x3E,0x00,0xFC,0x00,0x47,0x1C,0x4E,0x00,0xFC,0x00,0x83,0x1D,0x5E,0x00,
+0xFC,0x00,0xFB,0x1F,0x74,0x00,0xFB,0x00,0xF7,0x25,0x86,0x00,0xFA,0x00,0xB8,0x29,
+0x93,0x00,0xFA,0x00,0xA4,0x29,0xAB,0x00,0xF9,0x00,0x13,0x2B,0xCB,0x00,0xF9,0x00,
+0x37,0x30,0xE5,0x00,0xFD,0x00,0x0D,0x1F,0xDC,0xFF,0xFD,0x00,0x3D,0x1E,0xE7,0xFF,
+0xFD,0x00,0xD0,0x1C,0x02,0x00,0xFC,0x00,0xCD,0x1E,0x1B,0x00,0xFC,0x00,0x4B,0x22,
+0x29,0x00,0xFC,0x00,0x4F,0x25,0x33,0x00,0xFB,0x00,0x83,0x27,0x43,0x00,0xFA,0x00,
+0xE6,0x2C,0x4F,0x00,0xFA,0x00,0x48,0x30,0x57,0x00,0xFA,0x00,0x0E,0x31,0x62,0x00,
+0xF9,0x00,0x76,0x31,0x77,0x00,0xF9,0x00,0x65,0x36,0x87,0x00,0xF8,0x00,0xB3,0x38,
+0x94,0x00,0xF8,0x00,0x27,0x37,0xAC,0x00,0x05,0x03,0x03,0x04,0x04,0x00,0x11,0x00,
+0xC1,0x09,0xD9,0xFF,0x36,0x01,0x0E,0x00,0x1C,0x00,0xDD,0x03,0x03,0x00,0x40,0x00,
+0x14,0x00,0x4C,0x00,0x95,0x03,0x05,0x00,0x07,0x00,0x18,0x00,0xA5,0x00,0x4B,0x06,
+0x9B,0xFF,0x03,0x00,0x19,0x00,0xC8,0x00,0x14,0x03,0x3B,0x00,0x00,0x00,0x1A,0x00,
+0x16,0x00,0x40,0x05,0xE4,0xFF,0xA2,0x00,0x14,0x00,0x3B,0x00,0x67,0x04,0xF0,0xFF,
+0x3B,0x00,0x1A,0x00,0x6F,0x00,0x22,0x04,0xF8,0xFF,0x03,0x00,0x20,0x00,0x1C,0x00,
+0x48,0x05,0xDB,0xFF,0x98,0x00,0x16,0x00,0x57,0x00,0x90,0x04,0xEC,0xFF,0x19,0x00,
+0x21,0x00,0x95,0x00,0x08,0x04,0xFE,0xFF,0x02,0x00,0x24,0x00,0x23,0x00,0xC4,0x05,
+0xCC,0xFF,0xA6,0x00,0x17,0x00,0x62,0x00,0x9C,0x04,0xEC,0xFF,0x17,0x00,0x25,0x00,
+0xA0,0x00,0x0E,0x04,0xFB,0xFF,0x02,0x00,0x28,0x00,0x0D,0x01,0x7D,0x04,0xE1,0xFF,
+0xFC,0xFF,0x2A,0x00,0x33,0x00,0x30,0x07,0xA2,0xFF,0xD3,0x00,0x18,0x00,0x6F,0x00,
+0xAD,0x04,0xED,0xFF,0x23,0x00,0x2B,0x00,0x9C,0x00,0x14,0x03,0x27,0x00,0x03,0x00,
+0x2F,0x00,0xE1,0x00,0x53,0x05,0xAB,0xFF,0x02,0x00,0x30,0x00,0x35,0x51,0x00,0x00,
+0x35,0x51,0x00,0x00,0x4A,0x51,0x00,0x00,0x4A,0x51,0x00,0x00,0xC8,0x53,0x00,0x00,
+0xC8,0x53,0x00,0x00,0xC8,0x53,0x00,0x00,0xD0,0x51,0x00,0x00,0xA0,0x52,0x00,0x00,
+0x25,0x52,0x00,0x00,0x09,0x54,0x00,0x00,0x09,0x54,0x00,0x00,0x91,0x55,0x00,0x00,
+0x91,0x55,0x00,0x00,0x91,0x55,0x00,0x00,0x91,0x55,0x00,0x00,0x91,0x55,0x00,0x00,
+0xB8,0x54,0x00,0x00,0x5C,0x55,0x00,0x00,0x11,0x55,0x00,0x00,0xDF,0x55,0x00,0x00,
+0xDF,0x55,0x00,0x00,0x2C,0x56,0x00,0x00,0x54,0x56,0x00,0x00,0x67,0x56,0x00,0x00,
+0xA4,0x56,0x00,0x00,0x80,0x56,0x00,0x00,0x0D,0x5A,0x00,0x00,0x2C,0x5A,0x00,0x00,
+0x85,0x5A,0x00,0x00,0xB3,0x5A,0x00,0x00,0xDF,0x5A,0x00,0x00,0xDF,0x5A,0x00,0x00,
+0xF1,0x5A,0x00,0x00,0xDF,0x5A,0x00,0x00,0x9B,0x5A,0x00,0x00,0x9B,0x5A,0x00,0x00,
+0xDF,0x5A,0x00,0x00,0xDF,0x5A,0x00,0x00,0xF1,0x5A,0x00,0x00,0xF1,0x5A,0x00,0x00,
+0xF1,0x5A,0x00,0x00,0xD3,0x5A,0x00,0x00,0xD9,0x5A,0x00,0x00,0x0A,0x0B,0x2C,0x1B,
+0x09,0x07,0x1C,0x1A,0x25,0x05,0x1D,0x19,0x26,0x00,0x1E,0x18,0x27,0x04,0x1F,0x17,
+0x28,0x06,0x20,0x0D,0x29,0x08,0x2B,0x0C,0x2A,0x00,0x00,0x00,0x15,0x67,0x00,0x00,
+0x15,0x67,0x00,0x00,0x46,0x67,0x00,0x00,0x46,0x67,0x00,0x00,0x78,0x67,0x00,0x00,
+0x78,0x67,0x00,0x00,0x78,0x67,0x00,0x00,0x78,0x67,0x00,0x00,0xF7,0x66,0x00,0x00,
+0xD9,0x66,0x00,0x00,0xD9,0x67,0x00,0x00,0xD9,0x67,0x00,0x00,0x0C,0x68,0x00,0x00,
+0x0C,0x68,0x00,0x00,0x41,0x68,0x00,0x00,0x41,0x68,0x00,0x00,0x41,0x68,0x00,0x00,
+0x41,0x68,0x00,0x00,0xB2,0x67,0x00,0x00,0xA0,0x67,0x00,0x00,0xE4,0x68,0x00,0x00,
+0xE4,0x68,0x00,0x00,0x38,0x69,0x00,0x00,0x38,0x69,0x00,0x00,0xAB,0x6A,0x00,0x00,
+0xAB,0x6A,0x00,0x00,0xAB,0x6A,0x00,0x00,0xAB,0x6A,0x00,0x00,0x93,0x69,0x00,0x00,
+0xD9,0x69,0x00,0x00,0x1F,0x6A,0x00,0x00,0x67,0x6A,0x00,0x00,0xB4,0x77,0x00,0x00,
+0xB4,0x77,0x00,0x00,0xEF,0x77,0x00,0x00,0xEF,0x77,0x00,0x00,0xDE,0x78,0x00,0x00,
+0xDE,0x78,0x00,0x00,0xDE,0x78,0x00,0x00,0xDE,0x78,0x00,0x00,0x2C,0x78,0x00,0x00,
+0x51,0x78,0x00,0x00,0x82,0x78,0x00,0x00,0xB2,0x78,0x00,0x00,0xF1,0x82,0x00,0x00,
+0x16,0x83,0x00,0x00,0x76,0x83,0x00,0x00,0xDD,0x83,0x00,0x00,0x6E,0x84,0x00,0x00,
+0x9E,0x84,0x00,0x00,0x33,0x85,0x00,0x00,0xA6,0x84,0x00,0x00,0x04,0x00,0x1D,0x00,
+0x2E,0x00,0x50,0x00,0x82,0x00,0xC7,0x00,0x23,0x01,0x9B,0x01,0x32,0x02,0xEE,0x02,
+0xD0,0x03,0xDE,0x04,0x19,0x06,0x82,0x07,0x1A,0x09,0xE0,0x0A,0xD0,0x0C,0xE7,0x0E,
+0x1F,0x11,0x71,0x13,0xD3,0x15,0x3D,0x18,0xA2,0x1A,0xF9,0x1C,0x34,0x1F,0x47,0x21,
+0x28,0x23,0xCB,0x24,0x27,0x26,0x33,0x27,0xEA,0x27,0x46,0x28,0x04,0x00,0x1C,0x00,
+0x2B,0x00,0x4B,0x00,0x78,0x00,0xB7,0x00,0x0A,0x01,0x75,0x01,0xFC,0x01,0xA3,0x02,
+0x6D,0x03,0x5E,0x04,0x76,0x05,0xB9,0x06,0x26,0x08,0xBE,0x09,0x7D,0x0B,0x61,0x0D,
+0x67,0x0F,0x87,0x11,0xBB,0x13,0xFC,0x15,0x3F,0x18,0x7B,0x1A,0xA6,0x1C,0xB6,0x1E,
+0x9F,0x20,0x57,0x22,0xD7,0x23,0x14,0x25,0x08,0x26,0xAF,0x26,0x03,0x27,0x05,0x00,
+0x08,0x21,0x05,0x00,0x00,0x20,0x00,0x00,0x94,0xBC,0x00,0xC0,0xA4,0xBC,0x00,0xC0,
+0xB6,0xBC,0x00,0xC0,0xBA,0xBC,0x00,0xC0,0x2C,0xBC,0x00,0xC0,0x74,0xBC,0x00,0xC0,
+0xD4,0xBC,0x00,0xC0,0xF2,0xBC,0x00,0xC0,0xF6,0xBC,0x00,0xC0,0x1C,0xBD,0x00,0xC0,
+0xAA,0xBD,0x00,0xC0,0xEC,0xBD,0x00,0xC0,0x4E,0xBB,0x00,0xC0,0x52,0xBB,0x00,0xC0,
+0x28,0xBC,0x00,0xC0,0x70,0xBC,0x00,0xC0,0x05,0x00,0x2A,0x00,0x2A,0x00,0x3E,0x00,
+0x58,0x00,0x79,0x00,0xA1,0x00,0xD3,0x00,0x0F,0x01,0x56,0x01,0xAA,0x01,0x0C,0x02,
+0x7D,0x02,0xFE,0x02,0x91,0x03,0x37,0x04,0xF0,0x04,0xBE,0x05,0xA0,0x06,0x99,0x07,
+0xA7,0x08,0xCC,0x09,0x06,0x0B,0x56,0x0C,0xBB,0x0D,0x34,0x0F,0xC0,0x10,0x5D,0x12,
+0x0A,0x14,0xC5,0x15,0x8A,0x17,0x59,0x19,0x2D,0x1B,0x05,0x1D,0xDC,0x1E,0xB0,0x20,
+0x7D,0x22,0x40,0x24,0xF5,0x25,0x98,0x27,0x27,0x29,0x9E,0x2A,0xF9,0x2B,0x37,0x2D,
+0x53,0x2E,0x4B,0x2F,0x1E,0x30,0xC9,0x30,0x4A,0x31,0xA1,0x31,0xCD,0x31,0x04,0x00,
+0x2D,0x00,0x6D,0x00,0xE7,0x00,0xAD,0x01,0xD8,0x02,0x81,0x04,0xBE,0x06,0xA0,0x09,
+0x30,0x0D,0x6D,0x11,0x47,0x16,0xA3,0x1B,0x56,0x21,0x29,0x27,0xDC,0x2C,0x2A,0x32,
+0xCF,0x36,0x8B,0x3A,0x29,0x3D,0x81,0x3E,0x06,0x00,0xF5,0x28,0x03,0x00,0x33,0x33,
+0x78,0xBC,0x00,0xC0,0x8E,0xBC,0x00,0xC0,0x20,0xBD,0x00,0xC0,0xAE,0xBD,0x00,0xC0,
+0x98,0xBC,0x00,0xC0,0xA8,0xBC,0x00,0xC0,0x7C,0xBC,0x00,0xC0,0xBE,0xBC,0x00,0xC0,
+0xD8,0xBC,0x00,0xC0,0xFA,0xBC,0x00,0xC0,0xFE,0xBB,0x00,0xC0,0xB8,0xBD,0x00,0xC0,
+0xCC,0xBA,0x00,0xC0,0x0C,0xBB,0x00,0xC0,0x98,0xBB,0x00,0xC0,0x28,0xBD,0x00,0xC0,
+0x06,0x00,0x00,0x20,0x03,0x00,0xAA,0x2A,0x00,0x00,0x00,0x20,0x02,0x00,0x45,0x00,
+0x5D,0x01,0x1B,0x04,0x31,0x09,0xA2,0x10,0x55,0x19,0x32,0x21,0xE5,0x25,0x01,0x00,
+0x10,0x10,0xEF,0x2F,0x00,0x00,0x00,0x20,0x02,0x00,0x49,0x01,0x6C,0x07,0xB1,0x15,
+0x60,0x29,0x38,0x38,0x01,0x00,0x00,0x20,0x02,0x00,0xAC,0x00,0xCB,0x03,0x95,0x0B,
+0x6B,0x18,0xE0,0x26,0xA6,0x30,0x02,0x00,0xAA,0x2A,0x02,0x00,0x00,0x20,0x03,0x00,
+0x4D,0x00,0x51,0x01,0xBD,0x03,0x48,0x08,0x6B,0x0F,0x0D,0x19,0x47,0x24,0x73,0x2F,
+0x86,0x38,0x9F,0x3D,0x03,0x00,0x00,0x20,0x03,0x00,0x33,0x00,0xC4,0x00,0x08,0x02,
+0x5B,0x04,0x11,0x08,0x55,0x0D,0x0D,0x14,0xCC,0x1B,0xCF,0x23,0x1E,0x2B,0xB5,0x30,
+0xBD,0x33,0x04,0x00,0x33,0x33,0x04,0x00,0xAA,0x2A,0x03,0x00,0x1F,0x00,0x5B,0x00,
+0xD6,0x00,0xAB,0x01,0xF6,0x02,0xD5,0x04,0x59,0x07,0x87,0x0A,0x52,0x0E,0x96,0x12,
+0x1C,0x17,0x9B,0x1B,0xC0,0x1F,0x37,0x23,0xB6,0x25,0x05,0x27,0x04,0x00,0x00,0x20,
+0x01,0x00,0x65,0x04,0x5D,0x14,0x3D,0x27,0x05,0x00,0x26,0x00,0x1D,0x00,0x28,0x00,
+0x36,0x00,0x47,0x00,0x5A,0x00,0x72,0x00,0x8D,0x00,0xAE,0x00,0xD3,0x00,0xFD,0x00,
+0x2D,0x01,0x64,0x01,0xA2,0x01,0xE6,0x01,0x33,0x02,0x87,0x02,0xE5,0x02,0x4B,0x03,
+0xBA,0x03,0x33,0x04,0xB6,0x04,0x43,0x05,0xDB,0x05,0x7C,0x06,0x29,0x07,0xDF,0x07,
+0xA1,0x08,0x6C,0x09,0x41,0x0A,0x21,0x0B,0x09,0x0C,0xFA,0x0C,0xF4,0x0D,0xF5,0x0E,
+0xFE,0x0F,0x0C,0x11,0x20,0x12,0x38,0x13,0x53,0x14,0x71,0x15,0x90,0x16,0xAF,0x17,
+0xCD,0x18,0xE8,0x19,0x00,0x1B,0x12,0x1C,0x1E,0x1D,0x23,0x1E,0x1F,0x1F,0x10,0x20,
+0xF7,0x20,0xD0,0x21,0x9C,0x22,0x59,0x23,0x07,0x24,0xA3,0x24,0x2E,0x25,0xA7,0x25,
+0x0C,0x26,0x5E,0x26,0x9C,0x26,0xC6,0x26,0xDA,0x26,0x05,0x00,0x33,0x33,0x01,0x00,
+0x7E,0x01,0x41,0x08,0x4A,0x15,0xF4,0x20,0x04,0x00,0x23,0x00,0x45,0x00,0x84,0x00,
+0xE4,0x00,0x6F,0x01,0x2F,0x02,0x2F,0x03,0x76,0x04,0x0F,0x06,0xFD,0x07,0x45,0x0A,
+0xE6,0x0C,0xDA,0x0F,0x19,0x13,0x93,0x16,0x37,0x1A,0xEF,0x1D,0xA0,0x21,0x2F,0x25,
+0x80,0x28,0x77,0x2B,0xFA,0x2D,0xF2,0x2F,0x4D,0x31,0xFD,0x31,0x05,0x00,0xF5,0x28,
+0xEA,0x95,0x00,0x00,0x06,0x96,0x00,0x00,0x25,0x96,0x00,0x00,0x44,0x96,0x00,0x00,
+0x53,0x96,0x00,0x00,0x44,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x02,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x24,0xB1,0x5A,0x07,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x02,0x00,0x08,0x00,
+0x00,0x00,0x56,0x30,0x31,0x2E,0x30,0x30,0x37,0x2E,0x30,0x34,0x4C,0xFF,0xB2,0x89
+};
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_common.c b/drivers/input/touchscreen/msg2233/mstar_drv_common.c new file mode 100644 index 00000000..bb47994c --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_common.c @@ -0,0 +1,155 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_common.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include "mstar_drv_common.h"
+
+/*=============================================================*/
+// MACRO DEFINITION
+/*=============================================================*/
+
+/*=============================================================*/
+// CONSTANT VALUE DEFINITION
+/*=============================================================*/
+
+
+/*=============================================================*/
+// LOCAL VARIABLE DEFINITION
+/*=============================================================*/
+
+static u32 _gCrc32Table[256];
+
+/*=============================================================*/
+// DATA TYPE DEFINITION
+/*=============================================================*/
+
+/*=============================================================*/
+// GLOBAL FUNCTION DEFINITION
+/*=============================================================*/
+
+/// CRC
+u32 DrvCommonCrcDoReflect(u32 nRef, s8 nCh)
+{
+ u32 nValue = 0;
+ u32 i = 0;
+
+ for (i = 1; i < (nCh + 1); i ++)
+ {
+ if (nRef & 1)
+ {
+ nValue |= 1 << (nCh - i);
+ }
+ nRef >>= 1;
+ }
+
+ return nValue;
+}
+
+u32 DrvCommonCrcGetValue(u32 nText, u32 nPrevCRC)
+{
+ u32 nCRC = nPrevCRC;
+
+ nCRC = (nCRC >> 8) ^ _gCrc32Table[(nCRC & 0xFF) ^ nText];
+
+ return nCRC;
+}
+
+void DrvCommonCrcInitTable(void)
+{
+ u32 nMagicNumber = 0x04c11db7;
+ u32 i, j;
+
+ for (i = 0; i <= 0xFF; i ++)
+ {
+ _gCrc32Table[i] = DrvCommonCrcDoReflect(i, 8) << 24;
+ for (j = 0; j < 8; j ++)
+ {
+ _gCrc32Table[i] = (_gCrc32Table[i] << 1) ^ (_gCrc32Table[i] & (0x80000000L) ? nMagicNumber : 0);
+ }
+ _gCrc32Table[i] = DrvCommonCrcDoReflect(_gCrc32Table[i], 32);
+ }
+}
+
+u8 DrvCommonCalculateCheckSum(u8 *pMsg, u32 nLength)
+{
+ s32 nCheckSum = 0;
+ u32 i;
+
+ for (i = 0; i < nLength; i ++)
+ {
+ nCheckSum += pMsg[i];
+ }
+
+ return (u8)((-nCheckSum) & 0xFF);
+}
+
+u32 DrvCommonConvertCharToHexDigit(char *pCh, u32 nLength)
+{
+ u32 nRetVal = 0;
+ u32 i;
+
+ DBG("nLength = %d\n", nLength);
+
+ for (i = 0; i < nLength; i ++)
+ {
+ char ch = *pCh++;
+ u32 n = 0;
+ u8 nIsValidDigit = 0;
+
+ if ((i == 0 && ch == '0') || (i == 1 && ch == 'x'))
+ {
+ continue;
+ }
+
+ if ('0' <= ch && ch <= '9')
+ {
+ n = ch-'0';
+ nIsValidDigit = 1;
+ }
+ else if ('a' <= ch && ch <= 'f')
+ {
+ n = 10 + ch-'a';
+ nIsValidDigit = 1;
+ }
+ else if ('A' <= ch && ch <= 'F')
+ {
+ n = 10 + ch-'A';
+ nIsValidDigit = 1;
+ }
+
+ if (1 == nIsValidDigit)
+ {
+ nRetVal = n + nRetVal*16;
+ }
+ }
+
+ return nRetVal;
+}
+
+//------------------------------------------------------------------------------//
\ No newline at end of file diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_common.h b/drivers/input/touchscreen/msg2233/mstar_drv_common.h new file mode 100644 index 00000000..ef0dd022 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_common.h @@ -0,0 +1,548 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_common.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_COMMON_H__
+#define __MSTAR_DRV_COMMON_H__
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/types.h>
+#include <linux/input.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/gpio.h>
+#include <linux/earlysuspend.h>
+#include <linux/i2c.h>
+#include <linux/proc_fs.h>
+#include <linux/file.h>
+#include <linux/fs.h>
+#include <linux/string.h>
+#include <linux/miscdevice.h>
+#include <linux/time.h>
+#include <asm/unistd.h>
+#include <asm/uaccess.h>
+#include <asm/irq.h>
+#include <asm/io.h>
+
+/*--------------------------------------------------------------------------*/
+/* TOUCH DEVICE DRIVER RELEASE VERSION */
+/*--------------------------------------------------------------------------*/
+
+#define DEVICE_DRIVER_RELEASE_VERSION ("3.2.0.0")
+
+#define CONFIG_ENABLE_UPDATE_FIRMWARE_WITH_SUPPORT_I2C_SPEED_400K
+
+
+/*--------------------------------------------------------------------------*/
+/* COMPILE OPTION DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+/*
+ * Note.
+ * The below compile option is used to enable the specific device driver code handling for distinct smart phone developer platform.
+ * For running on Spreadtrum platform, please define the compile option CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM.
+ * For running on Qualcomm platform, please define the compile option CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM.
+ * For running on MediaTek platform, please define the compile option CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM.
+ */
+#define CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM
+//#define CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM
+//#define CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+/*
+ * Note.
+ * The below compile option is used to enable the specific device driver code handling for mutual-capacitive ic or self-capacitive ic.
+ * For a mutual-capacitive ic project(MSG26xxM/MSG28xx), please define the compile option CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC.
+ * For a self-capacitive ic project(MSG21xxA/MSG22xx), please define the compile option CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC.
+ */
+//#define CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+#define CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC
+
+
+/*
+ * Note.
+ * The below compile option is used to enable the specific device driver code handling to make sure main board can supply power to touch ic for some specific BB chip of MTK(EX. MT6582)/SPRD(EX. SC7715)/QCOM(EX. MSM8610).
+ * By default, this compile option is disabled.
+ */
+#define CONFIG_ENABLE_REGULATOR_POWER_ON
+
+/*
+ * Note.
+ * The below compile option is used to distinguish different workqueue scheduling mechanism when firmware report finger touch to device driver by IRQ interrupt.
+ * For MTK platform, there are two type of workqueue scheduling mechanism available.
+ * Please refer to the related code which is enclosed by compile option CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM in mstar_drv_platform_porting_layer.c for more detail.
+ * This compile option is used for MTK platform only.
+ * By default, this compile option is disabled.
+ */
+
+//#define CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM
+
+/*
+ * Note.
+ * The below compile option is used to apply DMA mode for read/write data between device driver and firmware by I2C.
+ * The DMA mode is used to reslove I2C read/write 8 bytes limitation for specific MTK BB chip(EX. MT6589/MT6572/...)
+ * This compile option is used for MTK platform only.
+ * By default, this compile option is disabled.
+ */
+#define CONFIG_ENABLE_DMA_IIC
+
+
+/*
+ * Note.
+ * The below compile option is used to enable the specific device driver code handling when touch panel support virtual key(EX. Menu, Home, Back, Search).
+ * If this compile option is not defined, the function for virtual key handling will be disabled.
+ * By default, this compile option is enabled.
+ */
+#define CONFIG_TP_HAVE_KEY
+
+/*
+ * Note.
+ * Since specific MTK BB chip report virtual key touch by using coordinate instead of key code, the below compile option is used to enable the code handling for reporting key with coordinate.
+ * This compile option is used for MTK platform only.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+
+/*
+ * Note.
+ * The below flag is used to enable debug mode data log for firmware.
+ * Please make sure firmware support debug mode data log firstly, then you can enable this flag.
+ * By default, this flag is enabled.
+ */
+#define CONFIG_ENABLE_FIRMWARE_DATA_LOG (0) // 1 : Enable, 0 : Disable
+
+/*
+ * Note.
+ * The below compile option is used to enable segment read debug mode finger touch data for MSG26XXM/MSG28XX only.
+ * Since I2C transaction length limitation for some specific MTK BB chip(EX. MT6589/MT6572/...) or QCOM BB chip, the debug mode finger touch data of MSG26XXM/MSG28XX can not be retrieved by one time I2C read operation.
+ * So we need to retrieve the complete finger touch data by segment read.
+ * By default, this compile option is enabled.
+ */
+#define CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+/*
+ * Note.
+ * The below compile option is used to enable gesture wakeup.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_ENABLE_GESTURE_WAKEUP
+
+// ------------------- #ifdef CONFIG_ENABLE_GESTURE_WAKEUP ------------------- //
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+/*
+ * Note.
+ * The below compile option is used to enable device driver to support at most 64 types of gesture wakeup mode.
+ * If the below compile option is not enabled, device driver can only support at most 16 types of gesture wakeup mode.
+ * By the way, 64 types of gesture wakeup mode is ready for MSG22XX/MSG28XX only.
+ * But, 64 types of gesture wakeup mode for MSG21XXA/MSG26XXM is not supported.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+
+/*
+ * Note.
+ * The below compile option is used to enable gesture debug mode.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+/*
+ * Note.
+ * The below compile option is used to enable gesture information mode.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+// ------------------- #endif CONFIG_ENABLE_GESTURE_WAKEUP ------------------- //
+
+
+/*
+ * Note.
+ * The below compile option is used to enable phone level MP test handling.
+ * By the way, phone level MP test is ready for MSG21XXA/MSG22XX/MSG26XXM.
+ * But, phone level MP test for MSG28XX is not ready yet.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_ENABLE_ITO_MP_TEST
+
+// ------------------- #ifdef CONFIG_ENABLE_ITO_MP_TEST ------------------- //
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+
+/*
+ * Note.
+ * The below compile option is used to enable the specific short test item of 2R triangle pattern for self-capacitive touch ic.
+ * This compile option is used for MSG21XXA/MSG22XX only.
+ * Please enable the compile option if the ITO pattern is 2R triangle pattern for MSG21XXA/MSG22XX.
+ * Please disable the compile option if the ITO pattern is H(horizontal) triangle pattern for MSG21XXA/MSG22XX.
+ * By default, this compile option is enabled.
+ */
+#define CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+// ------------------- #endif CONFIG_ENABLE_ITO_MP_TEST ------------------- //
+
+
+/*
+ * Note.
+ * If this compile option is not defined, the SW ID mechanism for updating firmware will be disabled.
+ * By default, this compile option is disabled.
+ */
+#define CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+// ------------------- #ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID ------------------- //
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+/*
+ * Note.
+ * If this compile option is defined, the update firmware bin file shall be stored in a two dimensional array format.
+ * Else, the update firmware bin file shall be stored in an one dimensional array format.
+ * Be careful, MSG22XX only support storing update firmware bin file in an one dimensional array format, it does not support two dimensional array format.
+ * By default, this compile option is enabled.
+ */
+//#define CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY
+
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+// ------------------- #endif CONFIG_UPDATE_FIRMWARE_BY_SW_ID ------------------- //
+
+/*
+ * Note.
+ * The below compile option is used to enable hotknot and only supports MSG28XX.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_ENABLE_HOTKNOT
+
+
+/*
+ * Note.
+ * The below compile option is used to enable proximity detection.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_ENABLE_PROXIMITY_DETECTION
+
+/*
+ * Note.
+ * The below compile option is used to enable notifier feedback handling for QCOM platform.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_ENABLE_NOTIFIER_FB
+
+
+/*
+ * Note.
+ * The below compile option is used to enable report rate calculation.
+ * By default, this compile option is enabled.
+ */
+#define CONFIG_ENABLE_COUNT_REPORT_RATE
+
+
+/*
+ * Note.
+ * The below compile option is used to enable glove mode and only supports MSG28XX.
+ * By default, this compile option is disabled.
+ */
+//#define CONFIG_ENABLE_GLOVE_MODE
+
+
+/*
+ * Note.
+ * The below compile option is used to enable jni interface.
+ * By default, this compile option is enabled.
+ */
+#define CONFIG_ENABLE_JNI_INTERFACE
+
+
+/*
+ * Note.
+ * The below compile option is used to enable the debug code for clarifying some issues. For example, to debug the delay time issue for IC hardware reset.
+ * By the way, this feature is supported for MSG28XX only.
+ * By default, this compile option is disabled.
+ */
+#define CONFIG_ENABLE_CODE_FOR_DEBUG
+
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR CONSTANT DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+#define u8 unsigned char
+#define u16 unsigned short
+#define u32 unsigned int
+#define s8 signed char
+#define s16 signed short
+#define s32 signed int
+#define s64 int64_t
+#define u64 uint64_t
+
+
+#define CHIP_TYPE_MSG21XX (0x01) // EX. MSG2133
+#define CHIP_TYPE_MSG21XXA (0x02) // EX. MSG2133A/MSG2138A(Besides, use version to distinguish MSG2133A/MSG2138A, you may refer to _DrvFwCtrlUpdateFirmwareCash())
+#define CHIP_TYPE_MSG26XXM (0x03) // EX. MSG2633M
+#define CHIP_TYPE_MSG22XX (0x7A) // EX. MSG2238/MSG2256
+#define CHIP_TYPE_MSG28XX (0x85) // EX. MSG2856
+
+#define PACKET_TYPE_TOOTH_PATTERN (0x20)
+#define PACKET_TYPE_GESTURE_WAKEUP (0x50)
+#define PACKET_TYPE_GESTURE_DEBUG (0x51)
+#define PACKET_TYPE_GESTURE_INFORMATION (0x52)
+
+#define TOUCH_SCREEN_X_MIN (0)
+#define TOUCH_SCREEN_Y_MIN (0)
+/*
+ * Note.
+ * Please change the below touch screen resolution according to the touch panel that you are using.
+ */
+//#define TOUCH_SCREEN_X_MAX (480) //LCD_WIDTH
+//#define TOUCH_SCREEN_Y_MAX (800) //LCD_HEIGHT
+/*
+ * Note.
+ * Please do not change the below setting.
+ */
+#define TPD_WIDTH (2048)
+#define TPD_HEIGHT (2048)
+
+
+#define BIT0 (1<<0) // 0x0001
+#define BIT1 (1<<1) // 0x0002
+#define BIT2 (1<<2) // 0x0004
+#define BIT3 (1<<3) // 0x0008
+#define BIT4 (1<<4) // 0x0010
+#define BIT5 (1<<5) // 0x0020
+#define BIT6 (1<<6) // 0x0040
+#define BIT7 (1<<7) // 0x0080
+#define BIT8 (1<<8) // 0x0100
+#define BIT9 (1<<9) // 0x0200
+#define BIT10 (1<<10) // 0x0400
+#define BIT11 (1<<11) // 0x0800
+#define BIT12 (1<<12) // 0x1000
+#define BIT13 (1<<13) // 0x2000
+#define BIT14 (1<<14) // 0x4000
+#define BIT15 (1<<15) // 0x8000
+
+
+#define MAX_DEBUG_REGISTER_NUM (10)
+#define MAX_DEBUG_COMMAND_ARGUMENT_NUM (4)
+
+#define MAX_UPDATE_FIRMWARE_BUFFER_SIZE (130) // 130KB. The size shall be large enough for stored any kind firmware size of MSG21XXA(33KB)/MSG22XX(48.5KB)/MSG26XXM(40KB)/MSG28XX(130KB).
+
+#define MAX_I2C_TRANSACTION_LENGTH_LIMIT (250) // Please change the value depends on the I2C transaction limitation for the platform that you are using.
+#define MAX_TOUCH_IC_REGISTER_BANK_SIZE (256) // It is a fixed value and shall not be modified.
+
+
+#define PROCFS_AUTHORITY (0666)
+
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#define GESTURE_WAKEUP_MODE_DOUBLE_CLICK_FLAG 0x00000001 //0000 0000 0000 0000 0000 0000 0000 0001
+#define GESTURE_WAKEUP_MODE_UP_DIRECT_FLAG 0x00000002 //0000 0000 0000 0000 0000 0000 0000 0010
+#define GESTURE_WAKEUP_MODE_DOWN_DIRECT_FLAG 0x00000004 //0000 0000 0000 0000 0000 0000 0000 0100
+#define GESTURE_WAKEUP_MODE_LEFT_DIRECT_FLAG 0x00000008 //0000 0000 0000 0000 0000 0000 0000 1000
+#define GESTURE_WAKEUP_MODE_RIGHT_DIRECT_FLAG 0x00000010 //0000 0000 0000 0000 0000 0000 0001 0000
+#define GESTURE_WAKEUP_MODE_m_CHARACTER_FLAG 0x00000020 //0000 0000 0000 0000 0000 0000 0010 0000
+#define GESTURE_WAKEUP_MODE_W_CHARACTER_FLAG 0x00000040 //0000 0000 0000 0000 0000 0000 0100 0000
+#define GESTURE_WAKEUP_MODE_C_CHARACTER_FLAG 0x00000080 //0000 0000 0000 0000 0000 0000 1000 0000
+#define GESTURE_WAKEUP_MODE_e_CHARACTER_FLAG 0x00000100 //0000 0000 0000 0000 0000 0001 0000 0000
+#define GESTURE_WAKEUP_MODE_V_CHARACTER_FLAG 0x00000200 //0000 0000 0000 0000 0000 0010 0000 0000
+#define GESTURE_WAKEUP_MODE_O_CHARACTER_FLAG 0x00000400 //0000 0000 0000 0000 0000 0100 0000 0000
+#define GESTURE_WAKEUP_MODE_S_CHARACTER_FLAG 0x00000800 //0000 0000 0000 0000 0000 1000 0000 0000
+#define GESTURE_WAKEUP_MODE_Z_CHARACTER_FLAG 0x00001000 //0000 0000 0000 0000 0001 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE1_FLAG 0x00002000 //0000 0000 0000 0000 0010 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE2_FLAG 0x00004000 //0000 0000 0000 0000 0100 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE3_FLAG 0x00008000 //0000 0000 0000 0000 1000 0000 0000 0000
+
+#ifdef CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+#define GESTURE_WAKEUP_MODE_RESERVE4_FLAG 0x00010000 //0000 0000 0000 0001 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE5_FLAG 0x00020000 //0000 0000 0000 0010 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE6_FLAG 0x00040000 //0000 0000 0000 0100 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE7_FLAG 0x00080000 //0000 0000 0000 1000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE8_FLAG 0x00100000 //0000 0000 0001 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE9_FLAG 0x00200000 //0000 0000 0010 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE10_FLAG 0x00400000 //0000 0000 0100 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE11_FLAG 0x00800000 //0000 0000 1000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE12_FLAG 0x01000000 //0000 0001 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE13_FLAG 0x02000000 //0000 0010 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE14_FLAG 0x04000000 //0000 0100 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE15_FLAG 0x08000000 //0000 1000 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE16_FLAG 0x10000000 //0001 0000 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE17_FLAG 0x20000000 //0010 0000 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE18_FLAG 0x40000000 //0100 0000 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE19_FLAG 0x80000000 //1000 0000 0000 0000 0000 0000 0000 0000
+
+#define GESTURE_WAKEUP_MODE_RESERVE20_FLAG 0x00000001 //0000 0000 0000 0000 0000 0000 0000 0001
+#define GESTURE_WAKEUP_MODE_RESERVE21_FLAG 0x00000002 //0000 0000 0000 0000 0000 0000 0000 0010
+#define GESTURE_WAKEUP_MODE_RESERVE22_FLAG 0x00000004 //0000 0000 0000 0000 0000 0000 0000 0100
+#define GESTURE_WAKEUP_MODE_RESERVE23_FLAG 0x00000008 //0000 0000 0000 0000 0000 0000 0000 1000
+#define GESTURE_WAKEUP_MODE_RESERVE24_FLAG 0x00000010 //0000 0000 0000 0000 0000 0000 0001 0000
+#define GESTURE_WAKEUP_MODE_RESERVE25_FLAG 0x00000020 //0000 0000 0000 0000 0000 0000 0010 0000
+#define GESTURE_WAKEUP_MODE_RESERVE26_FLAG 0x00000040 //0000 0000 0000 0000 0000 0000 0100 0000
+#define GESTURE_WAKEUP_MODE_RESERVE27_FLAG 0x00000080 //0000 0000 0000 0000 0000 0000 1000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE28_FLAG 0x00000100 //0000 0000 0000 0000 0000 0001 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE29_FLAG 0x00000200 //0000 0000 0000 0000 0000 0010 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE30_FLAG 0x00000400 //0000 0000 0000 0000 0000 0100 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE31_FLAG 0x00000800 //0000 0000 0000 0000 0000 1000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE32_FLAG 0x00001000 //0000 0000 0000 0000 0001 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE33_FLAG 0x00002000 //0000 0000 0000 0000 0010 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE34_FLAG 0x00004000 //0000 0000 0000 0000 0100 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE35_FLAG 0x00008000 //0000 0000 0000 0000 1000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE36_FLAG 0x00010000 //0000 0000 0000 0001 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE37_FLAG 0x00020000 //0000 0000 0000 0010 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE38_FLAG 0x00040000 //0000 0000 0000 0100 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE39_FLAG 0x00080000 //0000 0000 0000 1000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE40_FLAG 0x00100000 //0000 0000 0001 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE41_FLAG 0x00200000 //0000 0000 0010 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE42_FLAG 0x00400000 //0000 0000 0100 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE43_FLAG 0x00800000 //0000 0000 1000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE44_FLAG 0x01000000 //0000 0001 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE45_FLAG 0x02000000 //0000 0010 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE46_FLAG 0x04000000 //0000 0100 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE47_FLAG 0x08000000 //0000 1000 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE48_FLAG 0x10000000 //0001 0000 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE49_FLAG 0x20000000 //0010 0000 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE50_FLAG 0x40000000 //0100 0000 0000 0000 0000 0000 0000 0000
+#define GESTURE_WAKEUP_MODE_RESERVE51_FLAG 0x80000000 //1000 0000 0000 0000 0000 0000 0000 0000
+#endif //CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+
+#define GESTURE_WAKEUP_PACKET_LENGTH (6)
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+#define GESTURE_DEBUG_MODE_PACKET_LENGTH (128)
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#define GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH (128)
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#define FEATURE_GESTURE_WAKEUP_MODE 0x0001
+#define FEATURE_GESTURE_DEBUG_MODE 0x0002
+#define FEATURE_GESTURE_INFORMATION_MODE 0x0003
+
+#define FEATURE_TOUCH_DRIVER_DEBUG_LOG 0x0010
+#define FEATURE_FIRMWARE_DATA_LOG 0x0011
+
+/*
+ * Note.
+ * The below flag is used to enable the output log mechanism while touch device driver is running.
+ * If this flag is not defined, the function for output log will be disabled.
+ * By default, this flag is enabled.
+ */
+#define CONFIG_ENABLE_TOUCH_DRIVER_DEBUG_LOG (0) // 1 : Enable, 0 : Disable
+
+/*=============================================================*/
+// EXTERN VARIABLE DECLARATION
+/*=============================================================*/
+
+extern u8 IS_TOUCH_DRIVER_DEBUG_LOG_ENABLED;
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR MACRO DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+#define DBG(fmt, arg...) do {\
+ if (IS_TOUCH_DRIVER_DEBUG_LOG_ENABLED == 1)\
+ printk(fmt, ##arg);\
+ } while (0)
+
+
+struct msg2138_ts_platform_data{
+ int irq_gpio_number;
+ int reset_gpio_number;
+ const char *vdd_name;
+ int virtualkeys[12];
+ int TP_MAX_X;
+ int TP_MAX_Y;
+};
+extern struct i2c_client *g_I2cClient;
+extern int MS_TS_MSG_IC_GPIO_RST;
+extern int MS_TS_MSG_IC_GPIO_INT;
+extern int TOUCH_SCREEN_X_MAX;
+extern int TOUCH_SCREEN_Y_MAX;
+/*--------------------------------------------------------------------------*/
+/* DATA TYPE DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+typedef enum
+{
+ EMEM_ALL = 0,
+ EMEM_MAIN,
+ EMEM_INFO
+} EmemType_e;
+
+typedef enum
+{
+ ITO_TEST_MODE_OPEN_TEST = 1,
+ ITO_TEST_MODE_SHORT_TEST = 2,
+ ITO_TEST_MODE_WATERPROOF_TEST = 3
+} ItoTestMode_e;
+
+typedef enum
+{
+ ITO_TEST_OK = 0,
+ ITO_TEST_FAIL,
+ ITO_TEST_GET_TP_TYPE_ERROR,
+ ITO_TEST_UNDEFINED_ERROR,
+ ITO_TEST_UNDER_TESTING
+
+} ItoTestResult_e;
+
+typedef enum
+{
+ ADDRESS_MODE_8BIT = 0,
+ ADDRESS_MODE_16BIT = 1
+} AddressMode_e;
+
+typedef enum
+{
+ MUTUAL = 0,
+ SELF,
+ WATERPROOF,
+ MUTUAL_SINGLE_DRIVE
+} ItoTestFwMode_e;
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL VARIABLE DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL FUNCTION DECLARATION */
+/*--------------------------------------------------------------------------*/
+
+extern u8 DrvCommonCalculateCheckSum(u8 *pMsg, u32 nLength);
+extern u32 DrvCommonConvertCharToHexDigit(char *pCh, u32 nLength);
+extern u32 DrvCommonCrcDoReflect(u32 nRef, s8 nCh);
+extern u32 DrvCommonCrcGetValue(u32 nText, u32 nPrevCRC);
+extern void DrvCommonCrcInitTable(void);
+
+#endif /* __MSTAR_DRV_COMMON_H__ */
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_extern.h b/drivers/input/touchscreen/msg2233/mstar_drv_extern.h new file mode 100755 index 00000000..f184c144 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_extern.h @@ -0,0 +1,46 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_extern.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_EXTERN_H__
+#define __MSTAR_DRV_EXTERN_H__
+
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+//#include "mstar_drv_common.h"
+
+/*=============================================================*/
+// EXTERN FUNCTION DECLARATION
+/*=============================================================*/
+
+//#ifdef CONFIG_ENABLE_CHARGER_DETECTION
+extern void DrvFwCtrlChargerDetection(u8 nChargerStatus);
+//#endif //CONFIG_ENABLE_CHARGER_DETECTION
+
+
+#endif /* __MSTAR_DRV_EXTERN_H__ */
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_hotknot.c b/drivers/input/touchscreen/msg2233/mstar_drv_hotknot.c new file mode 100644 index 00000000..e33da4ee --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_hotknot.c @@ -0,0 +1,848 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2006-2012 MStar Semiconductor, Inc. +// All rights reserved. +// +// Unless otherwise stipulated in writing, any and all information contained +// herein regardless in any format shall remain the sole proprietary of +// MStar Semiconductor Inc. and be kept in strict confidence +// (??MStar Confidential Information??) by the recipient. +// Any unauthorized act including without limitation unauthorized disclosure, +// copying, use, reproduction, sale, distribution, modification, disassembling, +// reverse engineering and compiling of the contents of MStar Confidential +// Information is unlawful and strictly prohibited. MStar hereby reserves the +// rights to any and all damages, losses, costs and expenses resulting therefrom. +// +//////////////////////////////////////////////////////////////////////////////// + +/** + * + * @file mstar_drv_hotknot.c + * + * @brief This file defines the hotknot functions + * + * + */ + +//////////////////////////////////////////////////////////// +/// Included Files +//////////////////////////////////////////////////////////// +#include <linux/init.h> +#include <linux/module.h> +#include <linux/kthread.h> +#include <asm/uaccess.h> +#include "mstar_drv_hotknot.h" +#include "mstar_drv_utility_adaption.h" +#include "mstar_drv_hotknot_queue.h" +#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC) +#include "mstar_drv_mutual_fw_control.h" +#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC + +#ifdef CONFIG_ENABLE_HOTKNOT +//////////////////////////////////////////////////////////// +/// Data Types +//////////////////////////////////////////////////////////// + + +/*=============================================================*/ +// GLOBAL VARIABLE DEFINITION +/*=============================================================*/ +u8 g_HotKnotState; +struct mutex g_QMutex; //queue mutex + + + +/*=============================================================*/ +// EXTERN VARIABLE DECLARATION +/*=============================================================*/ +extern struct mutex g_Mutex; +extern struct i2c_client *g_I2cClient; + +extern u32 SLAVE_I2C_ID_DBBUS; +extern u32 SLAVE_I2C_ID_DWI2C; + +extern u16 FIRMWARE_MODE_UNKNOWN_MODE; +extern u16 FIRMWARE_MODE_DEMO_MODE; +extern u16 FIRMWARE_MODE_DEBUG_MODE; +//extern u16 FIRMWARE_MODE_RAW_DATA_MODE; + +extern u16 g_FirmwareMode; + +extern u8 IS_FIRMWARE_DATA_LOG_ENABLED; + +extern u8 g_IsHotknotEnabled; + + +//////////////////////////////////////////////////////////// +/// LOCAL VARIABLE DEFINITION +//////////////////////////////////////////////////////////// +DrvCmd_t * _gDrvCmdStack; +unsigned long _gArgStack; +u8 * _gHKPacket; +u16 _gHKLength; + +static int _gHKFlag = 0; +static DECLARE_WAIT_QUEUE_HEAD(_gHKWaiter); + +#ifdef CONFIG_ENABLE_HOTKNOT_RCV_BLOCKING +static int _gHKRcvFlag = 0; +static int _gHKRcvWaitEnable = 0; +static DECLARE_WAIT_QUEUE_HEAD(_gHKRcvWaiter); +#endif + +static DrvCmd_t * _gCmdIn; +static u8 * _gSndData; +static u8 * _gRcvData; +static u16 * _gFwMode; + + +//////////////////////////////////////////////////////////// +/// Macro +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Function Prototypes +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Function Implementation +//////////////////////////////////////////////////////////// + +u8 _GetCheckSum(u8 *pBuf, int nLen) +{ + s32 nSum = 0; + int i; + for(i=0; i < nLen; i++) + { + nSum += pBuf[i]; + } + return (u8)(-nSum&0xFF); +} + + +void _DebugShowArray(u8 *pBuf, u16 nLen) +{ + int i; + + for(i=0; i < nLen; i++) + { + DBG("%02X ", pBuf[i]); + + if(i%16==15){ + DBG("\n"); + } + } + DBG("\n"); +} + + +int PushHotKnotData(u8 * pBuf, u16 nLength) +{ + int nQRet; + mutex_lock(&g_QMutex); + nQRet = PushQueue(pBuf, nLength); + mutex_unlock(&g_QMutex); + + return nQRet; +} + + +int PopHotKnotData(u8 * pBuf, u16 nLength) +{ + int nQRet; + mutex_lock(&g_QMutex); + nQRet = PopQueue(pBuf, nLength); + mutex_unlock(&g_QMutex); + + return nQRet; +} + + +int ShowHotKnotData(u8 * pBuf, u16 nLength) +{ + int nQRet; + mutex_lock(&g_QMutex); + nQRet = ShowQueue(pBuf, nLength); + mutex_unlock(&g_QMutex); + + return nQRet; +} + + +void _HotKnotRcvInterruptHandler(u8 *pPacket, u16 nLength) //receive hotknot packet in interrupt +{ + u16 nPacketDataLen = 0; + u16 nQPushLen = 0; + + DBG("*** %s() ***\n", __func__); + + if(g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE) + { + nPacketDataLen = (((DemoHotKnotRcvRet_t*)pPacket)->nActualDataLen_H << 8) | (((DemoHotKnotRcvRet_t*)pPacket)->nActualDataLen_L & 0xFF); + nQPushLen = ((((DemoHotKnotRcvRet_t*)pPacket)->szData)[0]&0x7F) + 1; + if(nPacketDataLen >= nQPushLen) + { + if(PushHotKnotData(((DemoHotKnotRcvRet_t*)pPacket)->szData, nQPushLen)<0) + { + DBG("Error: HotKnot# Over push data into queue."); + } +#ifdef CONFIG_ENABLE_HOTKNOT_RCV_BLOCKING + else + { + if(_gHKRcvWaitEnable == 1) + { + _gHKRcvFlag = 1; + DBG("*** wait up receive_wait. ***\n"); + wake_up_interruptible(&_gHKRcvWaiter); + } + } +#endif //CONFIG_ENABLE_HOTKNOT_RCV_BLOCKING + } + else + { + DBG("Error: HotKnot# Receive data error."); + } + } + else if(IS_FIRMWARE_DATA_LOG_ENABLED && (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE)) + { + nPacketDataLen = (((DebugHotKnotRcvRet_t*)pPacket)->nActualDataLen_H << 8) | (((DebugHotKnotRcvRet_t*)pPacket)->nActualDataLen_L & 0xFF); + nQPushLen = ((((DemoHotKnotRcvRet_t*)pPacket)->szData)[0]&0x7F) + 1; + + if(nPacketDataLen >= nQPushLen) + { + if(PushHotKnotData(((DebugHotKnotRcvRet_t*)pPacket)->szData, nQPushLen)<0) + { + DBG("Error: HotKnot# Over push data into queue."); + } +#ifdef CONFIG_ENABLE_HOTKNOT_RCV_BLOCKING + else + { + if(_gHKRcvWaitEnable == 1) + { + _gHKRcvFlag = 1; + DBG("*** wait up receive_wait. ***\n"); + wake_up_interruptible(&_gHKRcvWaiter); + } + } +#endif //CONFIG_ENABLE_HOTKNOT_RCV_BLOCKING + } + else + { + DBG("Error: HotKnot# Receive data error."); + } + } +} + + +void ReportHotKnotCmd(u8 *pPacket, u16 nLength) +{ + //DBG("*** %s() ***\n", __func__); + + if(g_HotKnotState == HOTKNOT_TRANS_STATE && pPacket[0] == HOTKNOT_PACKET_ID && pPacket[3] == HOTKNOT_RECEIVE_PACKET_TYPE) + { + _HotKnotRcvInterruptHandler(pPacket, nLength); + } + else if(_gDrvCmdStack!=NULL && _gArgStack!=0) + { + _gHKPacket = pPacket; + _gHKLength = nLength; + + _gHKFlag = 1; + wake_up_interruptible(&_gHKWaiter); + } +} + + +void _HotKnotCmdInterruptHandler(u8 *pPacket, u16 nLength) +{ + //DBG("*** %s() ***\n", __func__); + + if(_gDrvCmdStack->nCmdId == HOTKNOT_CMD) + { + if(g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE) + { + HotKnotCmd_t *pSnd = (HotKnotCmd_t*)_gDrvCmdStack->pSndData; + DemoHotKnotCmdRet_t *pRcv = (DemoHotKnotCmdRet_t*)pPacket; + if(pRcv->nHeader == DEMO_PD_PACKET_ID && pSnd->nInstruction == pRcv->nInstruction) + { + if(pRcv->nResult == RESULT_OK) + { + if(pRcv->nInstruction == READ_PAIR_STATE) + { + g_HotKnotState = HOTKNOT_BEFORE_TRANS_STATE; + ClearQueue(); + } + else if(pRcv->nInstruction == ENTER_TRANSFER_MODE) + { + g_HotKnotState = HOTKNOT_TRANS_STATE; + } + else if(pRcv->nInstruction == EXIT_TRANSFER_MODE) + { + g_HotKnotState = HOTKNOT_AFTER_TRANS_STATE; + } + else if(pRcv->nInstruction == ENTER_SLAVE_MODE) + { + g_HotKnotState = HOTKNOT_NOT_TRANS_STATE; + } + + if(pRcv->nInstruction == ENABLE_HOTKNOT || pRcv->nInstruction == ENTER_MASTER_MODE || pRcv->nInstruction == ENTER_SLAVE_MODE) + { + g_IsHotknotEnabled = 1; + DBG("*** g_IsHotknotEnabled = %d ***\n", g_IsHotknotEnabled); + } + else if(pRcv->nInstruction == DISABLE_HOTKNOT) + { + g_IsHotknotEnabled = 0; + DBG("*** g_IsHotknotEnabled = %d ***\n", g_IsHotknotEnabled); + } + } + + memcpy(_gDrvCmdStack->pRcvData, pPacket, nLength); + //_gDrvCmdStack->nRcvLen = nLength; + *(_gDrvCmdStack->pFwMode) = FIRMWARE_MODE_DEMO_MODE; + } + } + else if(IS_FIRMWARE_DATA_LOG_ENABLED && (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE)) + { + HotKnotCmd_t *pSnd = (HotKnotCmd_t*)_gDrvCmdStack->pSndData; + DebugHotKnotCmdRet_t *pRcv = (DebugHotKnotCmdRet_t*)pPacket; + if(pRcv->nHeader == HOTKNOT_PACKET_ID && pSnd->nInstruction == pRcv->nInstruction) + { + if(pRcv->nResult == RESULT_OK) + { + if(pRcv->nInstruction == READ_PAIR_STATE) + { + g_HotKnotState = HOTKNOT_BEFORE_TRANS_STATE; + ClearQueue(); + } + else if(pRcv->nInstruction == ENTER_TRANSFER_MODE) + { + g_HotKnotState = HOTKNOT_TRANS_STATE; + } + else if(pRcv->nInstruction == EXIT_TRANSFER_MODE) + { + g_HotKnotState = HOTKNOT_AFTER_TRANS_STATE; + } + else if(pRcv->nInstruction == ENTER_SLAVE_MODE) + { + g_HotKnotState = HOTKNOT_NOT_TRANS_STATE; + } + + if(pRcv->nInstruction == ENABLE_HOTKNOT || pRcv->nInstruction == ENTER_MASTER_MODE || pRcv->nInstruction == ENTER_SLAVE_MODE) + { + g_IsHotknotEnabled = 1; + DBG("*** g_IsHotknotEnabled = %d ***\n", g_IsHotknotEnabled); + } + else if(pRcv->nInstruction == DISABLE_HOTKNOT) + { + g_IsHotknotEnabled = 0; + DBG("*** g_IsHotknotEnabled = %d ***\n", g_IsHotknotEnabled); + } + } + + memcpy(_gDrvCmdStack->pRcvData, pPacket, nLength); + //_gDrvCmdStack->nRcvLen = nLength; + *(_gDrvCmdStack->pFwMode) = FIRMWARE_MODE_DEBUG_MODE; + } + } + } + else if(_gDrvCmdStack->nCmdId == HOTKNOT_SEND) + { + if(g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE) + { + HotKnotSnd_t *pSnd = (HotKnotSnd_t*)_gDrvCmdStack->pSndData; + DemoHotKnotSndRet_t *pRcv = (DemoHotKnotSndRet_t*)pPacket; + if(pRcv->nHeader == HOTKNOT_PACKET_ID && pRcv->nType == HOTKNOT_PACKET_TYPE && pSnd->nInstruction == pRcv->nInstruction) + { + //kthread_stop(_gHotKnotTask); + memcpy(_gDrvCmdStack->pRcvData, pPacket, nLength); + //_gDrvCmdStack->nRcvLen = nLength; + *(_gDrvCmdStack->pFwMode) = FIRMWARE_MODE_DEMO_MODE; + } + } + else if(IS_FIRMWARE_DATA_LOG_ENABLED && (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE)) + { + HotKnotSnd_t *pSnd = (HotKnotSnd_t*)_gDrvCmdStack->pSndData; + DebugHotKnotSndRet_t *pRcv = (DebugHotKnotSndRet_t*)pPacket; + if(pRcv->nHeader == HOTKNOT_PACKET_ID && pRcv->nType == HOTKNOT_PACKET_TYPE && pSnd->nInstruction == pRcv->nInstruction) + { + //kthread_stop(_gHotKnotTask); + memcpy(_gDrvCmdStack->pRcvData, pPacket, nLength); + //_gDrvCmdStack->nRcvLen = nLength; + *(_gDrvCmdStack->pFwMode) = FIRMWARE_MODE_DEBUG_MODE; + } + } + } +} + + +void _HotKnotTimeOutHandler(void) +{ + DBG("*** %s() ***\n", __func__); + + //handle timeout case + if(_gDrvCmdStack->nCmdId == HOTKNOT_CMD) + { + if(g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE) + { + HotKnotSnd_t *pSnd = (HotKnotSnd_t*)_gDrvCmdStack->pSndData; + DemoHotKnotCmdRet_t *pRcv = (DemoHotKnotCmdRet_t*)_gDrvCmdStack->pRcvData; + memset(pRcv, 0xFF, DEMO_PD_PACKET_RET_LEN); + pRcv->nHeader = DEMO_PD_PACKET_ID; + pRcv->nInstruction = pSnd->nInstruction; + pRcv->nResult = RESULT_TIMEOUT; + pRcv->nIdentify = DEMO_PD_PACKET_IDENTIFY; + pRcv->nCheckSum = _GetCheckSum((u8*)pRcv, DEMO_PD_PACKET_RET_LEN-1); + //_gDrvCmdStack->nRcvLen = DEMO_PD_PACKET_RET_LEN; + *(_gDrvCmdStack->pFwMode) = FIRMWARE_MODE_DEMO_MODE; + } + else if(IS_FIRMWARE_DATA_LOG_ENABLED && (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE)) + { + HotKnotSnd_t *pSnd = (HotKnotSnd_t*)_gDrvCmdStack->pSndData; + DebugHotKnotCmdRet_t *pRcv = (DebugHotKnotCmdRet_t*)_gDrvCmdStack->pRcvData; + memset(_gDrvCmdStack->pRcvData, 0xFF, MAX_PD_PACKET_RET_LEN); + pRcv->nHeader = HOTKNOT_PACKET_ID; + pRcv->nPacketLen_H = MAX_PD_PACKET_RET_LEN>>8; + pRcv->nPacketLen_L = MAX_PD_PACKET_RET_LEN&0xFF; + pRcv->nType = HOTKNOT_PACKET_TYPE; + pRcv->nInstruction = pSnd->nInstruction; + pRcv->nResult = RESULT_TIMEOUT; + _gDrvCmdStack->pRcvData[MAX_PD_PACKET_RET_LEN-1] = _GetCheckSum((u8*)pRcv, MAX_PD_PACKET_RET_LEN-1); + //_gDrvCmdStack->nRcvLen = MAX_PD_PACKET_RET_LEN; + *(_gDrvCmdStack->pFwMode) = FIRMWARE_MODE_DEBUG_MODE; + } + } + else if(_gDrvCmdStack->nCmdId == HOTKNOT_SEND) + { + if(g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE) + { + HotKnotSnd_t *pSnd = (HotKnotSnd_t*)_gDrvCmdStack->pSndData; + DemoHotKnotSndRet_t *pRcv = (DemoHotKnotSndRet_t*)_gDrvCmdStack->pRcvData; + memset(_gDrvCmdStack->pRcvData, 0, DEMO_HOTKNOT_SEND_RET_LEN); + pRcv->nHeader = HOTKNOT_PACKET_ID; + pRcv->nPacketLen_H = DEMO_HOTKNOT_SEND_RET_LEN>>8; + pRcv->nPacketLen_L = DEMO_HOTKNOT_SEND_RET_LEN&0xFF; + pRcv->nType = HOTKNOT_PACKET_TYPE; + pRcv->nInstruction = pSnd->nInstruction; + pRcv->nResult = RESULT_TIMEOUT; + pRcv->nCheckSum = _GetCheckSum((u8*)pRcv, DEMO_HOTKNOT_SEND_RET_LEN-1); + //_gDrvCmdStack->nRcvLen = DEMO_HOTKNOT_SEND_RET_LEN; + *(_gDrvCmdStack->pFwMode) = FIRMWARE_MODE_DEMO_MODE; + } + else if(IS_FIRMWARE_DATA_LOG_ENABLED && (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE)) + { + HotKnotSnd_t *pSnd = (HotKnotSnd_t*)_gDrvCmdStack->pSndData; + DebugHotKnotSndRet_t *pRcv = (DebugHotKnotSndRet_t*)_gDrvCmdStack->pRcvData; + memset(_gDrvCmdStack->pRcvData, 0, DEBUG_HOTKNOT_SEND_RET_LEN); + pRcv->nHeader = HOTKNOT_PACKET_ID; + pRcv->nPacketLen_H = DEBUG_HOTKNOT_SEND_RET_LEN>>8; + pRcv->nPacketLen_L = DEBUG_HOTKNOT_SEND_RET_LEN&0xFF; + pRcv->nType = HOTKNOT_PACKET_TYPE; + pRcv->nInstruction = pSnd->nInstruction; + pRcv->nResult = RESULT_TIMEOUT; + pRcv->nCheckSum = _GetCheckSum((u8*)pRcv, DEBUG_HOTKNOT_SEND_RET_LEN-1); + //_gDrvCmdStack->nRcvLen = DEBUG_HOTKNOT_SEND_RET_LEN; + *(_gDrvCmdStack->pFwMode) = FIRMWARE_MODE_DEBUG_MODE; + } + } +} + + +int _DrvHandleHotKnotCmd(DrvCmd_t *pCmd, unsigned long nArg) +{ + long nRet; + + DBG("*** %s() ***\n", __func__); + + mutex_lock(&g_Mutex); +#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM +#ifdef CONFIG_ENABLE_DMA_IIC + DmaReset(); +#endif //CONFIG_ENABLE_DMA_IIC +#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM + + IicWriteData(SLAVE_I2C_ID_DWI2C, pCmd->pSndData, pCmd->nSndLen); //send HOTKNOT_CMD to fw + + mutex_unlock(&g_Mutex); + + + _gDrvCmdStack = pCmd; + _gArgStack = nArg; + + set_current_state(TASK_INTERRUPTIBLE); + nRet = wait_event_interruptible_timeout(_gHKWaiter, _gHKFlag != 0, pCmd->nTimeOut/1000 * HZ); + _gHKFlag = 0; + + if(nRet == 0) + { + _HotKnotTimeOutHandler(); + } + else + { + _HotKnotCmdInterruptHandler(_gHKPacket, _gHKLength); + } + + return 0; +} + + +void _DrvHandleHotKnotAuth(DrvCmd_t *pCmd) +{ + DBG("*** %s() ***\n", __func__); + + mutex_lock(&g_Mutex); +#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM +#ifdef CONFIG_ENABLE_DMA_IIC + DmaReset(); +#endif //CONFIG_ENABLE_DMA_IIC +#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM + + //for(i=0; i < pCmd->nSndLen; i++) + //{ + // DBG("%02X ", pCmd->pSndData[i]); + //} + + IicWriteData(SLAVE_I2C_ID_DWI2C, pCmd->pSndData, pCmd->nSndLen); + IicReadData(SLAVE_I2C_ID_DWI2C, pCmd->pRcvData, pCmd->nRcvLen); + + //for(i=0; i < pCmd->nRcvLen; i++) + //{ + // DBG("%02X ", pCmd->pRcvData[i]); + //} + + mutex_unlock(&g_Mutex); +} + + +#ifdef CONFIG_ENABLE_HOTKNOT_RCV_BLOCKING +void _DrvHandleHotKnotRcv(DrvCmd_t *pCmd) +{ + u8 nQueueData; + int nDataLen = -1; + long nRet; + DemoHotKnotLibRcvRet_t *pRcv = NULL; + + DBG("*** %s() ***\n", __func__); + + pCmd->nRcvLen = DEMO_HOTKNOT_RECEIVE_RET_LEN; + pRcv = (DemoHotKnotLibRcvRet_t*)pCmd->pRcvData; + memset(pRcv, 0, DEMO_HOTKNOT_RECEIVE_RET_LEN); + pRcv->nHeader = RECEIVE_DATA; + + if(ShowHotKnotData(&nQueueData, 1) <= 0) //check how many bytes to fetch + { + DBG("ShowHotKnotData: No hotknot data in first check.\n"); + } + else + { + nDataLen = PopHotKnotData(pRcv->szData, (nQueueData&0x7F) + 1); + } + + if(nDataLen > 0) + { + pRcv->nActualHotKnotLen_H = nDataLen>>8; + pRcv->nActualHotKnotLen_L = nDataLen&0xFF; + pRcv->nCheckSum = _GetCheckSum((u8*)pRcv, DEMO_HOTKNOT_RECEIVE_RET_LEN-1); + return; + } + + _gHKRcvWaitEnable = 1; //in wait status + DBG("*** _gHKRcvWaitEnable = 1, receive_timeout = %d***\n", pCmd->nTimeOut * HZ/1000); + set_current_state(TASK_INTERRUPTIBLE); + nRet = wait_event_interruptible_timeout(_gHKRcvWaiter, _gHKRcvFlag != 0, pCmd->nTimeOut * HZ/1000); + _gHKRcvWaitEnable = 0; //no wait + DBG("*** _gHKRcvWaitEnable = 0 ***\n"); + _gHKRcvFlag = 0; + + + if(nRet == 0) //timeout + { + DBG("*** receive_timeout ***\n"); + pRcv->nActualHotKnotLen_H = 0; + pRcv->nActualHotKnotLen_L = 0; + pRcv->nCheckSum = _GetCheckSum((u8*)pRcv, DEMO_HOTKNOT_RECEIVE_RET_LEN-1); + } + else + { + DBG("*** receive_get_data ***\n"); + int nDataLen = -1; + if(ShowHotKnotData(&nQueueData, 1) <= 0) //check how many bytes to fetch + { + DBG("ShowHotKnotData: No hotknot data\n"); + } + else + { + nDataLen = PopHotKnotData(pRcv->szData, (nQueueData&0x7F) + 1); + } + + if(nDataLen < 0) + { + pRcv->nActualHotKnotLen_H = 0; + pRcv->nActualHotKnotLen_L = 0; + } + else + { + pRcv->nActualHotKnotLen_H = nDataLen>>8; + pRcv->nActualHotKnotLen_L = nDataLen&0xFF; + } + pRcv->nCheckSum = _GetCheckSum((u8*)pRcv, DEMO_HOTKNOT_RECEIVE_RET_LEN-1); + } +} +#else +void _DrvHandleHotKnotRcv(DrvCmd_t *pCmd) +{ + u8 nQueueData; + int nDataLen = -1; + DemoHotKnotLibRcvRet_t *pRcv = NULL; + + DBG("*** %s() ***\n", __func__); + + pCmd->nRcvLen = DEMO_HOTKNOT_RECEIVE_RET_LEN; + pRcv = (DemoHotKnotLibRcvRet_t*)pCmd->pRcvData; + memset(pRcv, 0, DEMO_HOTKNOT_RECEIVE_RET_LEN); + pRcv->nHeader = RECEIVE_DATA; + + if(ShowHotKnotData(&nQueueData, 1) <= 0) //check how many bytes to fetch + { + DBG("ShowHotKnotData: No hotknot data\n"); + } + else + { + nDataLen = PopHotKnotData(pRcv->szData, (nQueueData&0x7F) + 1); + } + + if(nDataLen < 0) + { + pRcv->nActualHotKnotLen_H = 0; + pRcv->nActualHotKnotLen_L = 0; + } + else + { + pRcv->nActualHotKnotLen_H = nDataLen>>8; + pRcv->nActualHotKnotLen_L = nDataLen&0xFF; + } + pRcv->nCheckSum = _GetCheckSum((u8*)pRcv, DEMO_HOTKNOT_RECEIVE_RET_LEN-1); +} +#endif + + +void _DrvHandleHotKnotGetQueue(DrvCmd_t *pCmd) +{ + DemoHotKnotGetQRet_t *pRcv = NULL; + + DBG("*** %s() ***\n", __func__); + + pCmd->nRcvLen = HOTKNOT_QUEUE_SIZE+6; + pRcv = (DemoHotKnotGetQRet_t*)pCmd->pRcvData; + memset(pRcv, 0, HOTKNOT_QUEUE_SIZE+6); + pRcv->nHeader = GET_QUEUE; + ShowAllQueue(pRcv->szData, &(pRcv->nFront), &(pRcv->nRear)); + pRcv->nCheckSum = _GetCheckSum((u8*)pRcv, HOTKNOT_QUEUE_SIZE+5); +} + + +void _DrvHandleHotKnotSndTest(DrvCmd_t *pCmd) +{ + u16 nQPushLen = 0; + HotKnotSnd_t *pSnd = NULL; + + DBG("*** %s() ***\n", __func__); + + pSnd = (HotKnotSnd_t*)pCmd->pSndData; + nQPushLen = (pSnd->nDataLen_H << 8) | (pSnd->nDataLen_L & 0xFF); + + DBG("nQPushLen = %d\n", nQPushLen); + if(PushHotKnotData(pSnd->szData, nQPushLen)<0) + { + DBG("Error: HotKnot# Over push data into queue."); + } + + //u8 * pShowArray = (u8*)kmalloc(sizeof(u8)* 256, GFP_KERNEL ); + //ShowHotKnotData(pShowArray, 256); //check queue data + //_DebugShowArray(pShowArray, 256); + //kfree(pShowArray); +} + + +/* +static DrvCmd_t* _TransCmdFromUser( unsigned long nArg ) +{ + long nRet; + DrvCmd_t tCmdIn; + DrvCmd_t *pTransCmd = (DrvCmd_t*)kmalloc( sizeof( DrvCmd_t ), GFP_KERNEL ); + + nRet = copy_from_user( &tCmdIn, (void*)nArg, sizeof( DrvCmd_t ) ); + pTransCmd->nCmdId = tCmdIn.nCmdId; + + pTransCmd->nSndLen = tCmdIn.nSndLen; + pTransCmd->pSndData = (u8*)kmalloc(sizeof(u8)*pTransCmd->nSndLen, GFP_KERNEL ); + nRet = copy_from_user( pTransCmd->pSndData, tCmdIn.pSndData, pTransCmd->nSndLen ); + + pTransCmd->nRcvLen = tCmdIn.nRcvLen; + pTransCmd->pRcvData = (u8*)kmalloc(sizeof(u8)*pTransCmd->nRcvLen, GFP_KERNEL ); + + pTransCmd->pFwMode= (u16*)kmalloc(sizeof(u16), GFP_KERNEL ); + pTransCmd->nTimeOut = tCmdIn.nTimeOut; + + return pTransCmd; +} + + +static void _TransCmdToUser( DrvCmd_t *pTransCmd, unsigned long nArg ) +{ + DrvCmd_t tCmdOut; + long nRet; + + nRet = copy_from_user( &tCmdOut, (void*)nArg, sizeof( DrvCmd_t ) ); + nRet = copy_to_user( tCmdOut.pRcvData, pTransCmd->pRcvData, tCmdOut.nRcvLen); + nRet = copy_to_user( tCmdOut.pFwMode, pTransCmd->pFwMode, sizeof(u16)); + + if ( pTransCmd ) + { + kfree( pTransCmd->pSndData ); + kfree( pTransCmd->pRcvData ); + kfree( pTransCmd->pFwMode ); + kfree( pTransCmd ); + } +} +*/ + + +void _ClearHotKnotMem(void) +{ + DBG("*** %s() ***\n", __func__); + + memset(_gCmdIn, 0, sizeof( DrvCmd_t )); + memset(_gSndData, 0, DEBUG_HOTKNOT_SEND_RET_LEN); + memset(_gRcvData, 0, DEBUG_HOTKNOT_RECEIVE_RET_LEN); + memset(_gFwMode, 0, sizeof(u16)); +} + + +static DrvCmd_t* _TransCmdFromUser( unsigned long nArg ) +{ + long nRet; + DrvCmd_t tCmdIn; + DrvCmd_t *pTransCmd; + + _ClearHotKnotMem(); + pTransCmd = (DrvCmd_t *)_gCmdIn; + nRet = copy_from_user( &tCmdIn, (void*)nArg, sizeof( DrvCmd_t ) ); + pTransCmd->nCmdId = tCmdIn.nCmdId; + + pTransCmd->nSndLen = tCmdIn.nSndLen; + pTransCmd->pSndData = _gSndData; + nRet = copy_from_user( pTransCmd->pSndData, tCmdIn.pSndData, pTransCmd->nSndLen ); + + pTransCmd->nRcvLen = tCmdIn.nRcvLen; + pTransCmd->pRcvData = _gRcvData; + + pTransCmd->pFwMode= _gFwMode; + pTransCmd->nTimeOut = tCmdIn.nTimeOut; + + return pTransCmd; +} + + +static void _TransCmdToUser( DrvCmd_t *pTransCmd, unsigned long nArg ) +{ + DrvCmd_t tCmdOut; + long nRet; + + nRet = copy_from_user( &tCmdOut, (void*)nArg, sizeof( DrvCmd_t ) ); + nRet = copy_to_user( tCmdOut.pRcvData, pTransCmd->pRcvData, tCmdOut.nRcvLen); + nRet = copy_to_user( tCmdOut.pFwMode, pTransCmd->pFwMode, sizeof(u16)); +} + + +long HotKnotIoctl( struct file *pFile, unsigned int nCmd, unsigned long nArg ) +{ + long nRet = 0; + + switch ( nCmd ) + { + case HOTKNOT_IOCTL_RUN_CMD: + { + DrvCmd_t *pTransCmd; + + DBG("*** %s() ***\n", __func__); + + pTransCmd = _TransCmdFromUser( nArg ); + + if(pTransCmd->nCmdId == HOTKNOT_CMD || + (pTransCmd->nCmdId == HOTKNOT_SEND && pTransCmd->pSndData[1] == SEND_DATA)) + { + _DrvHandleHotKnotCmd(pTransCmd, nArg); + _TransCmdToUser(_gDrvCmdStack, _gArgStack); + _gDrvCmdStack = NULL; + _gArgStack = 0; + } + else if(pTransCmd->nCmdId == HOTKNOT_AUTH || + (pTransCmd->nCmdId == HOTKNOT_SEND && pTransCmd->pSndData[1] == AUTH_WRITECIPHER)) + { + _DrvHandleHotKnotAuth(pTransCmd); + _TransCmdToUser(pTransCmd, nArg); + } + else if(pTransCmd->nCmdId == HOTKNOT_RECEIVE && pTransCmd->pSndData[1] == RECEIVE_DATA) + { + _DrvHandleHotKnotRcv(pTransCmd); + _TransCmdToUser(pTransCmd, nArg); + } + else if(pTransCmd->nCmdId == HOTKNOT_RECEIVE && pTransCmd->pSndData[1] == GET_QUEUE) + { + _DrvHandleHotKnotGetQueue(pTransCmd); + _TransCmdToUser(pTransCmd, nArg); + } + else if(pTransCmd->nCmdId == HOTKNOT_SEND && pTransCmd->pSndData[1] == SEND_DATA_TEST) + { + _DrvHandleHotKnotSndTest(pTransCmd); + } + } + break; + + case HOTKNOT_IOCTL_QUERY_VENDOR: + { + char szVendorName[30] = "msg28xx"; + + DBG("*** Query vendor name! ***\n"); + //_DebugShowArray(szVendorName,30); + if(copy_to_user((void*)nArg, szVendorName, 30)) + { + DBG("*** Query vendor name failed! ***\n"); + } + } + break; + + default: + nRet = -EINVAL; + break; + } + + return nRet; +} + + +void CreateHotKnotMem() +{ + DBG("*** %s() ***\n", __func__); + + _gCmdIn = (DrvCmd_t*)kmalloc( sizeof( DrvCmd_t ), GFP_KERNEL ); + _gSndData = (u8*)kmalloc(DEBUG_HOTKNOT_SEND_RET_LEN, GFP_KERNEL ); + _gRcvData = (u8*)kmalloc(DEBUG_HOTKNOT_RECEIVE_RET_LEN, GFP_KERNEL ); + _gFwMode= (u16*)kmalloc(sizeof(u16), GFP_KERNEL ); +} + + +void DeleteHotKnotMem() +{ + DBG("*** %s() ***\n", __func__); + + kfree(_gCmdIn); + kfree(_gSndData); + kfree(_gRcvData); + kfree(_gFwMode); +} + +#endif //CONFIG_ENABLE_HOTKNOT) diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_hotknot.h b/drivers/input/touchscreen/msg2233/mstar_drv_hotknot.h new file mode 100644 index 00000000..1c6da72f --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_hotknot.h @@ -0,0 +1,332 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2006-2012 MStar Semiconductor, Inc. +// All rights reserved. +// +// Unless otherwise stipulated in writing, any and all information contained +// herein regardless in any format shall remain the sole proprietary of +// MStar Semiconductor Inc. and be kept in strict confidence +// (??MStar Confidential Information??) by the recipient. +// Any unauthorized act including without limitation unauthorized disclosure, +// copying, use, reproduction, sale, distribution, modification, disassembling, +// reverse engineering and compiling of the contents of MStar Confidential +// Information is unlawful and strictly prohibited. MStar hereby reserves the +// rights to any and all damages, losses, costs and expenses resulting therefrom. +// +//////////////////////////////////////////////////////////////////////////////// + +/** + * + * @file mstar_drv_hotknot.h + * + * @brief This file defines the hotknot functions + * + * + */ + +#ifndef __MSTAR_DRV_HOTKNOT_H__ +#define __MSTAR_DRV_HOTKNOT_H__ + + +//////////////////////////////////////////////////////////// +/// Included Files +//////////////////////////////////////////////////////////// +#include "mstar_drv_common.h" +#include "mstar_drv_hotknot_queue.h" + + +#ifdef CONFIG_ENABLE_HOTKNOT +//////////////////////////////////////////////////////////// +/// Data Types +//////////////////////////////////////////////////////////// +//typedef int bool; + +//#define false 0 +//#define true !false + + +//////////////////////////////////////////////////////////// +/// Function Prototype +//////////////////////////////////////////////////////////// +extern void CreateHotKnotMem(void); +extern void DeleteHotKnotMem(void); + + +//////////////////////////////////////////////////////////// +/// Data Types +//////////////////////////////////////////////////////////// +typedef struct +{ + u8 nCmdId; + u8 *pSndData; //send data to fw + u16 nSndLen; + u8 *pRcvData; //receive data from fw + u16 nRcvLen; + u16 *pFwMode; + s32 nTimeOut; +} DrvCmd_t; + + +//hotknot cmd +typedef struct +{ + u8 nHeader; + u8 nInstruction; + u8 szReserved[2]; +} HotKnotCmd_t; + +typedef struct +{ + u8 nHeader; + u8 nInstruction; + u8 nResult; + u8 szReserved[38]; + u8 nIdentify; + u8 nCheckSum; +} DemoHotKnotCmdRet_t; + +typedef struct +{ + u8 nHeader; + u8 nPacketLen_H; + u8 nPacketLen_L; + u8 nType; + u8 nInstruction; + u8 nResult; + //u8 szReserved[40]; //unknown size + //u8 nCheckSum; +} DebugHotKnotCmdRet_t; + + +//hotknot auth +typedef struct +{ + u8 nHeader; + u8 nInstruction; + u8 szReserved[2]; +} HotKnotAuth_t; + + +//hotknot writecipher +typedef struct +{ + u8 nHeader; + u8 nInstruction; + u16 nSMBusAdr; + u8 szData[16]; + u8 nCheckSum; +} HotKnotWriteCipher_t; +//return 0 if success, return 1 if fail + + +//hotknot send +typedef struct +{ + u8 nHeader; + u8 nInstruction; + u16 nSMBusAdr; + u8 szData[129]; + u8 nDataLen_H; + u8 nDataLen_L; + u8 nCheckSum; +} HotKnotSnd_t; + +typedef struct +{ + u8 nHeader; + u8 nPacketLen_H; + u8 nPacketLen_L; + u8 nType; + u8 nInstruction; + u8 nResult; + u8 szReserved[143]; + u8 nCheckSum; +} DemoHotKnotSndRet_t; + +typedef struct +{ + u8 nHeader; + u8 nPacketLen_H; + u8 nPacketLen_L; + u8 nType; + u8 nInstruction; + u8 nResult; + u8 szReserved[143]; + u8 szDebug[100]; + u8 nCheckSum; +} DebugHotKnotSndRet_t; + + +//hotknot receive +typedef struct +{ + u8 nHeader; + u8 nInstruction; + u8 nRequireDataLen_H; + u8 nRequireDataLen_L; +} HotKnotRcv_t; + +typedef struct +{ + u8 nHeader; + u8 nActualHotKnotLen_H; + u8 nActualHotKnotLen_L; + u8 szData[146]; + u8 nCheckSum; +} DemoHotKnotLibRcvRet_t; + +typedef struct +{ + u8 nHeader; + u8 nPacketLen_H; + u8 nPacketLen_L; + u8 nType; + u8 szData[143]; + u8 nActualDataLen_H; + u8 nActualDataLen_L; + u8 nCheckSum; +} DemoHotKnotRcvRet_t; + +typedef struct +{ + u8 nHeader; + u8 nPacketLen_H; + u8 nPacketLen_L; + u8 nType; + u8 szData[143]; + u8 nActualDataLen_H; + u8 nActualDataLen_L; + u8 szDebug[100]; + u8 nCheckSum; +} DebugHotKnotRcvRet_t; + + +//hotknot get queue data +typedef struct +{ + u8 nHeader; + u8 nInstruction; + u8 nRequireDataLen_H; + u8 nRequireDataLen_L; +} HotKnotGetQ_t; + +typedef struct +{ + u8 nHeader; + u16 nFront; + u16 nRear; + u8 szData[HOTKNOT_QUEUE_SIZE]; + u8 nCheckSum; +} DemoHotKnotGetQRet_t; + + +//////////////////////////////////////////////////////////// +/// Variables +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Macro +//////////////////////////////////////////////////////////// +#define HOTKNOT_IOCTL_BASE 99 +#define HOTKNOT_IOCTL_RUN_CMD _IOWR(HOTKNOT_IOCTL_BASE, 0, long) +#define HOTKNOT_IOCTL_QUERY_VENDOR _IOR('G', 28, char[30]) + + +#define HOTKNOT_CMD 0x60 +#define HOTKNOT_AUTH 0x61 +#define HOTKNOT_SEND 0x62 +#define HOTKNOT_RECEIVE 0x63 + + +//HotKnot CMD +#define ENABLE_HOTKNOT 0xA0 +#define DISABLE_HOTKNOT 0xA1 +#define ENTER_MASTER_MODE 0xA2 +#define EXIT_MASTER_MODE 0xA3 +#define ENTER_SLAVE_MODE 0xA4 +#define EXIT_SLAVE_MODE 0xA5 +#define READ_PAIR_STATE 0xA6 +#define EXIT_READ_PAIR_STATE 0xA7 +#define ENTER_TRANSFER_MODE 0xA8 +#define EXIT_TRANSFER_MODE 0xA9 +#define READ_DEPART_STATE 0xAA + +//HotKnot AUTH +#define AUTH_INIT 0xB0 +#define AUTH_GETKEYINDEX 0xB1 +#define AUTH_READSCRAMBLECIPHER 0xB2 + +//Hotknot QueryVersion +#define QUERY_VERSION 0xB3 + +//HotKnot Send +#define AUTH_WRITECIPHER 0xC0 +#define SEND_DATA 0xC1 +#define ADAPTIVEMOD_BEGIN 0xC3 //notice fw to begin adaptive modulation + +//HotKnot Receive +#define RECEIVE_DATA 0xD0 + +//HotKnot Send Test +#define SEND_DATA_TEST 0xC2 + +//HotKnot Get Queue +#define GET_QUEUE 0xD1 //decide the size to get queue data + +// +#define DEMO_PD_PACKET_ID 0x5A //only for PD state in demo mode +#define DEMO_PD_PACKET_IDENTIFY 0xC0 //only for PD state in demo mode +#define HOTKNOT_PACKET_ID 0xA7 +#define HOTKNOT_PACKET_TYPE 0x41 //for command and send packet +#define HOTKNOT_RECEIVE_PACKET_TYPE 0x40 + +//send length +#define HOTKNOT_CMD_LEN 4 +#define HOTKNOT_AUTH_LEN 4 +#define HOTKNOT_WRITECIPHER_LEN 21 +#define HOTKNOT_SEND_LEN 136 +#define HOTKNOT_RECEIVE_LEN 4 //TBD +#define HOTKNOT_MAX_DATA_LEN 128 +#define HOTKNOT_GETQUEUE_LEN 4 + +//receive length +#define KEYINDEX_LEN 4 +#define QUERYVERSION_LEN 4 +#define CIPHER_LEN 16 +#define DEMO_PD_PACKET_RET_LEN 43 +#define MAX_PD_PACKET_RET_LEN 100 //TBD +#define DEMO_HOTKNOT_SEND_RET_LEN 150 +#define DEMO_HOTKNOT_RECEIVE_RET_LEN 150 +#define DEBUG_HOTKNOT_SEND_RET_LEN 250 +#define DEBUG_HOTKNOT_RECEIVE_RET_LEN 250 + +//result +#define RESULT_OK 0 +#define RESULT_FAIL 1 +#define RESULT_TIMEOUT 2 + +//hotknot mode +#define HOTKNOT_BEFORE_TRANS_STATE 0x91 //read_pair_state success, fw send 43 bytes to driver +#define HOTKNOT_TRANS_STATE 0x92 //enter_transfer_mode success, fw send 150 bytes to driver +#define HOTKNOT_AFTER_TRANS_STATE 0x93 //exit_transfer_mode, fw send 43 bytes to driver +#define HOTKNOT_NOT_TRANS_STATE 0x94 //enter_slave_mode success, fw send 43 bytes to driver + + + +//////////////////////////////////////////////////////////// +/// COMPILE OPTION DEFINITION +//////////////////////////////////////////////////////////// +//#define CONFIG_ENABLE_HOTKNOT_RCV_BLOCKING + + + +//////////////////////////////////////////////////////////// +/// Function Prototypes +//////////////////////////////////////////////////////////// +extern void ReportHotKnotCmd(u8 *pPacket, u16 nLength); +extern long HotKnotIoctl( struct file *pFile, unsigned int nCmd, unsigned long nArg ); + + +#endif //CONFIG_ENABLE_HOTKNOT +#endif // __MSTAR_DRV_HOTKNOT_H__ diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_hotknot_queue.c b/drivers/input/touchscreen/msg2233/mstar_drv_hotknot_queue.c new file mode 100644 index 00000000..9dc386de --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_hotknot_queue.c @@ -0,0 +1,281 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2006-2012 MStar Semiconductor, Inc. +// All rights reserved. +// +// Unless otherwise stipulated in writing, any and all information contained +// herein regardless in any format shall remain the sole proprietary of +// MStar Semiconductor Inc. and be kept in strict confidence +// (??MStar Confidential Information??) by the recipient. +// Any unauthorized act including without limitation unauthorized disclosure, +// copying, use, reproduction, sale, distribution, modification, disassembling, +// reverse engineering and compiling of the contents of MStar Confidential +// Information is unlawful and strictly prohibited. MStar hereby reserves the +// rights to any and all damages, losses, costs and expenses resulting therefrom. +// +//////////////////////////////////////////////////////////////////////////////// + +/** + * + * @file mstar_drv_hotknot_queue.c + * + * @brief This file defines the queue structure for hotknot + * + * + */ + +//////////////////////////////////////////////////////////// +/// Included Files +//////////////////////////////////////////////////////////// +#include "mstar_drv_hotknot_queue.h" + + +#ifdef CONFIG_ENABLE_HOTKNOT +//////////////////////////////////////////////////////////// +/// Data Types +//////////////////////////////////////////////////////////// + + + +//////////////////////////////////////////////////////////// +/// LOCAL VARIABLE DEFINITION +//////////////////////////////////////////////////////////// +static u8 * _gQueue; +static u16 _gQFront=0; +static u16 _gQRear; +static u16 _gQSize = HOTKNOT_QUEUE_SIZE; + + +//////////////////////////////////////////////////////////// +/// Macro +//////////////////////////////////////////////////////////// +#define RESULT_OK 0 +#define RESULT_OVERPUSH -1 +#define RESULT_OVERPOP -2 + + +//////////////////////////////////////////////////////////// +/// Function Prototypes +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Function Implementation +//////////////////////////////////////////////////////////// + +void _DebugShowQueueArray(u8 *pBuf, u16 nLen) +{ + int i; + + for(i=0; i < nLen; i++) + { + DBG("%02X ", pBuf[i]); + + if(i%16==15){ + DBG("\n"); + } + } + DBG("\n"); +} + + +void CreateQueue() +{ + DBG("*** %s() ***\n", __func__); + + _gQueue = (u8*)kmalloc(sizeof(u8)*_gQSize, GFP_KERNEL ); + _gQFront = _gQRear = 0; +} + + +void ClearQueue() +{ + DBG("*** %s() ***\n", __func__); + + _gQFront = _gQRear = 0; +} + + +int PushQueue(u8 * pBuf, u16 nLength) +{ + u16 nPushLen = nLength; + + DBG("*** %s() ***\n", __func__); + + //DBG("*** Show data to PushQueue() ***\n", __func__); + //_DebugShowQueueArray(pBuf, nLength); + //DBG("*** Show Queue data before PushQueue() ***\n", __func__); + //_DebugShowQueueArray(_gQueue, _gQSize); + + DBG("*** Before PushQueue: _gQFront = %d, _gQRear = %d ***\n", _gQFront, _gQRear); + + if(_gQRear >= _gQFront) + { + if(nPushLen > 0 && _gQFront == 0 && _gQRear == _gQSize-1) //full + { + DBG("*** PushQueue: RESULT_OVERPUSH ***\n"); + return RESULT_OVERPUSH; + } + + if(nPushLen > _gQSize-1 - (_gQRear - _gQFront)) //over push + { + DBG("*** PushQueue: RESULT_OVERPUSH ***\n"); + return RESULT_OVERPUSH; + } + + if(_gQRear+nPushLen <= _gQSize-1) + { + memcpy(&_gQueue[_gQRear+1], pBuf, nPushLen); + _gQRear = _gQRear + nPushLen; + } + else + { + u16 nQTmp = (_gQSize-1) -_gQRear; + memcpy(&_gQueue[_gQRear+1], pBuf, nQTmp); //push data from rear to end + memcpy(_gQueue, &pBuf[nQTmp], nPushLen - nQTmp); //push data lest + _gQRear = nPushLen - nQTmp - 1; + } + } + else //_gQRear < _gQFront + { + if(nPushLen > 0 && _gQFront == _gQRear+1) //full + { + DBG("*** PushQueue: RESULT_OVERPUSH ***\n"); + return RESULT_OVERPUSH; + } + + if(nPushLen > (_gQFront - _gQRear) - 1) //over push + { + DBG("*** PushQueue: RESULT_OVERPUSH ***\n"); + return RESULT_OVERPUSH; + } + + memcpy(&_gQueue[_gQRear+1], pBuf, nPushLen); + _gQRear = _gQRear + nPushLen; + } + + //DBG("*** Show Queue data after PushQueue() ***\n", __func__); + //_DebugShowQueueArray(_gQueue, _gQSize); + + DBG("*** After PushQueue: _gQFront = %d, _gQRear = %d ***\n", _gQFront, _gQRear); + return nPushLen; +} + + +int PopQueue(u8 * pBuf, u16 nLength) +{ + u16 nPopLen = nLength; + + DBG("*** %s() ***\n", __func__); + + DBG("*** Before PopQueue: _gQFront = %d, _gQRear = %d ***\n", _gQFront, _gQRear); + + if(_gQRear >= _gQFront) + { + if(nPopLen > 0 && _gQRear == _gQFront) //empty + { + DBG("*** PushQueue: RESULT_OVERPOP ***\n"); + return RESULT_OVERPOP; + } + + if(nPopLen > _gQRear - _gQFront) //over pop + { + DBG("*** PushQueue: RESULT_OVERPOP ***\n"); + return RESULT_OVERPOP; + } + + memcpy(pBuf, &_gQueue[_gQFront+1], nPopLen); + _gQFront = _gQFront + nPopLen; + } + else //_gQRear < _gQFront + { + if(nPopLen > _gQSize - (_gQFront - _gQRear)) //over pop + { + DBG("*** PushQueue: RESULT_OVERPOP ***\n"); + return RESULT_OVERPOP; + } + + if(_gQFront + nPopLen <= _gQSize-1) + { + memcpy(pBuf, &_gQueue[_gQFront+1], nPopLen); + _gQFront = _gQFront + nPopLen; + } + else + { + u16 nQTmp = (_gQSize-1) -_gQFront; + memcpy(pBuf, &_gQueue[_gQFront+1], nQTmp); //pop data from rear to end + memcpy(&pBuf[nQTmp], _gQueue, nPopLen - nQTmp); //pop data lest + _gQFront = nPopLen - nQTmp - 1; + } + } + + DBG("*** After PopQueue: _gQFront = %d, _gQRear = %d ***\n", _gQFront, _gQRear); + return nPopLen; +} + + +int ShowQueue(u8 * pBuf, u16 nLength) //just show data, not fetch data +{ + u16 nShowLen = nLength; + + DBG("*** %s() ***\n", __func__); + + if(_gQRear >= _gQFront) + { + if(nShowLen > 0 && _gQRear == _gQFront) //empty + { + return RESULT_OVERPOP; + } + + if(nShowLen > _gQRear - _gQFront) //over pop + { + return RESULT_OVERPOP; + } + + memcpy(pBuf, &_gQueue[_gQFront+1], nShowLen); + //_gQFront = _gQFront + nPopLen; + } + else //_gQRear < _gQFront + { + if(nShowLen > _gQSize - (_gQFront - _gQRear)) //over pop + { + return RESULT_OVERPOP; + } + + if(_gQFront + nShowLen <= _gQSize-1) + { + memcpy(pBuf, &_gQueue[_gQFront+1], nShowLen); + //_gQFront = _gQFront + nPopLen; + } + else + { + u16 nQTmp = (_gQSize-1) -_gQFront; + memcpy(pBuf, &_gQueue[_gQFront+1], nQTmp); //pop data from rear to end + memcpy(&pBuf[nQTmp], _gQueue, nShowLen - nQTmp); //pop data lest + //_gQFront = nPopLen - nQTmp - 1; + } + } + + return nShowLen; +} + + +void ShowAllQueue(u8 * pBuf, u16 * pFront, u16 * pRear) //just show data, not fetch data +{ + DBG("*** %s() ***\n", __func__); + + memcpy(pBuf, _gQueue, HOTKNOT_QUEUE_SIZE); //pop data from rear to end + *pFront = _gQFront; + *pRear = _gQRear; +} + + +void DeleteQueue() +{ + DBG("*** %s() ***\n", __func__); + + _gQFront = _gQRear = 0; + kfree(_gQueue); +} + +#endif //CONFIG_ENABLE_HOTKNOT diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_hotknot_queue.h b/drivers/input/touchscreen/msg2233/mstar_drv_hotknot_queue.h new file mode 100644 index 00000000..edc4f8a4 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_hotknot_queue.h @@ -0,0 +1,63 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2006-2012 MStar Semiconductor, Inc. +// All rights reserved. +// +// Unless otherwise stipulated in writing, any and all information contained +// herein regardless in any format shall remain the sole proprietary of +// MStar Semiconductor Inc. and be kept in strict confidence +// (??MStar Confidential Information??) by the recipient. +// Any unauthorized act including without limitation unauthorized disclosure, +// copying, use, reproduction, sale, distribution, modification, disassembling, +// reverse engineering and compiling of the contents of MStar Confidential +// Information is unlawful and strictly prohibited. MStar hereby reserves the +// rights to any and all damages, losses, costs and expenses resulting therefrom. +// +//////////////////////////////////////////////////////////////////////////////// + +/** + * + * @file mstar_drv_hotknot_queue.h + * + * @brief This file defines the queue structure for hotknot + * + * + */ + +#ifndef __MSTAR_DRV_HOTKNOT_QUEUE_H__ +#define __MSTAR_DRV_HOTKNOT_QUEUE_H__ + + +//////////////////////////////////////////////////////////// +/// Included Files +//////////////////////////////////////////////////////////// + +#include "mstar_drv_common.h" + + +#ifdef CONFIG_ENABLE_HOTKNOT +//////////////////////////////////////////////////////////// +/// Constant +//////////////////////////////////////////////////////////// +#define HOTKNOT_QUEUE_SIZE 1024 + + +//////////////////////////////////////////////////////////// +/// Variables +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Function Prototype +//////////////////////////////////////////////////////////// +extern void CreateQueue(void); +extern void ClearQueue(void); +extern int PushQueue(u8 * pBuf, u16 nLength); +extern int PopQueue(u8 * pBuf, u16 nLength); +extern int ShowQueue(u8 * pBuf, u16 nLength); //just show data, not fetch data +extern void ShowAllQueue(u8 * pBuf, u16 * pFront, u16 * pRear); //just show data, not fetch data +extern void DeleteQueue(void); + + +#endif //CONFIG_ENABLE_HOTKNOT +#endif // __MSTAR_DRV_HOTKNOT_QUEUE_H__ diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_ic_fw_porting_layer.c b/drivers/input/touchscreen/msg2233/mstar_drv_ic_fw_porting_layer.c new file mode 100644 index 00000000..9a5e4af9 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_ic_fw_porting_layer.c @@ -0,0 +1,313 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_ic_fw_porting_layer.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include "mstar_drv_ic_fw_porting_layer.h"
+
+
+/*=============================================================*/
+// EXTERN VARIABLE DECLARATION
+/*=============================================================*/
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+extern u32 g_GestureWakeupMode[2];
+extern u8 g_GestureWakeupFlag;
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+/*=============================================================*/
+// GLOBAL FUNCTION DEFINITION
+/*=============================================================*/
+
+void DrvIcFwLyrVariableInitialize(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlVariableInitialize();
+}
+
+void DrvIcFwLyrOptimizeCurrentConsumption(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlOptimizeCurrentConsumption();
+}
+
+u8 DrvIcFwLyrGetChipType(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvFwCtrlGetChipType();
+}
+
+void DrvIcFwLyrGetCustomerFirmwareVersion(u16 *pMajor, u16 *pMinor, u8 **ppVersion)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlGetCustomerFirmwareVersion(pMajor, pMinor, ppVersion);
+}
+
+void DrvIcFwLyrGetPlatformFirmwareVersion(u8 **ppVersion)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlGetPlatformFirmwareVersion(ppVersion);
+}
+
+s32 DrvIcFwLyrUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvFwCtrlUpdateFirmware(szFwData, eEmemType);
+}
+
+s32 DrvIcFwLyrUpdateFirmwareBySdCard(const char *pFilePath)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvFwCtrlUpdateFirmwareBySdCard(pFilePath);
+}
+
+u32 DrvIcFwLyrIsRegisterFingerTouchInterruptHandler(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ return 1; // Indicate that it is necessary to register interrupt handler with GPIO INT pin when firmware is running on IC
+}
+
+void DrvIcFwLyrHandleFingerTouch(u8 *pPacket, u16 nLength)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlHandleFingerTouch();
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+void DrvIcFwLyrOpenGestureWakeup(u32 *pWakeupMode)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlOpenGestureWakeup(pWakeupMode);
+}
+
+void DrvIcFwLyrCloseGestureWakeup(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlCloseGestureWakeup();
+}
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+void DrvIcFwLyrOpenGestureDebugMode(u8 nGestureFlag)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlOpenGestureDebugMode(nGestureFlag);
+}
+
+void DrvIcFwLyrCloseGestureDebugMode(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlCloseGestureDebugMode();
+}
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+u32 DrvIcFwLyrReadDQMemValue(u16 nAddr)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvFwCtrlReadDQMemValue(nAddr);
+}
+
+void DrvIcFwLyrWriteDQMemValue(u16 nAddr, u32 nData)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlWriteDQMemValue(nAddr, nData);
+}
+
+//------------------------------------------------------------------------------//
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC) // use for MSG26XXM only
+u16 DrvIcFwLyrGetFirmwareMode(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvFwCtrlGetFirmwareMode();
+}
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+
+u16 DrvIcFwLyrChangeFirmwareMode(u16 nMode)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvFwCtrlChangeFirmwareMode(nMode);
+}
+
+void DrvIcFwLyrGetFirmwareInfo(FirmwareInfo_t *pInfo)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlGetFirmwareInfo(pInfo);
+}
+
+void DrvIcFwLyrRestoreFirmwareModeToLogDataMode(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlRestoreFirmwareModeToLogDataMode();
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+void DrvIcFwLyrCheckFirmwareUpdateBySwId(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvFwCtrlCheckFirmwareUpdateBySwId();
+}
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+
+void DrvIcFwLyrCreateMpTestWorkQueue(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvMpTestCreateMpTestWorkQueue();
+}
+
+void DrvIcFwLyrScheduleMpTestWork(ItoTestMode_e eItoTestMode)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvMpTestScheduleMpTestWork(eItoTestMode);
+}
+
+s32 DrvIcFwLyrGetMpTestResult(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvMpTestGetTestResult();
+}
+
+void DrvIcFwLyrGetMpTestFailChannel(ItoTestMode_e eItoTestMode, u8 *pFailChannel, u32 *pFailChannelCount)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvMpTestGetTestFailChannel(eItoTestMode, pFailChannel, pFailChannelCount);
+}
+
+void DrvIcFwLyrGetMpTestDataLog(ItoTestMode_e eItoTestMode, u8 *pDataLog, u32 *pLength)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvMpTestGetTestDataLog(eItoTestMode, pDataLog, pLength);
+}
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+void DrvIcFwLyrGetMpTestScope(TestScopeInfo_t *pInfo)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvMpTestGetTestScope(pInfo);
+}
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+void DrvIcFwLyrGetTouchPacketAddress(u16 *pDataAddress, u16 *pFlagAddress)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvFwCtrlGetTouchPacketAddress(pDataAddress, pFlagAddress);
+}
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+
+#endif //CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+
+s32 DrvIcFwLyrEnableProximity(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvFwCtrlEnableProximity();
+}
+
+s32 DrvIcFwLyrDisableProximity(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ return DrvFwCtrlDisableProximity();
+}
+
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+void DrvIcFwLyrOpenGloveMode(void)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvIcFwCtrlOpenGloveMode();
+}
+
+void DrvIcFwLyrCloseGloveMode(void)
+{
+// DBG("*** %s() ***\n", __func__);
+ DrvIcFwCtrlCloseGloveMode();
+}
+
+void DrvIcFwLyrGetGloveInfo(u8 *pGloveMode)
+{
+// DBG("*** %s() ***\n", __func__);
+
+ DrvIcFwCtrlGetGloveInfo(pGloveMode);
+}
+#endif //CONFIG_ENABLE_GLOVE_MODE
+//------------------------------------------------------------------------------//
+
+
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_ic_fw_porting_layer.h b/drivers/input/touchscreen/msg2233/mstar_drv_ic_fw_porting_layer.h new file mode 100644 index 00000000..75508ad1 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_ic_fw_porting_layer.h @@ -0,0 +1,119 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_ic_fw_porting_layer.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_IC_FW_PORTING_LAYER_H__
+#define __MSTAR_DRV_IC_FW_PORTING_LAYER_H__
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+#include "mstar_drv_common.h"
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+#include "mstar_drv_mutual_fw_control.h"
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+#include "mstar_drv_mutual_mp_test.h"
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+#elif defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC)
+#include "mstar_drv_self_fw_control.h"
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+#include "mstar_drv_self_mp_test.h"
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+#endif
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR CONSTANT DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL FUNCTION DECLARATION */
+/*--------------------------------------------------------------------------*/
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+extern void DrvIcFwLyrOpenGestureWakeup(u32 *pWakeupMode);
+extern void DrvIcFwLyrCloseGestureWakeup(void);
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+extern void DrvIcFwLyrOpenGestureDebugMode(u8 nGestureFlag);
+extern void DrvIcFwLyrCloseGestureDebugMode(void);
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+extern u32 DrvIcFwLyrReadDQMemValue(u16 nAddr);
+extern void DrvIcFwLyrWriteDQMemValue(u16 nAddr, u32 nData);
+
+extern u16 DrvIcFwLyrChangeFirmwareMode(u16 nMode);
+extern void DrvIcFwLyrGetFirmwareInfo(FirmwareInfo_t *pInfo);
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC) // use for MSG26XXM only
+extern u16 DrvIcFwLyrGetFirmwareMode(void);
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+extern void DrvIcFwLyrRestoreFirmwareModeToLogDataMode(void);
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+extern void DrvIcFwLyrCheckFirmwareUpdateBySwId(void);
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+extern void DrvIcFwLyrVariableInitialize(void);
+extern void DrvIcFwLyrOptimizeCurrentConsumption(void);
+extern u8 DrvIcFwLyrGetChipType(void);
+extern void DrvIcFwLyrGetCustomerFirmwareVersion(u16 *pMajor, u16 *pMinor, u8 **ppVersion);
+extern void DrvIcFwLyrGetPlatformFirmwareVersion(u8 **ppVersion);
+extern void DrvIcFwLyrHandleFingerTouch(u8 *pPacket, u16 nLength);
+extern u32 DrvIcFwLyrIsRegisterFingerTouchInterruptHandler(void);
+extern s32 DrvIcFwLyrUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType);
+extern s32 DrvIcFwLyrUpdateFirmwareBySdCard(const char *pFilePath);
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+extern void DrvIcFwLyrCreateMpTestWorkQueue(void);
+extern void DrvIcFwLyrScheduleMpTestWork(ItoTestMode_e eItoTestMode);
+extern void DrvIcFwLyrGetMpTestDataLog(ItoTestMode_e eItoTestMode, u8 *pDataLog, u32 *pLength);
+extern void DrvIcFwLyrGetMpTestFailChannel(ItoTestMode_e eItoTestMode, u8 *pFailChannel, u32 *pFailChannelCount);
+extern s32 DrvIcFwLyrGetMpTestResult(void);
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+extern void DrvIcFwLyrGetMpTestScope(TestScopeInfo_t *pInfo);
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+#ifdef CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+extern void DrvIcFwLyrGetTouchPacketAddress(u16 *pDataAddress, u16 *pFlagAddress);
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+#endif //CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+extern s32 DrvIcFwLyrEnableProximity(void);
+extern s32 DrvIcFwLyrDisableProximity(void);
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+extern void DrvIcFwLyrOpenGloveMode(void);
+extern void DrvIcFwLyrCloseGloveMode(void);
+extern void DrvIcFwLyrGetGloveInfo(u8 *pGloveMode);
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+#endif /* __MSTAR_DRV_IC_FW_PORTING_LAYER_H__ */
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_jni_interface.c b/drivers/input/touchscreen/msg2233/mstar_drv_jni_interface.c new file mode 100644 index 00000000..4a10ed60 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_jni_interface.c @@ -0,0 +1,287 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2006-2012 MStar Semiconductor, Inc. +// All rights reserved. +// +// Unless otherwise stipulated in writing, any and all information contained +// herein regardless in any format shall remain the sole proprietary of +// MStar Semiconductor Inc. and be kept in strict confidence +// (??MStar Confidential Information??) by the recipient. +// Any unauthorized act including without limitation unauthorized disclosure, +// copying, use, reproduction, sale, distribution, modification, disassembling, +// reverse engineering and compiling of the contents of MStar Confidential +// Information is unlawful and strictly prohibited. MStar hereby reserves the +// rights to any and all damages, losses, costs and expenses resulting therefrom. +// +//////////////////////////////////////////////////////////////////////////////// + +/** + * + * @file mstar_drv_jni_interface.c + * + * @brief This file defines the jni interface functions + * + * + */ + +//////////////////////////////////////////////////////////// +/// Included Files +//////////////////////////////////////////////////////////// +#include <linux/init.h> +#include <linux/module.h> +#include <linux/kthread.h> +#include <asm/uaccess.h> +#include "mstar_drv_jni_interface.h" +#include "mstar_drv_utility_adaption.h" +#include "mstar_drv_platform_porting_layer.h" + + +#ifdef CONFIG_ENABLE_JNI_INTERFACE +//////////////////////////////////////////////////////////// +/// EXTERN VARIABLE DECLARATION +//////////////////////////////////////////////////////////// +extern u32 SLAVE_I2C_ID_DBBUS; +extern u32 SLAVE_I2C_ID_DWI2C; +extern u8 g_IsHotknotEnabled; +extern u8 g_IsBypassHotknot; +extern u8 g_IsHotknotAlive; + + +//////////////////////////////////////////////////////////// +/// LOCAL VARIABLE DEFINITION +//////////////////////////////////////////////////////////// +static MsgToolDrvCmd_t * _gMsgToolCmdIn; +static u8 * _gSndCmdData; +static u8 * _gRtnCmdData; + + + +void _DebugJniShowArray(u8 *pBuf, u16 nLen) +{ + int i; + + for(i=0; i < nLen; i++) + { + DBG("%02X ", pBuf[i]); + + if(i%16==15){ + DBG("\n"); + } + } + DBG("\n"); +} + + +u64 PtrToU64(u8 * pValue) +{ + uintptr_t nValue = (uintptr_t)pValue; + return (u64)(0xFFFFFFFFFFFFFFFF&nValue); +} + +u8 * U64ToPtr(u64 nValue) +{ + uintptr_t pValue = (uintptr_t)nValue; + return (u8 *)pValue; +} + + +ssize_t MsgToolRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos) +{ + long nRet = 0; + u8 nBusType = 0; + u16 nReadLen = 0; + u8 szCmdData[20] = {0}; + + + DBG("*** %s() ***\n", __func__); + //DBG("*** nCount = %d ***\n", (int)nCount); + nBusType = nCount&0xFF; + nReadLen = (nCount >> 8)&0xFFFF; + if(nBusType == SLAVE_I2C_ID_DBBUS || nBusType == SLAVE_I2C_ID_DWI2C) + { + IicReadData(nBusType, &szCmdData[0], nReadLen); + } + + nRet = copy_to_user(pBuffer, &szCmdData[0], nReadLen); + + return nRet; +} + + +ssize_t MsgToolWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos) +{ + long nRet = 0; + u8 nBusType = 0; + u16 nWriteLen = 0; + u8 szCmdData[20] = {0}; + + + DBG("*** %s() ***\n", __func__); + //DBG("*** nCount = %d ***\n", (int)nCount); + nBusType = nCount&0xFF; + nWriteLen = (nCount >> 8)&0xFFFF; + nRet = copy_from_user(szCmdData, &pBuffer[0], nWriteLen); + if(nBusType == SLAVE_I2C_ID_DBBUS || nBusType == SLAVE_I2C_ID_DWI2C) + { + IicWriteData(nBusType, &szCmdData[0], nWriteLen); + } + + return nRet; +} + + +void _RegGetXByteData(MsgToolDrvCmd_t * pCmd) +{ + u16 nAddr = 0; + + DBG("*** %s() ***\n", __func__); + nAddr = (_gSndCmdData[1]<<8)|_gSndCmdData[0]; + RegGetXBitValue(nAddr, _gRtnCmdData, pCmd->nRtnCmdLen, MAX_I2C_TRANSACTION_LENGTH_LIMIT); + //_DebugJniShowArray(_gRtnCmdData, pCmd->nRtnCmdLen); +} + + +void _ClearMsgToolMem(void) +{ + DBG("*** %s() ***\n", __func__); + + memset(_gMsgToolCmdIn, 0, sizeof( MsgToolDrvCmd_t )); + memset(_gSndCmdData, 0, 1024); + memset(_gRtnCmdData, 0, 1024); +} + + +static MsgToolDrvCmd_t* _TransCmdFromUser( unsigned long nArg ) +{ + long nRet; + MsgToolDrvCmd_t tCmdIn; + MsgToolDrvCmd_t *pTransCmd; + + DBG("*** %s() ***\n", __func__); + _ClearMsgToolMem(); + pTransCmd = (MsgToolDrvCmd_t *)_gMsgToolCmdIn; + nRet = copy_from_user( &tCmdIn, (void*)nArg, sizeof( MsgToolDrvCmd_t ) ); + pTransCmd->nCmdId = tCmdIn.nCmdId; + + //_DebugJniShowArray(&tCmdIn, sizeof( MsgToolDrvCmd_t)); + if(tCmdIn.nSndCmdLen > 0) + { + pTransCmd->nSndCmdLen = tCmdIn.nSndCmdLen; + nRet = copy_from_user( _gSndCmdData, U64ToPtr(tCmdIn.nSndCmdDataPtr), pTransCmd->nSndCmdLen ); + } + + if(tCmdIn.nRtnCmdLen > 0) + { + pTransCmd->nRtnCmdLen = tCmdIn.nRtnCmdLen; + nRet = copy_from_user( _gRtnCmdData, U64ToPtr(tCmdIn.nRtnCmdDataPtr), pTransCmd->nRtnCmdLen ); + } + + return pTransCmd; +} + + +static void _TransCmdToUser( MsgToolDrvCmd_t *pTransCmd, unsigned long nArg ) +{ + MsgToolDrvCmd_t tCmdOut; + long nRet; + + DBG("*** %s() ***\n", __func__); + nRet = copy_from_user( &tCmdOut, (void*)nArg, sizeof( MsgToolDrvCmd_t ) ); + + //_DebugJniShowArray(&tCmdOut, sizeof( MsgToolDrvCmd_t)); + nRet = copy_to_user( U64ToPtr(tCmdOut.nRtnCmdDataPtr), _gRtnCmdData, tCmdOut.nRtnCmdLen); +} + + +long MsgToolIoctl( struct file *pFile, unsigned int nCmd, unsigned long nArg ) +{ + long nRet = 0; + + DBG("*** %s() ***\n", __func__); + switch ( nCmd ) + { + case MSGTOOL_IOCTL_RUN_CMD: + { + MsgToolDrvCmd_t *pTransCmd; + pTransCmd = _TransCmdFromUser( nArg ); + switch (pTransCmd->nCmdId) + { + case MSGTOOL_RESETHW: + DrvPlatformLyrTouchDeviceResetHw(); + break; + case MSGTOOL_REGGETXBYTEVALUE: + _RegGetXByteData(pTransCmd); + _TransCmdToUser(pTransCmd, nArg); + break; + case MSGTOOL_HOTKNOTSTATUS: + _gRtnCmdData[0] = g_IsHotknotEnabled; + _TransCmdToUser(pTransCmd, nArg); + break; + case MSGTOOL_FINGERTOUCH: + if(pTransCmd->nSndCmdLen == 1) + { + DBG("*** JNI enable touch ***\n"); + DrvPlatformLyrEnableFingerTouchReport(); + } + else if(pTransCmd->nSndCmdLen == 0) + { + DBG("*** JNI disable touch ***\n"); + DrvPlatformLyrDisableFingerTouchReport(); + } + break; + case MSGTOOL_BYPASSHOTKNOT: + if(pTransCmd->nSndCmdLen == 1) + { + DBG("*** JNI enable bypass hotknot ***\n"); + g_IsBypassHotknot = 1; + while(g_IsHotknotAlive == 1) + { + //DBG("*** JNI hotknot is alive ***\n"); + mdelay(1); + } + DBG("*** JNI hotknot is paused ***\n"); + } + else if(pTransCmd->nSndCmdLen == 0) + { + DBG("*** JNI disable bypass hotknot ***\n"); + g_IsBypassHotknot = 0; + } + break; + case MSGTOOL_DEVICEPOWEROFF: + DrvPlatformLyrTouchDevicePowerOff(); + break; + default: + break; + } + } + break; + + default: + nRet = -EINVAL; + break; + } + + return nRet; +} + + +void CreateMsgToolMem(void) +{ + DBG("*** %s() ***\n", __func__); + + _gMsgToolCmdIn = (MsgToolDrvCmd_t*)kmalloc( sizeof( MsgToolDrvCmd_t ), GFP_KERNEL ); + _gSndCmdData = (u8*)kmalloc(1024, GFP_KERNEL ); + _gRtnCmdData = (u8*)kmalloc(1024, GFP_KERNEL ); +} + + +void DeleteMsgToolMem(void) +{ + DBG("*** %s() ***\n", __func__); + + kfree(_gMsgToolCmdIn); + kfree(_gSndCmdData); + kfree(_gRtnCmdData); +} + +#endif //CONFIG_ENABLE_JNI_INTERFACE diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_jni_interface.h b/drivers/input/touchscreen/msg2233/mstar_drv_jni_interface.h new file mode 100644 index 00000000..962d1dc7 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_jni_interface.h @@ -0,0 +1,91 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2006-2012 MStar Semiconductor, Inc. +// All rights reserved. +// +// Unless otherwise stipulated in writing, any and all information contained +// herein regardless in any format shall remain the sole proprietary of +// MStar Semiconductor Inc. and be kept in strict confidence +// (??MStar Confidential Information??) by the recipient. +// Any unauthorized act including without limitation unauthorized disclosure, +// copying, use, reproduction, sale, distribution, modification, disassembling, +// reverse engineering and compiling of the contents of MStar Confidential +// Information is unlawful and strictly prohibited. MStar hereby reserves the +// rights to any and all damages, losses, costs and expenses resulting therefrom. +// +//////////////////////////////////////////////////////////////////////////////// + +/** + * + * @file mstar_drv_hotknot.h + * + * @brief This file defines the hotknot functions + * + * + */ + +#ifndef __MSTAR_DRV_JNI_INTERFACE_H__ +#define __MSTAR_DRV_JNI_INTERFACE_H__ + + +//////////////////////////////////////////////////////////// +/// Included Files +//////////////////////////////////////////////////////////// +#include "mstar_drv_common.h" + + +#ifdef CONFIG_ENABLE_JNI_INTERFACE +//////////////////////////////////////////////////////////// +/// Data Types +//////////////////////////////////////////////////////////// +/* +typedef struct +{ + u64 nCmdId; + u8 *pSndCmdData; //send data to fw + u64 nSndCmdLen; + u8 *pRtnCmdData; //receive data from fw + u64 nRtnCmdLen; +} MsgToolDrvCmd_t; +*/ + +typedef struct +{ + u64 nCmdId; + u64 nSndCmdDataPtr; //send data to fw + u64 nSndCmdLen; + u64 nRtnCmdDataPtr; //receive data from fw + u64 nRtnCmdLen; +} MsgToolDrvCmd_t; + + + +//////////////////////////////////////////////////////////// +/// Macro +//////////////////////////////////////////////////////////// +#define MSGTOOL_MAGIC_NUMBER 96 +#define MSGTOOL_IOCTL_RUN_CMD _IO(MSGTOOL_MAGIC_NUMBER, 1) + + +#define MSGTOOL_RESETHW 0x01 +#define MSGTOOL_REGGETXBYTEVALUE 0x02 +#define MSGTOOL_HOTKNOTSTATUS 0x03 +#define MSGTOOL_FINGERTOUCH 0x04 +#define MSGTOOL_BYPASSHOTKNOT 0x05 +#define MSGTOOL_DEVICEPOWEROFF 0x06 + + + +//////////////////////////////////////////////////////////// +/// Function Prototypes +//////////////////////////////////////////////////////////// + +extern ssize_t MsgToolRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos); +extern ssize_t MsgToolWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos); +extern long MsgToolIoctl( struct file *pFile, unsigned int nCmd, unsigned long nArg ); +extern void CreateMsgToolMem(void); +extern void DeleteMsgToolMem(void); + + +#endif //CONFIG_ENABLE_JNI_INTERFACE +#endif // __MSTAR_DRV_JNI_INTERFACE_H__ diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_main.c b/drivers/input/touchscreen/msg2233/mstar_drv_main.c new file mode 100644 index 00000000..c67dddd6 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_main.c @@ -0,0 +1,3379 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_main.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include "mstar_drv_main.h"
+#include "mstar_drv_utility_adaption.h"
+#include "mstar_drv_platform_porting_layer.h"
+#include "mstar_drv_ic_fw_porting_layer.h"
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+#include "mstar_drv_hotknot.h"
+#include "mstar_drv_hotknot_queue.h"
+#endif //CONFIG_ENABLE_HOTKNOT
+
+#ifdef CONFIG_ENABLE_JNI_INTERFACE
+#include "mstar_drv_jni_interface.h"
+#endif //CONFIG_ENABLE_JNI_INTERFACE
+
+/*=============================================================*/
+// CONSTANT VALUE DEFINITION
+/*=============================================================*/
+
+
+/*=============================================================*/
+// EXTERN VARIABLE DECLARATION
+/*=============================================================*/
+
+extern FirmwareInfo_t g_FirmwareInfo;
+extern u8 g_LogModePacket[DEBUG_MODE_PACKET_LENGTH];
+extern u16 g_FirmwareMode;
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+extern u32 g_GestureWakeupMode[2];
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+extern u8 g_LogGestureDebug[128];
+extern u8 g_GestureDebugFlag;
+extern u8 g_GestureDebugMode;
+
+extern struct input_dev *g_InputDevice;
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+extern u32 g_LogGestureInfor[GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH];
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+extern u8 g_ChipType;
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+extern TestScopeInfo_t g_TestScopeInfo;
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+/*=============================================================*/
+// LOCAL VARIABLE DEFINITION
+/*=============================================================*/
+
+static u16 _gDebugReg[MAX_DEBUG_REGISTER_NUM] = {0};
+static u16 _gDebugRegValue[MAX_DEBUG_REGISTER_NUM] = {0};
+static u32 _gDebugRegCount = 0;
+
+static u8 _gDebugCmdArgu[MAX_DEBUG_COMMAND_ARGUMENT_NUM] = {0};
+static u16 _gDebugCmdArguCount = 0;
+static u32 _gDebugReadDataSize = 0;
+
+static u8 *_gPlatformFwVersion = NULL; // internal use firmware version for MStar
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+static ItoTestMode_e _gItoTestMode = 0;
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+static u32 _gLogGestureCount = 0;
+static u8 _gLogGestureInforType = 0;
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+static u32 _gIsUpdateComplete = 0;
+
+u8 *_gFwVersion = NULL; // customer firmware version
+
+static u32 _gFeatureSupportStatus = 0;
+
+static struct proc_dir_entry *_gProcClass = NULL;
+static struct proc_dir_entry *_gProcMsTouchScreenMsg20xx = NULL;
+static struct proc_dir_entry *_gProcDevice = NULL;
+
+static const struct file_operations _gProcChipType = {
+ .read = DrvMainProcfsChipTypeRead,
+ .write = DrvMainProcfsChipTypeWrite,
+};
+
+static const struct file_operations _gProcFirmwareData = {
+ .read = DrvMainProcfsFirmwareDataRead,
+ .write = DrvMainProcfsFirmwareDataWrite,
+};
+
+static const struct file_operations _gProcApkFirmwareUpdate = {
+ .read = DrvMainProcfsFirmwareUpdateRead,
+ .write = DrvMainProcfsFirmwareUpdateWrite,
+};
+
+static const struct file_operations _gProcCustomerFirmwareVersion = {
+ .read = DrvMainProcfsCustomerFirmwareVersionRead,
+ .write = DrvMainProcfsCustomerFirmwareVersionWrite,
+};
+
+static const struct file_operations _gProcPlatformFirmwareVersion = {
+ .read = DrvMainProcfsPlatformFirmwareVersionRead,
+ .write = DrvMainProcfsPlatformFirmwareVersionWrite,
+};
+
+static const struct file_operations _gProcDeviceDriverVersion = {
+ .read = DrvMainProcfsDeviceDriverVersionRead,
+ .write = DrvMainProcfsDeviceDriverVersionWrite,
+};
+
+static const struct file_operations _gProcSdCardFirmwareUpdate = {
+ .read = DrvMainProcfsSdCardFirmwareUpdateRead,
+ .write = DrvMainProcfsSdCardFirmwareUpdateWrite,
+};
+
+static const struct file_operations _gProcFirmwareDebug = {
+ .read = DrvMainProcfsFirmwareDebugRead,
+ .write = DrvMainProcfsFirmwareDebugWrite,
+};
+
+static const struct file_operations _gProcFirmwareSetDebugValue = {
+ .read = DrvMainProcfsFirmwareSetDebugValueRead,
+ .write = DrvMainProcfsFirmwareSetDebugValueWrite,
+};
+
+static const struct file_operations _gProcFirmwareSmBusDebug = {
+ .read = DrvMainProcfsFirmwareSmBusDebugRead,
+ .write = DrvMainProcfsFirmwareSmBusDebugWrite,
+};
+
+static const struct file_operations _gProcFirmwareSetDQMemValue = {
+ .read = DrvMainProcfsFirmwareSetDQMemValueRead,
+ .write = DrvMainProcfsFirmwareSetDQMemValueWrite,
+};
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+static const struct file_operations _gProcMpTest = {
+ .read = DrvMainProcfsMpTestRead,
+ .write = DrvMainProcfsMpTestWrite,
+};
+
+static const struct file_operations _gProcMpTestLog = {
+ .read = DrvMainProcfsMpTestLogRead,
+ .write = DrvMainProcfsMpTestLogWrite,
+};
+
+static const struct file_operations _gProcMpTestFailChannel = {
+ .read = DrvMainProcfsMpTestFailChannelRead,
+ .write = DrvMainProcfsMpTestFailChannelWrite,
+};
+
+static const struct file_operations _gProcMpTestScope = {
+ .read = DrvMainProcfsMpTestScopeRead,
+ .write = DrvMainProcfsMpTestScopeWrite,
+};
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+
+static const struct file_operations _gProcFirmwareMode = {
+ .read = DrvMainProcfsFirmwareModeRead,
+ .write = DrvMainProcfsFirmwareModeWrite,
+};
+
+static const struct file_operations _gProcFirmwareSensor = {
+ .read = DrvMainProcfsFirmwareSensorRead,
+ .write = DrvMainProcfsFirmwareSensorWrite,
+};
+
+static const struct file_operations _gProcFirmwarePacketHeader = {
+ .read = DrvMainProcfsFirmwarePacketHeaderRead,
+ .write = DrvMainProcfsFirmwarePacketHeaderWrite,
+};
+
+
+static const struct file_operations _gProcQueryFeatureSupportStatus = {
+ .read = DrvMainProcfsQueryFeatureSupportStatusRead,
+ .write = DrvMainProcfsQueryFeatureSupportStatusWrite,
+};
+
+static const struct file_operations _gProcChangeFeatureSupportStatus = {
+ .read = DrvMainProcfsChangeFeatureSupportStatusRead,
+ .write = DrvMainProcfsChangeFeatureSupportStatusWrite,
+};
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+static const struct file_operations _gProcGestureWakeupMode = {
+ .read = DrvMainProcfsGestureWakeupModeRead,
+ .write = DrvMainProcfsGestureWakeupModeWrite,
+};
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+static const struct file_operations _gProcGestureDebugMode = {
+ .read = DrvMainProcfsGestureDebugModeRead,
+ .write = DrvMainProcfsGestureDebugModeWrite,
+};
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+static const struct file_operations _gProcGestureInforMode = {
+ .read = DrvMainProcfsGestureInforModeRead,
+ .write = DrvMainProcfsGestureInforModeWrite,
+};
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+static const struct file_operations _gProcReportRate = {
+ .read = DrvMainProcfsReportRateRead,
+ .write = DrvMainProcfsReportRateWrite,
+};
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+static const struct file_operations _gProcGloveMode= {
+ .read = DrvMainProcfsGloveModeRead,
+ .write = DrvMainProcfsGloveModeWrite,
+};
+
+static const struct file_operations _gProcOpenGloveMode= {
+ .read = DrvMainProcfsOpenGloveModeRead,
+// .write = DrvMainProcfsOpenGloveModeWrite,
+};
+
+static const struct file_operations _gProcCloseGloveMode= {
+ .read = DrvMainProcfsCloseGloveModeRead,
+// .write = DrvMainProcfsCloseGloveModeWrite,
+};
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+#ifdef CONFIG_ENABLE_JNI_INTERFACE
+static const struct file_operations _gProcJniMethod = {
+ .read = MsgToolRead,
+ .write = MsgToolWrite,
+ .unlocked_ioctl = MsgToolIoctl,
+ .compat_ioctl = MsgToolIoctl,
+};
+#endif //CONFIG_ENABLE_JNI_INTERFACE
+
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+struct mutex g_HKMutex;
+extern struct mutex g_QMutex;
+#endif //CONFIG_ENABLE_HOTKNOT
+
+/*=============================================================*/
+// GLOBAL VARIABLE DEFINITION
+/*=============================================================*/
+
+//u32 SLAVE_I2C_ID_DBBUS = (0xC4>>1); //0x62 // for MSG21XX/MSG21XXA/MSG26XXM/MSG28XX
+u32 SLAVE_I2C_ID_DBBUS = (0xB2>>1); //0x59 // for MSG22XX
+u32 SLAVE_I2C_ID_DWI2C = (0x4C>>1); //0x26
+
+
+u16 FIRMWARE_MODE_UNKNOWN_MODE = 0xFFFF;
+u16 FIRMWARE_MODE_DEMO_MODE = 0xFFFF;
+u16 FIRMWARE_MODE_DEBUG_MODE = 0xFFFF;
+u16 FIRMWARE_MODE_RAW_DATA_MODE = 0xFFFF;
+
+struct kset *g_TouchKSet = NULL;
+struct kobject *g_TouchKObj = NULL;
+u8 g_IsSwitchModeByAPK = 0;
+
+
+u8 IS_GESTURE_WAKEUP_ENABLED = 0;
+u8 IS_GESTURE_DEBUG_MODE_ENABLED = 0;
+u8 IS_GESTURE_INFORMATION_MODE_ENABLED = 0;
+u8 IS_GESTURE_WAKEUP_MODE_SUPPORT_64_TYPES_ENABLED = 0;
+
+u8 IS_TOUCH_DRIVER_DEBUG_LOG_ENABLED = CONFIG_ENABLE_TOUCH_DRIVER_DEBUG_LOG;
+u8 IS_FIRMWARE_DATA_LOG_ENABLED = CONFIG_ENABLE_FIRMWARE_DATA_LOG;
+
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+struct kset *g_GestureKSet = NULL;
+struct kobject *g_GestureKObj = NULL;
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+u16 g_FwPacketDataAddress = 0;
+u16 g_FwPacketFlagAddress = 0;
+u8 g_FwSupportSegment = 0;
+#endif //CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+u32 g_IsEnableReportRate = 0;
+u32 g_InterruptCount = 0;
+u32 g_ValidTouchCount = 0;
+u32 g_InterruptReportRate = 0;
+u32 g_ValidTouchReportRate = 0;
+
+struct timeval g_StartTime;
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+u8 g_IsEnableGloveMode = 0;
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+u8 g_FwData[MAX_UPDATE_FIRMWARE_BUFFER_SIZE][1024];
+u32 g_FwDataCount = 0;
+
+u8 g_IsHotknotEnabled = 0;
+u8 g_IsBypassHotknot = 0;
+u8 g_IsHotknotAlive = 0;
+
+
+/*=============================================================*/
+// LOCAL FUNCTION DEFINITION
+/*=============================================================*/
+
+static s32 _DrvMainCreateProcfsDirEntry(void);
+#ifdef CONFIG_ENABLE_HOTKNOT
+static s32 _DrvMainHotknotRegistry(void);
+#endif //CONFIG_ENABLE_HOTKNOT
+
+/*=============================================================*/
+// GLOBAL FUNCTION DEFINITION
+/*=============================================================*/
+
+//------------------------------------------------------------------------------//
+
+ssize_t DrvMainProcfsChipTypeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ nLength = sprintf(pBuffer, "%d", g_ChipType);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsChipTypeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DBG("*** %s() ***\n", __func__);
+
+// g_ChipType = DrvIcFwLyrGetChipType();
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsFirmwareDataRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DBG("*** %s() g_FwDataCount = %d ***\n", __func__, g_FwDataCount);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ *pPos += g_FwDataCount;
+
+ return g_FwDataCount;
+}
+
+ssize_t DrvMainProcfsFirmwareDataWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nNum = nCount / 1024;
+ u32 nRemainder = nCount % 1024;
+ u32 i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (nNum > 0) // nCount >= 1024
+ {
+ for (i = 0; i < nNum; i ++)
+ {
+ memcpy(g_FwData[g_FwDataCount], pBuffer+(i*1024), 1024);
+
+ g_FwDataCount ++;
+ }
+
+ if (nRemainder > 0) // Handle special firmware size like MSG22XX(48.5KB)
+ {
+ DBG("nRemainder = %d\n", nRemainder);
+
+ memcpy(g_FwData[g_FwDataCount], pBuffer+(i*1024), nRemainder);
+
+ g_FwDataCount ++;
+ }
+ }
+ else // nCount < 1024
+ {
+ if (nCount > 0)
+ {
+ memcpy(g_FwData[g_FwDataCount], pBuffer, nCount);
+
+ g_FwDataCount ++;
+ }
+ }
+
+ DBG("*** g_FwDataCount = %d ***\n", g_FwDataCount);
+
+ if (pBuffer != NULL)
+ {
+ DBG("*** buf[0] = %c ***\n", pBuffer[0]);
+ }
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsFirmwareUpdateRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ nLength = sprintf(pBuffer, "%d", _gIsUpdateComplete);
+
+ DBG("*** _gIsUpdateComplete = %d ***\n", _gIsUpdateComplete);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsFirmwareUpdateWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ DBG("*** %s() g_FwDataCount = %d ***\n", __func__, g_FwDataCount);
+
+ if (0 != DrvIcFwLyrUpdateFirmware(g_FwData, EMEM_ALL))
+ {
+ _gIsUpdateComplete = 0;
+ DBG("Update FAILED\n");
+ }
+ else
+ {
+ _gIsUpdateComplete = 1;
+ DBG("Update SUCCESS\n");
+ }
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsCustomerFirmwareVersionRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ u16 nMajor = 0, nMinor = 0;
+
+ DrvIcFwLyrGetCustomerFirmwareVersion(&nMajor, &nMinor, &_gFwVersion);
+
+ DBG("*** %s() _gFwVersion = %s ***\n", __func__, _gFwVersion);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ nLength = sprintf(pBuffer, "%s\n", _gFwVersion);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsCustomerFirmwareVersionWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u16 nMajor = 0, nMinor = 0;
+
+ DrvIcFwLyrGetCustomerFirmwareVersion(&nMajor, &nMinor, &_gFwVersion);
+
+ DBG("*** %s() _gFwVersion = %s ***\n", __func__, _gFwVersion);
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsPlatformFirmwareVersionRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() _gPlatformFwVersion = %s ***\n", __func__, _gPlatformFwVersion);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ nLength = sprintf(pBuffer, "%s\n", _gPlatformFwVersion);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsPlatformFirmwareVersionWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DrvIcFwLyrGetPlatformFirmwareVersion(&_gPlatformFwVersion);
+
+ DBG("*** %s() _gPlatformFwVersion = %s ***\n", __func__, _gPlatformFwVersion);
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsDeviceDriverVersionRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ nLength = sprintf(pBuffer, "%s", DEVICE_DRIVER_RELEASE_VERSION);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsDeviceDriverVersionWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsSdCardFirmwareUpdateRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u16 nMajor = 0, nMinor = 0;
+ u32 nLength = 0;
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ DrvIcFwLyrGetCustomerFirmwareVersion(&nMajor, &nMinor, &_gFwVersion);
+
+ DBG("*** %s() _gFwVersion = %s ***\n", __func__, _gFwVersion);
+
+ nLength = sprintf(pBuffer, "%s\n", _gFwVersion);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsSdCardFirmwareUpdateWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ char *pValid = NULL;
+ char *pTmpFilePath = NULL;
+ char szFilePath[100] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+ DBG("pBuffer = %s\n", pBuffer);
+
+ if (pBuffer != NULL)
+ {
+ pValid = strstr(pBuffer, ".bin");
+
+ if (pValid)
+ {
+ pTmpFilePath = strsep((char **)&pBuffer, ".");
+
+ DBG("pTmpFilePath = %s\n", pTmpFilePath);
+
+ strcat(szFilePath, pTmpFilePath);
+ strcat(szFilePath, ".bin");
+
+ DBG("szFilePath = %s\n", szFilePath);
+
+ if (0 != DrvFwCtrlUpdateFirmwareBySdCard(szFilePath))
+ {
+ DBG("Update FAILED\n");
+ }
+ else
+ {
+ DBG("Update SUCCESS\n");
+ }
+ }
+ else
+ {
+ DBG("The file type of the update firmware bin file is not a .bin file.\n");
+ }
+ }
+ else
+ {
+ DBG("The file path of the update firmware bin file is NULL.\n");
+ }
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsFirmwareDebugRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 i, nLength = 0;
+ u8 nBank, nAddr;
+ u16 szRegData[MAX_DEBUG_REGISTER_NUM] = {0};
+ u8 szOut[MAX_DEBUG_REGISTER_NUM*25] = {0}, szValue[10] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ for (i = 0; i < _gDebugRegCount; i ++)
+ {
+ szRegData[i] = RegGet16BitValue(_gDebugReg[i]);
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ for (i = 0; i < _gDebugRegCount; i ++)
+ {
+ nBank = (_gDebugReg[i] >> 8) & 0xFF;
+ nAddr = _gDebugReg[i] & 0xFF;
+
+ DBG("reg(0x%02X,0x%02X)=0x%04X\n", nBank, nAddr, szRegData[i]);
+
+ strcat(szOut, "reg(");
+ sprintf(szValue, "0x%02X", nBank);
+ strcat(szOut, szValue);
+ strcat(szOut, ",");
+ sprintf(szValue, "0x%02X", nAddr);
+ strcat(szOut, szValue);
+ strcat(szOut, ")=");
+ sprintf(szValue, "0x%04X", szRegData[i]);
+ strcat(szOut, szValue);
+ strcat(szOut, "\n");
+ }
+
+ nLength = sprintf(pBuffer, "%s\n", szOut);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsFirmwareDebugWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 i;
+ char *pCh;
+ char *pData = NULL;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ DBG("*** pBuffer[0] = %c ***\n", pBuffer[0]);
+ DBG("*** pBuffer[1] = %c ***\n", pBuffer[1]);
+ DBG("*** pBuffer[2] = %c ***\n", pBuffer[2]);
+ DBG("*** pBuffer[3] = %c ***\n", pBuffer[3]);
+ DBG("*** pBuffer[4] = %c ***\n", pBuffer[4]);
+ DBG("*** pBuffer[5] = %c ***\n", pBuffer[5]);
+
+ DBG("nCount = %d\n", (int)nCount);
+
+ pData = kmalloc(nCount, GFP_KERNEL);
+ if (!pData)
+ {
+ return -ENOMEM;
+ }
+
+ if (copy_from_user(pData, pBuffer, nCount))
+ {
+ DBG("copy_from_user() failed\n");
+
+ kfree(pData);
+ return -EFAULT;
+ }
+
+ i = 0;
+
+ while ((pCh = strsep((char **)&pData, " ,")) && (i < MAX_DEBUG_REGISTER_NUM))
+ {
+ DBG("pCh = %s\n", pCh);
+
+ _gDebugReg[i] = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+
+ DBG("_gDebugReg[%d] = 0x%04X\n", i, _gDebugReg[i]);
+ i ++;
+ }
+ _gDebugRegCount = i;
+
+ DBG("_gDebugRegCount = %d\n", _gDebugRegCount);
+
+ kfree(pData);
+ }
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsFirmwareSetDebugValueRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 i, nLength = 0;
+ u8 nBank, nAddr;
+ u16 szRegData[MAX_DEBUG_REGISTER_NUM] = {0};
+ u8 szOut[MAX_DEBUG_REGISTER_NUM*25] = {0}, szValue[10] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ for (i = 0; i < _gDebugRegCount; i ++)
+ {
+ szRegData[i] = RegGet16BitValue(_gDebugReg[i]);
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ for (i = 0; i < _gDebugRegCount; i ++)
+ {
+ nBank = (_gDebugReg[i] >> 8) & 0xFF;
+ nAddr = _gDebugReg[i] & 0xFF;
+
+ DBG("reg(0x%02X,0x%02X)=0x%04X\n", nBank, nAddr, szRegData[i]);
+
+ strcat(szOut, "reg(");
+ sprintf(szValue, "0x%02X", nBank);
+ strcat(szOut, szValue);
+ strcat(szOut, ",");
+ sprintf(szValue, "0x%02X", nAddr);
+ strcat(szOut, szValue);
+ strcat(szOut, ")=");
+ sprintf(szValue, "0x%04X", szRegData[i]);
+ strcat(szOut, szValue);
+ strcat(szOut, "\n");
+ }
+
+ nLength = sprintf(pBuffer, "%s\n", szOut);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsFirmwareSetDebugValueWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 i, j, k;
+ char *pCh;
+ char *pData = NULL;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ DBG("*** pBuffer[0] = %c ***\n", pBuffer[0]);
+ DBG("*** pBuffer[1] = %c ***\n", pBuffer[1]);
+
+ DBG("nCount = %d\n", (int)nCount);
+
+ pData = kmalloc(nCount, GFP_KERNEL);
+ if (!pData)
+ {
+ return -ENOMEM;
+ }
+
+ if (copy_from_user(pData, pBuffer, nCount))
+ {
+ DBG("copy_from_user() failed\n");
+
+ kfree(pData);
+ return -EFAULT;
+ }
+
+ i = 0;
+ j = 0;
+ k = 0;
+
+ while ((pCh = strsep((char **)&pData, " ,")) && (i < 2))
+ {
+ DBG("pCh = %s\n", pCh);
+
+ if ((i%2) == 0)
+ {
+ _gDebugReg[j] = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+ DBG("_gDebugReg[%d] = 0x%04X\n", j, _gDebugReg[j]);
+ j ++;
+ }
+ else // (i%2) == 1
+ {
+ _gDebugRegValue[k] = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+ DBG("_gDebugRegValue[%d] = 0x%04X\n", k, _gDebugRegValue[k]);
+ k ++;
+ }
+
+ i ++;
+ }
+ _gDebugRegCount = j;
+
+ DBG("_gDebugRegCount = %d\n", _gDebugRegCount);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ for (i = 0; i < _gDebugRegCount; i ++)
+ {
+ RegSet16BitValue(_gDebugReg[i], _gDebugRegValue[i]);
+ DBG("_gDebugReg[%d] = 0x%04X, _gDebugRegValue[%d] = 0x%04X\n", i, _gDebugReg[i], i , _gDebugRegValue[i]); // add for debug
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ kfree(pData);
+ }
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsFirmwareSmBusDebugRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 i, nLength = 0;
+ u8 szSmBusRxData[MAX_I2C_TRANSACTION_LENGTH_LIMIT] = {0};
+ u8 szOut[MAX_I2C_TRANSACTION_LENGTH_LIMIT*2] = {0};
+ u8 szValue[10] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ if (_gDebugCmdArguCount > 0) // Send write command
+ {
+ DBG("Execute I2C SMBUS write command\n");
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &_gDebugCmdArgu[0], _gDebugCmdArguCount);
+ }
+
+ if (_gDebugReadDataSize > 0) // Send read command
+ {
+ DBG("Execute I2C SMBUS read command\n");
+
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szSmBusRxData[0], _gDebugReadDataSize);
+ }
+
+ for (i = 0; i < _gDebugReadDataSize; i ++)
+ {
+ DBG("szSmBusRxData[%d] = 0x%x\n", i, szSmBusRxData[i]);
+
+ sprintf(szValue, "0x%02X", szSmBusRxData[i]);
+ strcat(szOut, szValue);
+ strcat(szOut, "\n");
+ }
+
+ nLength = sprintf(pBuffer, "%s\n", szOut);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsFirmwareSmBusDebugWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 i, j;
+ char szCmdType[5] = {0};
+ char *pCh = NULL;
+ char *pData = NULL;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ DBG("*** pBuffer[0] = %c ***\n", pBuffer[0]);
+ DBG("*** pBuffer[1] = %c ***\n", pBuffer[1]);
+ DBG("*** pBuffer[2] = %c ***\n", pBuffer[2]);
+ DBG("*** pBuffer[3] = %c ***\n", pBuffer[3]);
+ DBG("*** pBuffer[4] = %c ***\n", pBuffer[4]);
+ DBG("*** pBuffer[5] = %c ***\n", pBuffer[5]);
+
+ DBG("nCount = %d\n", (int)nCount);
+
+ pData = kmalloc(nCount, GFP_KERNEL);
+ if (!pData)
+ {
+ return -ENOMEM;
+ }
+
+ if (copy_from_user(pData, pBuffer, nCount))
+ {
+ DBG("copy_from_user() failed\n");
+
+ kfree(pData);
+ return -EFAULT;
+ }
+
+ // Reset to 0 before parsing the adb command
+ _gDebugCmdArguCount = 0;
+ _gDebugReadDataSize = 0;
+
+ i = 0;
+ j = 0;
+
+ while ((pCh = strsep((char **)&pData, " ,")) && (j < MAX_DEBUG_COMMAND_ARGUMENT_NUM))
+ {
+ DBG("pCh = %s\n", pCh);
+
+ if (strcmp(pCh, "w") == 0 || strcmp(pCh, "r") == 0)
+ {
+ memcpy(szCmdType, pCh, strlen(pCh));
+ }
+ else if (strcmp(szCmdType, "w") == 0)
+ {
+ _gDebugCmdArgu[j] = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+ DBG("_gDebugCmdArgu[%d] = 0x%02X\n", j, _gDebugCmdArgu[j]);
+
+ j ++;
+
+ _gDebugCmdArguCount = j;
+ DBG("_gDebugCmdArguCount = %d\n", _gDebugCmdArguCount);
+ }
+ else if (strcmp(szCmdType, "r") == 0)
+ {
+ sscanf(pCh, "%d", &_gDebugReadDataSize);
+ DBG("_gDebugReadDataSize = %d\n", _gDebugReadDataSize);
+ }
+ else
+ {
+ DBG("Un-supported adb command format!\n");
+ }
+
+ i ++;
+ }
+
+ kfree(pData);
+ }
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsFirmwareSetDQMemValueRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 i, nLength = 0;
+ u8 nBank, nAddr;
+ u32 szRegData[MAX_DEBUG_REGISTER_NUM] = {0};
+ u8 szOut[MAX_DEBUG_REGISTER_NUM*25] = {0}, szValue[10] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ for (i = 0; i < _gDebugRegCount; i ++)
+ {
+ szRegData[i] = DrvIcFwLyrReadDQMemValue(_gDebugReg[i]);
+ }
+
+ for (i = 0; i < _gDebugRegCount; i ++)
+ {
+ nBank = (_gDebugReg[i] >> 8) & 0xFF;
+ nAddr = _gDebugReg[i] & 0xFF;
+
+ DBG("reg(0x%02X,0x%02X)=0x%08X\n", nBank, nAddr, szRegData[i]);
+
+ strcat(szOut, "reg(");
+ sprintf(szValue, "0x%02X", nBank);
+ strcat(szOut, szValue);
+ strcat(szOut, ",");
+ sprintf(szValue, "0x%02X", nAddr);
+ strcat(szOut, szValue);
+ strcat(szOut, ")=");
+ sprintf(szValue, "0x%04X", szRegData[i]);
+ strcat(szOut, szValue);
+ strcat(szOut, "\n");
+ }
+
+ nLength = sprintf(pBuffer, "%s\n", szOut);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsFirmwareSetDQMemValueWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 i, j, k;
+ char *pCh;
+ char *pData = NULL;
+ u16 nRealDQMemAddr = 0;
+ u32 nRealDQMemValue = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ DBG("*** pBuffer[0] = %c ***\n", pBuffer[0]);
+ DBG("*** pBuffer[1] = %c ***\n", pBuffer[1]);
+
+ DBG("nCount = %d\n", (int)nCount);
+
+ pData = kmalloc(nCount, GFP_KERNEL);
+ if (!pData)
+ {
+ return -ENOMEM;
+ }
+
+ if (copy_from_user(pData, pBuffer, nCount))
+ {
+ DBG("copy_from_user() failed\n");
+
+ kfree(pData);
+ return -EFAULT;
+ }
+
+ i = 0;
+ j = 0;
+ k = 0;
+
+ while ((pCh = strsep((char **)&pData, " ,")) && (i < 2))
+ {
+ DBG("pCh = %s\n", pCh);
+
+ if ((i%2) == 0)
+ {
+ _gDebugReg[j] = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+ DBG("_gDebugReg[%d] = 0x%04X\n", j, _gDebugReg[j]);
+ j ++;
+ }
+ else // (i%2) == 1
+ {
+ _gDebugRegValue[k] = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+ DBG("_gDebugRegValue[%d] = 0x%04X\n", k, _gDebugRegValue[k]);
+ k ++;
+ }
+
+ i ++;
+ }
+ _gDebugRegCount = j;
+
+ DBG("_gDebugRegCount = %d\n", _gDebugRegCount);
+
+ if ((_gDebugReg[0] % 4) == 0)
+ {
+ nRealDQMemAddr = _gDebugReg[0];
+ nRealDQMemValue = DrvIcFwLyrReadDQMemValue(nRealDQMemAddr);
+ _gDebugReg[0] = nRealDQMemAddr;
+ DBG("nRealDQMemValue Raw = %X\n", nRealDQMemValue);
+ nRealDQMemValue &= 0xFFFF0000;
+ nRealDQMemValue |= _gDebugRegValue[0];
+ DBG("nRealDQMemValue Modify = %X\n", nRealDQMemValue);
+ DrvIcFwLyrWriteDQMemValue(nRealDQMemAddr, nRealDQMemValue);
+ }
+ else if ((_gDebugReg[0] % 4) == 2)
+ {
+ nRealDQMemAddr = _gDebugReg[0] - 2;
+ nRealDQMemValue = DrvIcFwLyrReadDQMemValue(nRealDQMemAddr);
+ _gDebugReg[0] = nRealDQMemAddr;
+ DBG("nRealDQMemValue Raw = %X\n", nRealDQMemValue);
+
+ nRealDQMemValue &= 0x0000FFFF;
+ nRealDQMemValue |= (_gDebugRegValue[0] << 16);
+ DBG("nRealDQMemValue Modify = %X\n", nRealDQMemValue);
+ DrvIcFwLyrWriteDQMemValue(nRealDQMemAddr, nRealDQMemValue);
+ }
+
+ kfree(pData);
+ }
+
+ return nCount;
+}
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+
+ssize_t DrvMainProcfsMpTestRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ DBG("*** ctp mp test status = %d ***\n", DrvIcFwLyrGetMpTestResult());
+
+ nLength = sprintf(pBuffer, "%d", DrvIcFwLyrGetMpTestResult());
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsMpTestWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nMode = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ sscanf(pBuffer, "%x", &nMode);
+
+ DBG("Mp Test Mode = 0x%x\n", nMode);
+
+ if (nMode == ITO_TEST_MODE_OPEN_TEST) //open test
+ {
+ _gItoTestMode = ITO_TEST_MODE_OPEN_TEST;
+ DrvIcFwLyrScheduleMpTestWork(ITO_TEST_MODE_OPEN_TEST);
+ }
+ else if (nMode == ITO_TEST_MODE_SHORT_TEST) //short test
+ {
+ _gItoTestMode = ITO_TEST_MODE_SHORT_TEST;
+ DrvIcFwLyrScheduleMpTestWork(ITO_TEST_MODE_SHORT_TEST);
+ }
+ else if (nMode == ITO_TEST_MODE_WATERPROOF_TEST) //waterproof test
+ {
+ _gItoTestMode = ITO_TEST_MODE_WATERPROOF_TEST;
+ DrvIcFwLyrScheduleMpTestWork(ITO_TEST_MODE_WATERPROOF_TEST);
+ }
+ else
+ {
+ DBG("*** Undefined MP Test Mode ***\n");
+ }
+ }
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsMpTestLogRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ DrvIcFwLyrGetMpTestDataLog(_gItoTestMode, pBuffer, &nLength);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsMpTestLogWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsMpTestFailChannelRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ DrvIcFwLyrGetMpTestFailChannel(_gItoTestMode, pBuffer, &nLength);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsMpTestFailChannelWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsMpTestScopeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+ DrvIcFwLyrGetMpTestScope(&g_TestScopeInfo);
+
+ nLength = sprintf(pBuffer, "%d,%d", g_TestScopeInfo.nMx, g_TestScopeInfo.nMy);
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsMpTestScopeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ return nCount;
+}
+
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+/*--------------------------------------------------------------------------*/
+
+ssize_t DrvMainProcfsFirmwareModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ g_FirmwareMode = DrvIcFwLyrGetFirmwareMode();
+
+ DBG("%s() firmware mode = 0x%x\n", __func__, g_FirmwareMode);
+
+ nLength = sprintf(pBuffer, "%x", g_FirmwareMode);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ DrvIcFwLyrGetFirmwareInfo(&g_FirmwareInfo);
+ g_FirmwareMode = g_FirmwareInfo.nFirmwareMode;
+
+ DBG("%s() firmware mode = 0x%x\n", __func__, g_FirmwareInfo.nFirmwareMode);
+
+ nLength = sprintf(pBuffer, "%x", g_FirmwareInfo.nFirmwareMode);
+ }
+#elif defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC)
+ if (g_ChipType == CHIP_TYPE_MSG21XXA || g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ DrvIcFwLyrGetFirmwareInfo(&g_FirmwareInfo);
+ g_FirmwareMode = g_FirmwareInfo.nFirmwareMode;
+
+ DBG("%s() firmware mode = 0x%x, can change firmware mode = %d\n", __func__, g_FirmwareInfo.nFirmwareMode, g_FirmwareInfo.nIsCanChangeFirmwareMode);
+
+ nLength = sprintf(pBuffer, "%x,%d", g_FirmwareInfo.nFirmwareMode, g_FirmwareInfo.nIsCanChangeFirmwareMode);
+ }
+#endif
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsFirmwareModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nMode;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ sscanf(pBuffer, "%x", &nMode);
+ DBG("firmware mode = 0x%x\n", nMode);
+
+ g_IsSwitchModeByAPK = 0;
+
+ if (nMode == FIRMWARE_MODE_DEMO_MODE) //demo mode
+ {
+ g_FirmwareMode = DrvIcFwLyrChangeFirmwareMode(FIRMWARE_MODE_DEMO_MODE);
+ }
+ else if (nMode == FIRMWARE_MODE_DEBUG_MODE) //debug mode
+ {
+ g_FirmwareMode = DrvIcFwLyrChangeFirmwareMode(FIRMWARE_MODE_DEBUG_MODE);
+ g_IsSwitchModeByAPK = 1;
+ }
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC)
+ else if (nMode == FIRMWARE_MODE_RAW_DATA_MODE) //raw data mode
+ {
+ g_FirmwareMode = DrvIcFwLyrChangeFirmwareMode(FIRMWARE_MODE_RAW_DATA_MODE);
+ g_IsSwitchModeByAPK = 1;
+ }
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC
+ else
+ {
+ DBG("*** Undefined Firmware Mode ***\n");
+ }
+ }
+
+ DBG("*** g_FirmwareMode = 0x%x ***\n", g_FirmwareMode);
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsFirmwareSensorRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+ if (g_FirmwareInfo.nLogModePacketHeader == 0xA5 || g_FirmwareInfo.nLogModePacketHeader == 0xAB)
+ {
+ nLength = sprintf(pBuffer, "%d,%d", g_FirmwareInfo.nMx, g_FirmwareInfo.nMy);
+ }
+ else if (g_FirmwareInfo.nLogModePacketHeader == 0xA7)
+ {
+ nLength = sprintf(pBuffer, "%d,%d,%d,%d", g_FirmwareInfo.nMx, g_FirmwareInfo.nMy, g_FirmwareInfo.nSs, g_FirmwareInfo.nSd);
+ }
+ else
+ {
+ DBG("Undefined debug mode packet format : 0x%x\n", g_FirmwareInfo.nLogModePacketHeader);
+ nLength = 0;
+ }
+#elif defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC)
+ nLength = sprintf(pBuffer, "%d", g_FirmwareInfo.nLogModePacketLength);
+#endif
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsFirmwareSensorWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DBG("*** %s() ***\n", __func__);
+
+// DrvIcFwLyrGetFirmwareInfo(&g_FirmwareInfo);
+// if (g_ChipType == CHIP_TYPE_MSG21XXA || g_ChipType == CHIP_TYPE_MSG22XX || g_ChipType == CHIP_TYPE_MSG28XX)
+// {
+// g_FirmwareMode = g_FirmwareInfo.nFirmwareMode;
+// }
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsFirmwarePacketHeaderRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ nLength = sprintf(pBuffer, "%d", g_FirmwareInfo.nLogModePacketHeader);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsFirmwarePacketHeaderWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DBG("*** %s() ***\n", __func__);
+
+// DrvIcFwLyrGetFirmwareInfo(&g_FirmwareInfo);
+// if (g_ChipType == CHIP_TYPE_MSG21XXA || g_ChipType == CHIP_TYPE_MSG22XX || g_ChipType == CHIP_TYPE_MSG28XX)
+// {
+// g_FirmwareMode = g_FirmwareInfo.nFirmwareMode;
+// }
+
+ return nCount;
+}
+
+ssize_t DrvMainKObjectPacketShow(struct kobject *pKObj, struct kobj_attribute *pAttr, char *pBuf)
+{
+ u32 i = 0;
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (strcmp(pAttr->attr.name, "packet") == 0)
+ {
+ if (g_LogModePacket != NULL)
+ {
+ DBG("g_FirmwareMode=%x, g_LogModePacket[0]=%x, g_LogModePacket[1]=%x\n", g_FirmwareMode, g_LogModePacket[0], g_LogModePacket[1]);
+ DBG("g_LogModePacket[2]=%x, g_LogModePacket[3]=%x\n", g_LogModePacket[2], g_LogModePacket[3]);
+ DBG("g_LogModePacket[4]=%x, g_LogModePacket[5]=%x\n", g_LogModePacket[4], g_LogModePacket[5]);
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+ if ((g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE) && (g_LogModePacket[0] == 0xA5 || g_LogModePacket[0] == 0xAB || g_LogModePacket[0] == 0xA7))
+#elif defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC)
+ if ((g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE || g_FirmwareMode == FIRMWARE_MODE_RAW_DATA_MODE) && (g_LogModePacket[0] == 0x62))
+#endif
+ {
+ for (i = 0; i < g_FirmwareInfo.nLogModePacketLength; i ++)
+ {
+ pBuf[i] = g_LogModePacket[i];
+ }
+
+ nLength = g_FirmwareInfo.nLogModePacketLength;
+ DBG("nLength = %d\n", nLength);
+ }
+ else
+ {
+ DBG("CURRENT MODE IS NOT DEBUG MODE/WRONG DEBUG MODE HEADER\n");
+ }
+ }
+ else
+ {
+ DBG("g_LogModePacket is NULL\n");
+ }
+ }
+ else
+ {
+ DBG("pAttr->attr.name = %s \n", pAttr->attr.name);
+ }
+
+ return nLength;
+}
+
+ssize_t DrvMainKObjectPacketStore(struct kobject *pKObj, struct kobj_attribute *pAttr, const char *pBuf, size_t nCount)
+{
+ DBG("*** %s() ***\n", __func__);
+/*
+ if (strcmp(pAttr->attr.name, "packet") == 0)
+ {
+
+ }
+*/
+ return nCount;
+}
+
+static struct kobj_attribute packet_attr = __ATTR(packet, 0666, DrvMainKObjectPacketShow, DrvMainKObjectPacketStore);
+
+/* Create a group of attributes so that we can create and destroy them all at once. */
+static struct attribute *attrs[] = {
+ &packet_attr.attr,
+ NULL, /* need to NULL terminate the list of attributes */
+};
+
+/*
+ * An unnamed attribute group will put all of the attributes directly in
+ * the kobject directory. If we specify a name, a subdirectory will be
+ * created for the attributes with the directory being the name of the
+ * attribute group.
+ */
+struct attribute_group attr_group = {
+ .attrs = attrs,
+};
+
+
+//------------------------------------------------------------------------------//
+
+ssize_t DrvMainProcfsQueryFeatureSupportStatusRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ nLength = sprintf(pBuffer, "%d", _gFeatureSupportStatus);
+
+ DBG("*** _gFeatureSupportStatus = %d ***\n", _gFeatureSupportStatus);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsQueryFeatureSupportStatusWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nFeature;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ sscanf(pBuffer, "%x", &nFeature);
+ DBG("nFeature = 0x%x\n", nFeature);
+
+ if (nFeature == FEATURE_GESTURE_WAKEUP_MODE)
+ {
+ _gFeatureSupportStatus = IS_GESTURE_WAKEUP_ENABLED;
+ }
+ else if (nFeature == FEATURE_GESTURE_DEBUG_MODE)
+ {
+ _gFeatureSupportStatus = IS_GESTURE_DEBUG_MODE_ENABLED;
+ }
+ else if (nFeature == FEATURE_GESTURE_INFORMATION_MODE)
+ {
+ _gFeatureSupportStatus = IS_GESTURE_INFORMATION_MODE_ENABLED;
+ }
+ else if (nFeature == FEATURE_TOUCH_DRIVER_DEBUG_LOG)
+ {
+ _gFeatureSupportStatus = IS_TOUCH_DRIVER_DEBUG_LOG_ENABLED;
+ }
+ else if (nFeature == FEATURE_FIRMWARE_DATA_LOG)
+ {
+ _gFeatureSupportStatus = IS_FIRMWARE_DATA_LOG_ENABLED;
+ }
+ else
+ {
+ DBG("*** Undefined Feature ***\n");
+ }
+ }
+
+ DBG("*** _gFeatureSupportStatus = %d ***\n", _gFeatureSupportStatus);
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsChangeFeatureSupportStatusRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ nLength = sprintf(pBuffer, "%d", _gFeatureSupportStatus);
+
+ DBG("*** _gFeatureSupportStatus = %d ***\n", _gFeatureSupportStatus);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsChangeFeatureSupportStatusWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 i;
+ u32 nFeature = 0, nNewValue = 0;
+ char *pCh;
+ char *pData = NULL;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ DBG("nCount = %d\n", (int)nCount);
+
+ pData = kmalloc(nCount, GFP_KERNEL);
+ if (!pData)
+ {
+ return -ENOMEM;
+ }
+
+ if (copy_from_user(pData, pBuffer, nCount))
+ {
+ DBG("copy_from_user() failed\n");
+
+ kfree(pData);
+ return -EFAULT;
+ }
+
+ i = 0;
+
+ while ((pCh = strsep((char **)&pData, " ,")) && (i < 3))
+ {
+ DBG("pCh = %s\n", pCh);
+
+ if (i == 0)
+ {
+ nFeature = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+ DBG("nFeature = 0x%04X\n", nFeature);
+ }
+ else if (i == 1)
+ {
+ nNewValue = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+ DBG("nNewValue = %d\n", nNewValue);
+ }
+ else
+ {
+ DBG("End of parsing adb command.\n");
+ }
+
+ i ++;
+ }
+
+ if (nFeature == FEATURE_GESTURE_WAKEUP_MODE)
+ {
+ IS_GESTURE_WAKEUP_ENABLED = nNewValue;
+ _gFeatureSupportStatus = IS_GESTURE_WAKEUP_ENABLED;
+ }
+ else if (nFeature == FEATURE_GESTURE_DEBUG_MODE)
+ {
+ IS_GESTURE_DEBUG_MODE_ENABLED = nNewValue;
+ _gFeatureSupportStatus = IS_GESTURE_DEBUG_MODE_ENABLED;
+ }
+ else if (nFeature == FEATURE_GESTURE_INFORMATION_MODE)
+ {
+ IS_GESTURE_INFORMATION_MODE_ENABLED = nNewValue;
+ _gFeatureSupportStatus = IS_GESTURE_INFORMATION_MODE_ENABLED;
+ }
+ else if (nFeature == FEATURE_TOUCH_DRIVER_DEBUG_LOG)
+ {
+ IS_TOUCH_DRIVER_DEBUG_LOG_ENABLED = nNewValue;
+ _gFeatureSupportStatus = IS_TOUCH_DRIVER_DEBUG_LOG_ENABLED;
+ }
+ else if (nFeature == FEATURE_FIRMWARE_DATA_LOG)
+ {
+ IS_FIRMWARE_DATA_LOG_ENABLED = nNewValue;
+ _gFeatureSupportStatus = IS_FIRMWARE_DATA_LOG_ENABLED;
+ }
+ else
+ {
+ DBG("*** Undefined Feature ***\n");
+ }
+
+ DBG("*** _gFeatureSupportStatus = %d ***\n", _gFeatureSupportStatus);
+
+ kfree(pData);
+ }
+
+ return nCount;
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+ssize_t DrvMainProcfsGestureWakeupModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+#ifdef CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+ DBG("g_GestureWakeupMode = 0x%x, 0x%x\n", g_GestureWakeupMode[0], g_GestureWakeupMode[1]);
+
+ nLength = sprintf(pBuffer, "%x,%x", g_GestureWakeupMode[0], g_GestureWakeupMode[1]);
+#else
+ DBG("g_GestureWakeupMode = 0x%x\n", g_GestureWakeupMode[0]);
+
+ nLength = sprintf(pBuffer, "%x", g_GestureWakeupMode[0]);
+#endif //CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsGestureWakeupModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength;
+ u32 nWakeupMode[2] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+#ifdef CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+ u32 i;
+ char *pCh;
+
+ i = 0;
+ while ((pCh = strsep((char **)&pBuffer, " ,")) && (i < 2))
+ {
+ DBG("pCh = %s\n", pCh);
+
+ nWakeupMode[i] = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+
+ DBG("nWakeupMode[%d] = 0x%04X\n", i, nWakeupMode[i]);
+ i ++;
+ }
+#else
+ sscanf(pBuffer, "%x", &nWakeupMode[0]);
+ DBG("nWakeupMode = 0x%x\n", nWakeupMode[0]);
+#endif //CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+
+ nLength = nCount;
+ DBG("nLength = %d\n", nLength);
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_DOUBLE_CLICK_FLAG) == GESTURE_WAKEUP_MODE_DOUBLE_CLICK_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_DOUBLE_CLICK_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_DOUBLE_CLICK_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_UP_DIRECT_FLAG) == GESTURE_WAKEUP_MODE_UP_DIRECT_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_UP_DIRECT_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_UP_DIRECT_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_DOWN_DIRECT_FLAG) == GESTURE_WAKEUP_MODE_DOWN_DIRECT_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_DOWN_DIRECT_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_DOWN_DIRECT_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_LEFT_DIRECT_FLAG) == GESTURE_WAKEUP_MODE_LEFT_DIRECT_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_LEFT_DIRECT_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_LEFT_DIRECT_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RIGHT_DIRECT_FLAG) == GESTURE_WAKEUP_MODE_RIGHT_DIRECT_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RIGHT_DIRECT_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RIGHT_DIRECT_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_m_CHARACTER_FLAG) == GESTURE_WAKEUP_MODE_m_CHARACTER_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_m_CHARACTER_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_m_CHARACTER_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_W_CHARACTER_FLAG) == GESTURE_WAKEUP_MODE_W_CHARACTER_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_W_CHARACTER_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_W_CHARACTER_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_C_CHARACTER_FLAG) == GESTURE_WAKEUP_MODE_C_CHARACTER_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_C_CHARACTER_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_C_CHARACTER_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_e_CHARACTER_FLAG) == GESTURE_WAKEUP_MODE_e_CHARACTER_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_e_CHARACTER_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_e_CHARACTER_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_V_CHARACTER_FLAG) == GESTURE_WAKEUP_MODE_V_CHARACTER_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_V_CHARACTER_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_V_CHARACTER_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_O_CHARACTER_FLAG) == GESTURE_WAKEUP_MODE_O_CHARACTER_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_O_CHARACTER_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_O_CHARACTER_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_S_CHARACTER_FLAG) == GESTURE_WAKEUP_MODE_S_CHARACTER_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_S_CHARACTER_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_S_CHARACTER_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_Z_CHARACTER_FLAG) == GESTURE_WAKEUP_MODE_Z_CHARACTER_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_Z_CHARACTER_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_Z_CHARACTER_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE1_FLAG) == GESTURE_WAKEUP_MODE_RESERVE1_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE1_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE1_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE2_FLAG) == GESTURE_WAKEUP_MODE_RESERVE2_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE2_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE2_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE3_FLAG) == GESTURE_WAKEUP_MODE_RESERVE3_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE3_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE3_FLAG);
+ }
+
+#ifdef CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE4_FLAG) == GESTURE_WAKEUP_MODE_RESERVE4_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE4_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE4_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE5_FLAG) == GESTURE_WAKEUP_MODE_RESERVE5_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE5_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE5_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE6_FLAG) == GESTURE_WAKEUP_MODE_RESERVE6_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE6_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE6_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE7_FLAG) == GESTURE_WAKEUP_MODE_RESERVE7_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE7_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE7_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE8_FLAG) == GESTURE_WAKEUP_MODE_RESERVE8_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE8_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE8_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE9_FLAG) == GESTURE_WAKEUP_MODE_RESERVE9_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE9_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE9_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE10_FLAG) == GESTURE_WAKEUP_MODE_RESERVE10_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE10_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE10_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE11_FLAG) == GESTURE_WAKEUP_MODE_RESERVE11_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE11_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE11_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE12_FLAG) == GESTURE_WAKEUP_MODE_RESERVE12_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE12_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE12_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE13_FLAG) == GESTURE_WAKEUP_MODE_RESERVE13_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE13_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE13_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE14_FLAG) == GESTURE_WAKEUP_MODE_RESERVE14_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE14_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE14_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE15_FLAG) == GESTURE_WAKEUP_MODE_RESERVE15_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE15_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE15_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE16_FLAG) == GESTURE_WAKEUP_MODE_RESERVE16_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE16_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE16_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE17_FLAG) == GESTURE_WAKEUP_MODE_RESERVE17_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE17_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE17_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE18_FLAG) == GESTURE_WAKEUP_MODE_RESERVE18_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE18_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE18_FLAG);
+ }
+
+ if ((nWakeupMode[0] & GESTURE_WAKEUP_MODE_RESERVE19_FLAG) == GESTURE_WAKEUP_MODE_RESERVE19_FLAG)
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] | GESTURE_WAKEUP_MODE_RESERVE19_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[0] = g_GestureWakeupMode[0] & (~GESTURE_WAKEUP_MODE_RESERVE19_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE20_FLAG) == GESTURE_WAKEUP_MODE_RESERVE20_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE20_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE20_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE21_FLAG) == GESTURE_WAKEUP_MODE_RESERVE21_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE21_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE21_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE22_FLAG) == GESTURE_WAKEUP_MODE_RESERVE22_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE22_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE22_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE23_FLAG) == GESTURE_WAKEUP_MODE_RESERVE23_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE23_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE23_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE24_FLAG) == GESTURE_WAKEUP_MODE_RESERVE24_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE24_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE24_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE25_FLAG) == GESTURE_WAKEUP_MODE_RESERVE25_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE25_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE25_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE26_FLAG) == GESTURE_WAKEUP_MODE_RESERVE26_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE26_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE26_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE27_FLAG) == GESTURE_WAKEUP_MODE_RESERVE27_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE27_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE27_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE28_FLAG) == GESTURE_WAKEUP_MODE_RESERVE28_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE28_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE28_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE29_FLAG) == GESTURE_WAKEUP_MODE_RESERVE29_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE29_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE29_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE30_FLAG) == GESTURE_WAKEUP_MODE_RESERVE30_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE30_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE30_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE31_FLAG) == GESTURE_WAKEUP_MODE_RESERVE31_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE31_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE31_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE32_FLAG) == GESTURE_WAKEUP_MODE_RESERVE32_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE32_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE32_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE33_FLAG) == GESTURE_WAKEUP_MODE_RESERVE33_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE33_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE33_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE34_FLAG) == GESTURE_WAKEUP_MODE_RESERVE34_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE34_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE34_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE35_FLAG) == GESTURE_WAKEUP_MODE_RESERVE35_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE35_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE35_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE36_FLAG) == GESTURE_WAKEUP_MODE_RESERVE36_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE36_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE36_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE37_FLAG) == GESTURE_WAKEUP_MODE_RESERVE37_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE37_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE37_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE38_FLAG) == GESTURE_WAKEUP_MODE_RESERVE38_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE38_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE38_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE39_FLAG) == GESTURE_WAKEUP_MODE_RESERVE39_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE39_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE39_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE40_FLAG) == GESTURE_WAKEUP_MODE_RESERVE40_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE40_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE40_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE41_FLAG) == GESTURE_WAKEUP_MODE_RESERVE41_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE41_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE41_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE42_FLAG) == GESTURE_WAKEUP_MODE_RESERVE42_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE42_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE42_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE43_FLAG) == GESTURE_WAKEUP_MODE_RESERVE43_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE43_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE43_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE44_FLAG) == GESTURE_WAKEUP_MODE_RESERVE44_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE44_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE44_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE45_FLAG) == GESTURE_WAKEUP_MODE_RESERVE45_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE45_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE45_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE46_FLAG) == GESTURE_WAKEUP_MODE_RESERVE46_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE46_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE46_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE47_FLAG) == GESTURE_WAKEUP_MODE_RESERVE47_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE47_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE47_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE48_FLAG) == GESTURE_WAKEUP_MODE_RESERVE48_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE48_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE48_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE49_FLAG) == GESTURE_WAKEUP_MODE_RESERVE49_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE49_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE49_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE50_FLAG) == GESTURE_WAKEUP_MODE_RESERVE50_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE50_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE50_FLAG);
+ }
+
+ if ((nWakeupMode[1] & GESTURE_WAKEUP_MODE_RESERVE51_FLAG) == GESTURE_WAKEUP_MODE_RESERVE51_FLAG)
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] | GESTURE_WAKEUP_MODE_RESERVE51_FLAG;
+ }
+ else
+ {
+ g_GestureWakeupMode[1] = g_GestureWakeupMode[1] & (~GESTURE_WAKEUP_MODE_RESERVE51_FLAG);
+ }
+#endif //CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+
+ DBG("g_GestureWakeupMode = 0x%x, 0x%x\n", g_GestureWakeupMode[0], g_GestureWakeupMode[1]);
+ }
+
+ return nCount;
+}
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+ssize_t DrvMainProcfsGestureDebugModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ DBG("g_GestureDebugMode = 0x%x\n", g_GestureDebugMode); // add for debug
+
+ nLength = sprintf(pBuffer, "%d", g_GestureDebugMode);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsGestureDebugModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u8 ucGestureMode[2];
+ u8 i;
+ char *pCh;
+
+ if (pBuffer != NULL)
+ {
+ i = 0;
+ while ((pCh = strsep((char **)&pBuffer, " ,")) && (i < 2))
+ {
+ DBG("pCh = %s\n", pCh);
+
+ ucGestureMode[i] = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+
+ DBG("ucGestureMode[%d] = 0x%04X\n", i, ucGestureMode[i]);
+ i ++;
+ }
+
+ g_GestureDebugMode = ucGestureMode[0];
+ g_GestureDebugFlag = ucGestureMode[1];
+
+ DBG("Gesture flag = 0x%x\n", g_GestureDebugFlag);
+
+ if (g_GestureDebugMode == 0x01) //open gesture debug mode
+ {
+ DrvIcFwLyrOpenGestureDebugMode(g_GestureDebugFlag);
+
+// input_report_key(g_InputDevice, RESERVER42, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER42, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ }
+ else if (g_GestureDebugMode == 0x00) //close gesture debug mode
+ {
+ DrvIcFwLyrCloseGestureDebugMode();
+ }
+ else
+ {
+ DBG("*** Undefined Gesture Debug Mode ***\n");
+ }
+ }
+
+ return nCount;
+}
+
+ssize_t DrvMainKObjectGestureDebugShow(struct kobject *pKObj, struct kobj_attribute *pAttr, char *pBuf)
+{
+ u32 i = 0;
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (strcmp(pAttr->attr.name, "gesture_debug") == 0)
+ {
+ if (g_LogGestureDebug != NULL)
+ {
+ DBG("g_LogGestureDebug[0]=%x, g_LogGestureDebug[1]=%x\n", g_LogGestureDebug[0], g_LogGestureDebug[1]);
+ DBG("g_LogGestureDebug[2]=%x, g_LogGestureDebug[3]=%x\n", g_LogGestureDebug[2], g_LogGestureDebug[3]);
+ DBG("g_LogGestureDebug[4]=%x, g_LogGestureDebug[5]=%x\n", g_LogGestureDebug[4], g_LogGestureDebug[5]);
+
+ if (g_LogGestureDebug[0] == 0xA7 && g_LogGestureDebug[3] == 0x51)
+ {
+ for (i = 0; i < 0x80; i ++)
+ {
+ pBuf[i] = g_LogGestureDebug[i];
+ }
+
+ nLength = 0x80;
+ DBG("nLength = %d\n", nLength);
+ }
+ else
+ {
+ DBG("CURRENT MODE IS NOT GESTURE DEBUG MODE/WRONG GESTURE DEBUG MODE HEADER\n");
+ }
+ }
+ else
+ {
+ DBG("g_LogGestureDebug is NULL\n");
+ }
+ }
+ else
+ {
+ DBG("pAttr->attr.name = %s \n", pAttr->attr.name);
+ }
+
+ return nLength;
+}
+
+ssize_t DrvMainKObjectGestureDebugStore(struct kobject *pKObj, struct kobj_attribute *pAttr, const char *pBuf, size_t nCount)
+{
+ DBG("*** %s() ***\n", __func__);
+/*
+ if (strcmp(pAttr->attr.name, "packet") == 0)
+ {
+
+ }
+*/
+ return nCount;
+}
+
+static struct kobj_attribute gesture_attr = __ATTR(gesture_debug, 0666, DrvMainKObjectGestureDebugShow, DrvMainKObjectGestureDebugStore);
+
+/* Create a group of attributes so that we can create and destroy them all at once. */
+static struct attribute *gestureattrs[] = {
+ &gesture_attr.attr,
+ NULL, /* need to NULL terminate the list of attributes */
+};
+
+/*
+ * An unnamed attribute group will put all of the attributes directly in
+ * the kobject directory. If we specify a name, a subdirectory will be
+ * created for the attributes with the directory being the name of the
+ * attribute group.
+ */
+struct attribute_group gestureattr_group = {
+ .attrs = gestureattrs,
+};
+
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+ssize_t DrvMainProcfsGestureInforModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u8 szOut[GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH*5] = {0}, szValue[10] = {0};
+ u32 szLogGestureInfo[GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH] = {0};
+ u32 i = 0;
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ _gLogGestureCount = 0;
+ if (_gLogGestureInforType == FIRMWARE_GESTURE_INFORMATION_MODE_A) //FIRMWARE_GESTURE_INFORMATION_MODE_A
+ {
+ for (i = 0; i < 2; i ++)//0 EventFlag; 1 RecordNum
+ {
+ szLogGestureInfo[_gLogGestureCount] = g_LogGestureInfor[4 + i];
+ _gLogGestureCount ++;
+ }
+
+ for (i = 2; i < 8; i ++)//2~3 Xst Yst; 4~5 Xend Yend; 6~7 char_width char_height
+ {
+ szLogGestureInfo[_gLogGestureCount] = g_LogGestureInfor[4 + i];
+ _gLogGestureCount ++;
+ }
+ }
+ else if (_gLogGestureInforType == FIRMWARE_GESTURE_INFORMATION_MODE_B) //FIRMWARE_GESTURE_INFORMATION_MODE_B
+ {
+ for (i = 0; i < 2; i ++)//0 EventFlag; 1 RecordNum
+ {
+ szLogGestureInfo[_gLogGestureCount] = g_LogGestureInfor[4 + i];
+ _gLogGestureCount ++;
+ }
+
+ for (i = 0; i< g_LogGestureInfor[5]*2 ; i ++)//(X and Y)*RecordNum
+ {
+ szLogGestureInfo[_gLogGestureCount] = g_LogGestureInfor[12 + i];
+ _gLogGestureCount ++;
+ }
+ }
+ else if (_gLogGestureInforType == FIRMWARE_GESTURE_INFORMATION_MODE_C) //FIRMWARE_GESTURE_INFORMATION_MODE_C
+ {
+ for (i = 0; i < 6; i ++)//header
+ {
+ szLogGestureInfo[_gLogGestureCount] = g_LogGestureInfor[i];
+ _gLogGestureCount ++;
+ }
+
+ for (i = 6; i < 86; i ++)
+ {
+ szLogGestureInfo[_gLogGestureCount] = g_LogGestureInfor[i];
+ _gLogGestureCount ++;
+ }
+
+ szLogGestureInfo[_gLogGestureCount] = g_LogGestureInfor[86];//dummy
+ _gLogGestureCount ++;
+ szLogGestureInfo[_gLogGestureCount] = g_LogGestureInfor[87];//checksum
+ _gLogGestureCount++;
+ }
+ else
+ {
+ DBG("*** Undefined GESTURE INFORMATION MODE ***\n");
+ }
+
+ for (i = 0; i < _gLogGestureCount; i ++)
+ {
+ sprintf(szValue, "%d", szLogGestureInfo[i]);
+ strcat(szOut, szValue);
+ strcat(szOut, ",");
+ }
+
+ nLength = sprintf(pBuffer, "%s\n", szOut);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsGestureInforModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nMode;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ sscanf(pBuffer, "%x", &nMode);
+ _gLogGestureInforType = nMode;
+ }
+
+ DBG("*** _gLogGestureInforType type = 0x%x ***\n", _gLogGestureInforType);
+
+ return nCount;
+}
+
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+ssize_t DrvMainProcfsReportRateRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ struct timeval tEndTime;
+ suseconds_t nStartTime, nEndTime, nElapsedTime;
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("g_InterruptCount = %d, g_ValidTouchCount = %d\n", g_InterruptCount, g_ValidTouchCount);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ // Get end time
+ do_gettimeofday(&tEndTime);
+
+ nStartTime = g_StartTime.tv_sec + g_StartTime.tv_usec/1000000;
+ nEndTime = tEndTime.tv_sec + tEndTime.tv_usec/1000000;
+
+ nElapsedTime = nEndTime - nStartTime;
+
+ DBG("Start time : %lu sec, %lu msec\n", g_StartTime.tv_sec, g_StartTime.tv_usec);
+ DBG("End time : %lu sec, %lu msec\n", tEndTime.tv_sec, tEndTime.tv_usec);
+
+ DBG("Elapsed time : %lu sec\n", nElapsedTime);
+
+ // Calculate report rate
+ if (nElapsedTime != 0)
+ {
+ g_InterruptReportRate = g_InterruptCount / nElapsedTime;
+ g_ValidTouchReportRate = g_ValidTouchCount / nElapsedTime;
+ }
+ else
+ {
+ g_InterruptReportRate = 0;
+ g_ValidTouchReportRate = 0;
+ }
+
+ DBG("g_InterruptReportRate = %d, g_ValidTouchReportRate = %d\n", g_InterruptReportRate, g_ValidTouchReportRate);
+
+ g_InterruptCount = 0; // Reset count
+ g_ValidTouchCount = 0;
+
+ nLength = sprintf(pBuffer, "%d,%d", g_InterruptReportRate, g_ValidTouchReportRate);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsReportRateWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ sscanf(pBuffer, "%d", &g_IsEnableReportRate);
+
+ DBG("g_IsEnableReportRate = %d\n", g_IsEnableReportRate); // 1 : enable report rate calculation, 0 : disable report rate calculation, 2 : reset count
+
+ g_InterruptCount = 0; // Reset count
+ g_ValidTouchCount = 0;
+ }
+
+ return nCount;
+}
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+ssize_t DrvMainProcfsGloveModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+ u8 ucGloveMode = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ DrvIcFwLyrGetGloveInfo(&ucGloveMode);
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ DBG("Glove Mode = 0x%x\n", ucGloveMode);
+
+ nLength = sprintf(pBuffer, "%x", ucGloveMode);
+ }
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsGloveModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nGloveMode = 0;
+ u32 i = 0;
+ char *pCh = NULL;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (pBuffer != NULL)
+ {
+ i = 0;
+ while ((pCh = strsep((char **)&pBuffer, ",")) && (i < 1))
+ {
+ DBG("pCh = %s\n", pCh);
+
+ nGloveMode = DrvCommonConvertCharToHexDigit(pCh, strlen(pCh));
+
+ i ++;
+ }
+
+ DBG("Glove Mode = 0x%x\n", nGloveMode);
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ if (nGloveMode == 0x01) //open glove mode
+ {
+ DrvIcFwLyrOpenGloveMode();
+ g_IsEnableGloveMode = 1;
+ }
+ else if (nGloveMode == 0x00) //close glove mode
+ {
+ DrvIcFwLyrCloseGloveMode();
+ g_IsEnableGloveMode = 0;
+ }
+ else
+ {
+ DBG("*** Undefined Glove Mode ***\n");
+ }
+ DBG("g_IsEnableGloveMode = 0x%x\n", g_IsEnableGloveMode);
+
+ DrvPlatformLyrEnableFingerTouchReport();
+ }
+
+ return nCount;
+}
+
+ssize_t DrvMainProcfsOpenGloveModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ DrvIcFwLyrOpenGloveMode();
+ g_IsEnableGloveMode = 1;
+
+ DrvPlatformLyrEnableFingerTouchReport();
+ }
+ DBG("g_IsEnableGloveMode = 0x%x\n", g_IsEnableGloveMode);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+
+ssize_t DrvMainProcfsCloseGloveModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos)
+{
+ u32 nLength = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // If file position is non-zero, then assume the string has been read and indicate there is no more data to be read.
+ if (*pPos != 0)
+ {
+ return 0;
+ }
+
+ if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ DrvIcFwLyrCloseGloveMode();
+ g_IsEnableGloveMode = 0;
+
+ DrvPlatformLyrEnableFingerTouchReport();
+ }
+ DBG("g_IsEnableGloveMode = 0x%x\n", g_IsEnableGloveMode);
+
+ *pPos += nLength;
+
+ return nLength;
+}
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+static long hotknot_ioctl( struct file *file, unsigned int cmd, unsigned long arg )
+{
+ long nRet = 0;
+
+ DBG("*** %s ***\n", __FUNCTION__);
+
+ if (g_IsBypassHotknot == 0)
+ {
+ mutex_lock(&g_HKMutex);
+ g_IsHotknotAlive = 1;
+ nRet = HotKnotIoctl(file, cmd, arg);
+ g_IsHotknotAlive = 0;
+ mutex_unlock(&g_HKMutex);
+ }
+
+ return nRet;
+}
+
+static int hotknot_value;
+
+static ssize_t hotknot_value_show( struct kobject *kobj, struct kobj_attribute *attr, char *buf )
+{
+ return sprintf( buf, "%d\n", hotknot_value );
+}
+
+static ssize_t hotknot_value_store( struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count )
+{
+ sscanf( buf, "%d", &hotknot_value );
+
+ return count;
+}
+
+static struct kobj_attribute hotknot_value_attr = __ATTR( hotknot_value, 0666, hotknot_value_show, hotknot_value_store );
+static struct attribute *hotknot_attrs[] =
+{
+ &hotknot_value_attr.attr, 0
+};
+
+static struct attribute_group hotknot_attr_group =
+{
+ .attrs = hotknot_attrs
+};
+
+static const struct file_operations hotknot_fops =
+{
+ .owner = THIS_MODULE,
+ .unlocked_ioctl = hotknot_ioctl
+};
+
+//static struct miscdevice hotknot_miscdevice =
+struct miscdevice hotknot_miscdevice =
+{
+ .minor = MISC_DYNAMIC_MINOR,
+ .name = "hotknot",
+ .nodename = "hotknot",
+ .mode = 0666,
+ .fops = &hotknot_fops
+};
+#endif //CONFIG_ENABLE_HOTKNOT
+
+//------------------------------------------------------------------------------//
+
+s32 DrvMainTouchDeviceInitialize(void)
+{
+ s32 nRetVal = 0;
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ int nErr;
+ struct hwmsen_object tObjPs;
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+ DBG("*** %s() ***\n", __func__);
+
+ _DrvMainCreateProcfsDirEntry(); // Create procfs directory entry
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ _DrvMainHotknotRegistry(); //register hotknot here...
+#endif //CONFIG_ENABLE_HOTKNOT
+
+#ifdef CONFIG_ENABLE_JNI_INTERFACE
+ CreateMsgToolMem();
+#endif //CONFIG_ENABLE_JNI_INTERFACE
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+ DrvIcFwLyrCreateMpTestWorkQueue();
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+ g_ChipType = DrvIcFwLyrGetChipType(); // Try to get chip type by SLAVE_I2C_ID_DBBUS(0x62) firstly.
+
+ if (g_ChipType == 0) // If failed, try to get chip type by SLAVE_I2C_ID_DBBUS(0x59) again.
+ {
+ SLAVE_I2C_ID_DBBUS = (0xB2>>1); //0x59
+
+ g_ChipType = DrvIcFwLyrGetChipType();
+ }
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ if (g_ChipType != 0) // To make sure TP is attached on cell phone.
+ {
+ memset(&g_FirmwareInfo, 0x0, sizeof(FirmwareInfo_t));
+
+ DrvIcFwLyrVariableInitialize();
+
+#ifdef CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+ DrvIcFwLyrGetTouchPacketAddress(&g_FwPacketDataAddress, &g_FwPacketFlagAddress);
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+#endif //CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ tsps_assist_register_callback("msg2xxx", &DrvPlatformLyrTpPsEnable, &DrvPlatformLyrGetTpPsData);
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ tObjPs.polling = 0; //interrupt mode
+ tObjPs.sensor_operate = DrvPlatformLyrTpPsOperate;
+
+ if ((nErr = hwmsen_attach(ID_PROXIMITY, &tObjPs)))
+ {
+ DBG("call hwmsen_attach() failed = %d\n", nErr);
+ }
+#endif
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+ }
+ else
+ {
+ nRetVal = -ENODEV;
+ }
+
+ return nRetVal;
+}
+
+/*=============================================================*/
+// LOCAL FUNCTION DEFINITION
+/*=============================================================*/
+
+static s32 _DrvMainCreateProcfsDirEntry(void)
+{
+ s32 nRetVal = 0;
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ u8 *pGesturePath = NULL;
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+ u8 *pDevicePath = NULL;
+
+ DBG("*** %s() ***\n", __func__);
+
+ _gProcClass = proc_mkdir(PROC_NODE_CLASS, NULL);
+
+ _gProcMsTouchScreenMsg20xx = proc_mkdir(PROC_NODE_MS_TOUCHSCREEN_MSG20XX, _gProcClass);
+
+ _gProcDevice = proc_mkdir(PROC_NODE_DEVICE, _gProcMsTouchScreenMsg20xx);
+
+ if (NULL == proc_create(PROC_NODE_CHIP_TYPE, PROCFS_AUTHORITY, _gProcDevice, &_gProcChipType))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_CHIP_TYPE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_CHIP_TYPE);
+ }
+
+ if (NULL == proc_create(PROC_NODE_FIRMWARE_DATA, PROCFS_AUTHORITY, _gProcDevice, &_gProcFirmwareData))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_FIRMWARE_DATA);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_FIRMWARE_DATA);
+ }
+
+ if (NULL == proc_create(PROC_NODE_FIRMWARE_UPDATE, PROCFS_AUTHORITY, _gProcDevice, &_gProcApkFirmwareUpdate))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_FIRMWARE_UPDATE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_FIRMWARE_UPDATE);
+ }
+
+ if (NULL == proc_create(PROC_NODE_CUSTOMER_FIRMWARE_VERSION, PROCFS_AUTHORITY, _gProcDevice, &_gProcCustomerFirmwareVersion))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_CUSTOMER_FIRMWARE_VERSION);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_CUSTOMER_FIRMWARE_VERSION);
+ }
+
+ if (NULL == proc_create(PROC_NODE_PLATFORM_FIRMWARE_VERSION, PROCFS_AUTHORITY, _gProcDevice, &_gProcPlatformFirmwareVersion))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_PLATFORM_FIRMWARE_VERSION);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_PLATFORM_FIRMWARE_VERSION);
+ }
+
+ if (NULL == proc_create(PROC_NODE_DEVICE_DRIVER_VERSION, PROCFS_AUTHORITY, _gProcDevice, &_gProcDeviceDriverVersion))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_DEVICE_DRIVER_VERSION);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_DEVICE_DRIVER_VERSION);
+ }
+
+ if (NULL == proc_create(PROC_NODE_SDCARD_FIRMWARE_UPDATE, PROCFS_AUTHORITY, _gProcDevice, &_gProcSdCardFirmwareUpdate))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_SDCARD_FIRMWARE_UPDATE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_SDCARD_FIRMWARE_UPDATE);
+ }
+
+ if (NULL == proc_create(PROC_NODE_FIRMWARE_DEBUG, PROCFS_AUTHORITY, _gProcDevice, &_gProcFirmwareDebug))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_FIRMWARE_DEBUG);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_FIRMWARE_DEBUG);
+ }
+
+ if (NULL == proc_create(PROC_NODE_FIRMWARE_SET_DEBUG_VALUE, PROCFS_AUTHORITY, _gProcDevice, &_gProcFirmwareSetDebugValue))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_FIRMWARE_SET_DEBUG_VALUE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_FIRMWARE_SET_DEBUG_VALUE);
+ }
+
+ if (NULL == proc_create(PROC_NODE_FIRMWARE_SMBUS_DEBUG, PROCFS_AUTHORITY, _gProcDevice, &_gProcFirmwareSmBusDebug))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_FIRMWARE_SMBUS_DEBUG);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_FIRMWARE_SMBUS_DEBUG);
+ }
+
+ if (NULL == proc_create(PROC_NODE_FIRMWARE_SET_DQMEM_VALUE, PROCFS_AUTHORITY, _gProcDevice, &_gProcFirmwareSetDQMemValue))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_FIRMWARE_SET_DQMEM_VALUE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_FIRMWARE_SET_DQMEM_VALUE);
+ }
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+ if (NULL == proc_create(PROC_NODE_MP_TEST, PROCFS_AUTHORITY, _gProcDevice, &_gProcMpTest))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_MP_TEST);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_MP_TEST);
+ }
+
+ if (NULL == proc_create(PROC_NODE_MP_TEST_LOG, PROCFS_AUTHORITY, _gProcDevice, &_gProcMpTestLog))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_MP_TEST_LOG);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_MP_TEST_LOG);
+ }
+
+ if (NULL == proc_create(PROC_NODE_MP_TEST_FAIL_CHANNEL, PROCFS_AUTHORITY, _gProcDevice, &_gProcMpTestFailChannel))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_MP_TEST_FAIL_CHANNEL);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_MP_TEST_FAIL_CHANNEL);
+ }
+
+ if (NULL == proc_create(PROC_NODE_MP_TEST_SCOPE, PROCFS_AUTHORITY, _gProcDevice, &_gProcMpTestScope))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_MP_TEST_SCOPE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_MP_TEST_SCOPE);
+ }
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+
+ if (NULL == proc_create(PROC_NODE_FIRMWARE_MODE, PROCFS_AUTHORITY, _gProcDevice, &_gProcFirmwareMode))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_FIRMWARE_MODE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_FIRMWARE_MODE);
+ }
+
+ if (NULL == proc_create(PROC_NODE_FIRMWARE_SENSOR, PROCFS_AUTHORITY, _gProcDevice, &_gProcFirmwareSensor))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_FIRMWARE_SENSOR);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_FIRMWARE_SENSOR);
+ }
+
+ if (NULL == proc_create(PROC_NODE_FIRMWARE_PACKET_HEADER, PROCFS_AUTHORITY, _gProcDevice, &_gProcFirmwarePacketHeader))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_FIRMWARE_PACKET_HEADER);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_FIRMWARE_PACKET_HEADER);
+ }
+
+ /* create a kset with the name of "kset_example" which is located under /sys/kernel/ */
+ g_TouchKSet = kset_create_and_add("kset_example", NULL, kernel_kobj);
+ if (!g_TouchKSet)
+ {
+ DBG("*** kset_create_and_add() failed, nRetVal = %d ***\n", nRetVal);
+
+ nRetVal = -ENOMEM;
+ }
+
+ g_TouchKObj = kobject_create();
+ if (!g_TouchKObj)
+ {
+ DBG("*** kobject_create() failed, nRetVal = %d ***\n", nRetVal);
+
+ nRetVal = -ENOMEM;
+ kset_unregister(g_TouchKSet);
+ g_TouchKSet = NULL;
+ }
+
+ g_TouchKObj->kset = g_TouchKSet;
+
+ nRetVal = kobject_add(g_TouchKObj, NULL, "%s", "kobject_example");
+ if (nRetVal != 0)
+ {
+ DBG("*** kobject_add() failed, nRetVal = %d ***\n", nRetVal);
+
+ kobject_put(g_TouchKObj);
+ g_TouchKObj = NULL;
+ kset_unregister(g_TouchKSet);
+ g_TouchKSet = NULL;
+ }
+
+ /* create the files associated with this kobject */
+ nRetVal = sysfs_create_group(g_TouchKObj, &attr_group);
+ if (nRetVal != 0)
+ {
+ DBG("*** sysfs_create_file() failed, nRetVal = %d ***\n", nRetVal);
+
+ kobject_put(g_TouchKObj);
+ g_TouchKObj = NULL;
+ kset_unregister(g_TouchKSet);
+ g_TouchKSet = NULL;
+ }
+
+ pDevicePath = kobject_get_path(g_TouchKObj, GFP_KERNEL);
+ DBG("DEVPATH = %s\n", pDevicePath);
+
+
+ if (NULL == proc_create(PROC_NODE_QUERY_FEATURE_SUPPORT_STATUS, PROCFS_AUTHORITY, _gProcDevice, &_gProcQueryFeatureSupportStatus))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_QUERY_FEATURE_SUPPORT_STATUS);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_QUERY_FEATURE_SUPPORT_STATUS);
+ }
+
+ if (NULL == proc_create(PROC_NODE_CHANGE_FEATURE_SUPPORT_STATUS, PROCFS_AUTHORITY, _gProcDevice, &_gProcChangeFeatureSupportStatus))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_CHANGE_FEATURE_SUPPORT_STATUS);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_CHANGE_FEATURE_SUPPORT_STATUS);
+ }
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ if (NULL == proc_create(PROC_NODE_GESTURE_WAKEUP_MODE, PROCFS_AUTHORITY, _gProcDevice, &_gProcGestureWakeupMode))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_GESTURE_WAKEUP_MODE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_GESTURE_WAKEUP_MODE);
+ }
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ if (NULL == proc_create(PROC_NODE_GESTURE_DEBUG_MODE, PROCFS_AUTHORITY, _gProcDevice, &_gProcGestureDebugMode))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_GESTURE_DEBUG_MODE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_GESTURE_DEBUG_MODE);
+ }
+
+ /* create a kset with the name of "kset_gesture" which is located under /sys/kernel/ */
+ g_GestureKSet = kset_create_and_add("kset_gesture", NULL, kernel_kobj);
+ if (!g_GestureKSet)
+ {
+ DBG("*** kset_create_and_add() failed, nRetVal = %d ***\n", nRetVal);
+ nRetVal = -ENOMEM;
+ }
+
+ g_GestureKObj = kobject_create();
+ if (!g_GestureKObj)
+ {
+ DBG("*** kobject_create() failed, nRetVal = %d ***\n", nRetVal);
+
+ nRetVal = -ENOMEM;
+ kset_unregister(g_GestureKSet);
+ g_GestureKSet = NULL;
+ }
+
+ g_GestureKObj->kset = g_GestureKSet;
+
+ nRetVal = kobject_add(g_GestureKObj, NULL, "%s", "kobject_gesture");
+ if (nRetVal != 0)
+ {
+ DBG("*** kobject_add() failed, nRetVal = %d ***\n", nRetVal);
+
+ kobject_put(g_GestureKObj);
+ g_GestureKObj = NULL;
+ kset_unregister(g_GestureKSet);
+ g_GestureKSet = NULL;
+ }
+
+ /* create the files associated with this g_GestureKObj */
+ nRetVal = sysfs_create_group(g_GestureKObj, &gestureattr_group);
+ if (nRetVal != 0)
+ {
+ DBG("*** sysfs_create_file() failed, nRetVal = %d ***\n", nRetVal);
+
+ kobject_put(g_GestureKObj);
+ g_GestureKObj = NULL;
+ kset_unregister(g_GestureKSet);
+ g_GestureKSet = NULL;
+ }
+
+ pGesturePath = kobject_get_path(g_GestureKObj, GFP_KERNEL);
+ DBG("DEVPATH = %s\n", pGesturePath);
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+ if (NULL == proc_create(PROC_NODE_GESTURE_INFORMATION_MODE, PROCFS_AUTHORITY, _gProcDevice, &_gProcGestureInforMode))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_GESTURE_INFORMATION_MODE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_GESTURE_INFORMATION_MODE);
+ }
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+ if (NULL == proc_create(PROC_NODE_REPORT_RATE, PROCFS_AUTHORITY, _gProcDevice, &_gProcReportRate))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_REPORT_RATE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_REPORT_RATE);
+ }
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+ if (NULL == proc_create(PROC_NODE_GLOVE_MODE, PROCFS_AUTHORITY, _gProcDevice, &_gProcGloveMode))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_GLOVE_MODE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_GLOVE_MODE);
+ }
+
+ if (NULL == proc_create(PROC_NODE_OPEN_GLOVE_MODE, PROCFS_AUTHORITY, _gProcDevice, &_gProcOpenGloveMode))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_OPEN_GLOVE_MODE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_OPEN_GLOVE_MODE);
+ }
+
+ if (NULL == proc_create(PROC_NODE_CLOSE_GLOVE_MODE, PROCFS_AUTHORITY, _gProcDevice, &_gProcCloseGloveMode))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_CLOSE_GLOVE_MODE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_CLOSE_GLOVE_MODE);
+ }
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+#ifdef CONFIG_ENABLE_JNI_INTERFACE
+ if (NULL == proc_create(PROC_NODE_JNI_NODE, PROCFS_AUTHORITY, _gProcDevice, &_gProcJniMethod))
+ {
+ DBG("Failed to create procfs file node(%s)!\n", PROC_NODE_JNI_NODE);
+ }
+ else
+ {
+ DBG("Create procfs file node(%s) OK!\n", PROC_NODE_JNI_NODE);
+ }
+#endif //CONFIG_ENABLE_JNI_INTERFACE
+
+ return nRetVal;
+}
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+//register hotknot ioctl handler
+static s32 _DrvMainHotknotRegistry(void)
+{
+ s32 nRetVal = 0;
+
+ nRetVal = misc_register( &hotknot_miscdevice );
+ if ( nRetVal < 0 )
+ {
+ DBG( "Failed to register misc device. Err:%d\n", nRetVal );
+ }
+ DBG( "*** Misc device registered ***\n" );
+
+ nRetVal = sysfs_create_group( &hotknot_miscdevice.this_device->kobj, &hotknot_attr_group );
+ if ( nRetVal < 0 )
+ {
+ DBG( "Failed to create attribute group. Err:%d\n", nRetVal );
+ //misc_deregister( &hotknot_miscdevice );
+ }
+ DBG( "*** Attribute group created ***\n" );
+
+ mutex_init(&g_HKMutex);
+ mutex_init(&g_QMutex);
+ CreateQueue();
+ CreateHotKnotMem();
+
+ return nRetVal;
+}
+#endif //CONFIG_ENABLE_HOTKNOT
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_main.h b/drivers/input/touchscreen/msg2233/mstar_drv_main.h new file mode 100644 index 00000000..e298ffeb --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_main.h @@ -0,0 +1,186 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_main.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_MAIN_H__
+#define __MSTAR_DRV_MAIN_H__
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+#include "mstar_drv_common.h"
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR CONSTANT DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+#define PROC_NODE_CLASS "class"
+#define PROC_NODE_MS_TOUCHSCREEN_MSG20XX "ms-touchscreen-msg20xx"
+#define PROC_NODE_DEVICE "device"
+#define PROC_NODE_CHIP_TYPE "chip_type"
+#define PROC_NODE_FIRMWARE_DATA "data"
+#define PROC_NODE_FIRMWARE_UPDATE "update"
+#define PROC_NODE_CUSTOMER_FIRMWARE_VERSION "version"
+#define PROC_NODE_PLATFORM_FIRMWARE_VERSION "platform_version"
+#define PROC_NODE_DEVICE_DRIVER_VERSION "driver_version"
+#define PROC_NODE_SDCARD_FIRMWARE_UPDATE "sdcard_update"
+#define PROC_NODE_FIRMWARE_DEBUG "debug"
+#define PROC_NODE_FIRMWARE_SET_DEBUG_VALUE "set_debug_value"
+#define PROC_NODE_FIRMWARE_SMBUS_DEBUG "smbus_debug"
+
+#define PROC_NODE_FIRMWARE_SET_DQMEM_VALUE "set_dqmem_value"
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+#define PROC_NODE_MP_TEST "test"
+#define PROC_NODE_MP_TEST_LOG "test_log"
+#define PROC_NODE_MP_TEST_FAIL_CHANNEL "test_fail_channel"
+#define PROC_NODE_MP_TEST_SCOPE "test_scope"
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+#define PROC_NODE_FIRMWARE_MODE "mode"
+#define PROC_NODE_FIRMWARE_SENSOR "sensor"
+#define PROC_NODE_FIRMWARE_PACKET_HEADER "header"
+
+#define PROC_NODE_QUERY_FEATURE_SUPPORT_STATUS "query_feature_support_status"
+#define PROC_NODE_CHANGE_FEATURE_SUPPORT_STATUS "change_feature_support_status"
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#define PROC_NODE_GESTURE_WAKEUP_MODE "gesture_wakeup_mode"
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+#define PROC_NODE_GESTURE_DEBUG_MODE "gesture_debug"
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#define PROC_NODE_GESTURE_INFORMATION_MODE "gesture_infor"
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+#define PROC_NODE_REPORT_RATE "report_rate"
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+#define PROC_NODE_GLOVE_MODE "glove_mode"
+#define PROC_NODE_OPEN_GLOVE_MODE "open_glove_mode"
+#define PROC_NODE_CLOSE_GLOVE_MODE "close_glove_mode"
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+#ifdef CONFIG_ENABLE_JNI_INTERFACE
+#define PROC_NODE_JNI_NODE "msgtool"
+#endif //CONFIG_ENABLE_JNI_INTERFACE
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR MACRO DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+/* DATA TYPE DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL FUNCTION DECLARATION */
+/*--------------------------------------------------------------------------*/
+
+extern ssize_t DrvMainProcfsChipTypeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsChipTypeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareDataRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareDataWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareUpdateRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareUpdateWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsCustomerFirmwareVersionRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsCustomerFirmwareVersionWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsPlatformFirmwareVersionRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsPlatformFirmwareVersionWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsDeviceDriverVersionRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsDeviceDriverVersionWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsSdCardFirmwareUpdateRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsSdCardFirmwareUpdateWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareDebugRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareDebugWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareSetDebugValueRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareSetDebugValueWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareSmBusDebugRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareSmBusDebugWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+
+extern ssize_t DrvMainProcfsFirmwareSetDQMemValueRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareSetDQMemValueWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+extern ssize_t DrvMainProcfsMpTestRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsMpTestWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsMpTestLogRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsMpTestLogWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsMpTestFailChannelRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsMpTestFailChannelWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsMpTestScopeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsMpTestScopeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+
+extern ssize_t DrvMainProcfsFirmwareModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareSensorRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwareSensorWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwarePacketHeaderRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsFirmwarePacketHeaderWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainKObjectPacketShow(struct kobject *pKObj, struct kobj_attribute *pAttr, char *pBuf);
+extern ssize_t DrvMainKObjectPacketStore(struct kobject *pKObj, struct kobj_attribute *pAttr, const char *pBuf, size_t nCount);
+
+extern ssize_t DrvMainProcfsQueryFeatureSupportStatusRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsQueryFeatureSupportStatusWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsChangeFeatureSupportStatusRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsChangeFeatureSupportStatusWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+extern ssize_t DrvMainProcfsGestureWakeupModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsGestureWakeupModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+extern ssize_t DrvMainProcfsGestureDebugModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsGestureDebugModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainKObjectGestureDebugShow(struct kobject *pKObj, struct kobj_attribute *pAttr, char *pBuf);
+extern ssize_t DrvMainKObjectGestureDebugStore(struct kobject *pKObj, struct kobj_attribute *pAttr, const char *pBuf, size_t nCount);
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+extern ssize_t DrvMainProcfsGestureInforModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsGestureInforModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+extern ssize_t DrvMainProcfsReportRateRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsReportRateWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+extern ssize_t DrvMainProcfsGloveModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsGloveModeWrite(struct file *pFile, const char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsOpenGloveModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+extern ssize_t DrvMainProcfsCloseGloveModeRead(struct file *pFile, char __user *pBuffer, size_t nCount, loff_t *pPos);
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+extern s32 DrvMainTouchDeviceInitialize(void);
+
+#endif /* __MSTAR_DRV_MAIN_H__ */
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_mtk.c b/drivers/input/touchscreen/msg2233/mstar_drv_mtk.c new file mode 100644 index 00000000..3d4eb087 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_mtk.c @@ -0,0 +1,275 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_mtk.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include <linux/interrupt.h>
+#include <linux/i2c.h>
+#include <linux/sched.h>
+#include <linux/kthread.h>
+#include <linux/rtpm_prio.h>
+#include <linux/wait.h>
+#include <linux/time.h>
+#include <linux/delay.h>
+#include <linux/hwmsen_helper.h>
+//#include <linux/hw_module_info.h>
+
+#include <linux/fs.h>
+#include <asm/uaccess.h>
+#include <linux/namei.h>
+#include <linux/vmalloc.h>
+
+#include <mach/mt_pm_ldo.h>
+#include <mach/mt_typedefs.h>
+#include <mach/mt_boot.h>
+#include <mach/mt_gpio.h>
+
+#include <cust_eint.h>
+
+#include "tpd.h"
+#include "cust_gpio_usage.h"
+
+#include "mstar_drv_platform_interface.h"
+
+/*=============================================================*/
+// CONSTANT VALUE DEFINITION
+/*=============================================================*/
+
+#define MSG_TP_IC_NAME "msg2xxx" //"msg21xxA" or "msg22xx" or "msg26xxM" /* Please define the mstar touch ic name based on the mutual-capacitive ic or self capacitive ic that you are using */
+#define I2C_BUS_ID (1) // i2c bus id : 0 or 1
+
+#define TPD_OK (0)
+
+/*=============================================================*/
+// EXTERN VARIABLE DECLARATION
+/*=============================================================*/
+
+#ifdef CONFIG_TP_HAVE_KEY
+extern const int g_TpVirtualKey[];
+
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+extern const int g_TpVirtualKeyDimLocal[][4];
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+#endif //CONFIG_TP_HAVE_KEY
+
+extern struct tpd_device *tpd;
+
+/*=============================================================*/
+// LOCAL VARIABLE DEFINITION
+/*=============================================================*/
+
+/*
+#if (defined(TPD_WARP_START) && defined(TPD_WARP_END))
+static int tpd_wb_start_local[TPD_WARP_CNT] = TPD_WARP_START;
+static int tpd_wb_end_local[TPD_WARP_CNT] = TPD_WARP_END;
+#endif
+
+#if (defined(TPD_HAVE_CALIBRATION) && !defined(TPD_CUSTOM_CALIBRATION))
+static int tpd_calmat_local[8] = TPD_CALIBRATION_MATRIX;
+static int tpd_def_calmat_local[8] = TPD_CALIBRATION_MATRIX;
+#endif
+*/
+struct i2c_client *g_I2cClient = NULL;
+
+//static int boot_mode = 0;
+
+/*=============================================================*/
+// FUNCTION DECLARATION
+/*=============================================================*/
+
+/*=============================================================*/
+// FUNCTION DEFINITION
+/*=============================================================*/
+
+/* probe function is used for matching and initializing input device */
+static int /*__devinit*/ tpd_probe(struct i2c_client *client, const struct i2c_device_id *id)
+{
+ TPD_DMESG("TPD probe\n");
+
+ if (client == NULL)
+ {
+ TPD_DMESG("i2c client is NULL\n");
+ return -1;
+ }
+ g_I2cClient = client;
+
+ MsDrvInterfaceTouchDeviceSetIicDataRate(g_I2cClient, 100000); // 100 KHZ
+
+ MsDrvInterfaceTouchDeviceProbe(g_I2cClient, id);
+
+ tpd_load_status = 1;
+
+ TPD_DMESG("TPD probe done\n");
+
+ return TPD_OK;
+}
+
+static int tpd_detect(struct i2c_client *client, struct i2c_board_info *info)
+{
+ strcpy(info->type, TPD_DEVICE);
+// strcpy(info->type, MSG_TP_IC_NAME);
+
+ return TPD_OK;
+}
+
+static int /*__devexit*/ tpd_remove(struct i2c_client *client)
+{
+ TPD_DEBUG("TPD removed\n");
+
+ MsDrvInterfaceTouchDeviceRemove(client);
+
+ return TPD_OK;
+}
+
+static struct i2c_board_info __initdata i2c_tpd = {I2C_BOARD_INFO(MSG_TP_IC_NAME, (0x4C>>1))};
+
+/* The I2C device list is used for matching I2C device and I2C device driver. */
+static const struct i2c_device_id tpd_device_id[] =
+{
+ {MSG_TP_IC_NAME, 0},
+ {}, /* should not omitted */
+};
+
+MODULE_DEVICE_TABLE(i2c, tpd_device_id);
+
+static struct i2c_driver tpd_i2c_driver = {
+ .driver = {
+ .name = MSG_TP_IC_NAME,
+ },
+ .probe = tpd_probe,
+ //.remove = __devexit_p(tpd_remove),
+ .remove = tpd_remove,
+ .id_table = tpd_device_id,
+ .detect = tpd_detect,
+};
+
+static int tpd_local_init(void)
+{
+ TPD_DMESG("TPD init device driver (Built %s @ %s)\n", __DATE__, __TIME__);
+/*
+ // Software reset mode will be treated as normal boot
+ boot_mode = get_boot_mode();
+ if (boot_mode == 3)
+ {
+ boot_mode = NORMAL_BOOT;
+ }
+*/
+ if (i2c_add_driver(&tpd_i2c_driver) != 0)
+ {
+ TPD_DMESG("unable to add i2c driver.\n");
+
+ return -1;
+ }
+
+ if (tpd_load_status == 0)
+ {
+ TPD_DMESG("add error touch panel driver.\n");
+
+ i2c_del_driver(&tpd_i2c_driver);
+ return -1;
+ }
+
+#ifdef CONFIG_TP_HAVE_KEY
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ // initialize tpd button data
+ tpd_button_setting(4, g_TpVirtualKey, g_TpVirtualKeyDimLocal); //MAX_KEY_NUM
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+#endif //CONFIG_TP_HAVE_KEY
+
+/*
+#if (defined(TPD_WARP_START) && defined(TPD_WARP_END))
+ TPD_DO_WARP = 1;
+ memcpy(tpd_wb_start, tpd_wb_start_local, TPD_WARP_CNT*4);
+ memcpy(tpd_wb_end, tpd_wb_start_local, TPD_WARP_CNT*4);
+#endif
+
+#if (defined(TPD_HAVE_CALIBRATION) && !defined(TPD_CUSTOM_CALIBRATION))
+ memcpy(tpd_calmat, tpd_def_calmat_local, 8*4);
+ memcpy(tpd_def_calmat, tpd_def_calmat_local, 8*4);
+#endif
+*/
+ TPD_DMESG("TPD init done %s, %d\n", __FUNCTION__, __LINE__);
+
+ return TPD_OK;
+}
+
+static void tpd_resume(struct early_suspend *h)
+{
+ TPD_DMESG("TPD wake up\n");
+
+ MsDrvInterfaceTouchDeviceResume(h);
+
+ TPD_DMESG("TPD wake up done\n");
+}
+
+static void tpd_suspend(struct early_suspend *h)
+{
+ TPD_DMESG("TPD enter sleep\n");
+
+ MsDrvInterfaceTouchDeviceSuspend(h);
+
+ TPD_DMESG("TPD enter sleep done\n");
+}
+
+static struct tpd_driver_t tpd_device_driver = {
+ .tpd_device_name = MSG_TP_IC_NAME,
+ .tpd_local_init = tpd_local_init,
+ .suspend = tpd_suspend,
+ .resume = tpd_resume,
+#ifdef CONFIG_TP_HAVE_KEY
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ .tpd_have_button = 1,
+#else
+ .tpd_have_button = 0,
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+#endif //CONFIG_TP_HAVE_KEY
+};
+
+static int __init tpd_driver_init(void)
+{
+ TPD_DMESG("touch panel driver init\n");
+
+ i2c_register_board_info(I2C_BUS_ID, &i2c_tpd, 1);
+ if (tpd_driver_add(&tpd_device_driver) < 0)
+ {
+ TPD_DMESG("TPD add driver failed\n");
+ }
+
+ return 0;
+}
+
+static void __exit tpd_driver_exit(void)
+{
+ TPD_DMESG("touch panel driver exit\n");
+
+ tpd_driver_remove(&tpd_device_driver);
+}
+
+module_init(tpd_driver_init);
+module_exit(tpd_driver_exit);
+MODULE_LICENSE("GPL");
\ No newline at end of file diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_mutual_fw_control.c b/drivers/input/touchscreen/msg2233/mstar_drv_mutual_fw_control.c new file mode 100644 index 00000000..0c6458ed --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_mutual_fw_control.c @@ -0,0 +1,6412 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_mutual_fw_control.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include "mstar_drv_mutual_fw_control.h"
+#include "mstar_drv_utility_adaption.h"
+#include "mstar_drv_platform_porting_layer.h"
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+
+/*=============================================================*/
+// EXTERN VARIABLE DECLARATION
+/*=============================================================*/
+
+extern u32 SLAVE_I2C_ID_DBBUS;
+extern u32 SLAVE_I2C_ID_DWI2C;
+
+#ifdef CONFIG_TP_HAVE_KEY
+extern const int g_TpVirtualKey[];
+
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+extern const int g_TpVirtualKeyDimLocal[][4];
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+#endif //CONFIG_TP_HAVE_KEY
+
+extern struct input_dev *g_InputDevice;
+
+extern u8 g_FwData[MAX_UPDATE_FIRMWARE_BUFFER_SIZE][1024];
+extern u32 g_FwDataCount;
+
+extern struct mutex g_Mutex;
+
+extern u16 FIRMWARE_MODE_UNKNOWN_MODE;
+extern u16 FIRMWARE_MODE_DEMO_MODE;
+extern u16 FIRMWARE_MODE_DEBUG_MODE;
+extern u16 FIRMWARE_MODE_RAW_DATA_MODE;
+
+extern struct kobject *g_TouchKObj;
+extern u8 g_IsSwitchModeByAPK;
+
+extern u8 IS_FIRMWARE_DATA_LOG_ENABLED;
+
+#ifdef CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+extern u16 g_FwPacketDataAddress;
+extern u16 g_FwPacketFlagAddress;
+
+extern u8 g_FwSupportSegment;
+#endif //CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+extern struct kobject *g_GestureKObj;
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+extern u32 g_IsEnableReportRate;
+extern u32 g_InterruptCount;
+extern u32 g_ValidTouchCount;
+
+extern struct timeval g_StartTime;
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+extern u8 g_HotKnotState;
+#endif //CONFIG_ENABLE_HOTKNOT
+
+/*=============================================================*/
+// LOCAL VARIABLE DEFINITION
+/*=============================================================*/
+
+//static u8 _gTpVendorCode[3] = {0}; // used for MSG28XX
+
+static u8 _gOneDimenFwData[MSG28XX_FIRMWARE_WHOLE_SIZE*1024] = {0}; // used for MSG28XX
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+/*
+ * Note.
+ * Please modify the name of the below .h depends on the vendor TP that you are using.
+ */
+#include "msg26xxm_xxxx_update_bin.h" // for MSG26xxM
+#include "msg26xxm_yyyy_update_bin.h"
+
+#include "msg28xx_xxxx_update_bin.h" // for MSG28xx
+#include "msg28xx_yyyy_update_bin.h"
+
+static u32 _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+static u32 _gIsUpdateInfoBlockFirst = 0;
+static struct work_struct _gUpdateFirmwareBySwIdWork;
+static struct workqueue_struct *_gUpdateFirmwareBySwIdWorkQueue = NULL;
+static u8 _gTempData[1024];
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+static u32 _gGestureWakeupValue[2] = {0};
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+static u8 _gTouchPacketFlag[2] = {0};
+#endif //CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+static u8 _gIsDisableFinagerTouch = 0;
+
+static u16 _gSFR_ADDR3_BYTE0_1_VALUE = 0x0000;
+static u16 _gSFR_ADDR3_BYTE2_3_VALUE = 0x0000;
+
+
+/*=============================================================*/
+// GLOBAL VARIABLE DEFINITION
+/*=============================================================*/
+
+u8 g_ChipType = 0;
+u8 g_DemoModePacket[DEMO_MODE_PACKET_LENGTH] = {0};
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+u8 g_DemoModeHotKnotSndRetPacket[DEMO_HOTKNOT_SEND_RET_LEN] = {0};
+u8 g_DebugModeHotKnotSndRetPacket[DEBUG_HOTKNOT_SEND_RET_LEN] = {0};
+#endif //CONFIG_ENABLE_HOTKNOT
+
+FirmwareInfo_t g_FirmwareInfo;
+u8 g_LogModePacket[DEBUG_MODE_PACKET_LENGTH] = {0};
+u16 g_FirmwareMode;
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+#if defined(CONFIG_ENABLE_GESTURE_DEBUG_MODE)
+u8 _gGestureWakeupPacket[GESTURE_DEBUG_MODE_PACKET_LENGTH] = {0};
+#elif defined(CONFIG_ENABLE_GESTURE_INFORMATION_MODE)
+u8 _gGestureWakeupPacket[GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH] = {0};
+#else
+u8 _gGestureWakeupPacket[GESTURE_WAKEUP_PACKET_LENGTH] = {0};
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+u8 g_GestureDebugFlag = 0x00;
+u8 g_GestureDebugMode = 0x00;
+u8 g_LogGestureDebug[GESTURE_DEBUG_MODE_PACKET_LENGTH] = {0};
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+u32 g_LogGestureInfor[GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH] = {0};
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+u32 g_GestureWakeupMode[2] = {0xFFFFFFFF, 0xFFFFFFFF};
+u8 g_GestureWakeupFlag = 0;
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+u8 g_EnableTpProximity = 0;
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+u8 g_FaceClosingTp = 0; // for QCOM platform -> 1 : close to, 0 : far away
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+u8 g_FaceClosingTp = 1; // for MTK platform -> 0 : close to, 1 : far away
+#endif
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+u8 g_IsGloveModeOpen = 0;
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+u8 g_IsUpdateFirmware = 0x00;
+
+/*=============================================================*/
+// LOCAL FUNCTION DECLARATION
+/*=============================================================*/
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+static void _DrvFwCtrlUpdateFirmwareBySwIdDoWork(struct work_struct *pWork);
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+static void _DrvFwCtrlCoordinate(u8 *pRawData, u32 *pTranX, u32 *pTranY);
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+/*=============================================================*/
+// LOCAL FUNCTION DEFINITION
+/*=============================================================*/
+
+static s32 _DrvFwCtrlParsePacket(u8 *pPacket, u16 nLength, TouchInfo_t *pInfo)
+{
+ u32 i;
+ u8 nCheckSum = 0;
+ u32 nX = 0, nY = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+ if (g_IsEnableReportRate == 1)
+ {
+ if (g_InterruptCount == 4294967296)
+ {
+ g_InterruptCount = 0; // Reset count if overflow
+ DBG("g_InterruptCount reset to 0\n");
+ }
+
+ if (g_InterruptCount == 0)
+ {
+ // Get start time
+ do_gettimeofday(&g_StartTime);
+
+ DBG("Start time : %lu sec, %lu msec\n", g_StartTime.tv_sec, g_StartTime.tv_usec);
+ }
+
+ g_InterruptCount ++;
+
+ DBG("g_InterruptCount = %d\n", g_InterruptCount);
+ }
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+ nCheckSum = DrvCommonCalculateCheckSum(&pPacket[0], (nLength-1));
+ DBG("checksum : [%x] == [%x]? \n", pPacket[nLength-1], nCheckSum);
+
+ if (pPacket[nLength-1] != nCheckSum)
+ {
+ DBG("WRONG CHECKSUM\n");
+ return -1;
+ }
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ if (g_GestureWakeupFlag == 1)
+ {
+ u8 nWakeupMode = 0;
+ u8 bIsCorrectFormat = 0;
+
+ DBG("received raw data from touch panel as following:\n");
+ DBG("pPacket[0]=%x \n pPacket[1]=%x pPacket[2]=%x pPacket[3]=%x pPacket[4]=%x pPacket[5]=%x \n", \
+ pPacket[0], pPacket[1], pPacket[2], pPacket[3], pPacket[4], pPacket[5]);
+
+ if (pPacket[0] == 0xA7 && pPacket[1] == 0x00 && pPacket[2] == 0x06 && pPacket[3] == PACKET_TYPE_GESTURE_WAKEUP)
+ {
+ nWakeupMode = pPacket[4];
+ bIsCorrectFormat = 1;
+ }
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ else if (pPacket[0] == 0xA7 && pPacket[1] == 0x00 && pPacket[2] == 0x80 && pPacket[3] == PACKET_TYPE_GESTURE_DEBUG)
+ {
+ u32 a = 0;
+
+ nWakeupMode = pPacket[4];
+ bIsCorrectFormat = 1;
+
+ for (a = 0; a < 0x80; a ++)
+ {
+ g_LogGestureDebug[a] = pPacket[a];
+ }
+
+ if (!(pPacket[5] >> 7))// LCM Light Flag = 0
+ {
+ nWakeupMode = 0xFE;
+ DBG("gesture debug mode LCM flag = 0\n");
+ }
+ }
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+ else if (pPacket[0] == 0xA7 && pPacket[1] == 0x00 && pPacket[2] == 0x80 && pPacket[3] == PACKET_TYPE_GESTURE_INFORMATION)
+ {
+ u32 a = 0;
+ u32 nTmpCount = 0;
+
+ nWakeupMode = pPacket[4];
+ bIsCorrectFormat = 1;
+
+ for (a = 0; a < 6; a ++)//header
+ {
+ g_LogGestureInfor[nTmpCount] = pPacket[a];
+ nTmpCount++;
+ }
+
+ for (a = 6; a < 126; a = a+3)//parse packet to coordinate
+ {
+ u32 nTranX = 0;
+ u32 nTranY = 0;
+
+ _DrvFwCtrlCoordinate(&pPacket[a], &nTranX, &nTranY);
+ g_LogGestureInfor[nTmpCount] = nTranX;
+ nTmpCount++;
+ g_LogGestureInfor[nTmpCount] = nTranY;
+ nTmpCount++;
+ }
+
+ g_LogGestureInfor[nTmpCount] = pPacket[126]; //Dummy
+ nTmpCount++;
+ g_LogGestureInfor[nTmpCount] = pPacket[127]; //checksum
+ nTmpCount++;
+ DBG("gesture information mode Count = %d\n", nTmpCount);
+ }
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+ if (bIsCorrectFormat)
+ {
+ DBG("nWakeupMode = 0x%x\n", nWakeupMode);
+
+ switch (nWakeupMode)
+ {
+ case 0x58:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_DOUBLE_CLICK_FLAG;
+
+ DBG("Light up screen by DOUBLE_CLICK gesture wakeup.\n");
+
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x60:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_UP_DIRECT_FLAG;
+
+ DBG("Light up screen by UP_DIRECT gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_UP, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_UP, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x61:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_DOWN_DIRECT_FLAG;
+
+ DBG("Light up screen by DOWN_DIRECT gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_DOWN, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_DOWN, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x62:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_LEFT_DIRECT_FLAG;
+
+ DBG("Light up screen by LEFT_DIRECT gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_LEFT, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_LEFT, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x63:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RIGHT_DIRECT_FLAG;
+
+ DBG("Light up screen by RIGHT_DIRECT gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_RIGHT, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_RIGHT, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x64:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_m_CHARACTER_FLAG;
+
+ DBG("Light up screen by m_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_M, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_M, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x65:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_W_CHARACTER_FLAG;
+
+ DBG("Light up screen by W_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_W, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_W, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x66:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_C_CHARACTER_FLAG;
+
+ DBG("Light up screen by C_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_C, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_C, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x67:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_e_CHARACTER_FLAG;
+
+ DBG("Light up screen by e_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_E, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_E, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x68:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_V_CHARACTER_FLAG;
+
+ DBG("Light up screen by V_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_V, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_V, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x69:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_O_CHARACTER_FLAG;
+
+ DBG("Light up screen by O_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_O, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_O, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6A:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_S_CHARACTER_FLAG;
+
+ DBG("Light up screen by S_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_S, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_S, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6B:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_Z_CHARACTER_FLAG;
+
+ DBG("Light up screen by Z_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_Z, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_Z, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6C:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE1_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE1_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER1, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER1, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6D:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE2_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE2_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER2, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER2, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6E:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE3_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE3_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER3, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER3, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+#ifdef CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+ case 0x6F:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE4_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE4_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER4, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER4, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x70:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE5_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE5_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER5, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER5, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x71:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE6_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE6_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER6, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER6, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x72:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE7_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE7_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER7, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER7, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x73:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE8_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE8_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER8, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER8, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x74:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE9_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE9_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER9, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER9, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x75:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE10_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE10_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER10, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER10, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x76:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE11_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE11_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER11, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER11, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x77:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE12_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE12_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER12, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER12, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x78:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE13_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE13_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER13, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER13, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x79:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE14_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE14_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER14, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER14, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7A:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE15_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE15_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER15, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER15, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7B:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE16_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE16_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER16, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER16, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7C:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE17_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE17_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER17, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER17, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7D:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE18_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE18_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER18, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER18, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7E:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE19_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE19_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER19, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER19, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7F:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE20_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE20_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER20, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER20, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x80:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE21_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE21_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER21, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER21, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x81:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE22_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE22_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER22, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER22, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x82:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE23_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE23_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER23, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER23, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x83:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE24_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE24_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER24, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER24, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x84:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE25_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE25_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER25, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER25, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x85:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE26_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE26_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER26, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER26, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x86:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE27_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE27_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER27, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER27, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x87:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE28_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE28_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER28, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER28, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x88:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE29_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE29_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER29, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER29, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x89:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE30_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE30_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER30, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER30, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8A:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE31_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE31_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER31, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER31, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8B:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE32_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE32_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER32, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER32, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8C:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE33_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE33_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER33, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER33, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8D:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE34_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE34_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER34, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER34, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8E:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE35_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE35_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER35, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER35, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8F:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE36_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE36_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER36, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER36, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x90:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE37_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE37_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER37, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER37, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x91:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE38_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE38_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER38, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER38, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x92:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE39_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE39_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER39, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER39, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x93:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE40_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE40_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER40, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER40, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x94:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE41_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE41_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER41, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER41, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x95:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE42_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE42_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER42, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER42, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x96:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE43_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE43_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER43, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER43, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x97:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE44_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE44_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER44, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER44, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x98:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE45_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE45_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER45, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER45, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x99:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE46_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE46_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER46, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER46, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9A:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE47_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE47_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER47, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER47, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9B:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE48_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE48_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER48, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER48, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9C:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE49_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE49_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER49, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER49, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9D:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE50_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE50_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER50, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER50, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9E:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE51_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE51_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER51, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER51, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+#endif //CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ case 0xFF://Gesture Fail
+ _gGestureWakeupValue[1] = 0xFF;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_FAIL gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER51, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER51, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+ default:
+ _gGestureWakeupValue[0] = 0;
+ _gGestureWakeupValue[1] = 0;
+ DBG("Un-supported gesture wakeup mode. Please check your device driver code.\n");
+ break;
+ }
+
+ DBG("_gGestureWakeupValue = 0x%x, 0x%x\n", _gGestureWakeupValue[0], _gGestureWakeupValue[1]);
+ }
+ else
+ {
+ DBG("gesture wakeup packet format is incorrect.\n");
+ }
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ // Notify android application to retrieve log data mode packet from device driver by sysfs.
+ if (g_GestureKObj != NULL && pPacket[3] == PACKET_TYPE_GESTURE_DEBUG)
+ {
+ char *pEnvp[2];
+ s32 nRetVal = 0;
+
+ pEnvp[0] = "STATUS=GET_GESTURE_DEBUG";
+ pEnvp[1] = NULL;
+
+ nRetVal = kobject_uevent_env(g_GestureKObj, KOBJ_CHANGE, pEnvp);
+ DBG("kobject_uevent_env() nRetVal = %d\n", nRetVal);
+ }
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+ return -1;
+ }
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+ DBG("received raw data from touch panel as following:\n");
+ DBG("pPacket[0]=%x \n pPacket[1]=%x pPacket[2]=%x pPacket[3]=%x pPacket[4]=%x \n pPacket[5]=%x pPacket[6]=%x pPacket[7]=%x pPacket[8]=%x \n", \
+ pPacket[0], pPacket[1], pPacket[2], pPacket[3], pPacket[4], pPacket[5], pPacket[6], pPacket[7], pPacket[8]);
+
+ if (IS_FIRMWARE_DATA_LOG_ENABLED)
+ {
+ if (g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE && pPacket[0] != 0x5A)
+ {
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (pPacket[3] != HOTKNOT_PACKET_TYPE && pPacket[3] != HOTKNOT_RECEIVE_PACKET_TYPE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ DBG("WRONG DEMO MODE HEADER\n");
+ return -1;
+ }
+ }
+ else if (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE && pPacket[0] != 0xA5 && pPacket[0] != 0xAB && (pPacket[0] != 0xA7 && pPacket[3] != PACKET_TYPE_TOOTH_PATTERN))
+ {
+ DBG("WRONG DEBUG MODE HEADER\n");
+ return -1;
+ }
+ }
+ else
+ {
+ if (pPacket[0] != 0x5A)
+ {
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (pPacket[3] != HOTKNOT_PACKET_TYPE && pPacket[3] != HOTKNOT_RECEIVE_PACKET_TYPE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ DBG("WRONG DEMO MODE HEADER\n");
+ return -1;
+ }
+ }
+ } //IS_FIRMWARE_DATA_LOG_ENABLED
+
+ // Process raw data...
+ if (pPacket[0] == 0x5A)
+ {
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (((DemoHotKnotCmdRet_t*)pPacket)->nIdentify == DEMO_PD_PACKET_IDENTIFY)
+ {
+ ReportHotKnotCmd(pPacket, nLength);
+ return -1; //return 0 will run key procedure
+ }
+ else
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ for (i = 0; i < MAX_TOUCH_NUM; i ++)
+ {
+ if ((pPacket[(4*i)+1] == 0xFF) && (pPacket[(4*i)+2] == 0xFF) && (pPacket[(4*i)+3] == 0xFF))
+ {
+ continue;
+ }
+
+ nX = (((pPacket[(4*i)+1] & 0xF0) << 4) | (pPacket[(4*i)+2]));
+ nY = (((pPacket[(4*i)+1] & 0x0F) << 8) | (pPacket[(4*i)+3]));
+
+ pInfo->tPoint[pInfo->nCount].nX = nX * TOUCH_SCREEN_X_MAX / TPD_WIDTH;
+ pInfo->tPoint[pInfo->nCount].nY = nY * TOUCH_SCREEN_Y_MAX / TPD_HEIGHT;
+ pInfo->tPoint[pInfo->nCount].nP = pPacket[4*(i+1)];
+ pInfo->tPoint[pInfo->nCount].nId = i;
+
+ DBG("[x,y]=[%d,%d]\n", nX, nY);
+ DBG("point[%d] : (%d,%d) = %d\n", pInfo->tPoint[pInfo->nCount].nId, pInfo->tPoint[pInfo->nCount].nX, pInfo->tPoint[pInfo->nCount].nY, pInfo->tPoint[pInfo->nCount].nP);
+
+ pInfo->nCount ++;
+ }
+ }
+ }
+ else if (pPacket[0] == 0xA5 || pPacket[0] == 0xAB)
+ {
+ for (i = 0; i < MAX_TOUCH_NUM; i ++)
+ {
+ if ((pPacket[(3*i)+4] == 0xFF) && (pPacket[(3*i)+5] == 0xFF) && (pPacket[(3*i)+6] == 0xFF))
+ {
+ continue;
+ }
+
+ nX = (((pPacket[(3*i)+4] & 0xF0) << 4) | (pPacket[(3*i)+5]));
+ nY = (((pPacket[(3*i)+4] & 0x0F) << 8) | (pPacket[(3*i)+6]));
+
+ pInfo->tPoint[pInfo->nCount].nX = nX * TOUCH_SCREEN_X_MAX / TPD_WIDTH;
+ pInfo->tPoint[pInfo->nCount].nY = nY * TOUCH_SCREEN_Y_MAX / TPD_HEIGHT;
+ pInfo->tPoint[pInfo->nCount].nP = 1;
+ pInfo->tPoint[pInfo->nCount].nId = i;
+
+ DBG("[x,y]=[%d,%d]\n", nX, nY);
+ DBG("point[%d] : (%d,%d) = %d\n", pInfo->tPoint[pInfo->nCount].nId, pInfo->tPoint[pInfo->nCount].nX, pInfo->tPoint[pInfo->nCount].nY, pInfo->tPoint[pInfo->nCount].nP);
+
+ pInfo->nCount ++;
+ }
+
+ // Notify android application to retrieve debug mode packet from device driver by sysfs.
+ if (g_TouchKObj != NULL)
+ {
+ char *pEnvp[2];
+ s32 nRetVal = 0;
+
+ pEnvp[0] = "STATUS=GET_DEBUG_MODE_PACKET";
+ pEnvp[1] = NULL;
+
+ nRetVal = kobject_uevent_env(g_TouchKObj, KOBJ_CHANGE, pEnvp);
+ DBG("kobject_uevent_env() nRetVal = %d\n", nRetVal);
+ }
+ }
+ else if (pPacket[0] == 0xA7 && pPacket[3] == PACKET_TYPE_TOOTH_PATTERN)
+ {
+ for (i = 0; i < MAX_TOUCH_NUM; i ++)
+ {
+ if ((pPacket[(3*i)+5] == 0xFF) && (pPacket[(3*i)+6] == 0xFF) && (pPacket[(3*i)+7] == 0xFF))
+ {
+ continue;
+ }
+
+ nX = (((pPacket[(3*i)+5] & 0xF0) << 4) | (pPacket[(3*i)+6]));
+ nY = (((pPacket[(3*i)+5] & 0x0F) << 8) | (pPacket[(3*i)+7]));
+
+ pInfo->tPoint[pInfo->nCount].nX = nX * TOUCH_SCREEN_X_MAX / TPD_WIDTH;
+ pInfo->tPoint[pInfo->nCount].nY = nY * TOUCH_SCREEN_Y_MAX / TPD_HEIGHT;
+ pInfo->tPoint[pInfo->nCount].nP = 1;
+ pInfo->tPoint[pInfo->nCount].nId = i;
+
+ DBG("[x,y]=[%d,%d]\n", nX, nY);
+ DBG("point[%d] : (%d,%d) = %d\n", pInfo->tPoint[pInfo->nCount].nId, pInfo->tPoint[pInfo->nCount].nX, pInfo->tPoint[pInfo->nCount].nY, pInfo->tPoint[pInfo->nCount].nP);
+
+ pInfo->nCount ++;
+ }
+
+ // Notify android application to retrieve debug mode packet from device driver by sysfs.
+ if (g_TouchKObj != NULL)
+ {
+ char *pEnvp[2];
+ s32 nRetVal = 0;
+
+ pEnvp[0] = "STATUS=GET_DEBUG_MODE_PACKET";
+ pEnvp[1] = NULL;
+
+ nRetVal = kobject_uevent_env(g_TouchKObj, KOBJ_CHANGE, pEnvp);
+ DBG("kobject_uevent_env() nRetVal = %d\n", nRetVal);
+ }
+ }
+#ifdef CONFIG_ENABLE_HOTKNOT
+ else if (pPacket[0] == 0xA7)
+ {
+ if (pPacket[3] == HOTKNOT_PACKET_TYPE || pPacket[3] == HOTKNOT_RECEIVE_PACKET_TYPE)
+ {
+ ReportHotKnotCmd(pPacket, nLength);
+ return -1; //return 0 will run key procedure
+ }
+ }
+#endif //CONFIG_ENABLE_HOTKNOT
+
+
+#ifdef CONFIG_TP_HAVE_KEY
+ if (pPacket[0] == 0x5A)
+ {
+ u8 nButton = pPacket[nLength-2]; //Since the key value is stored in 0th~3th bit of variable "button", we can only retrieve 0th~3th bit of it.
+
+// if (nButton)
+ if (nButton != 0xFF)
+ {
+ DBG("button = %x\n", nButton);
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ DBG("g_EnableTpProximity = %d, pPacket[nLength-2] = 0x%x\n", g_EnableTpProximity, pPacket[nLength-2]);
+
+ if (g_EnableTpProximity && ((pPacket[nLength-2] == 0x80) || (pPacket[nLength-2] == 0x40)))
+ {
+ if (pPacket[nLength-2] == 0x80) // close to
+ {
+ g_FaceClosingTp = 1;
+ }
+ else if (pPacket[nLength-2] == 0x40) // far away
+ {
+ g_FaceClosingTp = 0;
+ }
+
+ DBG("g_FaceClosingTp = %d\n", g_FaceClosingTp);
+
+ return -1;
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ if (g_EnableTpProximity && ((pPacket[nLength-2] == 0x80) || (pPacket[nLength-2] == 0x40)))
+ {
+ int nErr;
+ hwm_sensor_data tSensorData;
+
+ if (pPacket[nLength-2] == 0x80) // close to
+ {
+ g_FaceClosingTp = 0;
+ }
+ else if (pPacket[nLength-2] == 0x40) // far away
+ {
+ g_FaceClosingTp = 1;
+ }
+
+ DBG("g_FaceClosingTp = %d\n", g_FaceClosingTp);
+
+ // map and store data to hwm_sensor_data
+ tSensorData.values[0] = DrvPlatformLyrGetTpPsData();
+ tSensorData.value_divide = 1;
+ tSensorData.status = SENSOR_STATUS_ACCURACY_MEDIUM;
+ // let up layer to know
+ if ((nErr = hwmsen_get_interrupt_data(ID_PROXIMITY, &tSensorData)))
+ {
+ DBG("call hwmsen_get_interrupt_data() failed = %d\n", nErr);
+ }
+
+ return -1;
+ }
+#endif
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+ for (i = 0; i < MAX_KEY_NUM; i ++)
+ {
+ if ((nButton & (1<<i)) == (1<<i))
+ {
+ if (pInfo->nKeyCode == 0)
+ {
+ pInfo->nKeyCode = i;
+
+ DBG("key[%d]=%d ...\n", i, g_TpVirtualKey[i]);
+
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ pInfo->nKeyCode = 0xFF;
+ pInfo->nCount = 1;
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[i][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[i][1];
+ pInfo->tPoint[0].nP = 1;
+ pInfo->tPoint[0].nId = 0;
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ }
+ else
+ {
+ /// if pressing multi-key => no report
+ pInfo->nKeyCode = 0xFF;
+ }
+ }
+ }
+ }
+ else
+ {
+ pInfo->nKeyCode = 0xFF;
+ }
+ }
+ else if (pPacket[0] == 0xA5 || pPacket[0] == 0xAB || (pPacket[0] == 0xA7 && pPacket[3] == PACKET_TYPE_TOOTH_PATTERN))
+ {
+ // TODO : waiting for firmware define the virtual key
+
+ if (pPacket[0] == 0xA5)
+ {
+ // Do nothing because of 0xA5 not define virtual key in the packet
+ }
+ else if (pPacket[0] == 0xAB || (pPacket[0] == 0xA7 && pPacket[3] == PACKET_TYPE_TOOTH_PATTERN))
+ {
+ u8 nButton = 0xFF;
+
+ if (pPacket[0] == 0xAB)
+ {
+ nButton = pPacket[3]; // The pressed virtual key is stored in 4th byte for debug mode packet 0xAB.
+ }
+ else if (pPacket[0] == 0xA7 && pPacket[3] == PACKET_TYPE_TOOTH_PATTERN)
+ {
+ nButton = pPacket[4]; // The pressed virtual key is stored in 5th byte for debug mode packet 0xA7.
+ }
+
+ if (nButton != 0xFF)
+ {
+ DBG("button = %x\n", nButton);
+
+ for (i = 0; i < MAX_KEY_NUM; i ++)
+ {
+ if ((nButton & (1<<i)) == (1<<i))
+ {
+ if (pInfo->nKeyCode == 0)
+ {
+ pInfo->nKeyCode = i;
+
+ DBG("key[%d]=%d ...\n", i, g_TpVirtualKey[i]);
+
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ pInfo->nKeyCode = 0xFF;
+ pInfo->nCount = 1;
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[i][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[i][1];
+ pInfo->tPoint[0].nP = 1;
+ pInfo->tPoint[0].nId = 0;
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ }
+ else
+ {
+ /// if pressing multi-key => no report
+ pInfo->nKeyCode = 0xFF;
+ }
+ }
+ }
+ }
+ else
+ {
+ pInfo->nKeyCode = 0xFF;
+ }
+ }
+ }
+#endif //CONFIG_TP_HAVE_KEY
+
+ return 0;
+}
+
+static void _DrvFwCtrlStoreFirmwareData(u8 *pBuf, u32 nSize)
+{
+ u32 nCount = nSize / 1024;
+ u32 nRemainder = nSize % 1024;
+ u32 i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (nCount > 0) // nSize >= 1024
+ {
+ for (i = 0; i < nCount; i ++)
+ {
+ memcpy(g_FwData[g_FwDataCount], pBuf+(i*1024), 1024);
+
+ g_FwDataCount ++;
+ }
+
+ if (nRemainder > 0) // Handle special firmware size like MSG22XX(48.5KB)
+ {
+ DBG("nRemainder = %d\n", nRemainder);
+
+ memcpy(g_FwData[g_FwDataCount], pBuf+(i*1024), nRemainder);
+
+ g_FwDataCount ++;
+ }
+ }
+ else // nSize < 1024
+ {
+ if (nSize > 0)
+ {
+ memcpy(g_FwData[g_FwDataCount], pBuf, nSize);
+
+ g_FwDataCount ++;
+ }
+ }
+
+ DBG("*** g_FwDataCount = %d ***\n", g_FwDataCount);
+
+ if (pBuf != NULL)
+ {
+ DBG("*** buf[0] = %c ***\n", pBuf[0]);
+ }
+}
+
+static u16 _DrvFwCtrlMsg26xxmGetSwId(EmemType_e eEmemType)
+{
+ u16 nRetVal = 0;
+ u16 nRegData = 0;
+ u8 szDbBusTxData[5] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xA4AB); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x5B58
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x5B58);
+
+ szDbBusTxData[0] = 0x72;
+ if (eEmemType == EMEM_MAIN) // Read SW ID from main block
+ {
+ szDbBusTxData[1] = 0x00;
+ szDbBusTxData[2] = 0x2A;
+ }
+ else if (eEmemType == EMEM_INFO) // Read SW ID from info block
+ {
+ szDbBusTxData[1] = 0x80;
+ szDbBusTxData[2] = 0x04;
+ }
+ szDbBusTxData[3] = 0x00;
+ szDbBusTxData[4] = 0x04;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 5);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ /*
+ Ex. SW ID in Main Block :
+ Major low byte at address 0x002A
+ Major high byte at address 0x002B
+
+ SW ID in Info Block :
+ Major low byte at address 0x8004
+ Major high byte at address 0x8005
+ */
+
+ nRetVal = szDbBusRxData[1];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[0];
+
+ DBG("SW ID = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static s32 _DrvFwCtrlMsg26xxmUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+ u32 i, j;
+ u32 nCrcMain, nCrcMainTp;
+ u32 nCrcInfo, nCrcInfoTp;
+ u16 nRegData = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ nCrcMain = 0xffffffff;
+ nCrcInfo = 0xffffffff;
+
+ /////////////////////////
+ // Erase
+ /////////////////////////
+
+ DBG("erase 0\n");
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ DBG("erase 1\n");
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // Set PROGRAM password
+ RegSet16BitValue(0x161A, 0xABBA); //bank:emem, addr:h000D
+
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80); //bank:emem, addr:h000C
+
+ DBG("erase 2\n");
+ // Clear setting
+ RegSetLByteValue(0x1618, 0x40); //bank:emem, addr:h000C
+
+ mdelay(10);
+
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80); //bank:emem, addr:h000C
+
+ DBG("erase 3\n");
+ // Trigger erase
+ if (eEmemType == EMEM_ALL)
+ {
+ RegSetLByteValue(0x160E, 0x08); //all chip //bank:emem, addr:h0007
+ }
+ else
+ {
+ RegSetLByteValue(0x160E, 0x04); //sector //bank:emem, addr:h0007
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ mdelay(1000);
+ DBG("erase OK\n");
+
+ /////////////////////////
+ // Program
+ /////////////////////////
+
+ DBG("program 0\n");
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ DBG("program 1\n");
+
+ // Check_Loader_Ready: Polling 0x3CE4 is 0x1C70
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x1C70);
+
+ DBG("program 2\n");
+
+ RegSet16BitValue(0x3CE4, 0xE38F); //all chip
+ mdelay(100);
+
+ // Check_Loader_Ready2Program: Polling 0x3CE4 is 0x2F43
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x2F43);
+
+ DBG("program 3\n");
+
+ // prepare CRC & send data
+ DrvCommonCrcInitTable();
+
+ for (i = 0; i < MSG26XXM_FIRMWARE_WHOLE_SIZE; i ++) // Main : 32KB + Info : 8KB
+ {
+ if (i > 31)
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ nCrcInfo = DrvCommonCrcGetValue(szFwData[i][j], nCrcInfo);
+ }
+ }
+ else if (i < 31)
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ nCrcMain = DrvCommonCrcGetValue(szFwData[i][j], nCrcMain);
+ }
+ }
+ else ///if (i == 31)
+ {
+ szFwData[i][1014] = 0x5A;
+ szFwData[i][1015] = 0xA5;
+
+ for (j = 0; j < 1016; j ++)
+ {
+ nCrcMain = DrvCommonCrcGetValue(szFwData[i][j], nCrcMain);
+ }
+ }
+
+ for (j = 0; j < 8; j ++)
+ {
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szFwData[i][j*128], 128);
+ }
+ mdelay(100);
+
+ // Check_Program_Done: Polling 0x3CE4 is 0xD0BC
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0xD0BC);
+
+ // Continue_Program
+ RegSet16BitValue(0x3CE4, 0x2F43);
+ }
+
+ DBG("program 4\n");
+
+ // Notify_Write_Done
+ RegSet16BitValue(0x3CE4, 0x1380);
+ mdelay(100);
+
+ DBG("program 5\n");
+
+ // Check_CRC_Done: Polling 0x3CE4 is 0x9432
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x9432);
+
+ DBG("program 6\n");
+
+ // check CRC
+ nCrcMain = nCrcMain ^ 0xffffffff;
+ nCrcInfo = nCrcInfo ^ 0xffffffff;
+
+ // read CRC from TP
+ nCrcMainTp = RegGet16BitValue(0x3C80);
+ nCrcMainTp = (nCrcMainTp << 16) | RegGet16BitValue(0x3C82);
+ nCrcInfoTp = RegGet16BitValue(0x3CA0);
+ nCrcInfoTp = (nCrcInfoTp << 16) | RegGet16BitValue(0x3CA2);
+
+ DBG("nCrcMain=0x%x, nCrcInfo=0x%x, nCrcMainTp=0x%x, nCrcInfoTp=0x%x\n",
+ nCrcMain, nCrcInfo, nCrcMainTp, nCrcInfoTp);
+
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(300);
+
+ if ((nCrcMainTp != nCrcMain) || (nCrcInfoTp != nCrcInfo))
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+
+ DBG("Update SUCCESS\n");
+
+ return 0;
+}
+
+static void _DrvFwCtrlMsg28xxConvertFwDataTwoDimenToOneDimen(u8 szTwoDimenFwData[][1024], u8* pOneDimenFwData)
+{
+ u32 i, j;
+
+ DBG("*** %s() ***\n", __func__);
+
+ for (i = 0; i < MSG28XX_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ pOneDimenFwData[i*1024+j] = szTwoDimenFwData[i][j];
+ }
+ }
+}
+
+static u32 _DrvFwCtrlMsg28xxCalculateCrc(u8 *pFwData, u32 nOffset, u32 nSize)
+{
+ u32 i;
+ u32 nData = 0, nCrc = 0;
+ u32 nCrcRule = 0x0C470C06; // 0000 1100 0100 0111 0000 1100 0000 0110
+
+ for (i = 0; i < nSize; i += 4)
+ {
+ nData = (pFwData[nOffset+i]) | (pFwData[nOffset+i+1] << 8) | (pFwData[nOffset+i+2] << 16) | (pFwData[nOffset+i+3] << 24);
+ nCrc = (nCrc >> 1) ^ (nCrc << 1) ^ (nCrc & nCrcRule) ^ nData;
+ }
+
+ return nCrc;
+}
+
+static void _DrvFwCtrlMsg28xxAccessEFlashInit(void)
+{
+ // Disable watchdog
+ RegSetLByteValue(0x3C60, 0x55);
+ RegSetLByteValue(0x3C61, 0xAA);
+
+ // Disable cpu read flash
+ RegSetLByteValue(0x1606, 0x20);
+ RegSetLByteValue(0x1608, 0x20);
+
+ // Clear PROGRAM erase password
+ RegSet16BitValue(0x1618, 0xA55A);
+}
+
+static void _DrvFwCtrlMsg28xxIspBurstWriteEFlashStart(u16 nStartAddr, u8 *pFirstData, u32 nBlockSize, u16 nPageNum, EmemType_e eEmemType)
+{
+ u16 nWriteAddr = nStartAddr/4;
+ u8 szDbBusTxData[3] = {0};
+
+ DBG("*** %s() nStartAddr = 0x%x, nBlockSize = %d, nPageNum = %d, eEmemType = %d ***\n", __func__, nStartAddr, nBlockSize, nPageNum, eEmemType);
+
+ // Disable cpu read flash
+ RegSetLByteValue(0x1608, 0x20);
+ RegSetLByteValue(0x1606, 0x20);
+
+ // Set e-flash mode to page write mode
+ RegSet16BitValue(0x1606, 0x0080);
+
+ // Set data align
+ RegSetLByteValue(0x1640, 0x01);
+
+ if (eEmemType == EMEM_INFO)
+ {
+ RegSetLByteValue(0x1607, 0x08);
+ }
+
+ // Set double buffer
+ RegSetLByteValue(0x1604, 0x01);
+
+ // Set page write number
+ RegSet16BitValue(0x161A, nPageNum);
+
+ // Set e-flash mode trigger(Trigger write mode)
+ RegSetLByteValue(0x1606, 0x81);
+
+ // Set init data
+ RegSetLByteValue(0x1602, pFirstData[0]);
+ RegSetLByteValue(0x1602, pFirstData[1]);
+ RegSetLByteValue(0x1602, pFirstData[2]);
+ RegSetLByteValue(0x1602, pFirstData[3]);
+
+ // Set initial address(for latch SA, CA)
+ RegSet16BitValue(0x1600, nWriteAddr);
+
+ // Set initial address(for latch PA)
+ RegSet16BitValue(0x1600, nWriteAddr);
+
+ // Enable burst mode
+ RegSetLByteValue(0x1608, 0x21);
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x16;
+ szDbBusTxData[2] = 0x02;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3);
+
+ szDbBusTxData[0] = 0x20;
+// szDbBusTxData[1] = 0x00;
+// szDbBusTxData[2] = 0x00;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 1);
+}
+
+static void _DrvFwCtrlMsg28xxIspBurstWriteEFlashDoWrite(u8 *pBufferData, u32 nLength)
+{
+ u32 i;
+ u8 szDbBusTxData[3+MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE] = {0};
+
+ DBG("*** %s() nLength = %d ***\n", __func__, nLength);
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x16;
+ szDbBusTxData[2] = 0x02;
+
+ for (i = 0; i < nLength; i ++)
+ {
+ szDbBusTxData[3+i] = pBufferData[i];
+ }
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+nLength);
+}
+
+static void _DrvFwCtrlMsg28xxIspBurstWriteEFlashEnd(void)
+{
+ u8 szDbBusTxData[1] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x21;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 1);
+
+ szDbBusTxData[0] = 0x7E;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 1);
+
+ // Clear burst mode
+ RegSetLByteValue(0x1608, 0x20);
+}
+
+static void _DrvFwCtrlMsg28xxWriteEFlashStart(u16 nStartAddr, u8 *pFirstData, EmemType_e eEmemType)
+{
+ u16 nWriteAddr = nStartAddr/4;
+
+ DBG("*** %s() nStartAddr = 0x%x, eEmemType = %d ***\n", __func__, nStartAddr, eEmemType);
+
+ // Disable cpu read flash
+ RegSetLByteValue(0x1608, 0x20);
+ RegSetLByteValue(0x1606, 0x20);
+
+ // Set e-flash mode to write mode
+ RegSet16BitValue(0x1606, 0x0040);
+
+ // Set data align
+ RegSetLByteValue(0x1640, 0x01);
+
+ if (eEmemType == EMEM_INFO)
+ {
+ RegSetLByteValue(0x1607, 0x08);
+ }
+
+ // Set double buffer
+ RegSetLByteValue(0x1604, 0x01);
+
+ // Set e-flash mode trigger(Trigger write mode)
+ RegSetLByteValue(0x1606, 0x81);
+
+ // Set init data
+ RegSetLByteValue(0x1602, pFirstData[0]);
+ RegSetLByteValue(0x1602, pFirstData[1]);
+ RegSetLByteValue(0x1602, pFirstData[2]);
+ RegSetLByteValue(0x1602, pFirstData[3]);
+
+ // Set initial address(for latch SA, CA)
+ RegSet16BitValue(0x1600, nWriteAddr);
+
+ // Set initial address(for latch PA)
+ RegSet16BitValue(0x1600, nWriteAddr);
+}
+
+static void _DrvFwCtrlMsg28xxWriteEFlashDoWrite(u16 nStartAddr, u8 *pBufferData)
+{
+ u16 nWriteAddr = nStartAddr/4;
+
+ DBG("*** %s() nWriteAddr = %d ***\n", __func__, nWriteAddr);
+
+ // Write data
+ RegSetLByteValue(0x1602, pBufferData[0]);
+ RegSetLByteValue(0x1602, pBufferData[1]);
+ RegSetLByteValue(0x1602, pBufferData[2]);
+ RegSetLByteValue(0x1602, pBufferData[3]);
+
+ // Set address
+ RegSet16BitValue(0x1600, nWriteAddr);
+}
+
+static void _DrvFwCtrlMsg28xxWriteEFlashEnd(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ // Do nothing
+}
+
+static void _DrvFwCtrlMsg28xxReadEFlashStart(u16 nStartAddr, EmemType_e eEmemType)
+{
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ // Disable cpu read flash
+ RegSetLByteValue(0x1608, 0x20);
+ RegSetLByteValue(0x1606, 0x20);
+
+ RegSetLByteValue(0x1606, 0x02);
+
+ RegSet16BitValue(0x1600, nStartAddr);
+
+ if (eEmemType == EMEM_MAIN)
+ {
+ // Set main block
+ RegSetLByteValue(0x1607, 0x00);
+
+ // Set main double buffer
+ RegSetLByteValue(0x1604, 0x01);
+
+ // Set e-flash mode to read mode for main
+ RegSet16BitValue(0x1606, 0x0001);
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ // Set info block
+ RegSetLByteValue(0x1607, 0x08);
+
+ // Set info double buffer
+ RegSetLByteValue(0x1604, 0x01);
+
+ // Set e-flash mode to read mode for info
+ RegSet16BitValue(0x1606, 0x0801);
+ }
+}
+
+static void _DrvFwCtrlMsg28xxReadEFlashDoRead(u16 nReadAddr, u8 *pReadData)
+{
+ u16 nRegData1 = 0, nRegData2 = 0;
+
+ DBG("*** %s() nReadAddr = 0x%x ***\n", __func__, nReadAddr);
+
+ // Set read address
+ RegSet16BitValue(0x1600, nReadAddr);
+
+ // Read 16+16 bits
+ nRegData1 = RegGet16BitValue(0x160A);
+ nRegData2 = RegGet16BitValue(0x160C);
+
+ pReadData[0] = nRegData1 & 0xFF;
+ pReadData[1] = (nRegData1 >> 8) & 0xFF;
+ pReadData[2] = nRegData2 & 0xFF;
+ pReadData[3] = (nRegData2 >> 8) & 0xFF;
+}
+
+static void _DrvFwCtrlMsg28xxReadEFlashEnd(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ // Set read done
+ RegSetLByteValue(0x1606, 0x02);
+
+ // Unset info flag
+ RegSetLByteValue(0x1607, 0x00);
+
+ // Clear address
+ RegSet16BitValue(0x1600, 0x0000);
+}
+
+/*
+static void _DrvFwCtrlMsg28xxGetTpVendorCode(u8 *pTpVendorCode)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ u16 nReadAddr = 0;
+ u8 szTmpData[4] = {0};
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ _DrvFwCtrlMsg28xxReadEFlashStart(0x81FA, EMEM_INFO);
+ nReadAddr = 0x81FA;
+
+ _DrvFwCtrlMsg28xxReadEFlashDoRead(nReadAddr, &szTmpData[0]);
+
+ DBG("szTmpData[0] = 0x%x\n", szTmpData[0]); // add for debug
+ DBG("szTmpData[1] = 0x%x\n", szTmpData[1]); // add for debug
+ DBG("szTmpData[2] = 0x%x\n", szTmpData[2]); // add for debug
+ DBG("szTmpData[3] = 0x%x\n", szTmpData[3]); // add for debug
+
+ _DrvFwCtrlMsg28xxReadEFlashEnd();
+
+ pTpVendorCode[0] = szTmpData[1];
+ pTpVendorCode[1] = szTmpData[2];
+ pTpVendorCode[2] = szTmpData[3];
+
+ DBG("pTpVendorCode[0] = 0x%x , %c \n", pTpVendorCode[0], pTpVendorCode[0]);
+ DBG("pTpVendorCode[1] = 0x%x , %c \n", pTpVendorCode[1], pTpVendorCode[1]);
+ DBG("pTpVendorCode[2] = 0x%x , %c \n", pTpVendorCode[2], pTpVendorCode[2]);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+ }
+}
+*/
+
+static void _DrvFwCtrlMsg28xxGetSfrAddr3Value(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ // Disable cpu read flash
+ RegSetLByteValue(0x1608, 0x20);
+ RegSetLByteValue(0x1606, 0x20);
+
+ // Set e-flash mode to read mode
+ RegSetLByteValue(0x1606, 0x01);
+ RegSetLByteValue(0x1610, 0x01);
+ RegSetLByteValue(0x1607, 0x20);
+
+ // Set read address
+ RegSetLByteValue(0x1600, 0x03);
+ RegSetLByteValue(0x1601, 0x00);
+
+ _gSFR_ADDR3_BYTE0_1_VALUE = RegGet16BitValue(0x160A);
+ _gSFR_ADDR3_BYTE2_3_VALUE = RegGet16BitValue(0x160C);
+
+ DBG("_gSFR_ADDR3_BYTE0_1_VALUE = 0x%4X, _gSFR_ADDR3_BYTE2_3_VALUE = 0x%4X\n", _gSFR_ADDR3_BYTE0_1_VALUE, _gSFR_ADDR3_BYTE2_3_VALUE);
+}
+
+static void _DrvFwCtrlMsg28xxUnsetProtectBit(void)
+{
+ u8 nB0, nB1, nB2, nB3;
+
+ DBG("*** %s() ***\n", __func__);
+
+ _DrvFwCtrlMsg28xxGetSfrAddr3Value();
+
+ nB0 = _gSFR_ADDR3_BYTE0_1_VALUE & 0xFF;
+ nB1 = (_gSFR_ADDR3_BYTE0_1_VALUE & 0xFF00) >> 8;
+
+ nB2 = _gSFR_ADDR3_BYTE2_3_VALUE & 0xFF;
+ nB3 = (_gSFR_ADDR3_BYTE2_3_VALUE & 0xFF00) >> 8;
+
+ DBG("nB0 = 0x%2X, nB1 = 0x%2X, nB2 = 0x%2X, nB3 = 0x%2X\n", nB0, nB1, nB2, nB3);
+
+ nB2 = nB2 & 0xBF; // 10111111
+ nB3 = nB3 & 0xFC; // 11111100
+
+ DBG("nB0 = 0x%2X, nB1 = 0x%2X, nB2 = 0x%2X, nB3 = 0x%2X\n", nB0, nB1, nB2, nB3);
+
+ // Disable cpu read flash
+ RegSetLByteValue(0x1608, 0x20);
+ RegSetLByteValue(0x1606, 0x20);
+ RegSetLByteValue(0x1610, 0x80);
+ RegSetLByteValue(0x1607, 0x10);
+
+ // Trigger SFR write
+ RegSetLByteValue(0x1606, 0x01);
+
+ // Set write data
+ RegSetLByteValue(0x1602, nB0);
+ RegSetLByteValue(0x1602, nB1);
+ RegSetLByteValue(0x1602, nB2);
+ RegSetLByteValue(0x1602, nB3);
+
+ // Set write address
+ RegSetLByteValue(0x1600, 0x03);
+ RegSetLByteValue(0x1601, 0x00);
+
+ // Set TM mode = 0
+ RegSetLByteValue(0x1607, 0x00);
+}
+
+static void _DrvFwCtrlMsg28xxSetProtectBit(void)
+{
+ u8 nB0, nB1, nB2, nB3;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nB0 = _gSFR_ADDR3_BYTE0_1_VALUE & 0xFF;
+ nB1 = (_gSFR_ADDR3_BYTE0_1_VALUE & 0xFF00) >> 8;
+
+ nB2 = _gSFR_ADDR3_BYTE2_3_VALUE & 0xFF;
+ nB3 = (_gSFR_ADDR3_BYTE2_3_VALUE & 0xFF00) >> 8;
+
+ DBG("nB0 = 0x%2X, nB1 = 0x%2X, nB2 = 0x%2X, nB3 = 0x%2X\n", nB0, nB1, nB2, nB3);
+
+ // Disable cpu read flash
+ RegSetLByteValue(0x1608, 0x20);
+ RegSetLByteValue(0x1606, 0x20);
+ RegSetLByteValue(0x1610, 0x80);
+ RegSetLByteValue(0x1607, 0x10);
+
+ // Trigger SFR write
+ RegSetLByteValue(0x1606, 0x01);
+
+ // Set write data
+ RegSetLByteValue(0x1602, nB0);
+ RegSetLByteValue(0x1602, nB1);
+ RegSetLByteValue(0x1602, nB2);
+ RegSetLByteValue(0x1602, nB3);
+
+ // Set write address
+ RegSetLByteValue(0x1600, 0x03);
+ RegSetLByteValue(0x1601, 0x00);
+ RegSetLByteValue(0x1606, 0x02);
+}
+
+static void _DrvFwCtrlMsg28xxEraseEmem(EmemType_e eEmemType)
+{
+ u32 nInfoAddr = 0x20;
+ u32 nTimeOut = 0;
+ u8 nRegData = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ DBG("Erase start\n");
+
+ _DrvFwCtrlMsg28xxAccessEFlashInit();
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Set PROGRAM erase password
+ RegSet16BitValue(0x1618, 0x5AA5);
+
+ _DrvFwCtrlMsg28xxUnsetProtectBit();
+
+ if (eEmemType == EMEM_MAIN) // 128KB
+ {
+ DBG("Erase main block\n");
+
+ // Set main block
+ RegSetLByteValue(0x1607, 0x00);
+
+ // Set e-flash mode to erase mode
+ RegSetLByteValue(0x1606, 0xC0);
+
+ // Set page erase main
+ RegSetLByteValue(0x1607, 0x03);
+
+ // e-flash mode trigger
+ RegSetLByteValue(0x1606, 0xC1);
+
+ nTimeOut = 0;
+ while (1) // Wait erase done
+ {
+ nRegData = RegGetLByteValue(0x160E);
+ nRegData = (nRegData & BIT3);
+
+ DBG("Wait erase done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT3)
+ {
+ break;
+ }
+
+ mdelay(10);
+
+ if ((nTimeOut ++) > 10)
+ {
+ DBG("Erase main block failed. Timeout.\n");
+
+ goto EraseEnd;
+ }
+ }
+ }
+ else if (eEmemType == EMEM_INFO) // 2KB
+ {
+ DBG("Erase info block\n");
+
+ // Set info block
+ RegSetLByteValue(0x1607, 0x08);
+
+ // Set info double buffer
+ RegSetLByteValue(0x1604, 0x01);
+
+ // Set e-flash mode to erase mode
+ RegSetLByteValue(0x1606, 0xC0);
+
+ // Set page erase info
+ RegSetLByteValue(0x1607, 0x09);
+
+ for (nInfoAddr = 0x20; nInfoAddr <= MSG28XX_EMEM_INFO_MAX_ADDR; nInfoAddr += 0x20)
+ {
+ DBG("nInfoAddr = 0x%x\n", nInfoAddr); // add for debug
+
+ // Set address
+ RegSet16BitValue(0x1600, nInfoAddr);
+
+ // e-flash mode trigger
+ RegSetLByteValue(0x1606, 0xC1);
+
+ nTimeOut = 0;
+ while (1) // Wait erase done
+ {
+ nRegData = RegGetLByteValue(0x160E);
+ nRegData = (nRegData & BIT3);
+
+ DBG("Wait erase done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT3)
+ {
+ break;
+ }
+
+ mdelay(10);
+
+ if ((nTimeOut ++) > 10)
+ {
+ DBG("Erase info block failed. Timeout.\n");
+
+ // Set main block
+ RegSetLByteValue(0x1607, 0x00);
+
+ goto EraseEnd;
+ }
+ }
+ }
+
+ // Set main block
+ RegSetLByteValue(0x1607, 0x00);
+ }
+
+ EraseEnd:
+
+ _DrvFwCtrlMsg28xxSetProtectBit();
+
+ RegSetLByteValue(0x1606, 0x00);
+ RegSetLByteValue(0x1607, 0x00);
+
+ // Clear PROGRAM erase password
+ RegSet16BitValue(0x1618, 0xA55A);
+
+ DBG("Erase end\n");
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+}
+
+static void _DrvFwCtrlMsg28xxProgramEmem(EmemType_e eEmemType)
+{
+ u32 i, j;
+ u32 nPageNum = 0, nLength = 0, nIndex = 0, nWordNum = 0;
+ u32 nRetryTime = 0;
+ u8 nRegData = 0;
+ u8 szFirstData[MSG28XX_EMEM_SIZE_BYTES_ONE_WORD] = {0};
+ u8 szBufferData[MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE] = {0};
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ DBG("Program start\n");
+
+ _DrvFwCtrlMsg28xxAccessEFlashInit();
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Set PROGRAM erase password
+ RegSet16BitValue(0x1618, 0x5AA5);
+
+ _DrvFwCtrlMsg28xxUnsetProtectBit();
+
+ if (eEmemType == EMEM_MAIN) // Program main block
+ {
+ DBG("Program main block\n");
+
+ nPageNum = (MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE * 1024) / MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE; // 128*1024/128=1024
+ nIndex = 0;
+
+ for (i = 0; i < nPageNum; i ++)
+ {
+ if (i == 0)
+ {
+ // Read first data 4 bytes
+ nLength = MSG28XX_EMEM_SIZE_BYTES_ONE_WORD;
+
+ szFirstData[0] = g_FwData[0][0];
+ szFirstData[1] = g_FwData[0][1];
+ szFirstData[2] = g_FwData[0][2];
+ szFirstData[3] = g_FwData[0][3];
+
+ _DrvFwCtrlMsg28xxIspBurstWriteEFlashStart(nIndex, &szFirstData[0], MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE*1024, nPageNum, EMEM_MAIN);
+
+ nIndex += nLength;
+
+ nLength = MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE - MSG28XX_EMEM_SIZE_BYTES_ONE_WORD; // 124 = 128 - 4
+
+ for (j = 0; j < nLength; j ++)
+ {
+ szBufferData[j] = g_FwData[0][4+j];
+ }
+ }
+ else
+ {
+ nLength = MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE;
+
+ for (j = 0; j < nLength; j ++)
+ {
+ szBufferData[j] = g_FwData[i/8][MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE*(i-(8*(i/8)))+j];
+ }
+ }
+
+ _DrvFwCtrlMsg28xxIspBurstWriteEFlashDoWrite(&szBufferData[0], nLength);
+
+ udelay(2000); // delay about 2ms
+
+ nIndex += nLength;
+ }
+
+ _DrvFwCtrlMsg28xxIspBurstWriteEFlashEnd();
+
+ // Set write done
+ RegSet16BitValueOn(0x1606, BIT2);
+
+ // Check RBB
+ nRegData = RegGetLByteValue(0x160E);
+ nRetryTime = 0;
+
+ while ((nRegData & BIT3) != BIT3)
+ {
+ mdelay(10);
+
+ nRegData = RegGetLByteValue(0x160E);
+
+ if (nRetryTime ++ > 100)
+ {
+ DBG("main block can't wait write to done.\n");
+
+ goto ProgramEnd;
+ }
+ }
+ }
+ else if (eEmemType == EMEM_INFO) // Program info block
+ {
+ DBG("Program info block\n");
+
+ nPageNum = (MSG28XX_FIRMWARE_INFO_BLOCK_SIZE * 1024) / MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE; // 2*1024/128=16
+ nIndex = 0;
+ nIndex += MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE;
+
+ // Skip firt page(page 0) & Update page 1~14 by isp burst write mode
+ for (i = 1; i < (nPageNum - 1); i ++)
+ {
+ if (i == 1)
+ {
+ // Read first data 4 bytes
+ nLength = MSG28XX_EMEM_SIZE_BYTES_ONE_WORD;
+
+ szFirstData[0] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE][MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE];
+ szFirstData[1] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE][MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE+1];
+ szFirstData[2] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE][MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE+2];
+ szFirstData[3] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE][MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE+3];
+
+ _DrvFwCtrlMsg28xxIspBurstWriteEFlashStart(nIndex, &szFirstData[0], MSG28XX_FIRMWARE_INFO_BLOCK_SIZE*1024, nPageNum-1, EMEM_INFO);
+
+ nIndex += nLength;
+
+ nLength = MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE - MSG28XX_EMEM_SIZE_BYTES_ONE_WORD; // 124 = 128 - 4
+
+ for (j = 0; j < nLength; j ++)
+ {
+ szBufferData[j] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE][MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE+4+j];
+ }
+ }
+ else
+ {
+ nLength = MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE;
+
+ if (i < 8) // 1 < i < 8
+ {
+ for (j = 0; j < nLength; j ++)
+ {
+ szBufferData[j] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE][MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE*i+j];
+ }
+ }
+ else // i >= 8
+ {
+ for (j = 0; j < nLength; j ++)
+ {
+ szBufferData[j] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE+1][MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE*(i-8)+j];
+ }
+ }
+ }
+
+ _DrvFwCtrlMsg28xxIspBurstWriteEFlashDoWrite(&szBufferData[0], nLength);
+
+ udelay(2000); // delay about 2ms
+
+ nIndex += nLength;
+ }
+
+ _DrvFwCtrlMsg28xxIspBurstWriteEFlashEnd();
+
+ // Set write done
+ RegSet16BitValueOn(0x1606, BIT2);
+
+ // Check RBB
+ nRegData = RegGetLByteValue(0x160E);
+ nRetryTime = 0;
+
+ while ((nRegData & BIT3) != BIT3)
+ {
+ mdelay(10);
+
+ nRegData = RegGetLByteValue(0x160E);
+
+ if (nRetryTime ++ > 100)
+ {
+ DBG("Info block page 1~14 can't wait write to done.\n");
+
+ goto ProgramEnd;
+ }
+ }
+
+ RegSet16BitValueOff(0x1EBE, BIT15);
+
+ // Update page 15 by write mode
+ nIndex = 15 * MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE;
+ nWordNum = MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE / MSG28XX_EMEM_SIZE_BYTES_ONE_WORD; // 128/4=32
+ nLength = MSG28XX_EMEM_SIZE_BYTES_ONE_WORD;
+
+ for (i = 0; i < nWordNum; i ++)
+ {
+ if (i == 0)
+ {
+ szFirstData[0] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE+1][7*MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE];
+ szFirstData[1] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE+1][7*MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE+1];
+ szFirstData[2] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE+1][7*MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE+2];
+ szFirstData[3] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE+1][7*MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE+3];
+
+ _DrvFwCtrlMsg28xxWriteEFlashStart(nIndex, &szFirstData[0], EMEM_INFO);
+ }
+ else
+ {
+ for (j = 0; j < nLength; j ++)
+ {
+ szFirstData[j] = g_FwData[MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE+1][7*MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE+(4*i)+j];
+ }
+
+ _DrvFwCtrlMsg28xxWriteEFlashDoWrite(nIndex, &szFirstData[0]);
+ }
+
+ udelay(2000); // delay about 2ms
+
+ nIndex += nLength;
+ }
+
+ _DrvFwCtrlMsg28xxWriteEFlashEnd();
+
+ // Set write done
+ RegSet16BitValueOn(0x1606, BIT2);
+
+ // Check RBB
+ nRegData = RegGetLByteValue(0x160E);
+ nRetryTime = 0;
+
+ while ((nRegData & BIT3) != BIT3)
+ {
+ mdelay(10);
+
+ nRegData = RegGetLByteValue(0x160E);
+
+ if (nRetryTime ++ > 100)
+ {
+ DBG("Info block page 15 can't wait write to done.\n");
+
+ goto ProgramEnd;
+ }
+ }
+ }
+
+ ProgramEnd:
+
+ _DrvFwCtrlMsg28xxSetProtectBit();
+
+ // Clear PROGRAM erase password
+ RegSet16BitValue(0x1618, 0xA55A);
+
+ DBG("Program end\n");
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+}
+
+static u16 _DrvFwCtrlMsg28xxGetSwId(EmemType_e eEmemType)
+{
+ u16 nRetVal = 0;
+ u16 nReadAddr = 0;
+ u8 szTmpData[4] = {0};
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ if (eEmemType == EMEM_MAIN) // Read SW ID from main block
+ {
+ _DrvFwCtrlMsg28xxReadEFlashStart(0x7FFD, EMEM_MAIN);
+ nReadAddr = 0x7FFD;
+ }
+ else if (eEmemType == EMEM_INFO) // Read SW ID from info block
+ {
+ _DrvFwCtrlMsg28xxReadEFlashStart(0x81FB, EMEM_INFO);
+ nReadAddr = 0x81FB;
+ }
+
+ _DrvFwCtrlMsg28xxReadEFlashDoRead(nReadAddr, &szTmpData[0]);
+
+ _DrvFwCtrlMsg28xxReadEFlashEnd();
+
+ /*
+ Ex. SW ID in Main Block :
+ Major low byte at address 0x7FFD
+
+ SW ID in Info Block :
+ Major low byte at address 0x81FB
+ */
+
+ nRetVal = (szTmpData[1] << 8);
+ nRetVal |= szTmpData[0];
+
+ DBG("SW ID = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static u32 _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EmemType_e eEmemType)
+{
+ u32 nRetVal = 0;
+ u32 nRetryTime = 0;
+ u32 nCrcEndAddr = 0;
+ u16 nCrcDown = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ _DrvFwCtrlMsg28xxAccessEFlashInit();
+
+ if (eEmemType == EMEM_MAIN)
+ {
+ // Disable cpu read flash
+ RegSetLByteValue(0x1608, 0x20);
+ RegSetLByteValue(0x1606, 0x20);
+
+ // Set read flag
+ RegSet16BitValue(0x1610, 0x0001);
+
+ // Mode reset main block
+ RegSet16BitValue(0x1606, 0x0000);
+
+ // CRC reset
+ RegSet16BitValue(0x1620, 0x0002);
+
+ RegSet16BitValue(0x1620, 0x0000);
+
+ // Set CRC e-flash block start address => Main Block : 0x0000 ~ 0x7FFE
+ RegSet16BitValue(0x1600, 0x0000);
+
+ nCrcEndAddr = (MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE*1024)/4-2;
+
+ RegSet16BitValue(0x1622, nCrcEndAddr);
+
+ // Trigger CRC check
+ RegSet16BitValue(0x1620, 0x0001);
+
+ nCrcDown = RegGet16BitValue(0x1620);
+
+ nRetryTime = 0;
+ while ((nCrcDown >> 15) == 0)
+ {
+ mdelay(10);
+
+ nCrcDown = RegGet16BitValue(0x1620);
+ nRetryTime ++;
+
+ if (nRetryTime > 30)
+ {
+ DBG("Wait main block nCrcDown failed.\n");
+ break;
+ }
+ }
+
+ nRetVal = RegGet16BitValue(0x1626);
+ nRetVal = (nRetVal << 16) | RegGet16BitValue(0x1624);
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ // Disable cpu read flash
+ RegSetLByteValue(0x1608, 0x20);
+ RegSetLByteValue(0x1606, 0x20);
+
+ // Set read flag
+ RegSet16BitValue(0x1610, 0x0001);
+
+ // Mode reset info block
+ RegSet16BitValue(0x1606, 0x0800);
+
+ RegSetLByteValue(0x1604, 0x01);
+
+ // CRC reset
+ RegSet16BitValue(0x1620, 0x0002);
+
+ RegSet16BitValue(0x1620, 0x0000);
+
+ // Set CRC e-flash block start address => Info Block : 0x0020 ~ 0x01FE
+ RegSet16BitValue(0x1600, 0x0020);
+ RegSet16BitValue(0x1622, 0x01FE);
+
+ // Trigger CRC check
+ RegSet16BitValue(0x1620, 0x0001);
+
+ nCrcDown = RegGet16BitValue(0x1620);
+
+ nRetryTime = 0;
+ while ((nCrcDown >> 15) == 0)
+ {
+ mdelay(10);
+
+ nCrcDown = RegGet16BitValue(0x1620);
+ nRetryTime ++;
+
+ if (nRetryTime > 30)
+ {
+ DBG("Wait info block nCrcDown failed.\n");
+ break;
+ }
+ }
+
+ nRetVal = RegGet16BitValue(0x1626);
+ nRetVal = (nRetVal << 16) | RegGet16BitValue(0x1624);
+ }
+
+ DBG("Hardware CRC = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static s32 _DrvFwCtrlMsg28xxUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+ u32 nCrcMain = 0, nCrcMainTp = 0;
+ u32 nCrcInfo = 0, nCrcInfoTp = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ /////////////////////////
+ // Erase
+ /////////////////////////
+
+ if (eEmemType == EMEM_ALL)
+ {
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_MAIN);
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_INFO);
+ }
+ else if (eEmemType == EMEM_MAIN)
+ {
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_MAIN);
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_INFO);
+ }
+
+ DBG("erase OK\n");
+
+ /////////////////////////
+ // Program
+ /////////////////////////
+
+ if (eEmemType == EMEM_ALL)
+ {
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_MAIN);
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_INFO);
+ }
+ else if (eEmemType == EMEM_MAIN)
+ {
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_MAIN);
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_INFO);
+ }
+
+ DBG("program OK\n");
+
+ /* Calculate main block & info block CRC by device driver itself */
+ _DrvFwCtrlMsg28xxConvertFwDataTwoDimenToOneDimen(szFwData, _gOneDimenFwData);
+
+ /* Read main block CRC from TP */
+ if (eEmemType == EMEM_ALL)
+ {
+ nCrcMain = _DrvFwCtrlMsg28xxCalculateCrc(_gOneDimenFwData, 0, MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE*1024-MSG28XX_EMEM_SIZE_BYTES_ONE_WORD);
+ nCrcInfo = _DrvFwCtrlMsg28xxCalculateCrc(_gOneDimenFwData, MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE*1024+MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE, MSG28XX_FIRMWARE_INFO_BLOCK_SIZE*1024-MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE-MSG28XX_EMEM_SIZE_BYTES_ONE_WORD);
+
+ nCrcMainTp = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_MAIN);
+ nCrcInfoTp = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_INFO);
+ }
+ else if (eEmemType == EMEM_MAIN)
+ {
+ nCrcMain = _DrvFwCtrlMsg28xxCalculateCrc(_gOneDimenFwData, 0, MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE*1024-MSG28XX_EMEM_SIZE_BYTES_ONE_WORD);
+
+ nCrcMainTp = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_MAIN);
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ nCrcInfo = _DrvFwCtrlMsg28xxCalculateCrc(_gOneDimenFwData, MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE*1024+MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE, MSG28XX_FIRMWARE_INFO_BLOCK_SIZE*1024-MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE-MSG28XX_EMEM_SIZE_BYTES_ONE_WORD);
+
+ nCrcInfoTp = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_INFO);
+ }
+
+ DBG("nCrcMain=0x%x, nCrcInfo=0x%x, nCrcMainTp=0x%x, nCrcInfoTp=0x%x\n",
+ nCrcMain, nCrcInfo, nCrcMainTp, nCrcInfoTp);
+
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(300);
+
+ if (eEmemType == EMEM_ALL)
+ {
+ if ((nCrcMainTp != nCrcMain) || (nCrcInfoTp != nCrcInfo))
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+ }
+ else if (eEmemType == EMEM_MAIN)
+ {
+ if (nCrcMainTp != nCrcMain)
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ if (nCrcInfoTp != nCrcInfo)
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+ }
+
+ DBG("Update SUCCESS\n");
+
+ return 0;
+}
+
+static s32 _DrvFwCtrlUpdateFirmwareCash(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("chip type = 0x%x\n", g_ChipType);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM) // (0x03)
+ {
+ return _DrvFwCtrlMsg26xxmUpdateFirmware(szFwData, eEmemType);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX) // (0x85)
+ {
+ u16 eSwId = 0x0000;
+ u16 eVendorId = 0x0000;
+
+ eVendorId = szFwData[129][1005] << 8 | szFwData[129][1004]; // Retrieve major from info block
+ eSwId = _DrvFwCtrlMsg28xxGetSwId(EMEM_INFO);
+
+ DBG("eVendorId = 0x%x, eSwId = 0x%x\n", eVendorId, eSwId);
+
+ // Check if the vendor id of the update firmware bin file is equal to the vendor id on e-flash. YES => allow update, NO => not allow update
+ if (eSwId != eVendorId)
+ {
+ DrvPlatformLyrTouchDeviceResetHw(); // Reset HW here to avoid touch may be not worked after get sw id.
+
+ DBG("The vendor id of the update firmware bin file is different from the vendor id on e-flash. Not allow to update.\n");
+
+ return -1;
+ }
+ else
+ {
+ return _DrvFwCtrlMsg28xxUpdateFirmware(szFwData, EMEM_MAIN);
+ }
+ }
+ else
+ {
+ DBG("Undefined chip type.\n");
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ return -1;
+ }
+}
+
+static s32 _DrvFwCtrlUpdateFirmwareBySdCard(const char *pFilePath)
+{
+ s32 nRetVal = 0;
+ struct file *pfile = NULL;
+ struct inode *inode;
+ s32 fsize = 0;
+ u8 *pbt_buf = NULL;
+ mm_segment_t old_fs;
+ loff_t pos;
+ u16 eSwId = 0x0000;
+ u16 eVendorId = 0x0000;
+
+ DBG("*** %s() ***\n", __func__);
+
+ pfile = filp_open(pFilePath, O_RDONLY, 0);
+ if (IS_ERR(pfile))
+ {
+ DBG("Error occured while opening file %s.\n", pFilePath);
+ return -1;
+ }
+
+ inode = pfile->f_dentry->d_inode;
+ fsize = inode->i_size;
+
+ DBG("fsize = %d\n", fsize);
+
+ if (fsize <= 0)
+ {
+ filp_close(pfile, NULL);
+ return -1;
+ }
+
+ // read firmware
+ pbt_buf = kmalloc(fsize, GFP_KERNEL);
+
+ old_fs = get_fs();
+ set_fs(KERNEL_DS);
+
+ pos = 0;
+ vfs_read(pfile, pbt_buf, fsize, &pos);
+
+ filp_close(pfile, NULL);
+ set_fs(old_fs);
+
+ _DrvFwCtrlStoreFirmwareData(pbt_buf, fsize);
+
+ kfree(pbt_buf);
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ eVendorId = g_FwData[0][0x2B] <<8 | g_FwData[0][0x2A];
+ eSwId = _DrvFwCtrlMsg26xxmGetSwId(EMEM_MAIN);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ eVendorId = g_FwData[127][1013] <<8 | g_FwData[127][1012];
+ eSwId = _DrvFwCtrlMsg28xxGetSwId(EMEM_MAIN);
+ }
+
+ DBG("eVendorId = 0x%x, eSwId = 0x%x\n", eVendorId, eSwId);
+
+ if (eSwId == eVendorId)
+ {
+ if ((g_ChipType == CHIP_TYPE_MSG26XXM && fsize == 40960/* 40KB */) || (g_ChipType == CHIP_TYPE_MSG28XX && fsize == 133120/* 130KB */))
+ {
+ nRetVal = _DrvFwCtrlUpdateFirmwareCash(g_FwData, EMEM_ALL);
+ }
+ else
+ {
+ DBG("The file size of the update firmware bin file is not supported, fsize = %d\n", fsize);
+ nRetVal = -1;
+ }
+ }
+ else
+ {
+ DBG("The vendor id of the update firmware bin file is different from the vendor id on e-flash. Not allow to update.\n");
+ nRetVal = -1;
+ }
+
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ return nRetVal;
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+void DrvFwCtrlOpenGestureWakeup(u32 *pMode)
+{
+ u8 szDbBusTxData[4] = {0};
+ u32 i = 0;
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("wakeup mode 0 = 0x%x\n", pMode[0]);
+ DBG("wakeup mode 1 = 0x%x\n", pMode[1]);
+
+#ifdef CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+ szDbBusTxData[0] = 0x59;
+ szDbBusTxData[1] = 0x00;
+ szDbBusTxData[2] = ((pMode[1] & 0xFF000000) >> 24);
+ szDbBusTxData[3] = ((pMode[1] & 0x00FF0000) >> 16);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ mdelay(10); // delay 10ms
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup index 0 success\n");
+ break;
+ }
+
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup index 0 failed\n");
+ }
+
+ szDbBusTxData[0] = 0x59;
+ szDbBusTxData[1] = 0x01;
+ szDbBusTxData[2] = ((pMode[1] & 0x0000FF00) >> 8);
+ szDbBusTxData[3] = ((pMode[1] & 0x000000FF) >> 0);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ mdelay(10); // delay 10ms
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup index 1 success\n");
+ break;
+ }
+
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup index 1 failed\n");
+ }
+
+ szDbBusTxData[0] = 0x59;
+ szDbBusTxData[1] = 0x02;
+ szDbBusTxData[2] = ((pMode[0] & 0xFF000000) >> 24);
+ szDbBusTxData[3] = ((pMode[0] & 0x00FF0000) >> 16);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ mdelay(10); // delay 10ms
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup index 2 success\n");
+ break;
+ }
+
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup index 2 failed\n");
+ }
+
+ szDbBusTxData[0] = 0x59;
+ szDbBusTxData[1] = 0x03;
+ szDbBusTxData[2] = ((pMode[0] & 0x0000FF00) >> 8);
+ szDbBusTxData[3] = ((pMode[0] & 0x000000FF) >> 0);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ mdelay(10); // delay 10ms
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup index 3 success\n");
+ break;
+ }
+
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup index 3 failed\n");
+ }
+
+ g_GestureWakeupFlag = 1; // gesture wakeup is enabled
+
+#else
+
+ szDbBusTxData[0] = 0x58;
+ szDbBusTxData[1] = ((pMode[0] & 0x0000FF00) >> 8);
+ szDbBusTxData[2] = ((pMode[0] & 0x000000FF) >> 0);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup failed\n");
+ }
+
+ g_GestureWakeupFlag = 1; // gesture wakeup is enabled
+#endif //CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+}
+
+void DrvFwCtrlCloseGestureWakeup(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ g_GestureWakeupFlag = 0; // gesture wakeup is disabled
+}
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+void DrvFwCtrlOpenGestureDebugMode(u8 nGestureFlag)
+{
+ u8 szDbBusTxData[3] = {0};
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("Gesture Flag = 0x%x\n", nGestureFlag);
+
+ szDbBusTxData[0] = 0x30;
+ szDbBusTxData[1] = 0x01;
+ szDbBusTxData[2] = nGestureFlag;
+
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ if (rc < 0)
+ {
+ DBG("Enable gesture debug mode failed\n");
+ }
+ else
+ {
+ DBG("Enable gesture debug mode success\n");
+ }
+
+ g_GestureDebugMode = 1; // gesture debug mode is enabled
+}
+
+void DrvFwCtrlCloseGestureDebugMode(void)
+{
+ u8 szDbBusTxData[3] = {0};
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x30;
+ szDbBusTxData[1] = 0x00;
+ szDbBusTxData[2] = 0x00;
+
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ if (rc < 0)
+ {
+ DBG("Disable gesture debug mode failed\n");
+ }
+ else
+ {
+ DBG("Disable gesture debug mode success\n");
+ }
+
+ g_GestureDebugMode = 0; // gesture debug mode is disabled
+}
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+static void _DrvFwCtrlCoordinate(u8 *pRawData, u32 *pTranX, u32 *pTranY)
+{
+ u32 nX;
+ u32 nY;
+#ifdef CONFIG_SWAP_X_Y
+ u32 nTempX;
+ u32 nTempY;
+#endif
+
+ nX = (((pRawData[0] & 0xF0) << 4) | pRawData[1]); // parse the packet to coordinate
+ nY = (((pRawData[0] & 0x0F) << 8) | pRawData[2]);
+
+ DBG("[x,y]=[%d,%d]\n", nX, nY);
+
+#ifdef CONFIG_SWAP_X_Y
+ nTempY = nX;
+ nTempX = nY;
+ nX = nTempX;
+ nY = nTempY;
+#endif
+
+#ifdef CONFIG_REVERSE_X
+ nX = 2047 - nX;
+#endif
+
+#ifdef CONFIG_REVERSE_Y
+ nY = 2047 - nY;
+#endif
+
+ /*
+ * pRawData[0]~pRawData[2] : the point abs,
+ * pRawData[0]~pRawData[2] all are 0xFF, release touch
+ */
+ if ((pRawData[0] == 0xFF) && (pRawData[1] == 0xFF) && (pRawData[2] == 0xFF))
+ {
+ *pTranX = 0; // final X coordinate
+ *pTranY = 0; // final Y coordinate
+ }
+ else
+ {
+ /* one touch point */
+ *pTranX = (nX * TOUCH_SCREEN_X_MAX) / TPD_WIDTH;
+ *pTranY = (nY * TOUCH_SCREEN_Y_MAX) / TPD_HEIGHT;
+ DBG("[%s]: [x,y]=[%d,%d]\n", __func__, nX, nY);
+ DBG("[%s]: point[x,y]=[%d,%d]\n", __func__, *pTranX, *pTranY);
+ }
+}
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+static void _DrvFwCtrlReadReadDQMemStart(void)
+{
+ u8 nParCmdSelUseCfg = 0x7F;
+ u8 nParCmdAdByteEn0 = 0x50;
+ u8 nParCmdAdByteEn1 = 0x51;
+ u8 nParCmdDaByteEn0 = 0x54;
+ u8 nParCmdUSetSelB0 = 0x80;
+ u8 nParCmdUSetSelB1 = 0x82;
+ u8 nParCmdSetSelB2 = 0x85;
+ u8 nParCmdIicUse = 0x35;
+ //u8 nParCmdWr = 0x10;
+
+ DBG("*** %s() ***\n", __func__);
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdSelUseCfg, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdAdByteEn0, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdAdByteEn1, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdDaByteEn0, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdUSetSelB0, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdUSetSelB1, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdSetSelB2, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdIicUse, 1);
+}
+
+static void _DrvFwCtrlReadReadDQMemEnd(void)
+{
+ u8 nParCmdNSelUseCfg = 0x7E;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdNSelUseCfg, 1);
+}
+
+u32 DrvFwCtrlReadDQMemValue(u16 nAddr)
+{
+ u8 tx_data[3] = {0x10, (nAddr >> 8) & 0xFF, nAddr & 0xFF};
+ u8 rx_data[4] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("DQMem Addr = 0x%x\n", nAddr);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+ mdelay(100);
+
+ _DrvFwCtrlReadReadDQMemStart();
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &tx_data[0], 3);
+ IicReadData(SLAVE_I2C_ID_DBBUS, &rx_data[0], 4);
+
+ _DrvFwCtrlReadReadDQMemEnd();
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return (rx_data[3] <<24 | rx_data[2] <<16 | rx_data[1] << 8 | rx_data[0]);
+}
+
+void DrvFwCtrlWriteDQMemValue(u16 nAddr, u32 nData)
+{
+ u8 szDbBusTxData[7] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("DQMem Addr = 0x%x\n", nAddr);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+ mdelay(100);
+
+ _DrvFwCtrlReadReadDQMemStart();
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = ((nAddr >> 8) & 0xff);
+ szDbBusTxData[2] = (nAddr & 0xff);
+ szDbBusTxData[3] = nData & 0x000000FF;
+ szDbBusTxData[4] = ((nData & 0x0000FF00) >> 8);
+ szDbBusTxData[5] = ((nData & 0x00FF0000) >> 16);
+ szDbBusTxData[6] = ((nData & 0xFF000000) >> 24);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 7);
+
+ _DrvFwCtrlReadReadDQMemEnd();
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+ mdelay(100);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+//-------------------------Start of SW ID for MSG26XXM----------------------------//
+
+static u32 _DrvFwCtrlMsg26xxmCalculateFirmwareCrcFromEFlash(EmemType_e eEmemType, u8 nIsNeedResetHW)
+{
+ u32 nRetVal = 0;
+ u16 nRegData = 0;
+
+ DBG("*** %s() eEmemType = %d, nIsNeedResetHW = %d ***\n", __func__, eEmemType, nIsNeedResetHW);
+
+ if (1 == nIsNeedResetHW)
+ {
+ DrvPlatformLyrTouchDeviceResetHw();
+ }
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xDF4C); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x9432
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x9432);
+
+ if (eEmemType == EMEM_MAIN) // Read calculated main block CRC(32K-8) from register
+ {
+ nRetVal = RegGet16BitValue(0x3C80);
+ nRetVal = (nRetVal << 16) | RegGet16BitValue(0x3C82);
+
+ DBG("Main Block CRC = 0x%x\n", nRetVal);
+ }
+ else if (eEmemType == EMEM_INFO) // Read calculated info block CRC(8K) from register
+ {
+ nRetVal = RegGet16BitValue(0x3CA0);
+ nRetVal = (nRetVal << 16) | RegGet16BitValue(0x3CA2);
+
+ DBG("Info Block CRC = 0x%x\n", nRetVal);
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static u32 _DrvFwCtrlMsg26xxmRetrieveFirmwareCrcFromMainBlock(EmemType_e eEmemType)
+{
+ u32 nRetVal = 0;
+ u16 nRegData = 0;
+ u8 szDbBusTxData[5] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xA4AB); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x5B58
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x5B58);
+
+ szDbBusTxData[0] = 0x72;
+ if (eEmemType == EMEM_MAIN) // Read main block CRC(32K-8) from main block
+ {
+ szDbBusTxData[1] = 0x7F;
+ szDbBusTxData[2] = 0xF8;
+ }
+ else if (eEmemType == EMEM_INFO) // Read info block CRC(8K) from main block
+ {
+ szDbBusTxData[1] = 0x7F;
+ szDbBusTxData[2] = 0xFC;
+ }
+ szDbBusTxData[3] = 0x00;
+ szDbBusTxData[4] = 0x04;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 5);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ /*
+ The order of 4 bytes [ 0 : 1 : 2 : 3 ]
+ Ex. CRC32 = 0x12345678
+ 0x7FF8 = 0x78, 0x7FF9 = 0x56,
+ 0x7FFA = 0x34, 0x7FFB = 0x12
+ */
+
+ nRetVal = szDbBusRxData[3];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[2];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[1];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[0];
+
+ DBG("CRC = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static u32 _DrvFwCtrlMsg26xxmRetrieveInfoCrcFromInfoBlock(void)
+{
+ u32 nRetVal = 0;
+ u16 nRegData = 0;
+ u8 szDbBusTxData[5] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xA4AB); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x5B58
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x5B58);
+
+
+ // Read info CRC(8K-4) from info block
+ szDbBusTxData[0] = 0x72;
+ szDbBusTxData[1] = 0x80;
+ szDbBusTxData[2] = 0x00;
+ szDbBusTxData[3] = 0x00;
+ szDbBusTxData[4] = 0x04;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 5);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ nRetVal = szDbBusRxData[3];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[2];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[1];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[0];
+
+ DBG("CRC = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static u32 _DrvFwCtrlMsg26xxmRetrieveFrimwareCrcFromBinFile(u8 szTmpBuf[][1024], EmemType_e eEmemType)
+{
+ u32 nRetVal = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ if (szTmpBuf != NULL)
+ {
+ if (eEmemType == EMEM_MAIN) // Read main block CRC(32K-8) from bin file
+ {
+ nRetVal = szTmpBuf[31][1019];
+ nRetVal = (nRetVal << 8) | szTmpBuf[31][1018];
+ nRetVal = (nRetVal << 8) | szTmpBuf[31][1017];
+ nRetVal = (nRetVal << 8) | szTmpBuf[31][1016];
+ }
+ else if (eEmemType == EMEM_INFO) // Read info block CRC(8K) from bin file
+ {
+ nRetVal = szTmpBuf[31][1023];
+ nRetVal = (nRetVal << 8) | szTmpBuf[31][1022];
+ nRetVal = (nRetVal << 8) | szTmpBuf[31][1021];
+ nRetVal = (nRetVal << 8) | szTmpBuf[31][1020];
+ }
+ }
+
+ return nRetVal;
+}
+
+static u32 _DrvFwCtrlMsg26xxmCalculateInfoCrcByDeviceDriver(void)
+{
+ u32 nRetVal = 0xffffffff;
+ u32 i, j;
+ u16 nRegData = 0;
+ u8 szDbBusTxData[5] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xA4AB); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x5B58
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x5B58);
+
+ DrvCommonCrcInitTable();
+
+ // Read info data(8K) from info block
+ szDbBusTxData[0] = 0x72;
+ szDbBusTxData[3] = 0x00; // read 128 bytes
+ szDbBusTxData[4] = 0x80;
+
+ for (i = 0; i < 8; i ++)
+ {
+ for (j = 0; j < 8; j ++)
+ {
+ szDbBusTxData[1] = 0x80 + (i*0x04) + (((j*128)&0xff00)>>8);
+ szDbBusTxData[2] = (j*128)&0x00ff;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 5);
+
+ // Receive info data
+ IicReadData(SLAVE_I2C_ID_DWI2C, &_gTempData[j*128], 128);
+ }
+
+ if (i == 0)
+ {
+ for (j = 4; j < 1024; j ++)
+ {
+ nRetVal = DrvCommonCrcGetValue(_gTempData[j], nRetVal);
+ }
+ }
+ else
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ nRetVal = DrvCommonCrcGetValue(_gTempData[j], nRetVal);
+ }
+ }
+ }
+
+ nRetVal = nRetVal ^ 0xffffffff;
+
+ DBG("Info(8K-4) CRC = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static s32 _DrvFwCtrlMsg26xxmCompare8BytesForCrc(u8 szTmpBuf[][1024])
+{
+ s32 nRetVal = -1;
+ u16 nRegData = 0;
+ u8 szDbBusTxData[5] = {0};
+ u8 szDbBusRxData[8] = {0};
+ u8 crc[8] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ // Read 8 bytes from bin file
+ if (szTmpBuf != NULL)
+ {
+ crc[0] = szTmpBuf[31][1016];
+ crc[1] = szTmpBuf[31][1017];
+ crc[2] = szTmpBuf[31][1018];
+ crc[3] = szTmpBuf[31][1019];
+ crc[4] = szTmpBuf[31][1020];
+ crc[5] = szTmpBuf[31][1021];
+ crc[6] = szTmpBuf[31][1022];
+ crc[7] = szTmpBuf[31][1023];
+ }
+
+ // Read 8 bytes from the firmware on e-flash
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xA4AB); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x5B58
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x5B58);
+
+ szDbBusTxData[0] = 0x72;
+ szDbBusTxData[1] = 0x7F;
+ szDbBusTxData[2] = 0xF8;
+ szDbBusTxData[3] = 0x00;
+ szDbBusTxData[4] = 0x08;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 5);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 8);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ if (crc[0] == szDbBusRxData[0]
+ && crc[1] == szDbBusRxData[1]
+ && crc[2] == szDbBusRxData[2]
+ && crc[3] == szDbBusRxData[3]
+ && crc[4] == szDbBusRxData[4]
+ && crc[5] == szDbBusRxData[5]
+ && crc[6] == szDbBusRxData[6]
+ && crc[7] == szDbBusRxData[7])
+ {
+ nRetVal = 0;
+ }
+ else
+ {
+ nRetVal = -1;
+ }
+
+ DBG("compare 8bytes for CRC = %d\n", nRetVal);
+
+ return nRetVal;
+}
+
+static void _DrvFwCtrlMsg26xxmEraseFirmwareOnEFlash(EmemType_e eEmemType)
+{
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DBG("erase 0\n");
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0x78C5); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ DBG("erase 1\n");
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // Set PROGRAM password
+ RegSet16BitValue(0x161A, 0xABBA); //bank:emem, addr:h000D
+
+ if (eEmemType == EMEM_INFO)
+ {
+ RegSet16BitValue(0x1600, 0x8000); //bank:emem, addr:h0000
+ }
+
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80); //bank:emem, addr:h000C
+
+ DBG("erase 2\n");
+
+ // Clear setting
+ RegSetLByteValue(0x1618, 0x40); //bank:emem, addr:h000C
+
+ mdelay(10);
+
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80); //bank:emem, addr:h000C
+
+ DBG("erase 3\n");
+
+ // Trigger erase
+ if (eEmemType == EMEM_ALL)
+ {
+ RegSetLByteValue(0x160E, 0x08); //all chip //bank:emem, addr:h0007
+ }
+ else if (eEmemType == EMEM_MAIN || eEmemType == EMEM_INFO)
+ {
+ RegSetLByteValue(0x160E, 0x04); //sector //bank:emem, addr:h0007
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ mdelay(200);
+
+ DBG("erase OK\n");
+}
+
+static void _DrvFwCtrlMsg26xxmProgramFirmwareOnEFlash(EmemType_e eEmemType)
+{
+ u32 nStart = 0, nEnd = 0;
+ u32 i, j;
+ u16 nRegData = 0;
+// u16 nRegData2 = 0, nRegData3 = 0; // add for debug
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DBG("program 0\n");
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ if (eEmemType == EMEM_INFO || eEmemType == EMEM_MAIN)
+ {
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0x78C5); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ nRegData = RegGet16BitValue(0x1618);
+// DBG("*** reg(0x16, 0x18) = 0x%x ***\n", nRegData); // add for debug
+
+ nRegData |= 0x40;
+// DBG("*** nRegData = 0x%x ***\n", nRegData); // add for debug
+
+ RegSetLByteValue(0x1618, nRegData);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+ }
+
+ DBG("program 1\n");
+
+ RegSet16BitValue(0x0F52, 0xDB00); // add for analysis
+
+ // Check_Loader_Ready: Polling 0x3CE4 is 0x1C70
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+// DBG("*** reg(0x3C, 0xE4) = 0x%x ***\n", nRegData); // add for debug
+
+// nRegData2 = RegGet16BitValue(0x0F00); // add for debug
+// DBG("*** reg(0x0F, 0x00) = 0x%x ***\n", nRegData2);
+
+// nRegData3 = RegGet16BitValue(0x1E04); // add for debug
+// DBG("*** reg(0x1E, 0x04) = 0x%x ***\n", nRegData3);
+
+ } while (nRegData != 0x1C70);
+
+ DBG("program 2\n");
+
+ if (eEmemType == EMEM_ALL)
+ {
+ RegSet16BitValue(0x3CE4, 0xE38F); //all chip
+
+ nStart = 0;
+ nEnd = MSG26XXM_FIRMWARE_WHOLE_SIZE; //32K + 8K
+ }
+ else if (eEmemType == EMEM_MAIN)
+ {
+ RegSet16BitValue(0x3CE4, 0x7731); //main block
+
+ nStart = 0;
+ nEnd = MSG26XXM_FIRMWARE_MAIN_BLOCK_SIZE; //32K
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ RegSet16BitValue(0x3CE4, 0xB9D6); //info block
+
+ nStart = MSG26XXM_FIRMWARE_MAIN_BLOCK_SIZE;
+ nEnd = MSG26XXM_FIRMWARE_MAIN_BLOCK_SIZE + MSG26XXM_FIRMWARE_INFO_BLOCK_SIZE;
+ }
+
+ // Check_Loader_Ready2Program: Polling 0x3CE4 is 0x2F43
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x2F43);
+
+ DBG("program 3\n");
+
+ for (i = nStart; i < nEnd; i ++)
+ {
+ for (j = 0; j < 8; j ++)
+ {
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &g_FwData[i][j*128], 128);
+ }
+
+ mdelay(100);
+
+ // Check_Program_Done: Polling 0x3CE4 is 0xD0BC
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0xD0BC);
+
+ // Continue_Program
+ RegSet16BitValue(0x3CE4, 0x2F43);
+ }
+
+ DBG("program 4\n");
+
+ // Notify_Write_Done
+ RegSet16BitValue(0x3CE4, 0x1380);
+ mdelay(100);
+
+ DBG("program 5\n");
+
+ // Check_CRC_Done: Polling 0x3CE4 is 0x9432
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x9432);
+
+ DBG("program 6\n");
+
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ mdelay(300);
+
+ DBG("program OK\n");
+}
+
+static s32 _DrvFwCtrlMsg26xxmUpdateFirmwareBySwId(void)
+{
+ s32 nRetVal = -1;
+ u32 nCrcInfoA = 0, nCrcInfoB = 0, nCrcMainA = 0, nCrcMainB = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("_gIsUpdateInfoBlockFirst = %d, g_IsUpdateFirmware = 0x%x\n", _gIsUpdateInfoBlockFirst, g_IsUpdateFirmware);
+
+ if (_gIsUpdateInfoBlockFirst == 1)
+ {
+ if ((g_IsUpdateFirmware & 0x10) == 0x10)
+ {
+ _DrvFwCtrlMsg26xxmEraseFirmwareOnEFlash(EMEM_INFO);
+ _DrvFwCtrlMsg26xxmProgramFirmwareOnEFlash(EMEM_INFO);
+
+ nCrcInfoA = _DrvFwCtrlMsg26xxmRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg26xxmCalculateFirmwareCrcFromEFlash(EMEM_INFO, 0);
+
+ DBG("nCrcInfoA = 0x%x, nCrcInfoB = 0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB)
+ {
+ _DrvFwCtrlMsg26xxmEraseFirmwareOnEFlash(EMEM_MAIN);
+ _DrvFwCtrlMsg26xxmProgramFirmwareOnEFlash(EMEM_MAIN);
+
+ nCrcMainA = _DrvFwCtrlMsg26xxmRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg26xxmCalculateFirmwareCrcFromEFlash(EMEM_MAIN, 0);
+
+ DBG("nCrcMainA = 0x%x, nCrcMainB = 0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ nRetVal = _DrvFwCtrlMsg26xxmCompare8BytesForCrc(g_FwData);
+
+ if (nRetVal == 0)
+ {
+ g_IsUpdateFirmware = 0x00;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else if ((g_IsUpdateFirmware & 0x01) == 0x01)
+ {
+ _DrvFwCtrlMsg26xxmEraseFirmwareOnEFlash(EMEM_MAIN);
+ _DrvFwCtrlMsg26xxmProgramFirmwareOnEFlash(EMEM_MAIN);
+
+ nCrcMainA = _DrvFwCtrlMsg26xxmRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg26xxmCalculateFirmwareCrcFromEFlash(EMEM_MAIN, 0);
+
+ DBG("nCrcMainA=0x%x, nCrcMainB=0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ nRetVal = _DrvFwCtrlMsg26xxmCompare8BytesForCrc(g_FwData);
+
+ if (nRetVal == 0)
+ {
+ g_IsUpdateFirmware = 0x00;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ }
+ else //_gIsUpdateInfoBlockFirst == 0
+ {
+ if ((g_IsUpdateFirmware & 0x10) == 0x10)
+ {
+ _DrvFwCtrlMsg26xxmEraseFirmwareOnEFlash(EMEM_MAIN);
+ _DrvFwCtrlMsg26xxmProgramFirmwareOnEFlash(EMEM_MAIN);
+
+ nCrcMainA = _DrvFwCtrlMsg26xxmRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg26xxmCalculateFirmwareCrcFromEFlash(EMEM_MAIN, 0);
+
+ DBG("nCrcMainA=0x%x, nCrcMainB=0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ _DrvFwCtrlMsg26xxmEraseFirmwareOnEFlash(EMEM_INFO);
+ _DrvFwCtrlMsg26xxmProgramFirmwareOnEFlash(EMEM_INFO);
+
+ nCrcInfoA = _DrvFwCtrlMsg26xxmRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg26xxmCalculateFirmwareCrcFromEFlash(EMEM_INFO, 0);
+
+ DBG("nCrcInfoA=0x%x, nCrcInfoB=0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB)
+ {
+ nRetVal = _DrvFwCtrlMsg26xxmCompare8BytesForCrc(g_FwData);
+
+ if (nRetVal == 0)
+ {
+ g_IsUpdateFirmware = 0x00;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else if ((g_IsUpdateFirmware & 0x01) == 0x01)
+ {
+ _DrvFwCtrlMsg26xxmEraseFirmwareOnEFlash(EMEM_INFO);
+ _DrvFwCtrlMsg26xxmProgramFirmwareOnEFlash(EMEM_INFO);
+
+ nCrcInfoA = _DrvFwCtrlMsg26xxmRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg26xxmCalculateFirmwareCrcFromEFlash(EMEM_INFO, 0);
+
+ DBG("nCrcInfoA=0x%x, nCrcInfoB=0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB)
+ {
+ nRetVal = _DrvFwCtrlMsg26xxmCompare8BytesForCrc(g_FwData);
+
+ if (nRetVal == 0)
+ {
+ g_IsUpdateFirmware = 0x00;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ }
+
+ return nRetVal;
+}
+
+void _DrvFwCtrlMsg26xxmCheckFirmwareUpdateBySwId(void)
+{
+ u32 nCrcMainA, nCrcInfoA, nCrcMainB, nCrcInfoB;
+ u32 i;
+ u16 nUpdateBinMajor = 0, nUpdateBinMinor = 0;
+ u16 nMajor = 0, nMinor = 0;
+ u8 *pVersion = NULL;
+ Msg26xxmSwId_e eSwId = MSG26XXM_SW_ID_UNDEFINED;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ nCrcMainA = _DrvFwCtrlMsg26xxmCalculateFirmwareCrcFromEFlash(EMEM_MAIN, 1);
+ nCrcMainB = _DrvFwCtrlMsg26xxmRetrieveFirmwareCrcFromMainBlock(EMEM_MAIN);
+
+ nCrcInfoA = _DrvFwCtrlMsg26xxmCalculateFirmwareCrcFromEFlash(EMEM_INFO, 1);
+ nCrcInfoB = _DrvFwCtrlMsg26xxmRetrieveFirmwareCrcFromMainBlock(EMEM_INFO);
+
+ _gUpdateFirmwareBySwIdWorkQueue = create_singlethread_workqueue("update_firmware_by_sw_id");
+ INIT_WORK(&_gUpdateFirmwareBySwIdWork, _DrvFwCtrlUpdateFirmwareBySwIdDoWork);
+
+ DBG("nCrcMainA=0x%x, nCrcInfoA=0x%x, nCrcMainB=0x%x, nCrcInfoB=0x%x\n", nCrcMainA, nCrcInfoA, nCrcMainB, nCrcInfoB);
+
+ if (nCrcMainA == nCrcMainB && nCrcInfoA == nCrcInfoB) // Case 1. Main Block:OK, Info Block:OK
+ {
+ eSwId = _DrvFwCtrlMsg26xxmGetSwId(EMEM_MAIN);
+
+ DBG("eSwId=0x%x\n", eSwId);
+
+ if (eSwId == MSG26XXM_SW_ID_XXXX)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ nUpdateBinMajor = msg26xxm_xxxx_update_bin[0][0x2B]<<8 | msg26xxm_xxxx_update_bin[0][0x2A];
+ nUpdateBinMinor = msg26xxm_xxxx_update_bin[0][0x2D]<<8 | msg26xxm_xxxx_update_bin[0][0x2C];
+#else // By one dimensional array
+ nUpdateBinMajor = msg26xxm_xxxx_update_bin[0x002B]<<8 | msg26xxm_xxxx_update_bin[0x002A];
+ nUpdateBinMinor = msg26xxm_xxxx_update_bin[0x002D]<<8 | msg26xxm_xxxx_update_bin[0x002C];
+#endif
+ }
+ else if (eSwId == MSG26XXM_SW_ID_YYYY)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ nUpdateBinMajor = msg26xxm_yyyy_update_bin[0][0x2B]<<8 | msg26xxm_yyyy_update_bin[0][0x2A];
+ nUpdateBinMinor = msg26xxm_yyyy_update_bin[0][0x2D]<<8 | msg26xxm_yyyy_update_bin[0][0x2C];
+#else // By one dimensional array
+ nUpdateBinMajor = msg26xxm_yyyy_update_bin[0x002B]<<8 | msg26xxm_yyyy_update_bin[0x002A];
+ nUpdateBinMinor = msg26xxm_yyyy_update_bin[0x002D]<<8 | msg26xxm_yyyy_update_bin[0x002C];
+#endif
+ }
+ else //eSwId == MSG26XXM_SW_ID_UNDEFINED
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG26XXM_SW_ID_UNDEFINED;
+ nUpdateBinMajor = 0;
+ nUpdateBinMinor = 0;
+ }
+
+ DrvFwCtrlGetCustomerFirmwareVersion(&nMajor, &nMinor, &pVersion);
+
+ DBG("eSwId=0x%x, nMajor=%d, nMinor=%d, nUpdateBinMajor=%d, nUpdateBinMinor=%d\n", eSwId, nMajor, nMinor, nUpdateBinMajor, nUpdateBinMinor);
+
+ if (nUpdateBinMinor > nMinor)
+ {
+ if (eSwId == MSG26XXM_SW_ID_XXXX)
+ {
+ for (i = 0; i < MSG26XXM_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg26xxm_xxxx_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg26xxm_xxxx_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else if (eSwId == MSG26XXM_SW_ID_YYYY)
+ {
+ for (i = 0; i < MSG26XXM_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg26xxm_yyyy_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg26xxm_yyyy_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG26XXM_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG26XXM_SW_ID_UNDEFINED && eSwId != 0x0000 && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ _gIsUpdateInfoBlockFirst = 1; // Set 1 for indicating main block is complete
+ g_IsUpdateFirmware = 0x11;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else
+ {
+ DBG("The update bin version is older than or equal to the current firmware version on e-flash.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else if (nCrcMainA == nCrcMainB && nCrcInfoA != nCrcInfoB) // Case 2. Main Block:OK, Info Block:FAIL
+ {
+ eSwId = _DrvFwCtrlMsg26xxmGetSwId(EMEM_MAIN);
+
+ DBG("eSwId=0x%x\n", eSwId);
+
+ if (eSwId == MSG26XXM_SW_ID_XXXX)
+ {
+ for (i = 0; i < MSG26XXM_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg26xxm_xxxx_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg26xxm_xxxx_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else if (eSwId == MSG26XXM_SW_ID_YYYY)
+ {
+ for (i = 0; i < MSG26XXM_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg26xxm_yyyy_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg26xxm_yyyy_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG26XXM_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG26XXM_SW_ID_UNDEFINED && eSwId != 0x0000 && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ _gIsUpdateInfoBlockFirst = 1; // Set 1 for indicating main block is complete
+ g_IsUpdateFirmware = 0x11;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else // Case 3. Main Block:FAIL, Info Block:FAIL/OK
+ {
+ nCrcInfoA = _DrvFwCtrlMsg26xxmRetrieveInfoCrcFromInfoBlock();
+ nCrcInfoB = _DrvFwCtrlMsg26xxmCalculateInfoCrcByDeviceDriver();
+
+ DBG("8K-4 : nCrcInfoA=0x%x, nCrcInfoB=0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB) // Check if info block is actually OK.
+ {
+ eSwId = _DrvFwCtrlMsg26xxmGetSwId(EMEM_INFO);
+
+ DBG("eSwId=0x%x\n", eSwId);
+
+ if (eSwId == MSG26XXM_SW_ID_XXXX)
+ {
+ for (i = 0; i < MSG26XXM_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg26xxm_xxxx_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg26xxm_xxxx_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else if (eSwId == MSG26XXM_SW_ID_YYYY)
+ {
+ for (i = 0; i < MSG26XXM_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg26xxm_yyyy_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg26xxm_yyyy_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG26XXM_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG26XXM_SW_ID_UNDEFINED && eSwId != 0x0000 && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ _gIsUpdateInfoBlockFirst = 0; // Set 0 for indicating main block is broken
+ g_IsUpdateFirmware = 0x11;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else
+ {
+ DBG("Info block is broken.\n");
+ }
+ }
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+}
+
+//-------------------------End of SW ID for MSG26XXM----------------------------//
+
+//-------------------------Start of SW ID for MSG28XX----------------------------//
+
+static u32 _DrvFwCtrlMsg28xxRetrieveFirmwareCrcFromEFlash(EmemType_e eEmemType)
+{
+ u32 nRetVal = 0;
+ u16 nReadAddr = 0;
+ u8 szTmpData[4] = {0};
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ if (eEmemType == EMEM_MAIN) // Read main block CRC(128KB-4) from main block
+ {
+ _DrvFwCtrlMsg28xxReadEFlashStart(0x7FFF, EMEM_MAIN);
+ nReadAddr = 0x7FFF;
+ }
+ else if (eEmemType == EMEM_INFO) // Read info block CRC(2KB-MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE-4) from info block
+ {
+ _DrvFwCtrlMsg28xxReadEFlashStart(0x81FF, EMEM_INFO);
+ nReadAddr = 0x81FF;
+ }
+
+ _DrvFwCtrlMsg28xxReadEFlashDoRead(nReadAddr, &szTmpData[0]);
+
+ DBG("szTmpData[0] = 0x%x\n", szTmpData[0]); // add for debug
+ DBG("szTmpData[1] = 0x%x\n", szTmpData[1]); // add for debug
+ DBG("szTmpData[2] = 0x%x\n", szTmpData[2]); // add for debug
+ DBG("szTmpData[3] = 0x%x\n", szTmpData[3]); // add for debug
+
+ _DrvFwCtrlMsg28xxReadEFlashEnd();
+
+ nRetVal = (szTmpData[3] << 24);
+ nRetVal |= (szTmpData[2] << 16);
+ nRetVal |= (szTmpData[1] << 8);
+ nRetVal |= szTmpData[0];
+
+ DBG("CRC = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static u32 _DrvFwCtrlMsg28xxRetrieveFrimwareCrcFromBinFile(u8 szTmpBuf[][1024], EmemType_e eEmemType)
+{
+ u32 nRetVal = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ if (szTmpBuf != NULL)
+ {
+ if (eEmemType == EMEM_MAIN)
+ {
+ nRetVal = szTmpBuf[127][1023];
+ nRetVal = (nRetVal << 8) | szTmpBuf[127][1022];
+ nRetVal = (nRetVal << 8) | szTmpBuf[127][1021];
+ nRetVal = (nRetVal << 8) | szTmpBuf[127][1020];
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ nRetVal = szTmpBuf[129][1023];
+ nRetVal = (nRetVal << 8) | szTmpBuf[129][1022];
+ nRetVal = (nRetVal << 8) | szTmpBuf[129][1021];
+ nRetVal = (nRetVal << 8) | szTmpBuf[129][1020];
+ }
+ }
+
+ return nRetVal;
+}
+
+/*
+static s32 _DrvFwCtrlMsg28xxUpdateFirmwareBySwId(void)
+{
+ s32 nRetVal = -1;
+ u32 nCrcInfoA = 0, nCrcInfoB = 0, nCrcMainA = 0, nCrcMainB = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("_gIsUpdateInfoBlockFirst = %d, g_IsUpdateFirmware = 0x%x\n", _gIsUpdateInfoBlockFirst, g_IsUpdateFirmware);
+
+ if (_gIsUpdateInfoBlockFirst == 1)
+ {
+ if ((g_IsUpdateFirmware & 0x10) == 0x10)
+ {
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_INFO);
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_INFO);
+
+ nCrcInfoA = _DrvFwCtrlMsg28xxRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_INFO);
+
+ DBG("nCrcInfoA = 0x%x, nCrcInfoB = 0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB)
+ {
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_MAIN);
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_MAIN);
+
+ nCrcMainA = _DrvFwCtrlMsg28xxRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_MAIN);
+
+ DBG("nCrcMainA = 0x%x, nCrcMainB = 0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ g_IsUpdateFirmware = 0x00;
+ nRetVal = 0;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else if ((g_IsUpdateFirmware & 0x01) == 0x01)
+ {
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_MAIN);
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_MAIN);
+
+ nCrcMainA = _DrvFwCtrlMsg28xxRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_MAIN);
+
+ DBG("nCrcMainA=0x%x, nCrcMainB=0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ g_IsUpdateFirmware = 0x00;
+ nRetVal = 0;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ }
+ else //_gIsUpdateInfoBlockFirst == 0
+ {
+ if ((g_IsUpdateFirmware & 0x10) == 0x10)
+ {
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_MAIN);
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_MAIN);
+
+ nCrcMainA = _DrvFwCtrlMsg28xxRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_MAIN);
+
+ DBG("nCrcMainA=0x%x, nCrcMainB=0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_INFO);
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_INFO);
+
+ nCrcInfoA = _DrvFwCtrlMsg28xxRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_INFO);
+
+ DBG("nCrcInfoA=0x%x, nCrcInfoB=0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB)
+ {
+ g_IsUpdateFirmware = 0x00;
+ nRetVal = 0;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else if ((g_IsUpdateFirmware & 0x01) == 0x01)
+ {
+ _DrvFwCtrlMsg28xxEraseEmem(EMEM_INFO);
+ _DrvFwCtrlMsg28xxProgramEmem(EMEM_INFO);
+
+ nCrcInfoA = _DrvFwCtrlMsg28xxRetrieveFrimwareCrcFromBinFile(g_FwData, EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_INFO);
+
+ DBG("nCrcInfoA=0x%x, nCrcInfoB=0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB)
+ {
+ g_IsUpdateFirmware = 0x00;
+ nRetVal = 0;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ }
+
+ return nRetVal;
+}
+*/
+
+void _DrvFwCtrlMsg28xxCheckFirmwareUpdateBySwId(void)
+{
+ u32 nCrcMainA, nCrcMainB;
+ u32 i;
+ u16 nUpdateBinMajor = 0, nUpdateBinMinor = 0;
+ u16 nMajor = 0, nMinor = 0;
+ u8 nIsCompareVersion = 0;
+ u8 *pVersion = NULL;
+ Msg28xxSwId_e eMainSwId = MSG28XX_SW_ID_UNDEFINED, eInfoSwId = MSG28XX_SW_ID_UNDEFINED, eSwId = MSG28XX_SW_ID_UNDEFINED;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ nCrcMainA = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg28xxRetrieveFirmwareCrcFromEFlash(EMEM_MAIN);
+
+ DBG("nCrcMainA=0x%x, nCrcMainB=0x%x\n", nCrcMainA, nCrcMainB);
+
+#ifdef CONFIG_ENABLE_CODE_FOR_DEBUG // TODO : add for debug
+ {
+ if (nCrcMainA != nCrcMainB)
+ {
+ for (i = 0; i < 5; i ++)
+ {
+ nCrcMainA = _DrvFwCtrlMsg28xxGetFirmwareCrcByHardware(EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg28xxRetrieveFirmwareCrcFromEFlash(EMEM_MAIN);
+
+ DBG("*** Retry[%d] : nCrcMainA=0x%x, nCrcMainB=0x%x ***\n", i, nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ break;
+ }
+
+ mdelay(50);
+ }
+ }
+ }
+#endif //CONFIG_ENABLE_CODE_FOR_DEBUG
+
+ _gUpdateFirmwareBySwIdWorkQueue = create_singlethread_workqueue("update_firmware_by_sw_id");
+ INIT_WORK(&_gUpdateFirmwareBySwIdWork, _DrvFwCtrlUpdateFirmwareBySwIdDoWork);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ eMainSwId = _DrvFwCtrlMsg28xxGetSwId(EMEM_MAIN);
+ eInfoSwId = _DrvFwCtrlMsg28xxGetSwId(EMEM_INFO);
+
+ DBG("eMainSwId=0x%x, eInfoSwId=0x%x\n", eMainSwId, eInfoSwId);
+
+ if (eMainSwId == eInfoSwId)
+ {
+ eSwId = eMainSwId;
+ nIsCompareVersion = 1;
+
+ DrvFwCtrlGetCustomerFirmwareVersionByDbBus(EMEM_MAIN, &nMajor, &nMinor, &pVersion);
+ }
+ else
+ {
+ eSwId = eInfoSwId;
+ nIsCompareVersion = 0;
+ }
+
+ if (eSwId == MSG28XX_SW_ID_XXXX)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ nUpdateBinMajor = msg28xx_xxxx_update_bin[127][1013]<<8 | msg28xx_xxxx_update_bin[127][1012];
+ nUpdateBinMinor = msg28xx_xxxx_update_bin[127][1015]<<8 | msg28xx_xxxx_update_bin[127][1014];
+#else // By one dimensional array
+ nUpdateBinMajor = msg28xx_xxxx_update_bin[0x1FFF5]<<8 | msg28xx_xxxx_update_bin[0x1FFF4];
+ nUpdateBinMinor = msg28xx_xxxx_update_bin[0x1FFF7]<<8 | msg28xx_xxxx_update_bin[0x1FFF6];
+#endif
+ }
+ else if (eSwId == MSG28XX_SW_ID_YYYY)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ nUpdateBinMajor = msg28xx_yyyy_update_bin[127][1013]<<8 | msg28xx_yyyy_update_bin[127][1012];
+ nUpdateBinMinor = msg28xx_yyyy_update_bin[127][1015]<<8 | msg28xx_yyyy_update_bin[127][1014];
+#else // By one dimensional array
+ nUpdateBinMajor = msg28xx_yyyy_update_bin[0x1FFF5]<<8 | msg28xx_yyyy_update_bin[0x1FFF4];
+ nUpdateBinMinor = msg28xx_yyyy_update_bin[0x1FFF7]<<8 | msg28xx_yyyy_update_bin[0x1FFF6];
+#endif
+ }
+ else //eSwId == MSG28XX_SW_ID_UNDEFINED
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG28XX_SW_ID_UNDEFINED;
+ nUpdateBinMajor = 0;
+ nUpdateBinMinor = 0;
+ }
+
+
+ DBG("eSwId=0x%x, nMajor=%d, nMinor=%d, nUpdateBinMajor=%d, nUpdateBinMinor=%d\n", eSwId, nMajor, nMinor, nUpdateBinMajor, nUpdateBinMinor);
+
+ if ((nUpdateBinMinor > nMinor && nIsCompareVersion == 1) || (nIsCompareVersion == 0))
+ {
+ if (eSwId == MSG28XX_SW_ID_XXXX)
+ {
+ for (i = 0; i < MSG28XX_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg28xx_xxxx_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg28xx_xxxx_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else if (eSwId == MSG28XX_SW_ID_YYYY)
+ {
+ for (i = 0; i < MSG28XX_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg28xx_yyyy_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg28xx_yyyy_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG28XX_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG28XX_SW_ID_UNDEFINED && eSwId != 0x0000 && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ _gIsUpdateInfoBlockFirst = 1; // Set 1 for indicating main block is complete
+ g_IsUpdateFirmware = 0x11;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else
+ {
+ DBG("The update bin version is older than or equal to the current firmware version on e-flash.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else
+ {
+ eSwId = _DrvFwCtrlMsg28xxGetSwId(EMEM_INFO);
+
+ DBG("eSwId=0x%x\n", eSwId);
+
+ if (eSwId == MSG28XX_SW_ID_XXXX)
+ {
+ for (i = 0; i < MSG28XX_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg28xx_xxxx_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg28xx_xxxx_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else if (eSwId == MSG28XX_SW_ID_YYYY)
+ {
+ for (i = 0; i < MSG28XX_FIRMWARE_WHOLE_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg28xx_yyyy_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg28xx_yyyy_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG28XX_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG28XX_SW_ID_UNDEFINED && eSwId != 0x0000 && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ _gIsUpdateInfoBlockFirst = 0; // Set 0 for indicating main block is broken
+ g_IsUpdateFirmware = 0x11;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+}
+
+//-------------------------End of SW ID for MSG28XX----------------------------//
+
+static void _DrvFwCtrlUpdateFirmwareBySwIdDoWork(struct work_struct *pWork)
+{
+ s32 nRetVal = 0;
+
+ DBG("*** %s() _gUpdateRetryCount = %d ***\n", __func__, _gUpdateRetryCount);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ nRetVal = _DrvFwCtrlMsg26xxmUpdateFirmwareBySwId();
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ nRetVal = _DrvFwCtrlMsg28xxUpdateFirmware(g_FwData, EMEM_MAIN);
+ }
+ else
+ {
+ DBG("This chip type (0x%x) does not support update firmware by sw id\n", g_ChipType);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ nRetVal = -1;
+ return;
+ }
+
+ DBG("*** update firmware by sw id result = %d ***\n", nRetVal);
+
+ if (nRetVal == 0)
+ {
+ DBG("update firmware by sw id success\n");
+
+ _gIsUpdateInfoBlockFirst = 0;
+ g_IsUpdateFirmware = 0x00;
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+ }
+ else //nRetVal == -1
+ {
+ _gUpdateRetryCount --;
+ if (_gUpdateRetryCount > 0)
+ {
+ DBG("_gUpdateRetryCount = %d\n", _gUpdateRetryCount);
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ }
+ else
+ {
+ DBG("update firmware by sw id failed\n");
+
+ _gIsUpdateInfoBlockFirst = 0;
+ g_IsUpdateFirmware = 0x00;
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+ }
+ }
+}
+
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+/*=============================================================*/
+// GLOBAL FUNCTION DEFINITION
+/*=============================================================*/
+
+void DrvFwCtrlVariableInitialize(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ FIRMWARE_MODE_UNKNOWN_MODE = MSG26XXM_FIRMWARE_MODE_UNKNOWN_MODE;
+ FIRMWARE_MODE_DEMO_MODE = MSG26XXM_FIRMWARE_MODE_DEMO_MODE;
+ FIRMWARE_MODE_DEBUG_MODE = MSG26XXM_FIRMWARE_MODE_DEBUG_MODE;
+// FIRMWARE_MODE_RAW_DATA_MODE = MSG26XXM_FIRMWARE_MODE_RAW_DATA_MODE;
+
+ g_FirmwareMode = FIRMWARE_MODE_DEMO_MODE;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ FIRMWARE_MODE_UNKNOWN_MODE = MSG28XX_FIRMWARE_MODE_UNKNOWN_MODE;
+ FIRMWARE_MODE_DEMO_MODE = MSG28XX_FIRMWARE_MODE_DEMO_MODE;
+ FIRMWARE_MODE_DEBUG_MODE = MSG28XX_FIRMWARE_MODE_DEBUG_MODE;
+// FIRMWARE_MODE_RAW_DATA_MODE = MSG28XX_FIRMWARE_MODE_RAW_DATA_MODE;
+
+ g_FirmwareMode = FIRMWARE_MODE_DEMO_MODE;
+ }
+}
+
+void DrvFwCtrlOptimizeCurrentConsumption(void)
+{
+ u32 i;
+ u8 szDbBusTxData[35] = {0};
+
+ DBG("g_ChipType = 0x%x\n", g_ChipType);
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ if (g_GestureWakeupFlag == 1)
+ {
+ return;
+ }
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+ if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+
+ // Enable burst mode
+ RegSetLByteValue(0x1608, 0x21);
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x15;
+ szDbBusTxData[2] = 0x20; //bank:0x15, addr:h0010
+
+ for (i = 0; i < 8; i ++)
+ {
+ szDbBusTxData[i+3] = 0xFF;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+8); // Write 0xFF for reg 0x1510~0x1513
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x15;
+ szDbBusTxData[2] = 0x28; //bank:0x15, addr:h0014
+
+ for (i = 0; i < 16; i ++)
+ {
+ szDbBusTxData[i+3] = 0x00;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+16); // Write 0x00 for reg 0x1514~0x151B
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x21;
+ szDbBusTxData[2] = 0x40; //bank:0x21, addr:h0020
+
+ for (i = 0; i < 8; i ++)
+ {
+ szDbBusTxData[i+3] = 0xFF;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+8); // Write 0xFF for reg 0x2120~0x2123
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x21;
+ szDbBusTxData[2] = 0x20; //bank:0x21, addr:h0010
+
+ for (i = 0; i < 32; i ++)
+ {
+ szDbBusTxData[i+3] = 0xFF;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+32); // Write 0xFF for reg 0x2110~0x211F
+
+ // Clear burst mode
+ RegSetLByteValue(0x1608, 0x20);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+ }
+}
+
+u8 DrvFwCtrlGetChipType(void)
+{
+ s32 rc =0;
+ u8 nChipType = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // Erase TP Flash first
+ rc = DbBusEnterSerialDebugMode();
+ if (rc < 0)
+ {
+ DBG("*** DbBusEnterSerialDebugMode() failed, rc = %d ***\n", rc);
+ return nChipType;
+ }
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+
+ // Stop MCU
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Disable watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ nChipType = RegGet16BitValue(0x1ECC) & 0xFF;
+
+ if (nChipType != CHIP_TYPE_MSG21XX && // (0x01)
+ nChipType != CHIP_TYPE_MSG21XXA && // (0x02)
+ nChipType != CHIP_TYPE_MSG26XXM && // (0x03)
+ nChipType != CHIP_TYPE_MSG22XX && // (0x7A)
+ nChipType != CHIP_TYPE_MSG28XX) // (0x85)
+ {
+ nChipType = 0;
+ }
+
+ DBG("*** Chip Type = 0x%x ***\n", nChipType);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nChipType;
+}
+
+void DrvFwCtrlGetCustomerFirmwareVersionByDbBus(EmemType_e eEmemType, u16 *pMajor, u16 *pMinor, u8 **ppVersion) // support MSG28xx only
+{
+ u16 nReadAddr = 0;
+ u8 szTmpData[4] = {0};
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ if (eEmemType == EMEM_MAIN) // Read SW ID from main block
+ {
+ _DrvFwCtrlMsg28xxReadEFlashStart(0x7FFD, EMEM_MAIN);
+ nReadAddr = 0x7FFD;
+ }
+ else if (eEmemType == EMEM_INFO) // Read SW ID from info block
+ {
+ _DrvFwCtrlMsg28xxReadEFlashStart(0x81FB, EMEM_INFO);
+ nReadAddr = 0x81FB;
+ }
+
+ _DrvFwCtrlMsg28xxReadEFlashDoRead(nReadAddr, &szTmpData[0]);
+
+ _DrvFwCtrlMsg28xxReadEFlashEnd();
+
+ /*
+ Ex. Major in Main Block :
+ Major low byte at address 0x7FFD
+
+ Major in Info Block :
+ Major low byte at address 0x81FB
+ */
+
+ *pMajor = (szTmpData[1] << 8);
+ *pMajor |= szTmpData[0];
+ *pMinor = (szTmpData[3] << 8);
+ *pMinor |= szTmpData[2];
+
+ DBG("*** major = %d ***\n", *pMajor);
+ DBG("*** minor = %d ***\n", *pMinor);
+
+ if (*ppVersion == NULL)
+ {
+ *ppVersion = kzalloc(sizeof(u8)*6, GFP_KERNEL);
+ }
+
+ sprintf(*ppVersion, "%03d%03d", *pMajor, *pMinor);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+ }
+}
+
+void DrvFwCtrlGetCustomerFirmwareVersion(u16 *pMajor, u16 *pMinor, u8 **ppVersion)
+{
+ u8 szDbBusTxData[3] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ szDbBusTxData[0] = 0x53;
+ szDbBusTxData[1] = 0x00;
+ szDbBusTxData[2] = 0x2A;
+
+ mutex_lock(&g_Mutex);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ mutex_unlock(&g_Mutex);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ szDbBusTxData[0] = 0x03;
+
+ mutex_lock(&g_Mutex);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 1);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ mutex_unlock(&g_Mutex);
+ }
+
+ DBG("szDbBusRxData[0] = 0x%x\n", szDbBusRxData[0]); // add for debug
+ DBG("szDbBusRxData[1] = 0x%x\n", szDbBusRxData[1]); // add for debug
+ DBG("szDbBusRxData[2] = 0x%x\n", szDbBusRxData[2]); // add for debug
+ DBG("szDbBusRxData[3] = 0x%x\n", szDbBusRxData[3]); // add for debug
+
+ *pMajor = (szDbBusRxData[1]<<8) + szDbBusRxData[0];
+ *pMinor = (szDbBusRxData[3]<<8) + szDbBusRxData[2];
+
+ DBG("*** major = %d ***\n", *pMajor);
+ DBG("*** minor = %d ***\n", *pMinor);
+
+ if (*ppVersion == NULL)
+ {
+ *ppVersion = kzalloc(sizeof(u8)*6, GFP_KERNEL);
+ }
+
+ sprintf(*ppVersion, "%03d%03d", *pMajor, *pMinor);
+}
+
+void DrvFwCtrlGetPlatformFirmwareVersion(u8 **ppVersion)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ u32 i;
+ u16 nRegData = 0;
+ u8 szDbBusTxData[5] = {0};
+ u8 szDbBusRxData[16] = {0};
+
+ mutex_lock(&g_Mutex);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xA4AB); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x5B58
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x5B58);
+
+ // Read platform firmware version from info block
+ szDbBusTxData[0] = 0x72;
+ szDbBusTxData[3] = 0x00;
+ szDbBusTxData[4] = 0x08;
+
+ for (i = 0; i < 2; i ++)
+ {
+ szDbBusTxData[1] = 0x80;
+ szDbBusTxData[2] = 0x10 + ((i*8)&0x00ff);
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 5);
+
+ mdelay(50);
+
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[i*8], 8);
+ }
+
+ if (*ppVersion == NULL)
+ {
+ *ppVersion = kzalloc(sizeof(u8)*16, GFP_KERNEL);
+ }
+
+ sprintf(*ppVersion, "%.16s", szDbBusRxData);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(100);
+
+ mutex_unlock(&g_Mutex);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ u8 szDbBusTxData[1] = {0};
+ u8 szDbBusRxData[10] = {0};
+
+ szDbBusTxData[0] = 0x04;
+
+ mutex_lock(&g_Mutex);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 1);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 10);
+
+ mutex_unlock(&g_Mutex);
+
+ DBG("szDbBusRxData[0] = 0x%x , %c \n", szDbBusRxData[0], szDbBusRxData[0]); // add for debug
+ DBG("szDbBusRxData[1] = 0x%x , %c \n", szDbBusRxData[1], szDbBusRxData[1]); // add for debug
+ DBG("szDbBusRxData[2] = 0x%x , %c \n", szDbBusRxData[2], szDbBusRxData[2]); // add for debug
+ DBG("szDbBusRxData[3] = 0x%x , %c \n", szDbBusRxData[3], szDbBusRxData[3]); // add for debug
+ DBG("szDbBusRxData[4] = 0x%x , %c \n", szDbBusRxData[4], szDbBusRxData[4]); // add for debug
+ DBG("szDbBusRxData[5] = 0x%x , %c \n", szDbBusRxData[5], szDbBusRxData[5]); // add for debug
+ DBG("szDbBusRxData[6] = 0x%x , %c \n", szDbBusRxData[6], szDbBusRxData[6]); // add for debug
+ DBG("szDbBusRxData[7] = 0x%x , %c \n", szDbBusRxData[7], szDbBusRxData[7]); // add for debug
+ DBG("szDbBusRxData[8] = 0x%x , %c \n", szDbBusRxData[8], szDbBusRxData[8]); // add for debug
+ DBG("szDbBusRxData[9] = 0x%x , %c \n", szDbBusRxData[9], szDbBusRxData[9]); // add for debug
+
+ if (*ppVersion == NULL)
+ {
+ *ppVersion = kzalloc(sizeof(u8)*10, GFP_KERNEL);
+ }
+
+ sprintf(*ppVersion, "%.10s", szDbBusRxData);
+ }
+
+ DBG("*** platform firmware version = %s ***\n", *ppVersion);
+}
+
+s32 DrvFwCtrlUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ return _DrvFwCtrlUpdateFirmwareCash(szFwData, eEmemType);
+}
+
+s32 DrvFwCtrlUpdateFirmwareBySdCard(const char *pFilePath)
+{
+ s32 nRetVal = -1;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM || g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ nRetVal = _DrvFwCtrlUpdateFirmwareBySdCard(pFilePath);
+ }
+ else
+ {
+ DBG("This chip type (0x%x) does not support update firmware by sd card\n", g_ChipType);
+ }
+
+ return nRetVal;
+}
+
+//------------------------------------------------------------------------------//
+
+u16 DrvFwCtrlGetFirmwareMode(void) // use for MSG26XXM only
+{
+ u16 nMode = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ nMode = RegGet16BitValue(0x3CF4); //bank:reg_PIU_MISC0, addr:h007a
+
+ DBG("firmware mode = 0x%x\n", nMode);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+ mdelay(100);
+ }
+
+ return nMode;
+}
+
+u16 DrvFwCtrlChangeFirmwareMode(u16 nMode)
+{
+ DBG("*** %s() *** nMode = 0x%x\n", __func__, nMode);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+
+ RegSet16BitValue(0x3CF4, nMode); //bank:reg_PIU_MISC0, addr:h007a
+ nMode = RegGet16BitValue(0x3CF4);
+
+ DBG("firmware mode = 0x%x\n", nMode);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ u8 szDbBusTxData[2] = {0};
+ u32 i = 0;
+ s32 rc;
+
+ _gIsDisableFinagerTouch = 1; // Disable finger touch ISR handling temporarily for device driver can send change firmware mode i2c command to firmware.
+
+ szDbBusTxData[0] = 0x02;
+ szDbBusTxData[1] = (u8)nMode;
+
+ mdelay(20);
+
+ mutex_lock(&g_Mutex);
+ DBG("*** %s() *** mutex_lock(&g_Mutex)\n", __func__); // add for debug
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 2);
+ if (rc > 0)
+ {
+ DBG("Change firmware mode success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Change firmware mode failed, rc = %d\n", rc);
+ }
+
+ DBG("*** %s() *** mutex_unlock(&g_Mutex)\n", __func__); // add for debug
+ mutex_unlock(&g_Mutex);
+
+ _gIsDisableFinagerTouch = 0;
+ }
+
+ return nMode;
+}
+
+void DrvFwCtrlGetFirmwareInfo(FirmwareInfo_t *pInfo)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ u8 szDbBusTxData[3] = {0};
+ u8 szDbBusRxData[8] = {0};
+ u32 i = 0;
+ s32 rc;
+
+ _gIsDisableFinagerTouch = 1; // Disable finger touch ISR handling temporarily for device driver can send get firmware info i2c command to firmware.
+
+ szDbBusTxData[0] = 0x53;
+ szDbBusTxData[1] = 0x00;
+ szDbBusTxData[2] = 0x48;
+
+ mutex_lock(&g_Mutex);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ if (rc > 0)
+ {
+ DBG("Get firmware info IicWriteData() success\n");
+ }
+ mdelay(20);
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 8);
+ if (rc > 0)
+ {
+ DBG("Get firmware info IicReadData() success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Get firmware info failed, rc = %d\n", rc);
+ }
+
+ mutex_unlock(&g_Mutex);
+
+ if (szDbBusRxData[0] == 8 && szDbBusRxData[1] == 0 && szDbBusRxData[2] == 9 && szDbBusRxData[3] == 0)
+ {
+ DBG("*** Debug Mode Packet Header is 0xA5 ***\n");
+/*
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+*/
+ pInfo->nLogModePacketHeader = 0xA5;
+ pInfo->nMy = 0;
+ pInfo->nMx = 0;
+// *pDriveLineNumber = AnaGetMutualSubframeNum();
+// *pSenseLineNumber = AnaGetMutualChannelNum();
+
+/*
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+ mdelay(100);
+*/
+ }
+ else if (szDbBusRxData[0] == 0xAB)
+ {
+ DBG("*** Debug Mode Packet Header is 0xAB ***\n");
+
+ pInfo->nLogModePacketHeader = szDbBusRxData[0];
+ pInfo->nMy = szDbBusRxData[1];
+ pInfo->nMx = szDbBusRxData[2];
+// pInfo->nSd = szDbBusRxData[1];
+// pInfo->nSs = szDbBusRxData[2];
+ }
+ else if (szDbBusRxData[0] == 0xA7 && szDbBusRxData[3] == PACKET_TYPE_TOOTH_PATTERN)
+ {
+ DBG("*** Debug Packet Header is 0xA7 ***\n");
+
+ pInfo->nLogModePacketHeader = szDbBusRxData[0];
+ pInfo->nType = szDbBusRxData[3];
+ pInfo->nMy = szDbBusRxData[4];
+ pInfo->nMx = szDbBusRxData[5];
+ pInfo->nSd = szDbBusRxData[6];
+ pInfo->nSs = szDbBusRxData[7];
+ }
+
+ if (pInfo->nLogModePacketHeader == 0xA5)
+ {
+ if (pInfo->nMy != 0 && pInfo->nMx != 0)
+ {
+ // for parsing debug mode packet 0xA5
+ pInfo->nLogModePacketLength = 1+1+1+1+10*3+pInfo->nMx*pInfo->nMy*2+1;
+ }
+ else
+ {
+ DBG("Failed to retrieve channel number or subframe number for debug mode packet 0xA5.\n");
+ }
+ }
+ else if (pInfo->nLogModePacketHeader == 0xAB)
+ {
+ if (pInfo->nMy != 0 && pInfo->nMx != 0)
+ {
+ // for parsing debug mode packet 0xAB
+ pInfo->nLogModePacketLength = 1+1+1+1+10*3+pInfo->nMy*pInfo->nMx*2+pInfo->nMy*2+pInfo->nMx*2+2*2+8*2+1;
+ }
+ else
+ {
+ DBG("Failed to retrieve channel number or subframe number for debug mode packet 0xAB.\n");
+ }
+ }
+ else if (pInfo->nLogModePacketHeader == 0xA7 && pInfo->nType == PACKET_TYPE_TOOTH_PATTERN)
+ {
+ if (pInfo->nMy != 0 && pInfo->nMx != 0 && pInfo->nSd != 0 && pInfo->nSs != 0)
+ {
+ // for parsing debug mode packet 0xA7
+ pInfo->nLogModePacketLength = 1+1+1+1+1+10*3+pInfo->nMy*pInfo->nMx*2+pInfo->nSd*2+pInfo->nSs*2+10*2+1;
+ }
+ else
+ {
+ DBG("Failed to retrieve channel number or subframe number for debug mode packet 0xA7.\n");
+ }
+ }
+ else
+ {
+ DBG("Undefined debug mode packet header = 0x%x\n", pInfo->nLogModePacketHeader);
+ }
+
+ DBG("*** debug mode packet header = 0x%x ***\n", pInfo->nLogModePacketHeader);
+ DBG("*** debug mode packet length = %d ***\n", pInfo->nLogModePacketLength);
+ DBG("*** Type = 0x%x ***\n", pInfo->nType);
+ DBG("*** My = %d ***\n", pInfo->nMy);
+ DBG("*** Mx = %d ***\n", pInfo->nMx);
+ DBG("*** Sd = %d ***\n", pInfo->nSd);
+ DBG("*** Ss = %d ***\n", pInfo->nSs);
+
+ _gIsDisableFinagerTouch = 0;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ u8 szDbBusTxData[1] = {0};
+ u8 szDbBusRxData[10] = {0};
+ u32 i = 0;
+ s32 rc;
+
+ _gIsDisableFinagerTouch = 1; // Disable finger touch ISR handling temporarily for device driver can send get firmware info i2c command to firmware.
+
+ szDbBusTxData[0] = 0x01;
+
+ mutex_lock(&g_Mutex);
+ DBG("*** %s() *** mutex_lock(&g_Mutex)\n", __func__); // add for debug
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 1);
+ if (rc > 0)
+ {
+ DBG("Get firmware info IicWriteData() success\n");
+ }
+ mdelay(20);
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 10);
+ if (rc > 0)
+ {
+ DBG("Get firmware info IicReadData() success\n");
+
+ if (szDbBusRxData[1] == FIRMWARE_MODE_DEMO_MODE || szDbBusRxData[1] == FIRMWARE_MODE_DEBUG_MODE)
+ {
+ break;
+ }
+ else
+ {
+ i = 0;
+ }
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Get firmware info failed, rc = %d\n", rc);
+ }
+
+ DBG("*** %s() *** mutex_unlock(&g_Mutex)\n", __func__); // add for debug
+ mutex_unlock(&g_Mutex);
+
+ // Add protection for incorrect firmware info check
+ if ((szDbBusRxData[1] == FIRMWARE_MODE_DEBUG_MODE && szDbBusRxData[2] == 0xA7 && szDbBusRxData[5] == PACKET_TYPE_TOOTH_PATTERN) || (szDbBusRxData[1] == FIRMWARE_MODE_DEMO_MODE && szDbBusRxData[2] == 0x5A))
+ {
+ pInfo->nFirmwareMode = szDbBusRxData[1];
+ DBG("pInfo->nFirmwareMode = 0x%x\n", pInfo->nFirmwareMode);
+
+ pInfo->nLogModePacketHeader = szDbBusRxData[2];
+ pInfo->nLogModePacketLength = (szDbBusRxData[3]<<8) + szDbBusRxData[4];
+ pInfo->nType = szDbBusRxData[5];
+ pInfo->nMy = szDbBusRxData[6];
+ pInfo->nMx = szDbBusRxData[7];
+ pInfo->nSd = szDbBusRxData[8];
+ pInfo->nSs = szDbBusRxData[9];
+
+ DBG("pInfo->nLogModePacketHeader = 0x%x\n", pInfo->nLogModePacketHeader);
+ DBG("pInfo->nLogModePacketLength = %d\n", pInfo->nLogModePacketLength);
+ DBG("pInfo->nType = 0x%x\n", pInfo->nType);
+ DBG("pInfo->nMy = %d\n", pInfo->nMy);
+ DBG("pInfo->nMx = %d\n", pInfo->nMx);
+ DBG("pInfo->nSd = %d\n", pInfo->nSd);
+ DBG("pInfo->nSs = %d\n", pInfo->nSs);
+ }
+ else
+ {
+ DBG("Firmware info before correcting :\n");
+
+ DBG("FirmwareMode = 0x%x\n", szDbBusRxData[1]);
+ DBG("LogModePacketHeader = 0x%x\n", szDbBusRxData[2]);
+ DBG("LogModePacketLength = %d\n", (szDbBusRxData[3]<<8) + szDbBusRxData[4]);
+ DBG("Type = 0x%x\n", szDbBusRxData[5]);
+ DBG("My = %d\n", szDbBusRxData[6]);
+ DBG("Mx = %d\n", szDbBusRxData[7]);
+ DBG("Sd = %d\n", szDbBusRxData[8]);
+ DBG("Ss = %d\n", szDbBusRxData[9]);
+
+ // Set firmware mode to demo mode(default)
+ pInfo->nFirmwareMode = FIRMWARE_MODE_DEMO_MODE;
+ pInfo->nLogModePacketHeader = 0x5A;
+ pInfo->nLogModePacketLength = DEMO_MODE_PACKET_LENGTH;
+ pInfo->nType = 0;
+ pInfo->nMy = 0;
+ pInfo->nMx = 0;
+ pInfo->nSd = 0;
+ pInfo->nSs = 0;
+
+ DBG("Firmware info after correcting :\n");
+
+ DBG("pInfo->nFirmwareMode = 0x%x\n", pInfo->nFirmwareMode);
+ DBG("pInfo->nLogModePacketHeader = 0x%x\n", pInfo->nLogModePacketHeader);
+ DBG("pInfo->nLogModePacketLength = %d\n", pInfo->nLogModePacketLength);
+ DBG("pInfo->nType = 0x%x\n", pInfo->nType);
+ DBG("pInfo->nMy = %d\n", pInfo->nMy);
+ DBG("pInfo->nMx = %d\n", pInfo->nMx);
+ DBG("pInfo->nSd = %d\n", pInfo->nSd);
+ DBG("pInfo->nSs = %d\n", pInfo->nSs);
+ }
+
+ _gIsDisableFinagerTouch = 0;
+ }
+}
+
+void DrvFwCtrlRestoreFirmwareModeToLogDataMode(void)
+{
+ DBG("*** %s() g_IsSwitchModeByAPK = %d ***\n", __func__, g_IsSwitchModeByAPK);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ if (g_IsSwitchModeByAPK == 1)
+ {
+ DBG("g_FirmwareMode = 0x%x\n", g_FirmwareMode);
+
+ // Since reset_hw() will reset the firmware mode to demo mode, we must reset the firmware mode again after reset_hw().
+ if (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE && FIRMWARE_MODE_DEMO_MODE == DrvFwCtrlGetFirmwareMode())
+ {
+ g_FirmwareMode = DrvFwCtrlChangeFirmwareMode(FIRMWARE_MODE_DEBUG_MODE);
+ }
+ else
+ {
+ DBG("firmware mode is not restored\n");
+ }
+ }
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ if (g_IsSwitchModeByAPK == 1)
+ {
+ FirmwareInfo_t tInfo;
+
+ memset(&tInfo, 0x0, sizeof(FirmwareInfo_t));
+
+ DrvFwCtrlGetFirmwareInfo(&tInfo);
+
+ DBG("g_FirmwareMode = 0x%x, tInfo.nFirmwareMode = 0x%x\n", g_FirmwareMode, tInfo.nFirmwareMode);
+
+ // Since reset_hw() will reset the firmware mode to demo mode, we must reset the firmware mode again after reset_hw().
+ if (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE && FIRMWARE_MODE_DEBUG_MODE != tInfo.nFirmwareMode)
+ {
+ g_FirmwareMode = DrvFwCtrlChangeFirmwareMode(FIRMWARE_MODE_DEBUG_MODE);
+ }
+ else
+ {
+ DBG("firmware mode is not restored\n");
+ }
+ }
+ }
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+void DrvFwCtrlCheckFirmwareUpdateBySwId(void)
+{
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ _DrvFwCtrlMsg26xxmCheckFirmwareUpdateBySwId();
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ _DrvFwCtrlMsg28xxCheckFirmwareUpdateBySwId();
+ }
+ else
+ {
+ DBG("This chip type (0x%x) does not support update firmware by sw id\n", g_ChipType);
+ }
+}
+
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+void DrvFwCtrlGetTouchPacketAddress(u16* pDataAddress, u16* pFlagAddress)
+{
+ s32 rc = 0;
+ u8 szDbBusTxData[1] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x05;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 1);
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+ if (rc < 0)
+ {
+ g_FwSupportSegment = 0;
+ }
+ else
+ {
+ *pDataAddress = (szDbBusRxData[0]<<8) + szDbBusRxData[1];
+ *pFlagAddress = (szDbBusRxData[2]<<8) + szDbBusRxData[3];
+
+ g_FwSupportSegment = 1;
+
+ DBG("*** *pDataAddress = 0x%2X ***\n", *pDataAddress); // add for debug
+ DBG("*** *pFlagAddress = 0x%2X ***\n", *pFlagAddress); // add for debug
+ }
+}
+
+static int _DrvFwCtrlCheckFingerTouchPacketFlagBit1(void)
+{
+ u8 szDbBusTxData[3] = {0};
+ s32 nRetVal;
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x53;
+ szDbBusTxData[1] = (g_FwPacketFlagAddress >> 8) & 0xFF;
+ szDbBusTxData[2] = g_FwPacketFlagAddress & 0xFF;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &_gTouchPacketFlag[0], 2);
+
+ if ((_gTouchPacketFlag[0] & BIT1) == 0x00)
+ {
+ nRetVal = 0; // Bit1 is 0
+ }
+ else
+ {
+ nRetVal = 1; // Bit1 is 1
+ }
+ DBG("Bit1 = %d\n", nRetVal);
+
+ return nRetVal;
+}
+
+static void _DrvFwCtrlResetFingerTouchPacketFlagBit1(void)
+{
+ u8 szDbBusTxData[4] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x52;
+ szDbBusTxData[1] = (g_FwPacketFlagAddress >> 8) & 0xFF;
+ szDbBusTxData[2] = g_FwPacketFlagAddress & 0xFF;
+ szDbBusTxData[3] = _gTouchPacketFlag[0] | BIT1;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+}
+#endif //CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+
+s32 DrvFwCtrlEnableProximity(void)
+{
+ u8 szDbBusTxData[4] = {0};
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x52;
+ szDbBusTxData[1] = 0x00;
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM || g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ szDbBusTxData[2] = 0x47;
+ }
+ else
+ {
+ DBG("*** Un-recognized chip type = 0x%x ***\n", g_ChipType);
+ return -1;
+ }
+
+ szDbBusTxData[3] = 0xa0;
+
+ mutex_lock(&g_Mutex);
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ mutex_unlock(&g_Mutex);
+
+ if (rc > 0)
+ {
+ DBG("Enable proximity detection success\n");
+ }
+ else
+ {
+ DBG("Enable proximity detection failed\n");
+ }
+
+ g_EnableTpProximity = 1;
+
+ return rc;
+}
+
+s32 DrvFwCtrlDisableProximity(void)
+{
+ u8 szDbBusTxData[4] = {0};
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x52;
+ szDbBusTxData[1] = 0x00;
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM || g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ szDbBusTxData[2] = 0x47;
+ }
+ else
+ {
+ DBG("*** Un-recognized chip type = 0x%x ***\n", g_ChipType);
+ return -1;
+ }
+
+ szDbBusTxData[3] = 0xa1;
+
+ mutex_lock(&g_Mutex);
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ mutex_unlock(&g_Mutex);
+
+ if (rc > 0)
+ {
+ DBG("Disable proximity detection success\n");
+ }
+ else
+ {
+ DBG("Disable proximity detection failed\n");
+ }
+
+ g_EnableTpProximity = 0;
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ g_FaceClosingTp = 0;
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM || CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM
+
+ return rc;
+}
+
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+void DrvIcFwCtrlOpenGloveMode(void)
+{
+ s32 rc = 0;
+ u8 szDbBusTxData[3] = {0};
+ u32 i = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ _gIsDisableFinagerTouch = 1; // Disable finger touch ISR handling temporarily for device driver can send change firmware mode i2c command to firmware.
+
+ szDbBusTxData[0] = 0x06;
+ szDbBusTxData[1] = 0x01;
+ szDbBusTxData[2] = 0x01;
+
+ mdelay(20);
+
+ mutex_lock(&g_Mutex);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ if (rc > 0)
+ {
+ DBG("Open glove mode success\n");
+ break;
+ }
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Open glove mode failed, rc = %d\n", rc);
+ }
+
+ mutex_unlock(&g_Mutex);
+
+ g_IsGloveModeOpen = 1;
+
+ _gIsDisableFinagerTouch = 0;
+}
+
+void DrvIcFwCtrlCloseGloveMode(void)
+{
+ s32 rc = 0;
+ u8 szDbBusTxData[3] = {0};
+ u32 i = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ _gIsDisableFinagerTouch = 1; // Disable finger touch ISR handling temporarily for device driver can send change firmware mode i2c command to firmware.
+
+ szDbBusTxData[0] = 0x06;
+ szDbBusTxData[1] = 0x01;
+ szDbBusTxData[2] = 0x00;
+
+ mdelay(20);
+
+ mutex_lock(&g_Mutex);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ if (rc > 0)
+ {
+ DBG("Close glove mode success\n");
+ break;
+ }
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Close glove mode failed, rc = %d\n", rc);
+ }
+
+ mutex_unlock(&g_Mutex);
+
+ g_IsGloveModeOpen = 0;
+
+ _gIsDisableFinagerTouch = 0;
+}
+
+void DrvIcFwCtrlGetGloveInfo(u8 *pGloveMode)
+{
+ u8 szDbBusTxData[3] = {0};
+ u8 szDbBusRxData[2] = {0};
+ u32 i = 0;
+ s32 rc;
+
+ _gIsDisableFinagerTouch = 1; // Disable finger touch ISR handling temporarily for device driver can send get firmware info i2c command to firmware.
+
+ szDbBusTxData[0] = 0x06;
+ szDbBusTxData[1] = 0x01;
+ szDbBusTxData[2] = 0x02;
+
+ mutex_lock(&g_Mutex);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ if (rc > 0)
+ {
+ DBG("Get glove info IicWriteData() success\n");
+ }
+ mdelay(20);
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 1);
+ if (rc > 0)
+ {
+ DBG("Get glove info IicReadData() success\n");
+
+ if (szDbBusRxData[0] == 0x00 || szDbBusRxData[0] == 0x01)
+ {
+ break;
+ }
+ else
+ {
+ i = 0;
+ }
+ }
+
+ mdelay(10);
+ i++;
+ }
+
+ if (i == 5)
+ {
+ DBG("Get glove info failed, rc = %d\n", rc);
+ }
+
+ mutex_unlock(&g_Mutex);
+
+ *pGloveMode = szDbBusRxData[0];
+
+ DBG("pGloveMode = 0x%x\n", *pGloveMode);
+
+ _gIsDisableFinagerTouch = 0;
+}
+
+#endif //CONFIG_ENABLE_GLOVE_MODE
+//------------------------------------------------------------------------------//
+
+static s32 _DrvFwCtrlReadFingerTouchData(u8 *pPacket, u16 nReportPacketLength)
+{
+ s32 rc;
+
+ if (IS_FIRMWARE_DATA_LOG_ENABLED)
+ {
+ if (g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE)
+ {
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+ if (rc < 0)
+ {
+ DBG("I2C read packet data failed, rc = %d\n", rc);
+ return -1;
+ }
+ }
+ else if (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE)
+ {
+#ifdef CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+ DBG("*** g_FwPacketDataAddress = 0x%2X ***\n", g_FwPacketDataAddress); // add for debug
+ DBG("*** g_FwPacketFlagAddress = 0x%2X ***\n", g_FwPacketFlagAddress); // add for debug
+
+ if (g_FwSupportSegment == 0)
+ {
+ DBG("g_FwPacketDataAddress & g_FwPacketFlagAddress is un-initialized\n");
+ return -1;
+ }
+
+ if (_gIsDisableFinagerTouch == 1)
+ {
+ DBG("Skip finger touch for handling get firmware info or change firmware mode\n");
+ return -1;
+ }
+
+ IicSegmentReadDataBySmBus(g_FwPacketDataAddress, &pPacket[0], nReportPacketLength, MAX_I2C_TRANSACTION_LENGTH_LIMIT);
+
+ _DrvFwCtrlCheckFingerTouchPacketFlagBit1();
+ _DrvFwCtrlResetFingerTouchPacketFlagBit1();
+#else
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+ if (rc < 0)
+ {
+ DBG("I2C read packet data failed, rc = %d\n", rc);
+ return -1;
+ }
+#endif //CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+ }
+ else
+ {
+ DBG("WRONG FIRMWARE MODE : 0x%x\n", g_FirmwareMode);
+ return -1;
+ }
+ }
+ else
+ {
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+ if (rc < 0)
+ {
+ DBG("I2C read packet data failed, rc = %d\n", rc);
+ return -1;
+ }
+ } //IS_FIRMWARE_DATA_LOG_ENABLED
+
+ return 0;
+}
+
+//------------------------------------------------------------------------------//
+
+void DrvFwCtrlHandleFingerTouch(void)
+{
+ TouchInfo_t tInfo;
+ u32 i = 0;
+ static u32 nLastKeyCode = 0xFF;
+ static u32 nLastCount = 0;
+ u8 *pPacket = NULL;
+ u16 nReportPacketLength = 0;
+
+// DBG("*** %s() ***\n", __func__); // add for debug
+
+ if (_gIsDisableFinagerTouch == 1)
+ {
+ DBG("Skip finger touch for handling get firmware info or change firmware mode\n");
+ return;
+ }
+
+ mutex_lock(&g_Mutex);
+ DBG("*** %s() *** mutex_lock(&g_Mutex)\n", __func__); // add for debug
+
+ memset(&tInfo, 0x0, sizeof(TouchInfo_t));
+
+ if (IS_FIRMWARE_DATA_LOG_ENABLED)
+ {
+ if (g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE)
+ {
+#ifdef CONFIG_ENABLE_HOTKNOT //demo mode
+ if (g_HotKnotState == HOTKNOT_TRANS_STATE)
+ {
+ nReportPacketLength = DEMO_HOTKNOT_SEND_RET_LEN;
+ pPacket = g_DemoModeHotKnotSndRetPacket;
+ }
+ else
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ DBG("FIRMWARE_MODE_DEMO_MODE\n");
+
+ nReportPacketLength = DEMO_MODE_PACKET_LENGTH;
+ pPacket = g_DemoModePacket;
+ }
+ }
+ else if (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE)
+ {
+ DBG("FIRMWARE_MODE_DEBUG_MODE\n");
+
+ if (g_FirmwareInfo.nLogModePacketHeader != 0xA5 && g_FirmwareInfo.nLogModePacketHeader != 0xAB && g_FirmwareInfo.nLogModePacketHeader != 0xA7)
+ {
+ DBG("WRONG DEBUG MODE HEADER : 0x%x\n", g_FirmwareInfo.nLogModePacketHeader);
+ goto TouchHandleEnd;
+ }
+
+#ifdef CONFIG_ENABLE_HOTKNOT //debug mode
+ if(g_HotKnotState == HOTKNOT_TRANS_STATE)
+ {
+ nReportPacketLength = DEBUG_HOTKNOT_SEND_RET_LEN;
+ pPacket = g_DebugModeHotKnotSndRetPacket;
+ }
+ else
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ nReportPacketLength = g_FirmwareInfo.nLogModePacketLength;
+ pPacket = g_LogModePacket;
+ }
+ }
+ else
+ {
+ DBG("WRONG FIRMWARE MODE : 0x%x\n", g_FirmwareMode);
+ goto TouchHandleEnd;
+ }
+ }
+ else
+ {
+#ifdef CONFIG_ENABLE_HOTKNOT //demo mode
+ if (g_HotKnotState == HOTKNOT_TRANS_STATE)
+ {
+ nReportPacketLength = DEMO_HOTKNOT_SEND_RET_LEN;
+ pPacket = g_DemoModeHotKnotSndRetPacket;
+ }
+ else
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ DBG("FIRMWARE_MODE_DEMO_MODE\n");
+
+ nReportPacketLength = DEMO_MODE_PACKET_LENGTH;
+ pPacket = g_DemoModePacket;
+ }
+ } //IS_FIRMWARE_DATA_LOG_ENABLED
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ if (g_GestureDebugMode == 1 && g_GestureWakeupFlag == 1)
+ {
+ DBG("Set gesture debug mode packet length, g_ChipType=%d\n", g_ChipType);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM || g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ nReportPacketLength = GESTURE_DEBUG_MODE_PACKET_LENGTH;
+ pPacket = _gGestureWakeupPacket;
+ }
+ else
+ {
+ DBG("This chip type does not support gesture debug mode.\n");
+ goto TouchHandleEnd;
+ }
+ }
+ else if (g_GestureWakeupFlag == 1)
+ {
+ DBG("Set gesture wakeup packet length\n");
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+ nReportPacketLength = GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH;
+#else
+ nReportPacketLength = GESTURE_WAKEUP_PACKET_LENGTH;
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+ pPacket = _gGestureWakeupPacket;
+ }
+
+#else
+
+ if (g_GestureWakeupFlag == 1)
+ {
+ DBG("Set gesture wakeup packet length\n");
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+ nReportPacketLength = GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH;
+#else
+ nReportPacketLength = GESTURE_WAKEUP_PACKET_LENGTH;
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+ pPacket = _gGestureWakeupPacket;
+ }
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ if (g_GestureWakeupFlag == 1)
+ {
+ s32 rc;
+
+ while (i < 5)
+ {
+ mdelay(50);
+
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+
+ if (rc > 0)
+ {
+ break;
+ }
+
+ i ++;
+ }
+ if (i == 5)
+ {
+ DBG("I2C read packet data failed, rc = %d\n", rc);
+ goto TouchHandleEnd;
+ }
+ }
+ else
+ {
+ if (0 != _DrvFwCtrlReadFingerTouchData(&pPacket[0], nReportPacketLength))
+ {
+ goto TouchHandleEnd;
+ }
+ }
+#else
+ if (0 != _DrvFwCtrlReadFingerTouchData(&pPacket[0], nReportPacketLength))
+ {
+ goto TouchHandleEnd;
+ }
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ if (0 != _DrvFwCtrlReadFingerTouchData(&pPacket[0], nReportPacketLength))
+ {
+ goto TouchHandleEnd;
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ {
+ s32 nRetVal = 0;
+
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+
+ nRetVal = _DrvFwCtrlReadFingerTouchData(&pPacket[0], nReportPacketLength);
+ if (0 != nRetVal)
+ {
+ goto TouchHandleEnd;
+ }
+ }
+#endif
+
+ if (0 == _DrvFwCtrlParsePacket(pPacket, nReportPacketLength, &tInfo))
+ {
+#ifdef CONFIG_TP_HAVE_KEY
+ if (tInfo.nKeyCode != 0xFF) //key touch pressed
+ {
+ DBG("tInfo.nKeyCode=%x, nLastKeyCode=%x, g_TpVirtualKey[%d]=%d\n", tInfo.nKeyCode, nLastKeyCode, tInfo.nKeyCode, g_TpVirtualKey[tInfo.nKeyCode]);
+
+ if (tInfo.nKeyCode < MAX_KEY_NUM)
+ {
+ if (tInfo.nKeyCode != nLastKeyCode)
+ {
+ DBG("key touch pressed\n");
+
+ input_report_key(g_InputDevice, BTN_TOUCH, 1);
+ input_report_key(g_InputDevice, g_TpVirtualKey[tInfo.nKeyCode], 1);
+
+ input_sync(g_InputDevice);
+
+ nLastKeyCode = tInfo.nKeyCode;
+ }
+ else
+ {
+ /// pass duplicate key-pressing
+ DBG("REPEATED KEY\n");
+ }
+ }
+ else
+ {
+ DBG("WRONG KEY\n");
+ }
+ }
+ else //key touch released
+ {
+ if (nLastKeyCode != 0xFF)
+ {
+ DBG("key touch released\n");
+
+ input_report_key(g_InputDevice, BTN_TOUCH, 0);
+ input_report_key(g_InputDevice, g_TpVirtualKey[nLastKeyCode], 0);
+
+ input_sync(g_InputDevice);
+
+ nLastKeyCode = 0xFF;
+ }
+ }
+#endif //CONFIG_TP_HAVE_KEY
+
+ DBG("tInfo.nCount = %d, nLastCount = %d\n", tInfo.nCount, nLastCount);
+
+ if (tInfo.nCount > 0) //point touch pressed
+ {
+ for (i = 0; i < tInfo.nCount; i ++)
+ {
+ DrvPlatformLyrFingerTouchPressed(tInfo.tPoint[i].nX, tInfo.tPoint[i].nY, tInfo.tPoint[i].nP, tInfo.tPoint[i].nId);
+ }
+
+ input_sync(g_InputDevice);
+
+ nLastCount = tInfo.nCount;
+ }
+ else //point touch released
+ {
+ if (nLastCount > 0)
+ {
+ DrvPlatformLyrFingerTouchReleased(tInfo.tPoint[0].nX, tInfo.tPoint[0].nY);
+
+ input_sync(g_InputDevice);
+
+ nLastCount = 0;
+ }
+ }
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+ if (g_IsEnableReportRate == 1)
+ {
+ if (g_ValidTouchCount == 4294967296)
+ {
+ g_ValidTouchCount = 0; // Reset count if overflow
+ DBG("g_ValidTouchCount reset to 0\n");
+ }
+
+ g_ValidTouchCount ++;
+
+ DBG("g_ValidTouchCount = %d\n", g_ValidTouchCount);
+ }
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+ }
+
+ TouchHandleEnd:
+
+ DBG("*** %s() *** mutex_unlock(&g_Mutex)\n", __func__); // add for debug
+ mutex_unlock(&g_Mutex);
+}
+
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
\ No newline at end of file diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_mutual_fw_control.h b/drivers/input/touchscreen/msg2233/mstar_drv_mutual_fw_control.h new file mode 100644 index 00000000..89ba829a --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_mutual_fw_control.h @@ -0,0 +1,203 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_mutual_fw_control.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_MUTUAL_FW_CONTROL_H__
+#define __MSTAR_DRV_MUTUAL_FW_CONTROL_H__
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+#include "mstar_drv_common.h"
+#ifdef CONFIG_ENABLE_HOTKNOT
+#include "mstar_drv_hotknot.h"
+#endif //CONFIG_ENABLE_HOTKNOT
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR CONSTANT DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+#define DEMO_MODE_PACKET_LENGTH (43)
+#define MAX_TOUCH_NUM (10)
+
+#define MSG26XXM_FIRMWARE_MAIN_BLOCK_SIZE (32) //32K
+#define MSG26XXM_FIRMWARE_INFO_BLOCK_SIZE (8) //8K
+#define MSG26XXM_FIRMWARE_WHOLE_SIZE (MSG26XXM_FIRMWARE_MAIN_BLOCK_SIZE+MSG26XXM_FIRMWARE_INFO_BLOCK_SIZE) //40K
+
+#define MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE (128) //128K
+#define MSG28XX_FIRMWARE_INFO_BLOCK_SIZE (2) //2K
+#define MSG28XX_FIRMWARE_WHOLE_SIZE (MSG28XX_FIRMWARE_MAIN_BLOCK_SIZE+MSG28XX_FIRMWARE_INFO_BLOCK_SIZE) //130K
+
+#define MSG28XX_EMEM_SIZE_BYTES_PER_ONE_PAGE (128)
+#define MSG28XX_EMEM_SIZE_BYTES_ONE_WORD (4)
+
+#define MSG28XX_EMEM_MAIN_MAX_ADDR (0x3FFF) //0~0x3FFF = 0x4000 = 16384 = 65536/4
+#define MSG28XX_EMEM_INFO_MAX_ADDR (0x1FF) //0~0x1FF = 0x200 = 512 = 2048/4
+
+
+#define MSG26XXM_FIRMWARE_MODE_UNKNOWN_MODE (0xFFFF)
+#define MSG26XXM_FIRMWARE_MODE_DEMO_MODE (0x0005)
+#define MSG26XXM_FIRMWARE_MODE_DEBUG_MODE (0x0105)
+
+#define MSG28XX_FIRMWARE_MODE_UNKNOWN_MODE (0xFF)
+#define MSG28XX_FIRMWARE_MODE_DEMO_MODE (0x00)
+#define MSG28XX_FIRMWARE_MODE_DEBUG_MODE (0x01)
+
+
+#define DEBUG_MODE_PACKET_LENGTH (1280) //It is a predefined maximum packet length, not the actual packet length which queried from firmware.
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+#define UPDATE_FIRMWARE_RETRY_COUNT (2)
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#define FIRMWARE_GESTURE_INFORMATION_MODE_A (0x00)
+#define FIRMWARE_GESTURE_INFORMATION_MODE_B (0x01)
+#define FIRMWARE_GESTURE_INFORMATION_MODE_C (0x02)
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+/*--------------------------------------------------------------------------*/
+/* DATA TYPE DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+typedef struct
+{
+ u16 nId;
+ u16 nX;
+ u16 nY;
+ u16 nP;
+} TouchPoint_t;
+
+/// max 80+1+1 = 82 bytes
+typedef struct
+{
+ u8 nCount;
+ u8 nKeyCode;
+ TouchPoint_t tPoint[MAX_TOUCH_NUM];
+} TouchInfo_t;
+
+typedef struct
+{
+ u16 nFirmwareMode;
+ u8 nType;
+ u8 nLogModePacketHeader;
+ u8 nMy;
+ u8 nMx;
+ u8 nSd;
+ u8 nSs;
+ u16 nLogModePacketLength;
+} FirmwareInfo_t;
+
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+/*
+ * Note.
+ * 0x0000 and 0xFFFF are not allowed to be defined as SW ID.
+ * SW_ID_UNDEFINED is a reserved enum value, do not delete it or modify it.
+ * Please modify the SW ID of the below enum value depends on the TP vendor that you are using.
+ */
+typedef enum {
+ MSG26XXM_SW_ID_XXXX = 0x0001,
+ MSG26XXM_SW_ID_YYYY = 0x0002,
+ MSG26XXM_SW_ID_UNDEFINED
+} Msg26xxmSwId_e;
+
+/*
+ * Note.
+ * 0x0000 and 0xFFFF are not allowed to be defined as SW ID.
+ * SW_ID_UNDEFINED is a reserved enum value, do not delete it or modify it.
+ * Please modify the SW ID of the below enum value depends on the TP vendor that you are using.
+ */
+typedef enum {
+ MSG28XX_SW_ID_XXXX = 0x0001,
+ MSG28XX_SW_ID_YYYY = 0x0002,
+ MSG28XX_SW_ID_UNDEFINED
+} Msg28xxSwId_e;
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL FUNCTION DECLARATION */
+/*--------------------------------------------------------------------------*/
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+extern void DrvFwCtrlOpenGestureWakeup(u32 *pMode);
+extern void DrvFwCtrlCloseGestureWakeup(void);
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+extern void DrvFwCtrlOpenGestureDebugMode(u8 nGestureFlag);
+extern void DrvFwCtrlCloseGestureDebugMode(void);
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+extern u32 DrvFwCtrlReadDQMemValue(u16 nAddr);
+extern void DrvFwCtrlWriteDQMemValue(u16 nAddr, u32 nData);
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+extern void DrvFwCtrlCheckFirmwareUpdateBySwId(void);
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+extern u16 DrvFwCtrlChangeFirmwareMode(u16 nMode);
+extern void DrvFwCtrlGetFirmwareInfo(FirmwareInfo_t *pInfo);
+extern u16 DrvFwCtrlGetFirmwareMode(void);
+extern void DrvFwCtrlRestoreFirmwareModeToLogDataMode(void);
+
+#ifdef CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+extern void DrvFwCtrlGetTouchPacketAddress(u16 *pDataAddress, u16 *pFlagAddress);
+#endif //CONFIG_ENABLE_SEGMENT_READ_FINGER_TOUCH_DATA
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+extern s32 DrvFwCtrlEnableProximity(void);
+extern s32 DrvFwCtrlDisableProximity(void);
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+extern void DrvFwCtrlVariableInitialize(void);
+extern void DrvFwCtrlOptimizeCurrentConsumption(void);
+extern u8 DrvFwCtrlGetChipType(void);
+extern void DrvFwCtrlGetCustomerFirmwareVersionByDbBus(EmemType_e eEmemType, u16 *pMajor, u16 *pMinor, u8 **ppVersion);
+extern void DrvFwCtrlGetCustomerFirmwareVersion(u16 *pMajor, u16 *pMinor, u8 **ppVersion);
+extern void DrvFwCtrlGetPlatformFirmwareVersion(u8 **ppVersion);
+extern void DrvFwCtrlHandleFingerTouch(void);
+extern s32 DrvFwCtrlUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType);
+extern s32 DrvFwCtrlUpdateFirmwareBySdCard(const char *pFilePath);
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+extern void ReportHotKnotCmd(u8 *pPacket, u16 nLength);
+#endif //CONFIG_ENABLE_HOTKNOT
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+extern void DrvIcFwCtrlOpenGloveMode(void);
+extern void DrvIcFwCtrlCloseGloveMode(void);
+extern void DrvIcFwCtrlGetGloveInfo(u8 *pGloveMode);
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+
+#endif /* __MSTAR_DRV_MUTUAL_FW_CONTROL_H__ */
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_mutual_mp_test.c b/drivers/input/touchscreen/msg2233/mstar_drv_mutual_mp_test.c new file mode 100644 index 00000000..b506ad47 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_mutual_mp_test.c @@ -0,0 +1,3421 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_mutual_mp_test.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include "mstar_drv_mutual_mp_test.h"
+#include "mstar_drv_utility_adaption.h"
+#include "mstar_drv_mutual_fw_control.h"
+#include "mstar_drv_platform_porting_layer.h"
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+
+#include "msg26xxm_open_test_X.h"
+#include "msg26xxm_short_test_X.h"
+#include "msg28xx_mp_test_X.h"
+
+/*=============================================================*/
+// EXTERN VARIABLE DECLARATION
+/*=============================================================*/
+
+extern u32 SLAVE_I2C_ID_DBBUS;
+extern u32 SLAVE_I2C_ID_DWI2C;
+
+extern u8 g_ChipType;
+
+/*=============================================================*/
+// LOCAL VARIABLE DEFINITION
+/*=============================================================*/
+
+static u32 _gIsInMpTest = 0;
+static u32 _gTestRetryCount = CTP_MP_TEST_RETRY_COUNT;
+static ItoTestMode_e _gItoTestMode = 0;
+
+static s32 _gCtpMpTestStatus = ITO_TEST_UNDER_TESTING;
+
+static u16 _gSenseLineNum = 0;
+static u16 _gDriveLineNum = 0;
+static u16 _gWaterProofNum = 0;
+
+static struct work_struct _gCtpItoTestWork;
+static struct workqueue_struct *_gCtpMpTestWorkQueue = NULL;
+
+static s32 _gDeltaC[MAX_MUTUAL_NUM] = {0};
+static s32 _gResult[MAX_MUTUAL_NUM] = {0};
+static s32 _gDeltaCWater[12] = {0};
+static s32 _gResultWater[12] = {0};
+//static u8 _gMode[MAX_MUTUAL_NUM] = {0};
+static s32 _gSenseR[MAX_CHANNEL_NUM] = {0};
+static s32 _gDriveR[MAX_CHANNEL_NUM] = {0};
+static s32 _gGRR[MAX_CHANNEL_NUM] = {0};
+static s32 _gTempDeltaC[MAX_MUTUAL_NUM] = {0};
+
+static u8 _gTestFailChannel[MAX_MUTUAL_NUM] = {0};
+static u32 _gTestFailChannelCount = 0;
+
+static u8 _gShortTestChannel[MAX_CHANNEL_NUM] = {0};
+
+TestScopeInfo_t g_TestScopeInfo = {0};
+
+static u8 _gTestAutoSwitchFlag = 1;
+static u8 _gTestSwitchMode = 0;
+
+u16 _gMuxMem_20_3E_0_Settings[16] = {0};
+u16 _gMuxMem_20_3E_1_Settings[16] = {0};
+u16 _gMuxMem_20_3E_2_Settings[16] = {0};
+u16 _gMuxMem_20_3E_3_Settings[16] = {0};
+u16 _gMuxMem_20_3E_4_Settings[16] = {0};
+u16 _gMuxMem_20_3E_5_Settings[16] = {0};
+u16 _gMuxMem_20_3E_6_Settings[16] = {0};
+
+/*=============================================================*/
+// LOCAL FUNCTION DEFINITION
+/*=============================================================*/
+
+static void _DrvMpTestItoTestMsg26xxmSetToNormalMode(void)
+{
+ u16 nRegData = 0;
+ u16 nTmpAddr = 0, nAddr = 0;
+ u16 nDriveNumGeg = 0, nSenseNumGeg = 0;
+ u16 i = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x0FE6, 0x0001);
+
+ nRegData = RegGet16BitValue(0x110E);
+
+ if (nRegData == 0x1D08)
+ {
+ DBG("Wrong mode 0\n");
+ }
+
+ nRegData &= 0x0800;
+
+ if (nRegData > 1)
+ {
+ DBG("Wrong mode\n");
+ }
+
+ RegSet16BitValueOff(0x110E, 0x0800);
+ RegSet16BitValueOn(0x1116, 0x0005);
+ RegSet16BitValueOn(0x114A, 0x0001);
+
+ for (i = 0; i < 7; i ++)
+ {
+ nTmpAddr = 0x3C + i;
+ nTmpAddr = nTmpAddr * 2;
+ nAddr = (0x11 << 8) | nTmpAddr;
+ RegSet16BitValue(nAddr, MSG26XXM_open_ANA1_N_X[i]);
+ }
+
+ RegSet16BitValue(0x1E66, 0x0000);
+ RegSet16BitValue(0x1E67, 0x0000);
+ RegSet16BitValue(0x1E68, 0x0000);
+ RegSet16BitValue(0x1E69, 0x0000);
+ RegSet16BitValue(0x1E6A, 0x0000);
+ RegSet16BitValue(0x1E6B, 0x0000);
+
+ for (i = 0; i < 21; i ++)
+ {
+ nTmpAddr = 3 + i;
+ nTmpAddr = nTmpAddr * 2;
+ nAddr = (0x10 << 8) | nTmpAddr;
+ RegSet16BitValue(nAddr, MSG26XXM_open_ANA3_N_X[i]);
+ }
+
+ nDriveNumGeg = ((MSG26XXM_DRIVE_NUM - 1) << 8 & 0xFF00);
+ nSenseNumGeg = (MSG26XXM_SENSE_NUM & 0x00FF);
+
+ RegSet16BitValue(0x1216, nDriveNumGeg);
+ RegSet16BitValue(0x102E, nSenseNumGeg);
+
+ RegSet16BitValue(0x0FE6, 0x0001);
+
+ DBG("Wrong mode correction\n");
+}
+
+/*
+static void _DrvMpTestItoTestMsg26xxmSetToWaterProofMode(void)
+{
+ u16 nTmpAddr = 0, nAddr = 0;
+ u16 i = 0;
+ u16 nCsubWPdata = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nCsubWPdata = (WATERPROOF_CSUB_REF << 8) | WATERPROOF_CSUB_REF;
+
+ for (i = 0; i < 7; i ++)
+ {
+ nTmpAddr = 0x3C + i;
+ nTmpAddr = nTmpAddr * 2;
+ nAddr = (0x11 << 8) | nTmpAddr;
+ RegSet16BitValue(nAddr, MSG26XXM_WATERPROOF_ANA1_N_X[i]);
+ }
+
+ for (i = 0; i < 21; i ++)
+ {
+ nTmpAddr = 3 + i;
+ nTmpAddr = nTmpAddr * 2;
+ nAddr = (0x10 << 8) | nTmpAddr;
+ RegSet16BitValue(nAddr, MSG26XXM_WATERPROOF_ANA3_N_X[i]);
+ }
+
+ // ana2 write
+ RegSet16BitValue(0x1216, 0x0000);
+
+ for (i = 0; i < 6; i ++)
+ {
+ nTmpAddr = 0x20 + i;
+ nTmpAddr = nTmpAddr * 2;
+ nAddr = (0x10 << 8) | nTmpAddr;
+ RegSet16BitValue(nAddr, nCsubWPdata);
+ }
+
+ RegSet16BitValueOn(0x1116, 0x0005);
+ RegSet16BitValueOn(0x114A, 0x0001);
+ RegSet16BitValue(0x1208, 0x0002);
+
+ DBG("WaterProof : Wrong mode correction\n");
+}
+*/
+
+void _ItoTestDebugShowArray(void *pBuf, u16 nLen, int nDataType, int nCarry, int nChangeLine)
+{
+ u8 * pU8Buf = NULL;
+ s8 * pS8Buf = NULL;
+ u16 * pU16Buf = NULL;
+ s16 * pS16Buf = NULL;
+ u32 * pU32Buf = NULL;
+ s32 * pS32Buf = NULL;
+ int i;
+
+ if(nDataType == 8)
+ pU8Buf = (u8 *)pBuf;
+ else if(nDataType == -8)
+ pS8Buf = (s8 *)pBuf;
+ else if(nDataType == 16)
+ pU16Buf = (u16 *)pBuf;
+ else if(nDataType == -16)
+ pS16Buf = (s16 *)pBuf;
+ else if(nDataType == 32)
+ pU32Buf = (u32 *)pBuf;
+ else if(nDataType == -32)
+ pS32Buf = (s32 *)pBuf;
+
+ for(i=0; i < nLen; i++)
+ {
+ if(nCarry == 16)
+ {
+ if(nDataType == 8)
+ DBG("%02X ", pU8Buf[i]);
+ else if(nDataType == -8)
+ DBG("%02X ", pS8Buf[i]);
+ else if(nDataType == 16)
+ DBG("%04X ", pU16Buf[i]);
+ else if(nDataType == -16)
+ DBG("%04X ", pS16Buf[i]);
+ else if(nDataType == 32)
+ DBG("%08X ", pU32Buf[i]);
+ else if(nDataType == -32)
+ DBG("%08X ", pS32Buf[i]);
+ }
+ else if(nCarry == 10)
+ {
+ if(nDataType == 8)
+ DBG("%6d ", pU8Buf[i]);
+ else if(nDataType == -8)
+ DBG("%6d ", pS8Buf[i]);
+ else if(nDataType == 16)
+ DBG("%6d ", pU16Buf[i]);
+ else if(nDataType == -16)
+ DBG("%6d ", pS16Buf[i]);
+ else if(nDataType == 32)
+ DBG("%6d ", pU32Buf[i]);
+ else if(nDataType == -32)
+ DBG("%6d ", pS32Buf[i]);
+ }
+
+ if(i%nChangeLine == nChangeLine-1){
+ DBG("\n");
+ }
+ }
+ DBG("\n");
+}
+
+void _ItoTestDebugShowS32Array(s32 *pBuf, u16 nRow, u16 nCol)
+{
+ int i, j;
+
+ for(j=0; j < nRow; j++)
+ {
+ for(i=0; i < nCol; i++)
+ {
+ DBG("%4d ", pBuf[i * nRow + j]);
+ }
+ DBG("\n");
+ }
+ DBG("\n");
+}
+
+static void _DrvMpTestItoTestMsg26xxmMcuStop(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+}
+
+static void _DrvMpTestItoTestMsg26xxmAnaSwitchToMutual(void)
+{
+ u16 nTemp = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nTemp = RegGet16BitValue(0x114A); //bank:ana, addr:h0025
+ nTemp |= BIT0;
+ RegSet16BitValue(0x114A, nTemp);
+ nTemp = RegGet16BitValue(0x1116); //bank:ana, addr:h000b
+ nTemp |= (BIT2 | BIT0);
+ RegSet16BitValue(0x1116, nTemp);
+}
+
+static u16 _DrvMpTestItoTestAnaGetMutualChannelNum(void)
+{
+ u16 nSenseLineNum = 0;
+ u16 nRegData = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nRegData = RegGet16BitValue(0x102E); //bank:ana3, addr:h0017
+ nSenseLineNum = nRegData & 0x000F;
+
+ DBG("nSenseLineNum = %d\n", nSenseLineNum);
+
+ return nSenseLineNum;
+}
+
+static u16 _DrvMpTestItoTestAnaGetMutualSubFrameNum(void)
+{
+ u16 nDriveLineNum = 0;
+ u16 nRegData = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nRegData = RegGet16BitValue(0x1216); //bank:ana2, addr:h000b
+ nDriveLineNum = ((nRegData & 0xFF00) >> 8) + 1; //Since we only retrieve 8th~12th bit of reg_m_sf_num, 0xFF00 shall be changed to 0x1F00.
+
+ DBG("nDriveLineNum = %d\n", nDriveLineNum);
+
+ return nDriveLineNum;
+}
+
+/*
+static void _DrvMpTestItoOpenTestMsg26xxmAnaGetMutualCSub(u8 *pMode)
+{
+ u16 i, j;
+ u16 nSenseLineNum;
+ u16 nDriveLineNum;
+ u16 nTotalNum;
+ u8 szDataAna4[3];
+ u8 szDataAna3[3];
+ u8 szDataAna41[ANA4_MUTUAL_CSUB_NUMBER]; //200 = 392 - 192
+ u8 szDataAna31[ANA3_MUTUAL_CSUB_NUMBER]; //192 = 14 * 13 + 10
+ u8 szModeTemp[MAX_MUTUAL_NUM];
+
+ DBG("*** %s() ***\n", __func__);
+
+ nTotalNum = MAX_MUTUAL_NUM;
+
+ nSenseLineNum = _DrvMpTestItoTestAnaGetMutualChannelNum();
+ nDriveLineNum = _DrvMpTestItoTestAnaGetMutualSubFrameNum();
+
+ if (ANA4_MUTUAL_CSUB_NUMBER > 0)
+ {
+ mdelay(100);
+ for (i = 0; i < ANA4_MUTUAL_CSUB_NUMBER; i ++)
+ {
+ szDataAna41[i] = 0;
+ }
+
+ szDataAna4[0] = 0x10;
+ szDataAna4[1] = 0x15; //bank:ana4, addr:h0000
+ szDataAna4[2] = 0x00;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDataAna4[0], 3);
+ IicReadData(SLAVE_I2C_ID_DBBUS, &szDataAna41[0], ANA4_MUTUAL_CSUB_NUMBER); //200
+
+ nTotalNum -= (u16)ANA4_MUTUAL_CSUB_NUMBER;
+ }
+
+ for (i = 0; i < nTotalNum; i ++)
+ {
+ szDataAna31[i] = 0;
+ }
+
+ mdelay(100);
+
+ szDataAna3[0] = 0x10;
+ szDataAna3[1] = 0x10; //bank:ana3, addr:h0020
+ szDataAna3[2] = 0x40;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDataAna3[0], 3);
+ IicReadData(SLAVE_I2C_ID_DBBUS, &szDataAna31[0], ANA3_MUTUAL_CSUB_NUMBER); //192
+
+ for (i = 0; i < ANA3_MUTUAL_CSUB_NUMBER; i ++)
+ {
+ szModeTemp[i] = szDataAna31[i];
+ }
+
+ for (i = ANA3_MUTUAL_CSUB_NUMBER; i < (ANA3_MUTUAL_CSUB_NUMBER + ANA4_MUTUAL_CSUB_NUMBER); i ++)
+ {
+ szModeTemp[i] = szDataAna41[i - ANA3_MUTUAL_CSUB_NUMBER];
+ }
+
+ for (i = 0; i < nDriveLineNum; i ++)
+ {
+ for (j = 0; j < nSenseLineNum; j ++)
+ {
+ _gMode[j * nDriveLineNum + i] = szModeTemp[i * MAX_CHANNEL_SEN + j];
+
+// DBG("_gMode[%d] = %d\n", j * nDriveLineNum + i, _gMode[j * nDriveLineNum + i]);
+ }
+ }
+}
+*/
+
+static void _DrvMpTestItoOpenTestMsg26xxmAnaSetMutualCSub(u16 nCSub)
+{
+ u16 i = 0;
+ u8 szDbBusTxData[256] = {0};
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x15; //bank:ana4, addr:h0000
+ szDbBusTxData[2] = 0x00;
+
+ for (i = 3; i < (3+ANA4_MUTUAL_CSUB_NUMBER); i ++)
+ {
+ szDbBusTxData[i] = (u8)nCSub;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+ANA4_MUTUAL_CSUB_NUMBER);
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x10; //bank:ana3, addr:h0020
+ szDbBusTxData[2] = 0x40;
+
+ for (i = 3; i < 3+ANA3_MUTUAL_CSUB_NUMBER; i ++)
+ {
+ szDbBusTxData[i] = (u8)nCSub;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+ANA3_MUTUAL_CSUB_NUMBER);
+}
+
+static void _DrvMpTestItoTestMsg26xxmDisableFilterNoiseDetect(void)
+{
+ u16 nTemp = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nTemp = RegGet16BitValue(0x1302); //bank:fir, addr:h0001
+ nTemp &= (~(BIT2 | BIT1 | BIT0));
+ RegSet16BitValue(0x1302, nTemp);
+}
+
+static void _DrvMpTestItoTestMsg26xxmAnaSwReset(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x1100, 0xFFFF); //bank:ana, addr:h0000
+ RegSet16BitValue(0x1100, 0x0000);
+ mdelay(100);
+}
+
+static void _DrvMpTestItoTestMsg26xxmEnableAdcOneShot(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x130C, BIT15); //bank:fir, addr:h0006
+ RegSet16BitValue(0x1214, 0x0031);
+}
+
+static void _DrvMpTestItoTestGetMutualOneShotRawIir(u16 wszResultData[][MAX_CHANNEL_DRV], u16 nDriveLineNum, u16 nSenseLineNum)
+{
+ u16 nRegData;
+ u16 i, j;
+ u16 nTemp;
+ u16 nReadSize;
+ u8 szDbBusTxData[3];
+ u8 szShotData1[FILTER1_MUTUAL_DELTA_C_NUMBER]; //190 = (6 * 14 + 11) * 2
+ u8 szShotData2[FILTER2_MUTUAL_DELTA_C_NUMBER]; //594 = (MAX_MUTUAL_NUM - (6 * 14 + 11)) * 2
+
+ DBG("*** %s() ***\n", __func__);
+
+ nTemp = RegGet16BitValue(0x3D08); //bank:intr_ctrl, addr:h0004
+ nTemp &= (~(BIT8 | BIT4));
+ RegSet16BitValue(0x3D08, nTemp);
+
+ _DrvMpTestItoTestMsg26xxmEnableAdcOneShot();
+
+ nRegData = 0;
+ while (0x0000 == (nRegData & BIT8))
+ {
+ nRegData = RegGet16BitValue(0x3D18); //bank:intr_ctrl, addr:h000c
+ }
+
+ for (i = 0; i < FILTER1_MUTUAL_DELTA_C_NUMBER; i ++)
+ {
+ szShotData1[i] = 0;
+ }
+
+ for (i = 0; i < FILTER2_MUTUAL_DELTA_C_NUMBER; i ++)
+ {
+ szShotData2[i] = 0;
+ }
+
+ mdelay(100);
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x13; //bank:fir, addr:h0021
+ szDbBusTxData[2] = 0x42;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3);
+ IicReadData(SLAVE_I2C_ID_DBBUS, &szShotData1[0], FILTER1_MUTUAL_DELTA_C_NUMBER); //190
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ mdelay(100);
+ nReadSize = IicSegmentReadDataByDbBus(0x20, 0x00, &szShotData2[0], FILTER2_MUTUAL_DELTA_C_NUMBER, MAX_I2C_TRANSACTION_LENGTH_LIMIT); //594
+ DBG("*** nReadSize = %d ***\n", nReadSize); // add for debug
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+ mdelay(100);
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x20; //bank:fir2, addr:h0000
+ szDbBusTxData[2] = 0x00;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3);
+ IicReadData(SLAVE_I2C_ID_DBBUS, &szShotData2[0], FILTER2_MUTUAL_DELTA_C_NUMBER); //594
+#endif
+
+ for (j = 0; j < nDriveLineNum; j ++)
+ {
+ for (i = 0; i < nSenseLineNum; i ++)
+ {
+ // FILTER1 : SF0~SF5, AFE0~AFE13; SF6, AFE0~AFE10
+ if ((j <= 5) || ((j == 6) && (i <= 10)))
+ {
+ nRegData = (u16)(szShotData1[(j * 14 + i) * 2] | szShotData1[(j * 14 + i) * 2 + 1] << 8);
+ wszResultData[i][ j] = (short)nRegData;
+ }
+ else
+ {
+ // FILTER2 : SF6, AFE11~AFE13
+ if ((j == 6) && (i > 10))
+ {
+ nRegData = (u16)(szShotData2[((j - 6) * 14 + (i - 11)) * 2] | szShotData2[((j - 6) * 14 + (i - 11)) * 2 + 1] << 8);
+ wszResultData[i][j] = (short)nRegData;
+ }
+ else
+ {
+ nRegData = (u16)(szShotData2[6 + ((j - 7) * 14 + i) * 2] | szShotData2[6 + ((j - 7) * 14 + i) * 2 + 1] << 8);
+ wszResultData[i][j] = (short)nRegData;
+ }
+ }
+ }
+ }
+
+ nTemp = RegGet16BitValue(0x3D08); //bank:intr_ctrl, addr:h0004
+ nTemp |= (BIT8 | BIT4);
+ RegSet16BitValue(0x3D08, nTemp);
+}
+
+static void _DrvMpTestItoTestMsg26xxmGetDeltaC(s32 *pTarget)
+{
+ s16 nTemp;
+ u16 wszRawData[MAX_CHANNEL_SEN][MAX_CHANNEL_DRV];
+ u16 i, j;
+ u16 nDriveLineNum = 0, nSenseLineNum = 0, nShift = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nSenseLineNum = _DrvMpTestItoTestAnaGetMutualChannelNum();
+ nDriveLineNum = _DrvMpTestItoTestAnaGetMutualSubFrameNum();
+
+ _DrvMpTestItoTestGetMutualOneShotRawIir(wszRawData, nDriveLineNum, nSenseLineNum);
+
+ for (i = 0; i < nSenseLineNum; i ++)
+ {
+ for (j = 0; j < nDriveLineNum; j ++)
+ {
+ nShift = (u16)(i * nDriveLineNum + j);
+ nTemp = (s16)wszRawData[i][j];
+ pTarget[nShift] = nTemp;
+
+// DBG("wszRawData[%d][%d] = %d\n", i, j, nTemp);
+ }
+ }
+}
+
+static s32 _DrvMpTestItoTestMsg26xxmReadTrunkFwVersion(u32* pVersion)
+{
+ u16 nMajor = 0;
+ u16 nMinor = 0;
+ u8 szDbBusTxData[3] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x53;
+ szDbBusTxData[1] = 0x00;
+ szDbBusTxData[2] = 0x24;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ DBG("szDbBusRxData[0] = 0x%x\n", szDbBusRxData[0]); // add for debug
+ DBG("szDbBusRxData[1] = 0x%x\n", szDbBusRxData[1]); // add for debug
+ DBG("szDbBusRxData[2] = 0x%x\n", szDbBusRxData[2]); // add for debug
+ DBG("szDbBusRxData[3] = 0x%x\n", szDbBusRxData[3]); // add for debug
+
+ nMajor = (szDbBusRxData[1]<<8) + szDbBusRxData[0];
+ nMinor = (szDbBusRxData[3]<<8) + szDbBusRxData[2];
+
+ DBG("*** major = %x ***\n", nMajor);
+ DBG("*** minor = %x ***\n", nMinor);
+
+ *pVersion = (nMajor << 16) + nMinor;
+
+ return 0;
+}
+
+static s32 _DrvMpTestItoTestMsg26xxmGetSwitchFlag(void)
+{
+ u32 nFwVersion = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if(_DrvMpTestItoTestMsg26xxmReadTrunkFwVersion(&nFwVersion) < 0)
+ {
+ _gTestSwitchMode = 0;
+ return 0;
+ }
+
+ if(nFwVersion >= 0x10030000)
+ _gTestSwitchMode = 1;
+ else
+ _gTestSwitchMode = 0;
+
+ return 0;
+}
+
+static s32 _DrvMpTestItoTestMsg26xxmCheckSwitchStatus(void)
+{
+ u32 nRegData = 0;
+ int nTimeOut = 100;
+ int nT = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ mdelay(20);
+ nT++;
+ if (nT > nTimeOut)
+ {
+ return -1;
+ }
+ DBG("*** %s() nRegData:%x***\n", __func__ , nRegData);
+
+ } while (nRegData != 0x7447);
+
+ return 0;
+}
+
+static s32 _DrvMpTestItoTestMsg26xxmSwitchFwMode(u8 nFWMode)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x0FE6, 0x0001); //MCU_stop
+ mdelay(150);
+
+ RegSet16BitValue(0X3C60, 0xAA55); // disable watch dog
+
+ RegSet16BitValue(0X3D08, 0xFFFF);
+ RegSet16BitValue(0X3D18, 0xFFFF);
+
+ RegSet16BitValue(0x3CE4, 0x7474);
+
+ //RegSet16BitValue(0x1E04, 0x7D60);
+ RegSet16BitValue(0x1E04, 0x829F);
+ RegSet16BitValue(0x0FE6, 0x0000);
+ mdelay(150);
+
+ if (_DrvMpTestItoTestMsg26xxmCheckSwitchStatus() < 0)
+ {
+ DBG("*** Msg26xx MP Test# CheckSwitchStatus failed! ***\n");
+ return -1;
+ }
+
+ switch (nFWMode)
+ {
+ case MUTUAL:
+ RegSet16BitValue(0x3CE4, 0x5705);
+ break;
+
+ case SELF:
+ RegSet16BitValue(0x3CE4, 0x6278);
+ break;
+
+ case WATERPROOF:
+ RegSet16BitValue(0x3CE4, 0x7992);
+ DBG("*** Msg26xx MP Test# WATERPROOF mode***\n");
+ break;
+
+ default:
+ return -1;
+ }
+ if (_DrvMpTestItoTestMsg26xxmCheckSwitchStatus()<0)
+ {
+ DBG("*** Msg26xx MP Test# CheckSwitchStatus failed! ***\n");
+ return -1;
+ }
+
+ RegSet16BitValue(0x0FE6, 0x0001);// stop mcu
+ RegSet16BitValue(0x3D08, 0xFEFF);//open timer
+
+ return 0;
+}
+
+static s32 _DrvMpTestItoTestMsg26xxmSwitchMode(u8 nSwitchMode, u8 nFMode)
+{
+ if (_gTestSwitchMode != 0)
+ {
+ if (_DrvMpTestItoTestMsg26xxmSwitchFwMode(nFMode) < 0)
+ {
+ if (nFMode == MUTUAL)
+ {
+ _DrvMpTestItoTestMsg26xxmSetToNormalMode();
+ }
+ else
+ {
+ //_DrvMpTestItoTestMsg26xxmSetToWaterProofMode();
+ DBG("*** Msg26xx MP Test# _DrvMpTestItoTestMsg26xxmSwitchMode failed! ***\n");
+ return -1;
+ }
+ }
+ }
+ else
+ {
+ if (nFMode == MUTUAL)
+ {
+ _DrvMpTestItoTestMsg26xxmSetToNormalMode();
+ }
+ else
+ {
+ //_DrvMpTestItoTestMsg26xxmSetToWaterProofMode();
+ DBG("*** Msg26xx MP Test# _DrvMpTestItoTestMsg26xxmSwitchMode failed! ***\n");
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+s32 _DrvMpTestMsg26xxmItoOpenTestEntry(void)
+{
+ s32 nRetVal = 0;
+ s32 nPrev = 0, nDelta = 0;
+ u16 i = 0, j = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ //auto detetc fw version to decide switch fw mode
+ if (_gTestAutoSwitchFlag != 0)
+ {
+ _DrvMpTestItoTestMsg26xxmGetSwitchFlag();
+ }
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ _DrvMpTestItoTestMsg26xxmSwitchMode(_gTestSwitchMode, MUTUAL);
+
+ _DrvMpTestItoTestMsg26xxmMcuStop();
+ mdelay(10);
+
+ for (i = 0; i < MAX_MUTUAL_NUM; i ++)
+ {
+ _gTestFailChannel[i] = 0;
+ }
+
+ _gTestFailChannelCount = 0; // Reset _gTestFailChannelCount to 0 before test start
+
+ _gSenseLineNum = _DrvMpTestItoTestAnaGetMutualChannelNum();
+ _gDriveLineNum = _DrvMpTestItoTestAnaGetMutualSubFrameNum();
+
+ _DrvMpTestItoOpenTestMsg26xxmAnaSetMutualCSub(MSG26XXM_OPEN_CSUB_REF_X);
+ _DrvMpTestItoTestMsg26xxmDisableFilterNoiseDetect();
+
+ // Set charge&dump time
+ RegSet16BitValue(0x1224, 0xFFC0);
+ RegSet16BitValue(0x122A, 0x0C0A);
+
+ _DrvMpTestItoTestMsg26xxmAnaSwReset();
+ _DrvMpTestItoTestMsg26xxmGetDeltaC(_gDeltaC);
+
+ for (i = 0; i < _gSenseLineNum; i ++)
+ {
+ DBG("\nSense[%02d]\t", i);
+
+ for (j = 0; j < _gDriveLineNum; j ++)
+ {
+ _gResult[i * _gDriveLineNum + j] = (4464*MSG26XXM_OPEN_CSUB_REF_X - _gDeltaC[i * _gDriveLineNum + j]);
+ DBG("%d %d %d\t", _gResult[i * _gDriveLineNum + j], 4464*MSG26XXM_OPEN_CSUB_REF_X, _gDeltaC[i * _gDriveLineNum + j]);
+ }
+ }
+
+ DBG("\n\n\n");
+
+// for (j = 0; j < _gDriveLineNum; j ++)
+ for (j = 0; j < (_gDriveLineNum-1); j ++)
+ {
+ for (i = 0; i < _gSenseLineNum; i ++)
+ {
+ if (_gResult[i * _gDriveLineNum + j] < FIR_THRESHOLD)
+ {
+ _gTestFailChannel[i * _gDriveLineNum + j] = 1;
+ _gTestFailChannelCount ++;
+ nRetVal = -1;
+ DBG("\nSense%d, Drive%d, MIN_Threshold = %d\t", i, j, _gResult[i * _gDriveLineNum + j]);
+ }
+
+ if (i > 0)
+ {
+ nDelta = _gResult[i * _gDriveLineNum + j] > nPrev ? (_gResult[i * _gDriveLineNum + j] - nPrev) : (nPrev - _gResult[i * _gDriveLineNum + j]);
+ if (nDelta > nPrev*FIR_RATIO/100)
+ {
+ if (0 == _gTestFailChannel[i * _gDriveLineNum + j]) // for avoid _gTestFailChannelCount to be added twice
+ {
+ _gTestFailChannel[i * _gDriveLineNum + j] = 1;
+ _gTestFailChannelCount ++;
+ }
+ nRetVal = -1;
+ DBG("\nSense%d, Drive%d, MAX_Ratio = %d,%d\t", i, j, nDelta, nPrev);
+ }
+ }
+ nPrev = _gResult[i * _gDriveLineNum + j];
+ }
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(300);
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ return nRetVal;
+}
+
+static void _DrvMpTestItoOpenTestSetMutualCsubViaDBbus(s16 nCSub)
+{
+ u8 nBaseLen = 6;
+ u16 nFilter = 0x3F;
+ u16 nLastFilter = 0xFFF;
+ u8 nBasePattern = nCSub & nFilter;
+ u8 nPattern;
+ u16 n16BitsPattern;
+ u16 nCSub16Bits[5] = {0};
+ int i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ for(i=0; i<5; i++)
+ {
+ if(i == 0)
+ {
+ nPattern = nBasePattern; //Patn => Pattern
+ }
+
+ n16BitsPattern = ((nPattern & 0xF) << nBaseLen*2) | (nPattern << nBaseLen) | nPattern;
+
+ if(i == 4)
+ {
+ nCSub16Bits[i] = n16BitsPattern & nLastFilter;
+ }
+ else
+ {
+ nCSub16Bits[i] = n16BitsPattern;
+ }
+ nPattern = (u8)((n16BitsPattern >> 4) & nFilter);
+ }
+
+ RegSet16BitValue(0x215C, 0x1FFF);
+
+ for (i = 0; i < 5; i++)
+ {
+ RegSet16BitValue(0x2148 + 2 * i, nCSub16Bits[i]);
+ RegSet16BitValue(0x2152 + 2 * i, nCSub16Bits[i]);
+ }
+}
+
+/*
+static void _DrvMpTestItoOpenTestAFEGainOne(void)
+{
+ u8 nRegData = 0;
+ u16 nAFECoef = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // AFE gain = 1X
+ RegSet16BitValue(0x1318, 0x4440);
+ RegSet16BitValue(0x131A, 0x4444);
+ RegSet16BitValue(0x13D6, 0x2000);
+
+ RegSet16BitValue(0x2160, 0x0040);
+ RegSet16BitValue(0x2162, 0x0040);
+ RegSet16BitValue(0x2164, 0x0040);
+ RegSet16BitValue(0x2166, 0x0040);
+ RegSet16BitValue(0x2168, 0x0040);
+ RegSet16BitValue(0x216A, 0x0040);
+ RegSet16BitValue(0x216C, 0x0040);
+ RegSet16BitValue(0x216E, 0x0040);
+ RegSet16BitValue(0x2170, 0x0040);
+ RegSet16BitValue(0x2172, 0x0040);
+ RegSet16BitValue(0x2174, 0x0040);
+ RegSet16BitValue(0x2176, 0x0040);
+ RegSet16BitValue(0x2178, 0x0040);
+ RegSet16BitValue(0x217A, 0x1FFF);
+ RegSet16BitValue(0x217C, 0x1FFF);
+
+ /// reg_hvbuf_sel_gain
+ RegSet16BitValue(0x1564, 0x0077);
+
+ /// all AFE Cfb use defalt (50p)
+ RegSet16BitValue(0x1508, 0x1FFF);// all AFE Cfb: SW control
+ RegSet16BitValue(0x1550, 0x0000);// all AFE Cfb use defalt (50p)
+
+ ///ADC: AFE Gain bypass
+ RegSet16BitValue(0x1260, 0x1FFF);
+
+ //AFE coef
+ nRegData = RegGetLByteValue(0x101A);
+ nAFECoef = (u16)(0x10000/nRegData);
+ RegSet16BitValue(0x13D6, nAFECoef);
+}
+*/
+
+static void _DrvMpTestItoOpenTestAFEGainOne(void)
+{
+ // AFE gain = 1X
+ u16 nAfeGain = 0;
+ u16 nDriOpening = 0;
+ u8 nRegData = 0;
+ u16 nAfeCoef = 0;
+ u16 i = 0;
+
+
+ //proto.MstarReadReg(loopDevice, (uint)0x1312, ref regdata); //get dri num
+ nRegData = RegGetLByteValue(0x1312);
+ nDriOpening = nRegData;
+
+ ///filter unit gain
+ if (nDriOpening == 11 || nDriOpening == 15)
+ {
+ RegSet16BitValue(0x1318, 0x4470);
+ }
+ else if (nDriOpening == 7)
+ {
+ RegSet16BitValue(0x1318, 0x4460);
+ }
+
+ //proto.MstarWriteReg_16(loopDevice, 0x131A, 0x4444);
+ RegSet16BitValue(0x131A, 0x4444);
+
+ ///AFE coef
+ //proto.MstarReadReg(loopDevice, (uint)0x101A, ref regdata);
+ nRegData = RegGetLByteValue(0x101A);
+ nAfeCoef = 0x10000 / nRegData;
+ //proto.MstarWriteReg_16(loopDevice, (uint)0x13D6, AFE_coef);
+ RegSet16BitValue(0x13D6, nAfeCoef);
+
+ ///AFE gain
+ if (nDriOpening == 7 || nDriOpening == 15)
+ {
+ nAfeGain = 0x0040;
+ }
+ else if (nDriOpening == 11)
+ {
+ nAfeGain = 0x0055;
+ }
+
+ for (i = 0; i < 13; i++)
+ {
+ RegSet16BitValue(0x2160 + 2 * i, nAfeGain);
+ }
+
+ ///AFE gain: over write enable
+ RegSet16BitValue(0x217A, 0x1FFF);
+ RegSet16BitValue(0x217C, 0x1FFF);
+
+ /// all AFE Cfb use defalt (50p)
+ RegSet16BitValue(0x1508, 0x1FFF);// all AFE Cfb: SW control
+ RegSet16BitValue(0x1550, 0x0000);// all AFE Cfb use defalt (50p)
+
+ /// reg_hvbuf_sel_gain
+ RegSet16BitValue(0x1564, 0x0077);
+
+ ///ADC: AFE Gain bypass
+ RegSet16BitValue(0x1260, 0x1FFF);
+}
+
+static void _DrvMpTestItoOpenTestCalibrateMutualCsub(s16 nCSub)
+{
+ u8 nChipVer;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nChipVer = RegGetLByteValue(0x1ECE);
+ DBG("*** Msg28xx Open Test# Chip ID = %d ***\n", nChipVer);
+
+ if (nChipVer != 0)
+ RegSet16BitValue(0x10F0, 0x0004);//bit2
+
+ _DrvMpTestItoOpenTestSetMutualCsubViaDBbus(nCSub);
+ _DrvMpTestItoOpenTestAFEGainOne();
+}
+
+static void _DrvMpTestItoTestDBBusReadDQMemStart(void)
+{
+ u8 nParCmdSelUseCfg = 0x7F;
+ u8 nParCmdAdByteEn0 = 0x50;
+ u8 nParCmdAdByteEn1 = 0x51;
+ u8 nParCmdDaByteEn0 = 0x54;
+ u8 nParCmdUSetSelB0 = 0x80;
+ u8 nParCmdUSetSelB1 = 0x82;
+ u8 nParCmdSetSelB2 = 0x85;
+ u8 nParCmdIicUse = 0x35;
+ //u8 nParCmdWr = 0x10;
+
+ DBG("*** %s() ***\n", __func__);
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdSelUseCfg, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdAdByteEn0, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdAdByteEn1, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdDaByteEn0, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdUSetSelB0, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdUSetSelB1, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdSetSelB2, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdIicUse, 1);
+}
+
+/*
+static void _DrvMpTestItoTestDBBusReadDQMemStartAddr24(void)
+{
+ u8 nParCmdSelUseCfg = 0x7F;
+// u8 nParCmdAdByteEn0 = 0x50;
+// u8 nParCmdAdByteEn1 = 0x51;
+ u8 nParCmdAdByteEn2 = 0x52;
+// u8 nParCmdDaByteEn0 = 0x54;
+ u8 nParCmdUSetSelB0 = 0x80;
+ u8 nParCmdUSetSelB1 = 0x82;
+ u8 nParCmdSetSelB2 = 0x85;
+ u8 nParCmdIicUse = 0x35;
+ //u8 nParCmdWr = 0x10;
+
+ DBG("*** %s() ***\n", __func__);
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdSelUseCfg, 1);
+ //IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdAdByteEn0, 1);
+ //IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdAdByteEn1, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdAdByteEn2, 1);
+ //IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdDaByteEn0, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdUSetSelB0, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdUSetSelB1, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdSetSelB2, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdIicUse, 1);
+}
+*/
+
+static void _DrvMpTestItoTestDBBusReadDQMemEnd(void)
+{
+ u8 nParCmdNSelUseCfg = 0x7E;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdNSelUseCfg, 1);
+}
+
+/*
+static void _DrvMpTestItoTestDBBusReadDQMemEndAddr24(void)
+{
+ u8 nParCmdSelUseCfg = 0x7F;
+ u8 nParCmdAdByteEn1 = 0x51;
+ u8 nParCmdSetSelB0 = 0x81;
+ u8 nParCmdSetSelB1 = 0x83;
+ u8 nParCmdNSetSelB2 = 0x84;
+ u8 nParCmdIicUse = 0x35;
+ u8 nParCmdNSelUseCfg = 0x7E;
+ u8 nParCmdNIicUse = 0x34;
+
+ DBG("*** %s() ***\n", __func__);
+ RegSetLByteValue(0, 0);
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdSelUseCfg, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdAdByteEn1, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdSetSelB0, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdSetSelB1, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdNSetSelB2, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdIicUse, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdNSelUseCfg, 1);
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &nParCmdNIicUse, 1);
+}
+*/
+
+static void _DrvMpTestItoTestMsg28xxEnableAdcOneShot(void)
+{
+ RegSet16BitValueOn(0x100a, BIT0);
+
+ return;
+}
+
+static s32 _DrvMpTestItoTestMsg28xxTriggerMutualOneShot(s16 * pResultData, u16 * pSenNum, u16 * pDrvNum)
+{
+ u16 nAddr = 0x5000, nAddrNextSF = 0x1A4;
+ u16 nSF = 0, nAfeOpening = 0, nDriOpening = 0;
+ u16 nMaxDataNumOfOneSF = 0;
+ u16 nDriMode = 0;
+ int nDataShift = -1;
+ u16 i, j, k;
+ u8 nRegData = 0;
+ u8 nShotData[392] = {0};//13*15*2
+ u16 nRegDataU16 = 0;
+ s16 * pShotDataAll = NULL;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nRegData = RegGetLByteValue(0x130A);
+ nSF = nRegData>>4;
+ nAfeOpening = nRegData & 0x0f;
+
+ if (nSF == 0)
+ {
+ return -1;
+ }
+
+ nRegData = RegGetLByteValue(0x100B);
+ nDriMode = nRegData;
+
+ nRegData = RegGetLByteValue(0x1312);
+ nDriOpening = nRegData;
+
+ DBG("*** Msg28xx MP Test# TriggerMutualOneShot nSF=%d, nAfeOpening=%d, nDriMode=%d, nDriOpening=%d. ***\n", nSF, nAfeOpening, nDriMode, nDriOpening);
+
+ nMaxDataNumOfOneSF = nAfeOpening * nDriOpening;
+
+ pShotDataAll = kzalloc(sizeof(s16) * nSF * nMaxDataNumOfOneSF, GFP_KERNEL);
+
+ RegSet16BitValueOff(0x3D08, BIT8); ///FIQ_E_FRAME_READY_MASK
+
+ ///polling frame-ready interrupt status
+ _DrvMpTestItoTestMsg28xxEnableAdcOneShot();
+
+ while (0x0000 == (nRegDataU16 & BIT8))
+ {
+ nRegDataU16 = RegGet16BitValue(0x3D18);
+ }
+
+ if (nDriMode == 2) // for short test
+ {
+ if (nAfeOpening % 2 == 0)
+ nDataShift = -1;
+ else
+ nDataShift = 0; //special case
+ //s16 nShortResultData[nSF][nAfeOpening];
+
+ /// get ALL raw data
+ for (i = 0; i < nSF; i++)
+ {
+ _DrvMpTestItoTestDBBusReadDQMemStart();
+ RegGetXBitValue(nAddr + i * nAddrNextSF, nShotData, 28, MAX_I2C_TRANSACTION_LENGTH_LIMIT);
+ _DrvMpTestItoTestDBBusReadDQMemEnd();
+
+ //_ItoTestDebugShowArray(nShotData, 26, 8, 16, 16);
+ for (j = 0; j < nAfeOpening; j++)
+ {
+ pResultData[i*MAX_CHANNEL_DRV+j] = (s16)(nShotData[2 * j] | nShotData[2 * j + 1] << 8);
+
+ if (nDataShift == 0 && (j == nAfeOpening-1))
+ {
+ pResultData[i*MAX_CHANNEL_DRV+j] = (s16)(nShotData[2 * (j + 1)] | nShotData[2 * (j + 1) + 1] << 8);
+ }
+ }
+ }
+
+ *pSenNum = nSF;
+ *pDrvNum = nAfeOpening;
+ }
+ else // for open test
+ {
+ //s16 nOpenResultData[nSF * nAfeOpening][nDriOpening];
+
+ if (nAfeOpening % 2 == 0 || nDriOpening % 2 == 0)
+ nDataShift = -1;
+ else
+ nDataShift = 0; //special case
+
+ /// get ALL raw data, combine and handle datashift.
+ for (i = 0; i < nSF; i++)
+ {
+ _DrvMpTestItoTestDBBusReadDQMemStart();
+ RegGetXBitValue(nAddr + i * nAddrNextSF, nShotData, 392, MAX_I2C_TRANSACTION_LENGTH_LIMIT);
+ _DrvMpTestItoTestDBBusReadDQMemEnd();
+
+ //_ItoTestDebugShowArray(nShotData, 390, 8, 10, 16);
+ for (j = 0; j < nMaxDataNumOfOneSF; j++)
+ {
+ pShotDataAll[i*nMaxDataNumOfOneSF+j] = (s16)(nShotData[2 * j] | nShotData[2 * j + 1] << 8);
+
+ if (nDataShift == 0 && j == (nMaxDataNumOfOneSF - 1))
+ pShotDataAll[i*nMaxDataNumOfOneSF+j] = (s16)(nShotData[2 * (j + 1)] | nShotData[2 * (j + 1) + 1] << 8);
+ }
+ }
+
+ //problem here
+ for (k = 0; k < nSF; k++)
+ {
+ for (i = k * nAfeOpening; i < nAfeOpening * (k + 1); i++) //Sen
+ {
+ for (j = 0; j < nDriOpening; j++) //Dri
+ {
+ pResultData[i*MAX_CHANNEL_DRV+j] = pShotDataAll[k*nMaxDataNumOfOneSF + (j + (i - nAfeOpening * k) * nDriOpening)]; //resultData[Sen, Dri]
+ }
+ }
+ }
+
+ *pSenNum = nSF * nAfeOpening;
+ *pDrvNum = nDriOpening;
+ }
+ RegSet16BitValueOn(0x3D08, BIT8); ///FIQ_E_FRAME_READY_MASK
+ RegSet16BitValueOn(0x3D08, BIT4); ///FIQ_E_TIMER0_MASK
+
+ kfree(pShotDataAll);
+
+ return 0;
+}
+
+static s32 _DrvMpTestItoTestMsg28xxGetMutualOneShotRawIIR(s16 * nResultData, u16 * pSenNum, u16 * pDrvNum)
+{
+ return _DrvMpTestItoTestMsg28xxTriggerMutualOneShot(nResultData, pSenNum, pDrvNum);
+}
+
+static s32 _DrvMpTestItoTestMsg28xxGetDeltaC(s32 *pDeltaC)
+{
+ s16 * pRawData = NULL;
+ s16 nRawDataOverlapDone[SENSE_NUM][DRIVE_NUM] = {{0}};
+ //s16 nDeltaC[MAX_MUTUAL_NUM] = {0};
+ u16 nDrvPos = 0, nSenPos = 0, nShift = 0;
+ u16 nSenNumBak = 0;
+ u16 nDrvNumBak = 0;
+ s16 i, j;
+
+ DBG("*** %s() ***\n", __func__);
+
+ pRawData = kzalloc(sizeof(s16) * MAX_CHANNEL_SEN*2 * MAX_CHANNEL_DRV, GFP_KERNEL);
+
+ if(_DrvMpTestItoTestMsg28xxGetMutualOneShotRawIIR(pRawData, &nSenNumBak, &nDrvNumBak) < 0)
+ {
+ DBG("*** Msg28xx Open Test# GetMutualOneShotRawIIR failed! ***\n");
+ return -1;
+ }
+
+ DBG("*** Msg28xx Open Test# nSenNumBak=%d nDrvNumBak=%d ***\n", nSenNumBak, nDrvNumBak);
+
+ for (i = 0; i < nSenNumBak; i++)
+ {
+ for (j = 0; j < nDrvNumBak; j++)
+ {
+ nShift = (u16)(i * nDrvNumBak + j);
+ nDrvPos = g_MapVaMutual[nShift][1];
+ nSenPos = g_MapVaMutual[nShift][0];
+ if (nDrvPos != 0xFF && nSenPos != 0xFF)
+ nRawDataOverlapDone[nSenPos][nDrvPos] = pRawData[i*MAX_CHANNEL_DRV+j];
+ }
+ }
+
+ for (i = 0; i < _gSenseLineNum; i++)
+ {
+ for (j = 0; j < _gDriveLineNum; j++)
+ {
+ nShift = (u16)(i * _gDriveLineNum + j);
+ pDeltaC[nShift] = (s32)nRawDataOverlapDone[i][j];
+ }
+ }
+
+ DBG("*** Msg28xx Open Test# gDeltaC ***\n");
+ _ItoTestDebugShowArray(pDeltaC, _gSenseLineNum * _gDriveLineNum, -32, 10, _gSenseLineNum);
+
+ kfree(pRawData);
+
+ return 0;
+}
+
+static void _DrvMpTestItoTestMsg28xxAnaSwReset(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ /// reset ANA
+ RegSet16BitValueOn(0x1002, (BIT0 | BIT1 | BIT2 | BIT3)); ///reg_tgen_soft_rst: 1 to reset
+ RegSet16BitValueOff(0x1002, (BIT0 | BIT1 | BIT2 | BIT3));
+
+ /// delay
+ mdelay(20);
+}
+
+static s32 _DrvMpTestMsg28xxItoOpenTest(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ // Stop mcu
+ RegSet16BitValue(0x0FE6, 0x0001);
+
+ _DrvMpTestItoOpenTestCalibrateMutualCsub(CSUB_REF);
+ RegSet16BitValue(0x156A, 0x000A); ///DAC com voltage
+ _DrvMpTestItoTestMsg28xxAnaSwReset();
+
+
+ if(_DrvMpTestItoTestMsg28xxGetDeltaC(_gDeltaC) < 0)
+ {
+ DBG("*** Msg28xx Open Test# GetDeltaC failed! ***\n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static u8 _DrvMpTestItoTestCheckValueInRange(s32 nValue, s32 nMax, s32 nMin)
+{
+ if (nValue <= nMax && nValue >= nMin)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+static s32 _DrvMpTestItoOpenTestMsg28xxOpenJudge(u16 nItemID, s8 pNormalTestResult[][2], u16 pNormalTestResultCheck[][13]/*, u16 nDriOpening*/)
+{
+ s32 nRetVal = 0;
+ u16 nCSub = CSUB_REF;
+ u16 nRowNum = 0, nColumnNum = 0;
+ u32 nSum=0, nAvg=0, nDelta=0, nPrev=0;
+ u16 i, j, k;
+
+ DBG("*** %s() ***\n", __func__);
+
+ for (i = 0; i < _gSenseLineNum * _gDriveLineNum; i++)
+ {
+ //deltaC_result[i] = deltaC[i];
+ //_gResult[i] = 1673 * nCSub - _gDeltaC[i] * 2 / (nDriOpening + 1);
+ if (_gDeltaC[i] > 31000)
+ {
+ return -1;
+ }
+
+ _gResult[i] = 1673 * nCSub - _gDeltaC[i];
+
+ // For mutual key, last column if not be used, show number "one".
+ if ((MUTUAL_KEY == 1 || MUTUAL_KEY == 2) && (KEY_NUM != 0))
+ {
+ if ((_gSenseLineNum < _gDriveLineNum) && ((i + 1) % _gDriveLineNum == 0))
+ {
+ _gResult[i] = -32000;
+ for (k = 0; k < KEY_NUM; k++)
+ if ((i + 1) / _gDriveLineNum == KEYSEN[k])
+ {
+ //_gResult[i] = 1673 * nCSub - _gDeltaC[i] * 2 / (nDriOpening + 1);
+ _gResult[i] = 1673 * nCSub - _gDeltaC[i];
+ }
+ }
+
+ if ((_gSenseLineNum > _gDriveLineNum) && (i > (_gSenseLineNum - 1) * _gDriveLineNum - 1))
+ {
+ _gResult[i] = -32000;
+ for (k = 0; k < KEY_NUM; k++)
+ if (((i + 1) - (_gSenseLineNum - 1) * _gDriveLineNum) == KEYSEN[k])
+ {
+ //_gResult[i] = 1673 * nCSub - _gDeltaC[i] * 2 / (nDriOpening + 1);
+ _gResult[i] = 1673 * nCSub - _gDeltaC[i];
+ }
+ }
+ }
+ }
+
+ if(_gDriveLineNum >= _gSenseLineNum)
+ {
+ nRowNum = _gDriveLineNum;
+ nColumnNum = _gSenseLineNum;
+ }
+ else
+ {
+ nRowNum = _gSenseLineNum;
+ nColumnNum = _gDriveLineNum;
+ }
+
+ DBG("*** Msg28xx Open Test# Show _gResult ***\n");
+ //_ItoTestDebugShowS32Array(_gResult, nRowNum, nColumnNum);
+ _ItoTestDebugShowArray(_gResult, nRowNum*nColumnNum, -32, 10, nColumnNum);
+
+ //for (j = 0; j < nRowNum; j ++)
+ for (j = 0; j < (nRowNum-1); j ++)
+ {
+ nSum = 0;
+ for (i = 0; i < nColumnNum; i++)
+ {
+ nSum = nSum + _gResult[i * nRowNum + j];
+ }
+
+ nAvg = nSum / nColumnNum;
+ //DBG("*** Msg28xx Open Test# OpenJudge average=%d ***\n", nAvg);
+ for (i = 0; i < nColumnNum; i ++)
+ {
+ if (0 == _DrvMpTestItoTestCheckValueInRange(_gResult[i * nRowNum + j], (s32)(nAvg + nAvg * DC_RANGE/100), (s32)(nAvg - nAvg * DC_RANGE/100)))
+ {
+ _gTestFailChannel[i * nRowNum + j] = 1;
+ _gTestFailChannelCount ++;
+ nRetVal = -1;
+ }
+
+ if (i > 0)
+ {
+ nDelta = _gResult[i * nRowNum + j] > nPrev ? (_gResult[i * nRowNum + j] - nPrev) : (nPrev - _gResult[i * nRowNum + j]);
+ if (nDelta > nPrev*FIR_RATIO/100)
+ {
+ if (0 == _gTestFailChannel[i * nRowNum + j]) // for avoid _gTestFailChannelCount to be added twice
+ {
+ _gTestFailChannel[i * nRowNum + j] = 1;
+ _gTestFailChannelCount ++;
+ }
+ nRetVal = -1;
+ DBG("\nSense%d, Drive%d, MAX_Ratio = %d,%d\t", i, j, nDelta, nPrev);
+ }
+ }
+ nPrev = _gResult[i * nRowNum + j];
+ }
+ }
+
+ //DBG("*** Msg28xx Open Test# OpenJudge _gTestFailChannelCount=%d ***\n", _gTestFailChannelCount);
+ return nRetVal;
+}
+
+static s32 _DrvMpTestItoTestCheckSwitchStatus(void)
+{
+ u32 nRegData = 0;
+ int nTimeOut = 100;
+ int nT = 0;
+
+ do
+ {
+ nRegData = RegGet16BitValue(0x1402);
+ mdelay(20);
+ nT++;
+ if (nT > nTimeOut)
+ {
+ return -1;
+ }
+
+ } while (nRegData != 0x7447);
+
+ return 0;
+}
+
+static s32 _DrvMpTestMsg28xxItoTestSwitchFwMode(u8 nFMode)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ mdelay(100);
+ RegSet16BitValue(0x0FE6, 0x0001); //MCU_stop
+ RegSet16BitValue(0X3C60, 0xAA55); // disable watch dog
+
+ RegSet16BitValue(0X3D08, 0xFFFF);
+ RegSet16BitValue(0X3D18, 0xFFFF);
+
+ RegSet16BitValue(0x1402, 0x7474);
+
+ //RegSet16BitValue((uint)0x1E04, (uint)0x7D60);
+ RegSet16BitValue(0x1E04, 0x829F);
+ RegSet16BitValue(0x0FE6, 0x0000);
+ mdelay(150);
+
+ if (_DrvMpTestItoTestCheckSwitchStatus()<0)
+ {
+ DBG("*** Msg28xx MP Test# CheckSwitchStatus failed! ***\n");
+ return -1;
+ }
+
+ switch (nFMode)
+ {
+ case MUTUAL:
+ RegSet16BitValue(0x1402, 0x5705);
+ break;
+
+ case SELF:
+ RegSet16BitValue(0x1402, 0x6278);
+ break;
+
+ case WATERPROOF:
+ RegSet16BitValue(0x1402, 0x7992);
+ break;
+
+ case MUTUAL_SINGLE_DRIVE:
+ RegSet16BitValue(0x1402, 0x0158);
+ break;
+
+ default:
+ return -1;
+ }
+ if (_DrvMpTestItoTestCheckSwitchStatus()<0)
+ {
+ DBG("*** Msg28xx MP Test# CheckSwitchStatus failed! ***\n");
+ return -1;
+ }
+
+ RegSet16BitValue(0x0FE6, 0x0001);// stop mcu
+ RegSet16BitValue(0x3D08, 0xFEFF);//open timer
+
+ return 0;
+}
+
+s32 _DrvMpTestMsg28xxItoOpenTestEntry(void)
+{
+ s32 nRetVal = 0;
+// u8 nDrvOpening = 0;
+ //u16 nCheckState = 0;
+ s8 nNormalTestResult[8][2] = {{0}}; //0:golden 1:ratio
+ u16 nNormalTestResultCheck[6][13] = {{0}}; //6:max subframe 13:max afe
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ _gSenseLineNum = SENSE_NUM;
+ _gDriveLineNum = DRIVE_NUM;
+
+ DrvPlatformLyrDisableFingerTouchReport();
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ //reset_only
+ DbBusResetSlave();
+ DbBusEnterSerialDebugMode();
+ //DbBusWaitMCU();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSet16BitValue(0x0FE6, 0x0001);
+
+ if(_DrvMpTestMsg28xxItoTestSwitchFwMode(MUTUAL) < 0)
+ {
+ DBG("*** Msg28xx Open Test# SwitchFwMode failed! ***\n");
+ return -1;
+ }
+
+ //nDrvOpening = RegGetLByteValue(0x1312);
+
+ if(_DrvMpTestMsg28xxItoOpenTest() < 0)
+ {
+ DBG("*** Msg28xx Open Test# OpenTest failed! ***\n");
+ return -1;
+ }
+
+ mdelay(10);
+
+ nRetVal = _DrvMpTestItoOpenTestMsg28xxOpenJudge(0, nNormalTestResult, nNormalTestResultCheck/*, nDrvOpening*/);
+ DBG("*** Msg28xx Open Test# OpenTestOpenJudge return value = %d ***\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(300);
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ return nRetVal;
+}
+
+s32 _DrvMpTestItoOpenTest(void)
+{
+ s32 nRetVal = -1;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ nRetVal = _DrvMpTestMsg26xxmItoOpenTestEntry();
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ nRetVal = _DrvMpTestMsg28xxItoOpenTestEntry();
+ }
+
+ return nRetVal;
+}
+
+static void _DrvMpTestItoTestSendDataIn(u16 nAddr, u16 nLength, u16 *data)
+{
+ u8 szDbBusTxData[256] = {0};
+ int i = 0;
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = (nAddr >> 8) & 0xFF;
+ szDbBusTxData[2] = (nAddr & 0xFF);
+
+ for (i = 0; i <= nLength ; i ++)
+ {
+ szDbBusTxData[3+2*i] = (data[i] & 0xFF);
+ szDbBusTxData[4+2*i] = (data[i] >> 8) & 0xFF;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+nLength*2);
+}
+
+static void _DrvMpTestItoShortTestMsg26xxmSetPAD2GPO(u8 nItemID)
+{
+ u16 gpioSetting[MAX_CHANNEL_NUM] = {0};
+ u16 gpioEnabling[MAX_CHANNEL_NUM] = {0};
+ u16 gpioZero[MAX_CHANNEL_NUM] = {0};
+ u8 gpioNum = 0;
+ u16 *gpioPIN = NULL;
+ int i = 0;
+ int j = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (nItemID == 1)
+ {
+ gpioNum = SHORT_N1_GPO_NUMBER_X;
+ gpioPIN = kzalloc(sizeof(u16) * gpioNum, GFP_KERNEL);
+
+ for (i = 0; i < gpioNum; i++)
+ {
+ gpioPIN[i] = SHORT_N1_GPO_PIN_X[i];
+ }
+ }
+ else if (nItemID == 2)
+ {
+ gpioNum = SHORT_N2_GPO_NUMBER_X;
+ gpioPIN = kzalloc(sizeof(u16) * gpioNum, GFP_KERNEL);
+
+ for (i = 0; i < gpioNum; i++)
+ {
+ gpioPIN[i] = SHORT_N2_GPO_PIN_X[i];
+ }
+ }
+ else if (nItemID == 3)
+ {
+ gpioNum = SHORT_S1_GPO_NUMBER_X;
+ gpioPIN = kzalloc(sizeof(u16) * gpioNum, GFP_KERNEL);
+
+ for (i = 0; i < gpioNum; i++)
+ {
+ gpioPIN[i] = SHORT_S1_GPO_PIN_X[i];
+ }
+ }
+ else if (nItemID == 4)
+ {
+ gpioNum = SHORT_S2_GPO_NUMBER_X;
+ gpioPIN = kzalloc(sizeof(u16) * gpioNum, GFP_KERNEL);
+
+ for (i = 0; i < gpioNum; i++)
+ {
+ gpioPIN[i] = SHORT_S2_GPO_PIN_X[i];
+ }
+ }
+ DBG("ItemID %d, gpioNum %d",nItemID, gpioNum);
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i++)
+ {
+ gpioEnabling[i] = 0xFFFF;
+ }
+
+ for (i = 0; i < gpioNum; i++)
+ {
+ gpioSetting[gpioPIN[i] / 16] |= (u16)(1 << (gpioPIN[i] % 16));
+ gpioEnabling[gpioPIN[i] / 16] &= (u16)(~(1 << (gpioPIN[i] % 16)));
+ }
+
+ ///cts sw overwrite
+ {
+ _DrvMpTestItoTestSendDataIn(0x1E66, gpioNum, &gpioSetting[0]); ///who -> will be controlled
+ _DrvMpTestItoTestSendDataIn(0x1E6C, gpioNum, &gpioEnabling[0]); ///who -> enable sw overwrite
+ _DrvMpTestItoTestSendDataIn(0x1E72, gpioNum, &gpioZero[0]); ///who -> set2GPO
+ _DrvMpTestItoTestSendDataIn(0x1E78, gpioNum, &gpioZero[0]); ///who -> GPO2GND
+ }
+
+ for (j = 0; j < gpioNum; j++)
+ {
+ if (PIN_GUARD_RING == gpioPIN[j])
+ {
+ u16 u16RegData;
+ u16RegData = RegGet16BitValue(0x1E12);
+ u16RegData = ((u16RegData & 0xFFF9) | BIT0);
+ RegSet16BitValue(0x1E12, u16RegData);
+ }
+ }
+
+ kfree(gpioPIN);
+}
+
+static void _DrvMpTestItoShortTestMsg26xxmChangeANASetting(u8 nItemID)
+{
+ u16 SHORT_MAP_ANA1[7] = {0};
+ u16 SHORT_MAP_ANA2[1] = {0};
+ u16 SHORT_MAP_ANA3[21] = {0};
+ int i = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (nItemID == 1)
+ {
+ for (i = 0; i < 7; i++)
+ {
+ SHORT_MAP_ANA1[i] = short_ANA1_N1_X[i];
+ }
+
+ for (i = 0; i < 21; i++)
+ {
+ SHORT_MAP_ANA3[i] = short_ANA3_N1_X[i];
+ }
+
+ SHORT_MAP_ANA2[0] = short_ANA2_N1_X[0];
+ }
+ else if (nItemID == 2)
+ {
+ for (i = 0; i < 7; i++)
+ {
+ SHORT_MAP_ANA1[i] = short_ANA1_N2_X[i];
+ }
+
+ for (i = 0; i < 21; i++)
+ {
+ SHORT_MAP_ANA3[i] = short_ANA3_N2_X[i];
+ }
+
+ SHORT_MAP_ANA2[0] = short_ANA2_N2_X[0];
+ }
+ else if (nItemID == 3)
+ {
+ for (i = 0; i < 7; i++)
+ {
+ SHORT_MAP_ANA1[i] = short_ANA1_S1_X[i];
+ }
+
+ for (i = 0; i < 21; i++)
+ {
+ SHORT_MAP_ANA3[i] = short_ANA3_S1_X[i];
+ }
+
+ SHORT_MAP_ANA2[0] = short_ANA2_S1_X[0];
+ }
+ else if (nItemID == 4)
+ {
+ for (i = 0; i < 7; i++)
+ {
+ SHORT_MAP_ANA1[i] = short_ANA1_S2_X[i];
+ }
+
+ for (i = 0; i < 21; i++)
+ {
+ SHORT_MAP_ANA3[i] = short_ANA3_S2_X[i];
+ }
+
+ SHORT_MAP_ANA2[0] = short_ANA2_S2_X[0];
+ }
+
+ ///change ANA setting
+ {
+ _DrvMpTestItoTestSendDataIn(0x1178, 7, &SHORT_MAP_ANA1[0]); ///ANA1_3C_42
+ _DrvMpTestItoTestSendDataIn(0x1216, 1, &SHORT_MAP_ANA2[0]); ///ANA2_0B
+ _DrvMpTestItoTestSendDataIn(0x1006, 21, &SHORT_MAP_ANA3[0]); ///ANA3_03_17
+ }
+}
+
+static void _DrvMpTestItoShortTestMsg26xxmAnaFixPrs(u16 nOption)
+{
+ u16 nTemp = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nTemp = RegGet16BitValue(0x1208); //bank:ana2, addr:h000a
+ nTemp &= 0x00F1;
+ nTemp |= (u16)((nOption << 1) & 0x000E);
+ RegSet16BitValue(0x1208, nTemp);
+}
+
+static void _DrvMpTestItoShortTestMsg26xxmSetNoiseSensorMode(u8 nEnable)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (nEnable)
+ {
+ RegSet16BitValueOn(0x110E, BIT11);
+ RegSet16BitValueOff(0x1116, BIT2);
+ }
+ else
+ {
+ RegSet16BitValueOff(0x110E, BIT11);
+ }
+}
+
+static void _DrvMpTestItoShortTestMsg26xxmAndChangeCDtime(u16 nTime1, u16 nTime2)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x1224, nTime1);
+ RegSet16BitValue(0x122A, nTime2);
+}
+
+static void _DrvMpTestMsg26xxmItoShortTest(u8 nItemID)
+{
+ int i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ _DrvMpTestItoTestMsg26xxmMcuStop();
+ _DrvMpTestItoShortTestMsg26xxmSetPAD2GPO(nItemID);
+ _DrvMpTestItoShortTestMsg26xxmChangeANASetting(nItemID);
+ _DrvMpTestItoTestMsg26xxmAnaSwitchToMutual();
+ _DrvMpTestItoShortTestMsg26xxmAnaFixPrs(7);
+ _DrvMpTestItoTestMsg26xxmDisableFilterNoiseDetect();
+ _DrvMpTestItoShortTestMsg26xxmSetNoiseSensorMode(1);
+ _DrvMpTestItoShortTestMsg26xxmAndChangeCDtime(SHORT_Charge_X, SHORT_Dump1_X);
+ _DrvMpTestItoTestMsg26xxmAnaSwReset();
+ _DrvMpTestItoTestMsg26xxmGetDeltaC(_gTempDeltaC);
+
+ _DrvMpTestItoTestMsg26xxmMcuStop();
+ _DrvMpTestItoShortTestMsg26xxmSetPAD2GPO(nItemID);
+ _DrvMpTestItoShortTestMsg26xxmChangeANASetting(nItemID);
+ _DrvMpTestItoTestMsg26xxmAnaSwitchToMutual();
+ _DrvMpTestItoShortTestMsg26xxmAnaFixPrs(7);
+ _DrvMpTestItoTestMsg26xxmDisableFilterNoiseDetect();
+ _DrvMpTestItoShortTestMsg26xxmSetNoiseSensorMode(1);
+ _DrvMpTestItoShortTestMsg26xxmAndChangeCDtime(SHORT_Charge_X, SHORT_Dump2_X);
+ _DrvMpTestItoTestMsg26xxmAnaSwReset();
+ _DrvMpTestItoTestMsg26xxmGetDeltaC(_gDeltaC);
+
+ for (i = 0; i < MAX_MUTUAL_NUM ; i++)
+ {
+ if ((_gDeltaC[i] <= -(IIR_MAX)) || (_gTempDeltaC[i] <= -(IIR_MAX)) || (_gDeltaC[i] >= (IIR_MAX)) || (_gTempDeltaC[i] >= (IIR_MAX)))
+ {
+ _gDeltaC[i] = 0x7FFF;
+ }
+ else
+ {
+ _gDeltaC[i] = abs(_gDeltaC[i] - _gTempDeltaC[i]);
+ }
+ //DBG("ItemID%d, MUTUAL_NUM %d, _gDeltaC = %d\t", nItemID, i, _gDeltaC[i]);
+ }
+ DBG("\n");
+}
+
+static s32 _DrvMpTestItoShortTestCovertRValue(s32 nValue)
+{
+ if (nValue == 0)
+ {
+ nValue = 1;
+ }
+
+ if (nValue >= IIR_MAX)
+ {
+ return 0;
+ }
+
+ return ((500*11398) / (nValue));
+}
+
+static ItoTestResult_e _DrvMpTestItoShortTestMsg26xxmJudge(u8 nItemID)
+{
+ ItoTestResult_e nRetVal = ITO_TEST_OK;
+ u8 nTestPinLength = 0;
+ u16 i = 0;
+ u8 nGpioNum = 0;
+ u8* nTestGpio = NULL;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (nItemID == 1)
+ {
+ nGpioNum = SHORT_N1_TEST_NUMBER_X;
+ nTestGpio = kzalloc(sizeof(u16) * nGpioNum, GFP_KERNEL);
+
+ for (i = 0; i < nGpioNum; i++)
+ {
+ nTestGpio[i] = SHORT_N1_TEST_PIN_X[i];
+ }
+ }
+ else if (nItemID == 2)
+ {
+ nGpioNum = SHORT_N2_TEST_NUMBER_X;
+ nTestGpio = kzalloc(sizeof(u16) * nGpioNum, GFP_KERNEL);
+
+ for (i = 0; i < nGpioNum; i++)
+ {
+ nTestGpio[i] = SHORT_N2_TEST_PIN_X[i];
+ }
+ }
+ else if (nItemID == 3)
+ {
+ nGpioNum = SHORT_S1_TEST_NUMBER_X;
+ nTestGpio = kzalloc(sizeof(u16) * nGpioNum, GFP_KERNEL);
+
+ for (i = 0; i < nGpioNum; i++)
+ {
+ nTestGpio[i] = SHORT_S1_TEST_PIN_X[i];
+ }
+ }
+ else if (nItemID == 4)
+ {
+ nGpioNum = SHORT_S2_TEST_NUMBER_X;
+ nTestGpio = kzalloc(sizeof(u16) * nGpioNum, GFP_KERNEL);
+
+ for (i = 0; i < nGpioNum; i++)
+ {
+ nTestGpio[i] = SHORT_S2_TEST_PIN_X[i];
+ }
+ }
+
+ nTestPinLength = nGpioNum;
+
+ for (i = 0;i < nTestPinLength; i++)
+ {
+ _gShortTestChannel[i] = nTestGpio[i];
+
+ if (0 == _DrvMpTestItoTestCheckValueInRange(_gDeltaC[i], SHORT_VALUE, -SHORT_VALUE))
+ {
+ nRetVal = ITO_TEST_FAIL;
+ _gTestFailChannelCount++;
+ DBG("_gShortTestChannel i = %d, _gDeltaC = %d\t", i, _gDeltaC[i]);
+ }
+ }
+ kfree(nTestGpio);
+
+ return nRetVal;
+}
+
+static ItoTestResult_e _DrvMpTestMsg26xxmItoShortTestEntry(void)
+{
+ ItoTestResult_e nRetVal1 = ITO_TEST_OK, nRetVal2 = ITO_TEST_OK, nRetVal3 = ITO_TEST_OK, nRetVal4 = ITO_TEST_OK, nRetVal5 = ITO_TEST_OK;
+ u32 i = 0;
+ u32 j = 0;
+ u16 nTestPinCount = 0;
+ s32 nShortThreshold = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ //auto detetc fw version to decide switch fw mode
+ if (_gTestAutoSwitchFlag!=0)
+ {
+ _DrvMpTestItoTestMsg26xxmGetSwitchFlag();
+ }
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ _DrvMpTestItoTestMsg26xxmSwitchMode(_gTestSwitchMode, MUTUAL);
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ _gShortTestChannel[i] = 0;
+ }
+
+ for (i = 0; i < MAX_MUTUAL_NUM; i ++)
+ {
+ _gDeltaC[i] = 0;
+ }
+
+ _gSenseLineNum = _DrvMpTestItoTestAnaGetMutualChannelNum();
+ _gDriveLineNum = _DrvMpTestItoTestAnaGetMutualSubFrameNum();
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ _gShortTestChannel[i] = 0xff;
+ }
+
+ _gTestFailChannelCount = 0;
+
+ nTestPinCount = 0; // Reset nTestPinCount to 0 before test start
+
+ //N1_ShortTest
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ _DrvMpTestMsg26xxmItoShortTest(1);
+ }
+
+ nRetVal2 = _DrvMpTestItoShortTestMsg26xxmJudge(1);
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i++)
+ {
+ if (_gShortTestChannel[i] != 0)
+ {
+ nTestPinCount++;
+ }
+ }
+
+ for (i = 0; i < nTestPinCount; i++)
+ {
+ for (j = 0; j < _gSenseLineNum; j++)
+ {
+ if (_gShortTestChannel[i] == SENSE_X[j])
+ {
+ _gSenseR[j] = _DrvMpTestItoShortTestCovertRValue(_gDeltaC[i]);
+
+ DBG("_gSenseR[%d] = %d\t", j , _gSenseR[j]);
+ }
+ }
+ }
+ DBG("\n");
+
+ //clear
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ _gShortTestChannel[i] = 0xff;
+ }
+
+ nTestPinCount = 0;
+
+ //N2_ShortTest
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ _DrvMpTestMsg26xxmItoShortTest(2);
+ }
+
+ nRetVal3 = _DrvMpTestItoShortTestMsg26xxmJudge(2);
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i++)
+ {
+ if (_gShortTestChannel[i] != 0)
+ {
+ nTestPinCount++;
+ }
+ }
+
+ for (i = 0; i < nTestPinCount; i++)
+ {
+ for (j = 0; j < _gSenseLineNum; j++)
+ {
+ if (_gShortTestChannel[i] == SENSE_X[j])
+ {
+ _gSenseR[j] = _DrvMpTestItoShortTestCovertRValue(_gDeltaC[i]);
+
+ DBG("_gSenseR[%d] = %d\t", j , _gSenseR[j]);
+ }
+ }
+ }
+ DBG("\n");
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ _gShortTestChannel[i] = 0xff;
+ }
+ nTestPinCount = 0;
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ _DrvMpTestMsg26xxmItoShortTest(3);
+ }
+
+ nRetVal4 = _DrvMpTestItoShortTestMsg26xxmJudge(3);
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i++)
+ {
+ if (_gShortTestChannel[i] != 0)
+ {
+ nTestPinCount++;
+ }
+ }
+
+ for (i = 0; i < nTestPinCount; i++)
+ {
+ for (j = 0; j < _gDriveLineNum; j++)
+ {
+ if (_gShortTestChannel[i] == DRIVE_X[j])
+ {
+ _gDriveR[j] = _DrvMpTestItoShortTestCovertRValue(_gDeltaC[i]);
+ DBG("_gDriveR[%d] = %d\t", j , _gDriveR[j]);
+ }
+ }
+ }
+ DBG("\n");
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ _gShortTestChannel[i] = 0xff;
+ }
+ nTestPinCount = 0;
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ _DrvMpTestMsg26xxmItoShortTest(4);
+ }
+
+ nRetVal4 = _DrvMpTestItoShortTestMsg26xxmJudge(4);
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i++)
+ {
+ if (_gShortTestChannel[i] != 0)
+ {
+ nTestPinCount++;
+ }
+ }
+
+ for (i = 0; i < nTestPinCount; i++)
+ {
+ for (j = 0; j < _gDriveLineNum ; j++)
+ {
+ if (_gShortTestChannel[i] == DRIVE_X[j])
+ {
+ _gDriveR[j] = _DrvMpTestItoShortTestCovertRValue(_gDeltaC[i]);
+ DBG("_gDriveR[%d] = %d\t", j , _gDriveR[j]);
+ }
+ }
+ }
+ DBG("\n");
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ _gShortTestChannel[i] = 0xff;
+ }
+ nTestPinCount = 0;
+ nShortThreshold = _DrvMpTestItoShortTestCovertRValue(SHORT_VALUE);
+
+ for (i = 0; i < _gSenseLineNum; i++)
+ {
+ _gResult[i] = _gSenseR[i];
+ }
+
+ for (i = 0; i < _gDriveLineNum; i++)
+ {
+ _gResult[i + _gSenseLineNum] = _gDriveR[i];
+ }
+
+ for (i = 0; i < (_gSenseLineNum + _gDriveLineNum); i++)
+ {
+ if (_gResult[i] < nShortThreshold)
+ {
+ _gTestFailChannel[i] = 1;
+ }
+ else
+ {
+ _gTestFailChannel[i] = 0;
+ }
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(300);
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ DBG("short test end\n");
+
+ DBG("nRetVal1 = %d, nRetVal2 = %d, nRetVal3 = %d, nRetVal4 = %d, nRetVal5 = %d\n",nRetVal1,nRetVal2,nRetVal3,nRetVal4,nRetVal5);
+
+ if ((nRetVal1 != ITO_TEST_OK) && (nRetVal2 == ITO_TEST_OK) && (nRetVal3 == ITO_TEST_OK) && (nRetVal4 == ITO_TEST_OK) && (nRetVal5 == ITO_TEST_OK))
+ {
+ return ITO_TEST_GET_TP_TYPE_ERROR;
+ }
+ else if ((nRetVal1 == ITO_TEST_OK) && ((nRetVal2 != ITO_TEST_OK) || (nRetVal3 != ITO_TEST_OK) || (nRetVal4 != ITO_TEST_OK) || (nRetVal5 != ITO_TEST_OK)))
+ {
+ return -1;
+ }
+ else
+ {
+ return ITO_TEST_OK;
+ }
+}
+
+static void _DrvMpTestItoShortTestMsg28xxSetNoiseSensorMode(u8 nEnable)
+{
+ s16 j;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (nEnable)
+ {
+ RegSet16BitValueOn(0x1546, BIT4);
+ for (j = 0; j < 10; j++)
+ {
+ RegSet16BitValue(0x2148 + 2 * j, 0x0000);
+ }
+ RegSet16BitValue(0x215C, 0x1FFF);
+ }
+}
+
+static void _DrvMpTestItoShortTestMsg28xxAnaFixPrs(u16 nOption)
+{
+ u16 nRegData = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x0FE6, 0x0001);
+
+ nRegData = RegGet16BitValue(0x1008);
+ nRegData &= 0x00F1;
+ nRegData |= (u16)((nOption << 1) & 0x000E);
+ RegSet16BitValue(0x1008, nRegData);
+}
+
+static void _DrvMpTestItoShortTestMsg28xxAndChangeCDtime(u16 nTime1, u16 nTime2)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x1026, nTime1);
+ RegSet16BitValue(0x1030, nTime2);
+}
+
+static void _DrvMpTestItoShortTestMsg28xxChangeANASetting(void)
+{
+ int i, nMappingItem;
+ u8 nChipVer;
+
+
+ DBG("*** %s() ***\n", __func__);
+
+ // Stop mcu
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+
+ nChipVer = RegGetLByteValue(0x1ECE);
+ //uint chip_ver = Convert.ToUInt16((uint)regdata[0]); //for U01 (SF shift).
+
+ if (nChipVer != 0)
+ RegSetLByteValue(0x131E, 0x01);
+
+ for (nMappingItem = 0; nMappingItem < 6; nMappingItem++)
+ {
+ /// sensor mux sram read/write base address / write length
+ RegSetLByteValue(0x2192, 0x00);
+ RegSetLByteValue(0x2102, 0x01);
+ RegSetLByteValue(0x2102, 0x00);
+ RegSetLByteValue(0x2182, 0x08);
+ RegSetLByteValue(0x2180, 0x08 * nMappingItem);
+ RegSetLByteValue(0x2188, 0x01);
+
+ for (i = 0; i < 8; i++)
+ {
+ if (nMappingItem == 0 && nChipVer == 0x0)
+ {
+ RegSet16BitValue(0x218A, _gMuxMem_20_3E_0_Settings[2 * i]);
+ RegSet16BitValue(0x218C, _gMuxMem_20_3E_0_Settings[2 * i + 1]);
+ }
+ if ((nMappingItem == 1 && nChipVer == 0x0) || (nMappingItem == 0 && nChipVer != 0x0))
+ {
+ RegSet16BitValue(0x218A, _gMuxMem_20_3E_1_Settings[2 * i]);
+ RegSet16BitValue(0x218C, _gMuxMem_20_3E_1_Settings[2 * i + 1]);
+ }
+ if ((nMappingItem == 2 && nChipVer == 0x0) || (nMappingItem == 1 && nChipVer != 0x0))
+ {
+ RegSet16BitValue(0x218A, _gMuxMem_20_3E_2_Settings[2 * i]);
+ RegSet16BitValue(0x218C, _gMuxMem_20_3E_2_Settings[2 * i + 1]);
+ }
+ if ((nMappingItem == 3 && nChipVer == 0x0) || (nMappingItem == 2 && nChipVer != 0x0))
+ {
+ RegSet16BitValue(0x218A, _gMuxMem_20_3E_3_Settings[2 * i]);
+ RegSet16BitValue(0x218C, _gMuxMem_20_3E_3_Settings[2 * i + 1]);
+ }
+ if ((nMappingItem == 4 && nChipVer == 0x0) || (nMappingItem == 3 && nChipVer != 0x0))
+ {
+ RegSet16BitValue(0x218A, _gMuxMem_20_3E_4_Settings[2 * i]);
+ RegSet16BitValue(0x218C, _gMuxMem_20_3E_4_Settings[2 * i + 1]);
+ }
+ if ((nMappingItem == 5 && nChipVer == 0x0) || (nMappingItem == 4 && nChipVer != 0x0))
+ {
+ RegSet16BitValue(0x218A, _gMuxMem_20_3E_5_Settings[2 * i]);
+ RegSet16BitValue(0x218C, _gMuxMem_20_3E_5_Settings[2 * i + 1]);
+ }
+ if (nMappingItem == 5 && nChipVer != 0x0)
+ {
+ RegSet16BitValue(0x218A, _gMuxMem_20_3E_6_Settings[2 * i]);
+ RegSet16BitValue(0x218C, _gMuxMem_20_3E_6_Settings[2 * i + 1]);
+ }
+ }
+ }
+}
+
+static void _DrvMpTestItoReadSetting(u16 * pPad2Sense, u16 * pPad2Drive, u16 * pPad2GR)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ memcpy(_gMuxMem_20_3E_1_Settings, SHORT_N1_MUX_MEM_20_3E, sizeof(u16) * 16);
+ memcpy(_gMuxMem_20_3E_2_Settings, SHORT_N2_MUX_MEM_20_3E, sizeof(u16) * 16);
+ memcpy(_gMuxMem_20_3E_3_Settings, SHORT_S1_MUX_MEM_20_3E, sizeof(u16) * 16);
+ memcpy(_gMuxMem_20_3E_4_Settings, SHORT_S2_MUX_MEM_20_3E, sizeof(u16) * 16);
+
+ if(SHORT_TEST_5_TYPE != 0)
+ {
+ memcpy(_gMuxMem_20_3E_5_Settings, SHORT_X_MUX_MEM_20_3E, sizeof(u16) * 16);
+ }
+
+ memcpy(pPad2Sense, PAD_TABLE_SENSE, sizeof(u16) * _gSenseLineNum);
+ memcpy(pPad2Drive, PAD_TABLE_DRIVE, sizeof(u16) * _gDriveLineNum);
+
+ if (GR_NUM != 0)
+ {
+ memcpy(pPad2GR, PAD_TABLE_GR, sizeof(u16) * GR_NUM);
+ }
+}
+
+static s32 _DrvMpTestItoShortTestMsg28xxGetValueR(s32 * pTarget)
+{
+ s16 * pRawData = NULL;
+ u16 nSenNumBak = 0;
+ u16 nDrvNumBak = 0;
+ u16 nShift = 0;
+ s16 i, j;
+
+ DBG("*** %s() ***\n", __func__);
+
+ pRawData = kzalloc(sizeof(s16) * MAX_CHANNEL_SEN*2 * MAX_CHANNEL_DRV, GFP_KERNEL);
+
+ if (_DrvMpTestItoTestMsg28xxGetMutualOneShotRawIIR(pRawData, &nSenNumBak, &nDrvNumBak) < 0)
+ {
+ DBG("*** Msg28xx Short Test# GetMutualOneShotRawIIR failed! ***\n");
+ return -1;
+ }
+
+ for (i = 0; i < 5; i++)
+ {
+ for (j = 0; j < 13; j++)
+ {
+ nShift = (u16)(j + 13 * i);
+ pTarget[nShift] = pRawData[i*MAX_CHANNEL_DRV+j];
+ }
+ }
+
+ kfree(pRawData);
+
+ return 0;
+}
+
+static s32 _DrvMpTestMsg28xxItoShortTest(u8 nItemID)
+{
+ s16 i;
+ u8 nRegData = 0;
+ u16 nAfeCoef = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // Stop mcu
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+
+ ///set Subframe = 6 ; Sensor = 13
+ RegSetLByteValue(0x130A, 0x6D);
+ RegSetLByteValue(0x1103, 0x06);
+ RegSetLByteValue(0x1016, 0x0C);
+
+ RegSetLByteValue(0x1104, 0x0C);
+ RegSetLByteValue(0x100C, 0x0C);
+ RegSetLByteValue(0x1B10, 0x0C);
+
+ /// adc analog+digital pipe delay, 60= 13 AFE.
+ RegSetLByteValue(0x102F, 0x60);
+
+ ///trim: Fout 52M & 1.2V
+ RegSet16BitValue(0x1420, 0xA55A);//password
+ RegSet16BitValue(0x1428, 0xA55A);//password
+ RegSet16BitValue(0x1422, 0xFC4C);//go
+
+ _DrvMpTestItoShortTestMsg28xxSetNoiseSensorMode(1);
+ _DrvMpTestItoShortTestMsg28xxAnaFixPrs(3);
+ _DrvMpTestItoShortTestMsg28xxAndChangeCDtime(0x007E, 0x001F);
+
+ ///DAC overwrite
+ RegSet16BitValue(0x150C, 0x80A2); //bit15 //AE:3.5v for test
+ RegSet16BitValue(0x1520, 0xFFFF);//After DAC overwrite, output DC
+ RegSet16BitValue(0x1522, 0xFFFF);
+ RegSet16BitValue(0x1524, 0xFFFF);
+ RegSet16BitValue(0x1526, 0xFFFF);
+
+ /// all AFE Cfb use defalt (50p)
+ RegSet16BitValue(0x1508, 0x1FFF);// all AFE Cfb: SW control
+ RegSet16BitValue(0x1550, 0x0000);// all AFE Cfb use defalt (50p)
+
+ /// reg_afe_icmp disenable
+ RegSet16BitValue(0x1552, 0x0000);
+
+ /// reg_hvbuf_sel_gain
+ RegSet16BitValue(0x1564, 0x0077);
+
+ ///ADC: AFE Gain bypass
+ RegSet16BitValue(0x1260, 0x1FFF);
+
+ ///reg_sel_ros disenable
+ RegSet16BitValue(0x156A, 0x0000);
+
+ ///reg_adc_desp_invert disenable
+ RegSetLByteValue(0x1221, 0x00);
+
+
+ ///AFE coef
+ //protoHandle.MstarReadReg(mdkDevice, (uint)0x101A, ref regdata);
+ nRegData = RegGetLByteValue(0x101A);
+ nAfeCoef = 0x10000 / nRegData;
+ //protoHandle.MstarWriteReg_16(mdkDevice, (uint)0x13D6, AFE_coef);
+ RegSet16BitValue(0x13D6, nAfeCoef);
+
+ /// AFE gain = 1X
+ //RegSet16BitValue(0x1318, 0x4440);
+ //RegSet16BitValue(0x131A, 0x4444);
+ //RegSet16BitValue(0x13D6, 0x2000);
+
+ _DrvMpTestItoShortTestMsg28xxChangeANASetting();
+ _DrvMpTestItoTestMsg28xxAnaSwReset();
+
+ if (_DrvMpTestItoShortTestMsg28xxGetValueR(_gDeltaC)<0)
+ {
+ DBG("*** Msg28xx Short Test# GetValueR failed! ***\n");
+ return -1;
+ }
+ _ItoTestDebugShowArray(_gDeltaC, 128, -32, 10, 8);
+
+ for (i = 0; i < 65; i++) // 13 AFE * 5 subframe
+ {
+ if (_gDeltaC[i] <= -1000 || _gDeltaC[i] >= (IIR_MAX))
+ _gDeltaC[i] = 0x7FFF;
+ else
+ _gDeltaC[i] = abs(_gDeltaC[i]);
+ }
+ return 0;
+}
+
+static s32 _DrvMpTestItoShortTestReadTestPins(u8 nItemID, u16 * pTestPins)
+{
+ u16 nCount = 0;
+ s16 i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ switch (nItemID)
+ {
+ case 1:
+ case 11:
+ nCount = SHORT_N1_TEST_NUMBER;
+ memcpy(pTestPins, SHORT_N1_TEST_PIN, sizeof(u16) * nCount);
+ break;
+ case 2:
+ case 12:
+ nCount = SHORT_N2_TEST_NUMBER;
+ memcpy(pTestPins, SHORT_N2_TEST_PIN, sizeof(u16) * nCount);
+ break;
+ case 3:
+ case 13:
+ nCount = SHORT_S1_TEST_NUMBER;
+ memcpy(pTestPins, SHORT_S1_TEST_PIN, sizeof(u16) * nCount);
+ break;
+ case 4:
+ case 14:
+ nCount = SHORT_S2_TEST_NUMBER;
+ memcpy(pTestPins, SHORT_S2_TEST_PIN, sizeof(u16) * nCount);
+ break;
+
+ case 5:
+ case 15:
+ if(SHORT_TEST_5_TYPE != 0)
+ {
+ nCount = SHORT_X_TEST_NUMBER;
+ memcpy(pTestPins, SHORT_X_TEST_PIN, sizeof(u16) * nCount);
+ }
+ break;
+
+ case 0:
+ default:
+ return 0;
+ }
+
+ for (i = nCount; i < MAX_CHANNEL_NUM; i++)
+ {
+ pTestPins[i] = 0xFFFF; //PIN_NO_ERROR
+ }
+
+ return nCount;
+}
+
+static s32 _DrvMpTestItoShortTestMsg28xxJudge(u8 nItemID, /*s8 pNormalTestResult[][2],*/ u16 pTestPinMap[][13], u16 * pTestPinCount)
+{
+ s32 nRetVal = 0;
+ u16 nTestPins[MAX_CHANNEL_NUM];
+ s16 i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ *pTestPinCount = _DrvMpTestItoShortTestReadTestPins(nItemID, nTestPins);
+ //_ItoTestDebugShowArray(nTestPins, *pTestPinCount, 16, 10, 8);
+ if (*pTestPinCount == 0)
+ {
+ if (nItemID == 5 && SHORT_TEST_5_TYPE == 0)
+ {
+
+ }
+ else
+ {
+ DBG("*** Msg28xx Short Test# TestPinCount = 0 ***\n");
+ return -1;
+ }
+ }
+
+ /*
+ u16 nCountTestPin = 0;
+ for (i = 0; i < testPins.Length; i++)
+ {
+ if (pTestPins[i] != 0xFFFF)
+ nCountTestPin++;
+ }
+ */
+
+ for (i = (nItemID - 1) * 13; i < (13 * nItemID); i++)
+ {
+ _gResult[i] = _gDeltaC[i];
+ }
+
+ for (i = 0; i < *pTestPinCount; i++)
+ {
+ pTestPinMap[nItemID][i] = nTestPins[i];
+ if (0 == _DrvMpTestItoTestCheckValueInRange(_gResult[i + (nItemID - 1) * 13], SHORTVALUE, -1000)) //0: false 1: true
+ {
+ //pNormalTestResult[nItemID][0] = -1; //-1: failed 0: success
+ // //0: golden 1: ratio
+ DBG("*** Msg28xx Short Test# ShortTestMsg28xxJudge failed! ***\n");
+ nRetVal = -1;
+ }
+ }
+
+ DBG("*** Msg28xx Short Test# nItemID = %d ***\n", nItemID);
+ //_ItoTestDebugShowArray(pTestPinMap[nItemID], *pTestPinCount, 16, 10, 8);
+
+ return nRetVal;
+}
+
+static s32 _DrvMpTestItoShortTestMsg28xxCovertRValue(s32 nValue)
+{
+ if (nValue >= IIR_MAX)
+ {
+ return 0;
+ }
+
+ //return ((3.53 - 1.3) * 10 / (50 * (((float)nValue - 0 ) / 32768 * 1.1)));
+ return 223 * 32768 / (nValue * 550);
+}
+
+static s32 _DrvMpTestMsg28xxItoShortTestEntry(void)
+{
+ //ItoTestResult_e nRetVal1 = ITO_TEST_OK, nRetVal2 = ITO_TEST_OK, nRetVal3 = ITO_TEST_OK, nRetVal4 = ITO_TEST_OK, nRetVal5 = ITO_TEST_OK;
+ s16 i = 0, j = 0;
+ //u16 nTestPinCount = 0;
+ //s32 nShortThreshold = 0;
+ u16 nPad2Drive[DRIVE_NUM] = {0};
+ u16 nPad2Sense[SENSE_NUM] = {0};
+ u16 nPad2GR[MAX_CHANNEL_NUM] = {0};
+ s32 nResultTemp[(MAX_CHANNEL_SEN+MAX_CHANNEL_DRV)*2] = {0};
+
+ ///short test1 to 5.
+ //u16 nTestPinCount = 0;
+ u16 nTestItemLoop = 6;
+ u16 nTestItem = 0;
+ //s8 nNormalTestResult[8][2] = {0}; //0:golden 1:ratio
+ u16 nTestPinMap[6][13] = {{0}}; //6:max subframe 13:max afe
+ u16 nTestPinNum = 0;
+// s32 nThrs = 0;
+ u32 nRetVal = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ _gSenseLineNum = SENSE_NUM;
+ _gDriveLineNum = DRIVE_NUM;
+
+ DrvPlatformLyrDisableFingerTouchReport();
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ //reset_only
+ DbBusResetSlave();
+ DbBusEnterSerialDebugMode();
+ DbBusWaitMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ if(_DrvMpTestMsg28xxItoTestSwitchFwMode(MUTUAL_SINGLE_DRIVE) < 0)
+ {
+ DBG("*** Msg28xx Short Test# Switch FW mode failed! ***\n");
+ return -1;
+ }
+
+ _DrvMpTestItoReadSetting(nPad2Sense, nPad2Drive, nPad2GR);
+
+
+ //N1_ShortTest
+ if(_DrvMpTestMsg28xxItoShortTest(1) < 0)
+ {
+ DBG("*** Msg28xx Short Test# Get DeltaC failed! ***\n");
+ return -1;
+ }
+
+ for (nTestItem = 1; nTestItem < nTestItemLoop; nTestItem++)
+ {
+ DBG("*** Short test item %d ***\n", nTestItem);
+ if (_DrvMpTestItoShortTestMsg28xxJudge(nTestItem, /*nNormalTestResult,*/ nTestPinMap, &nTestPinNum) < 0)
+ {
+ DBG("*** Msg28xx Short Test# Item %d is failed! ***\n", nTestItem);
+ nRetVal = -1;
+ }
+
+ if (nTestItem == 1 || nTestItem == 2 || (nTestItem == 5 && SHORT_TEST_5_TYPE == 1))
+ {
+ for (i = 0; i < nTestPinNum; i++)
+ {
+ for (j = 0; j < _gSenseLineNum; j++)
+ {
+ if (nTestPinMap[nTestItem][i] == nPad2Sense[j])
+ {
+ //_gSenseR[j] = _DrvMpTestItoShortTestMsg28xxCovertRValue(_gResult[i + (nTestItem - 1) * 13]);
+ _gSenseR[j] = _gResult[i + (nTestItem - 1) * 13]; //change comparison way because float computing in driver is prohibited
+ }
+ }
+ }
+ }
+
+ if (nTestItem == 3 || nTestItem == 4 || (nTestItem == 5 && SHORT_TEST_5_TYPE == 2))
+ {
+ for (i = 0; i < nTestPinNum; i++)
+ {
+ for (j = 0; j < _gDriveLineNum; j++)
+ {
+ if (nTestPinMap[nTestItem][i] == nPad2Drive[j])
+ {
+ //_gDriveR[j] = _DrvMpTestItoShortTestMsg28xxCovertRValue(_gResult[i + (nTestItem - 1) * 13]);
+ _gDriveR[j] = _gResult[i + (nTestItem - 1) * 13]; //change comparison way because float computing in driver is prohibited
+ }
+ }
+ }
+ }
+
+ if (nTestItem == 5 && SHORT_TEST_5_TYPE == 3)
+ {
+ for (i = 0; i < nTestPinNum; i++)
+ {
+ for (j = 0; j < GR_NUM; j++)
+ {
+ if (nTestPinMap[nTestItem][i] == nPad2GR[j])
+ {
+ //_gGRR[j] = _DrvMpTestItoShortTestMsg28xxCovertRValue(_gResult[i + (nTestItem - 1) * 13]);
+ _gGRR[j] = _gResult[i + (nTestItem - 1) * 13]; //change comparison way because float computing in driver is prohibited
+ }
+ }
+ }
+ }
+ }
+
+ for (i = 0; i < _gSenseLineNum; i++)
+ {
+ nResultTemp[i] = _gSenseR[i];
+ }
+
+ //for (i = 0; i < _gDriveLineNum - 1; i++)
+ for (i = 0; i < _gDriveLineNum; i++)
+ {
+ nResultTemp[i + _gSenseLineNum] = _gDriveR[i];
+ }
+
+ //nThrs = _DrvMpTestItoShortTestMsg28xxCovertRValue(SHORTVALUE);
+ for (i = 0; i < _gSenseLineNum + _gDriveLineNum; i++)
+ {
+ if(nResultTemp[i] == 0)
+ {
+ _gResult[i] = _DrvMpTestItoShortTestMsg28xxCovertRValue(1);
+ }
+ else
+ {
+ _gResult[i] = _DrvMpTestItoShortTestMsg28xxCovertRValue(nResultTemp[i]);
+ }
+ }
+
+ _ItoTestDebugShowArray(_gResult, _gSenseLineNum + _gDriveLineNum, -32, 10, 8);
+ //for (i = 0; i < (_gSenseLineNum + _gDriveLineNum - 1); i++)
+ for (i = 0; i < (_gSenseLineNum + _gDriveLineNum); i++)
+ {
+ if (nResultTemp[i] > SHORTVALUE) //change comparison way because float computing in driver is prohibited
+ {
+ _gTestFailChannel[i] = 1;
+ _gTestFailChannelCount++;
+ nRetVal = -1;
+ }
+ else
+ {
+ _gTestFailChannel[i] = 0;
+ }
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(300);
+
+ DrvPlatformLyrEnableFingerTouchReport();
+ return nRetVal;
+}
+
+static s32 _DrvMpTestItoShortTest(void)
+{
+ s32 nRetVal = -1;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ return _DrvMpTestMsg26xxmItoShortTestEntry();
+ }
+ else if(g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ return _DrvMpTestMsg28xxItoShortTestEntry();
+ }
+
+ return nRetVal;
+}
+
+static s32 _DrvMpTestItoTestMsg26xxmGetWaterProofOneShotRawIir(u16 wszResultData[])
+{
+ u16 nRegData;
+ u16 i;
+ u16 nTemp;
+ u8 szDbBusTxData[3];
+ u32 nGetdataNum = 12;
+ u8 szShotData[24] = {0}; //Get 12 FIR data
+
+ DBG("*** %s() ***\n", __func__);
+
+ nTemp = RegGet16BitValue(0x3D08); //bank:intr_ctrl, addr:h0004
+ nTemp &= (~(BIT8));
+ RegSet16BitValue(0x3D08, nTemp);
+ //RegSet16BitValueOff(0x3D08, BIT8); ///FIQ_E_FRAME_READY_MASK
+
+ _DrvMpTestItoTestMsg26xxmEnableAdcOneShot();
+
+ nRegData = 0;
+ while (0x0000 == (nRegData & BIT8))
+ {
+ nRegData = RegGet16BitValue(0x3D18); //bank:intr_ctrl, addr:h000c
+ }
+
+ for (i = 0; i < nGetdataNum * 2; i ++)
+ {
+ szShotData[i] = 0;
+ }
+
+ mdelay(200);
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x13; //bank:fir, addr:h0021
+ szDbBusTxData[2] = 0x42;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3);
+ IicReadData(SLAVE_I2C_ID_DBBUS, &szShotData[0], 24); //12
+
+ for (i = 0; i < nGetdataNum; i ++)
+ {
+ nRegData = (u16)(szShotData[i * 2] | szShotData[i * 2 + 1] << 8);
+ wszResultData[i] = (short)nRegData;
+
+ //DBG("wszResultData[%d] = %x\t", i , wszResultData[i]);
+ }
+
+ nTemp = RegGet16BitValue(0x3D08); //bank:intr_ctrl, addr:h0004
+ nTemp |= (BIT8 | BIT4);
+ RegSet16BitValue(0x3D08, nTemp);
+
+ return 0;
+}
+
+static s32 _DrvMpTestItoTestMsg26xxmGetWaterProofDeltaC(s32 *pTarget)
+{
+ u16 wszRawData[12];
+ u16 i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (_DrvMpTestItoTestMsg26xxmGetWaterProofOneShotRawIir(wszRawData) < 0)
+ {
+ DBG("*** Msg26xxm WaterProof Test# GetMutualOneShotRawIIR failed! ***\n");
+ return -1;
+ }
+
+ for (i = 0; i < 12; i ++)
+ {
+ pTarget[i] = (s16)wszRawData[i];
+ }
+
+ return 0;
+}
+
+static s32 _DrvMpTestMsg26xxmItoWaterProofTest(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ // Stop mcu
+ //RegSet16BitValue(0x0FE6, 0x0001);
+
+ _DrvMpTestItoTestMsg26xxmAnaSwReset();
+
+ _DrvMpTestItoShortTestMsg26xxmAndChangeCDtime(WATERPROOF_Charge_X, WATERPROOF_Dump_X);
+
+ if(_DrvMpTestItoTestMsg26xxmGetWaterProofDeltaC(_gDeltaC) < 0)
+ {
+ DBG("*** Msg26xxm WaterProof Test# GetWaterDeltaC failed! ***\n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static s32 _DrvMpTestMsg26xxmItoWaterProofTestJudge(void)
+{
+ u16 i;
+ u32 nGetdataNum = 12;
+
+ DBG("*** %s() ***\n", __func__);
+
+ for (i = 0; i < nGetdataNum; i ++)
+ {
+ _gResultWater[i] = 0;
+ }
+
+ for (i = 0; i < nGetdataNum; i++)
+ {
+ _gResultWater[i] = _gDeltaC[i];
+ }
+
+ return 0;
+}
+
+s32 _DrvMpTestMsg26xxmItoWaterProofTestEntry(void)
+{
+ s32 nRetVal = 0;
+ u32 nRegData = 0;
+ u16 i = 0;
+ s32 nResultTemp[12] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ _gWaterProofNum = 12;
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ //auto detetc fw version to decide switch fw mode
+ if (_gTestAutoSwitchFlag!=0)
+ {
+ _DrvMpTestItoTestMsg26xxmGetSwitchFlag();
+ }
+
+ DbBusResetSlave();
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ if(_DrvMpTestItoTestMsg26xxmSwitchMode(_gTestSwitchMode, WATERPROOF) < 0)
+ {
+ DBG("*** Msg26xxm WaterProof Test# Switch FW mode failed! ***\n");
+ return -1;
+ }
+
+ _DrvMpTestItoTestMsg26xxmMcuStop();
+
+ nRegData = RegGet16BitValue(0x3CE4);
+
+ if (nRegData == 0x8bbd)//// if polling 0X8BBD, means the FW is NOT supporting WP.
+ {
+ DBG("*** Msg26xxm WaterProof Test# No supporting this function! ***\n");
+ return -1;
+ }
+
+ mdelay(10);
+
+ for (i = 0; i < MAX_MUTUAL_NUM; i ++)
+ {
+ _gTestFailChannel[i] = 0;
+ }
+
+ _gTestFailChannelCount = 0; // Reset _gTestFailChannelCount to 0 before test start
+
+ if(_DrvMpTestMsg26xxmItoWaterProofTest() < 0)
+ {
+ DBG("*** Msg26xxm WaterProof Test# Get DeltaC failed! ***\n");
+ return -1;
+ }
+
+ _DrvMpTestMsg26xxmItoWaterProofTestJudge();
+
+ for (i = 0; i < 12; i++)
+ {
+ nResultTemp[i] = _gResultWater[i];
+ }
+
+ _ItoTestDebugShowArray(_gResultWater, 12, -32, 10, 8);
+ for (i = 0; i < 12; i++)
+ {
+ if (nResultTemp[i] < WATERPROOFVALUE) //change comparison way because float computing in driver is prohibited
+ {
+ _gTestFailChannel[i] = 1;
+ _gTestFailChannelCount++;
+ nRetVal = -1;
+ }
+ else
+ {
+ _gTestFailChannel[i] = 0;
+ }
+ }
+
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(300);
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ return nRetVal;
+}
+
+static s32 _DrvMpTestItoWaterProofTestMsg28xxTriggerWaterProofOneShot(s16 * pResultData, u32 nDelay)
+{
+ u16 nAddr = 0x5000, nAddrNextSF = 0x1A4;
+ u16 nSF = 0, nAfeOpening = 0, nDriOpening = 0;
+ u16 nMaxDataNumOfOneSF = 0;
+ u16 nDriMode = 0;
+ u16 i;
+ u8 nRegData = 0;
+ u8 nShotData[390] = {0};//13*15*2
+ u16 nRegDataU16 = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nRegData = RegGetLByteValue(0x130A);
+ nSF = nRegData>>4;
+ nAfeOpening = nRegData & 0x0f;
+
+ if(nSF == 0)
+ {
+ return -1;
+ }
+
+ nRegData = RegGetLByteValue(0x100B);
+ nDriMode = nRegData;
+
+ nRegData = RegGetLByteValue(0x1312);
+ nDriOpening = nRegData;
+
+ DBG("*** Msg28xx WaterProof Test# TriggerWaterProofOneShot nSF=%d, nAfeOpening=%d, nDriMode=%d, nDriOpening=%d. ***\n", nSF, nAfeOpening, nDriMode, nDriOpening);
+
+ nMaxDataNumOfOneSF = nAfeOpening * nDriOpening;
+
+ RegSet16BitValueOff(0x3D08, BIT8); ///FIQ_E_FRAME_READY_MASK
+
+ ///polling frame-ready interrupt status
+ _DrvMpTestItoTestMsg28xxEnableAdcOneShot();
+
+ while (0x0000 == (nRegDataU16 & BIT8))
+ {
+ nRegDataU16 = RegGet16BitValue(0x3D18);
+ }
+
+ RegSet16BitValueOn(0x3D08, BIT8); ///FIQ_E_FRAME_READY_MASK
+ RegSet16BitValueOn(0x3D08, BIT4); ///FIQ_E_TIMER0_MASK
+
+ if (PATTERN_TYPE == 1) // for short test
+ {
+ //s16 nShortResultData[nSF][nAfeOpening];
+
+ /// get ALL raw data
+ _DrvMpTestItoTestDBBusReadDQMemStart();
+ RegGetXBitValue(nAddr, nShotData, 16, MAX_I2C_TRANSACTION_LENGTH_LIMIT);
+ _DrvMpTestItoTestDBBusReadDQMemEnd();
+
+ //_ItoTestDebugShowArray(nShotData, 26, 8, 16, 16);
+ for (i = 0; i < 8; i++)
+ {
+ pResultData[i] = (s16)(nShotData[2 * i] | nShotData[2 * i + 1] << 8);
+ }
+ }
+ else if(PATTERN_TYPE == 3 || PATTERN_TYPE == 4)// for open test
+ {
+ //s16 nOpenResultData[nSF * nAfeOpening][nDriOpening];
+
+ if(nSF >4)
+ nSF = 4;
+
+ /// get ALL raw data, combine and handle datashift.
+ for (i = 0; i < nSF; i++)
+ {
+ _DrvMpTestItoTestDBBusReadDQMemStart();
+ RegGetXBitValue(nAddr + i * nAddrNextSF, nShotData, 16, MAX_I2C_TRANSACTION_LENGTH_LIMIT);
+ _DrvMpTestItoTestDBBusReadDQMemEnd();
+
+ //_ItoTestDebugShowArray(nShotData, 390, 8, 10, 16);
+ pResultData[2 * i] = (s16)(nShotData[4 * i] | nShotData[4 * i + 1] << 8);
+ pResultData[2 * i + 1] = (s16)(nShotData[4 * i + 2] | nShotData[4 * i + 3] << 8);
+ }
+ }
+ else
+ {
+ return -1;
+ }
+
+ return 0;
+}
+
+static s32 _DrvMpTestItoWaterProofTesMsg28xxtGetWaterProofOneShotRawIIR(s16 * pRawDataWP, u32 nDelay)
+{
+ return _DrvMpTestItoWaterProofTestMsg28xxTriggerWaterProofOneShot(pRawDataWP, nDelay);
+}
+
+static s32 _DrvMpTestItoWaterProofTestMsg28xxGetDeltaCWP(s32 *pTarget, s8 nSwap, u32 nDelay)
+{
+ s16 nRawDataWP[12] = {0};
+ s16 i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if(_DrvMpTestItoWaterProofTesMsg28xxtGetWaterProofOneShotRawIIR(nRawDataWP, nDelay) < 0)
+ {
+ DBG("*** Msg28xx Open Test# GetMutualOneShotRawIIR failed! ***\n");
+ return -1;
+ }
+
+ for (i = 0; i < _gWaterProofNum; i++)
+ {
+ pTarget[i] = nRawDataWP[i];
+ }
+
+ return 0;
+}
+
+static s32 _DrvMpTestMsg28xxItoWaterProofTest(u32 nDelay)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ // Stop mcu
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+ _DrvMpTestItoTestMsg28xxAnaSwReset();
+
+ if (_DrvMpTestItoWaterProofTestMsg28xxGetDeltaCWP(_gDeltaCWater, -1, nDelay)<0)
+ {
+ DBG("*** Msg28xx WaterProof Test# GetDeltaCWP failed! ***\n");
+ return -1;
+ }
+
+ _ItoTestDebugShowArray(_gDeltaCWater, 12, -32, 10, 16);
+
+ return 0;
+}
+
+static void _DrvMpTestMsg28xxItoWaterProofTestMsgJudge(void)
+{
+ int i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ for (i = 0; i < _gWaterProofNum; i++)
+ {
+ _gResultWater[i] = abs(_gDeltaCWater[i]);
+ }
+}
+
+static s32 _DrvMpTestMsg28xxItoWaterProofTestEntry(void)
+{
+ s16 i = 0;
+ u32 nRetVal = 0;
+ u16 nRegDataWP = 0;
+ u32 nDelay = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ _gWaterProofNum = 12;
+
+ DrvPlatformLyrDisableFingerTouchReport();
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ //reset_only
+ DbBusResetSlave();
+ DbBusEnterSerialDebugMode();
+ DbBusWaitMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ if(_DrvMpTestMsg28xxItoTestSwitchFwMode(WATERPROOF) < 0)
+ {
+ DBG("*** Msg28xx WaterProof Test# Switch FW mode failed! ***\n");
+ return -1;
+ }
+
+ nRegDataWP = RegGet16BitValue(0x1402);
+ if(nRegDataWP == 0x8BBD)
+ {
+ DBG("*** Msg28xx WaterProof Test# FW don't support waterproof! ***\n");
+ }
+
+ if(_DrvMpTestMsg28xxItoWaterProofTest(nDelay) < 0)
+ {
+ DBG("*** Msg28xx WaterProof Test# Get DeltaC failed! ***\n");
+ return -1;
+ }
+
+ _DrvMpTestMsg28xxItoWaterProofTestMsgJudge();
+
+ for (i = 0; i < _gWaterProofNum; i++)
+ {
+ if (_gResultWater[i] > WATERVALUE) //change comparison way because float computing in driver is prohibited
+ {
+ _gTestFailChannel[i] = 1;
+ _gTestFailChannelCount++;
+ nRetVal = -1;
+ }
+ else
+ {
+ _gTestFailChannel[i] = 0;
+ }
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(300);
+
+ DrvPlatformLyrEnableFingerTouchReport();
+ return nRetVal;
+}
+
+static s32 _DrvMpTestItoWaterProofTest(void)
+{
+ s32 nRetVal = -1;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if(g_ChipType == CHIP_TYPE_MSG26XXM)
+ {
+ return _DrvMpTestMsg26xxmItoWaterProofTestEntry();
+ }
+ else if(g_ChipType == CHIP_TYPE_MSG28XX)
+ {
+ return _DrvMpTestMsg28xxItoWaterProofTestEntry();
+ }
+
+ return nRetVal;
+}
+
+static void _DrvMpTestItoTestDoWork(struct work_struct *pWork)
+{
+ s32 nRetVal = 0;
+
+ DBG("*** %s() _gIsInMpTest = %d, _gTestRetryCount = %d ***\n", __func__, _gIsInMpTest, _gTestRetryCount);
+
+ if (_gItoTestMode == ITO_TEST_MODE_OPEN_TEST)
+ {
+ nRetVal = _DrvMpTestItoOpenTest();
+ }
+ else if (_gItoTestMode == ITO_TEST_MODE_SHORT_TEST)
+ {
+ nRetVal = _DrvMpTestItoShortTest();
+ }
+ else if (_gItoTestMode == ITO_TEST_MODE_WATERPROOF_TEST)
+ {
+ nRetVal = _DrvMpTestItoWaterProofTest();
+ }
+ else
+ {
+ DBG("*** Undefined Mp Test Mode = %d ***\n", _gItoTestMode);
+ return;
+ }
+
+ DBG("*** ctp mp test result = %d ***\n", nRetVal);
+
+ if (nRetVal == 0)
+ {
+ _gCtpMpTestStatus = ITO_TEST_OK; //PASS
+ _gIsInMpTest = 0;
+ DBG("mp test success\n");
+ }
+ else
+ {
+ _gTestRetryCount --;
+ if (_gTestRetryCount > 0)
+ {
+ DBG("_gTestRetryCount = %d\n", _gTestRetryCount);
+ queue_work(_gCtpMpTestWorkQueue, &_gCtpItoTestWork);
+ }
+ else
+ {
+ if (nRetVal == -1)
+ {
+ _gCtpMpTestStatus = ITO_TEST_FAIL;
+ }
+ else
+ {
+ _gCtpMpTestStatus = ITO_TEST_UNDEFINED_ERROR;
+ }
+
+ _gIsInMpTest = 0;
+ DBG("mp test failed\n");
+ }
+ }
+}
+
+/*=============================================================*/
+// GLOBAL FUNCTION DEFINITION
+/*=============================================================*/
+
+s32 DrvMpTestGetTestResult(void)
+{
+ DBG("*** %s() ***\n", __func__);
+ DBG("_gCtpMpTestStatus = %d\n", _gCtpMpTestStatus);
+
+ return _gCtpMpTestStatus;
+}
+
+void DrvMpTestGetTestFailChannel(ItoTestMode_e eItoTestMode, u8 *pFailChannel, u32 *pFailChannelCount)
+{
+ u32 i;
+
+ DBG("*** %s() ***\n", __func__);
+ DBG("_gTestFailChannelCount = %d\n", _gTestFailChannelCount);
+
+ for (i = 0; i < MAX_MUTUAL_NUM; i ++)
+ {
+ pFailChannel[i] = _gTestFailChannel[i];
+ }
+
+ *pFailChannelCount = MAX_MUTUAL_NUM; // Return the test result of all channels, APK will filter out the fail channels.
+}
+
+void DrvMpTestGetTestDataLog(ItoTestMode_e eItoTestMode, u8 *pDataLog, u32 *pLength)
+{
+ u32 i, j, k;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (eItoTestMode == ITO_TEST_MODE_OPEN_TEST)
+ {
+ k = 0;
+
+ for (j = 0; j < _gDriveLineNum; j ++)
+// for (j = 0; j < (_gDriveLineNum-1); j ++)
+ {
+ for (i = 0; i < _gSenseLineNum; i ++)
+ {
+// DBG("\nDrive%d, Sense%d, Value = %d\t", j, i, _gResult[i * _gDriveLineNum + j]); // add for debug
+
+ if (_gResult[i * _gDriveLineNum + j] >= 0)
+ {
+ pDataLog[k*5] = 0; // + : a positive number
+ }
+ else
+ {
+ pDataLog[k*5] = 1; // - : a negative number
+ }
+
+ pDataLog[k*5+1] = (_gResult[i * _gDriveLineNum + j] >> 24) & 0xFF;
+ pDataLog[k*5+2] = (_gResult[i * _gDriveLineNum + j] >> 16) & 0xFF;
+ pDataLog[k*5+3] = (_gResult[i * _gDriveLineNum + j] >> 8) & 0xFF;
+ pDataLog[k*5+4] = (_gResult[i * _gDriveLineNum + j]) & 0xFF;
+
+ k ++;
+ }
+ }
+
+ DBG("\nk = %d\n", k);
+
+ *pLength = k*5;
+ }
+ else if (eItoTestMode == ITO_TEST_MODE_SHORT_TEST)
+ {
+ k = 0;
+
+ for (i = 0; i < (_gDriveLineNum-1 + _gSenseLineNum); i++)
+ {
+ if (_gResult[i] >= 0)
+ {
+ pDataLog[k*5] = 0; // + : a positive number
+ }
+ else
+ {
+ pDataLog[k*5] = 1; // - : a negative number
+ }
+
+ pDataLog[k*5+1] = (_gResult[i] >> 24) & 0xFF;
+ pDataLog[k*5+2] = (_gResult[i] >> 16) & 0xFF;
+ pDataLog[k*5+3] = (_gResult[i] >> 8) & 0xFF;
+ pDataLog[k*5+4] = (_gResult[i]) & 0xFF;
+ k ++;
+ }
+
+ DBG("\nk = %d\n", k);
+
+ *pLength = k*5;
+ }
+ else if (eItoTestMode == ITO_TEST_MODE_WATERPROOF_TEST)
+ {
+ k = 0;
+
+ for (i = 0; i < _gWaterProofNum; i++)
+ {
+ if (_gResultWater[i] >= 0)
+ {
+ pDataLog[k*5] = 0; // + : a positive number
+ }
+ else
+ {
+ pDataLog[k*5] = 1; // - : a negative number
+ }
+
+ pDataLog[k*5+1] = (_gResultWater[i] >> 24) & 0xFF;
+ pDataLog[k*5+2] = (_gResultWater[i] >> 16) & 0xFF;
+ pDataLog[k*5+3] = (_gResultWater[i] >> 8) & 0xFF;
+ pDataLog[k*5+4] = (_gResultWater[i]) & 0xFF;
+ k ++;
+ }
+
+ DBG("\nk = %d\n", k);
+
+ *pLength = k*5;
+ }
+ else
+ {
+ DBG("*** Undefined MP Test Mode ***\n");
+ }
+}
+
+void DrvMpTestGetTestScope(TestScopeInfo_t *pInfo)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ pInfo->nMy = _gDriveLineNum;
+ pInfo->nMx = _gSenseLineNum;
+
+ DBG("*** My = %d ***\n", pInfo->nMy);
+ DBG("*** Mx = %d ***\n", pInfo->nMx);
+}
+
+void DrvMpTestScheduleMpTestWork(ItoTestMode_e eItoTestMode)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (_gIsInMpTest == 0)
+ {
+ DBG("ctp mp test start\n");
+
+ _gItoTestMode = eItoTestMode;
+ _gIsInMpTest = 1;
+ _gTestRetryCount = CTP_MP_TEST_RETRY_COUNT;
+ _gCtpMpTestStatus = ITO_TEST_UNDER_TESTING;
+
+ queue_work(_gCtpMpTestWorkQueue, &_gCtpItoTestWork);
+ }
+}
+
+void DrvMpTestCreateMpTestWorkQueue(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ _gCtpMpTestWorkQueue = create_singlethread_workqueue("ctp_mp_test");
+ INIT_WORK(&_gCtpItoTestWork, _DrvMpTestItoTestDoWork);
+}
+
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
\ No newline at end of file diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_mutual_mp_test.h b/drivers/input/touchscreen/msg2233/mstar_drv_mutual_mp_test.h new file mode 100644 index 00000000..c1ca9e48 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_mutual_mp_test.h @@ -0,0 +1,94 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_mutual_mp_test.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_MUTUAL_MP_TEST_H__
+#define __MSTAR_DRV_MUTUAL_MP_TEST_H__
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+#include "mstar_drv_common.h"
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR CONSTANT DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+#define MAX_CHANNEL_NUM 38
+#define MAX_CHANNEL_DRV 30
+#define MAX_CHANNEL_SEN 20
+#define MAX_MUTUAL_NUM (MAX_CHANNEL_DRV * MAX_CHANNEL_SEN)
+#define ANA3_MUTUAL_CSUB_NUMBER (192) //192 = 14 * 13 + 10
+#define ANA4_MUTUAL_CSUB_NUMBER (MAX_MUTUAL_NUM - ANA3_MUTUAL_CSUB_NUMBER) //200 = 392 - 192
+#define FILTER1_MUTUAL_DELTA_C_NUMBER (190) //190 = (6 * 14 + 11) * 2
+#define FILTER2_MUTUAL_DELTA_C_NUMBER (594) //594 = (MAX_MUTUAL_NUM - (6 * 14 + 11)) * 2
+
+#define FIR_THRESHOLD 6553
+#define FIR_RATIO 50 //25
+
+#define IIR_MAX 32600
+#define SHORT_VALUE 2000
+#define PIN_GUARD_RING (38)
+
+#define CTP_MP_TEST_RETRY_COUNT (3)
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR MACRO DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+/* DATA TYPE DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+typedef struct
+{
+ u8 nMy;
+ u8 nMx;
+} TestScopeInfo_t;
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL VARIABLE DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL FUNCTION DECLARATION */
+/*--------------------------------------------------------------------------*/
+
+extern void DrvMpTestCreateMpTestWorkQueue(void);
+extern void DrvMpTestGetTestDataLog(ItoTestMode_e eItoTestMode, u8 *pDataLog, u32 *pLength);
+extern void DrvMpTestGetTestFailChannel(ItoTestMode_e eItoTestMode, u8 *pFailChannel, u32 *pFailChannelCount);
+extern s32 DrvMpTestGetTestResult(void);
+extern void DrvMpTestGetTestScope(TestScopeInfo_t *pInfo);
+extern void DrvMpTestScheduleMpTestWork(ItoTestMode_e eItoTestMode);
+
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+
+#endif /* __MSTAR_DRV_MUTUAL_MP_TEST_H__ */
\ No newline at end of file diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_platform_interface.c b/drivers/input/touchscreen/msg2233/mstar_drv_platform_interface.c new file mode 100644 index 00000000..7b9d8457 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_platform_interface.c @@ -0,0 +1,448 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_platform_interface.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include "mstar_drv_platform_interface.h"
+#include "mstar_drv_main.h"
+#include "mstar_drv_ic_fw_porting_layer.h"
+#include "mstar_drv_platform_porting_layer.h"
+#include "mstar_drv_utility_adaption.h"
+#include <linux/irq.h>
+
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+#include "mstar_drv_hotknot.h"
+#endif //CONFIG_ENABLE_HOTKNOT
+
+/*=============================================================*/
+// EXTERN VARIABLE DECLARATION
+/*=============================================================*/
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+extern u32 g_GestureWakeupMode[2];
+extern u8 g_GestureWakeupFlag;
+
+extern int _gIrq;
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+extern u8 g_GestureDebugFlag;
+extern u8 g_GestureDebugMode;
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+extern u8 g_EnableTpProximity;
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+extern u8 g_IsEnableGloveMode;
+extern u8 g_IsGloveModeOpen;
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+extern u8 g_IsUpdateFirmware;
+extern u8 *_gFwVersion;
+
+/*=============================================================*/
+// GLOBAL VARIABLE DEFINITION
+/*=============================================================*/
+
+extern struct input_dev *g_InputDevice;
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+extern u8 g_HotKnotState;
+extern u32 SLAVE_I2C_ID_DWI2C;
+#endif //CONFIG_ENABLE_HOTKNOT
+
+extern u8 IS_FIRMWARE_DATA_LOG_ENABLED;
+
+/*=============================================================*/
+// LOCAL VARIABLE DEFINITION
+/*=============================================================*/
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+static u8 _gAMStartCmd[4] = {HOTKNOT_SEND, ADAPTIVEMOD_BEGIN, 0, 0};
+#endif //CONFIG_ENABLE_HOTKNOT
+
+/*=============================================================*/
+// GLOBAL FUNCTION DEFINITION
+/*=============================================================*/
+
+#ifdef CONFIG_ENABLE_NOTIFIER_FB
+int MsDrvInterfaceTouchDeviceFbNotifierCallback(struct notifier_block *pSelf, unsigned long nEvent, void *pData)
+{
+ struct fb_event *pEventData = pData;
+ int *pBlank;
+
+ if (pEventData && pEventData->data && nEvent == FB_EVENT_BLANK)
+ {
+ pBlank = pEventData->data;
+
+ if (*pBlank == FB_BLANK_UNBLANK)
+ {
+ DBG("*** %s() TP Resume ***\n", __func__);
+
+ if (g_IsUpdateFirmware != 0) // Check whether update frimware by sw id is finished
+ {
+ DBG("Not Allow to power on/off touch ic while update firmware by sw id.\n");
+ return 0;
+ }
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+ if (g_EnableTpProximity == 1)
+ {
+ DBG("g_EnableTpProximity = %d\n", g_EnableTpProximity);
+ return 0;
+ }
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE && g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_AFTER_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ if (g_GestureDebugMode == 1)
+ {
+ DrvIcFwLyrCloseGestureDebugMode();
+ }
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+ if (g_GestureWakeupFlag == 1)
+ {
+ DrvIcFwLyrCloseGestureWakeup();
+ }
+ else
+ {
+ DrvPlatformLyrEnableFingerTouchReport();
+ }
+ }
+#ifdef CONFIG_ENABLE_HOTKNOT
+ else // Enable touch in hotknot transfer mode
+ {
+ DrvPlatformLyrEnableFingerTouchReport();
+ }
+#endif //CONFIG_ENABLE_HOTKNOT
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE && g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_AFTER_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ DrvPlatformLyrTouchDevicePowerOn();
+ }
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+ if (g_IsEnableGloveMode == 1)
+ {
+ if (g_IsGloveModeOpen == 0)
+ {
+ DrvIcFwCtrlOpenGloveMode();
+ }
+ }
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+ if (IS_FIRMWARE_DATA_LOG_ENABLED)
+ {
+ DrvIcFwLyrRestoreFirmwareModeToLogDataMode(); // Mark this function call for avoiding device driver may spend longer time to resume from suspend state.
+ } //IS_FIRMWARE_DATA_LOG_ENABLED
+
+#ifndef CONFIG_ENABLE_GESTURE_WAKEUP
+ DrvPlatformLyrEnableFingerTouchReport();
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+ }
+ else if (*pBlank == FB_BLANK_POWERDOWN)
+ {
+ DBG("*** %s() TP Suspend ***\n", __func__);
+
+ if (g_IsUpdateFirmware != 0) // Check whether update frimware by sw id is finished
+ {
+ DBG("Not Allow to power on/off touch ic while update firmware by sw id.\n");
+ return 0;
+ }
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+ if (g_EnableTpProximity == 1)
+ {
+ DBG("g_EnableTpProximity = %d\n", g_EnableTpProximity);
+ return 0;
+ }
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE && g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_AFTER_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ if (g_GestureWakeupMode[0] != 0x00000000 || g_GestureWakeupMode[1] != 0x00000000)
+ {
+ DrvIcFwLyrOpenGestureWakeup(&g_GestureWakeupMode[0]);
+ return 0;
+ }
+ }
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState == HOTKNOT_BEFORE_TRANS_STATE || g_HotKnotState == HOTKNOT_TRANS_STATE || g_HotKnotState == HOTKNOT_AFTER_TRANS_STATE)
+ {
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &_gAMStartCmd[0], 4);
+ }
+#endif //CONFIG_ENABLE_HOTKNOT
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+ if (g_IsEnableGloveMode == 1)
+ {
+ if (g_IsGloveModeOpen == 1)
+ {
+ DrvIcFwCtrlCloseGloveMode();
+ }
+ }
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+ DrvPlatformLyrFingerTouchReleased(0, 0); // Send touch end for clearing point touch
+ input_sync(g_InputDevice);
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE && g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_AFTER_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ DrvPlatformLyrTouchDevicePowerOff();
+ }
+ }
+ }
+
+ return 0;
+}
+
+#else
+
+void MsDrvInterfaceTouchDeviceSuspend(struct early_suspend *pSuspend)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_IsUpdateFirmware != 0) // Check whether update frimware by sw id is finished
+ {
+ DBG("Not Allow to power on/off touch ic while update firmware by sw id.\n");
+ return;
+ }
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+ if (g_EnableTpProximity == 1)
+ {
+ DBG("g_EnableTpProximity = %d\n", g_EnableTpProximity);
+ return;
+ }
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ irq_set_irq_type(_gIrq,IRQF_TRIGGER_HIGH | IRQF_NO_SUSPEND | IRQF_ONESHOT);
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE && g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_AFTER_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ if (g_GestureWakeupMode[0] != 0x00000000 || g_GestureWakeupMode[1] != 0x00000000)
+ {
+ DrvIcFwLyrOpenGestureWakeup(&g_GestureWakeupMode[0]);
+ return;
+ }
+ }
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState == HOTKNOT_BEFORE_TRANS_STATE || g_HotKnotState == HOTKNOT_TRANS_STATE || g_HotKnotState == HOTKNOT_AFTER_TRANS_STATE)
+ {
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &_gAMStartCmd[0], 4);
+ }
+#endif //CONFIG_ENABLE_HOTKNOT
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+ if (g_IsEnableGloveMode == 1)
+ {
+ if (g_IsGloveModeOpen == 1)
+ {
+ DrvIcFwCtrlCloseGloveMode();
+ }
+ }
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+ DrvPlatformLyrFingerTouchReleased(0, 0); // Send touch end for clearing point touch
+ input_sync(g_InputDevice);
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE && g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_AFTER_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ DrvPlatformLyrTouchDevicePowerOff();
+ }
+}
+
+void MsDrvInterfaceTouchDeviceResume(struct early_suspend *pSuspend)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_IsUpdateFirmware != 0) // Check whether update frimware by sw id is finished
+ {
+ DBG("Not Allow to power on/off touch ic while update firmware by sw id.\n");
+ return;
+ }
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+ if (g_EnableTpProximity == 1)
+ {
+ DBG("g_EnableTpProximity = %d\n", g_EnableTpProximity);
+ return;
+ }
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+ irq_set_irq_type(_gIrq,IRQF_TRIGGER_RISING | IRQF_NO_SUSPEND | IRQF_ONESHOT);
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE && g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_AFTER_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ if (g_GestureDebugMode == 1)
+ {
+ DrvIcFwLyrCloseGestureDebugMode();
+ }
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+ if (g_GestureWakeupFlag == 1)
+ {
+ DrvIcFwLyrCloseGestureWakeup();
+ }
+ else
+ {
+ DrvPlatformLyrEnableFingerTouchReport();
+ }
+ }
+#ifdef CONFIG_ENABLE_HOTKNOT
+ else // Enable touch in hotknot transfer mode
+ {
+ DrvPlatformLyrEnableFingerTouchReport();
+ }
+#endif //CONFIG_ENABLE_HOTKNOT
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE && g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_AFTER_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ DrvPlatformLyrTouchDevicePowerOn();
+ }
+
+#ifdef CONFIG_ENABLE_GLOVE_MODE
+ if (g_IsEnableGloveMode == 1)
+ {
+ if (g_IsGloveModeOpen == 0)
+ {
+ DrvIcFwCtrlOpenGloveMode();
+ }
+ }
+#endif //CONFIG_ENABLE_GLOVE_MODE
+
+ if (IS_FIRMWARE_DATA_LOG_ENABLED)
+ {
+ DrvIcFwLyrRestoreFirmwareModeToLogDataMode(); // Mark this function call for avoiding device driver may spend longer time to resume from suspend state.
+ } //IS_FIRMWARE_DATA_LOG_ENABLED
+
+#ifndef CONFIG_ENABLE_GESTURE_WAKEUP
+ DrvPlatformLyrEnableFingerTouchReport();
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+}
+
+#endif //CONFIG_ENABLE_NOTIFIER_FB
+
+/* probe function is used for matching and initializing input device */
+s32 /*__devinit*/ MsDrvInterfaceTouchDeviceProbe(struct i2c_client *pClient, const struct i2c_device_id *pDeviceId)
+{
+ s32 nRetVal = 0;
+ u16 nMajor = 0, nMinor = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DrvPlatformLyrInputDeviceInitialize(pClient);
+
+ DrvPlatformLyrTouchDeviceRequestGPIO();
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+ DrvPlatformLyrTouchDeviceRegulatorPowerOn();
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+ DrvPlatformLyrTouchDevicePowerOn();
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaAlloc();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ nRetVal = DrvMainTouchDeviceInitialize();
+ if (nRetVal == -ENODEV)
+ {
+ DrvPlatformLyrTouchDeviceRemove(pClient);
+ return nRetVal;
+ }
+
+ DrvPlatformLyrTouchDeviceRegisterFingerTouchInterruptHandler();
+
+ DrvPlatformLyrTouchDeviceRegisterEarlySuspend();
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+ DrvIcFwLyrCheckFirmwareUpdateBySwId();
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+ DBG("*** MStar touch driver registered ***\n");
+
+ //DrvIcFwLyrGetCustomerFirmwareVersion(&nMajor, &nMinor, &_gFwVersion);
+ return nRetVal;
+}
+
+/* remove function is triggered when the input device is removed from input sub-system */
+s32 /*__devexit*/ MsDrvInterfaceTouchDeviceRemove(struct i2c_client *pClient)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ return DrvPlatformLyrTouchDeviceRemove(pClient);
+}
+
+void MsDrvInterfaceTouchDeviceSetIicDataRate(struct i2c_client *pClient, u32 nIicDataRate)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ DrvPlatformLyrSetIicDataRate(pClient, nIicDataRate);
+}
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_platform_interface.h b/drivers/input/touchscreen/msg2233/mstar_drv_platform_interface.h new file mode 100644 index 00000000..99915e9c --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_platform_interface.h @@ -0,0 +1,50 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_platform_interface.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_PLATFORM_INTERFACE_H__
+#define __MSTAR_DRV_PLATFORM_INTERFACE_H__
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+#include "mstar_drv_common.h"
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL FUNCTION DECLARATION */
+/*--------------------------------------------------------------------------*/
+
+extern s32 /*__devinit*/ MsDrvInterfaceTouchDeviceProbe(struct i2c_client *pClient, const struct i2c_device_id *pDeviceId);
+extern s32 /*__devexit*/ MsDrvInterfaceTouchDeviceRemove(struct i2c_client *pClient);
+#ifdef CONFIG_ENABLE_NOTIFIER_FB
+extern int MsDrvInterfaceTouchDeviceFbNotifierCallback(struct notifier_block *pSelf, unsigned long nEvent, void *pData);
+#else
+extern void MsDrvInterfaceTouchDeviceResume(struct early_suspend *pSuspend);
+extern void MsDrvInterfaceTouchDeviceSuspend(struct early_suspend *pSuspend);
+#endif //CONFIG_ENABLE_NOTIFIER_FB
+extern void MsDrvInterfaceTouchDeviceSetIicDataRate(struct i2c_client *pClient, u32 nIicDataRate);
+
+#endif /* __MSTAR_DRV_PLATFORM_INTERFACE_H__ */
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_platform_porting_layer.c b/drivers/input/touchscreen/msg2233/mstar_drv_platform_porting_layer.c new file mode 100644 index 00000000..d07e81dc --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_platform_porting_layer.c @@ -0,0 +1,910 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_platform_porting_layer.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include "mstar_drv_platform_porting_layer.h"
+#include "mstar_drv_ic_fw_porting_layer.h"
+#include "mstar_drv_platform_interface.h"
+#include "mstar_drv_utility_adaption.h"
+#include <linux/wakelock.h>
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+#include "mstar_drv_hotknot_queue.h"
+#endif //CONFIG_ENABLE_HOTKNOT
+
+#ifdef CONFIG_ENABLE_JNI_INTERFACE
+#include "mstar_drv_jni_interface.h"
+#endif //CONFIG_ENABLE_JNI_INTERFACE
+
+/*=============================================================*/
+// EXTREN VARIABLE DECLARATION
+/*=============================================================*/
+
+extern struct kset *g_TouchKSet;
+extern struct kobject *g_TouchKObj;
+extern u8 g_GestureWakeupFlag;
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+extern u8 g_FaceClosingTp;
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+extern struct tpd_device *tpd;
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+extern struct regulator *g_ReguVdd;
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+#endif
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+extern struct miscdevice hotknot_miscdevice;
+extern u8 g_HotKnotState;
+#endif //CONFIG_ENABLE_HOTKNOT
+
+extern u8 IS_FIRMWARE_DATA_LOG_ENABLED;
+/*=============================================================*/
+// LOCAL VARIABLE DEFINITION
+/*=============================================================*/
+
+struct mutex g_Mutex;
+spinlock_t _gIrqLock;
+extern struct wake_lock mstar_irq_lock;
+
+static struct work_struct _gFingerTouchWork;
+static int _gInterruptFlag = 0;
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+#ifdef CONFIG_ENABLE_NOTIFIER_FB
+static struct notifier_block _gFbNotifier;
+#else
+static struct early_suspend _gEarlySuspend;
+#endif //CONFIG_ENABLE_NOTIFIER_FB
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM || CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifndef CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM
+static DECLARE_WAIT_QUEUE_HEAD(_gWaiter);
+static struct task_struct *_gThread = NULL;
+static int _gTpdFlag = 0;
+#endif //CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+/*=============================================================*/
+// GLOBAL VARIABLE DEFINITION
+/*=============================================================*/
+
+#ifdef CONFIG_TP_HAVE_KEY
+const int g_TpVirtualKey[] = {TOUCH_KEY_HOME, TOUCH_KEY_MENU, TOUCH_KEY_BACK, TOUCH_KEY_SEARCH};
+
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+#define BUTTON_W (100)
+#define BUTTON_H (100)
+
+const int g_TpVirtualKeyDimLocal[MAX_KEY_NUM][4] = {{BUTTON_W/2*1,TOUCH_SCREEN_Y_MAX+BUTTON_H/2,BUTTON_W,BUTTON_H},{BUTTON_W/2*3,TOUCH_SCREEN_Y_MAX+BUTTON_H/2,BUTTON_W,BUTTON_H},{BUTTON_W/2*5,TOUCH_SCREEN_Y_MAX+BUTTON_H/2,BUTTON_W,BUTTON_H},{BUTTON_W/2*7,TOUCH_SCREEN_Y_MAX+BUTTON_H/2,BUTTON_W,BUTTON_H}};
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+#endif //CONFIG_TP_HAVE_KEY
+
+struct input_dev *g_InputDevice = NULL;
+int _gIrq = -1;
+
+/*=============================================================*/
+// LOCAL FUNCTION DEFINITION
+/*=============================================================*/
+
+/* read data through I2C then report data to input sub-system when interrupt occurred */
+static void _DrvPlatformLyrFingerTouchDoWork(struct work_struct *pWork)
+{
+ unsigned long nIrqFlag;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DrvIcFwLyrHandleFingerTouch(NULL, 0);
+
+ DBG("*** %s() _gInterruptFlag = %d ***\n", __func__, _gInterruptFlag); // add for debug
+
+// DBG("*** %s() spin_lock_irqsave() ***\n", __func__); // add for debug
+ spin_lock_irqsave(&_gIrqLock, nIrqFlag);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+
+ if (_gInterruptFlag == 0)
+ {
+ enable_irq(_gIrq);
+// DBG("*** %s() enable_irq(_gIrq) ***\n", __func__); // add for debug
+
+ _gInterruptFlag = 1;
+ }
+
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+
+ if (_gInterruptFlag == 0)
+ {
+ mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM);
+// DBG("*** %s() mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM) ***\n", __func__); // add for debug
+
+ _gInterruptFlag = 1;
+ }
+
+#endif
+ spin_unlock_irqrestore(&_gIrqLock, nIrqFlag);
+/*
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ if (g_GestureWakeupFlag == 1)
+ wake_unlock(&mstar_irq_lock);
+#endif*/
+ //wake_unlock(&mstar_irq_lock);
+// DBG("*** %s() spin_unlock_irqrestore() ***\n", __func__); // add for debug
+}
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+/* The interrupt service routine will be triggered when interrupt occurred */
+static irqreturn_t _DrvPlatformLyrFingerTouchInterruptHandler(s32 nIrq, void *pDeviceId)
+{
+ unsigned long nIrqFlag;
+
+ //wake_lock_timeout(&mstar_irq_lock,msecs_to_jiffies(20000));
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("*** %s() _gInterruptFlag = %d ***\n", __func__, _gInterruptFlag); // add for debug
+
+// DBG("*** %s() spin_lock_irqsave() ***\n", __func__); // add for debug
+ spin_lock_irqsave(&_gIrqLock, nIrqFlag);
+
+ if (_gInterruptFlag == 1)
+ {
+ disable_irq_nosync(_gIrq);
+// DBG("*** %s() disable_irq_nosync(_gIrq) ***\n", __func__); // add for debug
+
+ _gInterruptFlag = 0;
+
+ schedule_work(&_gFingerTouchWork);
+ }
+
+ spin_unlock_irqrestore(&_gIrqLock, nIrqFlag);
+// DBG("*** %s() spin_unlock_irqrestore() ***\n", __func__); // add for debug
+ return IRQ_HANDLED;
+}
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+static void _DrvPlatformLyrFingerTouchInterruptHandler(void)
+{
+ unsigned long nIrqFlag;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("*** %s() _gInterruptFlag = %d ***\n", __func__, _gInterruptFlag); // add for debug
+
+// DBG("*** %s() spin_lock_irqsave() ***\n", __func__); // add for debug
+ spin_lock_irqsave(&_gIrqLock, nIrqFlag);
+
+#ifdef CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM
+
+ if (_gInterruptFlag == 1)
+ {
+ mt_eint_mask(CUST_EINT_TOUCH_PANEL_NUM);
+// DBG("*** %s() mt_eint_mask(CUST_EINT_TOUCH_PANEL_NUM) ***\n", __func__); // add for debug
+
+ _gInterruptFlag = 0;
+
+ schedule_work(&_gFingerTouchWork);
+ }
+
+#else
+
+ if (_gInterruptFlag == 1)
+ {
+ mt_eint_mask(CUST_EINT_TOUCH_PANEL_NUM);
+// DBG("*** %s() mt_eint_mask(CUST_EINT_TOUCH_PANEL_NUM) ***\n", __func__); // add for debug
+
+ _gInterruptFlag = 0;
+
+ _gTpdFlag = 1;
+ wake_up_interruptible(&_gWaiter);
+ }
+#endif //CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM
+
+ spin_unlock_irqrestore(&_gIrqLock, nIrqFlag);
+// DBG("*** %s() spin_unlock_irqrestore() ***\n", __func__); // add for debug
+}
+
+#ifndef CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM
+static int _DrvPlatformLyrFingerTouchHandler(void *pUnUsed)
+{
+ unsigned long nIrqFlag;
+ struct sched_param param = { .sched_priority = RTPM_PRIO_TPD };
+ sched_setscheduler(current, SCHED_RR, ¶m);
+
+ DBG("*** %s() ***\n", __func__);
+
+ do
+ {
+ set_current_state(TASK_INTERRUPTIBLE);
+ wait_event_interruptible(_gWaiter, _gTpdFlag != 0);
+ _gTpdFlag = 0;
+
+ set_current_state(TASK_RUNNING);
+
+ DrvIcFwLyrHandleFingerTouch(NULL, 0);
+
+ DBG("*** %s() _gInterruptFlag = %d ***\n", __func__, _gInterruptFlag); // add for debug
+
+// DBG("*** %s() spin_lock_irqsave() ***\n", __func__); // add for debug
+ spin_lock_irqsave(&_gIrqLock, nIrqFlag);
+
+ if (_gInterruptFlag == 0)
+ {
+ mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM);
+// DBG("*** %s() mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM) ***\n", __func__); // add for debug
+
+ _gInterruptFlag = 1;
+ }
+
+ spin_unlock_irqrestore(&_gIrqLock, nIrqFlag);
+// DBG("*** %s() spin_unlock_irqrestore() ***\n", __func__); // add for debug
+
+ } while (!kthread_should_stop());
+
+ return 0;
+}
+#endif //CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM
+#endif
+
+/*=============================================================*/
+// GLOBAL FUNCTION DEFINITION
+/*=============================================================*/
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+void DrvPlatformLyrTouchDeviceRegulatorPowerOn(void)
+{
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ s32 nRetVal = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nRetVal = regulator_set_voltage(g_ReguVdd, 2800000, 2800000); // For specific SPRD BB chip(ex. SC7715) or QCOM BB chip(ex. MSM8610), need to enable this function call for correctly power on Touch IC.
+
+ if (nRetVal)
+ {
+ DBG("Could not set to 2800mv.\n");
+ }
+ regulator_enable(g_ReguVdd);
+
+ mdelay(20);
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ //hwPowerOn(MT6323_POWER_LDO_VGP1, VOL_2800, "TP"); // For specific MTK BB chip(ex. MT6582), need to enable this function call for correctly power on Touch IC.
+ hwPowerOn(PMIC_APP_CAP_TOUCH_VDD, VOL_2800, "TP"); // For specific MTK BB chip(ex. MT6735), need to enable this function call for correctly power on Touch IC.
+#endif
+}
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+void DrvPlatformLyrTouchDevicePowerOn(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ gpio_direction_output(MS_TS_MSG_IC_GPIO_RST, 1);
+// gpio_set_value(MS_TS_MSG_IC_GPIO_RST, 1);
+ udelay(100);
+ gpio_set_value(MS_TS_MSG_IC_GPIO_RST, 0);
+ udelay(100);
+ gpio_set_value(MS_TS_MSG_IC_GPIO_RST, 1);
+ mdelay(25);
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ mt_set_gpio_mode(MS_TS_MSG_IC_GPIO_RST, GPIO_CTP_RST_PIN_M_GPIO);
+ mt_set_gpio_dir(MS_TS_MSG_IC_GPIO_RST, GPIO_DIR_OUT);
+ mt_set_gpio_out(MS_TS_MSG_IC_GPIO_RST, GPIO_OUT_ONE);
+ udelay(100);
+
+ mt_set_gpio_mode(MS_TS_MSG_IC_GPIO_RST, GPIO_CTP_RST_PIN_M_GPIO);
+ mt_set_gpio_dir(MS_TS_MSG_IC_GPIO_RST, GPIO_DIR_OUT);
+ mt_set_gpio_out(MS_TS_MSG_IC_GPIO_RST, GPIO_OUT_ZERO);
+ udelay(100);
+
+#ifdef TPD_CLOSE_POWER_IN_SLEEP
+ hwPowerDown(TPD_POWER_SOURCE, "TP");
+ mdelay(100);
+ hwPowerOn(TPD_POWER_SOURCE, VOL_2800, "TP");
+ mdelay(10); // reset pulse
+#endif //TPD_CLOSE_POWER_IN_SLEEP
+
+ mt_set_gpio_mode(MS_TS_MSG_IC_GPIO_RST, GPIO_CTP_RST_PIN_M_GPIO);
+ mt_set_gpio_dir(MS_TS_MSG_IC_GPIO_RST, GPIO_DIR_OUT);
+ mt_set_gpio_out(MS_TS_MSG_IC_GPIO_RST, GPIO_OUT_ONE);
+ mdelay(25);
+#endif
+}
+
+void DrvPlatformLyrTouchDevicePowerOff(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ DrvIcFwLyrOptimizeCurrentConsumption();
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+// gpio_direction_output(MS_TS_MSG_IC_GPIO_RST, 0);
+ gpio_set_value(MS_TS_MSG_IC_GPIO_RST, 0);
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ mt_set_gpio_mode(MS_TS_MSG_IC_GPIO_RST, GPIO_CTP_RST_PIN_M_GPIO);
+ mt_set_gpio_dir(MS_TS_MSG_IC_GPIO_RST, GPIO_DIR_OUT);
+ mt_set_gpio_out(MS_TS_MSG_IC_GPIO_RST, GPIO_OUT_ZERO);
+#ifdef TPD_CLOSE_POWER_IN_SLEEP
+ hwPowerDown(TPD_POWER_SOURCE, "TP");
+#endif //TPD_CLOSE_POWER_IN_SLEEP
+#endif
+}
+
+void DrvPlatformLyrTouchDeviceResetHw(void)
+{
+ DBG("*** %s() MS_TS_MSG_IC_GPIO_RST=%d***\n", __func__,MS_TS_MSG_IC_GPIO_RST);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ gpio_direction_output(MS_TS_MSG_IC_GPIO_RST, 1);
+// gpio_set_value(MS_TS_MSG_IC_GPIO_RST, 1);
+ udelay(100);
+ gpio_set_value(MS_TS_MSG_IC_GPIO_RST, 0);
+ udelay(100);
+ gpio_set_value(MS_TS_MSG_IC_GPIO_RST, 1);
+ mdelay(25);
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ mt_set_gpio_mode(MS_TS_MSG_IC_GPIO_RST, GPIO_CTP_RST_PIN_M_GPIO);
+ mt_set_gpio_dir(MS_TS_MSG_IC_GPIO_RST, GPIO_DIR_OUT);
+ mt_set_gpio_out(MS_TS_MSG_IC_GPIO_RST, GPIO_OUT_ONE);
+ udelay(100);
+ mt_set_gpio_mode(MS_TS_MSG_IC_GPIO_RST, GPIO_CTP_RST_PIN_M_GPIO);
+ mt_set_gpio_dir(MS_TS_MSG_IC_GPIO_RST, GPIO_DIR_OUT);
+ mt_set_gpio_out(MS_TS_MSG_IC_GPIO_RST, GPIO_OUT_ZERO);
+ udelay(100);
+ mt_set_gpio_mode(MS_TS_MSG_IC_GPIO_RST, GPIO_CTP_RST_PIN_M_GPIO);
+ mt_set_gpio_dir(MS_TS_MSG_IC_GPIO_RST, GPIO_DIR_OUT);
+ mt_set_gpio_out(MS_TS_MSG_IC_GPIO_RST, GPIO_OUT_ONE);
+ mdelay(25);
+#endif
+}
+
+void DrvPlatformLyrDisableFingerTouchReport(void)
+{
+ unsigned long nIrqFlag;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("*** %s() _gInterruptFlag = %d ***\n", __func__, _gInterruptFlag); // add for debug
+
+ spin_lock_irqsave(&_gIrqLock, nIrqFlag);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ if (_gInterruptFlag == 1)
+ {
+ printk("DrvPlatformLyrDisableFingerTouchReport___gIrq=%d\n",_gIrq);
+ disable_irq(_gIrq);
+
+ _gInterruptFlag = 0;
+ }
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ if (g_HotKnotState != HOTKNOT_TRANS_STATE && g_HotKnotState != HOTKNOT_BEFORE_TRANS_STATE)
+#endif //CONFIG_ENABLE_HOTKNOT
+ {
+ if (_gInterruptFlag == 1)
+ {
+ mt_eint_mask(CUST_EINT_TOUCH_PANEL_NUM);
+
+ _gInterruptFlag = 0;
+ }
+ }
+#endif
+
+ spin_unlock_irqrestore(&_gIrqLock, nIrqFlag);
+}
+
+void DrvPlatformLyrEnableFingerTouchReport(void)
+{
+ unsigned long nIrqFlag;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("*** %s() _gInterruptFlag = %d ***\n", __func__, _gInterruptFlag); // add for debug
+
+// DBG("*** %s() spin_lock_irqsave() ***\n", __func__); // add for debug
+ spin_lock_irqsave(&_gIrqLock, nIrqFlag);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+
+ if (_gInterruptFlag == 0)
+ {
+ enable_irq(_gIrq);
+// DBG("*** %s() enable_irq(_gIrq) ***\n", __func__); // add for debug
+
+ _gInterruptFlag = 1;
+ }
+
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+
+ if (_gInterruptFlag == 0)
+ {
+ mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM);
+// DBG("*** %s() mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM) ***\n", __func__); // add for debug
+
+ _gInterruptFlag = 1;
+ }
+
+#endif
+
+ spin_unlock_irqrestore(&_gIrqLock, nIrqFlag);
+// DBG("*** %s() spin_unlock_irqrestore() ***\n", __func__); // add for debug
+}
+
+void DrvPlatformLyrFingerTouchPressed(s32 nX, s32 nY, s32 nPressure, s32 nId)
+{
+ DBG("*** %s() ***\n", __func__);
+ DBG("point touch pressed\n");
+
+ input_report_key(g_InputDevice, BTN_TOUCH, 1);
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+ input_report_abs(g_InputDevice, ABS_MT_TRACKING_ID, nId);
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+ input_report_abs(g_InputDevice, ABS_MT_TOUCH_MAJOR, 1);
+ input_report_abs(g_InputDevice, ABS_MT_WIDTH_MAJOR, 1);
+ input_report_abs(g_InputDevice, ABS_MT_POSITION_X, nX);
+ input_report_abs(g_InputDevice, ABS_MT_POSITION_Y, nY);
+
+ input_mt_sync(g_InputDevice);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_TP_HAVE_KEY
+ if (FACTORY_BOOT == get_boot_mode() || RECOVERY_BOOT == get_boot_mode())
+ {
+ tpd_button(nX, nY, 1);
+ }
+#endif //CONFIG_TP_HAVE_KEY
+
+ TPD_EM_PRINT(nX, nY, nX, nY, nId, 1);
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+}
+
+void DrvPlatformLyrFingerTouchReleased(s32 nX, s32 nY)
+{
+ DBG("*** %s() ***\n", __func__);
+ DBG("point touch released\n");
+
+ input_report_key(g_InputDevice, BTN_TOUCH, 0);
+ input_mt_sync(g_InputDevice);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_TP_HAVE_KEY
+ if (FACTORY_BOOT == get_boot_mode() || RECOVERY_BOOT == get_boot_mode())
+ {
+ tpd_button(nX, nY, 0);
+// tpd_button(0, 0, 0);
+ }
+#endif //CONFIG_TP_HAVE_KEY
+
+ TPD_EM_PRINT(nX, nY, nX, nY, 0, 0);
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+}
+
+s32 DrvPlatformLyrInputDeviceInitialize(struct i2c_client *pClient)
+{
+ s32 nRetVal = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ mutex_init(&g_Mutex);
+ spin_lock_init(&_gIrqLock);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ /* allocate an input device */
+ g_InputDevice = input_allocate_device();
+ if (g_InputDevice == NULL)
+ {
+ DBG("*** input device allocation failed ***\n");
+ return -ENOMEM;
+ }
+
+ g_InputDevice->name = pClient->name;
+ g_InputDevice->phys = "I2C";
+ g_InputDevice->dev.parent = &pClient->dev;
+ g_InputDevice->id.bustype = BUS_I2C;
+
+ /* set the supported event type for input device */
+ set_bit(EV_ABS, g_InputDevice->evbit);
+ set_bit(EV_SYN, g_InputDevice->evbit);
+ set_bit(EV_KEY, g_InputDevice->evbit);
+ set_bit(BTN_TOUCH, g_InputDevice->keybit);
+ set_bit(INPUT_PROP_DIRECT, g_InputDevice->propbit);
+
+#ifdef CONFIG_TP_HAVE_KEY
+ // Method 1.
+ {
+ u32 i;
+ for (i = 0; i < MAX_KEY_NUM; i ++)
+ {
+ input_set_capability(g_InputDevice, EV_KEY, g_TpVirtualKey[i]);
+ }
+ }
+#endif
+/*
+#ifdef CONFIG_TP_HAVE_KEY
+ // Method 2.
+ set_bit(TOUCH_KEY_MENU, g_InputDevice->keybit); //Menu
+ set_bit(TOUCH_KEY_HOME, g_InputDevice->keybit); //Home
+ set_bit(TOUCH_KEY_BACK, g_InputDevice->keybit); //Back
+ set_bit(TOUCH_KEY_SEARCH, g_InputDevice->keybit); //Search
+#endif
+*/
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ input_set_capability(g_InputDevice, EV_KEY, KEY_POWER);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_UP);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_DOWN);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_LEFT);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_RIGHT);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_W);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_Z);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_V);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_O);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_M);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_C);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_E);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_S);
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+ input_set_abs_params(g_InputDevice, ABS_MT_TRACKING_ID, 0, 255, 0, 0);
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+ input_set_abs_params(g_InputDevice, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
+ input_set_abs_params(g_InputDevice, ABS_MT_WIDTH_MAJOR, 0, 15, 0, 0);
+ input_set_abs_params(g_InputDevice, ABS_MT_POSITION_X, TOUCH_SCREEN_X_MIN, TOUCH_SCREEN_X_MAX, 0, 0);
+ input_set_abs_params(g_InputDevice, ABS_MT_POSITION_Y, TOUCH_SCREEN_Y_MIN, TOUCH_SCREEN_Y_MAX, 0, 0);
+
+ /* register the input device to input sub-system */
+ nRetVal = input_register_device(g_InputDevice);
+ if (nRetVal < 0)
+ {
+ DBG("*** Unable to register touch input device ***\n");
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ g_InputDevice = tpd->dev;
+/*
+ g_InputDevice->phys = "I2C";
+ g_InputDevice->dev.parent = &pClient->dev;
+ g_InputDevice->id.bustype = BUS_I2C;
+
+ // set the supported event type for input device
+ set_bit(EV_ABS, g_InputDevice->evbit);
+ set_bit(EV_SYN, g_InputDevice->evbit);
+ set_bit(EV_KEY, g_InputDevice->evbit);
+ set_bit(BTN_TOUCH, g_InputDevice->keybit);
+ set_bit(INPUT_PROP_DIRECT, g_InputDevice->propbit);
+*/
+
+#ifdef CONFIG_TP_HAVE_KEY
+ {
+ u32 i;
+ for (i = 0; i < MAX_KEY_NUM; i ++)
+ {
+ input_set_capability(g_InputDevice, EV_KEY, g_TpVirtualKey[i]);
+ }
+ }
+#endif
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ input_set_capability(g_InputDevice, EV_KEY, KEY_POWER);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_UP);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_DOWN);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_LEFT);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_RIGHT);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_W);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_Z);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_V);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_O);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_M);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_C);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_E);
+ input_set_capability(g_InputDevice, EV_KEY, KEY_S);
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC)
+ input_set_abs_params(g_InputDevice, ABS_MT_TRACKING_ID, 0, (MAX_TOUCH_NUM-1), 0, 0);
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_MUTUAL_IC
+/*
+ input_set_abs_params(g_InputDevice, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
+ input_set_abs_params(g_InputDevice, ABS_MT_WIDTH_MAJOR, 0, 15, 0, 0);
+ input_set_abs_params(g_InputDevice, ABS_MT_POSITION_X, TOUCH_SCREEN_X_MIN, TOUCH_SCREEN_X_MAX, 0, 0);
+ input_set_abs_params(g_InputDevice, ABS_MT_POSITION_Y, TOUCH_SCREEN_Y_MIN, TOUCH_SCREEN_Y_MAX, 0, 0);
+*/
+
+#endif
+
+ return nRetVal;
+}
+
+s32 DrvPlatformLyrTouchDeviceRequestGPIO(void)
+{
+ s32 nRetVal = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ nRetVal = gpio_request(MS_TS_MSG_IC_GPIO_RST, "C_TP_RST");
+ if (nRetVal < 0)
+ {
+ DBG("*** Failed to request GPIO %d, error %d ***\n", MS_TS_MSG_IC_GPIO_RST, nRetVal);
+ }
+
+ nRetVal = gpio_request(MS_TS_MSG_IC_GPIO_INT, "C_TP_INT");
+ if (nRetVal < 0)
+ {
+ DBG("*** Failed to request GPIO %d, error %d ***\n", MS_TS_MSG_IC_GPIO_INT, nRetVal);
+ }
+#endif
+
+ return nRetVal;
+}
+
+s32 DrvPlatformLyrTouchDeviceRegisterFingerTouchInterruptHandler(void)
+{
+ s32 nRetVal = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (DrvIcFwLyrIsRegisterFingerTouchInterruptHandler())
+ {
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ /* initialize the finger touch work queue */
+ INIT_WORK(&_gFingerTouchWork, _DrvPlatformLyrFingerTouchDoWork);
+
+ _gIrq = gpio_to_irq(MS_TS_MSG_IC_GPIO_INT);
+
+ /* request an irq and register the isr */
+ nRetVal = request_threaded_irq(_gIrq/*MS_TS_MSG_IC_GPIO_INT*/,NULL, _DrvPlatformLyrFingerTouchInterruptHandler,
+ IRQF_TRIGGER_RISING | IRQF_ONESHOT | IRQF_NO_SUSPEND /*//* IRQF_TRIGGER_FALLING */,
+ "msg2xxx", NULL);
+
+// nRetVal = request_irq(_gIrq/*MS_TS_MSG_IC_GPIO_INT*/, _DrvPlatformLyrFingerTouchInterruptHandler,
+// IRQF_TRIGGER_RISING /* | IRQF_NO_SUSPEND *//* IRQF_TRIGGER_FALLING */,
+// "msg2xxx", NULL);
+
+ _gInterruptFlag = 1;
+
+ if (nRetVal != 0)
+ {
+ DBG("*** Unable to claim irq %d; error %d ***\n", MS_TS_MSG_IC_GPIO_INT, nRetVal);
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ mt_set_gpio_mode(MS_TS_MSG_IC_GPIO_INT, GPIO_CTP_EINT_PIN_M_EINT);
+ mt_set_gpio_dir(MS_TS_MSG_IC_GPIO_INT, GPIO_DIR_IN);
+ mt_set_gpio_pull_enable(MS_TS_MSG_IC_GPIO_INT, GPIO_PULL_ENABLE);
+ mt_set_gpio_pull_select(MS_TS_MSG_IC_GPIO_INT, GPIO_PULL_UP);
+
+ mt_eint_set_hw_debounce(CUST_EINT_TOUCH_PANEL_NUM, CUST_EINT_TOUCH_PANEL_DEBOUNCE_CN);
+ mt_eint_registration(CUST_EINT_TOUCH_PANEL_NUM, CUST_EINT_TOUCH_PANEL_TYPE/* EINTF_TRIGGER_RISING */, _DrvPlatformLyrFingerTouchInterruptHandler, 1);
+
+ mt_eint_unmask(CUST_EINT_TOUCH_PANEL_NUM);
+
+ _gInterruptFlag = 1;
+
+#ifdef CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM
+ /* initialize the finger touch work queue */
+ INIT_WORK(&_gFingerTouchWork, _DrvPlatformLyrFingerTouchDoWork);
+#else
+ _gThread = kthread_run(_DrvPlatformLyrFingerTouchHandler, 0, TPD_DEVICE);
+ if (IS_ERR(_gThread))
+ {
+ nRetVal = PTR_ERR(_gThread);
+ DBG("Failed to create kernel thread: %d\n", nRetVal);
+ }
+#endif //CONFIG_USE_IRQ_INTERRUPT_FOR_MTK_PLATFORM
+#endif
+ }
+
+ return nRetVal;
+}
+
+void DrvPlatformLyrTouchDeviceRegisterEarlySuspend(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+#ifdef CONFIG_ENABLE_NOTIFIER_FB
+ _gFbNotifier.notifier_call = MsDrvInterfaceTouchDeviceFbNotifierCallback;
+ fb_register_client(&_gFbNotifier);
+#else
+ _gEarlySuspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN;
+ _gEarlySuspend.suspend = MsDrvInterfaceTouchDeviceSuspend;
+ _gEarlySuspend.resume = MsDrvInterfaceTouchDeviceResume;
+ register_early_suspend(&_gEarlySuspend);
+#endif //CONFIG_ENABLE_NOTIFIER_FB
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM || CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM
+}
+
+/* remove function is triggered when the input device is removed from input sub-system */
+s32 DrvPlatformLyrTouchDeviceRemove(struct i2c_client *pClient)
+{
+ DBG("*** %s() ***\n", __func__);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ free_irq(_gIrq, g_InputDevice);
+ gpio_free(MS_TS_MSG_IC_GPIO_INT);
+ gpio_free(MS_TS_MSG_IC_GPIO_RST);
+ input_unregister_device(g_InputDevice);
+#endif
+
+ if (IS_FIRMWARE_DATA_LOG_ENABLED)
+ {
+ kset_unregister(g_TouchKSet);
+ kobject_put(g_TouchKObj);
+ } //IS_FIRMWARE_DATA_LOG_ENABLED
+
+#ifdef CONFIG_ENABLE_HOTKNOT
+ DeleteQueue();
+ DeleteHotKnotMem();
+ DBG("Deregister hotknot misc device.\n");
+ misc_deregister( &hotknot_miscdevice );
+#endif //CONFIG_ENABLE_HOTKNOT
+
+#ifdef CONFIG_ENABLE_JNI_INTERFACE
+ DeleteMsgToolMem();
+#endif //CONFIG_ENABLE_JNI_INTERFACE
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaFree();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ return 0;
+}
+extern void sprd_i2c_ctl_chg_clk(unsigned int id_nr, unsigned int freq);
+
+void DrvPlatformLyrSetIicDataRate(struct i2c_client *pClient, u32 nIicDataRate)
+{
+ DBG("*** %s() nIicDataRate = %d ***\n", __func__, nIicDataRate);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+ // TODO : Please FAE colleague to confirm with customer device driver engineer for how to set i2c data rate on SPRD platform
+ sprd_i2c_ctl_chg_clk(pClient->adapter->nr, nIicDataRate);
+ mdelay(100);
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ // TODO : Please FAE colleague to confirm with customer device driver engineer for how to set i2c data rate on QCOM platform
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ pClient->timing = nIicDataRate/1000;
+#endif
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+
+int DrvPlatformLyrGetTpPsData(void)
+{
+ DBG("*** %s() g_FaceClosingTp = %d ***\n", __func__, g_FaceClosingTp);
+
+ return g_FaceClosingTp;
+}
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+void DrvPlatformLyrTpPsEnable(int nEnable)
+{
+ DBG("*** %s() nEnable = %d ***\n", __func__, nEnable);
+
+ if (nEnable)
+ {
+ DrvIcFwLyrEnableProximity();
+ }
+ else
+ {
+ DrvIcFwLyrDisableProximity();
+ }
+}
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+int DrvPlatformLyrTpPsOperate(void* pSelf, u32 nCommand, void* pBuffIn, int nSizeIn,
+ void* pBuffOut, int nSizeOut, int* pActualOut)
+{
+ int nErr = 0;
+ int nValue;
+ hwm_sensor_data *pSensorData;
+
+ switch (nCommand)
+ {
+ case SENSOR_DELAY:
+ if ((pBuffIn == NULL) || (nSizeIn < sizeof(int)))
+ {
+ nErr = -EINVAL;
+ }
+ // Do nothing
+ break;
+
+ case SENSOR_ENABLE:
+ if ((pBuffIn == NULL) || (nSizeIn < sizeof(int)))
+ {
+ nErr = -EINVAL;
+ }
+ else
+ {
+ nValue = *(int *)pBuffIn;
+ if (nValue)
+ {
+ if (DrvIcFwLyrEnableProximity() < 0)
+ {
+ DBG("Enable ps fail: %d\n", nErr);
+ return -1;
+ }
+ }
+ else
+ {
+ if (DrvIcFwLyrDisableProximity() < 0)
+ {
+ DBG("Disable ps fail: %d\n", nErr);
+ return -1;
+ }
+ }
+ }
+ break;
+
+ case SENSOR_GET_DATA:
+ if ((pBuffOut == NULL) || (nSizeOut < sizeof(hwm_sensor_data)))
+ {
+ DBG("Get sensor data parameter error!\n");
+ nErr = -EINVAL;
+ }
+ else
+ {
+ pSensorData = (hwm_sensor_data *)pBuffOut;
+
+ pSensorData->values[0] = DrvPlatformLyrGetTpPsData();
+ pSensorData->value_divide = 1;
+ pSensorData->status = SENSOR_STATUS_ACCURACY_MEDIUM;
+ }
+ break;
+
+ default:
+ DBG("Un-recognized parameter %d!\n", nCommand);
+ nErr = -1;
+ break;
+ }
+
+ return nErr;
+}
+#endif
+
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+//------------------------------------------------------------------------------//
+
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_platform_porting_layer.h b/drivers/input/touchscreen/msg2233/mstar_drv_platform_porting_layer.h new file mode 100644 index 00000000..3ab6f9cd --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_platform_porting_layer.h @@ -0,0 +1,178 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_platform_porting_layer.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_PLATFORM_PORTING_LAYER_H__
+#define __MSTAR_DRV_PLATFORM_PORTING_LAYER_H__
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+#include "mstar_drv_common.h"
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+
+#include <soc/sprd/board.h>
+#include <soc/sprd/gpio.h>
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+#include <soc/sprd/regulator.h>
+#include <linux/regulator/consumer.h>
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+#include <linux/input/vir_ps.h>
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+#include <linux/regulator/consumer.h>
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+#ifdef CONFIG_ENABLE_NOTIFIER_FB
+#include <linux/notifier.h>
+#include <linux/fb.h>
+#endif //CONFIG_ENABLE_NOTIFIER_FB
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+#include <linux/input/vir_ps.h>
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+
+#include <linux/sched.h>
+#include <linux/kthread.h>
+#include <linux/rtpm_prio.h>
+#include <linux/wait.h>
+#include <linux/time.h>
+#include <linux/hwmsen_helper.h>
+
+#include <linux/namei.h>
+#include <linux/vmalloc.h>
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+#include <linux/hwmsensor.h>
+#include <linux/hwmsen_dev.h>
+#include <linux/sensors_io.h>
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#include <mach/mt_pm_ldo.h>
+#include <mach/mt_typedefs.h>
+#include <mach/mt_boot.h>
+#include <mach/mt_gpio.h>
+
+#include <cust_eint.h>
+#include "tpd.h"
+#include "cust_gpio_usage.h"
+#include <pmic_drv.h>
+
+#endif
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR CONSTANT DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+/*
+ * Note.
+ * Please change the below GPIO pin setting to follow the platform that you are using(EX. MediaTek, Spreadtrum, Qualcomm).
+ */
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+
+// TODO : Please FAE colleague to confirm with customer device driver engineer about the value of RST and INT GPIO setting
+//#define MS_TS_MSG_IC_GPIO_RST GPIO_TOUCH_RESET //53 //35
+//#define MS_TS_MSG_IC_GPIO_INT GPIO_TOUCH_IRQ //52 //37
+
+#ifdef CONFIG_TP_HAVE_KEY
+#define TOUCH_KEY_MENU (139) //229
+#define TOUCH_KEY_HOME (172) //102
+#define TOUCH_KEY_BACK (158)
+#define TOUCH_KEY_SEARCH (217)
+
+#define MAX_KEY_NUM (4)
+#endif //CONFIG_TP_HAVE_KEY
+
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+
+// TODO : Please FAE colleague to confirm with customer device driver engineer about the value of RST and INT GPIO setting
+#define MS_TS_MSG_IC_GPIO_RST 0
+#define MS_TS_MSG_IC_GPIO_INT 1
+
+#ifdef CONFIG_TP_HAVE_KEY
+#define TOUCH_KEY_MENU (139) //229
+#define TOUCH_KEY_HOME (172) //102
+#define TOUCH_KEY_BACK (158)
+#define TOUCH_KEY_SEARCH (217)
+
+#define MAX_KEY_NUM (4)
+#endif //CONFIG_TP_HAVE_KEY
+
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+
+#define MS_TS_MSG_IC_GPIO_RST (GPIO_CTP_RST_PIN)
+#define MS_TS_MSG_IC_GPIO_INT (GPIO_CTP_EINT_PIN)
+
+#ifdef CONFIG_TP_HAVE_KEY
+#define TOUCH_KEY_MENU KEY_MENU
+#define TOUCH_KEY_HOME KEY_HOMEPAGE
+#define TOUCH_KEY_BACK KEY_BACK
+#define TOUCH_KEY_SEARCH KEY_SEARCH
+
+#define MAX_KEY_NUM (4)
+#endif //CONFIG_TP_HAVE_KEY
+
+#endif
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL FUNCTION DECLARATION */
+/*--------------------------------------------------------------------------*/
+
+extern void DrvPlatformLyrDisableFingerTouchReport(void);
+extern void DrvPlatformLyrEnableFingerTouchReport(void);
+extern void DrvPlatformLyrFingerTouchPressed(s32 nX, s32 nY, s32 nPressure, s32 nId);
+extern void DrvPlatformLyrFingerTouchReleased(s32 nX, s32 nY);
+extern s32 DrvPlatformLyrInputDeviceInitialize(struct i2c_client *pClient);
+extern void DrvPlatformLyrSetIicDataRate(struct i2c_client *pClient, u32 nIicDataRate);
+extern void DrvPlatformLyrTouchDevicePowerOff(void);
+extern void DrvPlatformLyrTouchDevicePowerOn(void);
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+extern void DrvPlatformLyrTouchDeviceRegulatorPowerOn(void);
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+extern void DrvPlatformLyrTouchDeviceRegisterEarlySuspend(void);
+extern s32 DrvPlatformLyrTouchDeviceRegisterFingerTouchInterruptHandler(void);
+extern s32 DrvPlatformLyrTouchDeviceRemove(struct i2c_client *pClient);
+extern s32 DrvPlatformLyrTouchDeviceRequestGPIO(void);
+extern void DrvPlatformLyrTouchDeviceResetHw(void);
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+extern int DrvPlatformLyrGetTpPsData(void);
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+extern void DrvPlatformLyrTpPsEnable(int nEnable);
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+extern int DrvPlatformLyrTpPsOperate(void* pSelf, u32 nCommand, void* pBuffIn, int nSizeIn, void* pBuffOut, int nSizeOut, int* pActualOut);
+#endif
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+#endif /* __MSTAR_DRV_PLATFORM_PORTING_LAYER_H__ */
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_qcom.c b/drivers/input/touchscreen/msg2233/mstar_drv_qcom.c new file mode 100644 index 00000000..cf1f6c2b --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_qcom.c @@ -0,0 +1,156 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_qcom.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/types.h>
+#include <linux/input.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/gpio.h>
+#include <linux/i2c.h>
+#include <linux/kobject.h>
+#include <asm/irq.h>
+#include <asm/io.h>
+
+
+#include "mstar_drv_platform_interface.h"
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+#include <linux/regulator/consumer.h>
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+/*=============================================================*/
+// CONSTANT VALUE DEFINITION
+/*=============================================================*/
+
+#define MSG_TP_IC_NAME "msg2xxx" //"msg21xxA" or "msg22xx" or "msg26xxM" /* Please define the mstar touch ic name based on the mutual-capacitive ic or self capacitive ic that you are using */
+
+/*=============================================================*/
+// VARIABLE DEFINITION
+/*=============================================================*/
+
+struct i2c_client *g_I2cClient = NULL;
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+struct regulator *g_ReguVdd = NULL;
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+/*=============================================================*/
+// FUNCTION DEFINITION
+/*=============================================================*/
+
+/* probe function is used for matching and initializing input device */
+static int __devinit touch_driver_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+ const char *vdd_name = "vdd";
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+ DBG("*** %s ***\n", __FUNCTION__);
+
+ if (client == NULL)
+ {
+ DBG("i2c client is NULL\n");
+ return -1;
+ }
+ g_I2cClient = client;
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+ g_ReguVdd = regulator_get(&g_I2cClient->dev, vdd_name);
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+ return MsDrvInterfaceTouchDeviceProbe(g_I2cClient, id);
+}
+
+/* remove function is triggered when the input device is removed from input sub-system */
+static int touch_driver_remove(struct i2c_client *client)
+{
+ DBG("*** %s ***\n", __FUNCTION__);
+
+ return MsDrvInterfaceTouchDeviceRemove(client);
+}
+
+/* The I2C device list is used for matching I2C device and I2C device driver. */
+static const struct i2c_device_id touch_device_id[] =
+{
+ {MSG_TP_IC_NAME, 0},
+ {}, /* should not omitted */
+};
+
+MODULE_DEVICE_TABLE(i2c, touch_device_id);
+
+static struct of_device_id touch_match_table[] = {
+ { .compatible = "mstar,msg2xxx",},
+ {},
+};
+
+static struct i2c_driver touch_device_driver =
+{
+ .driver = {
+ .name = MSG_TP_IC_NAME,
+ .owner = THIS_MODULE,
+ .of_match_table = touch_match_table,
+ },
+ .probe = touch_driver_probe,
+ .remove = touch_driver_remove,
+ .id_table = touch_device_id,
+};
+
+static int __init touch_driver_init(void)
+{
+ int ret;
+
+ /* register driver */
+ ret = i2c_add_driver(&touch_device_driver);
+ if (ret < 0)
+ {
+ DBG("add touch device driver i2c driver failed.\n");
+ return -ENODEV;
+ }
+ DBG("add touch device driver i2c driver.\n");
+
+ return ret;
+}
+
+static void __exit touch_driver_exit(void)
+{
+ DBG("remove touch device driver i2c driver.\n");
+
+ i2c_del_driver(&touch_device_driver);
+}
+
+module_init(touch_driver_init);
+module_exit(touch_driver_exit);
+MODULE_LICENSE("GPL");
\ No newline at end of file diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_self_fw_control.c b/drivers/input/touchscreen/msg2233/mstar_drv_self_fw_control.c new file mode 100644 index 00000000..a544ef4c --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_self_fw_control.c @@ -0,0 +1,5747 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_self_fw_control.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include "mstar_drv_self_fw_control.h"
+#include "mstar_drv_utility_adaption.h"
+#include "mstar_drv_platform_porting_layer.h"
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC)
+
+/*=============================================================*/
+// EXTERN VARIABLE DECLARATION
+/*=============================================================*/
+
+extern u32 SLAVE_I2C_ID_DBBUS;
+extern u32 SLAVE_I2C_ID_DWI2C;
+
+#ifdef CONFIG_TP_HAVE_KEY
+extern const int g_TpVirtualKey[];
+
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+extern const int g_TpVirtualKeyDimLocal[][4];
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+#endif //CONFIG_TP_HAVE_KEY
+
+extern struct input_dev *g_InputDevice;
+
+extern u8 g_FwData[MAX_UPDATE_FIRMWARE_BUFFER_SIZE][1024];
+extern u32 g_FwDataCount;
+
+extern struct mutex g_Mutex;
+
+extern u16 FIRMWARE_MODE_UNKNOWN_MODE;
+extern u16 FIRMWARE_MODE_DEMO_MODE;
+extern u16 FIRMWARE_MODE_DEBUG_MODE;
+extern u16 FIRMWARE_MODE_RAW_DATA_MODE;
+
+extern struct kobject *g_TouchKObj;
+extern u8 g_IsSwitchModeByAPK;
+
+extern u8 IS_FIRMWARE_DATA_LOG_ENABLED;
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+extern struct kobject *g_GestureKObj;
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+extern u32 g_IsEnableReportRate;
+extern u32 g_InterruptCount;
+extern u32 g_ValidTouchCount;
+
+extern struct timeval g_StartTime;
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+/*=============================================================*/
+// LOCAL VARIABLE DEFINITION
+/*=============================================================*/
+
+static u8 _gTpVendorCode[3] = {0};
+
+static u8 _gDwIicInfoData[1024];
+static u8 _gOneDimenFwData[MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE*1024+MSG22XX_FIRMWARE_INFO_BLOCK_SIZE] = {0}; // used for MSG22XX
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+/*
+ * Note.
+ * Please modify the name of the below .h depends on the vendor TP that you are using.
+ */
+#include "msg21xxa_xxxx_update_bin.h" // for MSG21xxA
+#include "msg21xxa_yyyy_update_bin.h"
+
+#include "msg22xx_xxxx_update_bin.h" // for MSG22xx
+#include "msg22xx_yyyy_update_bin.h"
+
+static u32 _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+static struct work_struct _gUpdateFirmwareBySwIdWork;
+static struct workqueue_struct *_gUpdateFirmwareBySwIdWorkQueue = NULL;
+
+static u32 _gIsUpdateInfoBlockFirst = 0;
+
+
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+static u32 _gGestureWakeupValue[2] = {0};
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+static u8 _gIsDisableFinagerTouch = 0;
+
+/*=============================================================*/
+// GLOBAL VARIABLE DEFINITION
+/*=============================================================*/
+
+u8 g_ChipType = 0;
+u8 g_DemoModePacket[DEMO_MODE_PACKET_LENGTH] = {0};
+
+FirmwareInfo_t g_FirmwareInfo;
+u8 g_LogModePacket[DEBUG_MODE_PACKET_LENGTH] = {0};
+u16 g_FirmwareMode;
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+#if defined(CONFIG_ENABLE_GESTURE_DEBUG_MODE)
+u8 _gGestureWakeupPacket[GESTURE_DEBUG_MODE_PACKET_LENGTH] = {0};
+#elif defined(CONFIG_ENABLE_GESTURE_INFORMATION_MODE)
+u8 _gGestureWakeupPacket[GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH] = {0};
+#else
+u8 _gGestureWakeupPacket[DEMO_MODE_PACKET_LENGTH] = {0}; // for MSG21XXA : packet length(DEMO_MODE_PACKET_LENGTH) , for MSG22XX : packet length(GESTURE_WAKEUP_PACKET_LENGTH)
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+u8 g_GestureDebugFlag = 0x00;
+u8 g_GestureDebugMode = 0x00;
+u8 g_LogGestureDebug[GESTURE_DEBUG_MODE_PACKET_LENGTH] = {0};
+#endif // CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+u32 g_LogGestureInfor[GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH] = {0};
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+u32 g_GestureWakeupMode[2] = {0xFFFFFFFF, 0xFFFFFFFF};
+u8 g_GestureWakeupFlag = 0;
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+u8 g_EnableTpProximity = 0;
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+u8 g_FaceClosingTp = 0; // for QCOM platform -> 1 : close to, 0 : far away
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+u8 g_FaceClosingTp = 1; // for MTK platform -> 0 : close to, 1 : far away
+#endif
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+u8 g_IsUpdateFirmware = 0x00;
+
+/*=============================================================*/
+// LOCAL FUNCTION DECLARATION
+/*=============================================================*/
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+static void _DrvFwCtrlUpdateFirmwareBySwIdDoWork(struct work_struct *pWork);
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+static void _DrvFwCtrlCoordinate(u8 *pRawData, u32 *pTranX, u32 *pTranY);
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+static s32 _DrvFwCtrlMsg22xxUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType);
+
+/*=============================================================*/
+// LOCAL FUNCTION DEFINITION
+/*=============================================================*/
+
+static void _DrvFwCtrlEraseEmemC32(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ /////////////////////////
+ //Erase all
+ /////////////////////////
+
+ // Enter gpio mode
+ RegSet16BitValue(0x161E, 0xBEAF);
+
+ // Before gpio mode, set the control pin as the orginal status
+ RegSet16BitValue(0x1608, 0x0000);
+ RegSetLByteValue(0x160E, 0x10);
+ mdelay(10);
+
+ // ptrim = 1, h'04[2]
+ RegSetLByteValue(0x1608, 0x04);
+ RegSetLByteValue(0x160E, 0x10);
+ mdelay(10);
+
+ // ptm = 6, h'04[12:14] = b'110
+ RegSetLByteValue(0x1609, 0x60);
+ RegSetLByteValue(0x160E, 0x10);
+
+ // pmasi = 1, h'04[6]
+ RegSetLByteValue(0x1608, 0x44);
+ // pce = 1, h'04[11]
+ RegSetLByteValue(0x1609, 0x68);
+ // perase = 1, h'04[7]
+ RegSetLByteValue(0x1608, 0xC4);
+ // pnvstr = 1, h'04[5]
+ RegSetLByteValue(0x1608, 0xE4);
+ // pwe = 1, h'04[9]
+ RegSetLByteValue(0x1609, 0x6A);
+ // trigger gpio load
+ RegSetLByteValue(0x160E, 0x10);
+}
+
+static void _DrvFwCtrlEraseEmemC33(EmemType_e eEmemType)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ // Stop mcu
+ RegSet16BitValue(0x0FE6, 0x0001);
+
+ // Disable watchdog
+ RegSetLByteValue(0x3C60, 0x55);
+ RegSetLByteValue(0x3C61, 0xAA);
+
+ // Set PROGRAM password
+ RegSetLByteValue(0x161A, 0xBA);
+ RegSetLByteValue(0x161B, 0xAB);
+
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80);
+
+ if (eEmemType == EMEM_ALL)
+ {
+ RegSetLByteValue(0x1608, 0x10); //mark
+ }
+
+ RegSetLByteValue(0x1618, 0x40);
+ mdelay(10);
+
+ RegSetLByteValue(0x1618, 0x80);
+
+ // erase trigger
+ if (eEmemType == EMEM_MAIN)
+ {
+ RegSetLByteValue(0x160E, 0x04); //erase main
+ }
+ else
+ {
+ RegSetLByteValue(0x160E, 0x08); //erase all block
+ }
+}
+
+static void _DrvFwCtrlMsg22xxGetTpVendorCode(u8 *pTpVendorCode)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ u16 nRegData1, nRegData2;
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ // RIU password
+ RegSet16BitValue(0x161A, 0xABBA);
+
+ RegSet16BitValue(0x1600, 0xC1E9); // Set start address for tp vendor code on info block(Actually, start reading from 0xC1E8)
+
+ // Enable burst mode
+// RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01));
+
+ RegSetLByteValue(0x160E, 0x01);
+
+ nRegData1 = RegGet16BitValue(0x1604);
+ nRegData2 = RegGet16BitValue(0x1606);
+
+ pTpVendorCode[0] = ((nRegData1 >> 8) & 0xFF);
+ pTpVendorCode[1] = (nRegData2 & 0xFF);
+ pTpVendorCode[2] = ((nRegData2 >> 8) & 0xFF);
+
+ DBG("pTpVendorCode[0] = 0x%x , %c \n", pTpVendorCode[0], pTpVendorCode[0]);
+ DBG("pTpVendorCode[1] = 0x%x , %c \n", pTpVendorCode[1], pTpVendorCode[1]);
+ DBG("pTpVendorCode[2] = 0x%x , %c \n", pTpVendorCode[2], pTpVendorCode[2]);
+
+ // Clear burst mode
+// RegSet16BitValue(0x160C, RegGet16BitValue(0x160C) & (~0x01));
+
+ RegSet16BitValue(0x1600, 0x0000);
+
+ // Clear RIU password
+ RegSet16BitValue(0x161A, 0x0000);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ }
+}
+
+static u16 _DrvFwCtrlMsg22xxGetTrimByte1(void)
+{
+ u16 nRegData = 0;
+ u16 nTrimByte1 = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x161E, 0xBEAF);
+ RegSet16BitValue(0x1608, 0x0006);
+ RegSet16BitValue(0x160E, 0x0010);
+ RegSet16BitValue(0x1608, 0x1006);
+ RegSet16BitValue(0x1600, 0x0001);
+ RegSet16BitValue(0x160E, 0x0010);
+
+ mdelay(10);
+
+ RegSet16BitValue(0x1608, 0x1846);
+ RegSet16BitValue(0x160E, 0x0010);
+
+ mdelay(10);
+
+ nRegData = RegGet16BitValue(0x1624);
+ nRegData = nRegData & 0xFF;
+
+ RegSet16BitValue(0x161E, 0x0000);
+
+ nTrimByte1 = nRegData;
+
+ DBG("nTrimByte1 = 0x%X ***\n", nTrimByte1);
+
+ return nTrimByte1;
+}
+
+static void _DrvFwCtrlMsg22xxChangeVoltage(void)
+{
+ u16 nTrimValue = 0;
+ u16 nNewTrimValue = 0;
+ u16 nTempValue = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x1840, 0xA55A);
+
+ udelay(1000); // delay 1 ms
+
+ nTrimValue = RegGet16BitValue(0x1820);
+
+ udelay(1000); // delay 1 ms
+
+ nTrimValue = nTrimValue & 0x1F;
+ nTempValue = 0x1F & nTrimValue;
+ nNewTrimValue = (nTempValue + 0x07);
+
+ if (nNewTrimValue >= 0x20)
+ {
+ nNewTrimValue = nNewTrimValue - 0x20;
+ }
+ else
+ {
+ nNewTrimValue = nNewTrimValue;
+ }
+
+ if ((nTempValue & 0x10) != 0x10)
+ {
+ if (nNewTrimValue >= 0x0F && nNewTrimValue < 0x1F)
+ {
+ nNewTrimValue = 0x0F;
+ }
+ else
+ {
+ nNewTrimValue = nNewTrimValue;
+ }
+ }
+
+ RegSet16BitValue(0x1842, nNewTrimValue);
+
+ udelay(1000); // delay 1 ms
+
+ RegSet16BitValueOn(0x1842, BIT5);
+
+ udelay(1000); // delay 1 ms
+}
+
+static void _DrvFwCtrlMsg22xxRestoreVoltage(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValueOff(0x1842, BIT5);
+
+ udelay(1000); // delay 1 ms
+
+ RegSet16BitValue(0x1840, 0x0000);
+
+ udelay(1000); // delay 1 ms
+}
+
+static void _DrvFwCtrlMsg22xxEraseEmem(EmemType_e eEmemType)
+{
+ u32 i = 0;
+ u32 nEraseCount = 0;
+ u32 nMaxEraseTimes = 0;
+ u32 nTimeOut = 0;
+ u16 nRegData = 0;
+ u16 nTrimByte1 = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+
+ DBG("Erase start\n");
+
+ // Stop mcu
+ RegSet16BitValue(0x0FE6, 0x0001);
+
+ nTrimByte1 = _DrvFwCtrlMsg22xxGetTrimByte1();
+
+ _DrvFwCtrlMsg22xxChangeVoltage();
+
+ // Disable watchdog
+ RegSetLByteValue(0x3C60, 0x55);
+ RegSetLByteValue(0x3C61, 0xAA);
+
+ // Set PROGRAM password
+ RegSetLByteValue(0x161A, 0xBA);
+ RegSetLByteValue(0x161B, 0xAB);
+
+ if (nTrimByte1 == 0xCA)
+ {
+ nMaxEraseTimes = MAX_ERASE_EFLASH_TIMES;
+ }
+ else
+ {
+ nMaxEraseTimes = 1;
+ }
+
+ for (nEraseCount = 0; nEraseCount < nMaxEraseTimes; nEraseCount ++)
+ {
+ if (eEmemType == EMEM_ALL) // 48KB + 512Byte
+ {
+ DBG("Erase all block %d times\n", nEraseCount);
+
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80);
+ mdelay(100);
+
+ // Chip erase
+ RegSet16BitValue(0x160E, BIT3);
+
+ DBG("Wait erase done flag\n");
+
+ while (1) // Wait erase done flag
+ {
+ nRegData = RegGet16BitValue(0x1610); // Memory status
+ nRegData = nRegData & BIT1;
+
+ DBG("Wait erase done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT1)
+ {
+ break;
+ }
+
+ mdelay(50);
+
+ if ((nTimeOut ++) > 30)
+ {
+ DBG("Erase all block %d times failed. Timeout.\n", nEraseCount);
+
+ if (nEraseCount == (nMaxEraseTimes - 1))
+ {
+ goto EraseEnd;
+ }
+ }
+ }
+ }
+ else if (eEmemType == EMEM_MAIN) // 48KB (32+8+8)
+ {
+ DBG("Erase main block %d times\n", nEraseCount);
+
+ for (i = 0; i < 3; i ++)
+ {
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80);
+ mdelay(10);
+
+ if (i == 0)
+ {
+ RegSet16BitValue(0x1600, 0x0000);
+ }
+ else if (i == 1)
+ {
+ RegSet16BitValue(0x1600, 0x8000);
+ }
+ else if (i == 2)
+ {
+ RegSet16BitValue(0x1600, 0xA000);
+ }
+
+ // Sector erase
+ RegSet16BitValue(0x160E, (RegGet16BitValue(0x160E) | BIT2));
+
+ DBG("Wait erase done flag\n");
+
+ nRegData = 0;
+ nTimeOut = 0;
+
+ while (1) // Wait erase done flag
+ {
+ nRegData = RegGet16BitValue(0x1610); // Memory status
+ nRegData = nRegData & BIT1;
+
+ DBG("Wait erase done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT1)
+ {
+ break;
+ }
+ mdelay(50);
+
+ if ((nTimeOut ++) > 30)
+ {
+ DBG("Erase main block %d times failed. Timeout.\n", nEraseCount);
+
+ if (nEraseCount == (nMaxEraseTimes - 1))
+ {
+ goto EraseEnd;
+ }
+ }
+ }
+ }
+ }
+ else if (eEmemType == EMEM_INFO) // 512Byte
+ {
+ DBG("Erase info block %d times\n", nEraseCount);
+
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80);
+ mdelay(10);
+
+ RegSet16BitValue(0x1600, 0xC000);
+
+ // Sector erase
+ RegSet16BitValue(0x160E, (RegGet16BitValue(0x160E) | BIT2));
+
+ DBG("Wait erase done flag\n");
+
+ while (1) // Wait erase done flag
+ {
+ nRegData = RegGet16BitValue(0x1610); // Memory status
+ nRegData = nRegData & BIT1;
+
+ DBG("Wait erase done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT1)
+ {
+ break;
+ }
+ mdelay(50);
+
+ if ((nTimeOut ++) > 30)
+ {
+ DBG("Erase info block %d times failed. Timeout.\n", nEraseCount);
+
+ if (nEraseCount == (nMaxEraseTimes - 1))
+ {
+ goto EraseEnd;
+ }
+ }
+ }
+ }
+ }
+
+ _DrvFwCtrlMsg22xxRestoreVoltage();
+
+ EraseEnd:
+
+ DBG("Erase end\n");
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+}
+static void _DrvFwCtrlMsg22xxProgramEmem(EmemType_e eEmemType)
+{
+ u32 i, j;
+ u32 nRemainSize = 0, nBlockSize = 0, nSize = 0, index = 0;
+ u32 nTimeOut = 0;
+ u16 nRegData = 0;
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ u8 szDbBusTxData[128] = {0};
+#ifdef CONFIG_ENABLE_UPDATE_FIRMWARE_WITH_SUPPORT_I2C_SPEED_400K
+ u32 nSizePerWrite = 1;
+#else
+ u32 nSizePerWrite = 125;
+#endif //CONFIG_ENABLE_UPDATE_FIRMWARE_WITH_SUPPORT_I2C_SPEED_400K
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+ u8 szDbBusTxData[1024] = {0};
+#ifdef CONFIG_ENABLE_UPDATE_FIRMWARE_WITH_SUPPORT_I2C_SPEED_400K
+ u32 nSizePerWrite = 1;
+#else
+ u32 nSizePerWrite = 1021;
+#endif //CONFIG_ENABLE_UPDATE_FIRMWARE_WITH_SUPPORT_I2C_SPEED_400K
+#endif
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+
+ // Hold reset pin before program
+ RegSetLByteValue(0x1E06, 0x00);
+
+ DBG("Program start\n");
+
+ RegSet16BitValue(0x161A, 0xABBA);
+ RegSet16BitValue(0x1618, (RegGet16BitValue(0x1618) | 0x80));
+
+ if (eEmemType == EMEM_MAIN)
+ {
+ DBG("Program main block\n");
+
+ RegSet16BitValue(0x1600, 0x0000); // Set start address of main block
+ nRemainSize = MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE * 1024; //48KB
+ index = 0;
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ DBG("Program info block\n");
+
+ RegSet16BitValue(0x1600, 0xC000); // Set start address of info block
+ nRemainSize = MSG22XX_FIRMWARE_INFO_BLOCK_SIZE; //512Byte
+ index = MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE * 1024;
+ }
+ else
+ {
+ DBG("eEmemType = %d is not supported for program e-memory.\n", eEmemType);
+ return;
+ }
+
+ RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01)); // Enable burst mode
+
+ // Program start
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x16;
+ szDbBusTxData[2] = 0x02;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3);
+
+ szDbBusTxData[0] = 0x20;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 1);
+
+ i = 0;
+
+ while (nRemainSize > 0)
+ {
+ if (nRemainSize > nSizePerWrite)
+ {
+ nBlockSize = nSizePerWrite;
+ }
+ else
+ {
+ nBlockSize = nRemainSize;
+ }
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x16;
+ szDbBusTxData[2] = 0x02;
+
+ nSize = 3;
+
+ for (j = 0; j < nBlockSize; j ++)
+ {
+ szDbBusTxData[3+j] = _gOneDimenFwData[index+(i*nSizePerWrite)+j];
+ nSize ++;
+ }
+ i ++;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], nSize);
+
+ nRemainSize = nRemainSize - nBlockSize;
+ }
+
+ // Program end
+ szDbBusTxData[0] = 0x21;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 1);
+
+ RegSet16BitValue(0x160C, RegGet16BitValue(0x160C) & (~0x01)); // Clear burst mode
+
+ DBG("Wait write done flag\n");
+
+ while (1) // Wait write done flag
+ {
+ // Polling 0x1610 is 0x0002
+ nRegData = RegGet16BitValue(0x1610); // Memory status
+ nRegData = nRegData & BIT1;
+
+ DBG("Wait write done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT1)
+ {
+ break;
+ }
+ mdelay(10);
+
+ if ((nTimeOut ++) > 30)
+ {
+ DBG("Write failed. Timeout.\n");
+
+ goto ProgramEnd;
+ }
+ }
+
+ ProgramEnd:
+
+ DBG("Program end\n");
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+}
+
+static u32 _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EmemType_e eEmemType)
+{
+ u16 nCrcDown = 0;
+ u32 nRetVal = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+#ifdef CONFIG_ENABLE_UPDATE_FIRMWARE_WITH_SUPPORT_I2C_SPEED_400K
+ // Stop MCU
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Change MCU clock deglich mux source
+ RegSet16BitValue(0x1E54, (RegGet16BitValue(0x1E54) | BIT0));
+
+ // Change PIU clock to 48 MHz
+ RegSet16BitValue(0x1E22, (RegGet16BitValue(0x1E22) | BIT14));
+
+ // Set MCU clock setting
+ RegSet16BitValue(0x1E22, (RegGet16BitValue(0x1E22) & (~(BIT3 | BIT2))));
+
+ // Set DB bus clock setting
+ RegSet16BitValue(0x1E24, (RegGet16BitValue(0x1E24) & (~(BIT3 | BIT2))));
+#endif //CONFIG_ENABLE_UPDATE_FIRMWARE_WITH_SUPPORT_I2C_SPEED_400K
+
+ // RIU password
+ RegSet16BitValue(0x161A, 0xABBA);
+
+ // Set PCE high
+ RegSetLByteValue(0x1618, 0x40);
+
+ if (eEmemType == EMEM_MAIN)
+ {
+ // Set start address and end address for main block
+ RegSet16BitValue(0x1600, 0x0000);
+ RegSet16BitValue(0x1640, 0xBFF8);
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ // Set start address and end address for info block
+ RegSet16BitValue(0x1600, 0xC000);
+ RegSet16BitValue(0x1640, 0xC1F8);
+ }
+
+ // CRC reset
+ RegSet16BitValue(0x164E, 0x0001);
+
+ RegSet16BitValue(0x164E, 0x0000);
+
+ // Trigger CRC check
+ RegSetLByteValue(0x160E, 0x20);
+ mdelay(10);
+
+ nCrcDown = RegGet16BitValue(0x164E);
+
+ while (nCrcDown != 2)
+ {
+ DBG("Wait CRC down\n");
+ mdelay(10);
+ nCrcDown = RegGet16BitValue(0x164E);
+ }
+
+ nRetVal = RegGet16BitValue(0x1652);
+ nRetVal = (nRetVal << 16) | RegGet16BitValue(0x1650);
+
+ DBG("Hardware CRC = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static void _DrvFwCtrlMsg22xxConvertFwDataTwoDimenToOneDimen(u8 szTwoDimenFwData[][1024], u8* pOneDimenFwData)
+{
+ u32 i, j;
+
+ DBG("*** %s() ***\n", __func__);
+
+ for (i = 0; i < (MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE+1); i ++)
+ {
+ if (i < MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE) // i < 48
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ pOneDimenFwData[i*1024+j] = szTwoDimenFwData[i][j];
+ }
+ }
+ else // i == 48
+ {
+ for (j = 0; j < 512; j ++)
+ {
+ pOneDimenFwData[i*1024+j] = szTwoDimenFwData[i][j];
+ }
+ }
+ }
+}
+
+static s32 _DrvFwCtrlParsePacket(u8 *pPacket, u16 nLength, TouchInfo_t *pInfo)
+{
+ u8 nCheckSum = 0;
+ u32 nDeltaX = 0, nDeltaY = 0;
+ u32 nX = 0;
+ u32 nY = 0;
+#ifdef CONFIG_SWAP_X_Y
+ u32 nTempX;
+ u32 nTempY;
+#endif
+ u8 nCheckSumIndex = nLength-1; //Set default checksum index for demo mode
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+ if (g_IsEnableReportRate == 1)
+ {
+ if (g_InterruptCount == 4294967296)
+ {
+ g_InterruptCount = 0; // Reset count if overflow
+ DBG("g_InterruptCount reset to 0\n");
+ }
+
+ if (g_InterruptCount == 0)
+ {
+ // Get start time
+ do_gettimeofday(&g_StartTime);
+
+ DBG("Start time : %lu sec, %lu msec\n", g_StartTime.tv_sec, g_StartTime.tv_usec);
+ }
+
+ g_InterruptCount ++;
+
+ DBG("g_InterruptCount = %d\n", g_InterruptCount);
+ }
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+
+ if (IS_FIRMWARE_DATA_LOG_ENABLED)
+ {
+ if (g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE)
+ {
+ nCheckSumIndex = 7;
+ }
+ else if (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE || g_FirmwareMode == FIRMWARE_MODE_RAW_DATA_MODE)
+ {
+ nCheckSumIndex = 31;
+ }
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ if (g_GestureWakeupFlag == 1)
+ {
+ nCheckSumIndex = nLength-1;
+ }
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+ } //IS_FIRMWARE_DATA_LOG_ENABLED
+
+ nCheckSum = DrvCommonCalculateCheckSum(&pPacket[0], nCheckSumIndex);
+ DBG("check sum : [%x] == [%x]? \n", pPacket[nCheckSumIndex], nCheckSum);
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ if (g_GestureWakeupFlag == 1)
+ {
+ u8 nWakeupMode = 0;
+ u8 bIsCorrectFormat = 0;
+
+ DBG("received raw data from touch panel as following:\n");
+ DBG("pPacket[0]=%x \n pPacket[1]=%x pPacket[2]=%x pPacket[3]=%x pPacket[4]=%x pPacket[5]=%x \n", \
+ pPacket[0], pPacket[1], pPacket[2], pPacket[3], pPacket[4], pPacket[5]);
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX && pPacket[0] == 0xA7 && pPacket[1] == 0x00 && pPacket[2] == 0x06 && pPacket[3] == PACKET_TYPE_GESTURE_WAKEUP)
+ {
+ nWakeupMode = pPacket[4];
+ bIsCorrectFormat = 1;
+ }
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ else if (g_ChipType == CHIP_TYPE_MSG22XX && pPacket[0] == 0xA7 && pPacket[1] == 0x00 && pPacket[2] == 0x80 && pPacket[3] == PACKET_TYPE_GESTURE_DEBUG)
+ {
+ u32 a = 0;
+
+ nWakeupMode = pPacket[4];
+ bIsCorrectFormat = 1;
+
+ for (a = 0; a < 0x80; a ++)
+ {
+ g_LogGestureDebug[a] = pPacket[a];
+ }
+
+ if (!(pPacket[5] >> 7))// LCM Light Flag = 0
+ {
+ nWakeupMode = 0xFE;
+ DBG("gesture debug mode LCM flag = 0\n");
+ }
+ }
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+ else if (g_ChipType == CHIP_TYPE_MSG22XX && pPacket[0] == 0xA7 && pPacket[1] == 0x00 && pPacket[2] == 0x80 && pPacket[3] == PACKET_TYPE_GESTURE_INFORMATION)
+ {
+ u32 a = 0;
+ u32 nTmpCount = 0;
+
+ nWakeupMode = pPacket[4];
+ bIsCorrectFormat = 1;
+
+ for (a = 0; a < 6; a ++)//header
+ {
+ g_LogGestureInfor[nTmpCount] = pPacket[a];
+ nTmpCount++;
+ }
+
+ for (a = 6; a < 126; a = a+3)//parse packet to coordinate
+ {
+ u32 nTranX = 0;
+ u32 nTranY = 0;
+
+ _DrvFwCtrlCoordinate(&pPacket[a], &nTranX, &nTranY);
+ g_LogGestureInfor[nTmpCount] = nTranX;
+ nTmpCount++;
+ g_LogGestureInfor[nTmpCount] = nTranY;
+ nTmpCount++;
+ }
+
+ g_LogGestureInfor[nTmpCount] = pPacket[126]; //Dummy
+ nTmpCount++;
+ g_LogGestureInfor[nTmpCount] = pPacket[127]; //checksum
+ nTmpCount++;
+ DBG("gesture information mode Count = %d\n", nTmpCount);
+ }
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+ else if (g_ChipType == CHIP_TYPE_MSG21XXA && pPacket[0] == 0x52 && pPacket[1] == 0xFF && pPacket[2] == 0xFF && pPacket[3] == 0xFF && pPacket[4] == 0xFF && pPacket[6] == 0xFF)
+ {
+ nWakeupMode = pPacket[5];
+ bIsCorrectFormat = 1;
+ }
+
+ if (bIsCorrectFormat)
+ {
+ DBG("nWakeupMode = 0x%x\n", nWakeupMode);
+
+ switch (nWakeupMode)
+ {
+
+
+ case 0x58:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_DOUBLE_CLICK_FLAG;
+
+ DBG("Light up screen by DOUBLE_CLICK gesture wakeup.\n");
+
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x60:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_UP_DIRECT_FLAG;
+
+ DBG("Light up screen by UP_DIRECT gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_UP, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_UP, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x61:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_DOWN_DIRECT_FLAG;
+
+ DBG("Light up screen by DOWN_DIRECT gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_DOWN, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_DOWN, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x62:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_LEFT_DIRECT_FLAG;
+
+ DBG("Light up screen by LEFT_DIRECT gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_LEFT, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_LEFT, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x63:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RIGHT_DIRECT_FLAG;
+
+ DBG("Light up screen by RIGHT_DIRECT gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_RIGHT, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_RIGHT, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x64:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_m_CHARACTER_FLAG;
+
+ DBG("Light up screen by m_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_M, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_M, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x65:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_W_CHARACTER_FLAG;
+
+ DBG("Light up screen by W_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_W, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_W, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x66:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_C_CHARACTER_FLAG;
+
+ DBG("Light up screen by C_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_C, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_C, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x67:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_e_CHARACTER_FLAG;
+
+ DBG("Light up screen by e_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_E, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_E, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x68:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_V_CHARACTER_FLAG;
+
+ DBG("Light up screen by V_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_V, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_V, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x69:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_O_CHARACTER_FLAG;
+
+ DBG("Light up screen by O_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_O, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_O, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6A:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_S_CHARACTER_FLAG;
+
+ DBG("Light up screen by S_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_S, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_S, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6B:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_Z_CHARACTER_FLAG;
+
+ DBG("Light up screen by Z_CHARACTER gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, KEY_Z, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, KEY_Z, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6C:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE1_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE1_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER1, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER1, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6D:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE2_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE2_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER2, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER2, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x6E:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE3_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE3_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER3, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER3, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+#ifdef CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+ case 0x6F:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE4_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE4_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER4, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER4, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x70:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE5_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE5_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER5, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER5, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x71:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE6_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE6_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER6, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER6, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x72:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE7_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE7_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER7, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER7, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x73:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE8_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE8_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER8, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER8, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x74:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE9_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE9_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER9, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER9, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x75:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE10_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE10_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER10, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER10, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x76:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE11_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE11_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER11, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER11, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x77:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE12_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE12_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER12, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER12, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x78:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE13_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE13_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER13, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER13, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x79:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE14_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE14_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER14, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER14, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7A:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE15_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE15_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER15, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER15, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7B:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE16_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE16_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER16, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER16, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7C:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE17_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE17_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER17, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER17, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7D:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE18_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE18_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER18, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER18, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7E:
+ _gGestureWakeupValue[0] = GESTURE_WAKEUP_MODE_RESERVE19_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE19_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER19, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER19, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x7F:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE20_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE20_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER20, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER20, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x80:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE21_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE21_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER21, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER21, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x81:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE22_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE22_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER22, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER22, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x82:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE23_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE23_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER23, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER23, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x83:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE24_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE24_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER24, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER24, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x84:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE25_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE25_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER25, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER25, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x85:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE26_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE26_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER26, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER26, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x86:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE27_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE27_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER27, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER27, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x87:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE28_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE28_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER28, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER28, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x88:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE29_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE29_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER29, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER29, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x89:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE30_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE30_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER30, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER30, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8A:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE31_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE31_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER31, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER31, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8B:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE32_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE32_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER32, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER32, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8C:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE33_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE33_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER33, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER33, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8D:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE34_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE34_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER34, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER34, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8E:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE35_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE35_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER35, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER35, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x8F:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE36_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE36_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER36, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER36, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x90:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE37_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE37_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER37, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER37, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x91:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE38_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE38_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER38, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER38, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x92:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE39_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE39_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER39, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER39, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x93:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE40_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE40_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER40, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER40, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x94:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE41_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE41_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER41, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER41, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x95:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE42_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE42_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER42, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER42, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x96:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE43_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE43_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER43, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER43, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x97:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE44_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE44_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER44, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER44, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x98:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE45_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE45_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER45, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER45, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x99:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE46_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE46_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER46, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER46, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9A:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE47_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE47_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER47, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER47, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9B:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE48_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE48_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER48, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER48, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9C:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE49_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE49_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER49, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER49, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9D:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE50_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE50_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER50, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER50, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+ case 0x9E:
+ _gGestureWakeupValue[1] = GESTURE_WAKEUP_MODE_RESERVE51_FLAG;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_RESERVE51_FLAG gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER51, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER51, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+#endif //CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ case 0xFF://Gesture Fail
+ _gGestureWakeupValue[1] = 0xFF;
+
+ DBG("Light up screen by GESTURE_WAKEUP_MODE_FAIL gesture wakeup.\n");
+
+// input_report_key(g_InputDevice, RESERVER51, 1);
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+// input_report_key(g_InputDevice, RESERVER51, 0);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);
+ break;
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ default:
+ _gGestureWakeupValue[0] = 0;
+ _gGestureWakeupValue[1] = 0;
+ DBG("Un-supported gesture wakeup mode. Please check your device driver code.\n");
+ break;
+ }
+
+ DBG("_gGestureWakeupValue[0] = 0x%x\n", _gGestureWakeupValue[0]);
+ DBG("_gGestureWakeupValue[1] = 0x%x\n", _gGestureWakeupValue[1]);
+ }
+ else
+ {
+ /*DBG("gesture wakeup fail1111111111111.\n");
+ input_report_key(g_InputDevice, KEY_POWER, 1);
+ input_sync(g_InputDevice);
+ input_report_key(g_InputDevice, KEY_POWER, 0);
+ input_sync(g_InputDevice);*/
+ DBG("gesture wakeup packet format is incorrect.\n");
+ }
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ // Notify android application to retrieve log data mode packet from device driver by sysfs.
+ if (g_GestureKObj != NULL && pPacket[3] == PACKET_TYPE_GESTURE_DEBUG)
+ {
+ char *pEnvp[2];
+ s32 nRetVal = 0;
+
+ pEnvp[0] = "STATUS=GET_GESTURE_DEBUG";
+ pEnvp[1] = NULL;
+
+ nRetVal = kobject_uevent_env(g_GestureKObj, KOBJ_CHANGE, pEnvp);
+ DBG("kobject_uevent_env() nRetVal = %d\n", nRetVal);
+
+ }
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+ return -1;
+ }
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+ DBG("received raw data from touch panel as following:\n");
+ DBG("pPacket[0]=%x \n pPacket[1]=%x pPacket[2]=%x pPacket[3]=%x pPacket[4]=%x \n pPacket[5]=%x pPacket[6]=%x pPacket[7]=%x \n", \
+ pPacket[0], pPacket[1], pPacket[2], pPacket[3], pPacket[4], pPacket[5], pPacket[6], pPacket[7]);
+
+ if ((pPacket[nCheckSumIndex] == nCheckSum) && (pPacket[0] == 0x52)) // check the checksum of packet
+ {
+ nX = (((pPacket[1] & 0xF0) << 4) | pPacket[2]); // parse the packet to coordinate
+ nY = (((pPacket[1] & 0x0F) << 8) | pPacket[3]);
+
+ nDeltaX = (((pPacket[4] & 0xF0) << 4) | pPacket[5]);
+ nDeltaY = (((pPacket[4] & 0x0F) << 8) | pPacket[6]);
+
+ DBG("[x,y]=[%d,%d]\n", nX, nY);
+ DBG("[delta_x,delta_y]=[%d,%d]\n", nDeltaX, nDeltaY);
+
+#ifdef CONFIG_SWAP_X_Y
+ nTempY = nX;
+ nTempX = nY;
+ nX = nTempX;
+ nY = nTempY;
+
+ nTempY = nDeltaX;
+ nTempX = nDeltaY;
+ nDeltaX = nTempX;
+ nDeltaY = nTempY;
+#endif
+
+#ifdef CONFIG_REVERSE_X
+ nX = 2047 - nX;
+ nDeltaX = 4095 - nDeltaX;
+#endif
+
+#ifdef CONFIG_REVERSE_Y
+ nY = 2047 - nY;
+ nDeltaY = 4095 - nDeltaY;
+#endif
+
+ /*
+ * pPacket[0]:id, pPacket[1]~pPacket[3]:the first point abs, pPacket[4]~pPacket[6]:the relative distance between the first point abs and the second point abs
+ * when pPacket[1]~pPacket[4], pPacket[6] is 0xFF, keyevent, pPacket[5] to judge which key press.
+ * pPacket[1]~pPacket[6] all are 0xFF, release touch
+ */
+ if ((pPacket[1] == 0xFF) && (pPacket[2] == 0xFF) && (pPacket[3] == 0xFF) && (pPacket[4] == 0xFF) && (pPacket[6] == 0xFF))
+ {
+ pInfo->tPoint[0].nX = 0; // final X coordinate
+ pInfo->tPoint[0].nY = 0; // final Y coordinate
+
+ if ((pPacket[5] != 0x00) && (pPacket[5] != 0xFF)) /* pPacket[5] is key value */
+ { /* 0x00 is key up, 0xff is touch screen up */
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ DBG("g_EnableTpProximity = %d, pPacket[5] = 0x%x\n", g_EnableTpProximity, pPacket[5]);
+
+ if (g_EnableTpProximity && ((pPacket[5] == 0x80) || (pPacket[5] == 0x40)))
+ {
+ if (pPacket[5] == 0x80) // close to
+ {
+ g_FaceClosingTp = 1;
+ }
+ else if (pPacket[5] == 0x40) // far away
+ {
+ g_FaceClosingTp = 0;
+ }
+
+ DBG("g_FaceClosingTp = %d\n", g_FaceClosingTp);
+
+ return -1;
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ if (g_EnableTpProximity && ((pPacket[5] == 0x80) || (pPacket[5] == 0x40)))
+ {
+ int nErr;
+ hwm_sensor_data tSensorData;
+
+ if (pPacket[5] == 0x80) // close to
+ {
+ g_FaceClosingTp = 0;
+ }
+ else if (pPacket[5] == 0x40) // far away
+ {
+ g_FaceClosingTp = 1;
+ }
+
+ DBG("g_FaceClosingTp = %d\n", g_FaceClosingTp);
+
+ // map and store data to hwm_sensor_data
+ tSensorData.values[0] = DrvPlatformLyrGetTpPsData();
+ tSensorData.value_divide = 1;
+ tSensorData.status = SENSOR_STATUS_ACCURACY_MEDIUM;
+ // let up layer to know
+ if ((nErr = hwmsen_get_interrupt_data(ID_PROXIMITY, &tSensorData)))
+ {
+ DBG("call hwmsen_get_interrupt_data() failed = %d\n", nErr);
+ }
+
+ return -1;
+ }
+#endif
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+ /* 0x00 is key up, 0xff is touch screen up */
+ DBG("touch key down pPacket[5]=%d\n", pPacket[5]);
+
+ pInfo->nFingerNum = 1;
+ pInfo->nTouchKeyCode = pPacket[5];
+ pInfo->nTouchKeyMode = 1;
+
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ pInfo->nFingerNum = 1;
+ pInfo->nTouchKeyCode = 0;
+ pInfo->nTouchKeyMode = 0;
+
+ if (pPacket[5] == 4) // TOUCH_KEY_HOME
+ {
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[1][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[1][1];
+ }
+ else if (pPacket[5] == 1) // TOUCH_KEY_MENU
+ {
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[0][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[0][1];
+ }
+ else if (pPacket[5] == 2) // TOUCH_KEY_BACK
+ {
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[2][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[2][1];
+ }
+ else if (pPacket[5] == 8) // TOUCH_KEY_SEARCH
+ {
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[3][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[3][1];
+ }
+ else
+ {
+ DBG("multi-key is pressed.\n");
+
+ return -1;
+ }
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ }
+ else
+ { /* key up or touch up */
+ DBG("touch end\n");
+ pInfo->nFingerNum = 0; //touch end
+ pInfo->nTouchKeyCode = 0;
+ pInfo->nTouchKeyMode = 0;
+ }
+ }
+ else
+ {
+ pInfo->nTouchKeyMode = 0; //Touch on screen...
+
+// if ((nDeltaX == 0) && (nDeltaY == 0))
+ if (
+#ifdef CONFIG_REVERSE_X
+ (nDeltaX == 4095)
+#else
+ (nDeltaX == 0)
+#endif
+ &&
+#ifdef CONFIG_REVERSE_Y
+ (nDeltaY == 4095)
+#else
+ (nDeltaY == 0)
+#endif
+ )
+ { /* one touch point */
+ pInfo->nFingerNum = 1; // one touch
+ pInfo->tPoint[0].nX = (nX * TOUCH_SCREEN_X_MAX) / TPD_WIDTH;
+ pInfo->tPoint[0].nY = (nY * TOUCH_SCREEN_Y_MAX) / TPD_HEIGHT;
+ DBG("[%s]: [x,y]=[%d,%d]\n", __func__, nX, nY);
+ DBG("[%s]: point[x,y]=[%d,%d]\n", __func__, pInfo->tPoint[0].nX, pInfo->tPoint[0].nY);
+ }
+ else
+ { /* two touch points */
+ u32 nX2, nY2;
+
+ pInfo->nFingerNum = 2; // two touch
+ /* Finger 1 */
+ pInfo->tPoint[0].nX = (nX * TOUCH_SCREEN_X_MAX) / TPD_WIDTH;
+ pInfo->tPoint[0].nY = (nY * TOUCH_SCREEN_Y_MAX) / TPD_HEIGHT;
+ DBG("[%s]: point1[x,y]=[%d,%d]\n", __func__, pInfo->tPoint[0].nX, pInfo->tPoint[0].nY);
+ /* Finger 2 */
+ if (nDeltaX > 2048) // transform the unsigned value to signed value
+ {
+ nDeltaX -= 4096;
+ }
+
+ if (nDeltaY > 2048)
+ {
+ nDeltaY -= 4096;
+ }
+
+ nX2 = (u32)(nX + nDeltaX);
+ nY2 = (u32)(nY + nDeltaY);
+
+ pInfo->tPoint[1].nX = (nX2 * TOUCH_SCREEN_X_MAX) / TPD_WIDTH;
+ pInfo->tPoint[1].nY = (nY2 * TOUCH_SCREEN_Y_MAX) / TPD_HEIGHT;
+ DBG("[%s]: point2[x,y]=[%d,%d]\n", __func__, pInfo->tPoint[1].nX, pInfo->tPoint[1].nY);
+ }
+ }
+ }
+ else if (pPacket[nCheckSumIndex] == nCheckSum && pPacket[0] == 0x62)
+ {
+ nX = ((pPacket[1] << 8) | pPacket[2]); // Position_X
+ nY = ((pPacket[3] << 8) | pPacket[4]); // Position_Y
+
+ nDeltaX = ((pPacket[13] << 8) | pPacket[14]); // Distance_X
+ nDeltaY = ((pPacket[15] << 8) | pPacket[16]); // Distance_Y
+
+ DBG("[x,y]=[%d,%d]\n", nX, nY);
+ DBG("[delta_x,delta_y]=[%d,%d]\n", nDeltaX, nDeltaY);
+
+#ifdef CONFIG_SWAP_X_Y
+ nTempY = nX;
+ nTempX = nY;
+ nX = nTempX;
+ nY = nTempY;
+
+ nTempY = nDeltaX;
+ nTempX = nDeltaY;
+ nDeltaX = nTempX;
+ nDeltaY = nTempY;
+#endif
+
+#ifdef CONFIG_REVERSE_X
+ nX = 2047 - nX;
+ nDeltaX = 4095 - nDeltaX;
+#endif
+
+#ifdef CONFIG_REVERSE_Y
+ nY = 2047 - nY;
+ nDeltaY = 4095 - nDeltaY;
+#endif
+
+ /*
+ * pPacket[0]:id, pPacket[1]~pPacket[4]:the first point abs, pPacket[13]~pPacket[16]:the relative distance between the first point abs and the second point abs
+ * when pPacket[1]~pPacket[7] is 0xFF, keyevent, pPacket[8] to judge which key press.
+ * pPacket[1]~pPacket[8] all are 0xFF, release touch
+ */
+ if ((pPacket[1] == 0xFF) && (pPacket[2] == 0xFF) && (pPacket[3] == 0xFF) && (pPacket[4] == 0xFF) && (pPacket[5] == 0xFF) && (pPacket[6] == 0xFF) && (pPacket[7] == 0xFF))
+ {
+ pInfo->tPoint[0].nX = 0; // final X coordinate
+ pInfo->tPoint[0].nY = 0; // final Y coordinate
+
+ if ((pPacket[8] != 0x00) && (pPacket[8] != 0xFF)) /* pPacket[8] is key value */
+ { /* 0x00 is key up, 0xff is touch screen up */
+ DBG("touch key down pPacket[8]=%d\n", pPacket[8]);
+ pInfo->nFingerNum = 1;
+ pInfo->nTouchKeyCode = pPacket[8];
+ pInfo->nTouchKeyMode = 1;
+
+#ifdef CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ pInfo->nFingerNum = 1;
+ pInfo->nTouchKeyCode = 0;
+ pInfo->nTouchKeyMode = 0;
+
+ if (pPacket[8] == 4) // TOUCH_KEY_HOME
+ {
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[1][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[1][1];
+ }
+ else if (pPacket[8] == 1) // TOUCH_KEY_MENU
+ {
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[0][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[0][1];
+ }
+ else if (pPacket[8] == 2) // TOUCH_KEY_BACK
+ {
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[2][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[2][1];
+ }
+ else if (pPacket[8] == 8) // TOUCH_KEY_SEARCH
+ {
+ pInfo->tPoint[0].nX = g_TpVirtualKeyDimLocal[3][0];
+ pInfo->tPoint[0].nY = g_TpVirtualKeyDimLocal[3][1];
+ }
+ else
+ {
+ DBG("multi-key is pressed.\n");
+
+ return -1;
+ }
+#endif //CONFIG_ENABLE_REPORT_KEY_WITH_COORDINATE
+ }
+ else
+ { /* key up or touch up */
+ DBG("touch end\n");
+ pInfo->nFingerNum = 0; //touch end
+ pInfo->nTouchKeyCode = 0;
+ pInfo->nTouchKeyMode = 0;
+ }
+ }
+ else
+ {
+ pInfo->nTouchKeyMode = 0; //Touch on screen...
+
+// if ((nDeltaX == 0) && (nDeltaY == 0))
+ if (
+#ifdef CONFIG_REVERSE_X
+ (nDeltaX == 4095)
+#else
+ (nDeltaX == 0)
+#endif
+ &&
+#ifdef CONFIG_REVERSE_Y
+ (nDeltaY == 4095)
+#else
+ (nDeltaY == 0)
+#endif
+ )
+ { /* one touch point */
+ pInfo->nFingerNum = 1; // one touch
+ pInfo->tPoint[0].nX = (nX * TOUCH_SCREEN_X_MAX) / TPD_WIDTH;
+ pInfo->tPoint[0].nY = (nY * TOUCH_SCREEN_Y_MAX) / TPD_HEIGHT;
+ DBG("[%s]: [x,y]=[%d,%d]\n", __func__, nX, nY);
+ DBG("[%s]: point[x,y]=[%d,%d]\n", __func__, pInfo->tPoint[0].nX, pInfo->tPoint[0].nY);
+ }
+ else
+ { /* two touch points */
+ u32 nX2, nY2;
+
+ pInfo->nFingerNum = 2; // two touch
+ /* Finger 1 */
+ pInfo->tPoint[0].nX = (nX * TOUCH_SCREEN_X_MAX) / TPD_WIDTH;
+ pInfo->tPoint[0].nY = (nY * TOUCH_SCREEN_Y_MAX) / TPD_HEIGHT;
+ DBG("[%s]: point1[x,y]=[%d,%d]\n", __func__, pInfo->tPoint[0].nX, pInfo->tPoint[0].nY);
+ /* Finger 2 */
+ if (nDeltaX > 2048) // transform the unsigned value to signed value
+ {
+ nDeltaX -= 4096;
+ }
+
+ if (nDeltaY > 2048)
+ {
+ nDeltaY -= 4096;
+ }
+
+ nX2 = (u32)(nX + nDeltaX);
+ nY2 = (u32)(nY + nDeltaY);
+
+ pInfo->tPoint[1].nX = (nX2 * TOUCH_SCREEN_X_MAX) / TPD_WIDTH;
+ pInfo->tPoint[1].nY = (nY2 * TOUCH_SCREEN_Y_MAX) / TPD_HEIGHT;
+ DBG("[%s]: point2[x,y]=[%d,%d]\n", __func__, pInfo->tPoint[1].nX, pInfo->tPoint[1].nY);
+ }
+
+ // Notify android application to retrieve log data mode packet from device driver by sysfs.
+ if (g_TouchKObj != NULL)
+ {
+ char *pEnvp[2];
+ s32 nRetVal = 0;
+
+ pEnvp[0] = "STATUS=GET_PACKET";
+ pEnvp[1] = NULL;
+
+ nRetVal = kobject_uevent_env(g_TouchKObj, KOBJ_CHANGE, pEnvp);
+ DBG("kobject_uevent_env() nRetVal = %d\n", nRetVal);
+ }
+ }
+ }
+ else
+ {
+ DBG("pPacket[0]=0x%x, pPacket[7]=0x%x, nCheckSum=0x%x\n", pPacket[0], pPacket[7], nCheckSum);
+
+ if (pPacket[nCheckSumIndex] != nCheckSum)
+ {
+ DBG("WRONG CHECKSUM\n");
+ return -1;
+ }
+
+ if (g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE && pPacket[0] != 0x52)
+ {
+ DBG("WRONG DEMO MODE HEADER\n");
+ return -1;
+ }
+ else if (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE && pPacket[0] != 0x62)
+ {
+ DBG("WRONG DEBUG MODE HEADER\n");
+ return -1;
+ }
+ else if (g_FirmwareMode == FIRMWARE_MODE_RAW_DATA_MODE && pPacket[0] != 0x62)
+ {
+ DBG("WRONG RAW DATA MODE HEADER\n");
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+static void _DrvFwCtrlStoreFirmwareData(u8 *pBuf, u32 nSize)
+{
+ u32 nCount = nSize / 1024;
+ u32 nRemainder = nSize % 1024;
+ u32 i;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (nCount > 0) // nSize >= 1024
+ {
+ for (i = 0; i < nCount; i ++)
+ {
+ memcpy(g_FwData[g_FwDataCount], pBuf+(i*1024), 1024);
+
+ g_FwDataCount ++;
+ }
+
+ if (nRemainder > 0) // Handle special firmware size like MSG22XX(48.5KB)
+ {
+ DBG("nRemainder = %d\n", nRemainder);
+
+ memcpy(g_FwData[g_FwDataCount], pBuf+(i*1024), nRemainder);
+
+ g_FwDataCount ++;
+ }
+ }
+ else // nSize < 1024
+ {
+ if (nSize > 0)
+ {
+ memcpy(g_FwData[g_FwDataCount], pBuf, nSize);
+
+ g_FwDataCount ++;
+ }
+ }
+
+ DBG("*** g_FwDataCount = %d ***\n", g_FwDataCount);
+
+ if (pBuf != NULL)
+ {
+ DBG("*** buf[0] = %c ***\n", pBuf[0]);
+ }
+}
+
+static u16 _DrvFwCtrlMsg21xxaGetSwId(EmemType_e eEmemType)
+{
+ u16 nRetVal = 0;
+ u16 nRegData = 0;
+ u8 szDbBusTxData[5] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xA4AB); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x5B58
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x5B58);
+
+ szDbBusTxData[0] = 0x72;
+ if (eEmemType == EMEM_MAIN) // Read SW ID from main block
+ {
+ szDbBusTxData[1] = 0x7F;
+ szDbBusTxData[2] = 0x55;
+ }
+ else if (eEmemType == EMEM_INFO) // Read SW ID from info block
+ {
+ szDbBusTxData[1] = 0x83;
+ szDbBusTxData[2] = 0x00;
+ }
+ szDbBusTxData[3] = 0x00;
+ szDbBusTxData[4] = 0x04;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 5);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ DBG("szDbBusRxData[0,1,2,3] = 0x%x,0x%x,0x%x,0x%x\n", szDbBusRxData[0], szDbBusRxData[1], szDbBusRxData[2], szDbBusRxData[3]);
+
+ if ((szDbBusRxData[0] >= 0x30 && szDbBusRxData[0] <= 0x39)
+ &&(szDbBusRxData[1] >= 0x30 && szDbBusRxData[1] <= 0x39)
+ &&(szDbBusRxData[2] >= 0x31 && szDbBusRxData[2] <= 0x39))
+ {
+ nRetVal = (szDbBusRxData[0]-0x30)*100+(szDbBusRxData[1]-0x30)*10+(szDbBusRxData[2]-0x30);
+ }
+
+ DBG("SW ID = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static u16 _DrvFwCtrlMsg22xxGetSwId(EmemType_e eEmemType)
+{
+ u16 nRetVal = 0;
+ u16 nRegData1 = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ // RIU password
+ RegSet16BitValue(0x161A, 0xABBA);
+
+ if (eEmemType == EMEM_MAIN) // Read SW ID from main block
+ {
+ RegSet16BitValue(0x1600, 0xBFF4); // Set start address for main block SW ID
+ }
+ else if (eEmemType == EMEM_INFO) // Read SW ID from info block
+ {
+ RegSet16BitValue(0x1600, 0xC1EC); // Set start address for info block SW ID
+ }
+
+ /*
+ Ex. SW ID in Main Block :
+ Major low byte at address 0xBFF4
+ Major high byte at address 0xBFF5
+
+ SW ID in Info Block :
+ Major low byte at address 0xC1EC
+ Major high byte at address 0xC1ED
+ */
+
+ // Enable burst mode
+// RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01));
+
+ RegSetLByteValue(0x160E, 0x01);
+
+ nRegData1 = RegGet16BitValue(0x1604);
+// nRegData2 = RegGet16BitValue(0x1606);
+
+ nRetVal = ((nRegData1 >> 8) & 0xFF) << 8;
+ nRetVal |= (nRegData1 & 0xFF);
+
+ // Clear burst mode
+// RegSet16BitValue(0x160C, RegGet16BitValue(0x160C) & (~0x01));
+
+ RegSet16BitValue(0x1600, 0x0000);
+
+ // Clear RIU password
+ RegSet16BitValue(0x161A, 0x0000);
+
+ DBG("SW ID = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+u32 DrvFwCtrlReadDQMemValue(u16 nAddr)
+{
+ // TODO : not support yet
+
+ return 0;
+}
+
+void DrvFwCtrlWriteDQMemValue(u16 nAddr, u32 nData)
+{
+ // TODO : not support yet
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+//-------------------------Start of SW ID for MSG22XX----------------------------//
+
+static u32 _DrvFwCtrlMsg22xxRetrieveFirmwareCrcFromEFlash(EmemType_e eEmemType)
+{
+ u32 nRetVal = 0;
+ u16 nRegData1 = 0, nRegData2 = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ // RIU password
+ RegSet16BitValue(0x161A, 0xABBA);
+
+ if (eEmemType == EMEM_MAIN) // Read main block CRC(48KB-4) from main block
+ {
+ RegSet16BitValue(0x1600, 0xBFFC); // Set start address for main block CRC
+ }
+ else if (eEmemType == EMEM_INFO) // Read info block CRC(512Byte-4) from info block
+ {
+ RegSet16BitValue(0x1600, 0xC1FC); // Set start address for info block CRC
+ }
+
+ // Enable burst mode
+ RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01));
+
+ RegSetLByteValue(0x160E, 0x01);
+
+ nRegData1 = RegGet16BitValue(0x1604);
+ nRegData2 = RegGet16BitValue(0x1606);
+
+ nRetVal = ((nRegData2 >> 8) & 0xFF) << 24;
+ nRetVal |= (nRegData2 & 0xFF) << 16;
+ nRetVal |= ((nRegData1 >> 8) & 0xFF) << 8;
+ nRetVal |= (nRegData1 & 0xFF);
+
+ DBG("CRC = 0x%x\n", nRetVal);
+
+ // Clear burst mode
+ RegSet16BitValue(0x160C, RegGet16BitValue(0x160C) & (~0x01));
+
+ RegSet16BitValue(0x1600, 0x0000);
+
+ // Clear RIU password
+ RegSet16BitValue(0x161A, 0x0000);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static u32 _DrvFwCtrlMsg22xxRetrieveFrimwareCrcFromBinFile(u8 szTmpBuf[], EmemType_e eEmemType)
+{
+ u32 nRetVal = 0;
+
+ DBG("*** %s() eEmemType = %d ***\n", __func__, eEmemType);
+
+ if (szTmpBuf != NULL)
+ {
+ if (eEmemType == EMEM_MAIN) // Read main block CRC(48KB-4) from bin file
+ {
+ nRetVal = szTmpBuf[0xBFFF] << 24;
+ nRetVal |= szTmpBuf[0xBFFE] << 16;
+ nRetVal |= szTmpBuf[0xBFFD] << 8;
+ nRetVal |= szTmpBuf[0xBFFC];
+ }
+ else if (eEmemType == EMEM_INFO) // Read info block CRC(512Byte-4) from bin file
+ {
+ nRetVal = szTmpBuf[0xC1FF] << 24;
+ nRetVal |= szTmpBuf[0xC1FE] << 16;
+ nRetVal |= szTmpBuf[0xC1FD] << 8;
+ nRetVal |= szTmpBuf[0xC1FC];
+ }
+ }
+
+ return nRetVal;
+}
+
+static s32 _DrvFwCtrlMsg22xxUpdateFirmwareBySwId(void)
+{
+ s32 nRetVal = -1;
+ u32 nCrcInfoA = 0, nCrcInfoB = 0, nCrcMainA = 0, nCrcMainB = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("_gIsUpdateInfoBlockFirst = %d, g_IsUpdateFirmware = 0x%x\n", _gIsUpdateInfoBlockFirst, g_IsUpdateFirmware);
+
+ _DrvFwCtrlMsg22xxConvertFwDataTwoDimenToOneDimen(g_FwData, _gOneDimenFwData);
+
+ if (_gIsUpdateInfoBlockFirst == 1)
+ {
+ if ((g_IsUpdateFirmware & 0x10) == 0x10)
+ {
+ _DrvFwCtrlMsg22xxEraseEmem(EMEM_INFO);
+ _DrvFwCtrlMsg22xxProgramEmem(EMEM_INFO);
+
+ nCrcInfoA = _DrvFwCtrlMsg22xxRetrieveFrimwareCrcFromBinFile(_gOneDimenFwData, EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_INFO);
+
+ DBG("nCrcInfoA = 0x%x, nCrcInfoB = 0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB)
+ {
+ _DrvFwCtrlMsg22xxEraseEmem(EMEM_MAIN);
+ _DrvFwCtrlMsg22xxProgramEmem(EMEM_MAIN);
+
+ nCrcMainA = _DrvFwCtrlMsg22xxRetrieveFrimwareCrcFromBinFile(_gOneDimenFwData, EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_MAIN);
+
+ DBG("nCrcMainA = 0x%x, nCrcMainB = 0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ g_IsUpdateFirmware = 0x00;
+ nRetVal = 0;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else if ((g_IsUpdateFirmware & 0x01) == 0x01)
+ {
+ _DrvFwCtrlMsg22xxEraseEmem(EMEM_MAIN);
+ _DrvFwCtrlMsg22xxProgramEmem(EMEM_MAIN);
+
+ nCrcMainA = _DrvFwCtrlMsg22xxRetrieveFrimwareCrcFromBinFile(_gOneDimenFwData, EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_MAIN);
+
+ DBG("nCrcMainA=0x%x, nCrcMainB=0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ g_IsUpdateFirmware = 0x00;
+ nRetVal = 0;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ }
+ else //_gIsUpdateInfoBlockFirst == 0
+ {
+ if ((g_IsUpdateFirmware & 0x10) == 0x10)
+ {
+ _DrvFwCtrlMsg22xxEraseEmem(EMEM_MAIN);
+ _DrvFwCtrlMsg22xxProgramEmem(EMEM_MAIN);
+
+ nCrcMainA = _DrvFwCtrlMsg22xxRetrieveFrimwareCrcFromBinFile(_gOneDimenFwData, EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_MAIN);
+
+ DBG("nCrcMainA=0x%x, nCrcMainB=0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ _DrvFwCtrlMsg22xxEraseEmem(EMEM_INFO);
+ _DrvFwCtrlMsg22xxProgramEmem(EMEM_INFO);
+
+ nCrcInfoA = _DrvFwCtrlMsg22xxRetrieveFrimwareCrcFromBinFile(_gOneDimenFwData, EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_INFO);
+
+ DBG("nCrcInfoA=0x%x, nCrcInfoB=0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB)
+ {
+ g_IsUpdateFirmware = 0x00;
+ nRetVal = 0;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x11;
+ }
+ }
+ else if ((g_IsUpdateFirmware & 0x01) == 0x01)
+ {
+ _DrvFwCtrlMsg22xxEraseEmem(EMEM_INFO);
+ _DrvFwCtrlMsg22xxProgramEmem(EMEM_INFO);
+
+ nCrcInfoA = _DrvFwCtrlMsg22xxRetrieveFrimwareCrcFromBinFile(_gOneDimenFwData, EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_INFO);
+
+ DBG("nCrcInfoA=0x%x, nCrcInfoB=0x%x\n", nCrcInfoA, nCrcInfoB);
+
+ if (nCrcInfoA == nCrcInfoB)
+ {
+ g_IsUpdateFirmware = 0x00;
+ nRetVal = 0;
+ }
+ else
+ {
+ g_IsUpdateFirmware = 0x01;
+ }
+ }
+ }
+
+ return nRetVal;
+}
+
+void _DrvFwCtrlMsg22xxCheckFirmwareUpdateBySwId(void)
+{
+ u32 nCrcMainA, nCrcInfoA, nCrcMainB, nCrcInfoB;
+ u32 i;
+ u16 nUpdateBinMajor = 0, nUpdateBinMinor = 0;
+ u16 nMajor = 0, nMinor = 0;
+ u8 *pVersion = NULL;
+ Msg22xxSwId_e eSwId = MSG22XX_SW_ID_UNDEFINED;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ nCrcMainA = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_MAIN);
+ nCrcMainB = _DrvFwCtrlMsg22xxRetrieveFirmwareCrcFromEFlash(EMEM_MAIN);
+
+ nCrcInfoA = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_INFO);
+ nCrcInfoB = _DrvFwCtrlMsg22xxRetrieveFirmwareCrcFromEFlash(EMEM_INFO);
+
+ _gUpdateFirmwareBySwIdWorkQueue = create_singlethread_workqueue("update_firmware_by_sw_id");
+ INIT_WORK(&_gUpdateFirmwareBySwIdWork, _DrvFwCtrlUpdateFirmwareBySwIdDoWork);
+
+ DBG("nCrcMainA=0x%x, nCrcInfoA=0x%x, nCrcMainB=0x%x, nCrcInfoB=0x%x\n", nCrcMainA, nCrcInfoA, nCrcMainB, nCrcInfoB);
+
+ if (nCrcMainA == nCrcMainB && nCrcInfoA == nCrcInfoB) // Case 1. Main Block:OK, Info Block:OK
+ {
+ eSwId = _DrvFwCtrlMsg22xxGetSwId(EMEM_MAIN);
+
+ if (eSwId == MSG22XX_SW_ID_XXXX)
+ {
+ nUpdateBinMajor = msg22xx_xxxx_update_bin[0xBFF5]<<8 | msg22xx_xxxx_update_bin[0xBFF4];
+ nUpdateBinMinor = msg22xx_xxxx_update_bin[0xBFF7]<<8 | msg22xx_xxxx_update_bin[0xBFF6];
+ }
+ else if (eSwId == MSG22XX_SW_ID_YYYY)
+ {
+ nUpdateBinMajor = msg22xx_yyyy_update_bin[0xBFF5]<<8 | msg22xx_yyyy_update_bin[0xBFF4];
+ nUpdateBinMinor = msg22xx_yyyy_update_bin[0xBFF7]<<8 | msg22xx_yyyy_update_bin[0xBFF6];
+ }
+ else //eSwId == MSG22XX_SW_ID_UNDEFINED
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG22XX_SW_ID_UNDEFINED;
+ nUpdateBinMajor = 0;
+ nUpdateBinMinor = 0;
+ }
+
+ DrvFwCtrlGetCustomerFirmwareVersion(&nMajor, &nMinor, &pVersion);
+
+ DBG("eSwId=0x%x, nMajor=%d, nMinor=%d, nUpdateBinMajor=%d, nUpdateBinMinor=%d\n", eSwId, nMajor, nMinor, nUpdateBinMajor, nUpdateBinMinor);
+
+ if (nUpdateBinMinor > nMinor)
+ {
+ if (eSwId == MSG22XX_SW_ID_XXXX)
+ {
+ for (i = 0; i < (MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE+1); i ++)
+ {
+ if (i < MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE) // i < 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_xxxx_update_bin[i*1024]), 1024);
+ }
+ else // i == 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_xxxx_update_bin[i*1024]), 512);
+ }
+ }
+ }
+ else if (eSwId == MSG22XX_SW_ID_YYYY)
+ {
+ for (i = 0; i < (MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE+1); i ++)
+ {
+ if (i < MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE) // i < 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_yyyy_update_bin[i*1024]), 1024);
+ }
+ else // i == 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_yyyy_update_bin[i*1024]), 512);
+ }
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG22XX_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG22XX_SW_ID_UNDEFINED && eSwId != 0x0000 && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ _gIsUpdateInfoBlockFirst = 1; // Set 1 for indicating main block is complete
+ g_IsUpdateFirmware = 0x11;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else
+ {
+ DBG("The update bin version is older than or equal to the current firmware version on e-flash.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else if (nCrcMainA == nCrcMainB && nCrcInfoA != nCrcInfoB) // Case 2. Main Block:OK, Info Block:FAIL
+ {
+ eSwId = _DrvFwCtrlMsg22xxGetSwId(EMEM_MAIN);
+
+ DBG("eSwId=0x%x\n", eSwId);
+
+ if (eSwId == MSG22XX_SW_ID_XXXX)
+ {
+ for (i = 0; i < (MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE+1); i ++)
+ {
+ if (i < MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE) // i < 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_xxxx_update_bin[i*1024]), 1024);
+ }
+ else // i == 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_xxxx_update_bin[i*1024]), 512);
+ }
+ }
+ }
+ else if (eSwId == MSG22XX_SW_ID_YYYY)
+ {
+ for (i = 0; i < (MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE+1); i ++)
+ {
+ if (i < MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE) // i < 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_yyyy_update_bin[i*1024]), 1024);
+ }
+ else // i == 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_yyyy_update_bin[i*1024]), 512);
+ }
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG22XX_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG22XX_SW_ID_UNDEFINED && eSwId != 0x0000 && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ _gIsUpdateInfoBlockFirst = 1; // Set 1 for indicating main block is complete
+ g_IsUpdateFirmware = 0x11;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else if (nCrcMainA != nCrcMainB && nCrcInfoA == nCrcInfoB) // Case 3. Main Block:FAIL, Info Block:OK
+ {
+ eSwId = _DrvFwCtrlMsg22xxGetSwId(EMEM_INFO);
+
+ DBG("eSwId=0x%x\n", eSwId);
+
+ if (eSwId == MSG22XX_SW_ID_XXXX)
+ {
+ for (i = 0; i < (MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE+1); i ++)
+ {
+ if (i < MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE) // i < 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_xxxx_update_bin[i*1024]), 1024);
+ }
+ else // i == 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_xxxx_update_bin[i*1024]), 512);
+ }
+ }
+ }
+ else if (eSwId == MSG22XX_SW_ID_YYYY)
+ {
+ for (i = 0; i < (MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE+1); i ++)
+ {
+ if (i < MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE) // i < 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_yyyy_update_bin[i*1024]), 1024);
+ }
+ else // i == 48
+ {
+ _DrvFwCtrlStoreFirmwareData(&(msg22xx_yyyy_update_bin[i*1024]), 512);
+ }
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG22XX_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG22XX_SW_ID_UNDEFINED && eSwId != 0x0000 && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ _gIsUpdateInfoBlockFirst = 0; // Set 0 for indicating main block is broken
+ g_IsUpdateFirmware = 0x11;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else // Case 4. Main Block:FAIL, Info Block:FAIL
+ {
+ DBG("Main block and Info block are broken.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+}
+
+//-------------------------End of SW ID for MSG22XX----------------------------//
+
+//-------------------------Start of SW ID for MSG21XXA----------------------------//
+
+static u32 _DrvFwCtrlMsg21xxaCalculateMainCrcFromEFlash(void)
+{
+ u32 nRetVal = 0;
+ u16 nRegData = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop Watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xDF4C); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x9432
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+// DBG("*** reg(0x3C, 0xE4) = 0x%x ***\n", nRegData); // add for debug
+
+ } while (nRegData != 0x9432);
+
+ // Read calculated main block CRC from register
+ nRetVal = RegGet16BitValue(0x3C80);
+ nRetVal = (nRetVal << 16) | RegGet16BitValue(0x3C82);
+
+ DBG("Main Block CRC = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static u32 _DrvFwCtrlMsg21xxaRetrieveMainCrcFromMainBlock(void)
+{
+ u32 nRetVal = 0;
+ u16 nRegData = 0;
+ u8 szDbBusTxData[5] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ // cmd
+ RegSet16BitValue(0x3CE4, 0xA4AB); //bank:reg_PIU_MISC_0, addr:h0072
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x7d60); //bank:chip, addr:h0002
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ // Start mcu
+ RegSetLByteValue(0x0FE6, 0x00); //bank:mheg5, addr:h0073
+
+ mdelay(100);
+
+ // Polling 0x3CE4 is 0x5B58
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4); //bank:reg_PIU_MISC_0, addr:h0072
+ } while (nRegData != 0x5B58);
+
+ // Read main block CRC from main block
+ szDbBusTxData[0] = 0x72;
+ szDbBusTxData[1] = 0x7F;
+ szDbBusTxData[2] = 0xFC;
+ szDbBusTxData[3] = 0x00;
+ szDbBusTxData[4] = 0x04;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 5);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ nRetVal = szDbBusRxData[0];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[1];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[2];
+ nRetVal = (nRetVal << 8) | szDbBusRxData[3];
+
+ DBG("CRC = 0x%x\n", nRetVal);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nRetVal;
+}
+
+static s32 _DrvFwCtrlMsg21xxaUpdateFirmwareBySwId(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+ u32 i, j, nCalculateCrcSize;
+ u32 nCrcMain = 0, nCrcMainTp = 0;
+ u32 nCrcInfo = 0, nCrcInfoTp = 0;
+ u32 nCrcTemp = 0;
+ u16 nRegData = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nCrcMain = 0xffffffff;
+ nCrcInfo = 0xffffffff;
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // erase main
+ _DrvFwCtrlEraseEmemC33(EMEM_MAIN);
+ mdelay(1000);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ /////////////////////////
+ // Program
+ /////////////////////////
+
+ // Polling 0x3CE4 is 0x1C70
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x1C70);
+ }
+
+ switch (eEmemType)
+ {
+ case EMEM_ALL:
+ RegSet16BitValue(0x3CE4, 0xE38F); // for all blocks
+ break;
+ case EMEM_MAIN:
+ RegSet16BitValue(0x3CE4, 0x7731); // for main block
+ break;
+ case EMEM_INFO:
+ RegSet16BitValue(0x3CE4, 0x7731); // for info block
+
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ RegSetLByteValue(0x3CE4, 0xC5);
+ RegSetLByteValue(0x3CE5, 0x78);
+
+ RegSetLByteValue(0x1E04, 0x9F);
+ RegSetLByteValue(0x1E05, 0x82);
+
+ RegSetLByteValue(0x0FE6, 0x00);
+ mdelay(100);
+ break;
+ }
+
+ // Polling 0x3CE4 is 0x2F43
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x2F43);
+
+ // Calculate CRC 32
+ DrvCommonCrcInitTable();
+
+ if (eEmemType == EMEM_ALL)
+ {
+ nCalculateCrcSize = MSG21XXA_FIRMWARE_WHOLE_SIZE;
+ }
+ else if (eEmemType == EMEM_MAIN)
+ {
+ nCalculateCrcSize = MSG21XXA_FIRMWARE_MAIN_BLOCK_SIZE;
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ nCalculateCrcSize = MSG21XXA_FIRMWARE_INFO_BLOCK_SIZE;
+ }
+ else
+ {
+ nCalculateCrcSize = 0;
+ }
+
+ for (i = 0; i < nCalculateCrcSize; i ++)
+ {
+ if (eEmemType == EMEM_INFO)
+ {
+ i = 32;
+ }
+
+ if (i < 32) // emem_main
+ {
+ if (i == 31)
+ {
+ szFwData[i][1014] = 0x5A;
+ szFwData[i][1015] = 0xA5;
+
+ for (j = 0; j < 1016; j ++)
+ {
+ nCrcMain = DrvCommonCrcGetValue(szFwData[i][j], nCrcMain);
+ }
+
+ nCrcTemp = nCrcMain;
+ nCrcTemp = nCrcTemp ^ 0xffffffff;
+
+ DBG("nCrcTemp=%x\n", nCrcTemp); // add for debug
+
+ for (j = 0; j < 4; j ++)
+ {
+ szFwData[i][1023-j] = ((nCrcTemp>>(8*j)) & 0xFF);
+
+ DBG("((nCrcTemp>>(8*%d)) & 0xFF)=%x\n", j, ((nCrcTemp>>(8*j)) & 0xFF)); // add for debug
+ DBG("Update main clock crc32 into bin buffer szFwData[%d][%d]=%x\n", i, (1020+j), szFwData[i][1020+j]);
+ }
+ }
+ else
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ nCrcMain = DrvCommonCrcGetValue(szFwData[i][j], nCrcMain);
+ }
+ }
+ }
+ else // emem_info
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ nCrcInfo = DrvCommonCrcGetValue(szFwData[i][j], nCrcInfo);
+ }
+
+ if (eEmemType == EMEM_MAIN)
+ {
+ break;
+ }
+ }
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ for (j = 0; j < 8; j ++)
+ {
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szFwData[i][j*128], 128);
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+ IicWriteData(SLAVE_I2C_ID_DWI2C, szFwData[i], 1024);
+#endif
+
+ // Polling 0x3CE4 is 0xD0BC
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0xD0BC);
+
+ RegSet16BitValue(0x3CE4, 0x2F43);
+ }
+
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ // write file done and check crc
+ RegSet16BitValue(0x3CE4, 0x1380);
+ }
+ mdelay(10);
+
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ // Polling 0x3CE4 is 0x9432
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x9432);
+ }
+
+ nCrcMain = nCrcMain ^ 0xffffffff;
+ nCrcInfo = nCrcInfo ^ 0xffffffff;
+
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ // CRC Main from TP
+ nCrcMainTp = RegGet16BitValue(0x3C80);
+ nCrcMainTp = (nCrcMainTp << 16) | RegGet16BitValue(0x3C82);
+ }
+
+ if (eEmemType == EMEM_ALL)
+ {
+ // CRC Info from TP
+ nCrcInfoTp = RegGet16BitValue(0x3CA0);
+ nCrcInfoTp = (nCrcInfoTp << 16) | RegGet16BitValue(0x3CA2);
+ }
+
+ DBG("nCrcMain=0x%x, nCrcInfo=0x%x, nCrcMainTp=0x%x, nCrcInfoTp=0x%x\n", nCrcMain, nCrcInfo, nCrcMainTp, nCrcInfoTp);
+
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ if (nCrcMainTp != nCrcMain)
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+ }
+
+ if (eEmemType == EMEM_ALL)
+ {
+ if (nCrcInfoTp != nCrcInfo)
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+ }
+
+ DBG("Update SUCCESS\n");
+
+ return 0;
+}
+
+void _DrvFwCtrlMsg21xxaCheckFirmwareUpdateBySwId(void)
+{
+ u32 nCrcMainA, nCrcMainB;
+ u32 i;
+ u16 nUpdateBinMajor = 0, nUpdateBinMinor = 0;
+ u16 nMajor = 0, nMinor = 0;
+ u8 nIsCompareVersion = 0;
+ u8 *pVersion = NULL;
+ Msg21xxaSwId_e eMainSwId = MSG21XXA_SW_ID_UNDEFINED, eInfoSwId = MSG21XXA_SW_ID_UNDEFINED, eSwId = MSG21XXA_SW_ID_UNDEFINED;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ nCrcMainA = _DrvFwCtrlMsg21xxaCalculateMainCrcFromEFlash();
+ nCrcMainB = _DrvFwCtrlMsg21xxaRetrieveMainCrcFromMainBlock();
+
+ _gUpdateFirmwareBySwIdWorkQueue = create_singlethread_workqueue("update_firmware_by_sw_id");
+ INIT_WORK(&_gUpdateFirmwareBySwIdWork, _DrvFwCtrlUpdateFirmwareBySwIdDoWork);
+
+ DBG("nCrcMainA=0x%x, nCrcMainB=0x%x\n", nCrcMainA, nCrcMainB);
+
+ if (nCrcMainA == nCrcMainB)
+ {
+ eMainSwId = _DrvFwCtrlMsg21xxaGetSwId(EMEM_MAIN);
+ eInfoSwId = _DrvFwCtrlMsg21xxaGetSwId(EMEM_INFO);
+
+ DBG("Check firmware integrity success\n");
+ DBG("eMainSwId=0x%x, eInfoSwId=0x%x\n", eMainSwId, eInfoSwId);
+
+ if (eMainSwId == eInfoSwId)
+ {
+ eSwId = eMainSwId;
+ nIsCompareVersion = 1;
+ }
+ else
+ {
+ eSwId = eInfoSwId;
+ nIsCompareVersion = 0;
+ }
+
+ if (eSwId == MSG21XXA_SW_ID_XXXX)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ nUpdateBinMajor = msg21xxa_xxxx_update_bin[31][0x34F]<<8 | msg21xxa_xxxx_update_bin[31][0x34E];
+ nUpdateBinMinor = msg21xxa_xxxx_update_bin[31][0x351]<<8 | msg21xxa_xxxx_update_bin[31][0x350];
+#else // By one dimensional array
+ nUpdateBinMajor = msg21xxa_xxxx_update_bin[0x7F4F]<<8 | msg21xxa_xxxx_update_bin[0x7F4E];
+ nUpdateBinMinor = msg21xxa_xxxx_update_bin[0x7F51]<<8 | msg21xxa_xxxx_update_bin[0x7F50];
+#endif
+ }
+ else if (eSwId == MSG21XXA_SW_ID_YYYY)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ nUpdateBinMajor = msg21xxa_yyyy_update_bin[31][0x34F]<<8 | msg21xxa_yyyy_update_bin[31][0x34E];
+ nUpdateBinMinor = msg21xxa_yyyy_update_bin[31][0x351]<<8 | msg21xxa_yyyy_update_bin[31][0x350];
+#else // By one dimensional array
+ nUpdateBinMajor = msg21xxa_yyyy_update_bin[0x7F4F]<<8 | msg21xxa_yyyy_update_bin[0x7F4E];
+ nUpdateBinMinor = msg21xxa_yyyy_update_bin[0x7F51]<<8 | msg21xxa_yyyy_update_bin[0x7F50];
+#endif
+ }
+ else //eSwId == MSG21XXA_SW_ID_UNDEFINED
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG21XXA_SW_ID_UNDEFINED;
+ nUpdateBinMajor = 0;
+ nUpdateBinMinor = 0;
+ }
+
+ DrvFwCtrlGetCustomerFirmwareVersion(&nMajor, &nMinor, &pVersion);
+
+ DBG("eSwId=0x%x, nMajor=%d, nMinor=%d, nUpdateBinMajor=%d, nUpdateBinMinor=%d\n", eSwId, nMajor, nMinor, nUpdateBinMajor, nUpdateBinMinor);
+
+ if ((nUpdateBinMinor > nMinor && nIsCompareVersion == 1) || (nIsCompareVersion == 0))
+ {
+ if (eSwId == MSG21XXA_SW_ID_XXXX)
+ {
+ for (i = 0; i < MSG21XXA_FIRMWARE_MAIN_BLOCK_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg21xxa_xxxx_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg21xxa_xxxx_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else if (eSwId == MSG21XXA_SW_ID_YYYY)
+ {
+ for (i = 0; i < MSG21XXA_FIRMWARE_MAIN_BLOCK_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg21xxa_yyyy_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg21xxa_yyyy_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG21XXA_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG21XXA_SW_ID_UNDEFINED && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else
+ {
+ DBG("The update bin version is older than or equal to the current firmware version on e-flash.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+ else
+ {
+ eSwId = _DrvFwCtrlMsg21xxaGetSwId(EMEM_INFO);
+
+ DBG("Check firmware integrity failed\n");
+ DBG("eSwId=0x%x\n", eSwId);
+
+ if (eSwId == MSG21XXA_SW_ID_XXXX)
+ {
+ for (i = 0; i < MSG21XXA_FIRMWARE_MAIN_BLOCK_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg21xxa_xxxx_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg21xxa_xxxx_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else if (eSwId == MSG21XXA_SW_ID_YYYY)
+ {
+ for (i = 0; i < MSG21XXA_FIRMWARE_MAIN_BLOCK_SIZE; i ++)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_TWO_DIMENSIONAL_ARRAY // By two dimensional array
+ _DrvFwCtrlStoreFirmwareData(msg21xxa_yyyy_update_bin[i], 1024);
+#else // By one dimensional array
+ _DrvFwCtrlStoreFirmwareData(&(msg21xxa_yyyy_update_bin[i*1024]), 1024);
+#endif
+ }
+ }
+ else
+ {
+ DBG("eSwId = 0x%x is an undefined SW ID.\n", eSwId);
+
+ eSwId = MSG21XXA_SW_ID_UNDEFINED;
+ }
+
+ if (eSwId < MSG21XXA_SW_ID_UNDEFINED && eSwId != 0xFFFF)
+ {
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after copying update firmware data to temp buffer
+
+ _gUpdateRetryCount = UPDATE_FIRMWARE_RETRY_COUNT;
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ return;
+ }
+ else
+ {
+ DBG("The sw id is invalid.\n");
+ DBG("Go to normal boot up process.\n");
+ }
+ }
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+}
+
+//-------------------------End of SW ID for MSG21XXA----------------------------//
+
+static void _DrvFwCtrlUpdateFirmwareBySwIdDoWork(struct work_struct *pWork)
+{
+ s32 nRetVal = 0;
+
+ DBG("*** %s() _gUpdateRetryCount = %d ***\n", __func__, _gUpdateRetryCount);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ nRetVal = _DrvFwCtrlMsg21xxaUpdateFirmwareBySwId(g_FwData, EMEM_MAIN);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _DrvFwCtrlMsg22xxGetTpVendorCode(_gTpVendorCode);
+
+ if (_gTpVendorCode[0] == 'C' && _gTpVendorCode[1] == 'N' && _gTpVendorCode[2] == 'T') // for specific TP vendor which store some important information in info block, only update firmware for main block, do not update firmware for info block.
+ {
+ nRetVal = _DrvFwCtrlMsg22xxUpdateFirmware(g_FwData, EMEM_MAIN);
+ }
+ else
+ {
+ nRetVal = _DrvFwCtrlMsg22xxUpdateFirmwareBySwId();
+ }
+ }
+ else
+ {
+ DBG("This chip type (%d) does not support update firmware by sw id\n", g_ChipType);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ nRetVal = -1;
+ return;
+ }
+
+ DBG("*** update firmware by sw id result = %d ***\n", nRetVal);
+
+ if (nRetVal == 0)
+ {
+ DBG("update firmware by sw id success\n");
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _gIsUpdateInfoBlockFirst = 0;
+ g_IsUpdateFirmware = 0x00;
+ }
+ }
+ else //nRetVal == -1
+ {
+ _gUpdateRetryCount --;
+ if (_gUpdateRetryCount > 0)
+ {
+ DBG("_gUpdateRetryCount = %d\n", _gUpdateRetryCount);
+ queue_work(_gUpdateFirmwareBySwIdWorkQueue, &_gUpdateFirmwareBySwIdWork);
+ }
+ else
+ {
+ DBG("update firmware by sw id failed\n");
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _gIsUpdateInfoBlockFirst = 0;
+ g_IsUpdateFirmware = 0x00;
+ }
+ }
+ }
+}
+
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+//------------------------------------------------------------------------------//
+
+static void _DrvFwCtrlReadInfoC33(void)
+{
+ u8 szDbBusTxData[5] = {0};
+ u16 nRegData = 0;
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ u32 i;
+#endif
+
+ DBG("*** %s() ***\n", __func__);
+
+ mdelay(300);
+
+ // Stop Watchdog
+ RegSetLByteValue(0x3C60, 0x55);
+ RegSetLByteValue(0x3C61, 0xAA);
+
+ RegSet16BitValue(0x3CE4, 0xA4AB);
+
+ RegSet16BitValue(0x1E04, 0x7d60);
+
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x829F);
+ mdelay(1);
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x0F;
+ szDbBusTxData[2] = 0xE6;
+ szDbBusTxData[3] = 0x00;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, szDbBusTxData, 4);
+ mdelay(100);
+
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x5B58);
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ szDbBusTxData[0] = 0x72;
+ szDbBusTxData[3] = 0x00;
+ szDbBusTxData[4] = 0x80; // read 128 bytes
+
+ for (i = 0; i < 8; i ++)
+ {
+ szDbBusTxData[1] = 0x80 + (((i*128)&0xff00)>>8);
+ szDbBusTxData[2] = (i*128)&0x00ff;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 5);
+
+ mdelay(50);
+
+ // Receive info data
+ IicReadData(SLAVE_I2C_ID_DWI2C, &_gDwIicInfoData[i*128], 128);
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+ szDbBusTxData[0] = 0x72;
+ szDbBusTxData[1] = 0x80;
+ szDbBusTxData[2] = 0x00;
+ szDbBusTxData[3] = 0x04; // read 1024 bytes
+ szDbBusTxData[4] = 0x00;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, szDbBusTxData, 5);
+
+ mdelay(50);
+
+ // Receive info data
+ IicReadData(SLAVE_I2C_ID_DWI2C, &_gDwIicInfoData[0], 1024);
+#endif
+}
+
+static s32 _DrvFwCtrlUpdateFirmwareC32(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+ u32 i, j;
+ u32 nCrcMain, nCrcMainTp;
+ u32 nCrcInfo, nCrcInfoTp;
+ u32 nCrcTemp;
+ u16 nRegData = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nCrcMain = 0xffffffff;
+ nCrcInfo = 0xffffffff;
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ /////////////////////////
+ // Erase all
+ /////////////////////////
+ _DrvFwCtrlEraseEmemC32();
+ mdelay(1000);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Reset watch dog
+ RegSetLByteValue(0x3C60, 0x55);
+ RegSetLByteValue(0x3C61, 0xAA);
+
+ /////////////////////////
+ // Program
+ /////////////////////////
+
+ // Polling 0x3CE4 is 0x1C70
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x1C70);
+
+ RegSet16BitValue(0x3CE4, 0xE38F); // for all-blocks
+
+ // Polling 0x3CE4 is 0x2F43
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x2F43);
+
+ // Calculate CRC 32
+ DrvCommonCrcInitTable();
+
+ for (i = 0; i < 33; i ++) // total 33 KB : 2 byte per R/W
+ {
+ if (i < 32) // emem_main
+ {
+ if (i == 31)
+ {
+ szFwData[i][1014] = 0x5A;
+ szFwData[i][1015] = 0xA5;
+
+ for (j = 0; j < 1016; j ++)
+ {
+ nCrcMain = DrvCommonCrcGetValue(szFwData[i][j], nCrcMain);
+ }
+
+ nCrcTemp = nCrcMain;
+ nCrcTemp = nCrcTemp ^ 0xffffffff;
+
+ DBG("nCrcTemp=%x\n", nCrcTemp); // add for debug
+
+ for (j = 0; j < 4; j ++)
+ {
+ szFwData[i][1023-j] = ((nCrcTemp>>(8*j)) & 0xFF);
+
+ DBG("((nCrcTemp>>(8*%d)) & 0xFF)=%x\n", j, ((nCrcTemp>>(8*j)) & 0xFF)); // add for debug
+ DBG("Update main clock crc32 into bin buffer szFwData[%d][%d]=%x\n", i, (1020+j), szFwData[i][1020+j]);
+ }
+ }
+ else
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ nCrcMain = DrvCommonCrcGetValue(szFwData[i][j], nCrcMain);
+ }
+ }
+ }
+ else // emem_info
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ nCrcInfo = DrvCommonCrcGetValue(szFwData[i][j], nCrcInfo);
+ }
+ }
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ for (j = 0; j < 8; j ++)
+ {
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szFwData[i][j*128], 128);
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+ IicWriteData(SLAVE_I2C_ID_DWI2C, szFwData[i], 1024);
+#endif
+
+ // Polling 0x3CE4 is 0xD0BC
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0xD0BC);
+
+ RegSet16BitValue(0x3CE4, 0x2F43);
+ }
+
+ // Write file done
+ RegSet16BitValue(0x3CE4, 0x1380);
+
+ mdelay(10);
+ // Polling 0x3CE4 is 0x9432
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x9432);
+
+ nCrcMain = nCrcMain ^ 0xffffffff;
+ nCrcInfo = nCrcInfo ^ 0xffffffff;
+
+ // CRC Main from TP
+ nCrcMainTp = RegGet16BitValue(0x3C80);
+ nCrcMainTp = (nCrcMainTp << 16) | RegGet16BitValue(0x3C82);
+
+ // CRC Info from TP
+ nCrcInfoTp = RegGet16BitValue(0x3CA0);
+ nCrcInfoTp = (nCrcInfoTp << 16) | RegGet16BitValue(0x3CA2);
+
+ DBG("nCrcMain=0x%x, nCrcInfo=0x%x, nCrcMainTp=0x%x, nCrcInfoTp=0x%x\n",
+ nCrcMain, nCrcInfo, nCrcMainTp, nCrcInfoTp);
+
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+
+ if ((nCrcMainTp != nCrcMain) || (nCrcInfoTp != nCrcInfo))
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+
+ DBG("Update SUCCESS\n");
+
+ return 0;
+}
+
+static s32 _DrvFwCtrlUpdateFirmwareC33(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+ u8 szLifeCounter[2];
+ u32 i, j;
+ u32 nCrcMain, nCrcMainTp;
+ u32 nCrcInfo, nCrcInfoTp;
+ u32 nCrcTemp;
+ u16 nRegData = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nCrcMain = 0xffffffff;
+ nCrcInfo = 0xffffffff;
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ _DrvFwCtrlReadInfoC33();
+
+ if (_gDwIicInfoData[0] == 'M' && _gDwIicInfoData[1] == 'S' && _gDwIicInfoData[2] == 'T' && _gDwIicInfoData[3] == 'A' && _gDwIicInfoData[4] == 'R' && _gDwIicInfoData[5] == 'T' && _gDwIicInfoData[6] == 'P' && _gDwIicInfoData[7] == 'C')
+ {
+ _gDwIicInfoData[8] = szFwData[32][8];
+ _gDwIicInfoData[9] = szFwData[32][9];
+ _gDwIicInfoData[10] = szFwData[32][10];
+ _gDwIicInfoData[11] = szFwData[32][11];
+ // updata life counter
+ szLifeCounter[1] = ((((_gDwIicInfoData[13] << 8) | _gDwIicInfoData[12]) + 1) >> 8) & 0xFF;
+ szLifeCounter[0] = (((_gDwIicInfoData[13] << 8) | _gDwIicInfoData[12]) + 1) & 0xFF;
+ _gDwIicInfoData[12] = szLifeCounter[0];
+ _gDwIicInfoData[13] = szLifeCounter[1];
+
+ RegSet16BitValue(0x3CE4, 0x78C5);
+ RegSet16BitValue(0x1E04, 0x7d60);
+ // TP SW reset
+ RegSet16BitValue(0x1E04, 0x829F);
+
+ mdelay(50);
+
+ // Polling 0x3CE4 is 0x2F43
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x2F43);
+
+ // Transmit lk info data
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ for (j = 0; j < 8; j ++)
+ {
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &_gDwIicInfoData[j*128], 128);
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &_gDwIicInfoData[0], 1024);
+#endif
+
+ // Polling 0x3CE4 is 0xD0BC
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0xD0BC);
+ }
+
+ // erase main
+ _DrvFwCtrlEraseEmemC33(EMEM_MAIN);
+ mdelay(1000);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ /////////////////////////
+ // Program
+ /////////////////////////
+
+ // Polling 0x3CE4 is 0x1C70
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x1C70);
+ }
+
+ switch (eEmemType)
+ {
+ case EMEM_ALL:
+ RegSet16BitValue(0x3CE4, 0xE38F); // for all blocks
+ break;
+ case EMEM_MAIN:
+ RegSet16BitValue(0x3CE4, 0x7731); // for main block
+ break;
+ case EMEM_INFO:
+ RegSet16BitValue(0x3CE4, 0x7731); // for info block
+
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ RegSetLByteValue(0x3CE4, 0xC5);
+ RegSetLByteValue(0x3CE5, 0x78);
+
+ RegSetLByteValue(0x1E04, 0x9F);
+ RegSetLByteValue(0x1E05, 0x82);
+
+ RegSetLByteValue(0x0FE6, 0x00);
+ mdelay(100);
+ break;
+ }
+
+ // Polling 0x3CE4 is 0x2F43
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x2F43);
+
+ // Calculate CRC 32
+ DrvCommonCrcInitTable();
+
+ for (i = 0; i < 33; i ++) // total 33 KB : 2 byte per R/W
+ {
+ if (eEmemType == EMEM_INFO)
+ {
+ i = 32;
+ }
+
+ if (i < 32) // emem_main
+ {
+ if (i == 31)
+ {
+ szFwData[i][1014] = 0x5A;
+ szFwData[i][1015] = 0xA5;
+
+ for (j = 0; j < 1016; j ++)
+ {
+ nCrcMain = DrvCommonCrcGetValue(szFwData[i][j], nCrcMain);
+ }
+
+ nCrcTemp = nCrcMain;
+ nCrcTemp = nCrcTemp ^ 0xffffffff;
+
+ DBG("nCrcTemp=%x\n", nCrcTemp); // add for debug
+
+ for (j = 0; j < 4; j ++)
+ {
+ szFwData[i][1023-j] = ((nCrcTemp>>(8*j)) & 0xFF);
+
+ DBG("((nCrcTemp>>(8*%d)) & 0xFF)=%x\n", j, ((nCrcTemp>>(8*j)) & 0xFF)); // add for debug
+ DBG("Update main clock crc32 into bin buffer szFwData[%d][%d]=%x\n", i, (1020+j), szFwData[i][1020+j]); // add for debug
+ }
+ }
+ else
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ nCrcMain = DrvCommonCrcGetValue(szFwData[i][j], nCrcMain);
+ }
+ }
+ }
+ else // emem_info
+ {
+ for (j = 0; j < 1024; j ++)
+ {
+ nCrcInfo = DrvCommonCrcGetValue(_gDwIicInfoData[j], nCrcInfo);
+ }
+
+ if (eEmemType == EMEM_MAIN)
+ {
+ break;
+ }
+ }
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ for (j = 0; j < 8; j ++)
+ {
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szFwData[i][j*128], 128);
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+ IicWriteData(SLAVE_I2C_ID_DWI2C, szFwData[i], 1024);
+#endif
+
+ // Polling 0x3CE4 is 0xD0BC
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0xD0BC);
+
+ RegSet16BitValue(0x3CE4, 0x2F43);
+ }
+
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ // write file done and check crc
+ RegSet16BitValue(0x3CE4, 0x1380);
+ }
+ mdelay(10);
+
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ // Polling 0x3CE4 is 0x9432
+ do
+ {
+ nRegData = RegGet16BitValue(0x3CE4);
+ } while (nRegData != 0x9432);
+ }
+
+ nCrcMain = nCrcMain ^ 0xffffffff;
+ nCrcInfo = nCrcInfo ^ 0xffffffff;
+
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ // CRC Main from TP
+ nCrcMainTp = RegGet16BitValue(0x3C80);
+ nCrcMainTp = (nCrcMainTp << 16) | RegGet16BitValue(0x3C82);
+
+ // CRC Info from TP
+ nCrcInfoTp = RegGet16BitValue(0x3CA0);
+ nCrcInfoTp = (nCrcInfoTp << 16) | RegGet16BitValue(0x3CA2);
+ }
+ DBG("nCrcMain=0x%x, nCrcInfo=0x%x, nCrcMainTp=0x%x, nCrcInfoTp=0x%x\n", nCrcMain, nCrcInfo, nCrcMainTp, nCrcInfoTp);
+
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+
+ if ((eEmemType == EMEM_ALL) || (eEmemType == EMEM_MAIN))
+ {
+ if ((nCrcMainTp != nCrcMain) || (nCrcInfoTp != nCrcInfo))
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+ }
+
+ DBG("Update SUCCESS\n");
+
+ return 0;
+}
+
+static s32 _DrvFwCtrlMsg22xxUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+ u32 i, index;
+ u32 nCrcMain = 0, nCrcMainTp = 0;
+ u32 nCrcInfo = 0, nCrcInfoTp = 0;
+ u32 nRemainSize, nBlockSize, nSize;
+ u32 nTimeOut = 0;
+ u16 nRegData = 0;
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ u8 szDbBusTxData[128] = {0};
+ u32 nSizePerWrite = 125;
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+ u8 szDbBusTxData[1024] = {0};
+ u32 nSizePerWrite = 1021;
+#endif
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ _DrvFwCtrlMsg22xxConvertFwDataTwoDimenToOneDimen(szFwData, _gOneDimenFwData);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+
+ DBG("Erase start\n");
+
+ // Stop mcu
+ RegSet16BitValue(0x0FE6, 0x0001);
+
+ // Disable watchdog
+ RegSetLByteValue(0x3C60, 0x55);
+ RegSetLByteValue(0x3C61, 0xAA);
+
+ // Set PROGRAM password
+ RegSetLByteValue(0x161A, 0xBA);
+ RegSetLByteValue(0x161B, 0xAB);
+
+ if (eEmemType == EMEM_ALL) // 48KB + 512Byte
+ {
+ DBG("Erase all block\n");
+
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80);
+ mdelay(100);
+
+ // Chip erase
+ RegSet16BitValue(0x160E, BIT3);
+
+ DBG("Wait erase done flag\n");
+
+ while (1) // Wait erase done flag
+ {
+ nRegData = RegGet16BitValue(0x1610); // Memory status
+ nRegData = nRegData & BIT1;
+
+ DBG("Wait erase done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT1)
+ {
+ break;
+ }
+
+ mdelay(50);
+
+ if ((nTimeOut ++) > 30)
+ {
+ DBG("Erase all block failed. Timeout.\n");
+
+ goto UpdateEnd;
+ }
+ }
+ }
+ else if (eEmemType == EMEM_MAIN) // 48KB (32+8+8)
+ {
+ DBG("Erase main block\n");
+
+ for (i = 0; i < 3; i ++)
+ {
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80);
+ mdelay(10);
+
+ if (i == 0)
+ {
+ RegSet16BitValue(0x1600, 0x0000);
+ }
+ else if (i == 1)
+ {
+ RegSet16BitValue(0x1600, 0x8000);
+ }
+ else if (i == 2)
+ {
+ RegSet16BitValue(0x1600, 0xA000);
+ }
+
+ // Sector erase
+ RegSet16BitValue(0x160E, (RegGet16BitValue(0x160E) | BIT2));
+
+ DBG("Wait erase done flag\n");
+
+ while (1) // Wait erase done flag
+ {
+ nRegData = RegGet16BitValue(0x1610); // Memory status
+ nRegData = nRegData & BIT1;
+
+ DBG("Wait erase done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT1)
+ {
+ break;
+ }
+ mdelay(50);
+
+ if ((nTimeOut ++) > 30)
+ {
+ DBG("Erase main block failed. Timeout.\n");
+
+ goto UpdateEnd;
+ }
+ }
+ }
+ }
+ else if (eEmemType == EMEM_INFO) // 512Byte
+ {
+ DBG("Erase info block\n");
+
+ // Clear pce
+ RegSetLByteValue(0x1618, 0x80);
+ mdelay(10);
+
+ RegSet16BitValue(0x1600, 0xC000);
+
+ // Sector erase
+ RegSet16BitValue(0x160E, (RegGet16BitValue(0x160E) | BIT2));
+
+ DBG("Wait erase done flag\n");
+
+ while (1) // Wait erase done flag
+ {
+ nRegData = RegGet16BitValue(0x1610); // Memory status
+ nRegData = nRegData & BIT1;
+
+ DBG("Wait erase done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT1)
+ {
+ break;
+ }
+ mdelay(50);
+
+ if ((nTimeOut ++) > 30)
+ {
+ DBG("Erase info block failed. Timeout.\n");
+
+ goto UpdateEnd;
+ }
+ }
+ }
+
+ DBG("Erase end\n");
+
+ // Hold reset pin before program
+ RegSetLByteValue(0x1E06, 0x00);
+
+ /////////////////////////
+ // Program
+ /////////////////////////
+
+ if (eEmemType == EMEM_ALL || eEmemType == EMEM_MAIN) // 48KB
+ {
+ DBG("Program main block start\n");
+
+ // Program main block
+ RegSet16BitValue(0x161A, 0xABBA);
+ RegSet16BitValue(0x1618, (RegGet16BitValue(0x1618) | 0x80));
+
+ RegSet16BitValue(0x1600, 0x0000); // Set start address of main block
+ RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01)); // Enable burst mode
+
+ // Program start
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x16;
+ szDbBusTxData[2] = 0x02;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3);
+
+ szDbBusTxData[0] = 0x20;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 1);
+
+ nRemainSize = MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE * 1024; //48KB
+ index = 0;
+
+ while (nRemainSize > 0)
+ {
+ if (nRemainSize > nSizePerWrite)
+ {
+ nBlockSize = nSizePerWrite;
+ }
+ else
+ {
+ nBlockSize = nRemainSize;
+ }
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x16;
+ szDbBusTxData[2] = 0x02;
+
+ nSize = 3;
+
+ for (i = 0; i < nBlockSize; i ++)
+ {
+ szDbBusTxData[3+i] = _gOneDimenFwData[index*nSizePerWrite+i];
+ nSize ++;
+ }
+ index ++;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], nSize);
+
+ nRemainSize = nRemainSize - nBlockSize;
+ }
+
+ // Program end
+ szDbBusTxData[0] = 0x21;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 1);
+
+ nRegData = RegGet16BitValue(0x160C);
+ RegSet16BitValue(0x160C, nRegData & (~0x01));
+
+ DBG("Wait main block write done flag\n");
+
+ while (1) // Wait write done flag
+ {
+ // Polling 0x1610 is 0x0002
+ nRegData = RegGet16BitValue(0x1610); // Memory status
+ nRegData = nRegData & BIT1;
+
+ DBG("Wait write done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT1)
+ {
+ break;
+ }
+ mdelay(10);
+
+ if ((nTimeOut ++) > 30)
+ {
+ DBG("Write failed. Timeout.\n");
+
+ goto UpdateEnd;
+ }
+ }
+
+ DBG("Program main block end\n");
+ }
+
+ if (eEmemType == EMEM_ALL || eEmemType == EMEM_INFO) // 512 Byte
+ {
+ DBG("Program info block start\n");
+
+ // Program info block
+ RegSet16BitValue(0x161A, 0xABBA);
+ RegSet16BitValue(0x1618, (RegGet16BitValue(0x1618) | 0x80));
+
+ RegSet16BitValue(0x1600, 0xC000); // Set start address of info block
+ RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01)); // Enable burst mode
+
+ // Program start
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x16;
+ szDbBusTxData[2] = 0x02;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3);
+
+ szDbBusTxData[0] = 0x20;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 1);
+
+ nRemainSize = MSG22XX_FIRMWARE_INFO_BLOCK_SIZE; //512Byte
+ index = 0;
+
+ while (nRemainSize > 0)
+ {
+ if (nRemainSize > nSizePerWrite)
+ {
+ nBlockSize = nSizePerWrite;
+ }
+ else
+ {
+ nBlockSize = nRemainSize;
+ }
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x16;
+ szDbBusTxData[2] = 0x02;
+
+ nSize = 3;
+
+ for (i = 0; i < nBlockSize; i ++)
+ {
+ szDbBusTxData[3+i] = _gOneDimenFwData[(MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE*1024)+(index*nSizePerWrite)+i];
+ nSize ++;
+ }
+ index ++;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], nSize);
+
+ nRemainSize = nRemainSize - nBlockSize;
+ }
+
+ // Program end
+ szDbBusTxData[0] = 0x21;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 1);
+
+ nRegData = RegGet16BitValue(0x160C);
+ RegSet16BitValue(0x160C, nRegData & (~0x01));
+
+ DBG("Wait info block write done flag\n");
+
+ while (1) // Wait write done flag
+ {
+ // Polling 0x1610 is 0x0002
+ nRegData = RegGet16BitValue(0x1610); // Memory status
+ nRegData = nRegData & BIT1;
+
+ DBG("Wait write done flag nRegData = 0x%x\n", nRegData);
+
+ if (nRegData == BIT1)
+ {
+ break;
+ }
+ mdelay(10);
+
+ if ((nTimeOut ++) > 30)
+ {
+ DBG("Write failed. Timeout.\n");
+
+ goto UpdateEnd;
+ }
+ }
+
+ DBG("Program info block end\n");
+ }
+
+ UpdateEnd:
+
+ if (eEmemType == EMEM_ALL || eEmemType == EMEM_MAIN)
+ {
+ // Get CRC 32 from updated firmware bin file
+ nCrcMain = _gOneDimenFwData[0xBFFF] << 24;
+ nCrcMain |= _gOneDimenFwData[0xBFFE] << 16;
+ nCrcMain |= _gOneDimenFwData[0xBFFD] << 8;
+ nCrcMain |= _gOneDimenFwData[0xBFFC];
+
+ // CRC Main from TP
+ DBG("Get Main CRC from TP\n");
+
+ nCrcMainTp = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_MAIN);
+
+ DBG("nCrcMain=0x%x, nCrcMainTp=0x%x\n", nCrcMain, nCrcMainTp);
+ }
+
+ if (eEmemType == EMEM_ALL || eEmemType == EMEM_INFO)
+ {
+ nCrcInfo = _gOneDimenFwData[0xC1FF] << 24;
+ nCrcInfo |= _gOneDimenFwData[0xC1FE] << 16;
+ nCrcInfo |= _gOneDimenFwData[0xC1FD] << 8;
+ nCrcInfo |= _gOneDimenFwData[0xC1FC];
+
+ // CRC Info from TP
+ DBG("Get Info CRC from TP\n");
+
+ nCrcInfoTp = _DrvFwCtrlMsg22xxGetFirmwareCrcByHardware(EMEM_INFO);
+
+ DBG("nCrcInfo=0x%x, nCrcInfoTp=0x%x\n", nCrcInfo, nCrcInfoTp);
+ }
+
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ if (eEmemType == EMEM_ALL)
+ {
+ if ((nCrcMainTp != nCrcMain) || (nCrcInfoTp != nCrcInfo))
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+ }
+ else if (eEmemType == EMEM_MAIN)
+ {
+ if (nCrcMainTp != nCrcMain)
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+ }
+ else if (eEmemType == EMEM_INFO)
+ {
+ if (nCrcInfoTp != nCrcInfo)
+ {
+ DBG("Update FAILED\n");
+
+ return -1;
+ }
+ }
+
+ DBG("Update SUCCESS\n");
+
+ return 0;
+}
+
+static s32 _DrvFwCtrlUpdateFirmwareCash(u8 szFwData[][1024])
+{
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("g_ChipType = 0x%x\n", g_ChipType);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA) // (0x02)
+ {
+// u16 nChipType;
+ u8 nChipVersion = 0;
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ // Erase TP Flash first
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop MCU
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Disable watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ /////////////////////////
+ // Difference between C2 and C3
+ /////////////////////////
+ // c2:MSG2133(1) c32:MSG2133A(2) c33:MSG2138A(2)
+ // check ic type
+// nChipType = RegGet16BitValue(0x1ECC) & 0xFF;
+
+ // check ic version
+ nChipVersion = RegGet16BitValue(0x3CEA) & 0xFF;
+
+ DBG("chip version = 0x%x\n", nChipVersion);
+
+ if (nChipVersion == 3)
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+ return _DrvFwCtrlMsg21xxaUpdateFirmwareBySwId(szFwData, EMEM_MAIN);
+#else
+ return _DrvFwCtrlUpdateFirmwareC33(szFwData, EMEM_MAIN);
+#endif
+ }
+ else
+ {
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+ return _DrvFwCtrlMsg21xxaUpdateFirmwareBySwId(szFwData, EMEM_MAIN);
+#else
+ return _DrvFwCtrlUpdateFirmwareC32(szFwData, EMEM_ALL);
+#endif
+ }
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX) // (0x7A)
+ {
+ _DrvFwCtrlMsg22xxGetTpVendorCode(_gTpVendorCode);
+
+ if (_gTpVendorCode[0] == 'C' && _gTpVendorCode[1] == 'N' && _gTpVendorCode[2] == 'T') // for specific TP vendor which store some important information in info block, only update firmware for main block, do not update firmware for info block.
+ {
+ return _DrvFwCtrlMsg22xxUpdateFirmware(szFwData, EMEM_MAIN);
+ }
+ else
+ {
+ return _DrvFwCtrlMsg22xxUpdateFirmware(szFwData, EMEM_ALL);
+ }
+ }
+ else // CHIP_TYPE_MSG21XX (0x01)
+ {
+ DBG("Can not update firmware. Catch-2 is no need to be maintained now.\n");
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ return -1;
+ }
+}
+
+static s32 _DrvFwCtrlUpdateFirmwareBySdCard(const char *pFilePath)
+{
+ s32 nRetVal = 0;
+ struct file *pfile = NULL;
+ struct inode *inode;
+ s32 fsize = 0;
+ u8 *pbt_buf = NULL;
+ mm_segment_t old_fs;
+ loff_t pos;
+ u16 eSwId = 0x0000;
+ u16 eVendorId = 0x0000;
+
+ DBG("*** %s() ***\n", __func__);
+
+ pfile = filp_open(pFilePath, O_RDONLY, 0);
+ if (IS_ERR(pfile))
+ {
+ DBG("Error occured while opening file %s.\n", pFilePath);
+ return -1;
+ }
+
+ inode = pfile->f_dentry->d_inode;
+ fsize = inode->i_size;
+
+ DBG("fsize = %d\n", fsize);
+
+ if (fsize <= 0)
+ {
+ filp_close(pfile, NULL);
+ return -1;
+ }
+
+ // read firmware
+ pbt_buf = kmalloc(fsize, GFP_KERNEL);
+
+ old_fs = get_fs();
+ set_fs(KERNEL_DS);
+
+ pos = 0;
+ vfs_read(pfile, pbt_buf, fsize, &pos);
+
+ filp_close(pfile, NULL);
+ set_fs(old_fs);
+
+ _DrvFwCtrlStoreFirmwareData(pbt_buf, fsize);
+
+ kfree(pbt_buf);
+
+ DrvPlatformLyrDisableFingerTouchReport();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ eVendorId = g_FwData[31][0x34F] <<8 | g_FwData[31][0x34E];
+ eSwId = _DrvFwCtrlMsg21xxaGetSwId(EMEM_MAIN);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ eVendorId = g_FwData[47][1013] <<8 | g_FwData[47][1012];
+ eSwId = _DrvFwCtrlMsg22xxGetSwId(EMEM_MAIN);
+ }
+
+ DBG("eVendorId = 0x%x, eSwId = 0x%x\n", eVendorId, eSwId);
+
+ if (eSwId == eVendorId)
+ {
+ if ((g_ChipType == CHIP_TYPE_MSG21XXA && fsize == 33792/* 33KB */) || (g_ChipType == CHIP_TYPE_MSG22XX && fsize == 49664/* 48.5KB */))
+ {
+ nRetVal = _DrvFwCtrlUpdateFirmwareCash(g_FwData);
+ }
+ else
+ {
+ DBG("The file size of the update firmware bin file is not supported, fsize = %d\n", fsize);
+ nRetVal = -1;
+ }
+ }
+ else
+ {
+ DBG("The vendor id of the update firmware bin file is different from the vendor id on e-flash.\n");
+ nRetVal = -1;
+ }
+
+ g_FwDataCount = 0; // Reset g_FwDataCount to 0 after update firmware
+
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ return nRetVal;
+}
+
+/*=============================================================*/
+// GLOBAL FUNCTION DEFINITION
+/*=============================================================*/
+
+void DrvFwCtrlVariableInitialize(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+// FIRMWARE_MODE_UNKNOWN_MODE = MSG21XXA_FIRMWARE_MODE_UNKNOWN_MODE;
+ FIRMWARE_MODE_DEMO_MODE = MSG21XXA_FIRMWARE_MODE_DEMO_MODE;
+ FIRMWARE_MODE_DEBUG_MODE = MSG21XXA_FIRMWARE_MODE_DEBUG_MODE;
+ FIRMWARE_MODE_RAW_DATA_MODE = MSG21XXA_FIRMWARE_MODE_RAW_DATA_MODE;
+
+ g_FirmwareMode = FIRMWARE_MODE_DEMO_MODE;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+// FIRMWARE_MODE_UNKNOWN_MODE = MSG22XX_FIRMWARE_MODE_UNKNOWN_MODE;
+ FIRMWARE_MODE_DEMO_MODE = MSG22XX_FIRMWARE_MODE_DEMO_MODE;
+ FIRMWARE_MODE_DEBUG_MODE = MSG22XX_FIRMWARE_MODE_DEBUG_MODE;
+ FIRMWARE_MODE_RAW_DATA_MODE = MSG22XX_FIRMWARE_MODE_RAW_DATA_MODE;
+
+ g_FirmwareMode = FIRMWARE_MODE_DEMO_MODE;
+ }
+}
+
+void DrvFwCtrlOptimizeCurrentConsumption(void)
+{
+ u32 i;
+ u8 szDbBusTxData[27] = {0};
+
+ DBG("g_ChipType = 0x%x\n", g_ChipType);
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ if (g_GestureWakeupFlag == 1)
+ {
+ return;
+ }
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+
+ RegSet16BitValue(0x1618, (RegGet16BitValue(0x1618) | 0x80));
+
+ // Enable burst mode
+ RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01));
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x11;
+ szDbBusTxData[2] = 0xA0; //bank:0x11, addr:h0050
+
+ for (i = 0; i < 24; i ++)
+ {
+ szDbBusTxData[i+3] = 0x11;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+24); // Write 0x11 for reg 0x1150~0x115B
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x11;
+ szDbBusTxData[2] = 0xB8; //bank:0x11, addr:h005C
+
+ for (i = 0; i < 6; i ++)
+ {
+ szDbBusTxData[i+3] = 0xFF;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+6); // Write 0xFF for reg 0x115C~0x115E
+
+ // Clear burst mode
+ RegSet16BitValue(0x160C, RegGet16BitValue(0x160C) & (~0x01));
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+ }
+}
+
+u8 DrvFwCtrlGetChipType(void)
+{
+ s32 rc =0;
+ u8 nChipType = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // Erase TP Flash first
+ rc = DbBusEnterSerialDebugMode();
+ if (rc < 0)
+ {
+ DBG("*** DbBusEnterSerialDebugMode() failed, rc = %d ***\n", rc);
+ return nChipType;
+ }
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+
+ // Stop MCU
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Disable watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ /////////////////////////
+ // Difference between C2 and C3
+ /////////////////////////
+ // c2:MSG2133(1) c32:MSG2133A(2) c33:MSG2138A(2)
+ // check ic type
+ nChipType = RegGet16BitValue(0x1ECC) & 0xFF;
+
+ if (nChipType != CHIP_TYPE_MSG21XX && // (0x01)
+ nChipType != CHIP_TYPE_MSG21XXA && // (0x02)
+ nChipType != CHIP_TYPE_MSG26XXM && // (0x03)
+ nChipType != CHIP_TYPE_MSG22XX && // (0x7A)
+ nChipType != CHIP_TYPE_MSG28XX) // (0x85)
+ {
+ nChipType = 0;
+ }
+
+ DBG("*** Chip Type = 0x%x ***\n", nChipType);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ return nChipType;
+}
+
+void DrvFwCtrlGetCustomerFirmwareVersion(u16 *pMajor, u16 *pMinor, u8 **ppVersion)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA || g_ChipType == CHIP_TYPE_MSG21XX)
+ {
+ u8 szDbBusTxData[3] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ szDbBusTxData[0] = 0x53;
+ szDbBusTxData[1] = 0x00;
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ szDbBusTxData[2] = 0x2A;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG21XX)
+ {
+ szDbBusTxData[2] = 0x74;
+ }
+ else
+ {
+ szDbBusTxData[2] = 0x2A;
+ }
+
+ mutex_lock(&g_Mutex);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ mutex_unlock(&g_Mutex);
+
+ *pMajor = (szDbBusRxData[1]<<8) + szDbBusRxData[0];
+ *pMinor = (szDbBusRxData[3]<<8) + szDbBusRxData[2];
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ u16 nRegData1, nRegData2;
+
+ mutex_lock(&g_Mutex);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ // RIU password
+ RegSet16BitValue(0x161A, 0xABBA);
+
+ RegSet16BitValue(0x1600, 0xBFF4); // Set start address for customer firmware version on main block
+
+ // Enable burst mode
+// RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01));
+
+ RegSetLByteValue(0x160E, 0x01);
+
+ nRegData1 = RegGet16BitValue(0x1604);
+ nRegData2 = RegGet16BitValue(0x1606);
+
+ *pMajor = (((nRegData1 >> 8) & 0xFF) << 8) + (nRegData1 & 0xFF);
+ *pMinor = (((nRegData2 >> 8) & 0xFF) << 8) + (nRegData2 & 0xFF);
+
+ // Clear burst mode
+// RegSet16BitValue(0x160C, RegGet16BitValue(0x160C) & (~0x01));
+
+ RegSet16BitValue(0x1600, 0x0000);
+
+ // Clear RIU password
+ RegSet16BitValue(0x161A, 0x0000);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ mutex_unlock(&g_Mutex);
+ }
+
+ DBG("*** major = %d ***\n", *pMajor);
+ DBG("*** minor = %d ***\n", *pMinor);
+
+ if (*ppVersion == NULL)
+ {
+ *ppVersion = kzalloc(sizeof(u8)*6, GFP_KERNEL);
+ }
+
+ sprintf(*ppVersion, "%03d%03d", *pMajor, *pMinor);
+}
+
+void DrvFwCtrlGetPlatformFirmwareVersion(u8 **ppVersion)
+{
+ u32 i;
+ u16 nRegData1, nRegData2;
+ u8 szDbBusRxData[12] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ mutex_lock(&g_Mutex);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX) // Only MSG22XX support platform firmware version
+ {
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ // RIU password
+ RegSet16BitValue(0x161A, 0xABBA);
+
+ RegSet16BitValue(0x1600, 0xC1F2); // Set start address for platform firmware version on info block(Actually, start reading from 0xC1F0)
+
+ // Enable burst mode
+ RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01));
+
+ for (i = 0; i < 3; i ++)
+ {
+ RegSetLByteValue(0x160E, 0x01);
+
+ nRegData1 = RegGet16BitValue(0x1604);
+ nRegData2 = RegGet16BitValue(0x1606);
+
+ szDbBusRxData[i*4+0] = (nRegData1 & 0xFF);
+ szDbBusRxData[i*4+1] = ((nRegData1 >> 8 ) & 0xFF);
+
+// DBG("szDbBusRxData[%d] = 0x%x , %c \n", i*4+0, szDbBusRxData[i*4+0], szDbBusRxData[i*4+0]); // add for debug
+// DBG("szDbBusRxData[%d] = 0x%x , %c \n", i*4+1, szDbBusRxData[i*4+1], szDbBusRxData[i*4+1]); // add for debug
+
+ szDbBusRxData[i*4+2] = (nRegData2 & 0xFF);
+ szDbBusRxData[i*4+3] = ((nRegData2 >> 8 ) & 0xFF);
+
+// DBG("szDbBusRxData[%d] = 0x%x , %c \n", i*4+2, szDbBusRxData[i*4+2], szDbBusRxData[i*4+2]); // add for debug
+// DBG("szDbBusRxData[%d] = 0x%x , %c \n", i*4+3, szDbBusRxData[i*4+3], szDbBusRxData[i*4+3]); // add for debug
+ }
+
+ // Clear burst mode
+ RegSet16BitValue(0x160C, RegGet16BitValue(0x160C) & (~0x01));
+
+ RegSet16BitValue(0x1600, 0x0000);
+
+ // Clear RIU password
+ RegSet16BitValue(0x161A, 0x0000);
+
+ if (*ppVersion == NULL)
+ {
+ *ppVersion = kzalloc(sizeof(u8)*10, GFP_KERNEL);
+ }
+
+ sprintf(*ppVersion, "%c%c%c%c%c%c%c%c%c%c", szDbBusRxData[2], szDbBusRxData[3], szDbBusRxData[4],
+ szDbBusRxData[5], szDbBusRxData[6], szDbBusRxData[7], szDbBusRxData[8], szDbBusRxData[9], szDbBusRxData[10], szDbBusRxData[11]);
+ }
+ else
+ {
+ if (*ppVersion == NULL)
+ {
+ *ppVersion = kzalloc(sizeof(u8)*10, GFP_KERNEL);
+ }
+
+ sprintf(*ppVersion, "%s", "N/A");
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ mutex_unlock(&g_Mutex);
+
+ DBG("*** platform firmware version = %s ***\n", *ppVersion);
+}
+
+s32 DrvFwCtrlUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ return _DrvFwCtrlUpdateFirmwareCash(szFwData);
+}
+
+s32 DrvFwCtrlUpdateFirmwareBySdCard(const char *pFilePath)
+{
+ s32 nRetVal = -1;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA || g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ nRetVal = _DrvFwCtrlUpdateFirmwareBySdCard(pFilePath);
+ }
+ else
+ {
+ DBG("This chip type (%d) does not support update firmware by sd card\n", g_ChipType);
+ }
+
+ return nRetVal;
+}
+
+void DrvFwCtrlHandleFingerTouch(void)
+{
+ TouchInfo_t tInfo;
+ u32 i;
+ u8 nTouchKeyCode = 0;
+ static u32 nLastKeyCode = 0;
+ u8 *pPacket = NULL;
+ u16 nReportPacketLength = 0;
+ s32 rc;
+
+// DBG("*** %s() ***\n", __func__); // add for debug
+
+ if (_gIsDisableFinagerTouch == 1)
+ {
+ DBG("Skip finger touch for handling get firmware info or change firmware mode\n");
+ return;
+ }
+
+ mutex_lock(&g_Mutex);
+ DBG("*** %s() *** mutex_lock(&g_Mutex)\n", __func__); // add for debug
+
+ memset(&tInfo, 0x0, sizeof(TouchInfo_t));
+
+ if (IS_FIRMWARE_DATA_LOG_ENABLED)
+ {
+ if (g_FirmwareMode == FIRMWARE_MODE_DEMO_MODE)
+ {
+ DBG("FIRMWARE_MODE_DEMO_MODE\n");
+
+ nReportPacketLength = DEMO_MODE_PACKET_LENGTH;
+ pPacket = g_DemoModePacket;
+ }
+ else if (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE)
+ {
+ DBG("FIRMWARE_MODE_DEBUG_MODE\n");
+
+ if (g_FirmwareInfo.nLogModePacketHeader != 0x62)
+ {
+ DBG("WRONG DEBUG MODE HEADER : 0x%x\n", g_FirmwareInfo.nLogModePacketHeader);
+ goto TouchHandleEnd;
+ }
+
+ nReportPacketLength = g_FirmwareInfo.nLogModePacketLength;
+ pPacket = g_LogModePacket;
+ }
+ else if (g_FirmwareMode == FIRMWARE_MODE_RAW_DATA_MODE)
+ {
+ DBG("FIRMWARE_MODE_RAW_DATA_MODE\n");
+
+ if (g_FirmwareInfo.nLogModePacketHeader != 0x62)
+ {
+ DBG("WRONG RAW DATA MODE HEADER : 0x%x\n", g_FirmwareInfo.nLogModePacketHeader);
+ goto TouchHandleEnd;
+ }
+
+ nReportPacketLength = g_FirmwareInfo.nLogModePacketLength;
+ pPacket = g_LogModePacket;
+ }
+ else
+ {
+ DBG("WRONG FIRMWARE MODE : 0x%x\n", g_FirmwareMode);
+ goto TouchHandleEnd;
+ }
+ }
+ else
+ {
+ DBG("FIRMWARE_MODE_DEMO_MODE\n");
+
+ nReportPacketLength = DEMO_MODE_PACKET_LENGTH;
+ pPacket = g_DemoModePacket;
+ } //IS_FIRMWARE_DATA_LOG_ENABLED
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+ if (g_GestureDebugMode == 1 && g_GestureWakeupFlag == 1)
+ {
+ DBG("Set gesture debug mode packet length, g_ChipType=%d\n", g_ChipType);
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ nReportPacketLength = GESTURE_DEBUG_MODE_PACKET_LENGTH;
+ pPacket = _gGestureWakeupPacket;
+ }
+ else
+ {
+ DBG("This chip type does not support gesture debug mode.\n");
+ goto TouchHandleEnd;
+ }
+ }
+ else if (g_GestureWakeupFlag == 1)
+ {
+ DBG("Set gesture wakeup packet length, g_ChipType=%d\n", g_ChipType);
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+ nReportPacketLength = GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH;
+#else
+ nReportPacketLength = GESTURE_WAKEUP_PACKET_LENGTH;
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+ pPacket = _gGestureWakeupPacket;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ nReportPacketLength = DEMO_MODE_PACKET_LENGTH;
+ pPacket = _gGestureWakeupPacket;
+ }
+ else
+ {
+ DBG("This chip type does not support gesture wakeup.\n");
+ goto TouchHandleEnd;
+ }
+ }
+
+#else
+
+ if (g_GestureWakeupFlag == 1)
+ {
+ DBG("Set gesture wakeup packet length, g_ChipType=%d\n", g_ChipType);
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+ nReportPacketLength = GESTURE_WAKEUP_INFORMATION_PACKET_LENGTH;
+#else
+ nReportPacketLength = GESTURE_WAKEUP_PACKET_LENGTH;
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+ pPacket = _gGestureWakeupPacket;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ nReportPacketLength = DEMO_MODE_PACKET_LENGTH;
+ pPacket = _gGestureWakeupPacket;
+ }
+ else
+ {
+ DBG("This chip type does not support gesture wakeup.\n");
+ goto TouchHandleEnd;
+ }
+ }
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM)
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+ if (g_GestureWakeupFlag == 1)
+ {
+ u32 i = 0;
+
+ while (i < 5)
+ {
+ mdelay(50);
+
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+
+ if (rc > 0)
+ {
+ break;
+ }
+
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("I2C read packet data failed, rc = %d\n", rc);
+ goto TouchHandleEnd;
+ }
+ }
+ else
+ {
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+ if (rc < 0)
+ {
+ DBG("I2C read packet data failed, rc = %d\n", rc);
+ goto TouchHandleEnd;
+ }
+ }
+#else
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+ if (rc < 0)
+ {
+ DBG("I2C read packet data failed, rc = %d\n", rc);
+ goto TouchHandleEnd;
+ }
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+ if (rc < 0)
+ {
+ DBG("I2C read packet data failed, rc = %d\n", rc);
+ goto TouchHandleEnd;
+ }
+#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM)
+ if (nReportPacketLength > 8)
+ {
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+ }
+ else
+ {
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &pPacket[0], nReportPacketLength);
+ }
+
+ if (rc < 0)
+ {
+ DBG("I2C read packet data failed, rc = %d\n", rc);
+ goto TouchHandleEnd;
+ }
+#endif
+
+ if (0 == _DrvFwCtrlParsePacket(pPacket, nReportPacketLength, &tInfo))
+ {
+ //report...
+ if ((tInfo.nFingerNum) == 0) //touch end
+ {
+ if (nLastKeyCode != 0)
+ {
+ DBG("key touch released\n");
+
+ input_report_key(g_InputDevice, BTN_TOUCH, 0);
+ input_report_key(g_InputDevice, nLastKeyCode, 0);
+
+ input_sync(g_InputDevice);
+
+ nLastKeyCode = 0; //clear key status..
+ }
+ else
+ {
+ DrvPlatformLyrFingerTouchReleased(0, 0);
+
+ input_sync(g_InputDevice);
+ }
+ }
+ else //touch on screen
+ {
+ if (tInfo.nTouchKeyCode != 0)
+ {
+#ifdef CONFIG_TP_HAVE_KEY
+ if (tInfo.nTouchKeyCode == 4) // TOUCH_KEY_HOME
+ {
+ nTouchKeyCode = g_TpVirtualKey[1];
+ }
+ else if (tInfo.nTouchKeyCode == 1) // TOUCH_KEY_MENU
+ {
+ nTouchKeyCode = g_TpVirtualKey[0];
+ }
+ else if (tInfo.nTouchKeyCode == 2) // TOUCH_KEY_BACK
+ {
+ nTouchKeyCode = g_TpVirtualKey[2];
+ }
+ else if (tInfo.nTouchKeyCode == 8) // TOUCH_KEY_SEARCH
+ {
+ nTouchKeyCode = g_TpVirtualKey[3];
+ }
+
+ if (nLastKeyCode != nTouchKeyCode)
+ {
+ DBG("key touch pressed\n");
+ DBG("nTouchKeyCode = %d, nLastKeyCode = %d\n", nTouchKeyCode, nLastKeyCode);
+
+ nLastKeyCode = nTouchKeyCode;
+
+ input_report_key(g_InputDevice, BTN_TOUCH, 1);
+ input_report_key(g_InputDevice, nTouchKeyCode, 1);
+
+ input_sync(g_InputDevice);
+ }
+#endif //CONFIG_TP_HAVE_KEY
+ }
+ else
+ {
+ DBG("tInfo->nFingerNum = %d...............\n", tInfo.nFingerNum);
+
+ for (i = 0; i < tInfo.nFingerNum; i ++)
+ {
+ DrvPlatformLyrFingerTouchPressed(tInfo.tPoint[i].nX, tInfo.tPoint[i].nY, 0, 0);
+ }
+
+ input_sync(g_InputDevice);
+ }
+ }
+
+#ifdef CONFIG_ENABLE_COUNT_REPORT_RATE
+ if (g_IsEnableReportRate == 1)
+ {
+ if (g_ValidTouchCount == 4294967296)
+ {
+ g_ValidTouchCount = 0; // Reset count if overflow
+ DBG("g_ValidTouchCount reset to 0\n");
+ }
+
+ g_ValidTouchCount ++;
+
+ DBG("g_ValidTouchCount = %d\n", g_ValidTouchCount);
+ }
+#endif //CONFIG_ENABLE_COUNT_REPORT_RATE
+ }
+
+ TouchHandleEnd:
+
+ DBG("*** %s() *** mutex_unlock(&g_Mutex)\n", __func__); // add for debug
+ mutex_unlock(&g_Mutex);
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+
+void DrvFwCtrlOpenGestureWakeup(u32 *pMode)
+{
+ u8 szDbBusTxData[4] = {0};
+ u32 i = 0;
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("wakeup mode 0 = 0x%x\n", pMode[0]);
+ DBG("wakeup mode 1 = 0x%x\n", pMode[1]);
+
+#ifdef CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+ szDbBusTxData[0] = 0x59;
+ szDbBusTxData[1] = 0x00;
+ szDbBusTxData[2] = ((pMode[1] & 0xFF000000) >> 24);
+ szDbBusTxData[3] = ((pMode[1] & 0x00FF0000) >> 16);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ udelay(1000); // delay 1ms
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup index 0 success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup index 0 failed\n");
+ }
+
+ szDbBusTxData[0] = 0x59;
+ szDbBusTxData[1] = 0x01;
+ szDbBusTxData[2] = ((pMode[1] & 0x0000FF00) >> 8);
+ szDbBusTxData[3] = ((pMode[1] & 0x000000FF) >> 0);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ udelay(1000); // delay 1ms
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup index 1 success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup index 1 failed\n");
+ }
+
+ szDbBusTxData[0] = 0x59;
+ szDbBusTxData[1] = 0x02;
+ szDbBusTxData[2] = ((pMode[0] & 0xFF000000) >> 24);
+ szDbBusTxData[3] = ((pMode[0] & 0x00FF0000) >> 16);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ udelay(1000); // delay 1ms
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup index 2 success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup index 2 failed\n");
+ }
+
+ szDbBusTxData[0] = 0x59;
+ szDbBusTxData[1] = 0x03;
+ szDbBusTxData[2] = ((pMode[0] & 0x0000FF00) >> 8);
+ szDbBusTxData[3] = ((pMode[0] & 0x000000FF) >> 0);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ udelay(1000); // delay 1ms
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup index 3 success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup index 3 failed\n");
+ }
+
+ g_GestureWakeupFlag = 1; // gesture wakeup is enabled
+
+#else
+
+ szDbBusTxData[0] = 0x58;
+ szDbBusTxData[1] = ((pMode[0] & 0x0000FF00) >> 8);
+ szDbBusTxData[2] = ((pMode[0] & 0x000000FF) >> 0);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+
+ if (rc > 0)
+ {
+ DBG("Enable gesture wakeup success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Enable gesture wakeup failed\n");
+ }
+
+ g_GestureWakeupFlag = 1; // gesture wakeup is enabled
+#endif //CONFIG_SUPPORT_64_TYPES_GESTURE_WAKEUP_MODE
+}
+
+void DrvFwCtrlCloseGestureWakeup(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ g_GestureWakeupFlag = 0; // gesture wakeup is disabled
+}
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+void DrvFwCtrlOpenGestureDebugMode(u8 nGestureFlag)
+{
+ u8 szDbBusTxData[3] = {0};
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ DBG("Gesture Flag = 0x%x\n", nGestureFlag);
+
+ szDbBusTxData[0] = 0x30;
+ szDbBusTxData[1] = 0x01;
+ szDbBusTxData[2] = nGestureFlag;
+
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ if (rc < 0)
+ {
+ DBG("Enable gesture debug mode failed\n");
+ }
+ else
+ {
+ DBG("Enable gesture debug mode success\n");
+ }
+
+ g_GestureDebugMode = 1; // gesture debug mode is enabled
+}
+
+void DrvFwCtrlCloseGestureDebugMode(void)
+{
+ u8 szDbBusTxData[3] = {0};
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x30;
+ szDbBusTxData[1] = 0x00;
+ szDbBusTxData[2] = 0x00;
+
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ if (rc < 0)
+ {
+ DBG("Disable gesture debug mode failed\n");
+ }
+ else
+ {
+ DBG("Disable gesture debug mode success\n");
+ }
+
+ g_GestureDebugMode = 0; // gesture debug mode is disabled
+}
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+static void _DrvFwCtrlCoordinate(u8 *pRawData, u32 *pTranX, u32 *pTranY)
+{
+ u32 nX;
+ u32 nY;
+#ifdef CONFIG_SWAP_X_Y
+ u32 nTempX;
+ u32 nTempY;
+#endif
+
+ nX = (((pRawData[0] & 0xF0) << 4) | pRawData[1]); // parse the packet to coordinate
+ nY = (((pRawData[0] & 0x0F) << 8) | pRawData[2]);
+
+ DBG("[x,y]=[%d,%d]\n", nX, nY);
+
+#ifdef CONFIG_SWAP_X_Y
+ nTempY = nX;
+ nTempX = nY;
+ nX = nTempX;
+ nY = nTempY;
+#endif
+
+#ifdef CONFIG_REVERSE_X
+ nX = 2047 - nX;
+#endif
+
+#ifdef CONFIG_REVERSE_Y
+ nY = 2047 - nY;
+#endif
+
+ /*
+ * pRawData[0]~nRawData[2] : the point abs,
+ * pRawData[0]~nRawData[2] all are 0xFF, release touch
+ */
+ if ((pRawData[0] == 0xFF) && (pRawData[1] == 0xFF) && (pRawData[2] == 0xFF))
+ {
+ *pTranX = 0; // final X coordinate
+ *pTranY = 0; // final Y coordinate
+ }
+ else
+ {
+ /* one touch point */
+ *pTranX = (nX * TOUCH_SCREEN_X_MAX) / TPD_WIDTH;
+ *pTranY = (nY * TOUCH_SCREEN_Y_MAX) / TPD_HEIGHT;
+ DBG("[%s]: [x,y]=[%d,%d]\n", __func__, nX, nY);
+ DBG("[%s]: point[x,y]=[%d,%d]\n", __func__, *pTranX, *pTranY);
+ }
+}
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+//------------------------------------------------------------------------------//
+
+u16 DrvFwCtrlChangeFirmwareMode(u16 nMode)
+{
+ u8 szDbBusTxData[2] = {0};
+ u32 i = 0;
+ s32 rc;
+
+ DBG("*** %s() *** nMode = 0x%x\n", __func__, nMode);
+
+ _gIsDisableFinagerTouch = 1; // Disable finger touch ISR handling temporarily for device driver can send change firmware mode i2c command to firmware.
+
+ szDbBusTxData[0] = 0x02;
+ szDbBusTxData[1] = (u8)nMode;
+
+ mutex_lock(&g_Mutex);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 2);
+ if (rc > 0)
+ {
+ DBG("Change firmware mode success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Change firmware mode failed, rc = %d\n", rc);
+ }
+
+ mutex_unlock(&g_Mutex);
+
+ _gIsDisableFinagerTouch = 0;
+
+ return nMode;
+}
+
+void DrvFwCtrlGetFirmwareInfo(FirmwareInfo_t *pInfo)
+{
+ u8 szDbBusTxData[1] = {0};
+ u8 szDbBusRxData[8] = {0};
+ u32 i = 0;
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ _gIsDisableFinagerTouch = 1; // Disable finger touch ISR handling temporarily for device driver can send get firmware info i2c command to firmware.
+
+ szDbBusTxData[0] = 0x01;
+
+ mutex_lock(&g_Mutex);
+
+ while (i < 5)
+ {
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 1);
+ if (rc > 0)
+ {
+ DBG("Get firmware info IicWriteData() success\n");
+ }
+ mdelay(20);
+ rc = IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 8);
+ if (rc > 0)
+ {
+ DBG("Get firmware info IicReadData() success\n");
+ break;
+ }
+
+ mdelay(10);
+ i++;
+ }
+ if (i == 5)
+ {
+ DBG("Get firmware info failed, rc = %d\n", rc);
+ }
+
+ mutex_unlock(&g_Mutex);
+
+ if ((szDbBusRxData[1] & 0x80) == 0x80)
+ {
+ pInfo->nIsCanChangeFirmwareMode = 0;
+ }
+ else
+ {
+ pInfo->nIsCanChangeFirmwareMode = 1;
+ }
+
+ pInfo->nFirmwareMode = szDbBusRxData[1] & 0x7F;
+ pInfo->nLogModePacketHeader = szDbBusRxData[2];
+ pInfo->nLogModePacketLength = (szDbBusRxData[3]<<8) + szDbBusRxData[4];
+
+ DBG("pInfo->nFirmwareMode=0x%x, pInfo->nLogModePacketHeader=0x%x, pInfo->nLogModePacketLength=%d, pInfo->nIsCanChangeFirmwareMode=%d\n", pInfo->nFirmwareMode, pInfo->nLogModePacketHeader, pInfo->nLogModePacketLength, pInfo->nIsCanChangeFirmwareMode);
+
+ _gIsDisableFinagerTouch = 0;
+}
+
+void DrvFwCtrlRestoreFirmwareModeToLogDataMode(void)
+{
+ DBG("*** %s() g_IsSwitchModeByAPK = %d ***\n", __func__, g_IsSwitchModeByAPK);
+
+ if (g_IsSwitchModeByAPK == 1)
+ {
+ FirmwareInfo_t tInfo;
+
+ memset(&tInfo, 0x0, sizeof(FirmwareInfo_t));
+
+ DrvFwCtrlGetFirmwareInfo(&tInfo);
+
+ DBG("g_FirmwareMode = 0x%x, tInfo.nFirmwareMode = 0x%x\n", g_FirmwareMode, tInfo.nFirmwareMode);
+
+ // Since reset_hw() will reset the firmware mode to demo mode, we must reset the firmware mode again after reset_hw().
+ if (g_FirmwareMode == FIRMWARE_MODE_DEBUG_MODE && FIRMWARE_MODE_DEBUG_MODE != tInfo.nFirmwareMode)
+ {
+ g_FirmwareMode = DrvFwCtrlChangeFirmwareMode(FIRMWARE_MODE_DEBUG_MODE);
+ }
+ else if (g_FirmwareMode == FIRMWARE_MODE_RAW_DATA_MODE && FIRMWARE_MODE_RAW_DATA_MODE != tInfo.nFirmwareMode)
+ {
+ g_FirmwareMode = DrvFwCtrlChangeFirmwareMode(FIRMWARE_MODE_RAW_DATA_MODE);
+ }
+ else
+ {
+ DBG("firmware mode is not restored\n");
+ }
+ }
+}
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+void DrvFwCtrlCheckFirmwareUpdateBySwId(void)
+{
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _DrvFwCtrlMsg21xxaCheckFirmwareUpdateBySwId();
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _DrvFwCtrlMsg22xxCheckFirmwareUpdateBySwId();
+ }
+ else
+ {
+ DBG("This chip type (%d) does not support update firmware by sw id\n", g_ChipType);
+ }
+}
+
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+//------------------------------------------------------------------------------//
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+
+s32 DrvFwCtrlEnableProximity(void)
+{
+ u8 szDbBusTxData[4] = {0};
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x52;
+ szDbBusTxData[1] = 0x00;
+
+ if (g_ChipType == CHIP_TYPE_MSG21XX)
+ {
+ szDbBusTxData[2] = 0x62;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG21XXA || g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ szDbBusTxData[2] = 0x4a;
+ }
+ else
+ {
+ DBG("*** Un-recognized chip type = 0x%x ***\n", g_ChipType);
+ return -1;
+ }
+
+ szDbBusTxData[3] = 0xa0;
+
+ mutex_lock(&g_Mutex);
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ mutex_unlock(&g_Mutex);
+
+ if (rc > 0)
+ {
+ DBG("Enable proximity detection success\n");
+ }
+ else
+ {
+ DBG("Enable proximity detection failed\n");
+ }
+
+ g_EnableTpProximity = 1;
+
+ return rc;
+}
+
+s32 DrvFwCtrlDisableProximity(void)
+{
+ u8 szDbBusTxData[4] = {0};
+ s32 rc;
+
+ DBG("*** %s() ***\n", __func__);
+
+ szDbBusTxData[0] = 0x52;
+ szDbBusTxData[1] = 0x00;
+
+ if (g_ChipType == CHIP_TYPE_MSG21XX)
+ {
+ szDbBusTxData[2] = 0x62;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG21XXA || g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ szDbBusTxData[2] = 0x4a;
+ }
+ else
+ {
+ DBG("*** Un-recognized chip type = 0x%x ***\n", g_ChipType);
+ return -1;
+ }
+
+ szDbBusTxData[3] = 0xa1;
+
+ mutex_lock(&g_Mutex);
+ rc = IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 4);
+ mutex_unlock(&g_Mutex);
+
+ if (rc > 0)
+ {
+ DBG("Disable proximity detection success\n");
+ }
+ else
+ {
+ DBG("Disable proximity detection failed\n");
+ }
+
+ g_EnableTpProximity = 0;
+#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM)
+ g_FaceClosingTp = 0;
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM || CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM
+
+ return rc;
+}
+
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+//------------------------------------------------------------------------------//
+
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC
\ No newline at end of file diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_self_fw_control.h b/drivers/input/touchscreen/msg2233/mstar_drv_self_fw_control.h new file mode 100644 index 00000000..8d7abd6d --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_self_fw_control.h @@ -0,0 +1,185 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_self_fw_control.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_SELF_FW_CONTROL_H__
+#define __MSTAR_DRV_SELF_FW_CONTROL_H__
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+#include "mstar_drv_common.h"
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC)
+
+/*--------------------------------------------------------------------------*/
+/* COMPILE OPTION DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+//#define CONFIG_SWAP_X_Y
+
+//#define CONFIG_REVERSE_X
+//#define CONFIG_REVERSE_Y
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR CONSTANT DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+#define DEMO_MODE_PACKET_LENGTH (8)
+#define MAX_TOUCH_NUM (2)
+
+#define MAX_ERASE_EFLASH_TIMES (2) // for update firmware of MSG22xx
+
+#define MSG21XXA_FIRMWARE_MAIN_BLOCK_SIZE (32) //32K
+#define MSG21XXA_FIRMWARE_INFO_BLOCK_SIZE (1) //1K
+#define MSG21XXA_FIRMWARE_WHOLE_SIZE (MSG21XXA_FIRMWARE_MAIN_BLOCK_SIZE+MSG21XXA_FIRMWARE_INFO_BLOCK_SIZE) //33K
+
+#define MSG22XX_FIRMWARE_MAIN_BLOCK_SIZE (48) //48K
+#define MSG22XX_FIRMWARE_INFO_BLOCK_SIZE (512) //512Byte
+
+
+//#define MSG21XXA_FIRMWARE_MODE_UNKNOWN_MODE (0xFF)
+#define MSG21XXA_FIRMWARE_MODE_DEMO_MODE (0x00)
+#define MSG21XXA_FIRMWARE_MODE_DEBUG_MODE (0x01)
+#define MSG21XXA_FIRMWARE_MODE_RAW_DATA_MODE (0x02)
+
+//#define MSG22XX_FIRMWARE_MODE_UNKNOWN_MODE (0xFF)
+#define MSG22XX_FIRMWARE_MODE_DEMO_MODE (0x00)
+#define MSG22XX_FIRMWARE_MODE_DEBUG_MODE (0x01)
+#define MSG22XX_FIRMWARE_MODE_RAW_DATA_MODE (0x02)
+
+
+#define DEBUG_MODE_PACKET_LENGTH (128)
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+#define UPDATE_FIRMWARE_RETRY_COUNT (2)
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+#ifdef CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#define FIRMWARE_GESTURE_INFORMATION_MODE_A (0x00)
+#define FIRMWARE_GESTURE_INFORMATION_MODE_B (0x01)
+#define FIRMWARE_GESTURE_INFORMATION_MODE_C (0x02)
+#endif //CONFIG_ENABLE_GESTURE_INFORMATION_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+/*--------------------------------------------------------------------------*/
+/* DATA TYPE DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+typedef struct
+{
+ u16 nX;
+ u16 nY;
+} TouchPoint_t;
+
+typedef struct
+{
+ u8 nTouchKeyMode;
+ u8 nTouchKeyCode;
+ u8 nFingerNum;
+ TouchPoint_t tPoint[MAX_TOUCH_NUM];
+} TouchInfo_t;
+
+typedef struct
+{
+ u8 nFirmwareMode;
+ u8 nLogModePacketHeader;
+ u16 nLogModePacketLength;
+ u8 nIsCanChangeFirmwareMode;
+} FirmwareInfo_t;
+
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+/*
+ * Note.
+ * The following is sw id enum definition for MSG22XX.
+ * 0x0000 and 0xFFFF are not allowed to be defined as SW ID.
+ * SW_ID_UNDEFINED is a reserved enum value, do not delete it or modify it.
+ * Please modify the SW ID of the below enum value depends on the TP vendor that you are using.
+ */
+typedef enum {
+ MSG22XX_SW_ID_XXXX = 0x0001,
+ MSG22XX_SW_ID_YYYY = 0x0002,
+ MSG22XX_SW_ID_UNDEFINED
+} Msg22xxSwId_e;
+
+
+/*
+ * Note.
+ * The following is sw id enum definition for MSG21XXA.
+ * SW_ID_UNDEFINED is a reserved enum value, do not delete it or modify it.
+ * Please modify the SW ID of the below enum value depends on the TP vendor that you are using.
+ */
+typedef enum {
+ MSG21XXA_SW_ID_XXXX = 0,
+ MSG21XXA_SW_ID_YYYY,
+ MSG21XXA_SW_ID_UNDEFINED
+} Msg21xxaSwId_e;
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL FUNCTION DECLARATION */
+/*--------------------------------------------------------------------------*/
+
+#ifdef CONFIG_ENABLE_GESTURE_WAKEUP
+extern void DrvFwCtrlOpenGestureWakeup(u32 *pMode);
+extern void DrvFwCtrlCloseGestureWakeup(void);
+
+#ifdef CONFIG_ENABLE_GESTURE_DEBUG_MODE
+extern void DrvFwCtrlOpenGestureDebugMode(u8 nGestureFlag);
+extern void DrvFwCtrlCloseGestureDebugMode(void);
+#endif //CONFIG_ENABLE_GESTURE_DEBUG_MODE
+#endif //CONFIG_ENABLE_GESTURE_WAKEUP
+
+extern u32 DrvFwCtrlReadDQMemValue(u16 nAddr);
+extern void DrvFwCtrlWriteDQMemValue(u16 nAddr, u32 nData);
+
+extern u16 DrvFwCtrlChangeFirmwareMode(u16 nMode);
+extern void DrvFwCtrlGetFirmwareInfo(FirmwareInfo_t *pInfo);
+extern void DrvFwCtrlRestoreFirmwareModeToLogDataMode(void);
+
+#ifdef CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+extern void DrvFwCtrlCheckFirmwareUpdateBySwId(void);
+#endif //CONFIG_UPDATE_FIRMWARE_BY_SW_ID
+
+#ifdef CONFIG_ENABLE_PROXIMITY_DETECTION
+extern s32 DrvFwCtrlEnableProximity(void);
+extern s32 DrvFwCtrlDisableProximity(void);
+#endif //CONFIG_ENABLE_PROXIMITY_DETECTION
+
+extern void DrvFwCtrlVariableInitialize(void);
+extern void DrvFwCtrlOptimizeCurrentConsumption(void);
+extern u8 DrvFwCtrlGetChipType(void);
+extern void DrvFwCtrlGetCustomerFirmwareVersion(u16 *pMajor, u16 *pMinor, u8 **ppVersion);
+extern void DrvFwCtrlGetPlatformFirmwareVersion(u8 **ppVersion);
+extern void DrvFwCtrlHandleFingerTouch(void);
+extern s32 DrvFwCtrlUpdateFirmware(u8 szFwData[][1024], EmemType_e eEmemType);
+extern s32 DrvFwCtrlUpdateFirmwareBySdCard(const char *pFilePath);
+
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC
+
+#endif /* __MSTAR_DRV_SELF_FW_CONTROL_H__ */
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_self_mp_test.c b/drivers/input/touchscreen/msg2233/mstar_drv_self_mp_test.c new file mode 100644 index 00000000..2aa3662d --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_self_mp_test.c @@ -0,0 +1,2805 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_self_mp_test.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include "mstar_drv_self_mp_test.h"
+#include "mstar_drv_utility_adaption.h"
+#include "mstar_drv_self_fw_control.h"
+#include "mstar_drv_platform_porting_layer.h"
+#include "mstar_drv_ic_fw_porting_layer.h"
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC)
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+
+// Modify.
+#include "msg21xxa_open_test_ANA1_X.h"
+#include "msg21xxa_open_test_ANA2_X.h"
+#include "msg21xxa_open_test_ANA1_B_X.h"
+#include "msg21xxa_open_test_ANA2_B_X.h"
+#include "msg21xxa_open_test_ANA3_X.h"
+
+#include "msg21xxa_open_test_ANA1_Y.h"
+#include "msg21xxa_open_test_ANA2_Y.h"
+#include "msg21xxa_open_test_ANA1_B_Y.h"
+#include "msg21xxa_open_test_ANA2_B_Y.h"
+#include "msg21xxa_open_test_ANA3_Y.h"
+
+// Modify.
+#include "msg21xxa_short_test_ANA1_X.h"
+#include "msg21xxa_short_test_ANA2_X.h"
+#include "msg21xxa_short_test_ANA3_X.h"
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+#include "msg21xxa_short_test_ANA4_X.h"
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+#include "msg21xxa_short_test_ANA1_Y.h"
+#include "msg21xxa_short_test_ANA2_Y.h"
+#include "msg21xxa_short_test_ANA3_Y.h"
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+#include "msg21xxa_short_test_ANA4_Y.h"
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+// Modify.
+#include "msg22xx_open_test_RIU1_X.h"
+#include "msg22xx_open_test_RIU2_X.h"
+#include "msg22xx_open_test_RIU3_X.h"
+
+#include "msg22xx_open_test_RIU1_Y.h"
+#include "msg22xx_open_test_RIU2_Y.h"
+#include "msg22xx_open_test_RIU3_Y.h"
+
+// Modify.
+#include "msg22xx_short_test_RIU1_X.h"
+#include "msg22xx_short_test_RIU2_X.h"
+#include "msg22xx_short_test_RIU3_X.h"
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+#include "msg22xx_short_test_RIU4_X.h"
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+#include "msg22xx_short_test_RIU1_Y.h"
+#include "msg22xx_short_test_RIU2_Y.h"
+#include "msg22xx_short_test_RIU3_Y.h"
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+#include "msg22xx_short_test_RIU4_Y.h"
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+
+/*=============================================================*/
+// PREPROCESSOR CONSTANT DEFINITION
+/*=============================================================*/
+
+// Modify.
+#define TP_OF_X (1) //(2)
+#define TP_OF_Y (4)
+
+/*=============================================================*/
+// EXTERN VARIABLE DECLARATION
+/*=============================================================*/
+
+extern u32 SLAVE_I2C_ID_DBBUS;
+extern u32 SLAVE_I2C_ID_DWI2C;
+
+extern u8 g_ChipType;
+
+extern struct i2c_client *g_I2cClient;
+extern struct mutex g_Mutex;
+
+/*=============================================================*/
+// LOCAL VARIABLE DEFINITION
+/*=============================================================*/
+
+static u32 _gIsInMpTest = 0;
+static u32 _gTestRetryCount = CTP_MP_TEST_RETRY_COUNT;
+static ItoTestMode_e _gItoTestMode = 0;
+
+static s32 _gCtpMpTestStatus = ITO_TEST_UNDER_TESTING;
+static u8 _gTestFailChannel[MAX_CHANNEL_NUM] = {0};
+static u32 _gTestFailChannelCount = 0;
+
+static struct work_struct _gCtpItoTestWork;
+static struct workqueue_struct *_gCtpMpTestWorkQueue = NULL;
+
+static s16 _gRawData1[MAX_CHANNEL_NUM] = {0};
+static s16 _gRawData2[MAX_CHANNEL_NUM] = {0};
+static s16 _gRawData3[MAX_CHANNEL_NUM] = {0};
+static s16 _gRawData4[MAX_CHANNEL_NUM] = {0};
+static s8 _gDataFlag1[MAX_CHANNEL_NUM] = {0};
+static s8 _gDataFlag2[MAX_CHANNEL_NUM] = {0};
+static s8 _gDataFlag3[MAX_CHANNEL_NUM] = {0};
+static s8 _gDataFlag4[MAX_CHANNEL_NUM] = {0};
+
+static u8 _gItoTestKeyNum = 0;
+static u8 _gItoTestDummyNum = 0;
+static u8 _gItoTestTriangleNum = 0;
+static u8 _gIsEnable2R = 0;
+
+
+static u8 _gLTP = 1;
+
+// _gOpen1~_gOpen3 are for MSG21XXA
+static u16 *_gOpen1 = NULL;
+static u16 *_gOpen1B = NULL;
+static u16 *_gOpen2 = NULL;
+static u16 *_gOpen2B = NULL;
+static u16 *_gOpen3 = NULL;
+
+// _gShort_1~_gShort_4 are for MSG21XXA
+static u16 *_gShort_1 = NULL;
+static u16 *_gShort_2 = NULL;
+static u16 *_gShort_3 = NULL;
+
+// _gShort_1_GPO~_gShort_4_GPO are for MSG21XXA
+static u16 *_gShort_1_GPO = NULL;
+static u16 *_gShort_2_GPO = NULL;
+static u16 *_gShort_3_GPO = NULL;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+static u16 *_gShort_4 = NULL;
+static u16 *_gShort_4_GPO = NULL;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+
+static u8 _gIsOldFirmwareVersion = 0;
+
+// _gOpenRIU1~_gOpenRIU3 are for MSG22XX
+static u32 *_gOpenRIU1 = NULL;
+static u32 *_gOpenRIU2 = NULL;
+static u32 *_gOpenRIU3 = NULL;
+
+// _gShort_RIU1~_gShort_RIU4 are for MSG22XX
+static u32 *_gShort_RIU1 = NULL;
+static u32 *_gShort_RIU2 = NULL;
+static u32 *_gShort_RIU3 = NULL;
+
+// _gOpenSubFrameNum1~_gShortSubFrameNum4 are for MSG22XX
+static u8 _gOpenSubFrameNum1 = 0;
+static u8 _gOpenSubFrameNum2 = 0;
+static u8 _gOpenSubFrameNum3 = 0;
+static u8 _gShortSubFrameNum1 = 0;
+static u8 _gShortSubFrameNum2 = 0;
+static u8 _gShortSubFrameNum3 = 0;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+static u32 *_gShort_RIU4 = NULL;
+static u8 _gShortSubFrameNum4 = 0;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+
+static u8 *_gMAP1 = NULL;
+static u8 *_gMAP2 = NULL;
+static u8 *_gMAP3 = NULL;
+static u8 *_gMAP40_1 = NULL;
+static u8 *_gMAP40_2 = NULL;
+static u8 *_gMAP41_1 = NULL;
+static u8 *_gMAP41_2 = NULL;
+
+static u8 *_gSHORT_MAP1 = NULL;
+static u8 *_gSHORT_MAP2 = NULL;
+static u8 *_gSHORT_MAP3 = NULL;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+static u8 *_gMAP40_3 = NULL;
+static u8 *_gMAP40_4 = NULL;
+static u8 *_gMAP41_3 = NULL;
+static u8 *_gMAP41_4 = NULL;
+
+static u8 *_gSHORT_MAP4 = NULL;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+
+ItoTestResult_e _gItoTestResult = ITO_TEST_OK;
+
+/*=============================================================*/
+// EXTERN FUNCTION DECLARATION
+/*=============================================================*/
+
+
+/*=============================================================*/
+// LOCAL FUNCTION DEFINITION
+/*=============================================================*/
+
+static u16 _DrvMpTestItoTestGetTpType(void)
+{
+ u16 nMajor = 0, nMinor = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ u8 szDbBusTxData[3] = {0};
+ u8 szDbBusRxData[4] = {0};
+
+ szDbBusTxData[0] = 0x53;
+ szDbBusTxData[1] = 0x00;
+ szDbBusTxData[2] = 0x2A;
+
+ IicWriteData(SLAVE_I2C_ID_DWI2C, &szDbBusTxData[0], 3);
+ IicReadData(SLAVE_I2C_ID_DWI2C, &szDbBusRxData[0], 4);
+
+ nMajor = (szDbBusRxData[1]<<8) + szDbBusRxData[0];
+ nMinor = (szDbBusRxData[3]<<8) + szDbBusRxData[2];
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ u16 nRegData1, nRegData2;
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ // RIU password
+ RegSet16BitValue(0x161A, 0xABBA);
+
+
+ RegSet16BitValue(0x1600, 0xBFF4); // Set start address for customer firmware version on main block
+
+ // Enable burst mode
+// RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01));
+
+
+ RegSetLByteValue(0x160E, 0x01);
+
+ nRegData1 = RegGet16BitValue(0x1604);
+ nRegData2 = RegGet16BitValue(0x1606);
+
+ nMajor = (((nRegData1 >> 8) & 0xFF) << 8) + (nRegData1 & 0xFF);
+ nMinor = (((nRegData2 >> 8) & 0xFF) << 8) + (nRegData2 & 0xFF);
+
+ // Clear burst mode
+// RegSet16BitValue(0x160C, RegGet16BitValue(0x160C) & (~0x01));
+
+ RegSet16BitValue(0x1600, 0x0000);
+
+ // Clear RIU password
+ RegSet16BitValue(0x161A, 0x0000);
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ mdelay(100);
+ }
+
+ DBG("*** major = %d ***\n", nMajor);
+ DBG("*** minor = %d ***\n", nMinor);
+
+ return nMajor;
+}
+
+static u16 _DrvMpTestItoTestChooseTpType(void)
+{
+ u16 nTpType = 0;
+ u32 i = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ // _gOpen1~_gOpen3 are for MSG21XXA
+ _gOpen1 = NULL;
+ _gOpen1B = NULL;
+ _gOpen2 = NULL;
+ _gOpen2B = NULL;
+ _gOpen3 = NULL;
+
+ // _gShort_1~_gShort_4 are for MSG21XXA
+ _gShort_1 = NULL;
+ _gShort_2 = NULL;
+ _gShort_3 = NULL;
+
+ _gShort_1_GPO = NULL;
+ _gShort_2_GPO = NULL;
+ _gShort_3_GPO = NULL;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gShort_4 = NULL;
+ _gShort_4_GPO = NULL;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ // _gOpenRIU1~_gOpenRIU3 are for MSG22XX
+ _gOpenRIU1 = NULL;
+ _gOpenRIU2 = NULL;
+ _gOpenRIU3 = NULL;
+
+ // _gShort_RIU1~_gShort_RIU4 are for MSG22XX
+ _gShort_RIU1 = NULL;
+ _gShort_RIU2 = NULL;
+ _gShort_RIU3 = NULL;
+
+ _gOpenSubFrameNum1 = 0;
+ _gOpenSubFrameNum2 = 0;
+ _gOpenSubFrameNum3 = 0;
+ _gShortSubFrameNum1 = 0;
+ _gShortSubFrameNum2 = 0;
+ _gShortSubFrameNum3 = 0;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gShort_RIU4 = NULL;
+ _gShortSubFrameNum4 = 0;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ }
+
+ _gMAP1 = NULL;
+ _gMAP2 = NULL;
+ _gMAP3 = NULL;
+ _gMAP40_1 = NULL;
+ _gMAP40_2 = NULL;
+ _gMAP41_1 = NULL;
+ _gMAP41_2 = NULL;
+
+ _gSHORT_MAP1 = NULL;
+ _gSHORT_MAP2 = NULL;
+ _gSHORT_MAP3 = NULL;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gMAP40_3 = NULL;
+ _gMAP40_4 = NULL;
+ _gMAP41_3 = NULL;
+ _gMAP41_4 = NULL;
+
+ _gSHORT_MAP4 = NULL;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ _gItoTestKeyNum = 0;
+ _gItoTestDummyNum = 0;
+ _gItoTestTriangleNum = 0;
+ _gIsEnable2R = 0;
+
+ for (i = 0; i < 10; i ++)
+ {
+ nTpType = _DrvMpTestItoTestGetTpType();
+ DBG("nTpType = %d, i = %d\n", nTpType, i);
+
+ if (TP_OF_X == nTpType || TP_OF_Y == nTpType) // Modify.
+ {
+ break;
+ }
+ else if (i < 5)
+ {
+ mdelay(100);
+ }
+ else
+ {
+ DrvPlatformLyrTouchDeviceResetHw();
+ }
+ }
+
+ if (TP_OF_X == nTpType) // Modify.
+ {
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _gOpen1 = MSG21XXA_open_1_X;
+ _gOpen1B = MSG21XXA_open_1B_X;
+ _gOpen2 = MSG21XXA_open_2_X;
+ _gOpen2B = MSG21XXA_open_2B_X;
+ _gOpen3 = MSG21XXA_open_3_X;
+
+ _gShort_1 = MSG21XXA_short_1_X;
+ _gShort_2 = MSG21XXA_short_2_X;
+ _gShort_3 = MSG21XXA_short_3_X;
+
+ _gShort_1_GPO = MSG21XXA_short_1_X_GPO;
+ _gShort_2_GPO = MSG21XXA_short_2_X_GPO;
+ _gShort_3_GPO = MSG21XXA_short_3_X_GPO;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gShort_4 = MSG21XXA_short_4_X;
+ _gShort_4_GPO = MSG21XXA_short_4_X_GPO;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ _gMAP1 = MSG21XXA_MAP1_X;
+ _gMAP2 = MSG21XXA_MAP2_X;
+ _gMAP3 = MSG21XXA_MAP3_X;
+ _gMAP40_1 = MSG21XXA_MAP40_1_X;
+ _gMAP40_2 = MSG21XXA_MAP40_2_X;
+ _gMAP41_1 = MSG21XXA_MAP41_1_X;
+ _gMAP41_2 = MSG21XXA_MAP41_2_X;
+
+ _gSHORT_MAP1 = MSG21XXA_SHORT_MAP1_X;
+ _gSHORT_MAP2 = MSG21XXA_SHORT_MAP2_X;
+ _gSHORT_MAP3 = MSG21XXA_SHORT_MAP3_X;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gMAP40_3 = MSG21XXA_MAP40_3_X;
+ _gMAP40_4 = MSG21XXA_MAP40_4_X;
+ _gMAP41_3 = MSG21XXA_MAP41_3_X;
+ _gMAP41_4 = MSG21XXA_MAP41_4_X;
+
+ _gSHORT_MAP4 = MSG21XXA_SHORT_MAP4_X;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ _gItoTestKeyNum = MSG21XXA_NUM_KEY_X;
+ _gItoTestDummyNum = MSG21XXA_NUM_DUMMY_X;
+ _gItoTestTriangleNum = MSG21XXA_NUM_SENSOR_X;
+ _gIsEnable2R = MSG21XXA_ENABLE_2R_X;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _gOpenRIU1 = MSG22XX_open_1_X;
+ _gOpenRIU2 = MSG22XX_open_2_X;
+ _gOpenRIU3 = MSG22XX_open_3_X;
+
+ _gShort_RIU1 = MSG22XX_short_1_X;
+ _gShort_RIU2 = MSG22XX_short_2_X;
+ _gShort_RIU3 = MSG22XX_short_3_X;
+
+ _gOpenSubFrameNum1 = MSG22XX_NUM_OPEN_1_SENSOR_X;
+ _gOpenSubFrameNum2 = MSG22XX_NUM_OPEN_2_SENSOR_X;
+ _gOpenSubFrameNum3 = MSG22XX_NUM_OPEN_3_SENSOR_X;
+ _gShortSubFrameNum1 = MSG22XX_NUM_SHORT_1_SENSOR_X;
+ _gShortSubFrameNum2 = MSG22XX_NUM_SHORT_2_SENSOR_X;
+ _gShortSubFrameNum3 = MSG22XX_NUM_SHORT_3_SENSOR_X;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gShort_RIU4 = MSG22XX_short_4_X;
+ _gShortSubFrameNum4 = MSG22XX_NUM_SHORT_4_SENSOR_X;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ _gMAP1 = MSG22XX_MAP1_X;
+ _gMAP2 = MSG22XX_MAP2_X;
+ _gMAP3 = MSG22XX_MAP3_X;
+ _gMAP40_1 = MSG22XX_MAP40_1_X;
+ _gMAP40_2 = MSG22XX_MAP40_2_X;
+ _gMAP41_1 = MSG22XX_MAP41_1_X;
+ _gMAP41_2 = MSG22XX_MAP41_2_X;
+
+ _gSHORT_MAP1 = MSG22XX_SHORT_MAP1_X;
+ _gSHORT_MAP2 = MSG22XX_SHORT_MAP2_X;
+ _gSHORT_MAP3 = MSG22XX_SHORT_MAP3_X;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gMAP40_3 = MSG22XX_MAP40_3_X;
+ _gMAP40_4 = MSG22XX_MAP40_4_X;
+ _gMAP41_3 = MSG22XX_MAP41_3_X;
+ _gMAP41_4 = MSG22XX_MAP41_4_X;
+
+ _gSHORT_MAP4 = MSG22XX_SHORT_MAP4_X;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ _gItoTestKeyNum = MSG22XX_NUM_KEY_X;
+ _gItoTestDummyNum = MSG22XX_NUM_DUMMY_X;
+ _gItoTestTriangleNum = MSG22XX_NUM_SENSOR_X;
+ _gIsEnable2R = MSG22XX_ENABLE_2R_X;
+ }
+ }
+ else if (TP_OF_Y == nTpType) // Modify.
+ {
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _gOpen1 = MSG21XXA_open_1_Y;
+ _gOpen1B = MSG21XXA_open_1B_Y;
+ _gOpen2 = MSG21XXA_open_2_Y;
+ _gOpen2B = MSG21XXA_open_2B_Y;
+ _gOpen3 = MSG21XXA_open_3_Y;
+
+ _gShort_1 = MSG21XXA_short_1_Y;
+ _gShort_2 = MSG21XXA_short_2_Y;
+ _gShort_3 = MSG21XXA_short_3_Y;
+
+ _gShort_1_GPO = MSG21XXA_short_1_Y_GPO;
+ _gShort_2_GPO = MSG21XXA_short_2_Y_GPO;
+ _gShort_3_GPO = MSG21XXA_short_3_Y_GPO;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gShort_4 = MSG21XXA_short_4_Y;
+ _gShort_4_GPO = MSG21XXA_short_4_Y_GPO;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ _gMAP1 = MSG21XXA_MAP1_Y;
+ _gMAP2 = MSG21XXA_MAP2_Y;
+ _gMAP3 = MSG21XXA_MAP3_Y;
+ _gMAP40_1 = MSG21XXA_MAP40_1_Y;
+ _gMAP40_2 = MSG21XXA_MAP40_2_Y;
+ _gMAP41_1 = MSG21XXA_MAP41_1_Y;
+ _gMAP41_2 = MSG21XXA_MAP41_2_Y;
+
+ _gSHORT_MAP1 = MSG21XXA_SHORT_MAP1_Y;
+ _gSHORT_MAP2 = MSG21XXA_SHORT_MAP2_Y;
+ _gSHORT_MAP3 = MSG21XXA_SHORT_MAP3_Y;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gMAP40_3 = MSG21XXA_MAP40_3_Y;
+ _gMAP40_4 = MSG21XXA_MAP40_4_Y;
+ _gMAP41_3 = MSG21XXA_MAP41_3_Y;
+ _gMAP41_4 = MSG21XXA_MAP41_4_Y;
+
+ _gSHORT_MAP4 = MSG21XXA_SHORT_MAP4_Y;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ _gItoTestKeyNum = MSG21XXA_NUM_KEY_Y;
+ _gItoTestDummyNum = MSG21XXA_NUM_DUMMY_Y;
+ _gItoTestTriangleNum = MSG21XXA_NUM_SENSOR_Y;
+ _gIsEnable2R = MSG21XXA_ENABLE_2R_Y;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _gOpenRIU1 = MSG22XX_open_1_Y;
+ _gOpenRIU2 = MSG22XX_open_2_Y;
+ _gOpenRIU3 = MSG22XX_open_3_Y;
+
+ _gShort_RIU1 = MSG22XX_short_1_Y;
+ _gShort_RIU2 = MSG22XX_short_2_Y;
+ _gShort_RIU3 = MSG22XX_short_3_Y;
+
+ _gOpenSubFrameNum1 = MSG22XX_NUM_OPEN_1_SENSOR_Y;
+ _gOpenSubFrameNum2 = MSG22XX_NUM_OPEN_2_SENSOR_Y;
+ _gOpenSubFrameNum3 = MSG22XX_NUM_OPEN_3_SENSOR_Y;
+ _gShortSubFrameNum1 = MSG22XX_NUM_SHORT_1_SENSOR_Y;
+ _gShortSubFrameNum2 = MSG22XX_NUM_SHORT_2_SENSOR_Y;
+ _gShortSubFrameNum3 = MSG22XX_NUM_SHORT_3_SENSOR_Y;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gShort_RIU4 = MSG22XX_short_4_Y;
+ _gShortSubFrameNum4 = MSG22XX_NUM_SHORT_4_SENSOR_Y;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ _gMAP1 = MSG22XX_MAP1_Y;
+ _gMAP2 = MSG22XX_MAP2_Y;
+ _gMAP3 = MSG22XX_MAP3_Y;
+ _gMAP40_1 = MSG22XX_MAP40_1_Y;
+ _gMAP40_2 = MSG22XX_MAP40_2_Y;
+ _gMAP41_1 = MSG22XX_MAP41_1_Y;
+ _gMAP41_2 = MSG22XX_MAP41_2_Y;
+
+ _gSHORT_MAP1 = MSG22XX_SHORT_MAP1_Y;
+ _gSHORT_MAP2 = MSG22XX_SHORT_MAP2_Y;
+ _gSHORT_MAP3 = MSG22XX_SHORT_MAP3_Y;
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ _gMAP40_3 = MSG22XX_MAP40_3_Y;
+ _gMAP40_4 = MSG22XX_MAP40_4_Y;
+ _gMAP41_3 = MSG22XX_MAP41_3_Y;
+ _gMAP41_4 = MSG22XX_MAP41_4_Y;
+
+ _gSHORT_MAP4 = MSG22XX_SHORT_MAP4_Y;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ _gItoTestKeyNum = MSG22XX_NUM_KEY_Y;
+ _gItoTestDummyNum = MSG22XX_NUM_DUMMY_Y;
+ _gItoTestTriangleNum = MSG22XX_NUM_SENSOR_Y;
+ _gIsEnable2R = MSG22XX_ENABLE_2R_Y;
+ }
+ }
+ else
+ {
+ nTpType = 0;
+ }
+
+ return nTpType;
+}
+
+static void _DrvMpTestItoTestAnaSwReset(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x1100, 0xFFFF); // reset ANA - analog
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ RegSet16BitValueOn(0x130C, BIT1); // reset Filter - digital
+ }
+
+ RegSet16BitValue(0x1100, 0x0000);
+ mdelay(15);
+}
+
+//------------------------------------------------------------------------------//
+
+
+static u16 _DrvMpTestItoTestGetNum(void)
+{
+ u32 i;
+ u16 nSensorNum = 0;
+ u16 nRegVal1, nRegVal2;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nRegVal1 = RegGet16BitValue(0x114A); //bank:ana, addr:h0025
+ DBG("nRegValue1 = %d\n", nRegVal1);
+
+ if ((nRegVal1 & BIT1) == BIT1)
+ {
+ nRegVal1 = RegGet16BitValue(0x120A); //bank:ana2, addr:h0005
+ nRegVal1 = nRegVal1 & 0x0F;
+
+ nRegVal2 = RegGet16BitValue(0x1216); //bank:ana2, addr:h000b
+ nRegVal2 = ((nRegVal2 >> 1) & 0x0F) + 1;
+
+ nSensorNum = nRegVal1 * nRegVal2;
+ }
+ else
+ {
+ for (i = 0; i < 4; i ++)
+ {
+ nSensorNum += (RegGet16BitValue(0x120A)>>(4*i))&0x0F; //bank:ana2, addr:h0005
+ }
+ }
+ DBG("nSensorNum = %d\n", nSensorNum);
+
+ return nSensorNum;
+}
+
+static void _DrvMpTestItoTestDisableFilterNoiseDetect(void)
+{
+ u16 nRegValue;
+
+ DBG("*** %s() ***\n", __func__);
+
+ // Disable DIG/ANA drop
+ nRegValue = RegGet16BitValue(0x1302);
+
+ RegSet16BitValue(0x1302, nRegValue & (~(BIT2 | BIT1 | BIT0)));
+}
+
+static void _DrvMpTestItoTestPolling(void)
+{
+ u16 nRegInt = 0x0000;
+ u16 nRegVal;
+
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValue(0x130C, BIT15); //bank:fir, addr:h0006
+ RegSet16BitValue(0x1214, (RegGet16BitValue(0x1214) | BIT0)); //bank:ana2, addr:h000a
+
+ DBG("polling start\n");
+
+ do
+ {
+ nRegInt = RegGet16BitValue(0x3D18); //bank:intr_ctrl, addr:h000c
+ } while(( nRegInt & FIQ_E_FRAME_READY_MASK ) == 0x0000);
+
+ DBG("polling end\n");
+
+ nRegVal = RegGet16BitValue(0x3D18);
+ RegSet16BitValue(0x3D18, nRegVal & (~FIQ_E_FRAME_READY_MASK));
+}
+
+static void _DrvMpTestItoOpenTestSetV(u8 nEnable, u8 nPrs)
+{
+ u16 nRegVal;
+
+ DBG("*** %s() nEnable = %d, nPrs = %d ***\n", __func__, nEnable, nPrs);
+
+ nRegVal = RegGet16BitValue(0x1208); //bank:ana2, addr:h0004
+ nRegVal = nRegVal & 0xF1;
+
+ if (nPrs == 0)
+ {
+ RegSet16BitValue(0x1208, nRegVal|0x0C);
+ }
+ else if (nPrs == 1)
+ {
+ RegSet16BitValue(0x1208, nRegVal|0x0E);
+ }
+ else
+ {
+ RegSet16BitValue(0x1208, nRegVal|0x02);
+ }
+
+ if (nEnable)
+ {
+ nRegVal = RegGet16BitValue(0x1106); //bank:ana, addr:h0003
+ RegSet16BitValue(0x1106, nRegVal|0x03);
+ }
+ else
+ {
+ nRegVal = RegGet16BitValue(0x1106);
+ nRegVal = nRegVal & 0xFC;
+ RegSet16BitValue(0x1106, nRegVal);
+ }
+}
+
+static u16 _DrvMpTestItoTestMsg21xxaGetDataOut(s16 *pRawData)
+{
+ u32 i;
+ u16 szRawData[MAX_CHANNEL_NUM] = {0};
+ u16 nSensorNum;
+ u16 nRegInt;
+ u8 szDbBusTxData[8] = {0};
+ u8 szDbBusRxData[MAX_CHANNEL_NUM*2] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ nSensorNum = _DrvMpTestItoTestGetNum();
+
+ if ((nSensorNum*2) > (MAX_CHANNEL_NUM*2))
+ {
+ DBG("Danger. nSensorNum = %d\n", nSensorNum);
+ return nSensorNum;
+ }
+
+ nRegInt = RegGet16BitValue((0x3d<<8) | (REG_INTR_FIQ_MASK<<1));
+ RegSet16BitValue((0x3d<<8) | (REG_INTR_FIQ_MASK<<1), (nRegInt & (u16)(~FIQ_E_FRAME_READY_MASK)));
+
+ _DrvMpTestItoTestPolling();
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x13; //bank:fir, addr:h0020
+ szDbBusTxData[2] = 0x40;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3);
+ mdelay(20);
+ IicReadData(SLAVE_I2C_ID_DBBUS, &szDbBusRxData[0], (nSensorNum * 2));
+ mdelay(100);
+
+ for (i = 0; i < nSensorNum * 2; i ++)
+ {
+ DBG("szDbBusRxData[%d] = %d\n", i, szDbBusRxData[i]); // add for debug
+ }
+
+ nRegInt = RegGet16BitValue((0x3d<<8) | (REG_INTR_FIQ_MASK<<1));
+ RegSet16BitValue((0x3d<<8) | (REG_INTR_FIQ_MASK<<1), (nRegInt | (u16)FIQ_E_FRAME_READY_MASK));
+
+ for (i = 0; i < nSensorNum; i ++)
+ {
+ szRawData[i] = (szDbBusRxData[2 * i + 1] << 8 ) | (szDbBusRxData[2 * i]);
+ pRawData[i] = (s16)szRawData[i];
+ }
+
+ return nSensorNum;
+}
+
+static void _DrvMpTestItoTestMsg21xxaSendDataIn(u8 nStep)
+{
+ u32 i;
+ u16 *pType = NULL;
+ u8 szDbBusTxData[512] = {0};
+
+ DBG("*** %s() nStep = %d ***\n", __func__, nStep);
+
+ if (nStep == 1) //39-1
+ {
+ pType = &_gShort_1[0];
+ }
+ else if (nStep == 2) //39-2
+ {
+ pType = &_gShort_2[0];
+ }
+ else if (nStep == 3) //39-3
+ {
+ pType = &_gShort_3[0];
+ }
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ else if (nStep == 0) //39-4 (2R)
+ {
+ pType = &_gShort_4[0];
+ }
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ else if (nStep == 4)
+ {
+ pType = &_gOpen1[0];
+ }
+ else if (nStep == 5)
+ {
+ pType = &_gOpen2[0];
+ }
+ else if (nStep == 6)
+ {
+ pType = &_gOpen3[0];
+ }
+ else if (nStep == 9)
+ {
+ pType = &_gOpen1B[0];
+ }
+ else if (nStep == 10)
+ {
+ pType = &_gOpen2B[0];
+ }
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x11; //bank:ana, addr:h0000
+ szDbBusTxData[2] = 0x00;
+ for (i = 0; i <= 0x3E ; i ++)
+ {
+ szDbBusTxData[3+2*i] = pType[i] & 0xFF;
+ szDbBusTxData[4+2*i] = (pType[i] >> 8) & 0xFF;
+ }
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+0x3F*2);
+
+ szDbBusTxData[2] = 0x7A * 2; //bank:ana, addr:h007a
+ for (i = 0x7A; i <= 0x7D ; i ++)
+ {
+ szDbBusTxData[3+2*(i-0x7A)] = 0;
+ szDbBusTxData[4+2*(i-0x7A)] = 0;
+ }
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+8);
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x12; //bank:ana2, addr:h0005
+
+ szDbBusTxData[2] = 0x05 * 2;
+ szDbBusTxData[3] = pType[128+0x05] & 0xFF;
+ szDbBusTxData[4] = (pType[128+0x05] >> 8) & 0xFF;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 5);
+
+ szDbBusTxData[2] = 0x0B * 2; //bank:ana2, addr:h000b
+ szDbBusTxData[3] = pType[128+0x0B] & 0xFF;
+ szDbBusTxData[4] = (pType[128+0x0B] >> 8) & 0xFF;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 5);
+
+ szDbBusTxData[2] = 0x12 * 2; //bank:ana2, addr:h0012
+ szDbBusTxData[3] = pType[128+0x12] & 0xFF;
+ szDbBusTxData[4] = (pType[128+0x12] >> 8) & 0xFF;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 5);
+
+ szDbBusTxData[2] = 0x15 * 2; //bank:ana2, addr:h0015
+ szDbBusTxData[3] = pType[128+0x15] & 0xFF;
+ szDbBusTxData[4] = (pType[128+0x15] >> 8) & 0xFF;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 5);
+
+ if (_gItoTestMode == ITO_TEST_MODE_OPEN_TEST)
+ {
+//#if 1 //for AC mod
+ szDbBusTxData[1] = 0x13;
+ szDbBusTxData[2] = 0x12 * 2;
+ szDbBusTxData[3] = 0x30;
+ szDbBusTxData[4] = 0x30;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, szDbBusTxData, 5);
+
+ szDbBusTxData[2] = 0x14 * 2;
+ szDbBusTxData[3] = 0X30;
+ szDbBusTxData[4] = 0X30;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, szDbBusTxData, 5);
+
+ szDbBusTxData[1] = 0x12;
+ for (i = 0x0D; i <= 0x10; i ++) //for AC noise(++)
+ {
+ szDbBusTxData[2] = i * 2;
+ szDbBusTxData[3] = pType[128+i] & 0xFF;
+ szDbBusTxData[4] = (pType[128+i] >> 8) & 0xFF;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, szDbBusTxData, 5);
+ }
+
+ for (i = 0x16; i <= 0x18; i ++) //for AC noise
+ {
+ szDbBusTxData[2] = i * 2;
+ szDbBusTxData[3] = pType[128+i] & 0xFF;
+ szDbBusTxData[4] = (pType[128+i] >> 8) & 0xFF;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, szDbBusTxData, 5);
+ }
+//#endif
+ }
+}
+
+static void _DrvMpTestItoOpenTestMsg21xxaSetC(u8 nCSubStep)
+{
+ u32 i;
+ u8 szDbBusTxData[MAX_CHANNEL_NUM+3];
+ u8 nHighLevelCSub = 0;
+ u8 nCSubNew;
+
+ DBG("*** %s() nCSubStep = %d ***\n", __func__, nCSubStep);
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x11; //bank:ana, addr:h0042
+ szDbBusTxData[2] = 0x84;
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ nCSubNew = nCSubStep;
+ nHighLevelCSub = 0;
+
+ if (nCSubNew > 0x1F)
+ {
+ nCSubNew = nCSubNew - 0x14;
+ nHighLevelCSub = 1;
+ }
+
+ szDbBusTxData[3+i] = nCSubNew & 0x1F;
+ if (nHighLevelCSub == 1)
+ {
+ szDbBusTxData[3+i] |= BIT5;
+ }
+ }
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], MAX_CHANNEL_NUM+3);
+
+ szDbBusTxData[2] = 0xB4; //bank:ana, addr:h005a
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], MAX_CHANNEL_NUM+3);
+}
+
+static void _DrvMpTestItoOpenTestMsg21xxaFirst(u8 nItemId, s16 *pRawData, s8 *pDataFlag)
+{
+ u32 i, j;
+ s16 szTmpRawData[MAX_CHANNEL_NUM] = {0};
+ u16 nRegVal;
+ u8 nLoop;
+ u8 nSensorNum1 = 0, nSensorNum2 = 0, nTotalSensor = 0;
+ u8 *pMapping = NULL;
+
+ DBG("*** %s() nItemId = %d ***\n", __func__, nItemId);
+
+ // Stop cpu
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+
+ RegSet16BitValue(0x1E24, 0x0500); //bank:chip, addr:h0012
+ RegSet16BitValue(0x1E2A, 0x0000); //bank:chip, addr:h0015
+ RegSet16BitValue(0x1EE6, 0x6E00); //bank:chip, addr:h0073
+ RegSet16BitValue(0x1EE8, 0x0071); //bank:chip, addr:h0074
+
+ if (nItemId == 40)
+ {
+ pMapping = &_gMAP1[0];
+ if (_gIsEnable2R)
+ {
+ nTotalSensor = _gItoTestTriangleNum/2;
+ }
+ else
+ {
+ nTotalSensor = _gItoTestTriangleNum/2 + _gItoTestKeyNum + _gItoTestDummyNum;
+ }
+ }
+ else if (nItemId == 41)
+ {
+ pMapping = &_gMAP2[0];
+ if (_gIsEnable2R)
+ {
+ nTotalSensor = _gItoTestTriangleNum/2;
+ }
+ else
+ {
+ nTotalSensor = _gItoTestTriangleNum/2 + _gItoTestKeyNum + _gItoTestDummyNum;
+ }
+ }
+ else if (nItemId == 42)
+ {
+ pMapping = &_gMAP3[0];
+ nTotalSensor = _gItoTestTriangleNum + _gItoTestKeyNum + _gItoTestDummyNum;
+ }
+
+ nLoop = 1;
+ if (nItemId != 42)
+ {
+ if (nTotalSensor > 11)
+ {
+ nLoop = 2;
+ }
+ }
+
+ DBG("nLoop = %d\n", nLoop);
+
+ for (i = 0; i < nLoop; i ++)
+ {
+ if (i == 0)
+ {
+ _DrvMpTestItoTestMsg21xxaSendDataIn(nItemId - 36);
+ }
+ else
+ {
+ if (nItemId == 40)
+ {
+ _DrvMpTestItoTestMsg21xxaSendDataIn(9);
+ }
+ else
+ {
+ _DrvMpTestItoTestMsg21xxaSendDataIn(10);
+ }
+ }
+
+ _DrvMpTestItoTestDisableFilterNoiseDetect();
+
+ _DrvMpTestItoOpenTestSetV(1, 0);
+ nRegVal = RegGet16BitValue(0x110E); //bank:ana, addr:h0007
+ RegSet16BitValue(0x110E, nRegVal | BIT11);
+
+ if (_gLTP == 1)
+ {
+ _DrvMpTestItoOpenTestMsg21xxaSetC(32);
+ }
+ else
+ {
+ _DrvMpTestItoOpenTestMsg21xxaSetC(0);
+ }
+
+ _DrvMpTestItoTestAnaSwReset();
+
+ if (i == 0)
+ {
+ nSensorNum1 = _DrvMpTestItoTestMsg21xxaGetDataOut(szTmpRawData);
+ DBG("nSensorNum1 = %d\n", nSensorNum1);
+ }
+ else
+ {
+ nSensorNum2 = _DrvMpTestItoTestMsg21xxaGetDataOut(&szTmpRawData[nSensorNum1]);
+ DBG("nSensorNum1 = %d, nSensorNum2 = %d\n", nSensorNum1, nSensorNum2);
+ }
+ }
+
+ for (j = 0; j < nTotalSensor; j ++)
+ {
+ if (_gLTP == 1)
+ {
+ pRawData[pMapping[j]] = szTmpRawData[j] + 4096;
+ pDataFlag[pMapping[j]] = 1;
+ }
+ else
+ {
+ pRawData[pMapping[j]] = szTmpRawData[j];
+ pDataFlag[pMapping[j]] = 1;
+ }
+ }
+}
+
+static void _DrvMpTestItoShortTestChangeGPOSetting(u8 nItemId)
+{
+ u8 szDbBusTxData[3+GPO_SETTING_SIZE*2] = {0};
+ u16 szGPOSetting[3] = {0};
+ u32 i;
+
+ DBG("*** %s() nItemId = %d ***\n", __func__, nItemId);
+
+ if (nItemId == 1) // 39-1
+ {
+ szGPOSetting[0] = _gShort_1_GPO[0];
+ szGPOSetting[1] = _gShort_1_GPO[1];
+ szGPOSetting[2] = _gShort_1_GPO[2];
+ szGPOSetting[2] |= (1 << (int)(PIN_GUARD_RING % 16));
+ }
+ else if (nItemId == 2) // 39-2
+ {
+ szGPOSetting[0] = _gShort_2_GPO[0];
+ szGPOSetting[1] = _gShort_2_GPO[1];
+ szGPOSetting[2] = _gShort_2_GPO[2];
+ szGPOSetting[2] |= (1 << (int)(PIN_GUARD_RING % 16));
+ }
+ else if (nItemId == 3) // 39-3
+ {
+ szGPOSetting[0] = _gShort_3_GPO[0];
+ szGPOSetting[1] = _gShort_3_GPO[1];
+ szGPOSetting[2] = _gShort_3_GPO[2];
+ szGPOSetting[2] |= (1 << (int)(PIN_GUARD_RING % 16));
+ }
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ else if (nItemId == 0) // 39-4 (2R)
+ {
+ szGPOSetting[0] = _gShort_4_GPO[0];
+ szGPOSetting[1] = _gShort_4_GPO[1];
+ szGPOSetting[2] = _gShort_4_GPO[2];
+ szGPOSetting[2] |= (1 << (int)(PIN_GUARD_RING % 16));
+ }
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ else
+ {
+ DBG("Invalid item id for changing GPIO setting of short test.\n");
+
+ return;
+ }
+
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x12;
+ szDbBusTxData[2] = 0x48;
+
+ for (i = 0; i < GPO_SETTING_SIZE; i ++)
+ {
+ szDbBusTxData[3+2*i] = szGPOSetting[i] & 0xFF;
+ szDbBusTxData[4+2*i] = (szGPOSetting[i] >> 8) & 0xFF;
+ }
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3+GPO_SETTING_SIZE*2);
+}
+
+static void _DrvMpTestItoShortTestChangeRmodeSetting(u8 nMode)
+{
+ u8 szDbBusTxData[6] = {0};
+
+ DBG("*** %s() nMode = %d ***\n", __func__, nMode);
+
+ // AFE R-mode enable(Bit-12)
+ RegSetLByteValue(0x1103, 0x10);
+
+ // drv_mux_OV (Bit-8 1:enable)
+ RegSetLByteValue(0x1107, 0x55);
+
+ if (nMode == 1) // P_CODE: 0V
+ {
+ RegSet16BitValue(0x110E, 0x073A);
+ }
+ else if (nMode == 0) // N_CODE: 2.4V
+ {
+ RegSet16BitValue(0x110E, 0x073B);
+ }
+
+ // SW2 rising & SW3 rising return to 0
+ RegSetLByteValue(0x1227, 0x01);
+ // turn off the chopping
+ RegSetLByteValue(0x1208, 0x0C);
+ // idle driver ov
+ RegSetLByteValue(0x1241, 0xC0);
+
+ // AFE ov
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x12;
+ szDbBusTxData[2] = 0x44;
+ szDbBusTxData[3] = 0xFF;
+ szDbBusTxData[4] = 0xFF;
+ szDbBusTxData[5] = 0xFF;
+
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 6);
+}
+
+static void _DrvMpTestItoShortTestMsg21xxaFirst(u8 nItemId, s16 *pRawData, s8 *pDataFlag)
+{
+ u32 i;
+ s16 szTmpRawData[MAX_CHANNEL_NUM] = {0};
+ s16 szTmpRawData2[MAX_CHANNEL_NUM] = {0};
+ u8 nSensorNum, nSensorNum2, nNumOfSensorMapping1, nNumOfSensorMapping2, nSensorCount = 0;
+ u8 *pMapping = NULL;
+
+ DBG("*** %s() nItemId = %d ***\n", __func__, nItemId);
+
+ // Stop cpu
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+ // chip top op0
+ RegSet16BitValue(0x1E24, 0x0500); //bank:chip, addr:h0012
+ RegSet16BitValue(0x1E2A, 0x0000); //bank:chip, addr:h0015
+ RegSet16BitValue(0x1EE6, 0x6E00); //bank:chip, addr:h0073
+ RegSet16BitValue(0x1EE8, 0x0071); //bank:chip, addr:h0074
+
+ if ((_gItoTestTriangleNum + _gItoTestKeyNum + _gItoTestDummyNum) % 2 != 0)
+ {
+ nNumOfSensorMapping1 = (_gItoTestTriangleNum + _gItoTestKeyNum + _gItoTestDummyNum) / 2 + 1;
+ nNumOfSensorMapping2 = nNumOfSensorMapping1;
+ }
+ else
+ {
+ nNumOfSensorMapping1 = (_gItoTestTriangleNum + _gItoTestKeyNum + _gItoTestDummyNum) / 2;
+ nNumOfSensorMapping2 = nNumOfSensorMapping1;
+ if (nNumOfSensorMapping2 % 2 != 0)
+ {
+ nNumOfSensorMapping2 ++;
+ }
+ }
+
+ if (nItemId == 1) // 39-1
+ {
+ pMapping = &_gSHORT_MAP1[0];
+ nSensorCount = nNumOfSensorMapping1;
+ }
+ else if (nItemId == 2) // 39-2
+ {
+ pMapping = &_gSHORT_MAP2[0];
+ nSensorCount = nNumOfSensorMapping2;
+ }
+ else if (nItemId == 3) // 39-3
+ {
+ pMapping = &_gSHORT_MAP3[0];
+ nSensorCount = _gItoTestTriangleNum;
+ }
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ else if (nItemId == 0) // 39-4 (2R)
+ {
+ pMapping = &_gSHORT_MAP4[0];
+ nSensorCount = _gItoTestTriangleNum/2;
+ }
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ DBG("nSensorCount = %d\n", nSensorCount);
+
+ _DrvMpTestItoTestMsg21xxaSendDataIn(nItemId);
+
+ _DrvMpTestItoTestDisableFilterNoiseDetect();
+
+ _DrvMpTestItoShortTestChangeRmodeSetting(1);
+ _DrvMpTestItoShortTestChangeGPOSetting(nItemId);
+ _DrvMpTestItoTestAnaSwReset();
+ nSensorNum = _DrvMpTestItoTestMsg21xxaGetDataOut(szTmpRawData);
+ DBG("nSensorNum = %d\n", nSensorNum);
+
+ _DrvMpTestItoShortTestChangeRmodeSetting(0);
+ _DrvMpTestItoShortTestChangeGPOSetting(nItemId);
+ _DrvMpTestItoTestAnaSwReset();
+ nSensorNum2 = _DrvMpTestItoTestMsg21xxaGetDataOut(szTmpRawData2);
+ DBG("nSensorNum2 = %d\n", nSensorNum2);
+
+ for (i = 0; i < nSensorCount; i ++)
+ {
+ pRawData[pMapping[i]] = szTmpRawData[i] - szTmpRawData2[i];
+ pDataFlag[pMapping[i]] = 1;
+ }
+}
+
+
+static u16 _DrvMpTestItoTestMsg22xxGetDataOut(s16 *pRawData, u16 nSubFrameNum)
+{
+ u32 i;
+ u16 szRawData[MAX_CHANNEL_NUM*2] = {0};
+ u16 nRegInt = 0x0000;
+ u16 nSize = nSubFrameNum * 4; // 1SF 4AFE
+ u8 szDbBusTxData[8] = {0};
+ u8 szDbBusRxData[MAX_CHANNEL_NUM*4] = {0};
+
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValueOff(0x120A, BIT1); //one-shot mode
+ RegSet16BitValueOff(0x3D08, BIT8); //FIQ_E_FRAME_READY_MASK
+ //RegSet16BitValue(0x130C, BIT15); //MCU read done
+ RegSet16BitValueOn(0x120A, BIT0); //trigger one-shot
+
+ DBG("polling start\n");
+
+ //Polling frame-ready interrupt status
+ do
+ {
+ nRegInt = RegGet16BitValue(0x3D18); //bank:intr_ctrl, addr:h000c
+ } while(( nRegInt & FIQ_E_FRAME_READY_MASK ) == 0x0000);
+
+ DBG("polling end\n");
+
+ RegSet16BitValueOff(0x3D18, BIT8); //Clear frame-ready interrupt status
+
+ //ReadRegBurst start
+ szDbBusTxData[0] = 0x10;
+ szDbBusTxData[1] = 0x15; //bank:fout, addr:h0000
+ szDbBusTxData[2] = 0x00;
+ IicWriteData(SLAVE_I2C_ID_DBBUS, &szDbBusTxData[0], 3);
+ mdelay(20);
+ IicReadData(SLAVE_I2C_ID_DBBUS, &szDbBusRxData[0], (nSubFrameNum * 4 * 2));
+ mdelay(100);
+
+ for (i = 0; i < (nSubFrameNum * 4 * 2); i ++)
+ {
+ DBG("szDbBusRxData[%d] = %d\n", i, szDbBusRxData[i]); // add for debug
+ }
+ //ReadRegBurst stop
+
+ RegSet16BitValueOn(0x3D08, BIT8); //FIQ_E_FRAME_READY_MASK
+
+ for (i = 0; i < nSize; i ++)
+ {
+ szRawData[i] = (szDbBusRxData[2 * i + 1] << 8 ) | (szDbBusRxData[2 * i]);
+ pRawData[i] = (s16)szRawData[i];
+ }
+
+ return nSize;
+}
+
+static void _DrvMpTestItoTestMsg22xxSendDataIn(u8 nStep, u16 nRiuWriteLength)
+{
+ u32 i;
+ u32 *pType = NULL;
+
+ DBG("*** %s() nStep = %d, nRiuWriteLength = %d ***\n", __func__, nStep, nRiuWriteLength);
+
+ if (nStep == 1) //39-1
+ {
+ pType = &_gShort_RIU1[0];
+ }
+ else if (nStep == 2) //39-2
+ {
+ pType = &_gShort_RIU2[0];
+ }
+ else if (nStep == 3) //39-3
+ {
+ pType = &_gShort_RIU3[0];
+ }
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ else if (nStep == 0) //39-4 (2R)
+ {
+ pType = &_gShort_RIU4[0];
+ }
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ else if (nStep == 4)
+ {
+ pType = &_gOpenRIU1[0];
+ }
+ else if (nStep == 5)
+ {
+ pType = &_gOpenRIU2[0];
+ }
+ else if (nStep == 6)
+ {
+ pType = &_gOpenRIU3[0];
+ }
+
+ RegSet16BitValueOn(0x1192, BIT4); // force on enable sensor mux and csub sel sram clock
+ RegSet16BitValueOff(0x1192, BIT5); // mem clk sel
+ RegSet16BitValueOff(0x1100, BIT3); // tgen soft rst
+ RegSet16BitValue(0x1180, RIU_BASE_ADDR); // sensor mux sram read/write base address
+ RegSet16BitValue(0x1182, nRiuWriteLength); // sensor mux sram write length
+ RegSet16BitValueOn(0x1188, BIT0); // reg_mem0_w_start
+
+ for (i = RIU_BASE_ADDR; i < (RIU_BASE_ADDR + nRiuWriteLength); i ++)
+ {
+ RegSet16BitValue(0x118A, (u16)(pType[i]));
+ RegSet16BitValue(0x118C, (u16)(pType[i] >> 16));
+ }
+}
+
+static void _DrvMpTestItoTestMsg22xxSetC(u8 nCSubStep)
+{
+ u32 i;
+ u16 nRegVal;
+ u32 nCSubNew;
+
+ DBG("*** %s() nCSubStep = %d ***\n", __func__, nCSubStep);
+
+ nCSubNew = (nCSubStep > CSUB_REF_MAX) ? CSUB_REF_MAX : nCSubStep; // 6 bits
+ nCSubNew = (nCSubNew | (nCSubNew << 8) | (nCSubNew << 16) | (nCSubNew << 24));
+
+ nRegVal = RegGet16BitValue(0x11C8); // csub sel overwrite enable, will referance value of 11C0
+
+ if (nRegVal == 0x000F)
+ {
+ RegSet16BitValue(0x11C0, nCSubNew); // prs 0
+ RegSet16BitValue(0x11C2, (nCSubNew >> 16)); // prs 0
+ RegSet16BitValue(0x11C4, nCSubNew); // prs 1
+ RegSet16BitValue(0x11C6, (nCSubNew >> 16)); // prs 1
+ }
+ else
+ {
+ RegSet16BitValueOn(0x1192, BIT4); // force on enable sensor mux and csub sel sram clock
+ RegSet16BitValueOff(0x1192, BIT5); // mem clk sel
+ RegSet16BitValueOff(0x1100, BIT3); // tgen soft rst
+ RegSet16BitValue(0x1184, 0); // nAddr
+ RegSet16BitValue(0x1186, MAX_CHANNEL_NUM); // nLen
+ RegSet16BitValueOn(0x1188, BIT2); // reg_mem0_w_start
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ RegSet16BitValue(0x118E, nCSubNew);
+ RegSet16BitValue(0x1190, (nCSubNew >> 16));
+ }
+ }
+}
+
+static void _DrvMpTestItoTestMsg22xxRegisterReset(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ RegSet16BitValueOn(0x1102, (BIT3 | BIT4 | BIT5 | BIT6 | BIT7));
+ RegSet16BitValueOff(0x1130, (BIT0 | BIT1 | BIT2 | BIT3 | BIT8));
+
+ RegSet16BitValueOn(0x1312, BIT15);
+ RegSet16BitValueOff(0x1312, BIT13);
+
+ RegMask16BitValue(0x1250, 0x007F, ((5 << 0) & 0x007F), ADDRESS_MODE_8BIT);
+
+ RegMask16BitValue(0x1250, 0x7F00, ((1 << 8) & 0x7F00), ADDRESS_MODE_8BIT);
+
+ RegSet16BitValueOff(0x1250, 0x8080);
+
+ RegSet16BitValueOff(0x1312, (BIT12 | BIT14));
+
+ RegSet16BitValueOn(0x1300, BIT15);
+ RegSet16BitValueOff(0x1300, (BIT10 | BIT11 | BIT12 | BIT13 | BIT14));
+
+ RegSet16BitValueOn(0x1130, BIT9);
+
+ RegSet16BitValueOn(0x1318, (BIT12 | BIT13));
+
+ RegSet16BitValue(0x121A, ((8 - 1) & 0x01FF)); // sampling number group A
+ RegSet16BitValue(0x121C, ((8 - 1) & 0x01FF)); // sampling number group B
+
+ RegMask16BitValue(0x131A, 0x3FFF, 0x2000, ADDRESS_MODE_8BIT);
+
+ RegMask16BitValue(0x131C, (BIT8 | BIT9 | BIT10), (2 << 8), ADDRESS_MODE_8BIT);
+
+ RegSet16BitValueOff(0x1174, 0x0F00);
+
+ RegSet16BitValueOff(0x1240, 0xFFFF); // mutual cap mode selection for total 24 subframes, 0: normal sense, 1: mutual cap sense
+ RegSet16BitValueOff(0x1242, 0x00FF); // mutual cap mode selection for total 24 subframes, 0: normal sense, 1: mutual cap sense
+
+ RegSet16BitValueOn(0x1212, 0xFFFF); // timing group A/B selection for total 24 subframes, 0: group A, 1: group B
+ RegSet16BitValueOn(0x1214, 0x00FF); // timing group A/B selection for total 24 subframes, 0: group A, 1: group B
+
+ RegSet16BitValueOn(0x121E, 0xFFFF); //sample number group A/B selection for total 24 subframes, 0: group A, 1: group B
+ RegSet16BitValueOn(0x1220, 0x00FF); //sample number group A/B selection for total 24 subframes, 0: group A, 1: group B
+
+ RegSet16BitValueOff(0x120E, 0xFFFF); // noise sense mode selection for total 24 subframes
+ RegSet16BitValueOff(0x1210, 0x00FF); // noise sense mode selection for total 24 subframes
+
+ RegSet16BitValue(0x128C, 0x0F); // ADC afe gain correction bypass
+ RegSet16BitValueOff(0x1104, BIT12);
+}
+
+static void _DrvMpTestItoTestMsg22xxRegisterResetPatch(void)
+{
+ DBG("*** %s() *** _gIsOldFirmwareVersion = %d\n", __func__, _gIsOldFirmwareVersion);
+
+ if (_gIsOldFirmwareVersion == 0) // Only need to patch register reset for MSG22XX firmware older than V01.005.02;
+ {
+ return;
+ }
+
+ RegMask16BitValue(0x1101, 0xFFFF, 0x501E, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1102, 0x7FFF, 0x06FF, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1104, 0x0FFF, 0x0772, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1105, 0x0FFF, 0x0770, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1106, 0x00FF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1107, 0x0003, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1108, 0x0073, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1109, 0xFFFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x110A, 0x7FFF, 0x1087, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x110E, 0xFFFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x110F, 0xFFFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1117, 0xFF0F, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1118, 0xFFFF, 0x0200, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1119, 0x00FF, 0x000E, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x111E, 0xFFFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x111F, 0x00FF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1133, 0x000F, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x113A, 0x0F37, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x113B, 0x0077, 0x0077, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x113C, 0xFF00, 0xA000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x113D, 0x0077, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x113E, 0x00FF, 0x0000, ADDRESS_MODE_16BIT);
+
+ RegMask16BitValue(0x1204, 0x0006, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1205, 0x00FF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1207, 0xFFFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1208, 0x00FF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1209, 0xFFFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x120A, 0x00FF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x120B, 0x003F, 0x002E, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x120D, 0x001F, 0x0005, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x120E, 0x001F, 0x0005, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x120F, 0xFFFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1210, 0x00FF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1211, 0x0FFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1212, 0x1F87, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1213, 0x0F7F, 0x0014, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1214, 0xFF9F, 0x090A, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1215, 0x0F7F, 0x0F0C, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1216, 0x0FFF, 0x0700, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1217, 0xFF1F, 0x5C0A, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1218, 0x1F7F, 0x0A14, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1219, 0xFFFF, 0x218C, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x121E, 0x1F1F, 0x0712, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x121F, 0x3F3F, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1220, 0xFFFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1221, 0x00FF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1223, 0x3F3F, 0x0002, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1224, 0x003F, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1228, 0xFFFF, 0x8183, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x122D, 0x0001, 0x0001, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1250, 0xFFFF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1251, 0x00FF, 0x0000, ADDRESS_MODE_16BIT);
+ RegMask16BitValue(0x1270, 0x0003, 0x0003, ADDRESS_MODE_16BIT);
+
+ RegSet16BitValueByAddressMode(0x115C, 0x0000, ADDRESS_MODE_16BIT); //sensor ov enable
+ RegSet16BitValueByAddressMode(0x115D, 0x0000, ADDRESS_MODE_16BIT); //sensor ov enable
+ RegSet16BitValueByAddressMode(0x115E, 0x0000, ADDRESS_MODE_16BIT); //sensor and gr ov enable
+
+ RegSet16BitValueByAddressMode(0x124E, 0x000F, ADDRESS_MODE_16BIT); //bypass mode
+}
+
+static void _DrvMpTestItoTestMsg22xxGetChargeDumpTime(u16 nMode, u16 *pChargeTime, u16 *pDumpTime)
+{
+ u16 nChargeTime = 0, nDumpTime = 0;
+ u16 nMinChargeTime = 0xFFFF, nMinDumpTime = 0xFFFF, nMaxChargeTime = 0x0000, nMaxDumpTime = 0x0000;
+
+ DBG("*** %s() ***\n", __func__);
+
+ nChargeTime = RegGet16BitValue(0x1226);
+ nDumpTime = RegGet16BitValue(0x122A);
+
+ if (nMinChargeTime > nChargeTime)
+ {
+ nMinChargeTime = nChargeTime;
+ }
+
+ if (nMaxChargeTime < nChargeTime)
+ {
+ nMaxChargeTime = nChargeTime;
+ }
+
+ if (nMinDumpTime > nDumpTime)
+ {
+ nMinDumpTime = nDumpTime;
+ }
+
+ if (nMaxDumpTime < nDumpTime)
+ {
+ nMaxDumpTime = nDumpTime;
+ }
+
+ DBG("nChargeTime = %d, nDumpTime = %d\n", nChargeTime, nDumpTime);
+
+ if (nMode == 1)
+ {
+ *pChargeTime = nMaxChargeTime;
+ *pDumpTime = nMaxDumpTime;
+ }
+ else
+ {
+ *pChargeTime = nMinChargeTime;
+ *pDumpTime = nMinDumpTime;
+ }
+}
+
+static void _DrvMpTestItoOpenTestMsg22xxFirst(u8 nItemId, s16 *pRawData, s8 *pDataFlag)
+{
+ u32 i;
+ s16 szTmpRawData[MAX_CHANNEL_NUM*2] = {0};
+ u16 nSubFrameNum = 0;
+ u16 nChargeTime, nDumpTime;
+ u8 *pMapping = NULL;
+
+ DBG("*** %s() nItemId = %d ***\n", __func__, nItemId);
+
+ if (nItemId == 40)
+ {
+ // Stop cpu
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+
+ _DrvMpTestItoTestMsg22xxRegisterResetPatch();
+ _DrvMpTestItoTestMsg22xxRegisterReset();
+ }
+
+ switch (nItemId)
+ {
+ case 40:
+ pMapping = &_gMAP1[0];
+ nSubFrameNum = _gOpenSubFrameNum1;
+ break;
+ case 41:
+ pMapping = &_gMAP2[0];
+ nSubFrameNum = _gOpenSubFrameNum2;
+ break;
+ case 42:
+ pMapping = &_gMAP3[0];
+ nSubFrameNum = _gOpenSubFrameNum3;
+ break;
+ }
+
+ if (nSubFrameNum > 24) // MAX_CHANNEL_NUM/2
+ {
+ nSubFrameNum = 24;
+ }
+
+ _DrvMpTestItoTestMsg22xxSendDataIn(nItemId - 36, nSubFrameNum * 6);
+ RegSet16BitValue(0x1216, (nSubFrameNum - 1) << 1); // subframe numbers, 0:1subframe, 1:2subframe
+
+ if (nItemId == 40)
+ {
+ if (1)
+ {
+ RegSet16BitValue(0x1110, 0x0060); //2.4V -> 1.2V
+ }
+ else
+ {
+ RegSet16BitValue(0x1110, 0x0020); //3.0V -> 0.6V
+ }
+
+ RegSet16BitValue(0x11C8, 0x000F); //csub sel overwrite enable, will referance value of 11C0
+ RegSet16BitValue(0x1174, 0x0F06); // 1 : sel idel driver for sensor pad that connected to AFE
+ RegSet16BitValue(0x1208, 0x0006); //PRS1
+ RegSet16BitValue(0x1240, 0xFFFF); //mutual cap mode selection for total 24 subframes, 0: normal sense, 1: mutual cap sense
+ RegSet16BitValue(0x1242, 0x00FF); //mutual cap mode selection for total 24 subframes, 0: normal sense, 1: mutual cap sense
+
+ _DrvMpTestItoTestMsg22xxGetChargeDumpTime(1, &nChargeTime, &nDumpTime);
+
+ RegSet16BitValue(0x1226, nChargeTime);
+ RegSet16BitValue(0x122A, nDumpTime);
+
+ _DrvMpTestItoTestMsg22xxSetC(CSUB_REF);
+ _DrvMpTestItoTestAnaSwReset();
+ }
+
+ _DrvMpTestItoTestMsg22xxGetDataOut(szTmpRawData, nSubFrameNum);
+
+ for (i = 0; i < nSubFrameNum; i ++)
+ {
+// DBG("szTmpRawData[%d * 4] >> 3 = %d\n", i, szTmpRawData[i * 4] >> 3); // add for debug
+// DBG("pMapping[%d] = %d\n", i, pMapping[i]); // add for debug
+
+ pRawData[pMapping[i]] = (szTmpRawData[i * 4] >> 3); // Filter to ADC
+ pDataFlag[pMapping[i]] = 1;
+ }
+}
+
+static void _DrvMpTestItoShortTestMsg22xxFirst(u8 nItemId, s16 *pRawData, s8 *pDataFlag)
+{
+ u32 i, j;
+ s16 szIIR1[MAX_SUBFRAME_NUM*MAX_AFE_NUM] = {32767};
+ s16 szIIR2[MAX_SUBFRAME_NUM*MAX_AFE_NUM] = {32767};
+ s16 szIIRTmp[MAX_SUBFRAME_NUM*MAX_AFE_NUM] = {32767};
+ u16 nSensorNum = 0, nSubFrameNum = 0;
+ u8 *pMapping = NULL;
+
+ DBG("*** %s() nItemId = %d ***\n", __func__, nItemId);
+
+ if ((nItemId == 0 && _gIsEnable2R == 1) || (nItemId == 1 && _gIsEnable2R == 0))
+ {
+ // Stop cpu
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+
+ _DrvMpTestItoTestMsg22xxRegisterResetPatch();
+ _DrvMpTestItoTestMsg22xxRegisterReset();
+ }
+
+ switch(nItemId)
+ {
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ case 0: // 39-4 (2R)
+ pMapping = &_gSHORT_MAP4[0];
+ nSensorNum = _gShortSubFrameNum4;
+ break;
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ case 1: // 39-1
+ pMapping = &_gSHORT_MAP1[0];
+ nSensorNum = _gShortSubFrameNum1;
+ break;
+ case 2: // 39-2
+ pMapping = &_gSHORT_MAP2[0];
+ nSensorNum = _gShortSubFrameNum2;
+ break;
+ case 3: // 39-3
+ pMapping = &_gSHORT_MAP3[0];
+ nSensorNum = _gShortSubFrameNum3;
+ break;
+ }
+
+ if (nSensorNum > 24) // MAX_CHANNEL_NUM/2
+ {
+ nSubFrameNum = 24;
+ }
+ else
+ {
+ nSubFrameNum = nSensorNum;
+ }
+
+ _DrvMpTestItoTestMsg22xxSendDataIn(nItemId, nSubFrameNum * 6);
+ RegSet16BitValue(0x1216, (nSubFrameNum - 1) << 1); // subframe numbers, 0:1subframe, 1:2subframe
+
+ if ((nItemId == 0 && _gIsEnable2R == 1) || (nItemId == 1 && _gIsEnable2R == 0))
+ {
+ RegSet16BitValue(0x1110, 0x0030); // [6:4} 011 : 2.1V -> 1.5V
+// RegSet16BitValue(0x1110, 0x0060); // 2.4V -> 1.2V
+ RegSet16BitValue(0x11C8, 0x000F); // csub sel overwrite enable, will referance value of 11C0
+ RegSet16BitValue(0x1174, 0x0000); // [11:8] 000 : sel active driver for sensor pad that connected to AFE
+ RegSet16BitValue(0x1208, 0x0006); // PRS 1
+ RegSet16BitValueOn(0x1104, BIT14); // R mode
+ RegSet16BitValue(0x1176, 0x0000); // CFB 10p
+
+ _DrvMpTestItoTestMsg22xxSetC(CSUB_REF);
+
+ RegMask16BitValue(0x1213, 0x007F, 0x003B, ADDRESS_MODE_16BIT); // Charge 20ns (group A)
+ RegMask16BitValue(0x1218, 0x007F, 0x003B, ADDRESS_MODE_16BIT); // Charge 20ns (group B)
+ }
+
+ RegMask16BitValue(0x1215, 0x007F, 0x000B, ADDRESS_MODE_16BIT); // Dump 4ns (group A)
+ RegMask16BitValue(0x1219, 0x007F, 0x000B, ADDRESS_MODE_16BIT); // Dump 4ns (group B)
+
+ _DrvMpTestItoTestAnaSwReset();
+ _DrvMpTestItoTestMsg22xxGetDataOut(szIIRTmp, nSubFrameNum);
+
+ if (nSensorNum > MAX_SUBFRAME_NUM)
+ {
+ j = 0;
+
+ for (i = 0; i < MAX_SUBFRAME_NUM; i ++)
+ {
+ szIIR1[j] = (szIIRTmp[i * 4] >> 3);
+ j ++;
+
+ if ((nSensorNum - MAX_SUBFRAME_NUM) > i)
+ {
+ szIIR1[j] = (szIIRTmp[i * 4 + 1] >> 3);
+ j ++;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < nSensorNum; i ++)
+ {
+ szIIR1[i] = (szIIRTmp[i * 4 + 1] >> 3);
+ }
+ }
+
+ RegMask16BitValue(0x1215, 0x007F, 0x0017, ADDRESS_MODE_16BIT); // Dump 8ns (group A)
+ RegMask16BitValue(0x1219, 0x007F, 0x0017, ADDRESS_MODE_16BIT); // Dump 8ns (group B)
+
+ _DrvMpTestItoTestAnaSwReset();
+ _DrvMpTestItoTestMsg22xxGetDataOut(szIIRTmp, nSubFrameNum);
+
+ if (nSensorNum > MAX_SUBFRAME_NUM)
+ {
+ j = 0;
+
+ for (i = 0; i < MAX_SUBFRAME_NUM; i ++)
+ {
+ szIIR2[j] = (szIIRTmp[i * 4] >> 3);
+ j ++;
+
+ if ((nSensorNum - MAX_SUBFRAME_NUM) > i)
+ {
+ szIIR2[j] = (szIIRTmp[i * 4 + 1] >> 3);
+ j ++;
+ }
+ }
+ }
+ else
+ {
+ for (i = 0; i < nSensorNum; i ++)
+ {
+ szIIR2[i] = (szIIRTmp[i * 4 + 1] >> 3);
+ }
+ }
+
+ for (i = 0; i < nSensorNum; i ++)
+ {
+ if ((abs(szIIR1[i]) > 4000) || (abs(szIIR2[i]) > 4000))
+ {
+ pRawData[pMapping[i]] = 8192;
+ }
+ else
+ {
+ pRawData[pMapping[i]] = ((szIIR2[i] - szIIR1[i]) * 4);
+ }
+ pDataFlag[pMapping[i]] = 1;
+
+// DBG("szIIR1[%d] = %d, szIIR2[%d] = %d\n", i, szIIR1[i], i, szIIR2[i]); // add for debug
+// DBG("pRawData[%d] = %d\n", pMapping[i], pRawData[pMapping[i]]); // add for debug
+// DBG("pMapping[%d] = %d\n", i, pMapping[i]); // add for debug
+ }
+}
+
+static u8 _DrvMpTestMsg22xxCheckFirmwareVersion(void) // Only MSG22XX support platform firmware version
+{
+ u32 i;
+ s32 nDiff;
+ u16 nRegData1, nRegData2;
+ u8 szDbBusRxData[12] = {0};
+ u8 szCompareFwVersion[10] = {0x56, 0x30, 0x31, 0x2E, 0x30, 0x30, 0x35, 0x2E, 0x30, 0x32}; //{'V', '0', '1', '.', '0', '0', '5', '.', '0', '2'}
+ u8 nIsOldFirmwareVersion = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+ mutex_lock(&g_Mutex);
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop mcu
+ RegSetLByteValue(0x0FE6, 0x01);
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55);
+
+ // RIU password
+ RegSet16BitValue(0x161A, 0xABBA);
+
+
+ RegSet16BitValue(0x1600, 0xC1F2); // Set start address for platform firmware version on info block(Actually, start reading from 0xC1F0)
+
+ // Enable burst mode
+ RegSet16BitValue(0x160C, (RegGet16BitValue(0x160C) | 0x01));
+
+
+ for (i = 0; i < 3; i ++)
+ {
+ RegSetLByteValue(0x160E, 0x01);
+
+ nRegData1 = RegGet16BitValue(0x1604);
+ nRegData2 = RegGet16BitValue(0x1606);
+
+ szDbBusRxData[i*4+0] = (nRegData1 & 0xFF);
+ szDbBusRxData[i*4+1] = ((nRegData1 >> 8 ) & 0xFF);
+
+ DBG("szDbBusRxData[%d] = 0x%x , %c \n", i*4+0, szDbBusRxData[i*4+0], szDbBusRxData[i*4+0]); // add for debug
+ DBG("szDbBusRxData[%d] = 0x%x , %c \n", i*4+1, szDbBusRxData[i*4+1], szDbBusRxData[i*4+1]); // add for debug
+
+ szDbBusRxData[i*4+2] = (nRegData2 & 0xFF);
+ szDbBusRxData[i*4+3] = ((nRegData2 >> 8 ) & 0xFF);
+
+ DBG("szDbBusRxData[%d] = 0x%x , %c \n", i*4+2, szDbBusRxData[i*4+2], szDbBusRxData[i*4+2]); // add for debug
+ DBG("szDbBusRxData[%d] = 0x%x , %c \n", i*4+3, szDbBusRxData[i*4+3], szDbBusRxData[i*4+3]); // add for debug
+ }
+
+ // Clear burst mode
+ RegSet16BitValue(0x160C, RegGet16BitValue(0x160C) & (~0x01));
+
+ RegSet16BitValue(0x1600, 0x0000);
+
+ // Clear RIU password
+ RegSet16BitValue(0x161A, 0x0000);
+
+ for (i = 0; i < 10; i ++)
+ {
+ nDiff = szDbBusRxData[2+i] - szCompareFwVersion[i];
+
+ DBG("i = %d, nDiff = %d\n", i, nDiff);
+
+ if (nDiff < 0)
+ {
+ nIsOldFirmwareVersion = 1;
+ break;
+ }
+ else if (nDiff > 0)
+ {
+ nIsOldFirmwareVersion = 0;
+ break;
+ }
+ }
+
+ DbBusIICNotUseBus();
+ DbBusNotStopMCU();
+ DbBusExitSerialDebugMode();
+
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ mutex_unlock(&g_Mutex);
+
+ return nIsOldFirmwareVersion;
+}
+
+
+//------------------------------------------------------------------------------//
+
+static ItoTestResult_e _DrvMpTestItoOpenTestSecond(u8 nItemId)
+{
+ ItoTestResult_e nRetVal = ITO_TEST_OK;
+ u32 i;
+ s32 nTmpRawDataJg1 = 0;
+ s32 nTmpRawDataJg2 = 0;
+ s32 nTmpJgAvgThMax1 = 0;
+ s32 nTmpJgAvgThMin1 = 0;
+ s32 nTmpJgAvgThMax2 = 0;
+ s32 nTmpJgAvgThMin2 = 0;
+
+ DBG("*** %s() nItemId = %d ***\n", __func__, nItemId);
+
+ if (nItemId == 40)
+ {
+ for (i = 0; i < (_gItoTestTriangleNum/2)-2; i ++)
+ {
+ nTmpRawDataJg1 += _gRawData1[_gMAP40_1[i]];
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ nTmpRawDataJg2 += _gRawData1[_gMAP40_2[i]];
+ }
+ }
+ else if (nItemId == 41)
+ {
+ for (i = 0; i < (_gItoTestTriangleNum/2)-2; i ++)
+ {
+ nTmpRawDataJg1 += _gRawData2[_gMAP41_1[i]];
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ nTmpRawDataJg2 += _gRawData2[_gMAP41_2[i]];
+ }
+ }
+
+ nTmpJgAvgThMax1 = (nTmpRawDataJg1 / ((_gItoTestTriangleNum/2)-2)) * ( 100 + OPEN_TEST_NON_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMin1 = (nTmpRawDataJg1 / ((_gItoTestTriangleNum/2)-2)) * ( 100 - OPEN_TEST_NON_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMax2 = (nTmpRawDataJg2 / 2) * ( 100 + OPEN_TEST_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMin2 = (nTmpRawDataJg2 / 2 ) * ( 100 - OPEN_TEST_BORDER_AREA_THRESHOLD) / 100;
+
+ DBG("nItemId = %d, nTmpRawDataJg1 = %d, nTmpJgAvgThMax1 = %d, nTmpJgAvgThMin1 = %d, nTmpRawDataJg2 = %d, nTmpJgAvgThMax2 = %d, nTmpJgAvgThMin2 = %d\n", nItemId, nTmpRawDataJg1, nTmpJgAvgThMax1, nTmpJgAvgThMin1, nTmpRawDataJg2, nTmpJgAvgThMax2, nTmpJgAvgThMin2);
+
+ if (nItemId == 40)
+ {
+ for (i = 0; i < (_gItoTestTriangleNum/2)-2; i ++)
+ {
+ if (_gRawData1[_gMAP40_1[i]] > nTmpJgAvgThMax1 || _gRawData1[_gMAP40_1[i]] < nTmpJgAvgThMin1)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP40_1[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ if (_gRawData1[_gMAP40_2[i]] > nTmpJgAvgThMax2 || _gRawData1[_gMAP40_2[i]] < nTmpJgAvgThMin2)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP40_2[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+ }
+ else if (nItemId == 41)
+ {
+ for (i = 0; i < (_gItoTestTriangleNum/2)-2; i ++)
+ {
+ if (_gRawData2[_gMAP41_1[i]] > nTmpJgAvgThMax1 || _gRawData2[_gMAP41_1[i]] < nTmpJgAvgThMin1)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP41_1[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ if (_gRawData2[_gMAP41_2[i]] > nTmpJgAvgThMax2 || _gRawData2[_gMAP41_2[i]] < nTmpJgAvgThMin2)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP41_2[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+ }
+
+ return nRetVal;
+}
+
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+static ItoTestResult_e _DrvMpTestItoOpenTestSecond2r(u8 nItemId)
+{
+ ItoTestResult_e nRetVal = ITO_TEST_OK;
+ u32 i;
+ s32 nTmpRawDataJg1 = 0;
+ s32 nTmpRawDataJg2 = 0;
+ s32 nTmpRawDataJg3 = 0;
+ s32 nTmpRawDataJg4 = 0;
+ s32 nTmpJgAvgThMax1 = 0;
+ s32 nTmpJgAvgThMin1 = 0;
+ s32 nTmpJgAvgThMax2 = 0;
+ s32 nTmpJgAvgThMin2 = 0;
+ s32 nTmpJgAvgThMax3 = 0;
+ s32 nTmpJgAvgThMin3 = 0;
+ s32 nTmpJgAvgThMax4 = 0;
+ s32 nTmpJgAvgThMin4 = 0;
+
+ DBG("*** %s() nItemId = %d ***\n", __func__, nItemId);
+
+ if (nItemId == 40)
+ {
+ for (i = 0; i < (_gItoTestTriangleNum/4)-2; i ++)
+ {
+ nTmpRawDataJg1 += _gRawData1[_gMAP40_1[i]]; //first region: non-border
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ nTmpRawDataJg2 += _gRawData1[_gMAP40_2[i]]; //first region: border
+ }
+
+ for (i = 0; i < (_gItoTestTriangleNum/4)-2; i ++)
+ {
+ nTmpRawDataJg3 += _gRawData1[_gMAP40_3[i]]; //second region: non-border
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ nTmpRawDataJg4 += _gRawData1[_gMAP40_4[i]]; //second region: border
+ }
+ }
+ else if (nItemId == 41)
+ {
+ for (i = 0; i < (_gItoTestTriangleNum/4)-2; i ++)
+ {
+ nTmpRawDataJg1 += _gRawData2[_gMAP41_1[i]]; //first region: non-border
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ nTmpRawDataJg2 += _gRawData2[_gMAP41_2[i]]; //first region: border
+ }
+
+ for (i = 0; i < (_gItoTestTriangleNum/4)-2; i ++)
+ {
+ nTmpRawDataJg3 += _gRawData2[_gMAP41_3[i]]; //second region: non-border
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ nTmpRawDataJg4 += _gRawData2[_gMAP41_4[i]]; //second region: border
+ }
+ }
+
+ nTmpJgAvgThMax1 = (nTmpRawDataJg1 / ((_gItoTestTriangleNum/4)-2)) * ( 100 + OPEN_TEST_NON_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMin1 = (nTmpRawDataJg1 / ((_gItoTestTriangleNum/4)-2)) * ( 100 - OPEN_TEST_NON_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMax2 = (nTmpRawDataJg2 / 2) * ( 100 + OPEN_TEST_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMin2 = (nTmpRawDataJg2 / 2) * ( 100 - OPEN_TEST_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMax3 = (nTmpRawDataJg3 / ((_gItoTestTriangleNum/4)-2)) * ( 100 + OPEN_TEST_NON_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMin3 = (nTmpRawDataJg3 / ((_gItoTestTriangleNum/4)-2)) * ( 100 - OPEN_TEST_NON_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMax4 = (nTmpRawDataJg4 / 2) * ( 100 + OPEN_TEST_BORDER_AREA_THRESHOLD) / 100;
+ nTmpJgAvgThMin4 = (nTmpRawDataJg4 / 2) * ( 100 - OPEN_TEST_BORDER_AREA_THRESHOLD) / 100;
+
+ DBG("nItemId = %d, nTmpRawDataJg1 = %d, nTmpJgAvgThMax1 = %d, nTmpJgAvgThMin1 = %d, nTmpRawDataJg2 = %d, nTmpJgAvgThMax2 = %d, nTmpJgAvgThMin2 = %d\n", nItemId, nTmpRawDataJg1, nTmpJgAvgThMax1, nTmpJgAvgThMin1, nTmpRawDataJg2, nTmpJgAvgThMax2, nTmpJgAvgThMin2);
+ DBG("nTmpRawDataJg3 = %d, nTmpJgAvgThMax3 = %d, nTmpJgAvgThMin3 = %d, nTmpRawDataJg4 = %d, nTmpJgAvgThMax4 = %d, nTmpJgAvgThMin4 = %d\n", nTmpRawDataJg3, nTmpJgAvgThMax3, nTmpJgAvgThMin3, nTmpRawDataJg4, nTmpJgAvgThMax4, nTmpJgAvgThMin4);
+
+ if (nItemId == 40)
+ {
+ for (i = 0; i < (_gItoTestTriangleNum/4)-2; i ++)
+ {
+ if (_gRawData1[_gMAP40_1[i]] > nTmpJgAvgThMax1 || _gRawData1[_gMAP40_1[i]] < nTmpJgAvgThMin1)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP40_1[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ if (_gRawData1[_gMAP40_2[i]] > nTmpJgAvgThMax2 || _gRawData1[_gMAP40_2[i]] < nTmpJgAvgThMin2)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP40_2[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+
+ for (i = 0; i < (_gItoTestTriangleNum/4)-2; i ++)
+ {
+ if (_gRawData1[_gMAP40_3[i]] > nTmpJgAvgThMax3 || _gRawData1[_gMAP40_3[i]] < nTmpJgAvgThMin3)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP40_3[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ if (_gRawData1[_gMAP40_4[i]] > nTmpJgAvgThMax4 || _gRawData1[_gMAP40_4[i]] < nTmpJgAvgThMin4)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP40_4[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+ }
+ else if (nItemId == 41)
+ {
+ for (i = 0; i < (_gItoTestTriangleNum/4)-2; i ++)
+ {
+ if (_gRawData2[_gMAP41_1[i]] > nTmpJgAvgThMax1 || _gRawData2[_gMAP41_1[i]] < nTmpJgAvgThMin1)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP41_1[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ if (_gRawData2[_gMAP41_2[i]] > nTmpJgAvgThMax2 || _gRawData2[_gMAP41_2[i]] < nTmpJgAvgThMin2)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP41_2[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+
+ for (i = 0; i < (_gItoTestTriangleNum/4)-2; i ++)
+ {
+ if (_gRawData2[_gMAP41_3[i]] > nTmpJgAvgThMax3 || _gRawData2[_gMAP41_3[i]] < nTmpJgAvgThMin3)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP41_3[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+
+ for (i = 0; i < 2; i ++)
+ {
+ if (_gRawData2[_gMAP41_4[i]] > nTmpJgAvgThMax4 || _gRawData2[_gMAP41_4[i]] < nTmpJgAvgThMin4)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gMAP41_4[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+ }
+
+ return nRetVal;
+}
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+static ItoTestResult_e _DrvMpTestItoShortTestSecond(u8 nItemId)
+{
+ ItoTestResult_e nRetVal = ITO_TEST_OK;
+ u32 i;
+ u8 nSensorCount = 0;
+ u8 nNumOfSensorMapping1 = 0, nNumOfSensorMapping2 = 0;
+
+ DBG("*** %s() nItemId = %d ***\n", __func__, nItemId);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ if ((_gItoTestTriangleNum + _gItoTestKeyNum + _gItoTestDummyNum) % 2 != 0)
+ {
+ nNumOfSensorMapping1 = (_gItoTestTriangleNum + _gItoTestKeyNum + _gItoTestDummyNum) / 2 + 1;
+ nNumOfSensorMapping2 = nNumOfSensorMapping1;
+ }
+ else
+ {
+ nNumOfSensorMapping1 = (_gItoTestTriangleNum + _gItoTestKeyNum + _gItoTestDummyNum) / 2;
+ nNumOfSensorMapping2 = nNumOfSensorMapping1;
+ if (nNumOfSensorMapping2 % 2 != 0)
+ {
+ nNumOfSensorMapping2 ++;
+ }
+ }
+ }
+
+ if (nItemId == 1) // 39-1
+ {
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ nSensorCount = nNumOfSensorMapping1;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ nSensorCount = _gShortSubFrameNum1;
+ }
+
+ for (i = 0; i < nSensorCount; i ++)
+ {
+ if (_gRawData1[_gSHORT_MAP1[i]] > SHORT_TEST_THRESHOLD)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gSHORT_MAP1[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+ }
+ else if (nItemId == 2) // 39-2
+ {
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ nSensorCount = nNumOfSensorMapping2;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ nSensorCount = _gShortSubFrameNum2;
+ }
+
+ for (i = 0; i < nSensorCount; i ++)
+ {
+ if (_gRawData2[_gSHORT_MAP2[i]] > SHORT_TEST_THRESHOLD)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gSHORT_MAP2[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+ }
+ else if (nItemId == 3) // 39-3
+ {
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ nSensorCount = _gItoTestTriangleNum;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ nSensorCount = _gShortSubFrameNum3;
+ }
+
+ for (i = 0; i < nSensorCount; i ++)
+ {
+ if (_gRawData3[_gSHORT_MAP3[i]] > SHORT_TEST_THRESHOLD)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gSHORT_MAP3[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+ }
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ else if (nItemId == 0) // 39-4 (2R)
+ {
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ nSensorCount = _gItoTestTriangleNum/2;
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ nSensorCount = _gShortSubFrameNum4;
+ }
+
+ for (i = 0; i < nSensorCount; i ++)
+ {
+ if (_gRawData4[_gSHORT_MAP4[i]] > SHORT_TEST_THRESHOLD)
+ {
+ _gTestFailChannel[_gTestFailChannelCount] = _gSHORT_MAP4[i];
+ _gTestFailChannelCount ++;
+ nRetVal = ITO_TEST_FAIL;
+ }
+ }
+ }
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+
+ DBG("nSensorCount = %d\n", nSensorCount);
+
+ return nRetVal;
+}
+
+s32 _DrvMpTestItoOpenTest(void)
+{
+ ItoTestResult_e nRetVal1 = ITO_TEST_OK, nRetVal2 = ITO_TEST_OK, nRetVal3 = ITO_TEST_OK;
+ u32 i;
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DBG("open test start\n");
+
+ DrvPlatformLyrSetIicDataRate(g_I2cClient, 50000); //50 KHZ
+
+ DrvPlatformLyrDisableFingerTouchReport();
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ if (!_DrvMpTestItoTestChooseTpType())
+ {
+ DBG("Choose Tp Type failed\n");
+ nRetVal1 = ITO_TEST_GET_TP_TYPE_ERROR;
+ goto ITO_TEST_END;
+ }
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop cpu
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ mdelay(50);
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ _gRawData1[i] = 0;
+ _gRawData2[i] = 0;
+ _gRawData3[i] = 0;
+ _gDataFlag1[i] = 0;
+ _gDataFlag2[i] = 0;
+ _gDataFlag3[i] = 0;
+ _gTestFailChannel[i] = 0;
+ }
+
+ _gTestFailChannelCount = 0; // Reset _gTestFailChannelCount to 0 before test start
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _DrvMpTestItoOpenTestMsg21xxaFirst(40, _gRawData1, _gDataFlag1);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _DrvMpTestItoOpenTestMsg22xxFirst(40, _gRawData1, _gDataFlag1);
+ }
+
+ if (_gIsEnable2R)
+ {
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ nRetVal2 = _DrvMpTestItoOpenTestSecond2r(40);
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ }
+ else
+ {
+ nRetVal2 = _DrvMpTestItoOpenTestSecond(40);
+ }
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _DrvMpTestItoOpenTestMsg21xxaFirst(41, _gRawData2, _gDataFlag2);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _DrvMpTestItoOpenTestMsg22xxFirst(41, _gRawData2, _gDataFlag2);
+ }
+
+ if (_gIsEnable2R)
+ {
+#ifdef CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ nRetVal3 = _DrvMpTestItoOpenTestSecond2r(41);
+#endif //CONFIG_ENABLE_MP_TEST_ITEM_FOR_2R_TRIANGLE
+ }
+ else
+ {
+ nRetVal3 = _DrvMpTestItoOpenTestSecond(41);
+ }
+/*
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _DrvMpTestItoOpenTestMsg21xxaFirst(42, _gRawData3, _gDataFlag3);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _DrvMpTestItoOpenTestMsg22xxFirst(42, _gRawData3, _gDataFlag3);
+ }
+*/
+
+ ITO_TEST_END:
+
+ DrvPlatformLyrSetIicDataRate(g_I2cClient, 100000); //100 KHZ
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ DBG("open test end\n");
+
+ if ((nRetVal1 != ITO_TEST_OK) && (nRetVal2 == ITO_TEST_OK) && (nRetVal3 == ITO_TEST_OK))
+ {
+ return ITO_TEST_GET_TP_TYPE_ERROR;
+ }
+ else if ((nRetVal1 == ITO_TEST_OK) && ((nRetVal2 != ITO_TEST_OK) || (nRetVal3 != ITO_TEST_OK)))
+ {
+ return ITO_TEST_FAIL;
+ }
+ else
+ {
+ return ITO_TEST_OK;
+ }
+}
+
+static ItoTestResult_e _DrvMpTestItoShortTest(void)
+{
+ ItoTestResult_e nRetVal1 = ITO_TEST_OK, nRetVal2 = ITO_TEST_OK, nRetVal3 = ITO_TEST_OK, nRetVal4 = ITO_TEST_OK, nRetVal5 = ITO_TEST_OK;
+ u32 i = 0;
+
+ DBG("*** %s() ***\n", __func__);
+
+#ifdef CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+#ifdef CONFIG_ENABLE_DMA_IIC
+ DmaReset();
+#endif //CONFIG_ENABLE_DMA_IIC
+#endif //CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM
+
+ DBG("short test start\n");
+
+ DrvPlatformLyrSetIicDataRate(g_I2cClient, 50000); //50 KHZ
+
+ DrvPlatformLyrDisableFingerTouchReport();
+ DrvPlatformLyrTouchDeviceResetHw();
+
+ if (!_DrvMpTestItoTestChooseTpType())
+ {
+ DBG("Choose Tp Type failed\n");
+ nRetVal1 = ITO_TEST_GET_TP_TYPE_ERROR;
+ goto ITO_TEST_END;
+ }
+
+ DbBusEnterSerialDebugMode();
+ DbBusStopMCU();
+ DbBusIICUseBus();
+ DbBusIICReshape();
+ mdelay(100);
+
+ // Stop cpu
+ RegSet16BitValue(0x0FE6, 0x0001); //bank:mheg5, addr:h0073
+
+ // Stop watchdog
+ RegSet16BitValue(0x3C60, 0xAA55); //bank:reg_PIU_MISC_0, addr:h0030
+
+ mdelay(50);
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ _gRawData1[i] = 0;
+ _gRawData2[i] = 0;
+ _gRawData3[i] = 0;
+ _gRawData4[i] = 0;
+ _gDataFlag1[i] = 0;
+ _gDataFlag2[i] = 0;
+ _gDataFlag3[i] = 0;
+ _gDataFlag4[i] = 0;
+ _gTestFailChannel[i] = 0;
+ }
+
+ _gTestFailChannelCount = 0; // Reset _gTestFailChannelCount to 0 before test start
+
+ if (_gIsEnable2R)
+ {
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _DrvMpTestItoShortTestMsg21xxaFirst(0, _gRawData4, _gDataFlag4);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _DrvMpTestItoShortTestMsg22xxFirst(0, _gRawData4, _gDataFlag4);
+ }
+
+ nRetVal2 = _DrvMpTestItoShortTestSecond(0);
+ }
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _DrvMpTestItoShortTestMsg21xxaFirst(1, _gRawData1, _gDataFlag1);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _DrvMpTestItoShortTestMsg22xxFirst(1, _gRawData1, _gDataFlag1);
+ }
+
+ nRetVal3 = _DrvMpTestItoShortTestSecond(1);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _DrvMpTestItoShortTestMsg21xxaFirst(2, _gRawData2, _gDataFlag2);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _DrvMpTestItoShortTestMsg22xxFirst(2, _gRawData2, _gDataFlag2);
+ }
+
+ nRetVal4 = _DrvMpTestItoShortTestSecond(2);
+
+ if (g_ChipType == CHIP_TYPE_MSG21XXA)
+ {
+ _DrvMpTestItoShortTestMsg21xxaFirst(3, _gRawData3, _gDataFlag3);
+ }
+ else if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _DrvMpTestItoShortTestMsg22xxFirst(3, _gRawData3, _gDataFlag3);
+ }
+
+ nRetVal5 = _DrvMpTestItoShortTestSecond(3);
+
+ ITO_TEST_END:
+
+ DrvPlatformLyrSetIicDataRate(g_I2cClient, 100000); //100 KHZ
+
+ DrvPlatformLyrTouchDeviceResetHw();
+ DrvPlatformLyrEnableFingerTouchReport();
+
+ DBG("short test end\n");
+
+ if ((nRetVal1 != ITO_TEST_OK) && (nRetVal2 == ITO_TEST_OK) && (nRetVal3 == ITO_TEST_OK) && (nRetVal4 == ITO_TEST_OK) && (nRetVal5 == ITO_TEST_OK))
+ {
+ return ITO_TEST_GET_TP_TYPE_ERROR;
+ }
+ else if ((nRetVal1 == ITO_TEST_OK) && ((nRetVal2 != ITO_TEST_OK) || (nRetVal3 != ITO_TEST_OK) || (nRetVal4 != ITO_TEST_OK) || (nRetVal5 != ITO_TEST_OK)))
+ {
+ return ITO_TEST_FAIL;
+ }
+ else
+ {
+ return ITO_TEST_OK;
+ }
+}
+
+static void _DrvMpTestItoTestDoWork(struct work_struct *pWork)
+{
+ s32 nRetVal = ITO_TEST_OK;
+
+ DBG("*** %s() _gIsInMpTest = %d, _gTestRetryCount = %d ***\n", __func__, _gIsInMpTest, _gTestRetryCount);
+
+ if (_gItoTestMode == ITO_TEST_MODE_OPEN_TEST)
+ {
+ nRetVal = _DrvMpTestItoOpenTest();
+ }
+ else if (_gItoTestMode == ITO_TEST_MODE_SHORT_TEST)
+ {
+ nRetVal = _DrvMpTestItoShortTest();
+ }
+ else
+ {
+ DBG("*** Undefined Mp Test Mode = %d ***\n", _gItoTestMode);
+ return;
+ }
+
+ DBG("*** ctp mp test result = %d ***\n", nRetVal);
+
+ if (nRetVal == ITO_TEST_OK)
+ {
+ _gCtpMpTestStatus = ITO_TEST_OK;
+ _gIsInMpTest = 0;
+ DBG("mp test success\n");
+ }
+ else
+ {
+ _gTestRetryCount --;
+ if (_gTestRetryCount > 0)
+ {
+ DBG("_gTestRetryCount = %d\n", _gTestRetryCount);
+ queue_work(_gCtpMpTestWorkQueue, &_gCtpItoTestWork);
+ }
+ else
+ {
+ if (nRetVal == ITO_TEST_FAIL)
+ {
+ _gCtpMpTestStatus = ITO_TEST_FAIL;
+ }
+ else if (nRetVal == ITO_TEST_GET_TP_TYPE_ERROR)
+ {
+ _gCtpMpTestStatus = ITO_TEST_GET_TP_TYPE_ERROR;
+ }
+ else
+ {
+ _gCtpMpTestStatus = ITO_TEST_UNDEFINED_ERROR;
+ }
+
+ _gIsInMpTest = 0;
+ DBG("mp test failed\n");
+ }
+ }
+}
+
+/*=============================================================*/
+// GLOBAL FUNCTION DEFINITION
+/*=============================================================*/
+
+s32 DrvMpTestGetTestResult(void)
+{
+ DBG("*** %s() ***\n", __func__);
+ DBG("_gCtpMpTestStatus = %d\n", _gCtpMpTestStatus);
+
+ return _gCtpMpTestStatus;
+}
+
+void DrvMpTestGetTestFailChannel(ItoTestMode_e eItoTestMode, u8 *pFailChannel, u32 *pFailChannelCount)
+{
+ u32 i;
+
+ DBG("*** %s() ***\n", __func__);
+ DBG("_gTestFailChannelCount = %d\n", _gTestFailChannelCount);
+
+ for (i = 0; i < _gTestFailChannelCount; i ++)
+ {
+ pFailChannel[i] = _gTestFailChannel[i];
+ }
+
+ *pFailChannelCount = _gTestFailChannelCount;
+}
+
+void DrvMpTestGetTestDataLog(ItoTestMode_e eItoTestMode, u8 *pDataLog, u32 *pLength)
+{
+ u32 i;
+ u8 nHighByte, nLowByte;
+
+ DBG("*** %s() ***\n", __func__);
+
+ if (eItoTestMode == ITO_TEST_MODE_OPEN_TEST)
+ {
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ nHighByte = (_gRawData1[i] >> 8) & 0xFF;
+ nLowByte = (_gRawData1[i]) & 0xFF;
+
+ if (_gDataFlag1[i] == 1)
+ {
+ pDataLog[i*4] = 1; // indicate it is a on-use channel number
+ }
+ else
+ {
+ pDataLog[i*4] = 0; // indicate it is a non-use channel number
+ }
+
+ if (_gRawData1[i] >= 0)
+ {
+ pDataLog[i*4+1] = 0; // + : a positive number
+ }
+ else
+ {
+ pDataLog[i*4+1] = 1; // - : a negative number
+ }
+
+ pDataLog[i*4+2] = nHighByte;
+ pDataLog[i*4+3] = nLowByte;
+ }
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ nHighByte = (_gRawData2[i] >> 8) & 0xFF;
+ nLowByte = (_gRawData2[i]) & 0xFF;
+
+ if (_gDataFlag2[i] == 1)
+ {
+ pDataLog[i*4+MAX_CHANNEL_NUM*4] = 1; // indicate it is a on-use channel number
+ }
+ else
+ {
+ pDataLog[i*4+MAX_CHANNEL_NUM*4] = 0; // indicate it is a non-use channel number
+ }
+
+ if (_gRawData2[i] >= 0)
+ {
+ pDataLog[(i*4+1)+MAX_CHANNEL_NUM*4] = 0; // + : a positive number
+ }
+ else
+ {
+ pDataLog[(i*4+1)+MAX_CHANNEL_NUM*4] = 1; // - : a negative number
+ }
+
+ pDataLog[(i*4+2)+MAX_CHANNEL_NUM*4] = nHighByte;
+ pDataLog[(i*4+3)+MAX_CHANNEL_NUM*4] = nLowByte;
+ }
+
+ *pLength = MAX_CHANNEL_NUM*8;
+ }
+ else if (eItoTestMode == ITO_TEST_MODE_SHORT_TEST)
+ {
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ nHighByte = (_gRawData1[i] >> 8) & 0xFF;
+ nLowByte = (_gRawData1[i]) & 0xFF;
+
+ if (_gDataFlag1[i] == 1)
+ {
+ pDataLog[i*4] = 1; // indicate it is a on-use channel number
+ }
+ else
+ {
+ pDataLog[i*4] = 0; // indicate it is a non-use channel number
+ }
+
+ if (_gRawData1[i] >= 0)
+ {
+ pDataLog[i*4+1] = 0; // + : a positive number
+ }
+ else
+ {
+ pDataLog[i*4+1] = 1; // - : a negative number
+ }
+
+ pDataLog[i*4+2] = nHighByte;
+ pDataLog[i*4+3] = nLowByte;
+ }
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ nHighByte = (_gRawData2[i] >> 8) & 0xFF;
+ nLowByte = (_gRawData2[i]) & 0xFF;
+
+ if (_gDataFlag2[i] == 1)
+ {
+ pDataLog[i*4+MAX_CHANNEL_NUM*4] = 1; // indicate it is a on-use channel number
+ }
+ else
+ {
+ pDataLog[i*4+MAX_CHANNEL_NUM*4] = 0; // indicate it is a non-use channel number
+ }
+
+ if (_gRawData2[i] >= 0)
+ {
+ pDataLog[(i*4+1)+MAX_CHANNEL_NUM*4] = 0; // + : a positive number
+ }
+ else
+ {
+ pDataLog[(i*4+1)+MAX_CHANNEL_NUM*4] = 1; // - : a negative number
+ }
+
+ pDataLog[i*4+2+MAX_CHANNEL_NUM*4] = nHighByte;
+ pDataLog[i*4+3+MAX_CHANNEL_NUM*4] = nLowByte;
+ }
+
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ nHighByte = (_gRawData3[i] >> 8) & 0xFF;
+ nLowByte = (_gRawData3[i]) & 0xFF;
+
+ if (_gDataFlag3[i] == 1)
+ {
+ pDataLog[i*4+MAX_CHANNEL_NUM*8] = 1; // indicate it is a on-use channel number
+ }
+ else
+ {
+ pDataLog[i*4+MAX_CHANNEL_NUM*8] = 0; // indicate it is a non-use channel number
+ }
+
+ if (_gRawData3[i] >= 0)
+ {
+ pDataLog[(i*4+1)+MAX_CHANNEL_NUM*8] = 0; // + : a positive number
+ }
+ else
+ {
+ pDataLog[(i*4+1)+MAX_CHANNEL_NUM*8] = 1; // - : a negative number
+ }
+
+ pDataLog[(i*4+2)+MAX_CHANNEL_NUM*8] = nHighByte;
+ pDataLog[(i*4+3)+MAX_CHANNEL_NUM*8] = nLowByte;
+ }
+
+ if (_gIsEnable2R)
+ {
+ for (i = 0; i < MAX_CHANNEL_NUM; i ++)
+ {
+ nHighByte = (_gRawData4[i] >> 8) & 0xFF;
+ nLowByte = (_gRawData4[i]) & 0xFF;
+
+ if (_gDataFlag4[i] == 1)
+ {
+ pDataLog[i*4+MAX_CHANNEL_NUM*12] = 1; // indicate it is a on-use channel number
+ }
+ else
+ {
+ pDataLog[i*4+MAX_CHANNEL_NUM*12] = 0; // indicate it is a non-use channel number
+ }
+
+ if (_gRawData4[i] >= 0)
+ {
+ pDataLog[(i*4+1)+MAX_CHANNEL_NUM*12] = 0; // + : a positive number
+ }
+ else
+ {
+ pDataLog[(i*4+1)+MAX_CHANNEL_NUM*12] = 1; // - : a negative number
+ }
+
+ pDataLog[(i*4+2)+MAX_CHANNEL_NUM*12] = nHighByte;
+ pDataLog[(i*4+3)+MAX_CHANNEL_NUM*12] = nLowByte;
+ }
+ }
+
+ *pLength = MAX_CHANNEL_NUM*16;
+ }
+ else
+ {
+ DBG("*** Undefined MP Test Mode ***\n");
+ }
+}
+
+void DrvMpTestScheduleMpTestWork(ItoTestMode_e eItoTestMode)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ if (_gIsInMpTest == 0)
+ {
+ DBG("ctp mp test start\n");
+
+ if (g_ChipType == CHIP_TYPE_MSG22XX)
+ {
+ _gIsOldFirmwareVersion = _DrvMpTestMsg22xxCheckFirmwareVersion();
+ }
+
+ _gItoTestMode = eItoTestMode;
+ _gIsInMpTest = 1;
+ _gTestRetryCount = CTP_MP_TEST_RETRY_COUNT;
+ _gCtpMpTestStatus = ITO_TEST_UNDER_TESTING;
+
+ queue_work(_gCtpMpTestWorkQueue, &_gCtpItoTestWork);
+ }
+}
+
+void DrvMpTestCreateMpTestWorkQueue(void)
+{
+ DBG("*** %s() ***\n", __func__);
+
+ _gCtpMpTestWorkQueue = create_singlethread_workqueue("ctp_mp_test");
+ INIT_WORK(&_gCtpItoTestWork, _DrvMpTestItoTestDoWork);
+}
+
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC
\ No newline at end of file diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_self_mp_test.h b/drivers/input/touchscreen/msg2233/mstar_drv_self_mp_test.h new file mode 100644 index 00000000..c816f16f --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_self_mp_test.h @@ -0,0 +1,101 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_self_mp_test.h
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+#ifndef __MSTAR_DRV_SELF_MP_TEST_H__
+#define __MSTAR_DRV_SELF_MP_TEST_H__
+
+/*--------------------------------------------------------------------------*/
+/* INCLUDE FILE */
+/*--------------------------------------------------------------------------*/
+
+#include "mstar_drv_common.h"
+
+#if defined(CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC)
+#ifdef CONFIG_ENABLE_ITO_MP_TEST
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR CONSTANT DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+#define CTP_MP_TEST_RETRY_COUNT (3)
+
+
+#define OPEN_TEST_NON_BORDER_AREA_THRESHOLD (35) // range : 25~60
+#define OPEN_TEST_BORDER_AREA_THRESHOLD (40) // range : 25~60
+
+#define SHORT_TEST_THRESHOLD (3500)
+
+#define MP_TEST_MODE_OPEN_TEST (0x01)
+#define MP_TEST_MODE_SHORT_TEST (0x02)
+
+#define MAX_CHANNEL_NUM (48)
+
+// define for MSG21XXA
+#define PIN_GUARD_RING (46)
+#define GPO_SETTING_SIZE (3)
+
+// define for MSG22XX
+#define RIU_BASE_ADDR (0)
+#define RIU_WRITE_LENGTH (144)
+#define CSUB_REF (0) //(18)
+#define CSUB_REF_MAX (0x3F)
+
+#define MAX_SUBFRAME_NUM (24)
+#define MAX_AFE_NUM (4)
+
+
+#define REG_INTR_FIQ_MASK (0x04)
+#define FIQ_E_FRAME_READY_MASK (1 << 8)
+
+
+/*--------------------------------------------------------------------------*/
+/* PREPROCESSOR MACRO DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------------*/
+/* DATA TYPE DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL VARIABLE DEFINITION */
+/*--------------------------------------------------------------------------*/
+
+
+/*--------------------------------------------------------------------------*/
+/* GLOBAL FUNCTION DECLARATION */
+/*--------------------------------------------------------------------------*/
+
+extern void DrvMpTestCreateMpTestWorkQueue(void);
+extern void DrvMpTestGetTestDataLog(ItoTestMode_e eItoTestMode, u8 *pDataLog, u32 *pLength);
+extern void DrvMpTestGetTestFailChannel(ItoTestMode_e eItoTestMode, u8 *pFailChannel, u32 *pFailChannelCount);
+extern s32 DrvMpTestGetTestResult(void);
+extern void DrvMpTestScheduleMpTestWork(ItoTestMode_e eItoTestMode);
+
+#endif //CONFIG_ENABLE_ITO_MP_TEST
+#endif //CONFIG_ENABLE_TOUCH_DRIVER_FOR_SELF_IC
+
+#endif /* __MSTAR_DRV_SELF_MP_TEST_H__ */
\ No newline at end of file diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_sprd.c b/drivers/input/touchscreen/msg2233/mstar_drv_sprd.c new file mode 100644 index 00000000..58754864 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_sprd.c @@ -0,0 +1,242 @@ +////////////////////////////////////////////////////////////////////////////////
+//
+// Copyright (c) 2006-2014 MStar Semiconductor, Inc.
+// All rights reserved.
+//
+// Unless otherwise stipulated in writing, any and all information contained
+// herein regardless in any format shall remain the sole proprietary of
+// MStar Semiconductor Inc. and be kept in strict confidence
+// (??MStar Confidential Information??) by the recipient.
+// Any unauthorized act including without limitation unauthorized disclosure,
+// copying, use, reproduction, sale, distribution, modification, disassembling,
+// reverse engineering and compiling of the contents of MStar Confidential
+// Information is unlawful and strictly prohibited. MStar hereby reserves the
+// rights to any and all damages, losses, costs and expenses resulting therefrom.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+/**
+ *
+ * @file mstar_drv_sprd.c
+ *
+ * @brief This file defines the interface of touch screen
+ *
+ *
+ */
+
+/*=============================================================*/
+// INCLUDE FILE
+/*=============================================================*/
+
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/interrupt.h>
+#include <linux/types.h>
+#include <linux/input.h>
+#include <linux/kernel.h>
+#include <linux/delay.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+#include <linux/gpio.h>
+#include <linux/earlysuspend.h>
+#include <linux/i2c.h>
+#include <linux/kobject.h>
+#include <asm/irq.h>
+#include <asm/io.h>
+
+#include "mstar_drv_platform_interface.h"
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+#include <soc/sprd/regulator.h>
+#include <linux/regulator/consumer.h>
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+#include <linux/of_device.h>
+#include <linux/of_address.h>
+#include <linux/of_gpio.h>
+#include <linux/wakelock.h>
+
+/*=============================================================*/
+// CONSTANT VALUE DEFINITION
+/*=============================================================*/
+
+#define MSG_TP_IC_NAME "msg2xxx" //"msg21xxA" or "msg22xx" or "msg26xxM" /* Please define the mstar touch ic name based on the mutual-capacitive ic or self capacitive ic that you are using */
+
+/*=============================================================*/
+// VARIABLE DEFINITION
+/*=============================================================*/
+
+struct i2c_client *g_I2cClient = NULL;
+int TOUCH_SCREEN_X_MAX = 0;
+int TOUCH_SCREEN_Y_MAX = 0;
+int MS_TS_MSG_IC_GPIO_RST = 0;
+int MS_TS_MSG_IC_GPIO_INT = 0;
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+struct regulator *g_ReguVdd = NULL;
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+struct wake_lock mstar_irq_lock;
+
+#ifdef CONFIG_OF
+static struct msg2138_ts_platform_data *pixcir_ts_parse_dt(struct device *dev)
+{
+ struct msg2138_ts_platform_data *pdata = NULL;
+ struct device_node *np = dev->of_node;
+ int ret;
+
+ pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
+ if (!pdata) {
+ dev_err(dev, "Could not allocate struct msg2138_ts_platform_data");
+ return NULL;
+ }
+ pdata->reset_gpio_number = of_get_gpio(np, 0);
+ if(pdata->reset_gpio_number < 0){
+ dev_err(dev, "fail to get reset_gpio_number\n");
+ goto fail;
+ }
+ pdata->irq_gpio_number = of_get_gpio(np, 1);
+ if(pdata->irq_gpio_number < 0){
+ dev_err(dev, "fail to get irq_gpio_number\n");
+ goto fail;
+ }
+ ret = of_property_read_string(np, "vdd_name", &pdata->vdd_name);
+ if(ret){
+ dev_err(dev, "fail to get vdd_name\n");
+ goto fail;
+ }
+ ret = of_property_read_u32_array(np, "virtualkeys", &pdata->virtualkeys,12);
+ if(ret){
+ dev_err(dev, "fail to get virtualkeys\n");
+ goto fail;
+ }
+ ret = of_property_read_u32(np, "TP_MAX_X", &pdata->TP_MAX_X);
+ if(ret){
+ dev_err(dev, "fail to get TP_MAX_X\n");
+ goto fail;
+ }
+ ret = of_property_read_u32(np, "TP_MAX_Y", &pdata->TP_MAX_Y);
+ if(ret){
+ dev_err(dev, "fail to get TP_MAX_Y\n");
+ goto fail;
+ }
+
+ return pdata;
+fail:
+ kfree(pdata);
+ return NULL;
+}
+#endif
+
+/*=============================================================*/
+// FUNCTION DEFINITION
+/*=============================================================*/
+
+/* probe function is used for matching and initializing input device */
+static int /*__devinit*/ touch_driver_probe(struct i2c_client *client,
+ const struct i2c_device_id *id)
+{
+// const char *vdd_name = "vdd";
+ struct msg2138_ts_platform_data *pdata = client->dev.platform_data;
+ int err = 0;
+
+ DBG("*** %s ***\n", __FUNCTION__);
+
+ if (client == NULL)
+ {
+ DBG("i2c client is NULL\n");
+ return -1;
+ }
+
+ #ifdef CONFIG_OF
+ struct device_node *np = client->dev.of_node;
+ if (np && !pdata){
+ pdata = pixcir_ts_parse_dt(&client->dev);
+ if(pdata){
+ client->dev.platform_data = pdata;
+ } else {
+ err = -ENOMEM;
+ goto exit_alloc_platform_data_failed;
+ }
+ }
+ #endif
+
+ g_I2cClient = client;
+ MS_TS_MSG_IC_GPIO_RST = pdata->reset_gpio_number;
+ MS_TS_MSG_IC_GPIO_INT = pdata->irq_gpio_number;
+ TOUCH_SCREEN_X_MAX = pdata->TP_MAX_X;
+ TOUCH_SCREEN_Y_MAX = pdata->TP_MAX_Y;
+
+#ifdef CONFIG_ENABLE_REGULATOR_POWER_ON
+ g_ReguVdd = regulator_get(&g_I2cClient->dev, pdata->vdd_name);
+#endif //CONFIG_ENABLE_REGULATOR_POWER_ON
+
+
+ wake_lock_init(&mstar_irq_lock, WAKE_LOCK_SUSPEND, "mstar_irq_lock");
+
+ return MsDrvInterfaceTouchDeviceProbe(g_I2cClient, id);
+exit_alloc_platform_data_failed:
+ return err;
+}
+
+/* remove function is triggered when the input device is removed from input sub-system */
+static int /*__devexit*/ touch_driver_remove(struct i2c_client *client)
+{
+ DBG("*** %s ***\n", __FUNCTION__);
+
+ return MsDrvInterfaceTouchDeviceRemove(client);
+}
+
+/* The I2C device list is used for matching I2C device and I2C device driver. */
+static const struct i2c_device_id touch_device_id[] =
+{
+ {MSG_TP_IC_NAME, 0}, //SLAVE_I2C_ID_DWI2C
+ {}, /* should not omitted */
+};
+
+MODULE_DEVICE_TABLE(i2c, touch_device_id);
+
+static const struct of_device_id msg2xxx_of_match[] = {
+ { .compatible = "msg2xxx,msg2233", },
+ { } +};
+
+static struct i2c_driver touch_device_driver =
+{
+ .driver = {
+ .name = MSG_TP_IC_NAME,
+ .owner = THIS_MODULE, + .of_match_table = msg2xxx_of_match,
+ },
+ .probe = touch_driver_probe,
+ .remove = touch_driver_remove,
+/* .remove = __devexit_p(touch_driver_remove), */
+ .id_table = touch_device_id,
+};
+
+static int /*__init*/ touch_driver_init(void)
+{
+ int ret;
+
+ /* register driver */
+ ret = i2c_add_driver(&touch_device_driver);
+ if (ret < 0)
+ {
+ DBG("add touch device driver i2c driver failed.\n");
+ return -ENODEV;
+ }
+ DBG("add touch device driver i2c driver.\n");
+
+ return ret;
+}
+
+static void /*__exit*/ touch_driver_exit(void)
+{
+ DBG("remove touch device driver i2c driver.\n");
+
+ i2c_del_driver(&touch_device_driver);
+}
+
+module_init(touch_driver_init);
+module_exit(touch_driver_exit);
+MODULE_LICENSE("GPL");
diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_utility_adaption.c b/drivers/input/touchscreen/msg2233/mstar_drv_utility_adaption.c new file mode 100644 index 00000000..73a08263 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_utility_adaption.c @@ -0,0 +1,1157 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2006-2014 MStar Semiconductor, Inc. +// All rights reserved. +// +// Unless otherwise stipulated in writing, any and all information contained +// herein regardless in any format shall remain the sole proprietary of +// MStar Semiconductor Inc. and be kept in strict confidence +// (??MStar Confidential Information??) by the recipient. +// Any unauthorized act including without limitation unauthorized disclosure, +// copying, use, reproduction, sale, distribution, modification, disassembling, +// reverse engineering and compiling of the contents of MStar Confidential +// Information is unlawful and strictly prohibited. MStar hereby reserves the +// rights to any and all damages, losses, costs and expenses resulting therefrom. +// +//////////////////////////////////////////////////////////////////////////////// + +/** + * + * @file mstar_drv_utility_adaption.c + * + * @brief This file defines the interface of touch screen + * + * + */ + +//////////////////////////////////////////////////////////// +/// Included Files +//////////////////////////////////////////////////////////// +#include "mstar_drv_utility_adaption.h" + +//////////////////////////////////////////////////////////// +/// Data Types +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Constant +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Variables +//////////////////////////////////////////////////////////// +extern u32 SLAVE_I2C_ID_DBBUS; +extern u32 SLAVE_I2C_ID_DWI2C; + +extern struct i2c_client *g_I2cClient; +extern struct input_dev *g_InputDevice; + +extern u8 g_ChipType; +extern u8 g_IsUpdateFirmware; + + +//////////////////////////////////////////////////////////// +/// Macro +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Function Prototypes +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Function Implementation +//////////////////////////////////////////////////////////// + + +#ifdef CONFIG_ENABLE_DMA_IIC +#include <linux/dma-mapping.h> +#include <linux/mm_types.h> +#include <linux/mm.h> +#include <asm/uaccess.h> +#include <asm/page.h> +#include <linux/vmalloc.h> + +static unsigned char *I2CDMABuf_va = NULL; +static dma_addr_t I2CDMABuf_pa = NULL; + +void DmaAlloc(void) +{ + if (NULL == I2CDMABuf_va) + { + g_InputDevice->dev.coherent_dma_mask = DMA_BIT_MASK(32); + I2CDMABuf_va = (u8 *)dma_alloc_coherent(&g_InputDevice->dev, MAX_I2C_TRANSACTION_LENGTH_LIMIT, &I2CDMABuf_pa, GFP_KERNEL); + } + + if (NULL == I2CDMABuf_va) + { + DBG("DmaAlloc FAILED!\n"); + } + else + { + DBG("DmaAlloc SUCCESS!\n"); + } +} + +void DmaReset(void) +{ + DBG("Dma memory reset!\n"); + + memset(I2CDMABuf_va, 0, MAX_I2C_TRANSACTION_LENGTH_LIMIT); +} + +void DmaFree(void) +{ + if (NULL != I2CDMABuf_va) + { + dma_free_coherent(&g_InputDevice->dev, MAX_I2C_TRANSACTION_LENGTH_LIMIT, I2CDMABuf_va, I2CDMABuf_pa); + I2CDMABuf_va = NULL; + I2CDMABuf_pa = 0; + + DBG("DmaFree SUCCESS!\n"); + } +} +#endif //CONFIG_ENABLE_DMA_IIC + +//------------------------------------------------------------------------------// + +u16 RegGet16BitValue(u16 nAddr) +{ + u8 tx_data[3] = {0x10, (nAddr >> 8) & 0xFF, nAddr & 0xFF}; + u8 rx_data[2] = {0}; + + IicWriteData(SLAVE_I2C_ID_DBBUS, &tx_data[0], 3); + IicReadData(SLAVE_I2C_ID_DBBUS, &rx_data[0], 2); + + return (rx_data[1] << 8 | rx_data[0]); +} + +u8 RegGetLByteValue(u16 nAddr) +{ + u8 tx_data[3] = {0x10, (nAddr >> 8) & 0xFF, nAddr & 0xFF}; + u8 rx_data = {0}; + + IicWriteData(SLAVE_I2C_ID_DBBUS, &tx_data[0], 3); + IicReadData(SLAVE_I2C_ID_DBBUS, &rx_data, 1); + + return (rx_data); +} + +u8 RegGetHByteValue(u16 nAddr) +{ + u8 tx_data[3] = {0x10, (nAddr >> 8) & 0xFF, (nAddr & 0xFF) + 1}; + u8 rx_data = {0}; + + IicWriteData(SLAVE_I2C_ID_DBBUS, &tx_data[0], 3); + IicReadData(SLAVE_I2C_ID_DBBUS, &rx_data, 1); + + return (rx_data); +} + +void RegGetXBitValue(u16 nAddr, u8 * pRxData, u16 nLength, u16 nMaxI2cLengthLimit) +{ + u16 nReadAddr = nAddr; + u16 nReadSize = 0; + u16 nLeft = nLength; + u16 nOffset = 0; + u8 tx_data[3] = {0}; + + tx_data[0] = 0x10; + + while(nLeft > 0) + { + if(nLeft >= nMaxI2cLengthLimit) + { + nReadSize = nMaxI2cLengthLimit; + //DBG("*** RegGetXBitValue# Length >= I2cMax nReadAddr=%x, nReadSize=%d ***\n", nReadAddr, nReadSize); + + tx_data[1] = (nReadAddr >> 8) & 0xFF; + tx_data[2] = nReadAddr & 0xFF; + + IicWriteData(SLAVE_I2C_ID_DBBUS, &tx_data[0], 3); + IicReadData(SLAVE_I2C_ID_DBBUS, &pRxData[nOffset], nReadSize); + + nReadAddr = nReadAddr + nReadSize; //set next read address + nLeft = nLeft - nReadSize; + nOffset = nOffset + nReadSize; + //DBG("*** RegGetXBitValue# Length >= I2cMax nLeft=%d, nOffset=%d ***\n", nLeft, nOffset); + } + else + { + nReadSize = nLeft; + //DBG("*** RegGetXBitValue# Length < I2cMax nReadAddr=%x, nReadSize=%d ***\n", nReadAddr, nReadSize); + + tx_data[1] = (nReadAddr >> 8) & 0xFF; + tx_data[2] = nReadAddr & 0xFF; + + IicWriteData(SLAVE_I2C_ID_DBBUS, &tx_data[0], 3); + IicReadData(SLAVE_I2C_ID_DBBUS, &pRxData[nOffset], nReadSize); + + nLeft = 0; + nOffset = nOffset + nReadSize; + //DBG("*** RegGetXBitValue# Length < I2cMax nLeft=%d, nOffset=%d ***\n", nLeft, nOffset); + } + } +} + +void RegSet16BitValue(u16 nAddr, u16 nData) +{ + u8 tx_data[5] = {0x10, (nAddr >> 8) & 0xFF, nAddr & 0xFF, nData & 0xFF, nData >> 8}; + IicWriteData(SLAVE_I2C_ID_DBBUS, &tx_data[0], 5); +} + +void RegSetLByteValue(u16 nAddr, u8 nData) +{ + u8 tx_data[4] = {0x10, (nAddr >> 8) & 0xFF, nAddr & 0xFF, nData}; + IicWriteData(SLAVE_I2C_ID_DBBUS, &tx_data[0], 4); +} + +void RegSetHByteValue(u16 nAddr, u8 nData) +{ + u8 tx_data[4] = {0x10, (nAddr >> 8) & 0xFF, (nAddr & 0xFF) + 1, nData}; + IicWriteData(SLAVE_I2C_ID_DBBUS, &tx_data[0], 4); +} + +void RegSet16BitValueOn(u16 nAddr, u16 nData) //Set bit on nData from 0 to 1 +{ + u16 rData = RegGet16BitValue(nAddr); + rData |= nData; + RegSet16BitValue(nAddr, rData); +} + +void RegSet16BitValueOff(u16 nAddr, u16 nData) //Set bit on nData from 1 to 0 +{ + u16 rData = RegGet16BitValue(nAddr); + rData &= (~nData); + RegSet16BitValue(nAddr, rData); +} + +u16 RegGet16BitValueByAddressMode(u16 nAddr, AddressMode_e eAddressMode) +{ + u16 nData = 0; + + if (eAddressMode == ADDRESS_MODE_16BIT) + { + nAddr = nAddr - (nAddr & 0xFF) + ((nAddr & 0xFF) << 1); + } + + nData = RegGet16BitValue(nAddr); + + return nData; +} + +void RegSet16BitValueByAddressMode(u16 nAddr, u16 nData, AddressMode_e eAddressMode) +{ + if (eAddressMode == ADDRESS_MODE_16BIT) + { + nAddr = nAddr - (nAddr & 0xFF) + ((nAddr & 0xFF) << 1); + } + + RegSet16BitValue(nAddr, nData); +} + +void RegMask16BitValue(u16 nAddr, u16 nMask, u16 nData, AddressMode_e eAddressMode) +{ + u16 nTmpData = 0; + + if (nData > nMask) + { + return; + } + + nTmpData = RegGet16BitValueByAddressMode(nAddr, eAddressMode); + nTmpData = (nTmpData & (~nMask)); + nTmpData = (nTmpData | nData); + RegSet16BitValueByAddressMode(nAddr, nTmpData, eAddressMode); +} + +s32 DbBusEnterSerialDebugMode(void) +{ + s32 rc = 0; + u8 data[5]; + + // Enter the Serial Debug Mode + data[0] = 0x53; + data[1] = 0x45; + data[2] = 0x52; + data[3] = 0x44; + data[4] = 0x42; + + rc = IicWriteData(SLAVE_I2C_ID_DBBUS, data, 5); + + return rc; +} + +void DbBusExitSerialDebugMode(void) +{ + u8 data[1]; + // Exit the Serial Debug Mode + data[0] = 0x45; + IicWriteData(SLAVE_I2C_ID_DBBUS, data, 1); + // Delay some interval to guard the next transaction +// udelay(200); // delay about 0.2ms +} + +void DbBusIICUseBus(void) +{ + u8 data[1]; + + // IIC Use Bus + data[0] = 0x35; + IicWriteData(SLAVE_I2C_ID_DBBUS, data, 1); +} + +void DbBusIICNotUseBus(void) +{ + u8 data[1]; + + // IIC Not Use Bus + data[0] = 0x34; + + IicWriteData(SLAVE_I2C_ID_DBBUS, data, 1); +} + +void DbBusIICReshape(void) +{ + u8 data[1]; + + // IIC Re-shape + data[0] = 0x71; + + IicWriteData(SLAVE_I2C_ID_DBBUS, data, 1); +} + +void DbBusStopMCU(void) +{ + u8 data[1]; + + // Stop the MCU + data[0] = 0x37; + + IicWriteData(SLAVE_I2C_ID_DBBUS, data, 1); +} + +void DbBusNotStopMCU(void) +{ + u8 data[1]; + + // Not Stop the MCU + data[0] = 0x36; + + IicWriteData(SLAVE_I2C_ID_DBBUS, data, 1); +} + +void DbBusResetSlave(void) +{ + u8 data[1]; + + // IIC Reset Slave + data[0] = 0x00; + + IicWriteData(SLAVE_I2C_ID_DBBUS, data, 1); +} + +void DbBusWaitMCU(void) +{ + u8 data[1]; + + // Stop the MCU + data[0] = 0x37; + IicWriteData(SLAVE_I2C_ID_DBBUS, data, 1); + + data[0] = 0x61; + IicWriteData(SLAVE_I2C_ID_DBBUS, data, 1); +} + +s32 IicWriteData(u8 nSlaveId, u8* pBuf, u16 nSize) +{ + s32 rc = 0; + +#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) + struct i2c_msg msgs[] = + { + { + .addr = nSlaveId, + .flags = 0, // if read flag is undefined, then it means write flag. + .len = nSize, + .buf = pBuf, + }, + }; + + /* If everything went ok (i.e. 1 msg transmitted), return #bytes + transmitted, else error code. */ + if (g_I2cClient != NULL) + { + if (g_ChipType == CHIP_TYPE_MSG28XX && nSlaveId == SLAVE_I2C_ID_DWI2C && g_IsUpdateFirmware != 0) + { + PRINTF_ERR("Not allow to execute SmBus command while update firmware.\n"); + } + else + { + rc = i2c_transfer(g_I2cClient->adapter, msgs, 1); + + if (rc == 1) + { + rc = nSize; + } + else // rc < 0 + { + PRINTF_ERR("IicWriteData() error %d\n", rc); + } + } + } + else + { + PRINTF_ERR("i2c client is NULL\n"); + } +#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM) + if (g_I2cClient != NULL) + { + if (g_ChipType == CHIP_TYPE_MSG28XX && nSlaveId == SLAVE_I2C_ID_DWI2C && g_IsUpdateFirmware != 0) + { + PRINTF_ERR("Not allow to execute SmBus command while update firmware.\n"); + } + else + { + u8 nAddrBefore = g_I2cClient->addr; + g_I2cClient->addr = nSlaveId; + +#ifdef CONFIG_ENABLE_DMA_IIC + if (nSize > 8 && NULL != I2CDMABuf_va) + { + s32 i = 0; + + for (i = 0; i < nSize; i ++) + { + I2CDMABuf_va[i] = pBuf[i]; + } + g_I2cClient->ext_flag = g_I2cClient->ext_flag | I2C_DMA_FLAG; + rc = i2c_master_send(g_I2cClient, (unsigned char *)I2CDMABuf_pa, nSize); + } + else + { + g_I2cClient->ext_flag = g_I2cClient->ext_flag & (~I2C_DMA_FLAG); + rc = i2c_master_send(g_I2cClient, pBuf, nSize); + } +#else + rc = i2c_master_send(g_I2cClient, pBuf, nSize); +#endif //CONFIG_ENABLE_DMA_IIC + g_I2cClient->addr = nAddrBefore; + + if (rc < 0) + { + PRINTF_ERR("IicWriteData() error %d, nSlaveId=%d, nSize=%d\n", rc, nSlaveId, nSize); + } + } + } + else + { + PRINTF_ERR("i2c client is NULL\n"); + } +#endif + + return rc; +} + +s32 IicReadData(u8 nSlaveId, u8* pBuf, u16 nSize) +{ + s32 rc = 0; + +#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) + struct i2c_msg msgs[] = + { + { + .addr = nSlaveId, + .flags = I2C_M_RD, // read flag + .len = nSize, + .buf = pBuf, + }, + }; + + /* If everything went ok (i.e. 1 msg transmitted), return #bytes + transmitted, else error code. */ + if (g_I2cClient != NULL) + { + if (g_ChipType == CHIP_TYPE_MSG28XX && nSlaveId == SLAVE_I2C_ID_DWI2C && g_IsUpdateFirmware != 0) + { + PRINTF_ERR("Not Allow to execute SmBus command while update firmware by sw id.\n"); + } + else + { + rc = i2c_transfer(g_I2cClient->adapter, msgs, 1); + + if (rc == 1) + { + rc = nSize; + } + else // rc < 0 + { + PRINTF_ERR("IicReadData() error %d\n", rc); + } + } + } + else + { + PRINTF_ERR("i2c client is NULL\n"); + } +#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM) + if (g_I2cClient != NULL) + { + if (g_ChipType == CHIP_TYPE_MSG28XX && nSlaveId == SLAVE_I2C_ID_DWI2C && g_IsUpdateFirmware != 0) + { + PRINTF_ERR("Not Allow to execute SmBus command while update firmware by sw id.\n"); + } + else + { + u8 nAddrBefore = g_I2cClient->addr; + g_I2cClient->addr = nSlaveId; + +#ifdef CONFIG_ENABLE_DMA_IIC + if (nSize > 8 && NULL != I2CDMABuf_va) + { + s32 i = 0; + + g_I2cClient->ext_flag = g_I2cClient->ext_flag | I2C_DMA_FLAG; + rc = i2c_master_recv(g_I2cClient, (unsigned char *)I2CDMABuf_pa, nSize); + + for (i = 0; i < nSize; i ++) + { + pBuf[i] = I2CDMABuf_va[i]; + } + } + else + { + g_I2cClient->ext_flag = g_I2cClient->ext_flag & (~I2C_DMA_FLAG); + rc = i2c_master_recv(g_I2cClient, pBuf, nSize); + } +#else + rc = i2c_master_recv(g_I2cClient, pBuf, nSize); +#endif //CONFIG_ENABLE_DMA_IIC + g_I2cClient->addr = nAddrBefore; + + if (rc < 0) + { + PRINTF_ERR("IicReadData() error %d, nSlaveId=%d, nSize=%d\n", rc, nSlaveId, nSize); + } + } + } + else + { + PRINTF_ERR("i2c client is NULL\n"); + } +#endif + + return rc; +} + +s32 IicSegmentReadDataByDbBus(u8 nRegBank, u8 nRegAddr, u8* pBuf, u16 nSize, u16 nMaxI2cLengthLimit) +{ + s32 rc = 0; + u16 nLeft = nSize; + u16 nOffset = 0; + u16 nSegmentLength = 0; + u16 nReadSize = 0; + u16 nOver = 0; + u8 szWriteBuf[3] = {0}; + u8 nNextRegBank = nRegBank; + u8 nNextRegAddr = nRegAddr; + +#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) + struct i2c_msg msgs[2] = + { + { + .addr = SLAVE_I2C_ID_DBBUS, + .flags = 0, // write flag + .len = 3, + .buf = szWriteBuf, + }, + { + .addr = SLAVE_I2C_ID_DBBUS, + .flags = I2C_M_RD, // read flag + }, + }; + + // If everything went ok (i.e. 1 msg transmitted), return #bytes transmitted, else error code. + if (g_I2cClient != NULL) + { + if (nMaxI2cLengthLimit >= 256) + { + nSegmentLength = 256; + } + else + { + nSegmentLength = 128; + } + + PRINTF_ERR("nSegmentLength = %d\n", nSegmentLength); // add for debug + + while (nLeft > 0) + { + szWriteBuf[0] = 0x10; + nRegBank = nNextRegBank; + szWriteBuf[1] = nRegBank; + nRegAddr = nNextRegAddr; + szWriteBuf[2] = nRegAddr; + + PRINTF_ERR("nRegBank = 0x%x\n", nRegBank); // add for debug + PRINTF_ERR("nRegAddr = 0x%x\n", nRegAddr); // add for debug + + msgs[1].buf = &pBuf[nOffset]; + + if (nLeft > nSegmentLength) + { + if ((nRegAddr + nSegmentLength) < MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = nRegAddr + nSegmentLength; + + PRINTF_ERR("nNextRegAddr = 0x%x\n", nNextRegAddr); // add for debug + + msgs[1].len = nSegmentLength; + nLeft -= nSegmentLength; + nOffset += msgs[1].len; + } + else if ((nRegAddr + nSegmentLength) == MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_ERR("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + msgs[1].len = nSegmentLength; + nLeft -= nSegmentLength; + nOffset += msgs[1].len; + } + else // ((nRegAddr + nSegmentLength) > MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_INFO("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nOver = (nRegAddr + nSegmentLength) - MAX_TOUCH_IC_REGISTER_BANK_SIZE; + + PRINTF_ERR("nOver = 0x%x\n", nOver); // add for debug + + msgs[1].len = nSegmentLength - nOver; + nLeft -= msgs[1].len; + nOffset += msgs[1].len; + } + } + else + { + if ((nRegAddr + nLeft) < MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = nRegAddr + nLeft; + + PRINTF_ERR("nNextRegAddr = 0x%x\n", nNextRegAddr); // add for debug + + msgs[1].len = nLeft; + nLeft = 0; +// nOffset += msgs[1].len; + } + else if ((nRegAddr + nLeft) == MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_ERR("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + msgs[1].len = nLeft; + nLeft = 0; +// nOffset += msgs[1].len; + } + else // ((nRegAddr + nLeft) > MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_ERR("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nOver = (nRegAddr + nLeft) - MAX_TOUCH_IC_REGISTER_BANK_SIZE; + + PRINTF_ERR("nOver = 0x%x\n", nOver); // add for debug + + msgs[1].len = nLeft - nOver; + nLeft -= msgs[1].len; + nOffset += msgs[1].len; + } + } + + rc = i2c_transfer(g_I2cClient->adapter, &msgs[0], 2); + if (rc == 2) + { + nReadSize = nReadSize + msgs[1].len; + } + else // rc < 0 + { + PRINTF_ERR("IicSegmentReadDataByDbBus() -> i2c_transfer() error %d\n", rc); + + return rc; + } + } + } + else + { + PRINTF_ERR("i2c client is NULL\n"); + } +#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM) + if (g_I2cClient != NULL) + { + u8 *pReadBuf = NULL; + u16 nLength = 0; + u8 nAddrBefore = g_I2cClient->addr; + + g_I2cClient->addr = SLAVE_I2C_ID_DBBUS; + + if (nMaxI2cLengthLimit >= 256) + { + nSegmentLength = 256; + } + else + { + nSegmentLength = 128; + } + + PRINTF_ERR("nSegmentLength = %d\n", nSegmentLength); // add for debug + +#ifdef CONFIG_ENABLE_DMA_IIC + if (NULL != I2CDMABuf_va) + { + s32 i = 0; + + while (nLeft > 0) + { + szWriteBuf[0] = 0x10; + nRegBank = nNextRegBank; + szWriteBuf[1] = nRegBank; + nRegAddr = nNextRegAddr; + szWriteBuf[2] = nRegAddr; + + PRINTF_ERR("nRegBank = 0x%x\n", nRegBank); // add for debug + PRINTF_ERR("nRegAddr = 0x%x\n", nRegAddr); // add for debug + + if (nLeft > nSegmentLength) + { + if ((nRegAddr + nSegmentLength) < MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = nRegAddr + nSegmentLength; + + PRINTF_ERR("nNextRegAddr = 0x%x\n", nNextRegAddr); // add for debug + + nLength = nSegmentLength; + nLeft -= nSegmentLength; + } + else if ((nRegAddr + nSegmentLength) == MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_ERR("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nLength = nSegmentLength; + nLeft -= nSegmentLength; + } + else // ((nRegAddr + nSegmentLength) > MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_INFO("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nOver = (nRegAddr + nSegmentLength) - MAX_TOUCH_IC_REGISTER_BANK_SIZE; + + PRINTF_ERR("nOver = 0x%x\n", nOver); // add for debug + + nLength = nSegmentLength - nOver; + nLeft -= nLength; + } + } + else + { + if ((nRegAddr + nLeft) < MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = nRegAddr + nLeft; + + PRINTF_ERR("nNextRegAddr = 0x%x\n", nNextRegAddr); // add for debug + + nLength = nLeft; + nLeft = 0; + } + else if ((nRegAddr + nLeft) == MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_ERR("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nLength = nLeft; + nLeft = 0; + } + else // ((nRegAddr + nLeft) > MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_ERR("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nOver = (nRegAddr + nLeft) - MAX_TOUCH_IC_REGISTER_BANK_SIZE; + + PRINTF_ERR("nOver = 0x%x\n", nOver); // add for debug + + nLength = nLeft - nOver; + nLeft -= nLength; + } + } + + g_I2cClient->ext_flag = g_I2cClient->ext_flag & (~I2C_DMA_FLAG); + rc = i2c_master_send(g_I2cClient, &szWriteBuf[0], 3); + if (rc < 0) + { + PRINTF_ERR("IicSegmentReadDataByDbBus() -> i2c_master_send() error %d\n", rc); + + return rc; + } + + g_I2cClient->ext_flag = g_I2cClient->ext_flag | I2C_DMA_FLAG; + rc = i2c_master_recv(g_I2cClient, (unsigned char *)I2CDMABuf_pa, nLength); + if (rc < 0) + { + PRINTF_ERR("IicSegmentReadDataByDbBus() -> i2c_master_recv() error %d\n", rc); + + return rc; + } + else + { + for (i = 0; i < nLength; i ++) + { + pBuf[i+nOffset] = I2CDMABuf_va[i]; + } + nOffset += nLength; + + nReadSize = nReadSize + nLength; + } + } + } + else + { + PRINTF_ERR("IicSegmentReadDataByDbBus() -> I2CDMABuf_va is NULL\n"); + } +#else + while (nLeft > 0) + { + szWriteBuf[0] = 0x10; + nRegBank = nNextRegBank; + szWriteBuf[1] = nRegBank; + nRegAddr = nNextRegAddr; + szWriteBuf[2] = nRegAddr; + + PRINTF_ERR("nRegBank = 0x%x\n", nRegBank); // add for debug + PRINTF_ERR("nRegAddr = 0x%x\n", nRegAddr); // add for debug + + pReadBuf = &pBuf[nOffset]; + + if (nLeft > nSegmentLength) + { + if ((nRegAddr + nSegmentLength) < MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = nRegAddr + nSegmentLength; + + PRINTF_ERR("nNextRegAddr = 0x%x\n", nNextRegAddr); // add for debug + + nLength = nSegmentLength; + nLeft -= nSegmentLength; + nOffset += nLength; + } + else if ((nRegAddr + nSegmentLength) == MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_ERR("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nLength = nSegmentLength; + nLeft -= nSegmentLength; + nOffset += nLength; + } + else // ((nRegAddr + nSegmentLength) > MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_INFO("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nOver = (nRegAddr + nSegmentLength) - MAX_TOUCH_IC_REGISTER_BANK_SIZE; + + PRINTF_ERR("nOver = 0x%x\n", nOver); // add for debug + + nLength = nSegmentLength - nOver; + nLeft -= nLength; + nOffset += nLength; + } + } + else + { + if ((nRegAddr + nLeft) < MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = nRegAddr + nLeft; + + PRINTF_ERR("nNextRegAddr = 0x%x\n", nNextRegAddr); // add for debug + + nLength = nLeft; + nLeft = 0; +// nOffset += nLength; + } + else if ((nRegAddr + nLeft) == MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_ERR("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nLength = nLeft; + nLeft = 0; +// nOffset += nLength; + } + else // ((nRegAddr + nLeft) > MAX_TOUCH_IC_REGISTER_BANK_SIZE) + { + nNextRegAddr = 0x00; + nNextRegBank = nRegBank + 1; // shift to read data from next register bank + + PRINTF_ERR("nNextRegBank = 0x%x\n", nNextRegBank); // add for debug + + nOver = (nRegAddr + nLeft) - MAX_TOUCH_IC_REGISTER_BANK_SIZE; + + PRINTF_ERR("nOver = 0x%x\n", nOver); // add for debug + + nLength = nLeft - nOver; + nLeft -= nLength; + nOffset += nLength; + } + } + + rc = i2c_master_send(g_I2cClient, &szWriteBuf[0], 3); + if (rc < 0) + { + PRINTF_ERR("IicSegmentReadDataByDbBus() -> i2c_master_send() error %d\n", rc); + + return rc; + } + + rc = i2c_master_recv(g_I2cClient, pReadBuf, nLength); + if (rc < 0) + { + PRINTF_ERR("IicSegmentReadDataByDbBus() -> i2c_master_recv() error %d\n", rc); + + return rc; + } + else + { + nReadSize = nReadSize + nLength; + } + } +#endif //CONFIG_ENABLE_DMA_IIC + g_I2cClient->addr = nAddrBefore; + } + else + { + PRINTF_ERR("i2c client is NULL\n"); + } +#endif + + return nReadSize; +} + +s32 IicSegmentReadDataBySmBus(u16 nAddr, u8* pBuf, u16 nSize, u16 nMaxI2cLengthLimit) +{ + s32 rc = 0; + u16 nLeft = nSize; + u16 nOffset = 0; + u16 nReadSize = 0; + u8 szWriteBuf[3] = {0}; + +#if defined(CONFIG_TOUCH_DRIVER_RUN_ON_SPRD_PLATFORM) || defined(CONFIG_TOUCH_DRIVER_RUN_ON_QCOM_PLATFORM) + struct i2c_msg msgs[2] = + { + { + .addr = SLAVE_I2C_ID_DWI2C, + .flags = 0, // write flag + .len = 3, + .buf = szWriteBuf, + }, + { + .addr = SLAVE_I2C_ID_DWI2C, + .flags = I2C_M_RD, // read flag + }, + }; + + // If everything went ok (i.e. 1 msg transmitted), return #bytes transmitted, else error code. + if (g_I2cClient != NULL) + { + while (nLeft > 0) + { + szWriteBuf[0] = 0x53; + szWriteBuf[1] = ((nAddr + nOffset) >> 8) & 0xFF; + szWriteBuf[2] = (nAddr + nOffset) & 0xFF; + + msgs[1].buf = &pBuf[nOffset]; + + if (nLeft > nMaxI2cLengthLimit) + { + msgs[1].len = nMaxI2cLengthLimit; + nLeft -= nMaxI2cLengthLimit; + nOffset += msgs[1].len; + } + else + { + msgs[1].len = nLeft; + nLeft = 0; +// nOffset += msgs[1].len; + } + + rc = i2c_transfer(g_I2cClient->adapter, &msgs[0], 2); + if (rc == 2) + { + nReadSize = nReadSize + msgs[1].len; + } + else // rc < 0 + { + PRINTF_ERR("IicSegmentReadDataBySmBus() -> i2c_transfer() error %d\n", rc); + + return rc; + } + } + } + else + { + PRINTF_ERR("i2c client is NULL\n"); + } +#elif defined(CONFIG_TOUCH_DRIVER_RUN_ON_MTK_PLATFORM) + if (g_I2cClient != NULL) + { + u8 *pReadBuf = NULL; + u16 nLength = 0; + u8 nAddrBefore = g_I2cClient->addr; + + g_I2cClient->addr = SLAVE_I2C_ID_DWI2C; + +#ifdef CONFIG_ENABLE_DMA_IIC + while (nLeft > 0) + { + s32 i = 0; + + szWriteBuf[0] = 0x53; + szWriteBuf[1] = ((nAddr + nOffset) >> 8) & 0xFF; + szWriteBuf[2] = (nAddr + nOffset) & 0xFF; + + if (nLeft > nMaxI2cLengthLimit) + { + nLength = nMaxI2cLengthLimit; + nLeft -= nMaxI2cLengthLimit; + } + else + { + nLength = nLeft; + nLeft = 0; + } + + g_I2cClient->ext_flag = g_I2cClient->ext_flag & (~I2C_DMA_FLAG); + rc = i2c_master_send(g_I2cClient, &szWriteBuf[0], 3); + if (rc < 0) + { + PRINTF_ERR("IicSegmentReadDataBySmBus() -> i2c_master_send() error %d\n", rc); + + return rc; + } + + g_I2cClient->ext_flag = g_I2cClient->ext_flag | I2C_DMA_FLAG; + rc = i2c_master_recv(g_I2cClient, (unsigned char *)I2CDMABuf_pa, nLength); + if (rc < 0) + { + PRINTF_ERR("IicSegmentReadDataBySmBus() -> i2c_master_recv() error %d\n", rc); + + return rc; + } + else + { + for (i = 0; i < nLength; i ++) + { + pBuf[i+nOffset] = I2CDMABuf_va[i]; + } + nOffset += nLength; + + nReadSize = nReadSize + nLength; + } + } +#else + while (nLeft > 0) + { + szWriteBuf[0] = 0x53; + szWriteBuf[1] = ((nAddr + nOffset) >> 8) & 0xFF; + szWriteBuf[2] = (nAddr + nOffset) & 0xFF; + + pReadBuf = &pBuf[nOffset]; + + if (nLeft > nMaxI2cLengthLimit) + { + nLength = nMaxI2cLengthLimit; + nLeft -= nMaxI2cLengthLimit; + nOffset += nLength; + } + else + { + nLength = nLeft; + nLeft = 0; +// nOffset += nLength; + } + + rc = i2c_master_send(g_I2cClient, &szWriteBuf[0], 3); + if (rc < 0) + { + PRINTF_ERR("IicSegmentReadDataBySmBus() -> i2c_master_send() error %d\n", rc); + + return rc; + } + + rc = i2c_master_recv(g_I2cClient, pReadBuf, nLength); + if (rc < 0) + { + PRINTF_ERR("IicSegmentReadDataBySmBus() -> i2c_master_recv() error %d\n", rc); + + return rc; + } + else + { + nReadSize = nReadSize + nLength; + } + } +#endif //CONFIG_ENABLE_DMA_IIC + g_I2cClient->addr = nAddrBefore; + } + else + { + PRINTF_ERR("i2c client is NULL\n"); + } +#endif + + return nReadSize; +} + +void mstpMemSet(void *pDst, s8 nVal, u32 nSize) +{ + memset(pDst, nVal, nSize); +} + +void mstpMemCopy(void *pDst, void *pSource, u32 nSize) +{ + memcpy(pDst, pSource, nSize); +} + +void mstpDelay(u32 nTime) +{ + mdelay(nTime); +} + +//------------------------------------------------------------------------------// diff --git a/drivers/input/touchscreen/msg2233/mstar_drv_utility_adaption.h b/drivers/input/touchscreen/msg2233/mstar_drv_utility_adaption.h new file mode 100644 index 00000000..c473ceb1 --- /dev/null +++ b/drivers/input/touchscreen/msg2233/mstar_drv_utility_adaption.h @@ -0,0 +1,109 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2006-2014 MStar Semiconductor, Inc. +// All rights reserved. +// +// Unless otherwise stipulated in writing, any and all information contained +// herein regardless in any format shall remain the sole proprietary of +// MStar Semiconductor Inc. and be kept in strict confidence +// (??MStar Confidential Information??) by the recipient. +// Any unauthorized act including without limitation unauthorized disclosure, +// copying, use, reproduction, sale, distribution, modification, disassembling, +// reverse engineering and compiling of the contents of MStar Confidential +// Information is unlawful and strictly prohibited. MStar hereby reserves the +// rights to any and all damages, losses, costs and expenses resulting therefrom. +// +//////////////////////////////////////////////////////////////////////////////// + +/** + * + * @file mstar_drv_utility_adaption.h + * + * @brief This file defines the interface of touch screen + * + * + */ + +#ifndef __MSTAR_DRV_UTILITY_ADAPTION_H__ +#define __MSTAR_DRV_UTILITY_ADAPTION_H__ (1) + + +//////////////////////////////////////////////////////////// +/// Included Files +//////////////////////////////////////////////////////////// + +#include "mstar_drv_common.h" + +//////////////////////////////////////////////////////////// +/// Constant +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Data Types +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Variables +//////////////////////////////////////////////////////////// + + +//////////////////////////////////////////////////////////// +/// Macro +//////////////////////////////////////////////////////////// +#define BK_REG8_WL(addr,val) ( RegSetLByteValue( addr, val ) ) +#define BK_REG8_WH(addr,val) ( RegSetHByteValue( addr, val ) ) +#define BK_REG16_W(addr,val) ( RegSet16BitValue( addr, val ) ) +#define BK_REG8_RL(addr) ( RegGetLByteValue( addr ) ) +#define BK_REG8_RH(addr) ( RegGetHByteValue( addr ) ) +#define BK_REG16_R(addr) ( RegGet16BitValue( addr ) ) + +#define PRINTF_EMERG(fmt, ...) printk(KERN_EMERG pr_fmt(fmt), ##__VA_ARGS__) +#define PRINTF_ALERT(fmt, ...) printk(KERN_ALERT pr_fmt(fmt), ##__VA_ARGS__) +#define PRINTF_CRIT(fmt, ...) printk(KERN_CRIT pr_fmt(fmt), ##__VA_ARGS__) +#define PRINTF_ERR(fmt, ...) printk(KERN_ERR pr_fmt(fmt), ##__VA_ARGS__) +#define PRINTF_WARN(fmt, ...) printk(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) +#define PRINTF_NOTICE(fmt, ...) printk(KERN_NOTICE pr_fmt(fmt), ##__VA_ARGS__) +#define PRINTF_INFO(fmt, ...) printk(KERN_INFO pr_fmt(fmt), ##__VA_ARGS__) +#define PRINTF_DEBUG(fmt, ...) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) + +//////////////////////////////////////////////////////////// +/// Function Prototypes +//////////////////////////////////////////////////////////// + +#ifdef CONFIG_ENABLE_DMA_IIC +extern void DmaAlloc(void); +extern void DmaReset(void); +extern void DmaFree(void); +#endif //CONFIG_ENABLE_DMA_IIC +extern u16 RegGet16BitValue(u16 nAddr); +extern u8 RegGetLByteValue(u16 nAddr); +extern u8 RegGetHByteValue(u16 nAddr); +extern void RegGetXBitValue(u16 nAddr, u8 * pRxData, u16 nLength, u16 nMaxI2cLengthLimit); +extern void RegSet16BitValue(u16 nAddr, u16 nData); +extern void RegSetLByteValue(u16 nAddr, u8 nData); +extern void RegSetHByteValue(u16 nAddr, u8 nData); +extern void RegSet16BitValueOn(u16 nAddr, u16 nData); +extern void RegSet16BitValueOff(u16 nAddr, u16 nData); +extern u16 RegGet16BitValueByAddressMode(u16 nAddr, AddressMode_e eAddressMode); +extern void RegSet16BitValueByAddressMode(u16 nAddr, u16 nData, AddressMode_e eAddressMode); +extern void RegMask16BitValue(u16 nAddr, u16 nMask, u16 nData, AddressMode_e eAddressMode); +extern s32 DbBusEnterSerialDebugMode(void); +extern void DbBusExitSerialDebugMode(void); +extern void DbBusIICUseBus(void); +extern void DbBusIICNotUseBus(void); +extern void DbBusIICReshape(void); +extern void DbBusStopMCU(void); +extern void DbBusNotStopMCU(void); +extern void DbBusResetSlave(void); +extern void DbBusWaitMCU(void); +extern s32 IicWriteData(u8 nSlaveId, u8* pBuf, u16 nSize); +extern s32 IicReadData(u8 nSlaveId, u8* pBuf, u16 nSize); +extern s32 IicSegmentReadDataByDbBus(u8 nRegBank, u8 nRegAddr, u8* pBuf, u16 nSize, u16 nMaxI2cLengthLimit); +extern s32 IicSegmentReadDataBySmBus(u16 nAddr, u8* pBuf, u16 nSize, u16 nMaxI2cLengthLimit); +extern void mstpMemSet(void *pDst, s8 nVal, u32 nSize); +extern void mstpMemCopy(void *pDst, void *pSource, u32 nSize); +extern void mstpDelay(u32 nTime); + +#endif // __MSTAR_DRV_UTILITY_ADAPTION_H__ |
